#p-body{visibility:hidden}

#p-body.page-ready{visibility:visible}

/* 加载动画 */
.loading-pulse{



  animation: pulse 1.5s ease-in-out infinite;



}

@keyframes pulse {



  0%, 100% { opacity: 0.5; }



  50% { opacity: 1; }



}

/* 底部Tab栏增强 */
.tab-bar{



  position: fixed;



  bottom: 0;



  left: 0;



  right: 0;



  background: #fff;



  display: flex;



  box-shadow: 0 -2px 10px rgba(0,0,0,0.1);



  z-index: 100;



}

.tab-bar .tab{



  flex: 1;



  padding: 6px 0;



  text-align: center;



  color: #666;



  font-size: 11px;



  cursor: pointer;



  transition: all 0.2s;



  border-top: 2px solid transparent;



  border: none;



  background: none;



  box-sizing: border-box;



  min-width: 0;



  width: auto;



}

.tab-bar .tab:hover{



  color: var(--primary);



}

.tab-bar .tab.on{



  color: var(--primary);



  border-top-color: var(--primary);



  font-weight: 600;



}

.tab-bar .tab span{



  display: block;



  font-size: 18px;



  margin-bottom: 1px;



}

/* ============================================



   旅行社客户管理系统 - 响应式UI设计



   电脑端:左侧导航 + 宽敞内容区



   手机端:底部Tab + 手势支持



   ============================================ */
/* CSS变量 - 统一配色 */
:root{



  --primary: #1e3a5f;        /* 深蓝主色 */



  --primary-light: #2d5a8b;



  --accent: #ff6b4a;         /* 珊瑚橙强调 */



  --accent-light: #ff8a70;



  --bg: #f8fafc;             /* 淡灰背景 */



  --card: #ffffff;



  --text: #1a1a2e;



  --text-muted: #6b7280;



  --border: #e5e7eb;



  --success: #10b981;



  --warning: #f59e0b;



  --danger: #ef4444;



  --shadow: 0 2px 8px rgba(0,0,0,0.08);



  --shadow-lg: 0 8px 24px rgba(0,0,0,0.12);



  --radius: 12px;



  --radius-sm: 8px;







  /* 响应式断点 */



  --mobile: 768px;



}

/* 基础重置 */
*{ margin: 0; padding: 0; box-sizing: border-box; }

html{ font-size: 16px; }

body{



  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;



  background: var(--bg);



  color: var(--text);



  line-height: 1.6;



  min-height: 100vh;



  overflow-x: hidden;



}

.id-doc-icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  box-sizing: border-box;
  border: 1.5px solid #64748b;
  border-radius: 3px;
  font-size: 8px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  color: #64748b;
  vertical-align: -2px;
  margin-right: 2px;
  font-family: ui-sans-serif, system-ui, sans-serif;
}

/* 结伴团友 - 客人关系下拉框 */
.comp-rel-select{

  display: block;

  width: 100%;

  max-width: 110px;

  margin-top: 4px;

  padding: 4px 8px;

  font-size: 12px;

  color: #334155;

  border: 1px solid #e2e8f0;

  border-radius: 6px;

  background: #fff;

  cursor: pointer;

  line-height: 1.3;

}

.comp-rel-select--card{

  margin: 6px auto 0;

}

@media (min-width: 769px) {body{



    display: flex;



  }

/* === ClMac 风格桌面侧栏（仅 ≥769px，手机端不动） === */:root{
    --desk-sidebar-w: 208px;
    --desk-shell-bg: #f5f7fb;
    --desk-sidebar-purple: #3d2f8f;
    --nav-item-gap: 6px;
    --nav-highlight-shift: 8px;
    --tab-r: 27px;
    --sidebar-r: 26px;
  }

.sidebar{
    position: fixed;
    left: 0;
    top: 0;
    bottom: 0;
    height: 100vh;
    width: var(--desk-sidebar-w);
    background: linear-gradient(180deg, #4f3db8 0%, #3d2f8f 45%, #2a2068 100%);
    color: #fff;
    display: flex;
    flex-direction: column;
    z-index: 100;
    box-shadow: none;
    border-radius: 0 var(--sidebar-r) var(--sidebar-r) 0;
    padding: 14px 0 12px;
    overflow: visible;
  }

.sidebar-header{
    flex-shrink: 0;
    padding: 8px 12px;
    border-bottom: 1px solid rgba(255,255,255,0.1);
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
  }

.sidebar-refresh-btn{
    display: none;
    width: 32px;
    height: 32px;
    border: none;
    border-radius: 8px;
    background: rgba(255,255,255,0.14);
    color: #fff;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    padding: 0;
  }

.sidebar-refresh-btn:hover{ background: rgba(255,255,255,0.24); }

html.desktop-shell .sidebar-header{ justify-content: space-between; }

html.desktop-shell .sidebar-refresh-btn{ display: inline-flex; }

.sidebar-logo{
    font-size: 36px;
    font-weight: 700;
    color: #fff;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 6px;
    line-height: 1;
    text-align: center;
  }

.sidebar-logo > div{
    display: block;
    font-size: 17px;
    font-weight: 600;
    color: #fff;
    line-height: 32px;
  }

.sidebar-logo span{
    font-size: 52px;
    line-height: 1;
    flex-shrink: 0;
  }

.sidebar-logo-img{
    width: auto;
    height: 32px;
    flex-shrink: 0;
    object-fit: contain;
    display: block;
    border-radius: 0;
  }

.login-brand-logo{
    display: block;
    width: 72px;
    height: 72px;
    margin: 0 auto 12px;
    border-radius: 16px;
    object-fit: cover;
  }

.sidebar-nav{
    position: relative;
    flex: 1;
    min-height: 0;
    padding: 0;
    overflow: visible;
    display: flex;
    flex-direction: column;
  }

.sidebar-nav-inner{
    position: relative;
    flex: 1;
    min-height: 0;
    padding: var(--tab-r) 0;
    overflow-y: auto;
    overflow-x: visible;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--nav-item-gap);
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

.sidebar-nav-inner::-webkit-scrollbar{
    display: none;
    width: 0;
  }

.nav-item{
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1fr auto auto 1fr;
    grid-template-rows: 1fr;
    column-gap: 8px;
    align-items: center;
    padding: 0 12px;
    min-height: calc(2 * var(--tab-r));
    margin: 0;
    width: 100%;
    box-sizing: border-box;
    border-radius: 0;
    color: rgba(255,255,255,0.72);
    cursor: pointer;
    transition: color 0.2s;
    font-size: 14px;
    background: transparent;
    box-shadow: none;
    white-space: nowrap;
    text-align: center;
  }

.nav-item > span:not(.icon){
    grid-column: 3;
    grid-row: 1;
    display: block;
    position: relative;
    z-index: 2;
    transform: none;
    background: transparent;
    box-shadow: none;
    padding: 0;
    font-size: 14px;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.2s, font-weight 0.2s;
  }

.nav-item:hover{
    color: #fff;
    background: transparent;
  }

.nav-item .icon{
    grid-column: 2;
    grid-row: 1;
    font-size: 18px;
    width: 32px;
    height: 32px;
    min-width: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    border-radius: 10px;
    transition: background 0.2s;
    position: relative;
    z-index: 2;
    flex-shrink: 0;
  }

.nav-item:hover:not(.on) .icon{
    background: rgba(255,255,255,0.12);
  }

.nav-item.nav-logout{
    margin-top: 8px;
  }

.nav-item.on{
    color: #241858;
    font-weight: 600;
    z-index: 10;
    overflow: visible;
    isolation: isolate;
  }

.nav-item.on > span:not(.icon){
    color: #241858;
    font-weight: 600;
  }

/* ClMac：左半圆 + 右直边；上下内凹弧（透明伪元素 + box-shadow 填色） */.nav-shape{
    display: none;
  }

.nav-item.on .nav-shape{
    display: block;
    grid-column: 2 / -1;
    grid-row: 1;
    align-self: stretch;
    height: 100%;
    min-height: calc(2 * var(--tab-r));
    margin-left: calc(-1 * var(--nav-highlight-shift));
    margin-right: -12px;
    background: var(--desk-shell-bg);
    border-radius: var(--tab-r) 0 0 var(--tab-r);
    position: relative;
    z-index: 0;
    pointer-events: none;
    overflow: visible;
  }

.nav-item.on .nav-shape::before,.nav-item.on .nav-shape::after{
    content: '';
    position: absolute;
    right: 0;
    width: var(--tab-r);
    height: var(--tab-r);
    background: transparent;
    pointer-events: none;
  }

.nav-item.on .nav-shape::before{
    top: calc(-1 * var(--tab-r));
    border-bottom-right-radius: var(--tab-r);
    box-shadow: var(--tab-r) var(--tab-r) 0 var(--tab-r) var(--desk-shell-bg);
  }

.nav-item.on .nav-shape::after{
    bottom: calc(-1 * var(--tab-r));
    border-top-right-radius: var(--tab-r);
    box-shadow: var(--tab-r) calc(-1 * var(--tab-r)) 0 var(--tab-r) var(--desk-shell-bg);
  }

.nav-item.on .icon{
    background: transparent;
  }

.sidebar-footer{
    flex-shrink: 0;
    padding: 8px 12px;
    border-top: 1px solid rgba(255,255,255,0.1);
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    min-height: 0;
  }

.sidebar-account-trigger{
    cursor: pointer;
    border-radius: 8px;
    padding: 0 8px;
    transition: background 0.2s;
    outline: none;
  }

.sidebar-account-trigger:hover,.sidebar-account-trigger:focus-visible{
    background: rgba(255,255,255,0.1);
  }

.sidebar-account-panel{
    display: none;
    position: absolute;
    bottom: calc(100% + 10px);
    left: 8px;
    right: 8px;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 16px 40px rgba(15, 23, 42, 0.28), 0 0 0 1px rgba(15, 23, 42, 0.06);
    z-index: 120;
    overflow: hidden;
    color: #1f2937;
    text-align: left;
  }

.sidebar-account-panel.open{
    display: block;
  }

.sidebar-account-panel-hero{
    position: relative;
    padding: 16px 14px 14px;
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: #fff;
    display: flex;
    gap: 12px;
    align-items: flex-start;
  }

.sidebar-account-panel-avatar{
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.22);
    border: 2px solid rgba(255, 255, 255, 0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: 700;
    flex-shrink: 0;
  }

.sidebar-account-panel-hero-text{
    flex: 1;
    min-width: 0;
  }

.sidebar-account-panel-hd .panel-name,.sidebar-account-panel-hero-text .panel-name{
    font-size: 16px;
    font-weight: 700;
    color: #fff;
    line-height: 1.3;
  }

.sidebar-account-panel-hd .panel-shop,.sidebar-account-panel-hero-text .panel-shop{
    margin-top: 3px;
    font-size: 12px;
    color: rgba(255, 255, 255, 0.88);
    line-height: 1.35;
    word-break: break-all;
  }

.sidebar-account-panel-hero-text .panel-id{
    margin-top: 4px;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.72);
    letter-spacing: 0.02em;
  }

.sidebar-package-chip{
    position: absolute;
    top: 12px;
    right: 12px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    background: rgba(255, 255, 255, 0.22);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.35);
    white-space: nowrap;
  }

.sidebar-package-chip.pkg-top,.sidebar-package-chip.pkg-premium{
    background: linear-gradient(135deg, #fbbf24, #f59e0b);
    color: #78350f;
    border-color: rgba(255, 255, 255, 0.5);
    box-shadow: 0 2px 8px rgba(245, 158, 11, 0.35);
  }

.sidebar-package-chip.pkg-pro{
    background: linear-gradient(135deg, #c4b5fd, #8b5cf6);
    color: #fff;
    border-color: rgba(255, 255, 255, 0.4);
  }

.sidebar-license-card{
    background: #f8fafc;
    border: 1px solid #e8ecf2;
    border-radius: 12px;
    padding: 10px 12px;
    display: grid;
    gap: 8px;
  }

.sidebar-account-panel-hd{
    padding: 14px 14px 10px;
    border-bottom: 1px solid #eef0f4;
  }

.sidebar-account-panel-hd .panel-name{
    font-size: 15px;
    font-weight: 600;
    color: #111827;
    line-height: 1.3;
  }

.sidebar-account-panel-hd .panel-shop{
    margin-top: 4px;
    font-size: 12px;
    color: #6b7280;
  }

.sidebar-account-panel-body{
    padding: 12px 14px 14px;
    display: grid;
    gap: 10px;
  }

.sidebar-account-row{
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    line-height: 1.4;
  }

.sidebar-account-row .label{
    color: #6b7280;
    flex-shrink: 0;
  }

.sidebar-account-row .value{
    color: #111827;
    text-align: right;
    word-break: break-all;
  }

.sidebar-account-badge{
    display: inline-block;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 500;
  }

.sidebar-account-badge.ok{
    background: #ecfdf3;
    color: #047857;
  }

.sidebar-account-badge.warn{
    background: #fff7ed;
    color: #c2410c;
  }

.sidebar-account-badge.danger{
    background: #fef2f2;
    color: #b91c1c;
  }

.sidebar-account-panel-actions{
    border-top: 1px solid #eef0f4;
    padding: 8px;
    display: grid;
    gap: 4px;
    background: #fafbfc;
  }

.sidebar-account-action{
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 10px 12px;
    border: none;
    border-radius: 10px;
    background: transparent;
    text-align: left;
    font-size: 13px;
    color: #374151;
    cursor: pointer;
    transition: background 0.15s;
  }

.sidebar-account-action:hover{
    background: #f9fafb;
  }

.sidebar-account-action.danger{
    color: #dc2626;
  }

.sidebar-account-action.is-active{
    background: #eef2ff;
    color: #4338ca;
    font-weight: 600;
  }

.user-info{
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 10px;
    color: rgba(255,255,255,0.8);
    font-size: 13px;
    text-align: left;
    width: auto;
    margin: 0;
  }

.sidebar-footer .user-info > div:last-child{
    display: block;
    min-width: 0;
    width: auto;
  }

.sidebar-footer .user-info > div:last-child > div:first-child{
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: left;
    line-height: 32px;
    font-size: 13px;
  }

.sidebar-footer #sidebar-user-status{
    display: none;
  }

.sidebar-footer .user-info{
    gap: 8px;
    min-height: 32px;
  }

.user-avatar{
    width: 32px;
    height: 32px;
    min-width: 32px;
    border-radius: 50%;
    background: var(--accent);
    box-shadow: none;
    font-size: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
  }

/* 主内容区 */.main-content{
    margin-left: calc(var(--desk-sidebar-w) - 1px);
    flex: 1;
    min-height: 100vh;
    padding: 22px 28px 32px 16px;
    background: var(--desk-shell-bg);
    box-sizing: border-box;
  }

.main-content .cd{
    border-radius: 16px;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
    border: 1px solid rgba(255,255,255,0.8);
  }

/* 隐藏手机端顶部header和底部tab */.hd,.tab-bar{



    display: none !important;



  }

/* 电脑端隐藏移动端抽屉相关 */.hamburger-btn,.mobile-drawer,.drawer-backdrop{



    display: none !important;



  }

/* 电脑端页面标题 */.page-header{



    margin-bottom: 24px;



  }

.page-title{



    font-size: 28px;



    font-weight: 700;



    color: var(--text);



  }

.page-subtitle{



    color: var(--text-muted);



    font-size: 14px;



    margin-top: 4px;



  }

/* ===== 客户画像专业样式 ===== *//* ===== 客户画像页面(p5)样式 ===== *//* 页面标题区 *//* 通用按钮 *//* 统计卡片行 *//* 分析面板(2x2) *//* 横向进度条(RFM/年龄/频次) *//* 饼图(消费分布) *//* RFM柱状图(竖向+顶部数字标签+级别颜色圆点) *//* 年龄气泡列表 *//* 消费能力环形进度条 *//* 出行频次迷你折线图 *//* 筛选区域 *//* 客户列表区域 *//* 视图切换 *//* 卡片网格 *//* 客户卡片 *//* RFM徽章 *//* 卡片指标 *//* 卡片标签 *//* 数据表格 *//* 分页 */.btn-b{background:#3b82f6;color:#fff;padding:8px 0;border:none;border-radius:6px;cursor:pointer;font-size:14px;flex:1;text-align:center;min-width:0;display:inline-block}

.btn-b:hover{background:#2563eb}

.btn-row-full{display:flex;gap:8px;margin-top:8px;width:100%}

.btn-row-full .btn-g{flex:1;min-width:0}

.btn-row-full .btn-r{flex:1;min-width:0}

.btn-row-full .btn-label-2l{flex:1;min-width:0;padding:8px 4px;line-height:1.2}

.btn-txt-2l{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;line-height:1.15;font-size:12px;white-space:nowrap}

/* 客户详情弹窗 *//* 客户详情弹窗 - 暖金旅行风 v3 (移动端优化) *//* 头部 - 深蓝渐变 + 金色光晕 *//* 头像 - 金色边框圆环 *//* RFM徽章 - 毛玻璃效果 *//* RFM 悬停提示 */.rfm-hover-wrap:hover .rfm-tooltip{ opacity: 1; pointer-events: auto; }

/* 标签页 *//* 核心指标 - 2列网格 *//* 基础信息 - 2列网格 + 圆角卡片 */.id-doc-icon{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  box-sizing: border-box;
  border: 1.5px solid #64748b;
  border-radius: 3px;
  font-size: 8px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0;
  color: #64748b;
  vertical-align: -2px;
  margin-right: 2px;
  font-family: ui-sans-serif, system-ui, sans-serif;
}

/* 偏好标签 *//* 出行记录 - 时间线风格 *//* Y轴 *//* 筛选栏 *//* 客户列表 *//* 分页 *//* 响应式 */@media (max-width: 1024px){



  .pf-dash { grid-template-columns: repeat(2, 1fr); }



  .pf-charts { grid-template-columns: 1fr; }



}

@media (max-width: 768px){

  /* 会销详情：移动端表格（主列固定宽度，线路在展开行） */

  #ov_ev_d #ev_d_body {
    overflow-x: hidden !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }

  #ov_ev_d .ev-table-wrap-m {
    width: 100%;
    overflow-x: hidden;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile {
    width: 100% !important;
    max-width: 100% !important;
    table-layout: fixed !important;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-idx { width: 9%; }
  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-name { width: 30%; }
  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-deposit { width: 14%; }
  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-gift { width: 34%; }
  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-op { width: 13%; }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-op {
    text-align: center;
    vertical-align: middle;
    padding: 4px 2px !important;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-del-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    min-width: 32px;
    margin: 0 auto;
    border-radius: 8px;
    background: #fef2f2;
    color: #e74c3c;
    font-size: 18px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    box-sizing: border-box;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-del-btn:active {
    background: #fee2e2;
    transform: scale(0.98);
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-name-wrap {
    gap: 6px;
    max-width: 100%;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-exp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    min-width: 32px;
    margin: -4px 0;
    border-radius: 8px;
    background: #eef2ff;
    color: #667eea;
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    box-sizing: border-box;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-reg-row.ev-expanded .ev-exp-btn {
    background: #ddd6fe;
    color: #4c1d95;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-deposit-inp {
    padding: 3px 4px !important;
    font-size: 12px !important;
    text-align: center;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-name-inp {
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
    field-sizing: fixed;
  }

  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-deposit-inp,
  #ov_ev_d #ev_reg_tb.ev-reg-mobile .ev-col-gift input {
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
  }

  #ov_ev_d .ev-extra-line.ev-extra-routes {
    align-items: flex-start;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #eef2f7;
    margin-bottom: 0;
  }

  #ov_ev_d .ev-extra-line.ev-extra-routes .ev-extra-label {
    width: 3em;
    flex-shrink: 0;
    padding-top: 9px;
    font-size: 13px;
    color: #555;
    font-weight: 500;
  }

  #ov_ev_d .ev-reg-routes-grid {
    flex: 1;
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(6.8rem, 1fr));
    gap: 10px;
    align-items: stretch;
  }

  #ov_ev_d .ev-route-pill {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    min-width: 0;
    padding: 9px 12px;
    border-radius: 10px;
    border: 1px solid #e2e8f0;
    background: #fff;
    color: #475569;
    font-size: 13px;
    line-height: 1.25;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: background 0.15s, border-color 0.15s, box-shadow 0.15s, color 0.15s;
    box-sizing: border-box;
  }

  #ov_ev_d .ev-route-pill:active {
    transform: scale(0.98);
  }

  #ov_ev_d .ev-route-pill.is-on {
    background: linear-gradient(135deg, #667eea 0%, #5a67d8 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 2px 10px rgba(102, 126, 234, 0.28);
  }

  #ov_ev_d .ev-route-pill-name {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 500;
    text-align: left;
  }

  #ov_ev_d .ev-route-pill.is-on .ev-route-pill-name {
    font-weight: 600;
  }

  #ov_ev_d .ev-route-pill-badge {
    flex-shrink: 0;
    min-width: 22px;
    height: 22px;
    padding: 0 6px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #64748b;
    font-size: 11px;
    font-weight: 700;
    line-height: 22px;
    text-align: center;
    box-sizing: border-box;
  }

  #ov_ev_d .ev-route-pill.is-on .ev-route-pill-badge {
    background: rgba(255, 255, 255, 0.22);
    color: #fff;
  }

  #ev_d_body::-webkit-scrollbar { height: 6px; }



  /* 移动端隐藏会销详情固定顶栏 */

  #ev_d_hd { display: none !important; }





  .pf-dash { grid-template-columns: 1fr; }



  .pf-list { grid-template-columns: 1fr; }



  .pf-detail-grid { grid-template-columns: 1fr; }



}

/* 电脑端卡片布局 */.cd{



    background: var(--card);



    border-radius: var(--radius);



    padding: 14px 16px;



    margin-bottom: 14px;



    box-shadow: var(--shadow);



    overflow: visible;



  }

.cd h3{



    font-size: 18px;



    font-weight: 600;



    color: var(--text);



    margin-bottom: 16px;



    display: flex;



    align-items: center;



    gap: 8px;



  }

/* 业绩统计 - 两行三列 */.stats-grid{



    display: grid;



    grid-template-columns: repeat(3, 1fr);



    gap: 16px;



    margin-bottom: 16px;



  }

.stats-grid:last-child{



    margin-bottom: 0;



  }

.stat-item{



    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);



    border-radius: var(--radius-sm);



    padding: 16px;



    text-align: center;



    border: 1px solid var(--border);



  }

.cd h3.ys-title-h3{margin:0!important;padding:0;font-size:18px!important;font-weight:600;color:var(--text);line-height:1.3;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:color .15s;border:none;background:transparent;}

.cd h3.ys-title-h3:active{color:#667eea;}

.ys-trend-hint{font-size:11px;color:#667eea;font-weight:500;margin-left:4px;}

#yearly-trends-overlay{display:none;position:fixed;inset:0;z-index:99998;background:linear-gradient(160deg,#f8fafc 0%,#eef2ff 48%,#f1f5f9 100%);padding:0;}

@media (min-width:769px){
    html:not(.force-mobile) #yearly-trends-overlay{left:var(--desk-sidebar-w,208px);right:0;}
    html:not(.force-mobile) #yearly-trends-overlay.ov-yt .bd.yt-sheet{
      position:absolute!important;top:0!important;left:0!important;right:0!important;bottom:0!important;
      width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;
      transform:none!important;border-radius:16px 16px 0 0;overflow:hidden;display:flex;flex-direction:column;
      box-shadow:none;padding:0!important;margin:0!important;background:#f1f5f9;
    }
    html:not(.force-mobile) #yearly-trends-overlay .chart-modal-body#yearly-trends-body{
      overflow:hidden;display:flex;flex-direction:column;padding:10px 12px 12px;
    }
    html:not(.force-mobile) .yt-grid{
      flex:1;min-height:0!important;height:100%;
      grid-template-rows:repeat(2,minmax(0,1fr));
    }
    html:not(.force-mobile) .yt-panel{min-height:0}
    html:not(.force-mobile) .yt-panel-chart{min-height:0}
    html:not(.force-mobile) .yt-svg{min-height:0}
    html:not(.force-mobile) body.yt-modal-open{overflow:hidden}
  }

@media (max-width:768px),html.force-mobile{#yearly-trends-overlay{z-index:100002;}}

#yearly-trends-overlay .bd.yt-sheet{display:flex;flex-direction:column;overflow:hidden;background:#fff;}

#yearly-trends-overlay .chart-modal-hd{border-radius:0;padding:12px 18px;flex-shrink:0;gap:12px;background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 55%,#6366f1 100%);box-shadow:0 4px 24px rgba(79,70,229,.25);}

@media (min-width:769px){
    html:not(.force-mobile) #yearly-trends-overlay .chart-modal-hd{border-radius:16px 16px 0 0;}
  }

#yearly-trends-overlay .chart-modal-hd .yt-toolbar-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0;flex-wrap:wrap;}

#yearly-trends-overlay .chart-modal-body#yearly-trends-body{flex:1;min-height:0;overflow:auto;padding:12px 14px 16px;display:block;background:#f1f5f9;}

.yt-period-bar{font-size:12px;color:#64748b;padding:0 18px 10px;flex-shrink:0;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}

.yt-period-bar .yt-legend-hint{font-size:11px;color:#94a3b8;}

.yt-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}

.yt-scope-select,.yt-overlay-btn{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff;border-radius:10px;padding:7px 30px 7px 12px;font-size:13px;min-width:108px;cursor:pointer;}

.yt-overlay-btn{display:none;align-items:center;gap:4px;padding:7px 14px;min-width:0;}

.yt-overlay-btn.on{background:rgba(251,191,36,.35);border-color:rgba(251,191,36,.65);font-weight:600;}

.yt-scope-select option{color:#1e293b;background:#fff;}

.yt-type-toggle{display:inline-flex;border:1px solid rgba(255,255,255,.35);border-radius:999px;overflow:hidden;background:rgba(15,23,42,.12);}

.yt-type-btn{border:none;background:transparent;color:rgba(255,255,255,.88);padding:7px 16px;font-size:12px;cursor:pointer;transition:background .15s;}

.yt-type-btn.on{background:rgba(255,255,255,.24);color:#fff;font-weight:600;}

.yt-loading,.yt-empty{padding:48px 24px;text-align:center;color:#64748b;font-size:14px;}

.yt-grid{display:grid;gap:12px;height:100%;min-height:500px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(240px,1fr));}

@media (min-width:769px) and (max-width:1100px) and (orientation:portrait){
    html:not(.force-mobile) .yt-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(220px,1fr));}
  }

@media (min-width:769px) and (max-width:1100px) and (orientation:landscape){
    html:not(.force-mobile) .yt-grid{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(2,minmax(220px,1fr));}
  }

.yt-panel{background:#fff;border:1px solid rgba(148,163,184,.35);border-radius:16px;display:flex;flex-direction:column;min-height:0;overflow:hidden;box-shadow:0 8px 28px rgba(15,23,42,.06);transition:box-shadow .2s,transform .2s;}

.yt-panel:hover{box-shadow:0 12px 32px rgba(79,70,229,.12);transform:translateY(-1px);}

.yt-panel-hd{padding:12px 14px 8px;border-bottom:1px solid #f1f5f9;background:linear-gradient(180deg,#fafbff 0%,#fff 100%);}

.yt-panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;}

.yt-panel-title{font-size:14px;font-weight:700;color:#1e293b;display:flex;align-items:center;gap:8px;}

.yt-panel-dot{width:10px;height:10px;border-radius:50%;background:var(--yt-color,#6366f1);box-shadow:0 0 0 3px rgba(99,102,241,.15);}

.yt-panel-val{font-size:18px;color:#0f172a;font-weight:800;letter-spacing:-.02em;}

.yt-panel-stats{display:flex;flex-wrap:wrap;gap:6px;}

.yt-stat-chip{flex:1 1 72px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:6px 8px;min-width:72px;}

.yt-stat-chip span{display:block;font-size:10px;color:#94a3b8;margin-bottom:2px;}

.yt-stat-chip .yt-stat-hint{display:block;font-size:9px;color:#cbd5e1;font-weight:400;margin-top:3px;line-height:1.2;}

.yt-stat-chip b{font-size:12px;color:#334155;font-weight:700;}

.yt-stat-chip b.up{color:#059669;}

.yt-stat-chip b.down{color:#dc2626;}

.yt-stat-chip b.flat{color:#64748b;}

.yt-panel-chart{flex:1;min-height:0;padding:2px 8px 10px;position:relative;}

.yt-svg{width:100%;height:100%;min-height:170px;display:block;}

.yt-chart-legend{display:flex;gap:10px;font-size:10px;color:#64748b;margin-top:2px;padding:0 4px;}

.yt-chart-legend i{display:inline-block;width:14px;height:3px;border-radius:999px;vertical-align:middle;margin-right:4px;}

.yt-growth-up{color:#059669;font-size:11px;font-weight:600;}

.yt-growth-down{color:#dc2626;font-size:11px;font-weight:600;}

.yt-tooltip{position:fixed;z-index:100001;pointer-events:none;background:rgba(15,23,42,.92);color:#fff;font-size:12px;padding:8px 12px;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:220px;line-height:1.45;display:none;}

.yt-tooltip .yt-tip-title{font-weight:700;margin-bottom:4px;color:#e2e8f0;}

.yt-tooltip .yt-tip-row{display:flex;justify-content:space-between;gap:12px;}

.yt-tooltip .yt-tip-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;}

@media (max-width:768px),html.force-mobile{
    #yearly-trends-overlay.ov-yt{background:rgba(0,0,0,.5)!important;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
    #yearly-trends-overlay .bd.yt-sheet{
      width:100%!important;max-width:100%!important;
      max-height:min(92dvh,calc(100dvh - env(safe-area-inset-top,8px)))!important;
      border-radius:16px 16px 0 0!important;background:#fff!important;
      padding-bottom:0!important;margin-bottom:0!important;
      display:flex!important;flex-direction:column!important;overflow:hidden!important;
    }
    #yearly-trends-overlay .chart-modal-hd{
      background:#fff!important;color:#1e293b!important;box-shadow:none!important;
      border-bottom:1px solid #e2e8f0;border-radius:16px 16px 0 0;padding:12px 14px 10px;flex-wrap:wrap;
    }
    #yearly-trends-overlay .chart-modal-title{font-size:17px!important;font-weight:700;color:#1e293b;flex:1 1 100%;}
    #yearly-trends-overlay .chart-modal-close{background:#f1f5f9!important;color:#64748b!important;width:32px;height:32px;}
    #yearly-trends-overlay .yt-controls{flex:1 1 100%;justify-content:flex-start;gap:6px;margin-top:4px;}
    #yearly-trends-overlay .yt-scope-select,#yearly-trends-overlay .yt-overlay-btn{
      border:1px solid #e2e8f0!important;background:#fff!important;color:#334155!important;
      font-size:13px;padding:7px 12px;min-width:0;border-radius:8px;
    }
    #yearly-trends-overlay .yt-overlay-btn.on{background:#fffbeb!important;border-color:#fcd34d!important;color:#b45309!important;}
    #yearly-trends-overlay .yt-type-toggle{border:1px solid #e2e8f0!important;background:#f8fafc!important;border-radius:999px;}
    #yearly-trends-overlay .yt-type-btn{color:#64748b!important;padding:7px 14px;font-size:12px;}
    #yearly-trends-overlay .yt-type-btn.on{background:#fff!important;color:#4f46e5!important;font-weight:600;box-shadow:0 1px 3px rgba(15,23,42,.08);}
    #yearly-trends-overlay .yt-period-bar{padding:8px 14px;font-size:12px;background:#fff;border-bottom:1px solid #f1f5f9;}
    #yearly-trends-overlay .chart-modal-body#yearly-trends-body{
      flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
      padding:10px 10px calc(14px + env(safe-area-inset-bottom,0px));background:#f1f5f9;
    }
    .yt-grid{gap:10px;grid-template-columns:1fr;grid-template-rows:none;min-height:0;}
    .yt-panel{border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 4px 12px rgba(15,23,42,.04);min-height:280px;}
    .yt-panel:hover{transform:none;box-shadow:0 4px 12px rgba(15,23,42,.04);}
    .yt-panel-hd{padding:12px 12px 8px;background:#fff;border-bottom:none;}
    .yt-panel-title{font-size:14px;font-weight:700;}
    .yt-panel-val{font-size:16px;font-weight:800;}
    .yt-panel-stats{gap:6px;}
    .yt-stat-chip{flex:1 1 calc(33.33% - 4px);min-width:0;padding:6px 8px;border-radius:8px;background:#f8fafc;border:1px solid #e2e8f0;}
    .yt-stat-chip span{font-size:10px;}
    .yt-stat-chip b{font-size:12px;}
    .yt-stat-chip .yt-stat-hint{display:none;}
    .yt-panel-chart{min-height:190px;height:190px;padding:0 6px 10px;}
    .yt-svg{width:100%;height:100%;min-height:170px;display:block;}
    .yt-chart-legend{font-size:10px;gap:8px;}
  }

.stat-value{



    font-size: 28px;



    font-weight: 700;



    color: var(--primary);



    line-height: 1.2;



  }

.stat-label{



    font-size: 13px;



    color: var(--text-muted);



    margin-top: 4px;



  }

/* 按钮行布局 */.btn-row{



    display: flex;



    gap: 12px;



    flex-wrap: wrap;



  }

.btn{



    padding: 12px 20px;



    border-radius: var(--radius-sm);



    border: none;



    font-size: 14px;



    font-weight: 500;



    cursor: pointer;



    transition: all 0.2s;



    display: inline-flex;



    align-items: center;



    gap: 6px;



  }

.btn-primary{



    background: var(--primary);



    color: #fff;



  }

.btn-primary:hover{



    background: var(--primary-light);



    transform: translateY(-1px);



    box-shadow: 0 4px 12px rgba(30,58,95,0.3);



  }

.btn-accent{



    background: var(--accent);



    color: #fff;



  }

.btn-accent:hover{



    background: var(--accent-light);



    transform: translateY(-1px);



  }

.btn-outline{



    background: transparent;



    border: 1px solid var(--border);



    color: var(--text);



  }

.btn-outline:hover{



    border-color: var(--primary);



    color: var(--primary);



  }

/* 团队列表 - 电脑端 *//* 弹窗 - 电脑端 */.bd{



    width: 92%;



    max-width: 760px;



    max-height: 80vh;



  }

/* 功能按钮网格 */.action-grid{



    display: grid;



    grid-template-columns: repeat(4, 1fr);



    gap: 12px;



  }

.action-btn{



    display: flex;



    flex-direction: column;



    align-items: center;



    gap: 8px;



    padding: 16px;



    background: var(--card);



    border-radius: var(--radius);



    border: 1px solid var(--border);



    cursor: pointer;



    transition: all 0.2s;



  }

.action-btn:hover{



    border-color: var(--accent);



    background: #fff8f6;



  }

.action-btn .icon{



    font-size: 24px;



  }

.action-btn .label{



    font-size: 13px;



    color: var(--text);



  }

/* === 电脑端标签放大 === */.tag{



    padding: 6px 14px;



    border-radius: 14px;



    font-size: 14px;



    cursor: pointer;



    transition: all 0.2s;



    user-select: none;



  }

.tag:hover{



    opacity: 0.85;



  }

.tag.on{



    box-shadow: 0 2px 12px rgba(30,58,95,0.4);



  }

/* === 电脑端筛选栏 === */.ft{



    gap: 8px !important;



    flex-wrap: wrap !important;



  }

/* === 电脑端团队列表项加大 === */.rw{



    display: flex;



    align-items: center;



    padding: 12px 16px;



    font-size: 15px;



    gap: 12px;



    border-radius: var(--radius-sm);



    transition: background 0.15s;



  }

.rw:hover{



    background: rgba(102,126,234,0.06);



  }

.home-twin-row .home-ht-card .rw{ align-items: flex-start; }

.home-hb-card .bday-trips{ font-size: 13px; color: #888; margin-top: 2px; }

.home-twin-row{



    display: flex;



    align-items: stretch;



  }

.home-hb-card,.home-ht-card{



    flex: 1;



    min-width: 0;



    overflow: hidden;



  }

.home-hb-card .rw,.home-ht-card .rw{



    min-height: 46px;



    border-radius: 0;



    padding: 10px 16px;



  }

.home-hb-card .rw:last-child,.home-ht-card .rw:last-child{



    border-bottom: none;



  }

.nm{



    font-size: 16px;



    font-weight: 600;



  }

.dt{



    font-size: 14px;



  }

/* === 电脑端弹窗加大 === */.bd{



    max-width: 800px !important;



    max-height: 88vh;



    border-radius: 12px;



  }

.bd.large{



    max-width: 960px !important;



  }

.tt{



    font-size: 20px;



    padding: 18px 24px;



  }

.cls{



    font-size: 28px;



  }

/* === 电脑端表单加大 === */.er{



    margin-bottom: 16px;



    gap: 12px;



  }

.er label{



    min-width: 90px;



    font-size: 15px;



    color: var(--text);



    font-weight: 500;



  }

.er input,.er textarea,.er select{



    font-size: 15px;



    padding: 10px 14px;



    border-radius: 8px;



  }

/* === 电脑端按钮加大 === */.btn{



    padding: 12px 24px;



    font-size: 15px;



    border-radius: 8px;



    min-height: 44px;



  }

.btn-full{



    padding: 14px;



    font-size: 16px;



  }

/* === 电脑端空状态 === */.em{



    font-size: 16px;



    padding: 48px 24px;



  }

/* === 电脑端弹窗内容区间距 === */.cd-in{



    padding: 20px 24px;



  }

}

/* 温馨祝福弹窗（手机+电脑共用，勿放进 min-width:769px） */
.bday-wish-tabs{ display: flex; gap: 0; border-bottom: 2px solid #e5e7eb; margin: 0 0 12px; }

.bday-wish-tab{ flex: 1; padding: 9px 6px; text-align: center; font-size: 13px; font-weight: 600; color: #6b7280; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; background: none; border-top: none; border-left: none; border-right: none; }

.bday-wish-tab.active{ color: #92400e; border-bottom-color: #f59e0b; }

.bday-wish-panel{ display: none; }

.bday-wish-panel.active{ display: block; }

.bday-wish-hint{ font-size: 12px; color: #6b7280; line-height: 1.45; margin-bottom: 10px; }

.bday-wish-block{ margin-bottom: 10px; padding: 10px 12px; border-radius: 8px; border: 1px solid #e5e7eb; background: #fafafa; }

.bday-wish-block-title{ font-size: 13px; font-weight: 600; color: #374151; margin-bottom: 8px; }

.bday-style-grid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }

.bday-style-chip{ display: flex; align-items: center; justify-content: center; min-height: 34px; padding: 4px 2px; border: 1.5px solid #e5e7eb; border-radius: 8px; font-size: 11px; line-height: 1.2; text-align: center; color: #4b5563; cursor: pointer; background: #fff; transition: border-color .15s, background .15s; }

.bday-style-chip.active{ border-color: #f59e0b; background: #fffbeb; color: #92400e; font-weight: 600; }

.bday-copy-pick-list{ max-height: 260px; overflow-y: auto; padding-right: 2px; }

.bday-copy-pick-group{ font-size: 11px; font-weight: 600; color: #6b7280; margin: 8px 0 4px; }

.bday-copy-pick-item{ border: 1.5px solid #d1fae5; border-radius: 8px; padding: 8px 10px; margin-bottom: 6px; cursor: pointer; background: #fff; transition: border-color .15s, background .15s; }

.bday-copy-pick-item.active{ border-color: #10b981; background: #ecfdf5; }

.bday-copy-pick-label{ font-size: 13px; font-weight: 600; color: #065f46; margin-bottom: 4px; }

.bday-copy-pick-text{ font-size: 12px; color: #374151; line-height: 1.55; }

.bday-wish-tpl-list{ max-height: 300px; overflow-y: auto; padding-right: 2px; }

.bday-wish-tpl-item{ border: 1.5px solid #f3f4f6; border-radius: 8px; padding: 8px 10px; margin-bottom: 6px; cursor: pointer; transition: border-color .15s, background .15s; background: #fff; }

.bday-wish-tpl-item.active{ border-color: #f59e0b; background: #fffbeb; }

.bday-wish-tpl-label{ font-size: 13px; font-weight: 600; color: #92400e; margin-bottom: 4px; }

.bday-wish-tpl-preview{ font-size: 12px; color: #78350f; line-height: 1.55; }

.bday-wish-details{ margin-top: 8px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; }

.bday-wish-details summary{ cursor: pointer; padding: 8px 12px; font-size: 13px; font-weight: 600; color: #374151; list-style: none; }

.bday-wish-details summary::-webkit-details-marker{ display: none; }

.bday-wish-details-body{ padding: 0 12px 10px; }

.bday-wish-preview-box{ margin-top: 8px; padding: 10px; border-radius: 8px; font-size: 12px; line-height: 1.55; white-space: pre-wrap; }

.bday-wish-preview-wx{ background: #fffbeb; border: 1px solid #fde68a; color: #78350f; }

.bday-wish-preview-card{ background: #ecfdf5; border: 1px solid #a7f3d0; color: #134e4a; font-size: 13px; line-height: 1.65; }

.bday-card-style-item{ display: inline-flex; align-items: center; gap: 6px; margin-right: 12px; font-size: 13px; cursor: pointer; }

.bday-meta-age{ color: #6b7280; font-weight: 500; }

#ov_bday_wish .bd{ max-width: 560px; width: 96%; max-height: min(88vh, calc(100dvh - 24px)); padding: 0; overflow: hidden; display: flex; flex-direction: column; border-radius: 14px; }

.bday-wish-shell{ display: flex; flex-direction: column; min-height: 0; flex: 1; max-height: min(88vh, calc(100dvh - 24px)); background: #fff; }

.bday-wish-header{ position: relative; flex-shrink: 0; padding: 16px 48px 14px 16px; background: linear-gradient(135deg, #fff7ed 0%, #fef3c7 55%, #fffbeb 100%); border-bottom: 1px solid #fde68a; }

.bday-wish-header-title{ font-size: 17px; font-weight: 700; color: #92400e; line-height: 1.3; }

.bday-wish-header-sub{ font-size: 12px; color: #b45309; margin-top: 5px; line-height: 1.45; opacity: 0.92; }

.bday-wish-close{ position: absolute; right: 10px; top: 10px; width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: rgba(255,255,255,0.85); border: 1px solid #fcd34d; color: #92400e; font-size: 22px; line-height: 1; cursor: pointer; box-shadow: 0 1px 4px rgba(146,64,14,0.12); }

.bday-wish-scroll{ flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 12px 14px 4px; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }

.bday-wish-footer{ flex-shrink: 0; display: flex; gap: 10px; padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid #e5e7eb; background: #fff; box-shadow: 0 -4px 16px rgba(15,23,42,0.06); }

.bday-wish-footer .btn{ flex: 1; min-height: 44px; font-size: 15px; font-weight: 600; border-radius: 10px; margin: 0; }

.bday-wish-footer .bday-wish-btn-save{ background: linear-gradient(135deg, #f59e0b, #d97706); border: none; color: #fff; box-shadow: 0 2px 8px rgba(217,119,6,0.28); }

.bday-wish-shell .bday-wish-tabs{ position: sticky; top: 0; z-index: 2; background: #fff; margin: -12px -14px 12px; padding: 0 14px; box-shadow: 0 1px 0 #f3f4f6; }

.bday-wish-shell .bday-wish-tab{ padding: 11px 8px; font-size: 14px; }

.bday-wish-shell .bday-wish-block{ border-radius: 12px; box-shadow: 0 1px 3px rgba(15,23,42,0.04); }

.bday-wish-shell .bday-wish-tpl-item,.bday-wish-shell .bday-copy-pick-item{ border-radius: 12px; padding: 12px; margin-bottom: 8px; }

.bday-wish-shell .bday-wish-tpl-item.active,.bday-wish-shell .bday-copy-pick-item.active{ box-shadow: 0 0 0 2px rgba(245,158,11,0.25); }

.bday-wish-shell .bday-wish-preview-box{ border-radius: 12px; padding: 12px; font-size: 13px; line-height: 1.6; }

.bday-wish-shell .bday-wish-details{ border-radius: 12px; margin-top: 10px; }

.bday-wish-shell .bday-wish-details summary{ padding: 12px 14px; font-size: 14px; }

.bday-wish-shell .bday-wish-details-body{ padding: 0 14px 12px; }

.bday-wish-details-body input[type="text"],.bday-wish-details-body textarea,.bday-wish-block textarea,.bday-wish-field input[type="text"],.bday-wish-field textarea{ border-radius: 10px !important; font-size: 14px !important; padding: 10px 12px !important; border: 1px solid #e5e7eb; }

.bday-wish-shell--mobile .bday-wish-header-sub{ font-size: 11px; }

.bday-wish-shell--mobile .bday-wish-tabs--seg{ display: flex; gap: 4px; background: #f3f4f6; border-radius: 12px; padding: 4px; margin: 0 0 14px; box-shadow: none; position: static; }

.bday-wish-shell--mobile .bday-wish-tab--seg{ flex: 1; border: none; border-radius: 10px; padding: 10px 6px; font-size: 13px; font-weight: 600; color: #6b7280; background: transparent; margin: 0; box-shadow: none; }

.bday-wish-shell--mobile .bday-wish-tab--seg.active{ background: #fff; color: #92400e; box-shadow: 0 1px 4px rgba(15,23,42,0.08); border-bottom: none; }

.bday-wish-preview-hero{ margin-bottom: 14px; padding: 16px; border-radius: 16px; font-size: 14px; line-height: 1.65; max-height: 140px; overflow-y: auto; -webkit-overflow-scrolling: touch; position: relative; }

.bday-wish-preview-hero::before{ content: '预览'; position: absolute; top: 8px; right: 10px; font-size: 10px; font-weight: 600; letter-spacing: 0.04em; opacity: 0.55; text-transform: uppercase; }

.bday-wish-preview-hero.bday-wish-preview-card{ background: linear-gradient(145deg, #ecfdf5, #d1fae5); border: 1px solid #6ee7b7; color: #065f46; }

.bday-wish-preview-hero.bday-wish-preview-wx{ background: linear-gradient(145deg, #fffbeb, #fef3c7); border: 1px solid #fcd34d; color: #78350f; }

.bday-wish-section{ background: #fff; border: 1px solid #f3f4f6; border-radius: 14px; padding: 14px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(15,23,42,0.04); }

.bday-wish-section-head{ display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: #374151; margin-bottom: 12px; }

.bday-wish-section-ico{ width: 28px; height: 28px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; }

.bday-wish-section-ico--amber{ background: #fff7ed; }

.bday-wish-section-ico--green{ background: #ecfdf5; }

.bday-wish-section-ico--blue{ background: #eff6ff; }

.bday-wish-tip-cards{ display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }

.bday-wish-tip-card{ display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: 12px; background: #f9fafb; border: 1px solid #e5e7eb; font-size: 12px; line-height: 1.45; color: #4b5563; }

.bday-wish-tip-card-ico{ font-size: 18px; flex-shrink: 0; line-height: 1.2; }

.bday-style-grid--mobile{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }

.bday-style-tile{ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 72px; padding: 8px 4px; border-radius: 12px; border: 2px solid #e5e7eb; background: #fafafa; cursor: pointer; transition: border-color .15s, background .15s, transform .12s; }

.bday-style-tile:active{ transform: scale(0.97); }

.bday-style-tile.active{ border-color: #f59e0b; background: #fffbeb; box-shadow: 0 0 0 1px rgba(245,158,11,0.2); }

.bday-style-tile-emoji{ font-size: 22px; line-height: 1; }

.bday-style-tile-label{ font-size: 10px; font-weight: 600; color: #6b7280; text-align: center; line-height: 1.2; }

.bday-style-tile.active .bday-style-tile-label{ color: #92400e; }

.bday-copy-group{ margin-bottom: 10px; }

.bday-copy-group:last-child{ margin-bottom: 0; }

.bday-copy-group-label{ font-size: 11px; font-weight: 600; color: #9ca3af; margin-bottom: 6px; padding-left: 2px; }

.bday-copy-chip-row{ display: flex; flex-wrap: wrap; gap: 8px; }

.bday-copy-chip{ display: inline-flex; align-items: center; justify-content: center; padding: 8px 14px; border-radius: 999px; border: 1.5px solid #d1fae5; background: #fff; color: #065f46; font-size: 13px; font-weight: 600; cursor: pointer; white-space: nowrap; transition: all .15s; }

.bday-copy-chip.active{ background: #ecfdf5; border-color: #10b981; color: #047857; box-shadow: 0 0 0 2px rgba(16,185,129,0.15); }

.bday-tpl-chip-row{ display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }

.bday-tpl-chip-row::-webkit-scrollbar{ display: none; }

.bday-tpl-chip{ flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 6px; min-width: 88px; max-width: 108px; padding: 12px 10px; border-radius: 14px; border: 2px solid #e5e7eb; background: #fafafa; cursor: pointer; transition: all .15s; }

.bday-tpl-chip:active{ transform: scale(0.97); }

.bday-tpl-chip.active{ border-color: #f59e0b; background: #fffbeb; box-shadow: 0 0 0 2px rgba(245,158,11,0.18); }

.bday-tpl-chip-emoji{ font-size: 26px; line-height: 1; }

.bday-tpl-chip-label{ font-size: 12px; font-weight: 600; color: #374151; text-align: center; line-height: 1.25; }

.bday-tpl-chip.active .bday-tpl-chip-label{ color: #92400e; }

.bday-wish-advanced summary{ display: flex; align-items: center; gap: 8px; }

.bday-wish-field{ margin-bottom: 10px; }

.bday-wish-field label{ display: block; font-size: 12px; font-weight: 600; color: #6b7280; margin-bottom: 5px; }

.bday-wish-field input[type="text"],.bday-wish-field textarea{ width: 100%; box-sizing: border-box; }

.bday-wish-toggle-row{ display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid #f3f4f6; font-size: 13px; color: #374151; }

.bday-wish-toggle-row:last-child{ border-bottom: none; }

.bday-wish-logo-row{ display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }

.bday-wish-logo-row img{ width: 52px; height: 52px; object-fit: contain; border-radius: 10px; border: 1px solid #e5e7eb; background: #fff; }

.bday-wish-logo-actions{ display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }

.bday-wish-logo-actions .btn-s{ border-radius: 8px; padding: 6px 12px; font-size: 12px; }

/* ============================================



   手机端布局 (宽度 <= 768px)



   ============================================ */
/* 今日生日标题行（手机+电脑共用，勿放进 desktop-only 媒体查询） */
.home-hb-head{ display: flex; flex-direction: row; align-items: center; flex-wrap: nowrap; gap: 8px; padding: 14px 16px 8px; }

.home-hb-head-left{ display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1 1 auto; overflow: hidden; }

.home-hb-head .home-hb-ico{ font-size: 16px; flex-shrink: 0; line-height: 1; }

.home-hb-head .home-hb-title{ font-size: 15px; font-weight: 600; color: #1f2937; white-space: nowrap; flex-shrink: 0; }

.home-hb-head .home-hb-count{ font-size: 11px; background: linear-gradient(135deg,#fef3c7,#fde68a); color: #92400e; padding: 2px 10px; border-radius: 9999px; font-weight: 600; box-shadow: 0 1px 3px rgba(146,64,14,0.15); flex-shrink: 0; white-space: nowrap; }

.home-hb-head .bday-settings-btn{ display: inline-flex; align-items: center; flex: 0 0 auto; margin-left: auto; padding: 5px 12px; font-size: 12px; border: 1px solid #fcd34d; border-radius: 999px; background: linear-gradient(135deg,#fffbeb,#fef3c7); color: #92400e; cursor: pointer; white-space: nowrap; width: auto; max-width: none; }

.bday-settings-btn:hover{ filter: brightness(0.98); box-shadow: 0 1px 4px rgba(146,64,14,0.12); }

.bday-rw{ display: flex !important; flex-wrap: nowrap !important; align-items: flex-start !important; gap: 8px; }

.bday-rw .bday-body{ flex: 1; min-width: 0; }

.bday-rw .bday-actions{ flex-shrink: 0; margin-left: 8px; align-self: flex-start; padding-top: 2px; display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; }

.bday-act-btn{ display: inline-flex; align-items: center; justify-content: center; padding: 5px 12px; font-size: 11px; border: 1px solid #fde68a; border-radius: 999px; background: linear-gradient(135deg,#fffbeb,#fef3c7); color: #92400e; cursor: pointer; white-space: nowrap; line-height: 1.2; box-shadow: 0 1px 3px rgba(146,64,14,0.1); }

.bday-act-btn:hover{ filter: brightness(0.98); background: #fffbeb; }

.bday-act-card{ border-color: #c4b5fd; color: #6d28d9; background: linear-gradient(135deg,#f5f3ff,#ede9fe); box-shadow: 0 1px 3px rgba(109,40,217,0.1); }

.bday-act-card:hover{ background: #f5f3ff; }

.bday-portal-tag{ display: inline-flex; align-items: center; justify-content: center; font-size: 10px; padding: 4px 10px; border-radius: 999px; white-space: nowrap; line-height: 1.2; font-weight: 500; }

.bday-portal-sent{ background: #eff6ff; color: #1d4ed8; border: 1px solid #bfdbfe; }

.bday-portal-ok{ background: #ecfdf5; color: #047857; border: 1px solid #a7f3d0; }

@media (max-width: 768px) {/* 隐藏电脑端侧边栏 */body{



    display: block !important;



    margin-left: 0 !important;



  }

*{



    -webkit-tap-highlight-color: transparent;



  }

.sidebar{



    display: none !important;



  }

/* 页面滑动容器 */:root{
    --m-safe-top: min(env(safe-area-inset-top, 0px), 59px);
    --m-safe-bottom: min(env(safe-area-inset-bottom, 0px), 40px);
    --m-hd-bar: 50px;
    --m-tab-bar: 50px;
    --m-hd-h: calc(var(--m-hd-bar) + var(--m-safe-top));
    --m-tab-h: calc(var(--m-tab-bar) + var(--m-safe-bottom));
    --m-font-scale: 1.0625;
  }

html.m-font-small{ --m-font-scale: 0.875; }

html.m-font-medium{ --m-font-scale: 1.0625; }

html.m-font-large{ --m-font-scale: 1.1875; }

#p-body{
    position: fixed;
    top: calc(var(--m-hd-bar) + var(--m-safe-top));
    bottom: calc(var(--m-tab-bar) + var(--m-safe-bottom));
    left: 0;
    right: 0;
    height: auto !important;
    width: 100%;
    overflow: hidden;
    z-index: 1;
  }

#p0{



    position: absolute;



    top: 0; left: 0; right: 0; bottom: 0;



    overflow-y: auto;



    overflow-x: hidden;



    -webkit-overflow-scrolling: touch;



    overscroll-behavior: contain;



    will-change: transform;



    transition: transform 0.28s cubic-bezier(0.25,0.46,0.45,0.94);



    padding-bottom: 12px;



  }

/* 滑动动画 */.slide-to-right{ transform: translateX(100%); }

.slide-to-left{ transform: translateX(-100%); }

.slide-from-right{ animation: slideFromRight 0.28s cubic-bezier(0.25,0.46,0.45,0.94) forwards; }

.slide-from-left{ animation: slideFromLeft  0.28s cubic-bezier(0.25,0.46,0.45,0.94) forwards; }

.slide-reset{ transform: translateX(0); }

@keyframes slideFromRight{



    from { transform: translateX(100%); }



    to   { transform: translateX(0); }



  }

@keyframes slideFromLeft{



    from { transform: translateX(-100%); }



    to   { transform: translateX(0); }



  }

/* 手机端顶部 */.hd{
    background: linear-gradient(135deg, #4a1a6b, #2d1b69, #667eea 120%);
    color: #fff;
    box-sizing: border-box;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    box-shadow: var(--shadow);
    padding-top: var(--m-safe-top);
    height: var(--m-hd-h);
    min-height: var(--m-hd-h);
    max-height: var(--m-hd-h);
    overflow: hidden;
    display: block;
  }

.hd-inner{
    height: var(--m-hd-bar);
    min-height: var(--m-hd-bar);
    max-height: var(--m-hd-bar);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 48px;
    box-sizing: border-box;
    overflow: hidden;
  }

.hd-title{
    flex: 1;
    min-width: 0;
    height: auto;
    line-height: 1.25;
    font-size: 16px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    text-align: center;
  }

.hd-refresh-btn{
    display: none;
    position: absolute;
    left: 8px;
    top: calc(var(--m-safe-top, 0px) + (var(--m-hd-bar, 50px) - 32px) / 2);
    width: 32px;
    height: 32px;
    border: none;
    border-radius: 8px;
    background: rgba(255,255,255,0.18);
    color: #fff;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    z-index: 102;
    align-items: center;
    justify-content: center;
    padding: 0;
  }

.hd-refresh-btn:hover{ background: rgba(255,255,255,0.28); }

html.desktop-shell .hd-refresh-btn{ display: inline-flex; }

html.desktop-shell .hd-inner{ padding-left: 44px; }

.hamburger-btn{



    position: absolute;



    display: inline-flex;



    align-items: center;



    justify-content: center;



    right: 12px;



    top: calc(var(--m-safe-top) + var(--m-hd-bar) / 2);



    transform: translateY(-50%);



    font-size: 22px;



    cursor: pointer;



    padding: 4px 8px;



    line-height: 1;



    z-index: 101;



  }

.drawer-backdrop{



    display: none;



    position: fixed;



    top: 0; left: 0; right: 0; bottom: 0;



    background: rgba(0,0,0,0.4);



    z-index: 199;



  }

.drawer-backdrop.open{



    display: block;



  }

.mobile-drawer{



    position: fixed;



    top: 0;



    right: -180px;



    width: 180px;



    bottom: 0;



    background: linear-gradient(180deg, #1e3a5f 0%, #4c2889 40%, #6366f1 100%);



    color: #fff;



    z-index: 200;



    transition: right 0.3s ease;



    box-shadow: -4px 0 20px rgba(0,0,0,0.3);



  }

.mobile-drawer.open{



    right: 0;



  }

.drawer-header{



    padding: 20px 16px;



    font-size: 18px;



    font-weight: 700;



    border-bottom: 1px solid rgba(255,255,255,0.15);



  }

.drawer-item{



    padding: 12px 16px;



    font-size: 14px;



    cursor: pointer;



    border-bottom: 1px solid rgba(255,255,255,0.08);



    transition: background 0.2s;



  }

.drawer-item:hover,.drawer-item:active{



    background: rgba(255,255,255,0.12);



  }

.drawer-item.on{



    background: linear-gradient(135deg,#3b82f6 0%,#6366f1 100%);



    font-weight: 600;



  }

.drawer-version{

    text-align: center;

    padding: 12px 0 8px;

    font-size: 11px;

    color: #9ca3af;

    border-top: 1px solid #e5e7eb;

    margin-top: 8px;

  }

/* === 移动端页面适配 === *//* === 移动端 p5 客户画像适配 - 全面优化 === *//* 分析面板加卡片样式 *//* 图表紧凑样式 *//* 出行频次 - 柱子缩短加粗,行间距拉大 *//* RFM柱状图移动端 - 柱子放大,文字右靠 *//* 年龄分布 - 气泡圈移动端 *//* 年龄横向柱状图移动端 - 行间距缩小 *//* 消费能力 左饼右文移动端 - 饼图和文字放大 *//* ===== 高级卡片样式 ===== *//* 卡片顶部渐变条装饰 *//* 图表区域光泽效果 *//* 卡片悬浮动效 */@media (max-width: 768px){

    #p5 .pf-panel:hover {

      transform: translateY(-2px);

      box-shadow: 0 8px 24px rgba(60, 100, 180, 0.18), 0 2px 6px rgba(0,0,0,0.08);

      transition: all 0.25s ease;

    }

  }

/* ===== 搜索框2列布局 ===== *//* 客户卡片加背景色 *//* 移动端客户卡片统计区域 - 标签左数值右 *//* === 移动端 p6 会员中心适配 - 全面优化 === *//* === 移动端 p7 系统设置适配 === */.p7-page{padding:12px 8px 24px!important}

.p7-tabs{gap:4px;padding:3px;border-radius:12px}

.p7-tab{min-width:0;padding:9px 8px;font-size:13px}

.p7-grid-2,.p7-backup-grid,.p7-portal-grid,.p7-portal-body{grid-template-columns:1fr!important}

.p7-action-card{flex-direction:column;align-items:flex-start;padding:16px}

.p7-action-card .btn{width:100%;text-align:center}

.p7-card{padding:16px}

.p7-btn-row{flex-direction:column}

.p7-btn-row .btn{width:100%}

.p7-switch-row{align-items:flex-start}

.p7-log-wrap{max-height:240px}

/* === 移动端 p8 足迹地图适配 === *//* 主内容区：顶/底栏 fixed，中间 #p-body 占满剩余区域 */.main-content{
    margin-left: 0;
    padding: 0 !important;
    height: 100dvh;
    overflow: hidden;
    box-sizing: border-box;
  }

/* 卡片 */.cd{



    background: var(--card);



    border-radius: var(--radius);



    padding: 10px 8px;



    margin: 4px 5px;



    box-shadow: var(--shadow);



    overflow: visible;



  }

.cd h3{



    font-size: 16px;



    font-weight: 600;



    color: var(--text);



    margin-bottom: 12px;



  }

/* 业绩统计 - 两行三列 */.stats-grid{



    display: grid;



    grid-template-columns: repeat(3, 1fr);



    gap: 10px;



    margin-bottom: 10px;



  }

.stat-item{



    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);



    border-radius: var(--radius-sm);



    padding: 12px 8px;



    text-align: center;



  }

.stat-value{



    font-size: 20px;



    font-weight: 700;



    color: var(--primary);



  }

.stat-label{



    font-size: 12px;



    color: var(--text-muted);



    margin-top: 2px;



  }

/* 底部Tab导航 */.tab-bar{
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    background: var(--card);
    border-top: 1px solid var(--border);
    z-index: 100;
    height: var(--m-tab-h);
    min-height: var(--m-tab-h);
    max-height: var(--m-tab-h);
    box-sizing: border-box;
    padding: 0;
    padding-bottom: var(--m-safe-bottom);
    box-shadow: 0 -2px 10px rgba(0,0,0,0.05);
  }

.tab{
    flex: 1;
    min-width: 0;
    width: auto;
    border: none;
    background: none;
    padding: 4px 0 2px;
    height: var(--m-tab-bar);
    min-height: 0;
    max-height: var(--m-tab-bar);
    box-sizing: border-box;



    font-size: 11px;



    color: var(--text-muted);



    display: flex;



    flex-direction: column;



    align-items: center;



    cursor: pointer;



    transition: all 0.2s;



  }

.tab.on{



    color: var(--accent);



  }

.tab .ic{



    font-size: 22px;



    margin-bottom: 2px;



  }

/* 按钮 */.btn{



    padding: 14px 18px;



    border-radius: var(--radius-sm);



    border: none;



    font-size: 15px;



    font-weight: 500;



    cursor: pointer;



    transition: all 0.15s;



    display: inline-flex;



    align-items: center;



    gap: 6px;



    min-height: 48px; /* 触控友好 */



  }

.btn:active{



    transform: scale(0.97);



    opacity: 0.9;



  }

/* 功能按钮网格 */.action-grid{



    display: grid;



    grid-template-columns: repeat(3, 1fr);



    gap: 10px;



  }

.action-btn{



    display: flex;



    flex-direction: column;



    align-items: center;



    gap: 6px;



    padding: 14px 10px;



    background: var(--card);



    border-radius: var(--radius-sm);



    border: 1px solid var(--border);



    cursor: pointer;



    min-height: 70px;



  }

.action-btn:active{



    background: #f8fafc;



  }

.action-btn .icon{



    font-size: 22px;



  }

.action-btn .label{



    font-size: 12px;



    color: var(--text);



  }

/* 弹窗 */.bd{



    width: 100% !important;



    max-width: 100% !important;



    max-height: calc(100dvh - env(safe-area-inset-top, 0px) - 6px) !important;



    bottom: 0 !important;



    margin-bottom: 0 !important;



    padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)) !important;



    overflow-y: auto !important;



  }

/* 输入框 */.er input,.er textarea,.er select{



    font-size: 16px; /* 防止iOS缩放 */



    padding: 12px;



    border: 1px solid var(--border);



    border-radius: var(--radius-sm);



  }

/* 团队列表项 */.rw{



    padding: 6px 10px;



    font-size: 14px;



    display: flex;



    align-items: center;



    gap: 8px;



  }

.nm{



    font-size: 14px;



    font-weight: 600;



  }

.dt{



    font-size: 13px;



  }

/* 手机端团队列表:去掉rw默认padding,让内容完全对齐筛选按钮 */.home-twin-row{ flex-direction: column; }

.home-hb-head{ display: flex !important; flex-direction: row !important; align-items: center !important; flex-wrap: nowrap !important; gap: 6px; padding: 12px 12px 8px !important; }

.home-hb-head-left{ display: flex !important; align-items: center !important; flex: 1 1 auto; min-width: 0; overflow: hidden; }

.home-hb-head .bday-settings-btn{ display: inline-flex !important; flex: 0 0 auto !important; margin-left: auto !important; padding: 4px 10px; font-size: 11px; width: auto !important; max-width: none !important; white-space: nowrap !important; }

.home-hb-card .rw{ padding-left: 12px; padding-right: 12px; }

.bday-rw{ flex-wrap: wrap !important; align-items: center !important; gap: 4px 8px !important; }

.bday-rw .bday-body{ display: contents; }

.bday-rw .nm{ order: 1; flex: 1 1 auto; min-width: 0; max-width: calc(100% - 132px); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; writing-mode: horizontal-tb; }

.bday-rw .bday-actions{ order: 2; flex: 0 0 auto; margin-left: auto; padding-top: 0; gap: 4px; align-self: center; }

.bday-rw .bday-rest{ order: 3; flex: 1 1 100%; width: 100%; min-width: 0; }

.bday-act-btn{ padding: 4px 10px; font-size: 10px; border-radius: 999px; }

.bday-portal-tag{ font-size: 9px; padding: 3px 8px; border-radius: 999px; }

#ov_bday_wish.ov.on{ align-items: stretch; justify-content: stretch; padding: 0; }

#ov_bday_wish .bd{ max-width: 100% !important; width: 100% !important; max-height: 100% !important; height: 100%; border-radius: 0 !important; margin: 0 !important; }

.bday-wish-shell{ max-height: 100%; height: 100%; border-radius: 0; }

.bday-wish-header{ padding-top: calc(14px + env(safe-area-inset-top, 0px)); }

.bday-wish-scroll{ padding: 10px 12px 4px; }

.bday-wish-tabs{ margin: -10px -12px 10px; padding: 0 12px; }

.bday-wish-shell--mobile .bday-style-grid--mobile{ grid-template-columns: repeat(4, 1fr) !important; }

.bday-wish-shell--mobile .bday-wish-scroll{ background: #f9fafb; }

.bday-wish-shell--mobile .bday-wish-hint{ display: none; }

.bday-copy-pick-list,.bday-wish-tpl-list{ max-height: none; }

.bday-wish-tpl-label,.bday-copy-pick-label{ font-size: 14px; }

.bday-wish-tpl-preview,.bday-copy-pick-text{ font-size: 13px; line-height: 1.55; }

.bday-wish-hint{ font-size: 13px; padding: 10px 12px; border-radius: 10px; background: #f9fafb; border: 1px solid #e5e7eb; margin-bottom: 12px; }

#p0{ scroll-padding-top: 4px; }

body.ov-open #p-body{ bottom: var(--m-safe-bottom); }

#tl .rw{



    padding-left: 0 !important;



    padding-right: 0 !important;



    justify-content: space-between;



    gap: 0;



  }

#tl .rw > div:first-child{



    display: flex;



    align-items: center;



    gap: 6px;



    flex-wrap: wrap;



    flex: 1;



  }

#tl .rw > div:last-child{



    display: flex;



    align-items: center;



    gap: 4px;



    flex-shrink: 0;



  }

}

/* ============================================



   通用样式



   ============================================ */
/* Toast */
.toast{



  display: none;



  position: fixed;



  bottom: 100px;



  left: 50%;



  transform: translateX(-50%);



  background: rgba(0,0,0,0.85);



  color: #fff;



  padding: 12px 24px;



  border-radius: 24px;



  font-size: 14px;



  z-index: 200000;



  white-space: nowrap;



  box-shadow: 0 4px 12px rgba(0,0,0,0.2);



}

body.ov-open .toast{

  bottom:auto;

  top:max(64px,calc(env(safe-area-inset-top,0px) + 52px));

}

@media (min-width: 769px) {.toast{



    bottom: 24px;



  }

}

/* 弹窗遮罩 */
.ov{



  display: none;



  position: fixed;



  top: 0;



  left: 0;



  right: 0;



  bottom: 0;



  background: rgba(0,0,0,0.5);backdrop-filter: blur(4px);



}

.ov.on{



  display: block;



}

.ov.on{

  display: block;

}

/* ===== 电脑端弹窗:居中显示 ===== */
@media (min-width: 769px){

  .bd {

    position: fixed !important;

    top: 50% !important;

    left: 50% !important;

    bottom: auto !important;

    right: auto !important;

    transform: translate(-50%, -50%) !important;

    width: 92% !important;

    max-width: 860px !important;

    max-height: 88vh !important;

    border-radius: 16px !important;

    box-shadow: 0 8px 40px rgba(0,0,0,0.25) !important;

  }



  .bd.slide-down {

    transform: translate(-50%, -50%) !important;

  }

  .bd.ov-dragged {

    transform: none !important;

    right: auto !important;

    bottom: auto !important;

  }

  .bd.ov-dragging {

    transition: none !important;

  }

  .bd .tt {

    cursor: move;

    user-select: none;

  }

  .bd .tt .cls,

  .bd .tt button,

  .bd .tt a,

  .bd .tt input,

  .bd .tt select,

  .bd .tt label {

    cursor: pointer;

  }

  /* 弹窗标题栏 */

  .tt {

    display: flex;

    justify-content: space-between;

    align-items: center;

    padding: 16px 20px;

    border-bottom: 1px solid var(--border);

    font-weight: 600;

    font-size: 17px;

    background: var(--bg);

    border-radius: 16px 16px 0 0;

  }



  .cls {

    font-size: 28px;

    cursor: pointer;

    color: #999;

    line-height: 1;

    padding: 0 4px;

  }



  .cls:hover {

    color: #333;

  }

  .bd {

    bottom: auto !important;

  }

}

.bd{



  position: fixed;



  bottom: 0;



  left: 50%;



  right: auto;



  transform: translateX(-50%) translateY(100%);



  width: 96%;



  max-width: 420px;



  background: var(--card);



  border-radius: 16px 16px 0 0;



  box-shadow: 0 -2px 20px rgba(0,0,0,0.12);



  max-height: 90vh;



  overflow-y: auto;



  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);



  -webkit-overflow-scrolling: touch;



  padding: 0;



  /* 向下延伸覆盖浏览器底栏间隙,同时确保底部内容可见 */



  padding-bottom: 56px;



  margin-bottom: -56px;



}

.ov.on .bd{



  transform: translateX(-50%) translateY(0);



}

.bd.slide-down{



  transform: translateX(-50%) translateY(100%);



}

.tt{



  display: flex;



  justify-content: space-between;



  align-items: center;



  padding: 16px 20px;



  border-bottom: 1px solid var(--border);



  font-weight: 600;



  font-size: 17px;



  position: sticky;



  top: 0;



  background: var(--card);



  z-index: 10;



}

.cls{



  font-size: 24px;



  cursor: pointer;



  color: var(--text-muted);



  padding: 0 4px;



  line-height: 1;



}

.cls:hover{



  color: var(--text);



}

.team-tt{ gap: 12px; }

.team-tt-title{

  flex: 1;

  min-width: 0;

  overflow: hidden;

  text-overflow: ellipsis;

  white-space: nowrap;

}

.team-tt-actions{

  display: flex;

  align-items: center;

  gap: 8px;

  flex-shrink: 0;

}

.team-copy-btn{

  font-size: 12px;

  padding: 5px 12px;

  background: linear-gradient(135deg, #667eea, #764ba2);

  color: #fff;

  border: none;

  border-radius: 20px;

  cursor: pointer;

  display: flex;

  align-items: center;

  gap: 4px;

  line-height: 1.2;

  box-shadow: 0 2px 6px rgba(102, 126, 234, 0.28);

  white-space: nowrap;

}

.team-copy-btn:hover{ filter: brightness(1.05); }

.room-plan-grid{
  table-layout: fixed;
  width: max-content;
  min-width: 100%;
}

.room-plan-grid .room-plan-col-idx{
  width: 56px;
  min-width: 56px;
}

.room-plan-grid .room-plan-col-name{
  white-space: nowrap;
  overflow: visible;
  vertical-align: middle;
}

.room-plan-grid .room-plan-col-name .rm-slot-sel{
  display: block;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  padding: 4px 20px 4px 6px;
  font-size: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  background: #fff;
  box-sizing: border-box;
}

.room-plan-grid .room-plan-col-day{
  width: 52px;
  min-width: 48px;
  max-width: 56px;
}

.room-plan-grid .room-plan-col-day .rm-day-inp{
  width: 100%;
  min-width: 0;
  padding: 3px 2px;
  font-size: 12px;
  border: 1px solid #ddd;
  border-radius: 3px;
  text-align: center;
  box-sizing: border-box;
}

.team-tt-shell{

  position: sticky;

  top: 0;

  z-index: 6;

  background: var(--card);

}

.team-tt-shell > .tt.team-tt{

  position: relative;

  top: auto;

}

.team-weather-progress{

  position: absolute;

  left: 0;

  right: 0;

  top: 100%;

  z-index: 7;

  max-height: 0;

  padding: 0;

  margin: 0;

  border: none;

  overflow: hidden;

  visibility: hidden;

  opacity: 0;

  pointer-events: none;

  background: #f8fafc;

  box-sizing: border-box;

}

.team-weather-progress.active{

  max-height: 72px;

  padding: 8px 12px;

  border-bottom: 1px solid #eee;

  visibility: visible;

  opacity: 1;

  pointer-events: auto;

  box-shadow: 0 4px 8px rgba(15, 23, 42, 0.06);

}

.team-weather-progress-bar{

  background: #e2e8f0;

  border-radius: 999px;

  height: 5px;

  overflow: hidden;

}

.team-weather-progress-fill{

  background: linear-gradient(90deg, #38bdf8, #667eea, #764ba2);

  height: 100%;

  width: 5%;

  border-radius: 999px;

  transition: width 0.45s ease;

}

/* 表单 */
.er{



  display: flex;



  align-items: center;



  margin-bottom: 12px;



  gap: 8px;



}

.er label{



  min-width: 70px;



  color: var(--text-muted);



  font-size: 14px;



}

.er input,.er textarea,.er select{



  flex: 1;



  border: 1px solid var(--border);



  border-radius: var(--radius-sm);



  font-size: 14px;



  outline: none;



  transition: border-color 0.2s;



}

.er input:focus,.er textarea:focus,.er select:focus{



  border-color: var(--accent);



}

.er textarea{



  min-height: 100px;



  resize: vertical;



}

/* 按钮 */
.btn-full{



  display: block;



  width: 100%;



  text-align: center;



  font-size: 16px;



  padding: 14px;



}

.btn-row{



  display: flex;



  gap: 8px;



  margin-top: 8px;



}

.btn-row .btn{



  flex: 1;



  text-align: center;



  justify-content: center;



}

.cf{



  display: flex;



  gap: 10px;



  margin-top: 16px;



}

.cf .btn{



  flex: 1;



  text-align: center;



  justify-content: center;



}

.btn-g{ background: #9ca3af; color: #fff; }

.btn-r{ background: var(--danger); color: #fff; }

.btn-o{ background: var(--warning); color: #fff; }

.btn-w{ background: var(--card); color: var(--primary); border: 1px solid var(--primary); }

/* 空状态 */
.em{



  color: var(--text-muted);



  font-size: 14px;



  text-align: center;



  padding: 32px 16px;



}

/* 标签 */
.tag{



  padding: 3px 7px;



  border-radius: 10px;



  font-size: 11px;



  font-weight: 600;



  white-space: nowrap;



  flex-shrink: 0;



}

.tag.on{



  background: var(--primary) !important;



  color: #fff !important;



  box-shadow: 0 2px 8px rgba(30,58,95,0.35);



}

.tag-upcoming{ background: #e0f2fe; color: #0369a1; }

.tag-ongoing{ background: #fff3e0; color: #e65100; }

.tag-finished{ background: #f3f4f6; color: #6b7280; }

.tag-unknown{ background: #f3f4f6; color: #9ca3af; }

.ft{ display: flex !important; flex-wrap: nowrap !important; overflow-x: auto; gap: 4px; }

/* 加载动画 */
@keyframes spin{



  to { transform: rotate(360deg); }



}

.loading-spinner{



  width: 32px;



  height: 32px;



  border: 3px solid var(--border);



  border-top-color: var(--accent);



  border-radius: 50%;



  animation: spin 0.8s linear infinite;



}

/* ===== LOGIN OVERRIDE STYLES ===== */
#login-page{
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  min-height: 100dvh;
  background: linear-gradient(135deg,#667eea 0%,#764ba2 50%,#f093fb 100%);
  z-index: 9999;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  overflow-y: auto;
  box-sizing: border-box;
  padding: 24px 20px;
  padding-top: max(24px, env(safe-area-inset-top));
  padding-bottom: max(24px, env(safe-area-inset-bottom));
}

#login-box{ background: #fff; border-radius: 12px; padding: 32px 28px; width: 90%; max-width: 340px; box-shadow: 0 8px 32px rgba(0,0,0,0.3); text-align: center; box-sizing: border-box; }

#login-box h2{ margin: 0 0 8px; background: linear-gradient(135deg,#667eea,#764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; font-size: 22px; font-weight: 700; }

#login-box p{ margin: 0 0 20px; color: #666; font-size: 14px; }

.er{ margin-bottom: 14px; }

.er label{ display: block; text-align: left; font-size: 13px; color: #444; margin-bottom: 4px; font-weight: 500; }

.er input{ width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; outline: none; transition: border-color 0.2s; }

.er input:focus{ border-color: #1e3c5a; }

#login-box .btn{ width: 100%; padding: 12px; background: linear-gradient(135deg,#667eea,#764ba2); color: #fff; border: none; border-radius: 8px; font-size: 16px; cursor: pointer; margin-top: 6px; display: flex !important; align-items: center; justify-content: center !important; text-align: center; box-sizing: border-box; }

#login-box .btn:hover{ background: #2a5078; }

.login-legal{ margin-top: 14px; font-size: 12px; color: #888; line-height: 1.5; }

.login-legal a{ color: #667eea; text-decoration: none; }

.login-legal a:hover{ text-decoration: underline; }

.crm-check{
  position:relative;
  display:flex;
  align-items:flex-start;
  gap:10px;
  cursor:pointer;
  font-size:12px;
  color:#666;
  line-height:1.5;
  user-select:none;
  -webkit-user-select:none;
  margin-top:12px;
}

.crm-check input[type="checkbox"]{
  position:absolute;
  opacity:0;
  width:18px;
  height:18px;
  margin:0;
  cursor:pointer;
  z-index:1;
}

.crm-check-box{
  flex-shrink:0;
  width:18px;
  height:18px;
  margin-top:1px;
  border:2px solid #bbb;
  border-radius:4px;
  background:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .15s,border-color .15s;
  pointer-events:none;
}

.crm-check input[type="checkbox"]:checked + .crm-check-box{
  background:#667eea;
  border-color:#667eea;
}

.crm-check input[type="checkbox"]:checked + .crm-check-box::after{
  content:'';
  width:5px;
  height:9px;
  border:solid #fff;
  border-width:0 2px 2px 0;
  transform:rotate(45deg);
  margin-top:-2px;
}

.crm-check input[type="checkbox"]:focus-visible + .crm-check-box{
  outline:2px solid rgba(102,126,234,.35);
  outline-offset:2px;
}

.crm-check-text{flex:1;min-width:0}

.crm-check-text a{color:#667eea;text-decoration:none}

.crm-check-text a:hover{text-decoration:underline}

#login-error{ color: #e74c3c; font-size: 13px; margin-top: 10px; min-height: 18px; }

.login-wrap{
  display: flex;
  flex: 0 1 auto;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  width: 100%;
  max-width: 400px;
  min-height: auto;
  padding: 0;
  box-sizing: border-box;
}

.login-main{
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 0;
  box-sizing: border-box;
}

#login-box{ width: 100%; max-width: 400px; margin: 0 auto; }

.app-dl-card{
  flex: 0 0 auto;
  background: #fff;
  border-radius: 12px;
  padding: 14px 18px;
  box-shadow: 0 6px 24px rgba(0,0,0,0.18);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  box-sizing: border-box;
}

.login-app-dl-footer.app-dl-card{
  width: 100%;
  max-width: 400px;
  background: #fff;
}

.app-dl-mobile-bar{
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
}

.app-dl-mobile-text{
  flex: 1;
  min-width: 0;
  text-align: left;
}

.app-dl-mobile-title{
  font-size: 14px;
  font-weight: 600;
  color: #111827;
  margin: 0;
  line-height: 1.35;
}

.app-dl-mobile-meta{
  font-size: 12px;
  color: #6b7280;
  margin: 2px 0 0;
  line-height: 1.4;
}

.app-dl-btn-compact{
  width: auto !important;
  max-width: none !important;
  padding: 10px 18px !important;
  font-size: 14px !important;
  flex-shrink: 0;
}

.app-dl-mobile-chevron{
  flex-shrink: 0;
  font-size: 12px;
  color: #9ca3af;
  line-height: 1;
  transition: transform 0.2s;
}

.login-app-dl-footer.is-expanded .app-dl-mobile-chevron{
  transform: rotate(180deg);
}

.app-dl-mobile-panel{
  display: none;
  width: 100%;
  padding-top: 12px;
  border-top: 1px solid #f3f4f6;
  margin-top: 12px;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.login-app-dl-footer.is-expanded .app-dl-mobile-panel{
  display: flex;
}

.app-dl-qr-mobile{
  width: 140px;
  height: 140px;
}

.app-dl-mobile-toggle{
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

@media (max-width: 640px) {#login-page{
    align-items: stretch;
    justify-content: stretch;
    padding: 0;
    padding-top: env(safe-area-inset-top);
    padding-bottom: env(safe-area-inset-bottom);
  }

.login-wrap{
    flex: 1;
    max-width: none;
    justify-content: space-between;
    gap: 0;
  }

.login-main{
    flex: 1;
    padding: 24px 20px 12px;
  }

#login-box{ max-width: 340px; }

.login-app-dl-footer.app-dl-card{
    max-width: none;
    border-radius: 16px 16px 0 0;
    padding: 14px 16px calc(14px + env(safe-area-inset-bottom));
    box-shadow: 0 -4px 24px rgba(0,0,0,0.12);
    background: rgba(255,255,255,0.96);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
  }

}

@media (min-width: 641px) {.app-dl-qr-mobile{ width: 168px; height: 168px; }

.app-dl-mobile-title{ font-size: 15px; }

}

.app-dl-card.is-hidden{ display: none !important; }

.app-dl-title{ font-size: 17px; font-weight: 700; color: #111827; margin: 0; }

.app-dl-desc{ font-size: 13px; color: #4b5563; line-height: 1.6; margin: 0; }

.app-dl-qr{
  width: 168px;
  height: 168px;
  border-radius: 12px;
  border: 1px solid #e5e7eb;
  background: #fff;
  object-fit: contain;
}

.app-dl-meta{ font-size: 13px; color: #6b7280; line-height: 1.5; }

.app-dl-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 11px 22px;
  border-radius: 10px;
  border: none;
  background: linear-gradient(135deg,#667eea,#764ba2);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  width: 100%;
  max-width: 260px;
  box-sizing: border-box;
}

.app-dl-btn:hover{ filter: brightness(1.05); color: #fff; }

.app-dl-hint{ font-size: 12px; color: #9ca3af; line-height: 1.5; margin: 0; }

.app-dl-inline{ display: flex; flex-wrap: wrap; gap: 20px; align-items: center; }

.app-dl-inline .app-dl-qr{ flex-shrink: 0; width: 140px; height: 140px; }

.app-dl-inline-body{ flex: 1; min-width: 200px; text-align: left; }

.app-dl-overlay{
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10050;
  background: rgba(15,23,42,0.45);
  align-items: center;
  justify-content: center;
  padding: 20px 16px;
  box-sizing: border-box;
}

.app-dl-overlay.open{ display: flex; }

.app-dl-modal{
  background: #fff;
  border-radius: 16px;
  padding: 22px 20px 20px;
  width: 100%;
  max-width: 380px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.2);
  position: relative;
  text-align: center;
}

.app-dl-modal-close{
  position: absolute;
  top: 10px;
  right: 12px;
  border: none;
  background: transparent;
  font-size: 22px;
  line-height: 1;
  color: #9ca3af;
  cursor: pointer;
  padding: 4px 8px;
}

.app-dl-menu-link{ cursor: pointer; }

.app-dl-desktop-icon{
  flex-shrink: 0;
  width: 140px;
  height: 140px;
  border-radius: 16px;
  background: linear-gradient(145deg, #eff6ff, #dbeafe);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 56px;
  line-height: 1;
}

.app-dl-stack-section + .app-dl-stack-section{ margin-top: 20px; padding-top: 20px; border-top: 1px solid #e5e7eb; }

/* 团队详情 - 团款 + 利润单行 */
.team-payment-row{
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  flex-wrap: nowrap;
}

.team-payment-left{
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.team-payment-left > span{
  font-size: 13px;
  color: #666;
  white-space: nowrap;
}

#team_payment_input{
  width: 7ch;
  min-width: 7ch;
  max-width: 64px;
  height: 28px;
  padding: 4px 5px;
  border: 1px solid #ddd;
  border-radius: 5px;
  font-size: 14px;
  text-align: right;
  flex-shrink: 0;
  box-sizing: border-box;
  -moz-appearance: textfield;
}

#team_payment_input::-webkit-outer-spin-button,#team_payment_input::-webkit-inner-spin-button{
  -webkit-appearance: none;
  margin: 0;
}

.team-payment-save{
  background: #4a90e2;
  color: #fff;
  border: none;
  border-radius: 5px;
  padding: 4px 10px;
  height: 26px;
  font-size: 12px;
  cursor: pointer;
  flex-shrink: 0;
  white-space: nowrap;
  line-height: 1;
}

#team_payment_status{
  font-size: 11px;
  color: #27ae60;
  white-space: nowrap;
}

.team-profit-col{
  margin-left: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-shrink: 1;
  min-width: 0;
  flex-wrap: nowrap;
  overflow: hidden;
}

.team-profit-item{
  display: flex;
  align-items: center;
  gap: 3px;
  white-space: nowrap;
  flex-shrink: 0;
}

.team-profit-label{
  color: #888;
  font-size: 11px;
}

.team-profit-val{
  font-size: 12px;
  font-weight: 700;
}

.team-ai-plus-btn{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 26px;
  padding: 0 10px;
  border: 1px solid #6366f1;
  border-radius: 5px;
  background: #fff;
  color: #6366f1;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  flex-shrink: 0;
  line-height: 1;
  white-space: nowrap;
  box-sizing: border-box;
}

.team-ai-plus-btn:active{
  background: #eef2ff;
}

.team-route-rating-row .team-ai-plus-btn{
  flex-shrink: 0;
}

.team-route-rating-row{
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 8px 0 4px;
}

.team-route-rating-row .team-route-rating{
  flex: 1;
  min-width: 0;
  margin: 0;
}

/* 团队成员拖拽排序 */
.team-member-list{
  perspective: 960px;
}

.team-member-list .team-member-row{
  display: flex;
  align-items: center;
  padding: 8px 10px;
  border-bottom: 1px solid #f0f0f0;
  cursor: pointer;
  background: #fff;
  transform: translateZ(0);
  transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.24s ease, background 0.24s ease, border-color 0.24s ease;
}

.team-member-list.team-member-list--sorting .team-member-row:not(.team-member-dragging){
  transition: transform 0.24s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.24s ease, background 0.24s ease;
}

.team-member-row.team-member-dragging{
  opacity: 1;
  z-index: 3;
  position: relative;
}

.team-member-list.team-member-list--sorting:not(.team-member-list--touch-sort) .team-member-row.team-member-dragging{
  transform: translateY(-3px) scale(1.025) rotateX(3deg);
  transform-origin: center center;
  border: 1px solid rgba(102, 126, 234, 0.55);
  border-radius: 12px;
  background: linear-gradient(165deg, #ffffff 0%, #f3f6ff 52%, #e9efff 100%);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    0 10px 18px rgba(102, 126, 234, 0.18),
    0 22px 38px rgba(15, 23, 42, 0.16);
}

.team-member-list.team-member-list--sorting:not(.team-member-list--touch-sort) .team-member-row.team-member-drop-before{
  transform: translateY(5px) scale(0.995);
  border-radius: 10px;
  background: linear-gradient(180deg, #f7f9ff 0%, #ffffff 100%);
  box-shadow:
    inset 0 4px 0 0 #667eea,
    0 8px 18px rgba(102, 126, 234, 0.1);
}

.team-member-list.team-member-list--sorting:not(.team-member-list--touch-sort) .team-member-row.team-member-drop-after{
  transform: translateY(-5px) scale(0.995);
  border-radius: 10px;
  background: linear-gradient(0deg, #f7f9ff 0%, #ffffff 100%);
  box-shadow:
    inset 0 -4px 0 0 #667eea,
    0 8px 18px rgba(102, 126, 234, 0.1);
}

.team-member-list.team-member-list--touch-sort .team-member-row.team-member-drop-before,.team-member-list.team-member-list--touch-sort .team-member-row.team-member-drop-after{
  box-shadow: inset 0 3px 0 0 #667eea;
  background: #fafbff;
}

.team-member-list.team-member-list--touch-sort .team-member-row.team-member-drop-after{
  box-shadow: inset 0 -3px 0 0 #667eea;
}

.team-member-row.team-member-row-settled{
  animation: tm-member-settle 0.52s cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes tm-member-settle {
  0% {
    transform: translateY(-2px) scale(1.015);
    background: #eef4ff;
    box-shadow: 0 10px 22px rgba(102, 126, 234, 0.14);
  }
  100% {
    transform: translateY(0) scale(1);
    background: #fff;
    box-shadow: none;
  }
}

.team-member-drag{
  flex-shrink: 0;
  width: 24px;
  margin-right: 4px;
  color: #999;
  font-size: 16px;
  line-height: 1.2;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  touch-action: none;
  text-align: center;
  padding: 4px 0;
  transition: color 0.2s ease, transform 0.2s ease, filter 0.2s ease;
}

.team-member-list.team-member-list--sorting:not(.team-member-list--touch-sort) .team-member-drag{
  color: #667eea;
  transform: scale(1.12) translateY(-1px);
  filter: drop-shadow(0 2px 4px rgba(102, 126, 234, 0.35));
}

.team-member-drag:active{
  cursor: grabbing;
  color: #4c5fd7;
}

html.force-mobile .team-member-drag,@media (max-width: 768px){
  .team-member-drag { display: none !important; }
}

.team-member-list.team-member-list--touch-mode::before{
  content: '长按成员行后上下拖动可调顺序';
  display: block;
  font-size: 11px;
  color: #999;
  padding: 2px 10px 8px;
  line-height: 1.45;
}

.team-member-row.team-member-row-pressing{
  transform: scale(0.985);
  background: #f5f8ff;
  transition: transform 0.12s ease, background 0.12s ease;
}

.team-member-list.team-member-list--touch-sort .team-member-row:not(.team-member-dragging){
  opacity: 0.88;
}

.team-member-row.team-member-row-selected.team-member-dragging{
  transform: scale(1.04);
  box-shadow: 0 14px 36px rgba(102, 126, 234, 0.38);
  border-width: 2px;
}

.team-member-main{
  flex: 1;
  min-width: 0;
}

/* 成员操作按钮样式 - 电脑端 */
.member-btns{



  display: flex;



  gap: 8px;



  margin-left: 10px;



  flex-shrink: 0;



}

.member-btns .copy-btn{



  background: #4a90e2;



  color: #fff;



  border: none;



  border-radius: 20px;



  padding: 6px 16px;



  font-size: 13px;



  cursor: pointer;



  font-weight: 500;



}

.member-btns .del-btn{



  background: #ef4444;



  color: #fff;



  border: none;



  border-radius: 20px;



  padding: 6px 16px;



  font-size: 13px;



  cursor: pointer;



  font-weight: 500;



}

/* 手机端 - 垂直排列,间距加大 */
@media (max-width: 768px){



  #user-display {

    display: none !important;

  }

  .member-btns {



    flex-direction: column;



    gap: 10px;



    margin-left: 8px;



  }



  .member-btns .copy-btn,



  .member-btns .del-btn {



    padding: 6px 12px;



    font-size: 12px;



  }



}

/* ===== 图表紧凑样式 ===== */
.chart-expand-btn{background:none;border:none;font-size:13px;color:#9ca3af;cursor:pointer;padding:2px 4px;line-height:1;margin-left:auto;flex-shrink:0;}

.chart-expand-btn:hover{color:#667eea;}

.chart-legend-wrap{display:flex;flex-wrap:wrap;gap:4px 8px;justify-content:center;max-width:160px;}

.chart-legend-item{display:flex;align-items:center;gap:3px;font-size:9px;color:#666;}

.chart-legend-item span{display:inline-block;width:8px;height:8px;border-radius:50%;}

/* 消费能力 左饼右文(各占一半)*/
.chart-spend-wrap{display:flex;align-items:center;gap:16px;padding:8px;cursor:pointer;flex:1;}

.chart-spend-pie-area{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:140px;}

.chart-spend-pie{width:140px;height:140px;border-radius:50%;cursor:pointer;transition:transform .2s;}

.chart-spend-pie:hover{transform:scale(1.05);}

.chart-spend-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;font-size:16px;font-weight:700;color:#1e3a5f;line-height:1.1;}

.chart-spend-center small{display:block;font-size:10px;color:#888;font-weight:400;}

.chart-spend-legend-area{flex:1;display:flex;flex-direction:column;gap:6px;font-size:12px;color:#555;padding-left:8px;}

.chart-spend-legend-area .chart-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;}

.chart-spend-legend-area .chart-legend-item span{width:10px;height:10px;border-radius:50%;flex-shrink:0;}

.chart-spend-legend-area .chart-legend-item em{font-style:normal;color:#555;font-weight:500;}

.chart-spend-legend-area .chart-legend-item b{margin-left:auto;font-weight:700;color:#1e3a5f;font-size:13px;}

/* 年龄横向柱状图 */
.chart-age-wrap{display:flex;flex-direction:column;gap:6px;padding:8px;cursor:pointer;flex:1;justify-content:center;}

.chart-age-row{display:grid;grid-template-columns:50px minmax(0,1fr) auto;align-items:center;gap:6px;}

.chart-age-label{font-size:12px;color:#555;width:50px;flex-shrink:0;text-align:right;font-weight:500;}

.chart-age-bar{min-width:0;height:16px;background:#f0f0f0;border-radius:8px;overflow:hidden;}

.chart-age-fill{height:100%;border-radius:8px;transition:width .4s;}

.chart-age-num{font-size:12px;color:#1e3a5f;font-weight:700;width:auto;min-width:58px;flex-shrink:0;text-align:right;white-space:nowrap;}

.chart-age-num small{font-size:10px;color:#999;font-weight:400;margin-left:2px;white-space:nowrap;}

/* 消费能力 左饼右文(各占一半)*/
/* ===== 全屏图表弹窗 ===== */
#chart-modal-overlay{display:none;position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.75);align-items:center;justify-content:center;padding:16px;}

.chart-modal-inner{background:#fff;border-radius:16px;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3);}

.chart-modal-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #eee;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:16px 16px 0 0;}

.chart-modal-title{font-size:15px;font-weight:600;}

.chart-modal-close{background:rgba(255,255,255,.2);border:none;color:#fff;font-size:18px;width:28px;height:28px;border-radius:50%;cursor:pointer;line-height:1;}

.chart-modal-close:hover{background:rgba(255,255,255,.35);}

.chart-modal-body{flex:1;overflow-y:auto;padding:16px;}

.chart-modal-body{display:flex;align-items:center;justify-content:center;}

.chart-modal-body>div{width:100%;}

.chart-modal-body .chart-legend-wrap{font-size:16px;max-width:100%;gap:8px 16px;}

.chart-modal-body .chart-legend-item{font-size:16px;gap:6px;}

.chart-modal-body .chart-legend-item span{width:14px;height:14px;}

.chart-modal-body .chart-spend-pie{width:360px;height:360px;}

.chart-modal-body .chart-spend-center{font-size:48px;}

.chart-modal-body .chart-spend-center small{font-size:16px;}

.chart-modal-body .chart-spend-legend{font-size:12px;grid-template-columns:1fr 1fr;}

.chart-modal-body .chart-spend-legend-area{font-size:16px;gap:10px;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item{font-size:16px;gap:8px;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item span{width:14px;height:14px;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item em{font-size:16px;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item b{font-size:18px;}

/* 移动端弹窗：底部抽屉贴底 + 尽量拉高至屏幕顶留小缝 */
@media (max-width: 768px){

    .ov {

      top: 0 !important;

      bottom: 0 !important;

      height: auto !important;

      overflow: hidden !important;

    }

    /* z-index 由 openOv 动态分配，避免嵌套弹窗被遮挡 */

    .ov .bd {

      bottom: 0 !important;

      width: 100% !important;

      max-width: 100% !important;

      max-height: calc(100dvh - env(safe-area-inset-top, 0px) - 6px) !important;

      margin-bottom: 0 !important;

      padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)) !important;

      overflow-x: hidden !important;

      overflow-y: auto !important;

      -webkit-overflow-scrolling: touch !important;

      overscroll-behavior: contain !important;

    }

    #pfd_body, #ev_d_body, #ev_reg_body, #it_body, #ev_c_body, #ev_cost_body, #c_body, #m_body, #e_body, #rm_body {

      max-width: 100% !important;

    }

    .it-file-pick-desktop { display: none !important; }
    .it-file-pick-mobile-hint { display: block !important; }

    /* 团队详情：编辑行程 - 手机端文档/相册分开选，避免只弹相册 */

    /* 手机端字体档位（系统设置 - 小/中/大）；顶栏/底栏固定字号，避免撑高或被 overflow 裁切 */
    #p-body, .drawer, .ov .bd { font-size: calc(15px * var(--m-font-scale, 1.0625)); }
    .hd, .hd-title, .hamburger-btn { font-size: 16px !important; }
    .tab-item { font-size: 11px !important; }
    .rw { font-size: calc(14px * var(--m-font-scale, 1.0625)) !important; }
    .nm { font-size: calc(14px * var(--m-font-scale, 1.0625)) !important; }
    .dt { font-size: calc(13px * var(--m-font-scale, 1.0625)) !important; }
    .cd h3 { font-size: calc(16px * var(--m-font-scale, 1.0625)) !important; }
    .btn { font-size: calc(14px * var(--m-font-scale, 1.0625)); }
    .btn-s { font-size: calc(12px * var(--m-font-scale, 1.0625)); }
    .tag { font-size: calc(11px * var(--m-font-scale, 1.0625)); }
    .inp, input.inp, select.inp, textarea.inp { font-size: calc(14px * var(--m-font-scale, 1.0625)); }
    .er label { font-size: calc(13px * var(--m-font-scale, 1.0625)); }
    .nav-item { font-size: calc(11px * var(--m-font-scale, 1.0625)); }
    .drawer-item { font-size: calc(15px * var(--m-font-scale, 1.0625)); }
    .ov .tt { font-size: calc(16px * var(--m-font-scale, 1.0625)); }
    .em { font-size: calc(13px * var(--m-font-scale, 1.0625)); }
    .p7-tab { font-size: calc(13px * var(--m-font-scale, 1.0625)); }
    .p7-card-title { font-size: calc(16px * var(--m-font-scale, 1.0625)); }
    .p7-card-desc, .p7-switch-desc { font-size: calc(13px * var(--m-font-scale, 1.0625)); }
    .p7-switch-label { font-size: calc(14px * var(--m-font-scale, 1.0625)); }
    .p7-font-chip { font-size: calc(15px * var(--m-font-scale, 1.0625)); }

    .room-plan-grid th { position: relative; }
    .room-plan-grid .rm-col-del {
      position: absolute;
      top: 3px;
      right: 3px;
      width: 16px;
      height: 16px;
      padding: 0;
      border: none;
      border-radius: 3px;
      background: #f3f4f6;
      color: #9ca3af;
      font-size: 13px;
      line-height: 14px;
      cursor: pointer;
    }
    .room-plan-grid .rm-col-del:hover {
      background: #fee2e2;
      color: #dc2626;
    }

    /* 团队详情：顶栏复制仅图标，在关闭按钮左侧 */

    .team-copy-btn-header,
    .team-weather-btn-header,
    .team-room-btn-header {

      padding: 0 !important;

      width: 36px !important;

      height: 36px !important;

      min-width: 36px !important;

      border-radius: 50% !important;

      justify-content: center !important;

      box-shadow: none !important;

    }

    .team-copy-btn-header {

      background: #eef2ff !important;

      color: #667eea !important;

    }

    .team-weather-btn-header {

      background: #e0f2fe !important;

      color: #0284c7 !important;

    }

    .team-room-btn-header {

      background: #ede9fe !important;

      color: #7c3aed !important;

    }

    .team-copy-btn-header .team-copy-label,
    .team-weather-btn-header .team-copy-label,
    .team-room-btn-header .team-copy-label {

      display: none !important;

    }

    .team-copy-btn-header .team-copy-icon,
    .team-weather-btn-header .team-copy-icon,
    .team-room-btn-header .team-copy-icon {

      font-size: 18px;

    }

    .team-tt-actions {

      gap: 6px !important;

    }

    .team-tt-title {

      padding-right: 4px;

    }

    .team-tt-shell > .tt.team-tt {

      min-height: 52px;

      box-sizing: border-box;

    }

    /* 团队管理顶栏：移动端正右上角回收站图标 */
    .team-trash-btn-d{display:none!important}
    .team-trash-btn-m{display:flex!important;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;padding:0;margin-left:auto;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:15px;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent;box-sizing:border-box}

    /* 团队管理顶栏：手机端搜索/年份换行，避免与标题挤在一行 */
    #p1 .team-page-toolbar{
      flex-wrap:wrap!important;
      align-items:center;
      gap:8px 6px;
    }
    #p1 .team-page-toolbar h3{order:1;margin-right:0}
    #p1 .team-page-toolbar .page-add-btn-team{order:2;flex-shrink:0}
    #p1 .team-page-toolbar .team-trash-btn-m{order:3;margin-left:auto}
    #p1 .team-page-toolbar::after{
      content:'';
      flex-basis:100%;
      order:4;
      width:0;
      height:0;
    }
    #p1 .team-page-toolbar .team-search-wrap{order:5;flex:1;min-width:0}
    #p1 .team-page-toolbar select#team_year_filter{order:6;flex:0 0 108px;min-width:96px;max-width:42%}

    /* 团队管理 - 筛选行（手机端单行7等分，占满整行） */
    #p1 .team-filter-bar{justify-content:stretch;padding:0;margin-bottom:8px;overflow:visible;flex-wrap:nowrap;width:100%;box-sizing:border-box}
    #p1 .team-filter-inner{display:grid!important;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;width:100%;flex:1;min-width:0;margin:0;box-sizing:border-box}
    #p1 .team-filter-inner .tag{display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;padding:6px 2px;font-size:10px;line-height:1.2;text-align:center;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:8px}

    /* 团队详情 - 底部8按钮等宽网格（手机端） */
    #ov_t .team-btn-grid-m{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}
    #ov_t .team-btn-grid-m .team-btn-m{min-height:44px;height:44px;padding:6px 2px;font-size:12px;border:none;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.25;white-space:normal;box-sizing:border-box;width:100%;cursor:pointer;font-weight:500;-webkit-tap-highlight-color:transparent}
    #ov_t .team-btn-m-edit{background:#667eea}
    #ov_t .team-btn-m-add{background:#f59e0b}
    #ov_t .team-btn-m-badd{background:#3b82f6}
    #ov_t .team-btn-m-bedit{background:#0891b2}
    #ov_t .team-btn-m-itin{background:#ff9800}
    #ov_t .team-btn-m-excel{background:#10b981}
    #ov_t .team-btn-m-order{background:#8b5cf6}
    #ov_t .team-btn-m-del{background:#ef4444}

    /* 团队详情：整页滚动，取消负 margin 避免底部按钮点不到 */
    #ov_t.ov.on .bd{
      overflow-y:auto!important;
      -webkit-overflow-scrolling:touch;
      margin-bottom:0!important;
      padding-bottom:calc(12px + env(safe-area-inset-bottom,12px))!important;
    }
    #ov_t #tm_list{overflow:visible}
    #ov_t .team-detail-actions{
      padding:12px 12px calc(8px + env(safe-area-inset-bottom,8px))!important;
    }
    #ov_t .team-btn-m{touch-action:manipulation}

    /* 客户录入 - 团队类型选项 */
    .er-tt-type{align-items:center}
    .er-tt-type>label{min-width:4.2em;font-size:13px;flex-shrink:0}
    .er-tt-type .tt-type-opts{display:flex;flex:1;min-width:0;gap:4px 6px;flex-wrap:nowrap;justify-content:flex-start;padding-right:10px;box-sizing:border-box;margin-top:0!important}
    .er-tt-type .tt-type-opts label{font-size:12px;gap:2px;white-space:nowrap;flex:0 1 auto}

    /* 团队编辑 - 费用项两列网格（除保险费外） */
    .team-fee-grid-m{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:14px}
    .team-fee-grid-m .team-fee-half{display:flex;flex-direction:column;align-items:stretch;margin-bottom:0;gap:4px}
    .team-fee-grid-m .team-fee-half label{min-width:0;width:auto;font-size:12px;margin-bottom:0}
    .team-fee-grid-m .team-fee-half input{width:100%;box-sizing:border-box;padding:8px 10px;font-size:14px}
    .team-fee-insurance{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-bottom:14px}
    .team-fee-insurance label{min-width:0;width:auto;margin-bottom:0}
    .team-cost-details{border:1px solid #e8e8e8;border-radius:10px;margin:12px 0;background:#fafafa}
    .team-cost-summary{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer;font-weight:600;color:#333;list-style:none;gap:10px}
    .team-cost-summary::-webkit-details-marker{display:none}
    .team-cost-left{display:flex;align-items:center;gap:8px;min-width:0}
    .team-cost-toggle{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;color:#667eea;font-size:14px;line-height:1;flex-shrink:0;transition:transform .2s ease}
    .team-cost-toggle::before{content:'▶'}
    .team-cost-details[open] .team-cost-toggle{transform:rotate(90deg)}
    .team-cost-hint{font-size:13px;color:#e67e22;font-weight:600;flex-shrink:0}
    .team-cost-body{padding:0 14px 14px}
    .team-exguide-block{border:1px solid #e8e8e8;border-radius:10px;margin:12px 0;padding:12px 14px;background:#fafcff}
    .team-exguide-title{font-size:14px;font-weight:600;color:#333;margin-bottom:10px}
    .team-exguide-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:10px}
    .team-exguide-grid .er{margin-bottom:0}
    .team-exguide-grid label{font-size:12px}
    .team-exguide-traits{margin-bottom:0}
    .team-exguide-traits label{font-size:12px}
    .team-exguide-traits textarea{width:100%;box-sizing:border-box;border:1px solid #ddd;border-radius:6px;padding:8px;font-size:14px;resize:vertical;min-height:56px}
.team-exguide-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.team-exguide-head .team-exguide-title{margin-bottom:0}
.half-star-rating,.hs-star-wrap{display:inline-flex;align-items:center;gap:2px}
.hs-star{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;line-height:1}
.hs-empty{color:#d1d5db;font-size:22px;line-height:1}
.hs-fill{position:absolute;left:0;top:50%;transform:translateY(-50%);overflow:hidden;color:#f59e0b;font-size:22px;line-height:1;white-space:nowrap}
.hs-num{margin-left:6px;font-size:13px;color:#64748b;font-weight:600}

    /* 会销列表卡片 - 移动端四行网格 */
    .ev-card-m{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name del" "tags tags" "stats-mid stats-mid" "stats-bot stats-bot";gap:6px 8px;background:#fff;border-radius:12px;padding:12px 14px;box-shadow:0 1px 6px rgba(0,0,0,0.05);cursor:pointer;margin-bottom:10px;position:relative;transition:background 0.15s,transform 0.15s,box-shadow 0.15s;border:1px solid transparent}
    .ev-card-m:hover{background:rgba(102,126,234,0.06);box-shadow:0 2px 8px rgba(0,0,0,0.08)}
    .ev-card-m:active{transform:scale(0.99)}
    .ev-card-m .ev-card-name{grid-area:name;font-size:15px;font-weight:600;color:#333;line-height:1.35;word-break:break-all;min-width:0}
    .ev-card-m .ev-card-tags{grid-area:tags;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0;padding-right:4px}
    .ev-card-m .ev-tag{font-size:12px;color:#666;background:#f3f4f6;padding:3px 8px;border-radius:6px;white-space:nowrap;line-height:1.3}
    .ev-card-m .ev-card-del{grid-area:del;justify-self:end;align-self:start;background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;border:none;padding:5px 12px;border-radius:16px;font-size:12px;cursor:pointer;box-shadow:0 2px 6px rgba(231,76,60,0.3);position:static;flex-shrink:0}
    .ev-card-m .ev-card-stats-mid{grid-area:stats-mid;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px;align-items:center;font-size:clamp(11px,2.8vw,13px)}
    .ev-card-m .ev-card-stats-bot{grid-area:stats-bot;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px;align-items:center}
    .ev-card-m .ev-stat-dep{font-size:inherit;color:#f39c12;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-card-m .ev-stat-cost{font-size:inherit;color:#e74c3c;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-card-m .ev-stat-avg{font-size:inherit;color:#666;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-card-m .ev-card-att{font-size:13px;font-weight:600;color:#667eea;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-card-m .ev-card-reg{font-size:13px;font-weight:600;color:#e74c3c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-card-m .ev-stat-rate{font-size:13px;color:#666;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .ev-page-head{gap:10px!important}
    .ev-page-title{font-size:16px!important;font-weight:600!important}
    .ev-year-select{display:none!important}
    #ev_search.ev-search-input{padding:7px 10px 7px 30px!important;font-size:13px!important;border-radius:8px!important;background-position:8px center!important;background-size:14px 14px!important}

  }

/* 团队编辑 - 成本核算折叠 & 费用两列（桌面端） */
.team-fee-grid-m{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:14px}

.team-fee-grid-m .team-fee-half{display:flex;flex-direction:column;align-items:stretch;margin-bottom:0;gap:4px}

.team-fee-grid-m .team-fee-half label{min-width:0;width:auto;font-size:12px;margin-bottom:0}

.team-fee-grid-m .team-fee-half input{width:100%;box-sizing:border-box;padding:8px 10px;font-size:14px}

.team-fee-insurance{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-bottom:14px}

.team-cost-details{border:1px solid #e8e8e8;border-radius:10px;margin:12px 0;background:#fafafa}

.team-cost-summary{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer;font-weight:600;color:#333;list-style:none;gap:10px}

.team-cost-summary::-webkit-details-marker{display:none}

.team-cost-left{display:flex;align-items:center;gap:8px;min-width:0}

.team-cost-toggle{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;color:#667eea;font-size:14px;line-height:1;flex-shrink:0;transition:transform .2s ease}

.team-cost-toggle::before{content:'▶'}

.team-cost-details[open] .team-cost-toggle{transform:rotate(90deg)}

.team-cost-hint{font-size:13px;color:#e67e22;font-weight:600;flex-shrink:0}

.team-cost-body{padding:0 14px 14px}

.team-exguide-block{border:1px solid #e8e8e8;border-radius:10px;margin:12px 0;padding:12px 14px;background:#fafcff}

.team-exguide-title{font-size:14px;font-weight:600;color:#333;margin-bottom:10px}

.team-exguide-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:10px}

.team-exguide-grid .er{margin-bottom:0}

.team-exguide-grid label{font-size:12px}

.team-exguide-traits{margin-bottom:0}

.team-exguide-traits label{font-size:12px}

.team-exguide-traits textarea{width:100%;box-sizing:border-box;border:1px solid #ddd;border-radius:6px;padding:8px;font-size:14px;resize:vertical;min-height:56px}

.team-exguide-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}

.team-exguide-head .team-exguide-title{margin-bottom:0}

.half-star-rating,.hs-star-wrap{display:inline-flex;align-items:center;gap:2px}

.hs-star{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;cursor:pointer;line-height:1}

.hs-empty{color:#d1d5db;font-size:22px;line-height:1}

.hs-fill{position:absolute;left:0;top:50%;transform:translateY(-50%);overflow:hidden;color:#f59e0b;font-size:22px;line-height:1;white-space:nowrap}

.hs-num{margin-left:6px;font-size:13px;color:#64748b;font-weight:600}

/* 系统设置 p7 */
.p7-page{padding:16px 16px 32px;background:linear-gradient(180deg,#f8f9ff 0%,#f5f6fa 140px,#f5f6fa 100%);min-height:calc(100vh - 120px);box-sizing:border-box}

.p7-head{margin-bottom:16px}

.p7-title{margin:0;font-size:22px;font-weight:700;color:#1f2937;letter-spacing:.01em}

.p7-sub{margin:6px 0 0;font-size:13px;color:#6b7280}

.p7-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;padding:4px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 2px 8px rgba(15,23,42,.04)}

.p7-tab{flex:1;min-width:72px;padding:10px 14px;border:none;border-radius:10px;background:transparent;color:#64748b;font-size:14px;font-weight:500;cursor:pointer;transition:all .18s;white-space:nowrap}

.p7-tab:hover{color:#4338ca;background:#f5f3ff}

.p7-tab.active{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 12px rgba(102,126,234,.28)}

.p7-panel{display:none;animation:p7FadeIn .22s ease}

.p7-panel.active{display:block}

@keyframes p7FadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.p7-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}

.p7-action-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;border-radius:16px;color:#fff;box-shadow:0 8px 24px rgba(15,23,42,.12);min-height:96px}

.p7-action-card--purple{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}

.p7-action-card--green{background:linear-gradient(135deg,#11998e 0%,#38ef7d 100%)}

.p7-action-card h3{margin:0 0 6px;font-size:17px;font-weight:600}

.p7-action-card p{margin:0;font-size:13px;opacity:.92;line-height:1.5}

.p7-action-card .btn{flex-shrink:0;background:#fff;border:none;padding:10px 18px;font-size:13px;font-weight:600;border-radius:10px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.08)}

.p7-action-card--purple .btn{color:#667eea}

.p7-action-card--green .btn{color:#11998e}

.p7-card{background:#fff;border:1px solid #eef0f6;border-radius:16px;padding:20px 22px;margin-bottom:16px;box-shadow:0 4px 16px rgba(15,23,42,.04)}

.p7-card:last-child{margin-bottom:0}

.p7-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}

.p7-card-title{margin:0;font-size:16px;font-weight:600;color:#1f2937;display:flex;align-items:center;gap:8px}

.p7-card-desc{margin:0 0 16px;font-size:13px;color:#6b7280;line-height:1.65}

.p7-card-section{margin-bottom:18px;padding-bottom:18px;border-bottom:1px solid #f1f5f9}

.p7-card-section:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}

.p7-card-section-title{font-size:12px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px}

.p7-input{width:100%;box-sizing:border-box;padding:12px 16px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;font-size:14px;line-height:1.5;color:#1e293b;font-family:inherit;transition:border-color .18s,box-shadow .18s,background .18s}

.p7-input:focus{border-color:#667eea;background:#fff;outline:none;box-shadow:0 0 0 3px rgba(102,126,234,.12)}

.p7-input::placeholder{color:#94a3b8}

textarea.p7-input{min-height:148px;resize:vertical}

.p7-switch-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #f8fafc}

.p7-switch-row:last-child{border-bottom:none;padding-bottom:0}

.p7-switch-label{display:block;font-size:14px;font-weight:500;color:#334155}

.p7-switch-desc{display:block;font-size:12px;color:#94a3b8;margin-top:3px;line-height:1.45}

.p7-font-size-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}

.p7-font-chip{flex:1;min-width:72px;padding:12px 10px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;font-size:15px;font-weight:600;color:#64748b;cursor:pointer;transition:all .15s;text-align:center}

.p7-font-chip:hover{border-color:#c7d2fe;background:#f8fafc}

.p7-font-chip.active{border-color:#667eea;background:#eef2ff;color:#4338ca;box-shadow:0 2px 8px rgba(102,126,234,.15)}

.p7-font-preview{margin-top:12px;padding:14px 16px;border-radius:10px;background:#f8fafc;border:1px solid #e2e8f0;line-height:1.55;color:#334155;font-size:calc(15px * var(--m-font-scale, 1.0625))}

.p7-font-preview-title{font-weight:600;margin-bottom:4px;color:#1f2937}

.p7-switch{position:relative;display:inline-block;width:46px;height:26px;flex-shrink:0}

.p7-switch input{opacity:0;width:0;height:0;position:absolute}

.p7-switch-slider{position:absolute;cursor:pointer;inset:0;background:#cbd5e1;border-radius:999px;transition:.2s}

.p7-switch-slider:before{content:'';position:absolute;height:20px;width:20px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.15)}

.p7-switch input:checked+.p7-switch-slider{background:linear-gradient(135deg,#667eea,#764ba2)}

.p7-switch input:checked+.p7-switch-slider:before{transform:translateX(20px)}

.p7-hint{font-size:12px;color:#64748b;margin-top:14px;padding:10px 12px;background:#f8fafc;border-radius:10px;line-height:1.55}

.p7-btn-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}

.p7-btn-row .btn{flex:1;min-width:120px;font-size:13px;padding:10px 14px;border-radius:10px}

.p7-backup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}

.p7-backup-list{font-size:12px;color:#64748b;margin-bottom:14px;min-height:48px;padding:12px;background:#f8fafc;border-radius:10px;border:1px dashed #e2e8f0;line-height:1.6}

.p7-backup-note{font-size:11px;color:#94a3b8;margin-top:10px;line-height:1.5}

.p7-maint-card{border-left:4px solid #f59e0b}

.p7-maint-badge{display:inline-block;font-size:11px;font-weight:600;color:#b45309;background:#fef3c7;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}

.p7-lvph-busy .btn,.p7-lvph-busy .p7-lvph-btn{opacity:.55;pointer-events:none}

.p7-lvph{display:flex;flex-direction:column;gap:16px}

.p7-lvph-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px;border-radius:20px;background:linear-gradient(135deg,#667eea 0%,#764ba2 55%,#5b21b6 100%);color:#fff;box-shadow:0 12px 32px rgba(102,126,234,.28)}

.p7-lvph-hero-text h3{margin:0 0 6px;font-size:18px;font-weight:700;letter-spacing:.01em}

.p7-lvph-hero-text p{margin:0;font-size:13px;opacity:.92;line-height:1.55;max-width:520px}

.p7-lvph-status{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:7px 14px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(255,255,255,.18);color:#fff;border:1px solid rgba(255,255,255,.28);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}

.p7-lvph-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}

.p7-lvph-section{background:#fff;border:1px solid #eef0f6;border-radius:18px;padding:18px 20px;box-shadow:0 4px 18px rgba(15,23,42,.04)}

.p7-lvph-section--wide{grid-column:1/-1}

.p7-lvph-section-head{margin:0 0 14px;font-size:13px;font-weight:600;color:#334155;display:flex;align-items:center;gap:8px}

.p7-lvph-fields{display:grid;gap:14px}

.p7-lvph-fields-2{grid-template-columns:repeat(2,minmax(0,1fr))}

.p7-lvph-field label{display:block;font-size:12px;font-weight:500;color:#64748b;margin-bottom:6px}

.p7-lvph-field .inp{width:100%;box-sizing:border-box;padding:10px 14px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;font-size:13px;color:#1e293b;transition:border-color .18s,box-shadow .18s,background .18s}

.p7-lvph-field .inp:focus{border-color:#667eea;background:#fff;outline:none;box-shadow:0 0 0 3px rgba(102,126,234,.12)}

.p7-lvph-field .inp::placeholder{color:#94a3b8}

.p7-lvph-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-top:14px;border-radius:14px;background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px solid #e8edf3}

.p7-lvph-switch-copy{display:flex;flex-direction:column;gap:3px}

.p7-lvph-switch-title{font-size:13px;font-weight:600;color:#334155}

.p7-lvph-switch-desc{font-size:12px;color:#94a3b8;line-height:1.45}

.p7-lvph-section--captcha .p7-lvph-captcha-row{align-items:flex-start}

.p7-lvph-section--captcha .p7-lvph-vcode{width:100%!important;max-width:160px}

.p7-lvph-captcha-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#fafbff,#f4f6fb);border:1px dashed #dbeafe}

.p7-lvph-captcha-img{height:44px;padding:4px 8px;border-radius:12px;border:1px solid #e2e8f0;background:#fff;cursor:pointer;box-shadow:0 2px 8px rgba(15,23,42,.06);transition:transform .15s,box-shadow .15s}

.p7-lvph-captcha-img:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,23,42,.1)}

.p7-lvph-vcode{width:108px!important;box-sizing:border-box;padding:10px 14px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;font-size:13px;color:#1e293b;text-align:center;letter-spacing:4px;font-weight:600;transition:border-color .18s,box-shadow .18s,background .18s}

.p7-lvph-vcode:focus{border-color:#667eea;background:#fff;outline:none;box-shadow:0 0 0 3px rgba(102,126,234,.12)}

.p7-lvph-vcode::placeholder{color:#94a3b8;letter-spacing:0;font-weight:400}

.p7-lvph-actions{display:flex;flex-direction:column;gap:14px}

.p7-lvph-action-group{display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;background:#f8fafc;border:1px solid #eef2f7}

.p7-lvph-action-group--primary{background:linear-gradient(180deg,#f5f3ff,#eef2ff);border-color:#e0e7ff}

.p7-lvph-action-label{font-size:11px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.06em}

.p7-lvph-btn-row{display:flex;gap:10px;flex-wrap:wrap}

.p7-lvph-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:1;min-width:120px;padding:10px 14px;border:none;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s,opacity .15s;box-shadow:0 2px 8px rgba(15,23,42,.08)}

.p7-lvph-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(15,23,42,.12)}

.p7-lvph-btn:active{transform:translateY(0)}

.p7-lvph-btn--ghost{background:#fff;color:#4338ca;border:1px solid #c7d2fe}

.p7-lvph-btn--amber{background:linear-gradient(135deg,#f59e0b,#f97316);color:#fff}

.p7-lvph-btn--indigo{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}

.p7-lvph-btn--green{background:linear-gradient(135deg,#059669,#10b981);color:#fff}

.p7-lvph-btn--soft{background:#fff;color:#475569;border:1px solid #e2e8f0;box-shadow:none}

.p7-lvph-btn--soft:hover{box-shadow:0 4px 12px rgba(15,23,42,.08)}

.p7-lvph-log{margin-top:0;white-space:pre-wrap;max-height:180px;overflow-y:auto;padding:14px 16px;border-radius:14px;background:#0f172a;color:#cbd5e1;font-family:Consolas,"SF Mono",Menlo,monospace;font-size:12px;line-height:1.6;border:1px solid #1e293b;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}

.p7-lvph-last{font-size:12px;color:#64748b;line-height:1.55;padding:10px 14px;border-radius:12px;background:#f8fafc;border:1px solid #eef2f7}

.p7-lvph-progress-wrap{display:none;margin:0;padding:16px 18px;background:linear-gradient(180deg,#fafbff,#f8fafc);border:1px solid #e0e7ff;border-radius:16px;box-shadow:0 4px 14px rgba(102,126,234,.08)}

.p7-lvph-progress-wrap.is-active{display:block}

.p7-lvph-progress-track{height:10px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-top:10px}

.p7-lvph-progress-bar{height:100%;width:0;background:linear-gradient(90deg,#667eea,#059669);border-radius:999px;transition:width .35s ease}

.p7-lvph-progress-wrap.is-importing .p7-lvph-progress-bar{background-size:200% 100%;animation:p7LvphImportPulse 1.8s ease-in-out infinite}

@keyframes p7LvphImportPulse{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}

.p7-lvph-progress-label{font-size:13px;color:#475569;display:flex;justify-content:space-between;gap:8px;align-items:center}

.p7-lvph-progress-pct{font-weight:700;color:#4338ca;flex-shrink:0}

@media (max-width:768px){.p7-lvph-hero{flex-direction:column;align-items:stretch;padding:18px}

.p7-lvph-body{grid-template-columns:1fr}

.p7-lvph-fields-2{grid-template-columns:1fr}

.p7-lvph-btn-row{flex-direction:column}

.p7-lvph-btn{width:100%;min-width:0}

.p7-portal-hero{flex-direction:column;align-items:stretch;padding:18px}

.p7-portal-body{grid-template-columns:1fr}

.p7-portal-fields-2,.p7-portal-fields-3{grid-template-columns:1fr}

.p7-portal-section-head-row{flex-direction:column;align-items:stretch}

.p7-portal-head-actions{width:100%}

.p7-portal-head-actions .p7-portal-btn{flex:1;min-width:0}

}

.p7-portal{display:flex;flex-direction:column;gap:16px}

.p7-portal-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px;border-radius:20px;background:linear-gradient(135deg,#0ea5e9 0%,#6366f1 52%,#7c3aed 100%);color:#fff;box-shadow:0 12px 32px rgba(14,165,233,.24)}

.p7-portal-hero-text h3{margin:0 0 6px;font-size:18px;font-weight:700;letter-spacing:.01em}

.p7-portal-hero-text p{margin:0;font-size:13px;opacity:.92;line-height:1.55;max-width:560px}

.p7-portal-hero-tip{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:7px 14px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(255,255,255,.16);color:#fff;border:1px solid rgba(255,255,255,.24)}

.p7-portal-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}

.p7-portal-section{background:#fff;border:1px solid #eef0f6;border-radius:18px;padding:18px 20px;box-shadow:0 4px 18px rgba(15,23,42,.04)}

.p7-portal-section--wide{grid-column:1/-1}

.p7-portal-section-head{margin:0 0 14px;font-size:13px;font-weight:600;color:#334155;display:flex;align-items:center;gap:8px}

.p7-dev-badge{display:inline-block;font-size:11px;font-weight:600;color:#b45309;background:#fff7ed;border:1px solid #fde68a;border-radius:999px;padding:2px 8px;margin-left:2px;vertical-align:middle}

.p7-portal-section-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}

.p7-portal-section-head-row .p7-portal-section-head{margin:0}

.p7-portal-head-actions{display:flex;gap:8px;flex-wrap:wrap}

.p7-portal-fields{display:grid;gap:14px}

.p7-portal-fields-2{grid-template-columns:repeat(2,minmax(0,1fr))}

.p7-portal-fields-3{grid-template-columns:repeat(3,minmax(0,1fr))}

.p7-portal-field label{display:block;font-size:12px;font-weight:500;color:#64748b;margin-bottom:6px}

.p7-portal-field .inp,.p7-portal-field select,.p7-portal-field textarea{width:100%;box-sizing:border-box;padding:10px 14px;border-radius:12px;border:1px solid #e2e8f0;background:#f8fafc;font-size:13px;color:#1e293b;transition:border-color .18s,box-shadow .18s,background .18s}

.p7-portal-field .inp:focus,.p7-portal-field select:focus,.p7-portal-field textarea:focus{border-color:#6366f1;background:#fff;outline:none;box-shadow:0 0 0 3px rgba(99,102,241,.12)}

.p7-portal-field textarea{resize:vertical;min-height:96px;line-height:1.6}

.p7-portal-qr-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 16px;border-radius:14px;background:linear-gradient(180deg,#fafbff,#f4f6fb);border:1px dashed #dbeafe;margin-bottom:14px}

.p7-portal-qr-preview{width:88px;height:88px;object-fit:contain;border-radius:12px;border:1px solid #e2e8f0;background:#fff;padding:6px;box-shadow:0 2px 8px rgba(15,23,42,.06)}

.p7-portal-switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-bottom:14px;border-radius:14px;background:linear-gradient(180deg,#f8fafc,#f1f5f9);border:1px solid #e8edf3}

.p7-portal-switch-copy{display:flex;flex-direction:column;gap:3px}

.p7-portal-switch-title{font-size:13px;font-weight:600;color:#334155}

.p7-portal-switch-desc{font-size:12px;color:#94a3b8;line-height:1.45}

.p7-portal-save-row{display:flex;justify-content:flex-end;margin-top:4px}

.p7-portal-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border:none;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s;box-shadow:0 2px 8px rgba(15,23,42,.08)}

.p7-portal-btn:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(15,23,42,.12)}

.p7-portal-btn--primary{background:linear-gradient(135deg,#6366f1,#7c3aed);color:#fff}

.p7-portal-btn--green{background:linear-gradient(135deg,#059669,#10b981);color:#fff}

.p7-portal-btn--soft{background:#fff;color:#475569;border:1px solid #e2e8f0;box-shadow:none}

.p7-portal-btn--soft:hover{box-shadow:0 4px 12px rgba(15,23,42,.08)}

.p7-portal-btn--danger{background:#fff;color:#dc2626;border:1px solid #fecaca}

.p7-portal-btn--sm{padding:6px 12px;font-size:12px;border-radius:10px}

.p7-portal-form{margin-top:16px;padding:18px;border-radius:16px;background:linear-gradient(180deg,#fafbff,#f8fafc);border:1px solid #e0e7ff}

.p7-portal-form-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

.p7-portal-meta-row{display:flex;gap:14px;flex-wrap:wrap;margin:12px 0}

.p7-portal-meta-row label{font-size:13px;color:#475569;display:inline-flex;align-items:center;gap:6px}

.p7-portal-meta-row input[type=number],.p7-portal-meta-row input[type=date]{padding:6px 10px;border-radius:10px;border:1px solid #e2e8f0;background:#fff;font-size:13px}

.p7-portal-cover-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}

.p7-portal-cover-preview{width:72px;height:72px;object-fit:cover;border-radius:12px;border:1px solid #e2e8f0;background:#fff}

.p7-portal-list-empty{color:#94a3b8;font-size:13px;padding:16px 12px;text-align:center;border-radius:12px;background:#f8fafc;border:1px dashed #e2e8f0}

.pp-bulletin-item{border:1px solid #eef0f6;border-radius:14px;padding:14px 16px;margin-bottom:12px;background:#fff;box-shadow:0 2px 10px rgba(15,23,42,.04);transition:border-color .18s,box-shadow .18s}

.pp-bulletin-item:hover{border-color:#c7d2fe;box-shadow:0 6px 18px rgba(99,102,241,.08)}

.pp-bulletin-item-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}

.pp-bulletin-item-main{flex:1;min-width:0}

.pp-bulletin-item-title{font-weight:600;font-size:14px;color:#1e293b;line-height:1.45}

.pp-bulletin-item-summary{font-size:12px;color:#64748b;margin-top:4px;line-height:1.55}

.pp-bulletin-item-meta{font-size:11px;color:#94a3b8;margin-top:6px}

.pp-bulletin-item-cover{width:64px;height:64px;object-fit:cover;border-radius:10px;flex-shrink:0;border:1px solid #e2e8f0}

.pp-bulletin-item-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}

.ls-banner{padding:10px 12px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;font-size:12px;color:#1e40af;line-height:1.55;margin-bottom:12px}

.ls-list{display:flex;flex-direction:column;gap:10px}

.ls-item{border:1px solid #eef0f6;border-radius:12px;padding:12px 14px;background:#fafbff}

.ls-item-title{font-weight:600;font-size:14px;color:#1e293b}

.ls-item-meta{font-size:12px;color:#64748b;margin-top:4px}

.ls-item-summary{font-size:12px;color:#475569;margin-top:6px;line-height:1.5}

.ls-item-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}

.ls-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;background:#eef2ff;color:#4338ca;margin-left:6px}

.ls-tag-demo{background:#fef3c7;color:#92400e}

.ls-empty{font-size:13px;color:#64748b;padding:16px 0}

.pp-status-published{color:#059669;font-weight:600}

.pp-status-draft{color:#d97706;font-weight:600}

.pp-status-archived{color:#9ca3af;font-weight:600}

.p7-portal-upload-btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;background:#fff;color:#4338ca;border:1px solid #c7d2fe}

.p7-portal-upload-btn input{display:none}

.p7-log-wrap{max-height:320px;overflow:auto;border:1px solid #eef0f6;border-radius:12px}

.p7-log-table{width:100%;border-collapse:collapse;font-size:12px}

.p7-log-table th{padding:10px 12px;text-align:left;background:#f8fafc;color:#64748b;font-weight:600;position:sticky;top:0;z-index:1}

.p7-log-table td{padding:9px 12px;border-top:1px solid #f1f5f9;color:#475569;vertical-align:top}

.p7-log-table tr:hover td{background:#fafbff}

.p7-portal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:14px}

.p7-portal-stat{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px}

.p7-portal-stat-val{font-size:22px;font-weight:700;color:#1e293b;line-height:1.2}

.p7-portal-stat-label{font-size:12px;color:#64748b;margin-top:4px}

.p7-portal-top-list{margin:0 0 14px;padding:0;list-style:none}

.p7-portal-top-list li{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid #f1f5f9;font-size:13px;color:#475569}

.p7-portal-top-list li:last-child{border-bottom:none}

.p7-portal-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}

.p7-portal-filter select{padding:6px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;background:#fff}

.p7-log-pager{margin-top:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}

.p7-portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}

.p7-portal-col h4{margin:0 0 12px;font-size:15px;color:#1f2937}

.p7-portal-col label{font-size:12px;color:#64748b;display:block;margin-bottom:4px}

.p7-portal-col .inp{width:100%;box-sizing:border-box;margin-bottom:10px;padding:9px 12px;border-radius:10px;border:1px solid #e5e7eb;font-size:13px}

.p7-owner-only{display:none!important}

.p7-owner-only.is-visible{display:flex!important}

.p7-card.p7-owner-only.is-visible{display:block!important}

.p7-sub-hint{display:block}

.p7-sub-hint.is-hidden{display:none!important}

.drawer-owner-only{display:none!important}

.drawer-owner-only.is-visible{display:block!important}

/* 行程编辑：住宿/餐饮详情（对齐原生 App） */
.it-expand-block{margin-top:6px;padding-top:6px;border-top:1px dashed #e5e7eb}

.it-expand-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}

.it-expand-label{font-size:11px;color:#888;width:32px;flex-shrink:0}

.it-expand-btn{font-size:11px!important;padding:4px 8px!important;white-space:nowrap}

.it-detail-panel{margin-top:6px;padding:8px;background:#fff;border:1px solid #e8e8e8;border-radius:6px}

.it-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}

.it-detail-grid textarea,.it-detail-grid input{width:100%;padding:4px 8px;border:1px solid #e0e0e0;border-radius:4px;font-size:12px;box-sizing:border-box}

.it-detail-grid textarea{grid-column:1/-1;resize:vertical}

@media(max-width:640px){.it-detail-grid{grid-template-columns:1fr}

}

#gen-modal{align-items:flex-start;padding:20px 12px;overflow-y:auto;box-sizing:border-box}

#gen-modal-box.modal-wide{max-width:980px!important;width:96%!important;max-height:none!important}

#gen-modal-box .account-mgmt-table-wrap{overflow-x:auto;max-width:100%;margin-bottom:12px}

#gen-modal-box .account-mgmt-table{width:100%;min-width:0;font-size:13px;border-collapse:collapse;table-layout:fixed}

#gen-modal-box .account-mgmt-table th,#gen-modal-box .account-mgmt-table td{padding:8px 10px;word-break:break-word;vertical-align:middle}

#gen-modal-box .account-mgmt-table th{background:#f5f5f5;text-align:left;font-weight:600}

#gen-modal-box .account-mgmt-table th.center,#gen-modal-box .account-mgmt-table td.center{text-align:center}

#gen-modal-box{padding:20px 22px!important;box-sizing:border-box}

#gen-modal-box .cd{padding:0;background:transparent;box-shadow:none;border:none;margin:0}

#gen-modal-box h3{margin:0 0 16px!important;font-size:17px;font-weight:600;color:#1f2937;padding-bottom:12px;border-bottom:1px solid #eef0f6}

#gen-modal-box .er{margin-bottom:14px}

#gen-modal-box .er label{display:block;font-size:13px;color:#64748b;margin-bottom:6px;font-weight:500}

#gen-modal-box .er input,#gen-modal-box .er textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #e2e8f0;border-radius:10px;font-size:14px;background:#fff;font-family:inherit;line-height:1.45}

#gen-modal-box .er textarea{min-height:72px;resize:vertical}

#gen-modal-box .btn-row{display:flex;gap:10px;margin-top:16px}

#gen-modal-box .btn-row .btn{flex:1}

.wt-team-picker-hint{font-size:12px;color:#64748b;margin:-8px 0 12px;line-height:1.5}

.wt-team-list{max-height:min(52vh,420px);overflow-y:auto;margin:0 -2px;padding:0 2px}

.wt-team-item{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 14px;border:1px solid #e8ecf4;border-radius:12px;margin-bottom:8px;cursor:pointer;background:#fff;transition:border-color .15s,background .15s,box-shadow .15s;text-align:left;width:100%}

.wt-team-item:hover{border-color:#c7d2fe;background:#f8faff;box-shadow:0 4px 12px rgba(102,126,234,.08)}

.wt-team-item-main{flex:1;min-width:0}

.wt-team-item-name{font-size:14px;font-weight:600;color:#1f2937;line-height:1.35;word-break:break-all}

.wt-team-item-meta{font-size:12px;color:#64748b;margin-top:4px;line-height:1.45}

.wt-team-badges{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}

.wt-team-badge{font-size:11px;padding:2px 8px;border-radius:999px;white-space:nowrap}

.wt-team-badge.upcoming{background:#e0f2fe;color:#0369a1}

.wt-team-badge.ongoing{background:#fff3e0;color:#e65100}

.wt-team-badge.no-itin{background:#fef2f2;color:#b91c1c}

.partner-rating-row{font-size:12px;color:#666;display:flex;align-items:center;gap:6px;flex-wrap:wrap}

.partner-rating-stars{color:#f5a623;letter-spacing:1px}

.partner-rating-num{color:#e67e22;font-weight:600}

.partner-rating-cnt{color:#999}

.partner-rating-empty{color:#bbb;font-size:12px}

.team-route-rating{margin:8px 0 4px;padding:10px 12px;background:#fffbf5;border:1px solid #fdebd0;border-radius:8px;font-size:12px;color:#666}

.team-route-rating-dims{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:6px;font-size:11px;color:#888}

.member-review-section{margin-top:12px;padding:12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}

.member-review-compliance{margin-top:8px;padding:8px;background:#fffbeb;border:1px solid #fde68a;border-radius:6px;font-size:11px;color:#b45309;line-height:1.5}

.member-review-title{font-size:13px;font-weight:600;color:#334155;margin-bottom:8px}

.member-review-dims{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin-bottom:8px}

.member-review-dim{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#64748b}

.member-review-stars{color:#f5a623;letter-spacing:1px;font-size:13px}

.member-review-overall{font-size:13px;color:#475569;margin-bottom:6px}

.member-review-text{font-size:12px;color:#64748b;line-height:1.5;white-space:pre-wrap;margin-top:6px;padding-top:6px;border-top:1px dashed #e2e8f0}

.member-review-empty{font-size:12px;color:#94a3b8}

.team-member-review-badge{font-size:11px;color:#f5a623;margin-left:4px}

/* 团队管理 - 筛选行（电脑端单行） */
@media (min-width: 769px){
#p1 .team-filter-bar{
  display:flex;
  align-items:center;
  margin-bottom:12px;
  gap:8px;
  padding:8px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:12px;
  overflow:visible;
  flex-wrap:nowrap;
}
#p1 .team-filter-inner{
  display:flex;
  flex:1;
  min-width:0;
  flex-wrap:nowrap;
  gap:6px;
  overflow-x:auto;
  align-items:center;
}
#p1 .team-filter-inner .tag{
  padding:8px 14px;
  border-radius:8px;
  font-size:13px;
  font-weight:500;
  background:#fff;
  border:1px solid #e2e8f0;
  color:#64748b;
  box-shadow:none;
}
#p1 .team-filter-inner .tag:hover{
  border-color:#cbd5e1;
  background:#fff;
  opacity:1;
}
#p1 .team-filter-inner .tag.on{
  background:#1e3a5f!important;
  border-color:#1e3a5f!important;
  color:#fff!important;
  box-shadow:0 2px 8px rgba(30,58,95,0.18)!important;
}
#p1 .team-filter-inner .tag[data-t="国内"].on{background:#6366f1!important;border-color:#6366f1!important}
#p1 .team-filter-inner .tag[data-t="周边"].on{background:#10b981!important;border-color:#10b981!important}
#p1 .team-filter-inner .tag[data-t="出境"].on{background:#f59e0b!important;border-color:#f59e0b!important}
#p1 .team-page-toolbar input#ts,
#p1 .team-page-toolbar select#team_year_filter{
  border:1px solid #e2e8f0;
  border-radius:10px;
  background:#fff;
}
#p1 .team-search-wrap{
  flex:1;
  min-width:0;
  display:flex;
  align-items:stretch;
  gap:6px;
}
#p1 .team-search-wrap input#ts{
  flex:1;
  min-width:0;
  padding:10px 12px;
  border:1px solid #e2e8f0;
  border-radius:10px;
  font-size:13px;
  outline:none;
  background:#fff;
}
#p1 .team-search-btn{
  flex-shrink:0;
  padding:0 12px;
  font-size:13px;
  font-weight:500;
  border:1px solid #6366f1;
  border-radius:10px;
  background:#6366f1;
  color:#fff;
  cursor:pointer;
  white-space:nowrap;
}
#p1 .team-search-btn:hover{background:#4f46e5;border-color:#4f46e5}
#p1 .team-page-toolbar select#team_year_filter{min-width:108px}
}

.page-add-btn{flex-shrink:0;width:34px;height:34px;padding:0;border-radius:8px;font-size:22px;font-weight:600;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s}

.page-add-btn-team{border:1px solid #6366f1;background:#eef2ff;color:#6366f1}

.page-add-btn-team:hover{background:#6366f1;color:#fff}

.page-add-btn-ev{border:1px solid #f59e0b;background:#fffbeb;color:#d97706}

.page-add-btn-ev:hover{background:#f59e0b;color:#fff}

#ov_trip_entry .trip-entry-modal-bd{max-width:780px;width:calc(100% - 24px);max-height:92vh;overflow-y:auto;padding:0}

#ov_trip_entry .trip-entry-modal-body{padding:12px 16px 16px}

#ov_trip_entry .trip-members-preview{margin-top:12px;padding-top:12px;border-top:1px solid #e2e8f0}

#ov_trip_entry .trip-members-preview-hd{font-size:13px;font-weight:600;color:#475569;margin-bottom:8px}

@media (min-width:769px){html:not(.force-mobile) #ov_trip_entry .trip-entry-modal-bd{max-width:860px}

}

/* 客户录入页 - 桌面双栏卡片 + 纵向表单（手机端保持原 .er 横排） */
@media (min-width: 769px){
  html:not(.force-mobile) #p2 .entry-page, html:not(.force-mobile) .entry-form-scope .entry-page {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
  }
  html:not(.force-mobile) #p2 .entry-grid, html:not(.force-mobile) .entry-form-scope .entry-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    width: 100%;
  }
  html:not(.force-mobile) #p2 .entry-card, html:not(.force-mobile) .entry-form-scope .entry-card {
    margin-bottom: 0;
    padding: 16px 18px;
    min-width: 0;
    height: 100%;
    box-sizing: border-box;
  }
  html:not(.force-mobile) #p2 .entry-card-trip, html:not(.force-mobile) .entry-form-scope .entry-card-trip {
    border-top: 4px solid #6366f1;
  }
  html:not(.force-mobile) #p2 .entry-card-exhibition, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition {
    border-top: 4px solid #f59e0b;
  }
  html:not(.force-mobile) #p2 .entry-card-bulk, html:not(.force-mobile) .entry-form-scope .entry-card-bulk {
    border-top: 4px solid #0d9488;
  }
  html:not(.force-mobile) #p2 .entry-card-profile, html:not(.force-mobile) .entry-form-scope .entry-card-profile {
    border-top: 4px solid #059669;
  }
  html:not(.force-mobile) #p2 .entry-card-head, html:not(.force-mobile) .entry-form-scope .entry-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 16px;
  }
  html:not(.force-mobile) #p2 .entry-card-head h3, html:not(.force-mobile) .entry-form-scope .entry-card-head h3 {
    margin: 0;
  }
  html:not(.force-mobile) #p2 .entry-stat, html:not(.force-mobile) .entry-form-scope .entry-stat {
    font-size: 13px;
    color: #64748b;
    white-space: nowrap;
  }
  html:not(.force-mobile) #p2 .entry-stat strong, html:not(.force-mobile) .entry-form-scope .entry-stat strong {
    color: #6366f1;
    font-size: 17px;
  }
  html:not(.force-mobile) #p2 .entry-field-grid, html:not(.force-mobile) .entry-form-scope .entry-field-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 16px;
    margin-bottom: 16px;
  }
  html:not(.force-mobile) #p2 .entry-field-grid .er, html:not(.force-mobile) .entry-form-scope .entry-field-grid .er,
  html:not(.force-mobile) #p2 .entry-card-exhibition .er, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition .er {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    margin-bottom: 0;
    gap: 6px;
  }
  html:not(.force-mobile) #p2 .entry-field-grid .er label, html:not(.force-mobile) .entry-form-scope .entry-field-grid .er label,
  html:not(.force-mobile) #p2 .entry-card-exhibition .er, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition .er > label {
    min-width: 0;
    width: auto;
    font-weight: 500;
    color: #475569;
  }
  html:not(.force-mobile) #p2 .entry-field-grid .er input, html:not(.force-mobile) .entry-form-scope .entry-field-grid .er input,
  html:not(.force-mobile) #p2 .entry-field-grid .er select, html:not(.force-mobile) .entry-form-scope .entry-field-grid .er select,
  html:not(.force-mobile) #p2 .entry-card-exhibition .er input, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition .er input,
  html:not(.force-mobile) #p2 .entry-card-exhibition .er select, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition .er select {
    flex: none;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
  }
  html:not(.force-mobile) #p2 .entry-field-full, html:not(.force-mobile) .entry-form-scope .entry-field-full {
    grid-column: 1 / -1;
  }
  html:not(.force-mobile) #p2 .er-tt-type .tt-type-opts, html:not(.force-mobile) .entry-form-scope .er-tt-type .tt-type-opts,
  html:not(.force-mobile) #p2 .entry-segment, html:not(.force-mobile) .entry-form-scope .entry-segment {
    padding-right: 0;
    justify-content: flex-start;
  }
  html:not(.force-mobile) #p2 .entry-segment, html:not(.force-mobile) .entry-form-scope .entry-segment {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    width: 100%;
  }
  html:not(.force-mobile) #p2 .entry-segment-item, html:not(.force-mobile) .entry-form-scope .entry-segment-item {
    flex: 1;
    min-width: 72px;
    position: relative;
    cursor: pointer;
    margin: 0;
    display: block;
  }
  html:not(.force-mobile) #p2 .entry-segment-item input, html:not(.force-mobile) .entry-form-scope .entry-segment-item input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
  }
  html:not(.force-mobile) #p2 .entry-segment-item span, html:not(.force-mobile) .entry-form-scope .entry-segment-item span {
    display: block;
    text-align: center;
    padding: 8px 10px;
    border-radius: 8px;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    font-size: 13px;
    font-weight: 500;
    color: #64748b;
    transition: border-color 0.15s, background 0.15s, color 0.15s, box-shadow 0.15s;
    user-select: none;
  }
  html:not(.force-mobile) #p2 .entry-segment-item, html:not(.force-mobile) .entry-form-scope .entry-segment-item:hover span {
    border-color: #cbd5e1;
    background: #fff;
  }
  html:not(.force-mobile) #p2 .entry-card-trip .entry-segment-item input, html:not(.force-mobile) .entry-form-scope .entry-card-trip .entry-segment-item input:checked + span {
    background: #6366f1;
    border-color: #6366f1;
    color: #fff;
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.22);
  }
  html:not(.force-mobile) #p2 .entry-card-exhibition .entry-segment-item input, html:not(.force-mobile) .entry-form-scope .entry-card-exhibition .entry-segment-item input:checked + span {
    background: #f59e0b;
    border-color: #f59e0b;
    color: #fff;
    box-shadow: 0 2px 8px rgba(245, 158, 11, 0.22);
  }
  html:not(.force-mobile) #p2 .er-mem, html:not(.force-mobile) .entry-form-scope .er-mem {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    margin-bottom: 14px;
  }
  html:not(.force-mobile) #p2 .er-mem, html:not(.force-mobile) .entry-form-scope .er-mem > div:first-child {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    margin-bottom: 6px;
  }
  html:not(.force-mobile) #p2 .er-mem label, html:not(.force-mobile) .entry-form-scope .er-mem label {
    min-width: 0;
    margin-bottom: 0;
  }
  html:not(.force-mobile) #p2 .er-mem textarea, html:not(.force-mobile) .entry-form-scope .er-mem textarea {
    width: 100%;
    min-height: 150px;
  }
  html:not(.force-mobile) #p2 .entry-tool-grid, html:not(.force-mobile) .entry-form-scope .entry-tool-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 12px;
  }
  html:not(.force-mobile) #p2 .entry-tool-grid .btn-row, html:not(.force-mobile) .entry-form-scope .entry-tool-grid .btn-row {
    margin: 0;
  }
  html:not(.force-mobile) #p2 .entry-save-row, html:not(.force-mobile) .entry-form-scope .entry-save-row {
    margin-top: 8px;
    margin-bottom: 0;
  }
  html:not(.force-mobile) #p2 .entry-save-row .btn, html:not(.force-mobile) .entry-form-scope .entry-save-row .btn {
    width: 100%;
  }
  html:not(.force-mobile) #p2 .entry-ex-actions, html:not(.force-mobile) .entry-form-scope .entry-ex-actions {
    display: flex;
    gap: 10px;
    margin-top: 14px;
  }
  html:not(.force-mobile) #p2 .entry-ex-actions .btn-primary, html:not(.force-mobile) .entry-form-scope .entry-ex-actions .btn-primary {
    flex: 1;
  }
  html:not(.force-mobile) #p2 .entry-ex-hide-desktop, html:not(.force-mobile) .entry-form-scope .entry-ex-hide-desktop {
    display: none !important;
  }
  html:not(.force-mobile) #p2 #ex_add_row, html:not(.force-mobile) .entry-form-scope #ex_add_row {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    align-items: center;
  }
  html:not(.force-mobile) #p2 #ex_add_row input,
  html:not(.force-mobile) .entry-form-scope #ex_add_row input,
  html:not(.force-mobile) #p2 #ex_add_row button,
  html:not(.force-mobile) .entry-form-scope #ex_add_row button {
    width: 100% !important;
    min-width: 0 !important;
    flex: none !important;
  }
  html:not(.force-mobile) #p2 #ex_add_row button, html:not(.force-mobile) .entry-form-scope #ex_add_row button {
    grid-column: span 1;
  }
  html:not(.force-mobile) #p2 .entry-search-card {
    margin-bottom: 16px;
    padding: 18px 20px;
  }
  html:not(.force-mobile) #p2 .entry-search-card h3 {
    margin: 0 0 12px;
    font-size: 16px;
  }
  html:not(.force-mobile) #p2 .entry-search-results {
    max-height: 260px;
    overflow-y: auto;
    margin-top: 10px;
  }
  html:not(.force-mobile) #p2 .entry-search-results:empty {
    display: none;
    margin: 0;
  }
  html:not(.force-mobile) #p2 .entry-card-bulk .ebc-panel,
  html:not(.force-mobile) #p2 .entry-card-bulk .ebc-preview-table-wrap {
    max-width: none;
  }
  html:not(.force-mobile) #p2 .entry-profile-layout {
    display: flex;
    flex-direction: column;
    gap: 12px;
  }
  html:not(.force-mobile) #p2 .entry-profile-side {
    position: static;
    min-height: 200px;
    max-height: 360px;
  }
  html:not(.force-mobile) #p2 .entry-profile-main .entry-save-row {
    margin-top: 14px;
  }
  html:not(.force-mobile) #p2 .entry-profile-main .entry-save-row .btn {
    max-width: 100%;
  }
  html:not(.force-mobile) #p2 .entry-profile-side .profile-members-preview {
    margin-top: 0;
    padding-top: 0;
    border-top: none;
  }
  html:not(.force-mobile) #p2 .entry-profile-side-empty {
    display: block;
    color: #94a3b8;
    font-size: 13px;
    text-align: center;
    padding: 40px 16px;
    line-height: 1.7;
  }
  html:not(.force-mobile) #p2 .entry-profile-side.has-preview .entry-profile-side-empty {
    display: none;
  }
  html:not(.force-mobile) #p2 .entry-card-profile .entry-card-desc {
    margin-bottom: 12px;
  }
  html:not(.force-mobile) #p2 .entry-card-profile .er-mem textarea {
    min-height: 160px;
  }
  html:not(.force-mobile) #p2 .entry-card-bulk {
    padding: 18px 20px;
  }
}

/* 客户录入 - 团队类型 */
.er-tt-type .tt-type-opts{display:flex;flex:1;min-width:0;gap:10px;align-items:center;flex-wrap:wrap}

.entry-form-scope.entry-card-exhibition .entry-segment-item input:checked+span{background:#f59e0b;border-color:#f59e0b;color:#fff}

/* 会销详情 - 电脑端详情弹窗与报名表 */
@media (min-width:769px){
  #ov_ev_d.ov.on #ev_d_body{
    max-width:1140px!important;
    width:calc(100% - 48px)!important;
    padding:18px 22px 24px!important;
    box-sizing:border-box!important;
    top:20px!important;
    bottom:20px!important;
    max-height:none!important;
    height:auto!important;
    overflow-y:auto!important;
    overflow-x:hidden;
    margin-bottom:0!important;
    padding-bottom:24px!important;
    border-radius:16px!important;
    transform:translateX(-50%) translateY(0)!important;
  }
  .ev-table-scroll-desktop{
    overflow-x:auto;
    overflow-y:visible;
    max-height:none;
  }
}

html.force-mobile .team-fee-grid-m{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin-bottom:14px}

html.force-mobile .team-fee-grid-m .team-fee-half{display:flex;flex-direction:column;align-items:stretch;margin-bottom:0;gap:4px}

html.force-mobile .team-fee-grid-m .team-fee-half label{min-width:0;width:auto;font-size:12px;margin-bottom:0}

html.force-mobile .team-fee-grid-m .team-fee-half input{width:100%;box-sizing:border-box;padding:8px 10px;font-size:14px}

html.force-mobile .team-fee-insurance{display:flex;flex-direction:column;align-items:stretch;gap:6px;margin-bottom:14px}

html.force-mobile .team-fee-insurance label{min-width:0;width:auto;margin-bottom:0}

html.force-mobile .er-tt-type{align-items:center}

html.force-mobile .er-tt-type>label{min-width:4.2em;font-size:13px;flex-shrink:0}

html.force-mobile .er-tt-type .tt-type-opts{display:flex;flex:1;min-width:0;gap:4px 6px;flex-wrap:nowrap;justify-content:flex-start;padding-right:10px;box-sizing:border-box;margin-top:0!important}

html.force-mobile .er-tt-type .tt-type-opts label{font-size:12px;gap:2px;white-space:nowrap;flex:0 1 auto}

html.force-mobile #ov_t .team-btn-grid-m{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}

html.force-mobile #ov_t .team-btn-grid-m .team-btn-m{min-height:44px;height:44px;padding:6px 2px;font-size:12px;border:none;border-radius:8px;color:#fff;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.25;white-space:normal;box-sizing:border-box;width:100%;cursor:pointer;font-weight:500}

html.force-mobile #ov_t .team-btn-m-edit{background:#667eea}

html.force-mobile #ov_t .team-btn-m-add{background:#f59e0b}

html.force-mobile #ov_t .team-btn-m-badd{background:#3b82f6}

html.force-mobile #ov_t .team-btn-m-bedit{background:#0891b2}

html.force-mobile #ov_t .team-btn-m-itin{background:#ff9800}

html.force-mobile #ov_t .team-btn-m-excel{background:#10b981}

html.force-mobile #ov_t .team-btn-m-order{background:#8b5cf6}

html.force-mobile #ov_t .team-btn-m-del{background:#ef4444}

html.force-mobile #ov_t.ov.on .bd{overflow-y:auto!important;-webkit-overflow-scrolling:touch;margin-bottom:0!important;padding-bottom:calc(12px + env(safe-area-inset-bottom,12px))!important}

html.force-mobile #ov_t #tm_list{overflow:visible}

html.force-mobile #ov_t .team-detail-actions{padding:12px 12px calc(8px + env(safe-area-inset-bottom,8px))!important}

html.force-mobile #ov_t .team-btn-m{touch-action:manipulation}

.chart-modal-body .rfm-chart-container,.chart-modal-body .chart-with-legend{
  display: flex !important;
  flex-direction: row !important;
  align-items: flex-start;
  gap: 30px;
  padding: 20px;
}

.chart-modal-body
.chart-modal-body .rfm-legend{
  flex: 0 0 auto;
  width: 250px;
  padding: 15px;
  background: #f8f9fa;
  border-radius: 8px;
  font-size: 16px !important;
}

.chart-modal-body .rfm-legend h4{
  font-size: 18px !important;
  margin-bottom: 12px;
}

.chart-modal-body .rfm-legend-item{
  font-size: 15px !important;
  margin-bottom: 8px;
}

.chart-legend-wrap{display:flex;flex-wrap:wrap;gap:4px 8px;justify-content:center;max-width:160px;}

.chart-legend-item{display:flex;align-items:center;gap:3px;font-size:9px;color:#666;}

.chart-legend-item span{display:inline-block;width:8px;height:8px;border-radius:50%;}

/* 消费能力 左饼右文(各占一半)*/
.chart-spend-wrap{display:flex;align-items:center;gap:16px;padding:8px;cursor:pointer;flex:1;}

.chart-spend-pie-area{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:140px;}

.chart-spend-pie{width:140px;height:140px;border-radius:50%;cursor:pointer;transition:transform .2s;}

.chart-spend-pie:hover{transform:scale(1.05);}

.chart-spend-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;font-size:16px;font-weight:700;color:#1e3a5f;line-height:1.1;}

.chart-spend-center small{display:block;font-size:10px;color:#888;font-weight:400;}

.chart-spend-legend-area{flex:1;display:flex;flex-direction:column;gap:6px;font-size:12px;color:#555;padding-left:8px;}

.chart-spend-legend-area .chart-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;}

.chart-spend-legend-area .chart-legend-item span{width:10px;height:10px;border-radius:50%;flex-shrink:0;}

.chart-spend-legend-area .chart-legend-item em{font-style:normal;color:#555;font-weight:500;}

.chart-spend-legend-area .chart-legend-item b{margin-left:auto;font-weight:700;color:#1e3a5f;font-size:13px;}

/* 年龄横向柱状图 */
.chart-age-wrap{display:flex;flex-direction:column;gap:6px;padding:8px;cursor:pointer;flex:1;justify-content:center;}

.chart-age-row{display:grid;grid-template-columns:50px minmax(0,1fr) auto;align-items:center;gap:6px;}

.chart-age-label{font-size:12px;color:#555;width:50px;flex-shrink:0;text-align:right;font-weight:500;}

.chart-age-bar{min-width:0;height:16px;background:#f0f0f0;border-radius:8px;overflow:hidden;}

.chart-age-fill{height:100%;border-radius:8px;transition:width .4s;}

.chart-age-num{font-size:12px;color:#1e3a5f;font-weight:700;width:auto;min-width:58px;flex-shrink:0;text-align:right;white-space:nowrap;}

.chart-age-num small{font-size:10px;color:#999;font-weight:400;margin-left:2px;white-space:nowrap;}

/* 消费能力 左饼右文(各占一半)*/
/* ===== 全屏图表弹窗 ===== */
#chart-modal-overlay{display:none;position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.75);align-items:center;justify-content:center;padding:16px;}

.chart-modal-inner{background:#fff;border-radius:16px;width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3);}

.chart-modal-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #eee;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:16px 16px 0 0;}

.chart-modal-title{font-size:15px;font-weight:600;}

.chart-modal-close{background:rgba(255,255,255,.2);border:none;color:#fff;font-size:18px;width:28px;height:28px;border-radius:50%;cursor:pointer;line-height:1;}

.chart-modal-close:hover{background:rgba(255,255,255,.35);}

.chart-modal-body{flex:1;overflow-y:auto;padding:16px;}

.chart-modal-body .chart-legend-wrap{font-size:11px;max-width:100%;}

.chart-modal-body .chart-spend-pie{width:140px;height:140px;}

.chart-modal-body .chart-spend-center{font-size:20px;}

.chart-modal-body .chart-spend-legend{font-size:12px;grid-template-columns:1fr 1fr;}

/* ===== 图表弹窗放大样式 ===== */
.chart-modal-inner{background:#fff;border-radius:16px;width:96vw;max-width:1200px;height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.3);}

.chart-modal-body .chart-spend-pie{width:260px;height:260px!important;}

.chart-modal-body .chart-spend-center{font-size:28px!important;}

.chart-modal-body .chart-spend-legend-area{font-size:16px!important;gap:10px!important;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item{font-size:15px!important;gap:8px!important;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item b{font-size:16px!important;}

.chart-modal-body .chart-spend-legend-area .chart-legend-item span{width:14px;height:14px!important;}

.chart-modal-body .chart-age-wrap{padding:20px!important;}

.chart-modal-body .chart-age-row{gap:12px!important;margin-bottom:6px!important;}

.chart-modal-body .chart-age-label{font-size:16px!important;width:70px!important;}

.chart-modal-body .chart-age-bar{height:24px!important;border-radius:12px!important;}

.chart-modal-body .chart-age-num{font-size:16px!important;width:auto!important;min-width:80px!important;white-space:nowrap!important;}

.chart-modal-body .chart-freq-wrap{padding:20px!important;}

.chart-modal-body .chart-freq-row{gap:12px!important;margin-bottom:6px!important;}

.chart-modal-body .chart-freq-label{font-size:16px!important;width:70px!important;}

.chart-modal-body .chart-freq-bar{height:24px!important;border-radius:12px!important;}

.chart-modal-body .chart-freq-num{font-size:16px!important;width:70px!important;}

/* Mobile Preview / ?embed=mobile：强制使用手机端布局 */
html.force-mobile{
  --m-safe-top:min(env(safe-area-inset-top,0px),59px);
  --m-safe-bottom:min(env(safe-area-inset-bottom,0px),40px);
  --m-hd-bar:50px;
  --m-tab-bar:50px;
  --m-hd-h:calc(var(--m-hd-bar) + var(--m-safe-top));
  --m-tab-h:calc(var(--m-tab-bar) + var(--m-safe-bottom));
  --m-font-scale:1.0625;
}

html.force-mobile.m-font-small{--m-font-scale:0.875}

html.force-mobile.m-font-medium{--m-font-scale:1.0625}

html.force-mobile.m-font-large{--m-font-scale:1.1875}

html.force-mobile body.yt-modal-open .hd,html.force-mobile body.yt-modal-open .tab-bar{display:none!important}

html.force-mobile .hd,html.force-mobile .hd-title,html.force-mobile .hamburger-btn{font-size:16px!important}

html.force-mobile .hd{font-size:16px!important}

html.force-mobile .tab-item{font-size:11px!important}

html.force-mobile .rw{font-size:calc(14px * var(--m-font-scale,1.0625))!important}

html.force-mobile .nm{font-size:calc(14px * var(--m-font-scale,1.0625))!important}

html.force-mobile .dt{font-size:calc(13px * var(--m-font-scale,1.0625))!important}

html.force-mobile .cd h3:not(.ys-title-h3){font-size:calc(16px * var(--m-font-scale,1.0625))!important}

html.force-mobile .cd h3.ys-title-h3{font-size:18px!important}

html.force-mobile .btn{font-size:calc(14px * var(--m-font-scale,1.0625))}

html.force-mobile .btn-s{font-size:calc(12px * var(--m-font-scale,1.0625))}

html.force-mobile .tag{font-size:calc(11px * var(--m-font-scale,1.0625))}

html.force-mobile .inp,html.force-mobile input.inp,html.force-mobile select.inp,html.force-mobile textarea.inp{font-size:calc(14px * var(--m-font-scale,1.0625))}

html.force-mobile .er label{font-size:calc(13px * var(--m-font-scale,1.0625))}

html.force-mobile .nav-item{font-size:calc(11px * var(--m-font-scale,1.0625))}

html.force-mobile .drawer-item{font-size:calc(15px * var(--m-font-scale,1.0625))}

html.force-mobile .ov .tt{font-size:calc(16px * var(--m-font-scale,1.0625))}

html.force-mobile .em{font-size:calc(13px * var(--m-font-scale,1.0625))}

html.force-mobile .p7-tab{font-size:calc(13px * var(--m-font-scale,1.0625))}

html.force-mobile .p7-card-title{font-size:calc(16px * var(--m-font-scale,1.0625))}

html.force-mobile .p7-card-desc,html.force-mobile .p7-switch-desc{font-size:calc(13px * var(--m-font-scale,1.0625))}

html.force-mobile .p7-switch-label{font-size:calc(14px * var(--m-font-scale,1.0625))}

html.force-mobile .p7-font-chip{font-size:calc(15px * var(--m-font-scale,1.0625))}

html.force-mobile #ov_t .team-btn-grid-m .team-btn-m{font-size:calc(12px * var(--m-font-scale,1.0625))}

html.force-mobile body{display:block!important;margin-left:0!important}

html.force-mobile .sidebar{display:none!important}

html.force-mobile .hd{display:block!important}

html.force-mobile .tab-bar{display:flex!important}

html.force-mobile .hamburger-btn{display:inline-flex!important}

html.force-mobile .main-content{margin-left:0!important;padding:0!important;height:100dvh!important;overflow:hidden!important;box-sizing:border-box!important}

html.force-mobile #p-body{position:fixed!important;top:calc(var(--m-hd-bar,50px) + var(--m-safe-top,0px))!important;bottom:calc(var(--m-tab-bar,50px) + var(--m-safe-bottom,0px))!important;left:0!important;right:0!important;height:auto!important;width:100%!important;z-index:1!important}

html.force-mobile .hd{position:fixed!important;top:0!important;left:0!important;right:0!important;height:var(--m-hd-h)!important;min-height:var(--m-hd-h)!important;max-height:var(--m-hd-h)!important;padding-top:var(--m-safe-top,0px)!important;padding-bottom:0!important;overflow:hidden!important;box-sizing:border-box!important}

html.force-mobile .hd-inner{height:var(--m-hd-bar,50px)!important;min-height:var(--m-hd-bar,50px)!important;max-height:var(--m-hd-bar,50px)!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0 48px!important;box-sizing:border-box!important;overflow:hidden!important}

html.force-mobile .hd-title{font-size:16px!important;line-height:1.25!important;height:auto!important;text-align:center!important}

html.force-mobile .ov{top:0!important;bottom:0!important;overflow:hidden!important}

html.force-mobile .ov .bd{bottom:0!important;width:100%!important;max-width:100%!important;max-height:calc(100dvh - env(safe-area-inset-top,0px) - 6px)!important;margin-bottom:0!important;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))!important;overflow-x:hidden!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important}

html.force-mobile body.ov-open>.tab-bar{display:none!important}

/* 录入页 - 智能识别客户预览卡片（移动端紧凑布局） */
.trip-cust-card-m{background:#fff;border:1px solid #e8ecf1;border-radius:8px;padding:6px 8px;margin-bottom:4px;box-sizing:border-box;width:100%;cursor:pointer}

.trip-cust-card-m:active{background:#f8fafc}

.trip-cust-card-m .trip-cust-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:2px}

.trip-cust-card-m .trip-cust-card-name{font-size:14px;font-weight:600;color:#1e293b;word-break:break-all;flex:1;min-width:0;line-height:1.25}

.trip-cust-card-m .trip-cust-card-del{flex-shrink:0;padding:1px 6px;font-size:14px;line-height:1.2;border:none;border-radius:4px;background:transparent;color:#dc2626;cursor:pointer}

.trip-cust-card-meta{font-size:11px;color:#64748b;line-height:1.35;word-break:break-all;font-family:Consolas,monospace;margin-bottom:3px}

.trip-cust-card-tags{display:flex;flex-wrap:wrap;gap:3px 4px;align-items:center}

.trip-cust-tag{font-size:10px;padding:1px 5px;border-radius:4px;background:#f1f5f9;color:#475569;line-height:1.35;white-space:nowrap}

.trip-cust-tag-ok{background:#ecfdf5;color:#059669}

.trip-cust-tag-new{background:#fffbeb;color:#d97706}

.trip-cust-tag-warn{background:#fef2f2;color:#dc2626}

.ex-reg-prev-card-m,.bap-prev-card-m,.batch-prev-card-m{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;margin-bottom:6px;box-sizing:border-box;width:100%}

.ex-reg-prev-card-head,.bap-prev-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:6px}

.ex-reg-prev-card-name,.bap-prev-card-name{font-size:14px;font-weight:600;color:#1e293b;word-break:break-all;flex:1;min-width:0;line-height:1.3}

.ex-reg-prev-card-del,.bap-prev-card-del{flex-shrink:0;padding:2px 8px;font-size:11px;border:none;border-radius:4px;background:#fef2f2;color:#dc2626;cursor:pointer}

.ex-reg-prev-row{display:flex;align-items:flex-start;gap:6px;margin-bottom:4px;font-size:12px;line-height:1.35}

.ex-reg-prev-row:last-child{margin-bottom:0}

.ex-reg-prev-row .lbl{color:#64748b;flex-shrink:0;width:3.6em;font-size:11px}

.ex-reg-prev-row .val{color:#334155;flex:1;min-width:0;word-break:break-all}

.ex-reg-prev-row .val.mono{font-family:Consolas,monospace;font-size:11px}

.ex-reg-prev-row input,.ex-reg-prev-row select,.bap-prev-card-m input,.bap-prev-card-m select{width:100%;box-sizing:border-box;padding:4px 6px;border:1px solid #ddd;border-radius:4px;font-size:12px}

.ex-reg-prev-routes,.bap-prev-routes{display:flex;flex-wrap:wrap;gap:3px;margin-top:2px}

.ex-reg-prev-routes span,.bap-prev-routes span{display:inline-block;padding:2px 6px;font-size:11px;border-radius:4px;cursor:pointer;line-height:1.25}

.ex-reg-prev-logic,.bap-prev-logic{font-size:11px;margin-top:4px;line-height:1.35;word-break:break-all}

.batch-prev-card-m .trip-cust-card-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:2px}

.batch-prev-card-m .trip-cust-card-name{font-size:14px;font-weight:600;color:#1e293b;word-break:break-all;flex:1;min-width:0;line-height:1.25}

.batch-prev-card-m .trip-cust-card-del{flex-shrink:0;padding:1px 6px;font-size:14px;line-height:1.2;border:none;border-radius:4px;background:transparent;color:#dc2626;cursor:pointer}

.batch-prev-card-m .trip-cust-card-meta{margin-bottom:3px}

.bap-prev-card-idx{font-size:11px;color:#94a3b8;font-weight:400;margin-right:4px}

/* Excel 批量导入 - 录入页内联预览 */
.ebc-files-hint{font-size:12px;color:#64748b;margin:10px 0 0;line-height:1.5;word-break:break-all}

.ebc-panel{margin-top:12px;border:1px solid #e2e8f0;border-radius:12px;background:#f8fafc;overflow:hidden}

.ebc-preview-head{padding:10px 12px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}

.ebc-preview-head strong{font-size:13px;color:#0f766e;white-space:nowrap}

.ebc-preview-stats{font-size:12px;color:#64748b;line-height:1.45;flex:1;min-width:0}

.ebc-preview-stats b{color:#1e293b}

.ebc-clear-btn{padding:4px 10px;font-size:11px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;white-space:nowrap;line-height:1.4;flex-shrink:0}

.ebc-clear-btn:hover{background:#f8fafc;color:#334155;border-color:#cbd5e1}

.ebc-body{padding:12px}

.ebc-file-list{max-height:88px;overflow-y:auto;margin-bottom:10px;font-size:12px;color:#64748b;line-height:1.55}

.ebc-warn{margin-bottom:10px;padding:10px 12px;background:#fef2f2;border-radius:8px;font-size:12px;color:#b91c1c;line-height:1.45}

.ebc-hint{font-size:12px;color:#6b7280;margin-bottom:8px;line-height:1.45}

.ebc-table-wrap{max-height:360px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px;background:#fff;font-size:12px}

.ebc-foot{font-size:12px;color:#6b7280;margin-top:10px;line-height:1.45}

.ebc-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}

.ebc-actions .btn{flex:1;min-width:120px}

.ebc-loading{padding:28px 16px;text-align:center}

.ebc-loading-inner{font-size:13px;color:#64748b;line-height:1.5}

/* 批量充值弹窗 - 手机端紧凑 */
#ov_brc .bd{width:100%!important;max-width:100%!important;max-height:92vh!important;padding:0!important;display:flex;flex-direction:column;overflow:hidden!important}

#ov_brc .bd .tt{flex-shrink:0;margin:0;border-radius:16px 16px 0 0}

.brc-modal{width:100%;box-sizing:border-box;padding:16px 18px 18px;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}

.brc-body-grid{display:flex;flex-direction:column;gap:14px}

.brc-col-preview{display:none}

.brc-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}

.brc-section-head label{margin:0!important;flex:1;min-width:0;font-size:12px;font-weight:600;color:#475569}

.brc-clear-btn{padding:4px 10px;font-size:11px;border:1px solid #e2e8f0;border-radius:6px;background:#fff;color:#64748b;cursor:pointer;white-space:nowrap;line-height:1.4;flex-shrink:0}

.brc-clear-btn:hover{background:#f8fafc;color:#334155;border-color:#cbd5e1}

.brc-steps{display:flex;gap:6px;margin-bottom:14px;font-size:11px;color:#64748b;flex-wrap:wrap;justify-content:center}

.brc-step{padding:4px 10px;border-radius:999px;background:#f1f5f9;border:1px solid #e2e8f0}

.brc-step.on{background:#ecfdf5;border-color:#a7f3d0;color:#047857;font-weight:600}

.brc-section{margin-bottom:14px}

.brc-col-input .brc-section{margin-bottom:0}

.brc-section textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid #e2e8f0;border-radius:10px;font-size:13px;line-height:1.55;resize:vertical;min-height:108px;max-height:180px;font-family:inherit;display:block}

.brc-section textarea:focus{border-color:#10b981;outline:none;box-shadow:0 0 0 3px rgba(16,185,129,.12)}

.brc-parse-row{display:flex;align-items:center;gap:10px;margin-top:8px;flex-wrap:wrap}

.brc-parse-btn{background:#6366f1;color:#fff;padding:8px 16px;font-size:13px;border:none;border-radius:8px}

.brc-confirm-btn{background:#10b981;color:#fff;opacity:.55}

.brc-confirm-btn:not(:disabled){opacity:1}

.brc-preview-btn{padding:10px 14px;width:100%}

.brc-parse-hint{font-size:11px;color:#94a3b8;line-height:1.4;flex:1;min-width:120px}

.brc-amount-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end;margin-top:14px}

.brc-amount-grid .brc-preview-btn{grid-column:1/-1}

.brc-amount-grid label{display:block;font-size:12px;font-weight:600;color:#475569;margin-bottom:6px}

.brc-amount-grid input{width:100%;box-sizing:border-box;padding:9px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px}

.brc-preview-panel{border:1px solid #e5e7eb;border-radius:12px;background:#fafafa;overflow:hidden;width:100%;display:flex;flex-direction:column;min-height:200px}

.brc-preview-head{padding:10px 12px;background:#fff;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;flex-shrink:0}

.brc-preview-head-left{display:flex;align-items:center;gap:8px;flex:1;min-width:0;flex-wrap:wrap}

.brc-preview-head strong{font-size:13px;color:#1e293b;white-space:nowrap}

.brc-preview-stats{font-size:12px;color:#64748b;line-height:1.4}

.brc-preview-stats b{color:#1e293b}

.brc-preview-stats .ok{color:#059669}

.brc-preview-stats .warn{color:#d97706}

.brc-preview-stats .err{color:#dc2626}

.brc-preview-table-wrap{flex:1;overflow-y:auto;overflow-x:auto;background:#fff;width:100%;min-height:120px;max-height:240px}

.brc-preview-table-wrap table{min-width:100%;font-size:12px}

.brc-preview-empty{padding:24px 12px;text-align:center;font-size:12px;color:#94a3b8;line-height:1.6}

.brc-preview-foot{padding:8px 12px;background:#fffbeb;border-top:1px solid #fde68a;font-size:12px;color:#92400e;line-height:1.5;flex-shrink:0}

.brc-actions{display:flex;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid #f1f5f9}

.brc-actions .btn{flex:1;margin:0;padding:12px 16px!important;font-size:14px!important}

.brc-row-ok{background:#fff}

.brc-row-warn{background:#fffbeb}

.brc-row-err{background:#fef2f2}

.brc-tag{display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:600;white-space:nowrap}

.brc-tag-ok{background:#ecfdf5;color:#059669}

.brc-tag-warn{background:#fef3c7;color:#b45309}

.brc-tag-err{background:#fee2e2;color:#b91c1c}

/* 批量充值弹窗 - 电脑端宽屏双栏 */
@media(min-width:769px){
    #ov_brc .bd{width:min(920px,94vw)!important;max-width:min(920px,94vw)!important;max-height:88vh!important;border-radius:16px!important}
    #ov_brc .bd .tt{padding:18px 24px;font-size:18px}
    .brc-modal{padding:20px 24px 24px}
    .brc-steps{gap:10px;margin-bottom:18px;font-size:12px}
    .brc-step{padding:6px 14px}
    .brc-body-grid{display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:20px;align-items:stretch}
    .brc-col-preview{display:block!important}
    .brc-col-input{display:flex;flex-direction:column;gap:14px}
    .brc-col-input .brc-section{flex:1;display:flex;flex-direction:column;margin:0}
    .brc-section-head label{font-size:13px}
    .brc-section textarea{flex:1;min-height:200px;max-height:340px;padding:12px 14px;font-size:14px;line-height:1.65}
    .brc-parse-row{margin-top:10px}
    .brc-parse-hint{font-size:12px}
    .brc-amount-grid{grid-template-columns:1fr 1fr;margin-top:0;padding:14px;border-radius:12px;background:#f8fafc;border:1px solid #eef2f7}
    .brc-amount-grid .brc-preview-btn{grid-column:1/-1}
    .brc-amount-grid label{font-size:13px}
    .brc-amount-grid input{padding:11px 14px;font-size:15px}
    .brc-preview-panel{min-height:460px;margin:0;border-radius:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
    .brc-preview-head{padding:14px 16px}
    .brc-preview-head strong{font-size:14px}
    .brc-preview-stats{font-size:13px}
    .brc-preview-table-wrap{max-height:none;min-height:300px}
    .brc-preview-table-wrap table{font-size:13px}
    .brc-preview-table-wrap th,.brc-preview-table-wrap td{padding:9px 12px!important}
    .brc-preview-empty{padding:48px 20px;font-size:13px}
    .brc-preview-foot{padding:12px 16px;font-size:13px}
    .brc-actions{margin-top:18px;padding-top:18px}
    .brc-actions .btn{max-width:220px}
    .brc-actions .btn.btn-g{margin-left:auto;flex:0 1 auto;min-width:100px}
    .brc-actions #brc_confirm_btn{flex:0 1 auto;min-width:160px}
  }

@media (max-width:768px){body.ov-open>.tab-bar{display:none!important}

}
