/* ============ 万洋众创 设计系统（浅色高亮主题 · 2026-08-17） ============ */
:root{
  --orange:#FF7A1A;          /* 品牌主色 */
  --orange-dark:#E55B00;
  --orange-light:rgba(255,122,26,.12);
  --orange-2:#FF8C33;
  --bg:#F4F6FB;              /* 页面冷调浅灰底 */
  --panel:#FFFFFF;           /* 卡片/面板白底 */
  --panel-solid:#FFFFFF;
  --border:rgba(16,24,40,.10);
  --border-strong:rgba(16,24,40,.16);
  --text:#1A2233;            /* 墨色主文字 */
  --text-2:rgba(16,24,40,.55);
  --text-3:rgba(16,24,40,.38);
  --green:#16A34A;
  --green-light:rgba(22,163,74,.12);
  --red:#EF4444;
  --red-light:rgba(239,68,68,.12);
  --blue:#2F7FF0;
  --blue-light:rgba(47,127,240,.12);
  --purple:#7B61FF;
  --purple-light:rgba(123,97,255,.12);
  --amber:#F5A623;
  --amber-light:rgba(245,166,35,.14);
  --radius:12px;
  --radius-sm:8px;
  --shadow:0 1px 2px rgba(16,24,40,.04), 0 6px 20px rgba(16,24,40,.06);
  --shadow-lg:0 12px 36px rgba(16,24,40,.14);
  --sidebar-w:200px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:
    radial-gradient(1100px 640px at 6% -8%, rgba(255,122,26,.06), transparent 60%),
    radial-gradient(1000px 720px at 102% -4%, rgba(123,97,255,.06), transparent 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--text);font-size:13px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none!important}

/* ============ 启动加载遮罩 ============ */
.boot-loading{
  position:fixed;inset:0;z-index:9999;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--bg);
}
.boot-spinner{
  width:42px;height:42px;border:4px solid rgba(16,24,40,.10);
  border-top-color:var(--orange,#FF7A1A);border-radius:50%;
  animation:boot-spin .8s linear infinite;
}
.boot-text{margin-top:16px;color:var(--orange,#FF7A1A);font-size:14px;letter-spacing:1px}
@keyframes boot-spin{to{transform:rotate(360deg)}}

a{color:var(--blue);text-decoration:none}
button{font-family:inherit;cursor:pointer}

/* ============ 按钮 ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  height:32px;padding:0 14px;border:none;border-radius:var(--radius-sm);
  font-size:13px;font-weight:500;transition:.18s;white-space:nowrap;
}
.btn-primary{background:var(--orange);color:#fff}
.btn-primary:hover{background:var(--orange-dark)}
.btn-ghost{background:rgba(16,24,40,.03);color:var(--text-2);border:1px solid var(--border)}
.btn-ghost:hover{color:var(--orange);border-color:var(--orange)}
.btn-danger{background:var(--red);color:#fff}
.btn-danger:hover{filter:brightness(.94)}
.btn-success{background:var(--green);color:#fff}
.btn-success:hover{filter:brightness(.94)}
.btn-warning{background:var(--amber);color:#fff}
.btn-warning:hover{filter:brightness(.94)}
.btn-info{background:var(--purple);color:#fff}
.btn-info:hover{filter:brightness(.94)}
.btn-sm{height:26px;padding:0 10px;font-size:12px}
.btn-block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ============ 登录（浅色分屏 · 左侧品牌渐变大色块） ============ */
.login-wrap{position:fixed;inset:0;display:flex;align-items:stretch;justify-content:stretch;overflow:hidden;background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%)}
.login-stage{position:relative;z-index:1;display:flex;width:100vw;height:100vh;min-height:100%;border-radius:0;overflow:hidden;background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%)}
/* —— 左侧品牌展示区（首页同源暖调渐变） —— */
.login-left{width:54%;position:relative;padding:48px 72px;display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden;
  background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%)}
/* 柔光装饰：橙/紫光晕 + 几何点缀 */
.ll-deco{position:absolute;border-radius:50%;filter:blur(70px);opacity:.9}
.ll-deco-1{top:-90px;left:-90px;width:420px;height:420px;background:radial-gradient(circle,rgba(255,122,26,.18),transparent 70%)}
.ll-deco-2{bottom:-100px;right:-40px;width:380px;height:380px;background:radial-gradient(circle,rgba(123,97,255,.14),transparent 70%)}
.ll-ring{position:absolute;top:100px;right:50px;width:140px;height:140px;border-radius:50%;border:1px solid rgba(255,122,26,.15)}
.ll-dot{position:absolute;border-radius:50%}
.ll-dot-1{top:210px;left:95px;width:5px;height:5px;background:rgba(255,122,26,.5)}
.ll-dot-2{top:160px;left:165px;width:3.5px;height:3.5px;background:rgba(123,97,255,.4)}
.ll-dot-3{bottom:230px;right:125px;width:4.5px;height:4.5px;background:rgba(255,122,26,.35)}
/* Logo：白透底+橙边框 */
.login-brand-lg{display:flex;align-items:center;gap:14px;margin-bottom:28px;position:relative;z-index:2}
.brand-logo.lg{width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,#FF8A33,#E55B00);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;
  border:1px solid rgba(255,122,26,.25)}
.brand-logo.lg img{width:100%;height:100%;object-fit:contain}
.brand-title-lg{font-size:17px;font-weight:700;color:#1A2233;letter-spacing:.8px}
.brand-sub-lg{font-size:10px;color:#8892A4;margin-top:2px;letter-spacing:.6px}
/* 标题：墨色主字+品牌橙关键词 */
.ll-headline{position:relative;z-index:2;font-size:29px;font-weight:800;color:#1A2233;line-height:1.25;letter-spacing:-.4px;margin-bottom:14px}
.hl-orange{color:#E55B00}
.ll-subtitle{position:relative;z-index:2;font-size:13px;color:#6B5544;line-height:1.7;max-width:320px;margin-bottom:22px}
/* 数据卡：白透底+彩色细边框 */
.ll-stats{display:flex;gap:12px;position:relative;z-index:2}
.ll-stat{padding:11px 14px;background:rgba(255,255,255,.68);border:1px solid rgba(255,122,26,.18);border-radius:12px;text-align:center;min-width:78px;flex:1}
.ll-stat-num{font-size:20px;font-weight:700;line-height:1.1;color:#E55B00}
.ll-stat-num.orange{color:#E55B00}
.ll-stat-num.green{color:#16A34A}
.ll-stat-num.purple{color:#7B61FF}
.ll-stat-label{font-size:10px;color:#8B7355}
/* 功能卡：白透底+彩色左条 */
.ll-features{flex:1;display:flex;flex-direction:column;justify-content:center;gap:10px;margin-top:22px;position:relative;z-index:2}
.ll-feature{display:flex;align-items:center;gap:12px;padding:12px 16px;background:rgba(255,255,255,.56);
  border:1px solid rgba(230,221,208,.8);border-radius:10px;border-left:3px solid #FF7A1A;transition:.15s}
.ll-feature.f-green{border-left-color:#16A34A}
.ll-feature.f-purple{border-left-color:#7B61FF}
.ll-feature:hover{background:rgba(255,255,255,.72);transform:translateX(3px)}
.llf-icon{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.7);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.llf-text{flex:1;min-width:0}
.llf-title{font-size:13px;font-weight:600;color:#1A2233}
.llf-desc{font-size:10.5px;color:#998877;margin-top:2px;line-height:1.45}
.ll-foot{position:relative;z-index:2;padding-top:14px;margin-top:20px;border-top:1px dashed rgba(200,190,180,.5);
  font-size:10.5px;color:#AA9988;letter-spacing:.3px}
/* —— 中间分隔线 + 三色圆点 —— */
.login-divider{width:1px;align-self:stretch;position:relative;background:linear-gradient(to bottom,transparent,rgba(216,208,224,.5) 20%,rgba(216,208,224,.5) 80%,transparent);z-index:2}
.ld-dot{position:absolute;left:-4.5px;width:9px;height:9px;border-radius:50%;box-shadow:none}
.ld-c1{top:22%;background:#FF7A1A}
.ld-c2{top:50%;background:#16A34A}
.ld-c3{top:78%;background:#7B61FF}
/* —— 右侧登录操作区（同源渐变+白色玻璃卡片） —— */
.login-right{flex:1;position:relative;display:flex;align-items:center;justify-content:center;padding:48px 64px;
  background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%)}
.lr-deco{position:absolute;top:-30px;right:-30px;width:200px;height:200px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,122,26,.16),transparent 70%);filter:blur(40px)}
.login-right-inner{width:100%;max-width:320px;position:relative;z-index:2}
.lr-greet{margin-bottom:22px}
.lr-greet .g-time{font-size:24px;font-weight:700;color:#1A2233;letter-spacing:.5px}
.lr-greet .g-date{font-size:13px;color:#6B5544;margin-top:6px}
.lr-weather{font-size:12px;color:#998877;margin-top:4px;margin-bottom:20px;min-height:16px}
/* 登录卡片：纯白+顶部橙条+双层投影 */
.login-card{background:#FFFFFF;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);
  border:1px solid rgba(255,255,255,.7);border-radius:18px;padding:28px 24px;
  box-shadow:0 4px 16px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.04);
  position:relative;overflow:hidden}
.login-card::before{content:'';position:absolute;top:0;left:0;right:0;height:6px;border-radius:18px 18px 0 0;
  background:linear-gradient(90deg,#FF8A33,#E55B00)}
.login-brand{display:flex;align-items:center;gap:10px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid #F0F1F3}
.brand-logo.small{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,#FF8A33,#E55B00);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}
.brand-logo.small img{width:100%;height:100%;object-fit:contain}
.brand-title{font-size:14px;font-weight:600;color:#1A2233}
.brand-sub{font-size:10px;color:#A0A8B4;margin-top:2px}
.login-form{margin-bottom:0}
.lf-field{margin-bottom:15px}
.lf-field label{display:block;font-size:12px;color:#5A6478;margin-bottom:6px;font-weight:500}
.lf-input{display:flex;align-items:center;gap:10px;height:44px;padding:0 14px;background:#FAFBFC;border:1px solid #DDDDE3;border-radius:10px;transition:.18s}
.lf-input:focus-within{border-color:#FF7A1A;box-shadow:0 0 0 3px rgba(255,122,26,.12)}
.lf-icon{color:#B0B5BC;font-size:14px;flex-shrink:0}
.lf-input input{flex:1;height:100%;border:none;background:transparent;outline:none;color:#1A2233;font-size:14px}
.lf-input input::placeholder{color:#C0C4CC}
/* 覆盖浏览器自动填充背景（浅色主题） */
.lf-input input:-webkit-autofill,
.lf-input input:-webkit-autofill:hover,
.lf-input input:-webkit-autofill:focus,
.lf-input input:-webkit-autofill:active,
.lf-input input:autofill,
.lf-input input:autofill:hover,
.lf-input input:autofill:focus{
  -webkit-box-shadow:0 0 0 9999px #FFFFFF inset !important;
  box-shadow:0 0 0 9999px #FFFFFF inset !important;
  -webkit-text-fill-color:#1A2233 !important;
  background-color:transparent !important;
  background-image:none !important;
  transition:background-color 5000s ease-in-out 0s,caret-color .3s,-webkit-box-shadow .3s
}
/* 按钮区域：加大间距，不挤 */
.login-form .btn-primary{margin-top:8px;height:46px;font-size:16px;border-radius:10px;letter-spacing:2px;
  background:linear-gradient(90deg,#FF8A33,#E55B00)}
.login-tip{color:#EF4444;font-size:12px;min-height:18px;margin-top:12px}
.login-secure{text-align:center;margin-top:18px;font-size:11px;color:#B0B5BC}
.login-quote{text-align:center;margin-top:22px;font-size:12.5px;color:#A09AA8;font-style:italic;line-height:1.65;max-width:320px}
/* —— 响应式：窄屏堆叠 —— */
@media (max-width:780px){
  .login-stage{flex-direction:column;height:auto;min-height:100vh;width:100vw}
  .login-left{width:100%;padding:36px 24px}
  .login-right{width:100%;padding:36px 20px}
  .login-divider{display:none}
  .ll-features{margin-top:20px}
  .ll-foot{margin-top:18px}
}

/* ============ 布局 ============ */
.app-wrap{display:flex;height:100vh;padding-bottom:36px}
.sidebar{width:var(--sidebar-w);background:#FFFFFF;border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 18px;color:var(--text);font-size:16px;font-weight:700;
  border-bottom:1px solid var(--border)}
.menu{flex:1;padding:10px 10px;overflow-y:auto}
.menu-item{display:flex;align-items:center;gap:10px;padding:11px 14px;border-radius:var(--radius-sm);
  color:var(--text-2);font-size:13px;margin-bottom:4px;cursor:pointer;transition:.15s}
.menu-item:hover{background:rgba(16,24,40,.04);color:var(--text)}
.menu-item.active{background:var(--orange);color:#fff;font-weight:600}
.menu-item .mi-icon{width:18px;text-align:center;font-size:15px}
.sidebar-foot{padding:12px;border-top:1px solid var(--border)}
.user-chip{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);
  background:rgba(16,24,40,.04);color:var(--text);font-size:12px;margin-bottom:8px}
.user-chip .uc-avatar{width:26px;height:26px;border-radius:50%;background:var(--orange);display:flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff}
.user-chip .uc-role{color:var(--orange-dark);font-size:11px}

.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{height:54px;background:#FFFFFF;
  border-bottom:1px solid var(--border);display:flex;
  align-items:center;justify-content:space-between;padding:0 22px;flex-shrink:0}
.topbar-title{font-size:16px;font-weight:700;color:var(--text)}
.topbar-right{display:flex;align-items:center;gap:14px}
.bell{position:relative;cursor:pointer}
.bell-icon{font-size:18px;color:var(--text-2)}
.bell-badge{position:absolute;top:-6px;right:-8px;background:var(--red);color:#fff;border-radius:10px;
  font-size:11px;min-width:16px;height:16px;line-height:16px;text-align:center;padding:0 4px}
.bell-panel{position:absolute;top:34px;right:0;width:340px;max-height:460px;overflow-y:auto;background:#FFFFFF;
  border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:50;padding:6px}
.bell-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:.15s;border-bottom:1px solid var(--border)}
.bell-item:last-child{border-bottom:none}
.bell-item:hover{background:var(--orange-light)}
.bell-item .bi-title{font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px}
.bell-item .bi-body{font-size:12px;color:var(--text-2);margin-top:3px}
.bell-item .bi-time{font-size:11px;color:var(--text-3);margin-top:3px}
.bell-empty{padding:30px;text-align:center;color:var(--text-3);font-size:13px}
.bi-dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.bi-dot.warn{background:var(--orange)}
.bi-dot.recycled{background:var(--red)}
.bi-dot.today{background:var(--blue)}
.bi-dot.expire{background:var(--green)}

.content{flex:1;overflow-y:auto;padding:20px 22px}

/* ============ 卡片 / 面板 ============ */
.panel{background:#FFFFFF;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.panel-title{font-size:14px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:8px;color:var(--text)}
.panel-title .pt-bar{width:3px;height:14px;background:var(--orange);border-radius:2px}

/* 数据卡片 */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;margin-bottom:18px}
.stat-card{background:#FFFFFF;border:1px solid var(--border);border-left:4px solid var(--orange);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;
  position:relative;overflow:hidden;transition:.15s}
.stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.stat-card .sc-label{font-size:12px;color:var(--text-2)}
.stat-card .sc-value{font-size:26px;font-weight:700;margin-top:6px;color:var(--text)}
.stat-card .sc-value .unit{font-size:13px;font-weight:500;color:var(--text-3);margin-left:3px}
.stat-card.alt{border-left-color:var(--blue)}
.stat-card.green{border-left-color:var(--green)}
.stat-card.red{border-left-color:var(--red)}
.stat-card.purple{border-left-color:#7B61FF}

/* ============ 工具栏 ============ */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.toolbar .spacer{flex:1}
.input,.select{height:32px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 10px;
  font-size:13px;outline:none;background:#FFFFFF;color:var(--text);transition:.18s}
.input::placeholder,.select::placeholder{color:var(--text-3)}
.input:focus,.select:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-light)}
.input.w200{width:200px}.input.w260{width:260px}.input.w80{width:80px}
/* 工具栏内的筛选标签与分隔符（扔出日期等） */
.filter-label{font-size:13px;color:var(--text-2);white-space:nowrap}
.filter-sep{color:var(--text-3);padding:0 2px}
.toolbar input[type=date].input{width:150px;color:var(--text)}

/* ============ 表格 ============ */
.table-wrap{background:#FFFFFF;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto;overflow-y:hidden}
table.tbl{width:100%;min-width:1200px;border-collapse:collapse;font-size:13px;table-layout:fixed}
.tbl th{background:rgba(16,24,40,.03);text-align:left;color:var(--text-2);font-weight:600;padding:11px 14px;
  border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:2}
.tbl td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbl tbody tr:hover{background:var(--orange-light)}
.tbl tbody tr:last-child td{border-bottom:none}
.empty-row{padding:40px;text-align:center;color:var(--text-3)}

/* 多电话竖排展示（电话① / 电话② / 电话③ …） */
.phone-multi{white-space:normal;line-height:1.5;word-break:break-all}
.phone-multi .phone-item{font-size:13px;color:var(--text);white-space:normal}
.phone-multi .phone-item + .phone-item{margin-top:3px}
.phone-multi .muted{color:var(--text-3)}
/* 编辑弹窗：多电话编辑行（输入框 + 删除按钮） */
.phone-edit-row{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.phone-edit-row .e-phone-input{flex:1;min-width:0}
.phone-del{flex:0 0 auto;width:28px;height:28px;border:1px solid var(--border);background:#fff;color:var(--text-3);border-radius:6px;cursor:pointer;font-size:12px;line-height:1;transition:all .15s}
.phone-del:hover{color:#e5484d;border-color:#e5484d;background:rgba(239,68,68,.06)}
#e-phone-add{margin-top:2px}
/* 详情面板里的联系电话也竖排，避免被 .ii-value 的行高/省略截断 */
.info-item .ii-value.phone-multi{white-space:normal;line-height:1.6}

/* 列表列宽可拖拽 + 单元格溢出省略号（长文本 hover 显示完整） */
.tbl th.col-company{width:260px;min-width:180px}
.col-resizer{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;z-index:3;user-select:none}
.col-resizer:hover,.col-resizer.dragging{background:rgba(255,122,26,.45)}

/* 列表页冻结：筛选工具栏 + 表头 固定，仅数据区上下滚动
   高度 = 视口 - 顶栏(54px) - content 上下内边距(20px*2)。topbar/content 高度改时同步调整。 */
.list-view{display:flex;flex-direction:column;height:calc(100vh - 94px);min-height:0;overflow:hidden}
.list-view > *:not(.table-wrap){flex:0 0 auto}
.list-view > .table-wrap{flex:1 1 auto;min-height:0;overflow:auto}

/* 状态标签 */
.tag{display:inline-flex;align-items:center;padding:3px 11px;border-radius:20px;font-size:12px;font-weight:500;margin:0 2px;white-space:nowrap}
.tag.gray{background:rgba(16,24,40,.06);color:var(--text-2)}
.tag.orange{background:var(--orange-light);color:var(--orange-dark)}
.tag.blue{background:var(--blue-light);color:var(--blue)}
.tag.green{background:var(--green-light);color:var(--green)}
.tag.red{background:var(--red-light);color:var(--red)}
.tag.purple{background:var(--purple-light);color:var(--purple)}

/* 红色醒目文字（用于<2天即将跟进） */
.red-text-bold{color:var(--red);font-weight:700}
/* 广告消耗金额高亮 */
.ad-amount{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
/* 分页控件 */
.pager{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 0 4px}
.pager-info{font-size:13px;color:var(--text-2);min-width:120px;text-align:center}
.pager button[disabled]{opacity:.4;cursor:not-allowed}
.pg-size-wrap{font-size:13px;color:var(--text-2);display:inline-flex;align-items:center;gap:4px}
.pg-size{height:30px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 6px;font-size:13px;color:var(--text);background:#fff;cursor:pointer}
.pg-size:focus{border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-light)}
.pg-jump-wrap{font-size:13px;color:var(--text-2);display:inline-flex;align-items:center;gap:4px;margin-left:6px}
.pg-jump{width:62px;height:28px;padding:0 6px;border-radius:7px;border:1px solid var(--border-strong);background:#FFFFFF;color:var(--text);text-align:center}
.pg-jump:focus{outline:none;border-color:var(--orange)}
/* 已选中的筛选下拉框：高亮醒目 */
.select.filter-on{border-color:var(--orange);color:var(--orange-dark);font-weight:600;background:var(--orange-light)}

/* ============ 筛选栏控件增强（醒目化 · 2026-08-17） ============ */
.toolbar .select, .filter-bar .select,
.toolbar .input, .filter-bar .input{
  height:34px;padding:0 12px;
  border:1px solid var(--border-strong);
  background:rgba(16,24,40,.03);
  font-weight:500;color:var(--text);
  transition:.18s;
}
.toolbar .select, .filter-bar .select{
  padding-right:30px;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5l3.5 3.5 3.5-3.5' fill='none' stroke='%23FF8C33' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;background-size:12px 12px;
}
.toolbar #st, .filter-bar #st{ border-left:3px solid var(--orange); }
.toolbar #fl-quality, .filter-bar #fl-quality{ border-left:3px solid var(--blue); }
.toolbar #fl-member, .filter-bar #fl-member{ border-left:3px solid var(--green); }
.toolbar #fl-meeting, .filter-bar #fl-meeting{ border-left:3px solid var(--purple); }
.toolbar #fl-follow, .filter-bar #fl-follow{ border-left:3px solid var(--red); }
.toolbar #fl-ad-min, .filter-bar #fl-ad-min,
.toolbar #fl-ad-max, .filter-bar #fl-ad-max{ border-left:3px solid var(--amber); }
.toolbar .select:hover, .filter-bar .select:hover,
.toolbar .input:hover, .filter-bar .input:hover{
  border-color:var(--orange);background:rgba(16,24,40,.05);
}
.toolbar .select:focus, .filter-bar .select:focus,
.toolbar .input:focus, .filter-bar .input:focus{
  border-color:var(--orange);outline:none;
  box-shadow:0 0 0 3px var(--orange-light);background:rgba(16,24,40,.05);
}
.toolbar .select.filter-on, .filter-bar .select.filter-on{
  border-color:var(--orange);color:var(--orange-dark);font-weight:600;
  background:var(--orange-light);
}
.toolbar .select option, .filter-bar .select option{
  color:var(--text);
  background-color:var(--panel-solid);
  padding:3px 6px;
}

/* —— 表格行内编辑：点击彩色标签展开下拉 —— */
.inline-edit{cursor:pointer;user-select:none;transition:.12s;border-radius:6px}
.inline-edit:hover{filter:brightness(.97)}
.inline-edit:hover .tag{box-shadow:0 0 0 2px rgba(255,122,26,.28)}
.inline-edit-select{
  height:30px;min-width:70px;max-width:120px;padding:0 6px;
  border:1px solid var(--orange);border-radius:6px;
  background:#fff;color:var(--text);font-size:12px;font-family:inherit;
  outline:none;cursor:pointer;
}
.inline-edit-select:focus{box-shadow:0 0 0 3px var(--orange-light)}

/* 表头「可编辑」标识：三列（客户质量/会员状态/参会情况）提示销售可点击 */
.ie-hint{font-size:11px;line-height:1;margin-left:3px;opacity:.45;cursor:help;transition:opacity .15s,transform .15s;user-select:none}
.ie-hint:hover{opacity:1;transform:scale(1.15)}
th:hover .ie-hint{opacity:.8}

/* 已选条件标签栏 */
.filter-tags{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;background:var(--orange-light);border:1px solid rgba(255,122,26,.25);border-radius:8px;margin-bottom:10px}
.ft-label{font-size:13px;color:var(--text-2);font-weight:600}
.filter-tag{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:4px 10px;border-radius:14px;background:var(--orange);color:#fff;line-height:1.4}
.filter-tag b{font-weight:700}
.ft-x{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:rgba(255,255,255,.25);font-size:13px;cursor:pointer;line-height:1}
.ft-x:hover{background:rgba(255,255,255,.5)}

/* 公海销售开放时段提示条 */
.pubsea-hint{font-size:13px;line-height:1.6;color:var(--orange);background:var(--orange-light);border:1px solid rgba(255,122,26,.25);border-radius:8px;padding:10px 14px;margin-bottom:12px}
.pubsea-hint b{color:var(--orange-deep,#c2410c)}

/* 公海「是否被扔」徽标 */
.badge{display:inline-block;padding:2px 9px;border-radius:11px;font-size:12px;line-height:1.5;font-weight:600}
.badge-warn{background:var(--orange-light);color:var(--orange-dark);border:1px solid rgba(255,122,26,.30)}

.link-btn{color:var(--blue);cursor:pointer;font-size:13px}
.link-btn:hover{text-decoration:underline}
.op-link{color:var(--orange-dark);cursor:pointer;margin-right:8px;font-size:13px}
.op-link:hover{text-decoration:underline}
.op-link.danger{color:var(--red)}
.muted{color:var(--text-3)}

/* 单选项（是否参会） */
.radio-group{display:flex;gap:18px;margin-top:6px}
.radio-inline{display:inline-flex;align-items:center;gap:6px;font-size:13px;cursor:pointer;font-weight:500;color:var(--text)}
.radio-inline input{width:16px;height:16px;cursor:pointer}

/* ============ 弹窗 ============ */
.modal-mask{position:fixed;inset:0;background:rgba(16,24,40,.45);display:flex;align-items:center;
  justify-content:center;z-index:100;animation:fade .15s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{background:#FFFFFF;border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:480px;max-width:92vw;
  max-height:88vh;display:flex;flex-direction:column;animation:pop .18s}
@keyframes pop{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{padding:16px 20px;border-bottom:1px solid var(--border);font-size:15px;font-weight:700;color:var(--text);
  display:flex;align-items:center;justify-content:space-between}
.modal-head .x{cursor:pointer;color:var(--text-3);font-size:18px}
.modal-body{padding:20px;overflow-y:auto}
.modal-foot{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}
.form-row{margin-bottom:16px}
.form-row label{display:block;font-size:12px;color:var(--text-2);margin-bottom:6px}
.form-row label .req{color:var(--red);margin-left:2px}
.form-row input,.form-row textarea,.form-row select{width:100%;border:1px solid var(--border-strong);
  border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;outline:none;font-family:inherit;transition:.18s;
  background:#FFFFFF;color:var(--text)}
.form-row input::placeholder,.form-row textarea::placeholder,.form-row select::placeholder{color:var(--text-3)}
.form-row input:focus,.form-row textarea:focus,.form-row select:focus{border-color:var(--orange);
  box-shadow:0 0 0 3px var(--orange-light)}
.form-row textarea{resize:vertical;min-height:72px}
.form-hint{font-size:12px;color:var(--text-3);margin-top:4px}
.form-hint.danger{color:var(--red);background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.25);padding:8px 10px;border-radius:8px;font-weight:600}
.field-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

/* 业务规则参数配置 · 紧凑三列网格 */
.params-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 20px}
.params-grid .form-row{margin-bottom:0}
.params-grid .pg-group{grid-column:1/-1;padding:14px 16px;background:rgba(16,24,40,.025);border:1px solid var(--border);border-radius:var(--radius-sm);display:grid;grid-template-columns:repeat(3,1fr);gap:14px 20px;margin-top:4px}
.pg-group .pg-label{grid-column:1/-1;font-weight:600;font-size:13px;color:var(--accent);margin-bottom:0;line-height:1.6}
@media (max-width:760px){
  .params-grid,.pg-group{grid-template-columns:1fr !important}
}

/* ============ Toast ============ */
#toast-root{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:200;display:flex;
  flex-direction:column;gap:8px;align-items:center}
.toast{background:#FFFFFF;color:var(--text);padding:10px 18px;border-radius:var(--radius-sm);font-size:13px;
  box-shadow:var(--shadow-lg);animation:toastIn .2s;border:1px solid var(--border)}
.toast.ok{background:var(--green);color:#fff;border-color:transparent}
.toast.err{background:var(--red);color:#fff;border-color:transparent}
@keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ============ 详情页 ============ */
.detail-section{margin-bottom:18px}
.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 24px}
.info-item .ii-label{font-size:12px;color:var(--text-3)}
.info-item .ii-value{font-size:14px;font-weight:500;margin-top:3px;color:var(--text)}
.ii-edit{cursor:pointer;border-bottom:1px dashed var(--border-strong);transition:all .15s}
.ii-edit:hover{color:var(--blue);border-bottom-color:var(--blue)}
.info-item-full{grid-column:1 / -1;min-width:0}
.timeline{position:relative;padding-left:20px}
.timeline::before{content:"";position:absolute;left:5px;top:4px;bottom:4px;width:2px;background:var(--border)}
.tl-item{position:relative;padding:0 0 18px 8px}
.tl-item::before{content:"";position:absolute;left:-19px;top:4px;width:10px;height:10px;border-radius:50%;
  background:var(--orange);border:2px solid #FFFFFF;box-shadow:0 0 0 2px var(--orange-light)}
.tl-item.t-follow::before{background:var(--blue)}
.tl-item.t-abandon::before{background:var(--red)}
.tl-item.t-sign::before{background:var(--green)}
.tl-item.t-renew::before{background:var(--orange)}
.tl-time{font-size:12px;color:var(--text-3)}
.tl-op{margin-left:6px;color:var(--text-2);font-weight:500}
.tl-type{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;margin-left:6px;font-weight:500}
.tl-type.follow{background:var(--blue-light);color:var(--blue)}
.tl-type.abandon{background:var(--red-light);color:var(--red)}
.tl-type.sign{background:var(--green-light);color:var(--green)}
.tl-type.renew{background:var(--orange-light);color:var(--orange-dark)}
.tl-content{font-size:13px;margin-top:4px;color:var(--text)}
/* 右栏时间轴面板：高度由 JS 同步为左栏总高，时间轴在内部滚动 */
.tl-panel{display:flex;flex-direction:column;overflow:hidden}
.tl-panel .timeline{flex:1;overflow-y:auto;overflow-x:hidden}
.att-panel{margin-top:20px}
.att-list{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.att-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;
  border:1px solid var(--border);border-radius:8px;background:rgba(16,24,40,.02)}
.att-main{display:flex;align-items:center;gap:14px}
.att-session{font-size:14px;font-weight:600;color:var(--text)}
.att-op{font-size:12px;color:var(--text-2)}
.att-time{font-size:12px;color:var(--text-3);white-space:nowrap}

/* 排名条 */
.rank-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}
.rank-row:last-child{border-bottom:none}
.rank-no{width:22px;height:22px;border-radius:50%;background:var(--orange-light);color:var(--orange-dark);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.rank-name{width:84px;font-size:13px}
.rank-bar-wrap{flex:1;height:10px;background:rgba(16,24,40,.06);border-radius:6px;overflow:hidden}
.rank-bar{height:100%;background:linear-gradient(90deg,#FF8C33,#FF7A1A);border-radius:6px}
.rank-val{width:90px;text-align:right;font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums}

/* 导入预览表 */
.imp-row{display:grid;grid-template-columns:28px 1.4fr 1fr 1.2fr 1fr;gap:8px;align-items:center;
  padding:8px 6px;border-bottom:1px solid var(--border);font-size:12px}
.imp-head{font-weight:600;color:var(--text-2);background:rgba(16,24,40,.03)}
.imp-dup{background:var(--red-light)}
.imp-ok{background:var(--green-light)}
.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.seg button{border:none;background:rgba(16,24,40,.03);padding:5px 12px;font-size:12px;color:var(--text-2)}
.seg button.on{background:var(--orange);color:#fff}

/* 导入弹窗 - Tab 切换 */
.imp-tabs{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:14px}
.imp-tab{flex:1;padding:9px 0;text-align:center;font-size:13px;color:var(--text-2);background:rgba(16,24,40,.03);border:none;cursor:pointer;transition:all .15s}
.imp-tab:hover{background:rgba(16,24,40,.06)}
.imp-tab.active{background:var(--orange);color:#fff;font-weight:600}
.imp-panel{display:none}
.imp-panel.active{display:block}

/* 文件上传区域 */
.file-upload-area{position:relative;border:2px dashed var(--border-strong);border-radius:var(--radius);padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:#FFFFFF}
.file-upload-area:hover{border-color:var(--orange);background:var(--orange-light)}
.file-upload-area.drag-over{border-color:var(--orange);background:var(--orange-light)}
.file-upload-area input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer}
.file-drop-hint{font-size:13px;color:var(--text-2)}
.file-drop-hint::before{content:"📄";font-size:28px;display:block;margin-bottom:8px}
.file-name{font-size:13px;color:var(--green);font-weight:600}
.file-reselect{display:inline-block;margin-top:10px;padding:4px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:rgba(16,24,40,.03);color:var(--text-2);font-size:13px;cursor:pointer;transition:border-color .2s,color .2s}
.file-reselect:hover{border-color:var(--red);color:var(--red)}

/* 区块标题小 */
.sub-title{font-size:13px;font-weight:700;color:var(--text-2);margin:18px 0 10px;display:flex;align-items:center;gap:7px}
.sub-title::before{content:"";width:3px;height:13px;background:var(--orange);border-radius:2px}

/* ============ 首页每日一言（浅色化） ============ */
.daily-quote{
  position:relative;
  background:linear-gradient(120deg,rgba(255,122,26,.10) 0%,rgba(123,97,255,.10) 130%);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:22px 26px 18px;
  color:var(--text);
  box-shadow:var(--shadow);
  overflow:hidden;
  margin-bottom:6px;
}
.daily-quote::after{
  content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;
  background:rgba(255,255,255,.55);
}
.dq-slogan{
  text-align:center;
  font-size:18px;
  font-weight:800;
  letter-spacing:3px;
  opacity:1;
  line-height:1.5;
  position:relative;
  z-index:1;
  color:var(--text);
}
.dq-quote{
  display:flex;
  justify-content:flex-end;
  position:relative;
  z-index:1;
  font-size:12px;
  font-weight:500;
  line-height:1.6;
  letter-spacing:.3px;
  margin-top:16px;
  opacity:.85;
  max-width:70%;
  margin-left:auto;
  color:var(--text-2);
}
.dq-mark{font-size:20px;font-weight:800;opacity:.65;margin:0 2px;vertical-align:-2px}
.dq-text{vertical-align:middle}

/* ============ 客户质量分布饼图 ============ */
.pie-panel{padding:18px 20px}
.pie-wrap{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.pie{position:relative;width:150px;height:150px;border-radius:50%;flex:0 0 auto;
  box-shadow:inset 0 0 0 1px var(--border)}
.pie-center{position:absolute;width:78px;height:78px;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--panel-solid);border-radius:50%;font-size:22px;font-weight:800;color:var(--text);
  box-shadow:var(--shadow)}
.pie-center span{font-size:11px;font-weight:500;color:var(--text-3);margin-top:1px}
.pie-legend{display:flex;flex-direction:column;gap:10px;min-width:200px}
.pie-legend-item{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2)}
.pie-legend-item .dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.pie-legend-item .pl-name{font-weight:600;color:var(--text);min-width:40px}
.pie-legend-item .pl-val{margin-left:auto;color:var(--text-2)}

/* ============ 首页双栏（饼图 + 排名） ============ */
.dual-row{display:flex;gap:16px;align-items:stretch;margin-top:4px}
.dual-row .pie-panel{flex:0 0 auto;min-width:340px}
.dual-row .wf-panel{flex:1;min-width:0;display:flex;flex-direction:column}
.dual-row .wf-panel .rank-list{flex:1}

/* ============ 销售综合数据表 ============ */
.sales-table{width:100%;border-collapse:collapse;font-size:13px}
.sales-table th{background:rgba(16,24,40,.03);text-align:left;padding:10px 14px;font-weight:700;color:var(--text-2);
  border-bottom:2px solid var(--border);white-space:nowrap}
.sales-table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text)}
.sales-table tbody tr:nth-child(even){background:rgba(16,24,40,.02)}
.sales-table tbody tr:hover{background:var(--orange-light)}
.sales-table .tc-wf{color:var(--orange-dark);font-weight:600;white-space:nowrap}
.sales-table .tc-amt{color:var(--red);font-weight:600;white-space:nowrap;text-align:left}
.sales-table td b.ok{color:var(--green);font-weight:700}
.sales-table td b.warn{color:var(--orange-dark);font-weight:700}
.sales-table td b.danger{color:var(--red);font-weight:700}

/* 销售月度目标面板（卡片式仪表盘） */
/* 业务规则面板（在统一 grid 内） */
.rules-panel{display:flex;flex-direction:column}
.rules-panel .params-grid{flex:1}

.target-panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.tp-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;background:linear-gradient(135deg,#FFF6EE 0%,#F5F0FF 100%);border-bottom:1px solid var(--border)}
.tp-head-left{display:flex;align-items:center;gap:12px;min-width:0}
.tp-icon{width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#FF7A1A,#9B6BFF);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tp-title{font-size:15px;font-weight:700;color:var(--text)}
.tp-sub{font-size:11px;color:var(--text-2);margin-top:2px}
.tp-stats{display:flex;gap:10px;flex-shrink:0}
.tp-stat{text-align:center;padding:6px 16px;border-radius:8px}
.tp-stat:nth-child(1){background:rgba(255,122,26,.08)}
.tp-stat:nth-child(2){background:rgba(123,97,255,.08)}
.tps-label{font-size:11px;color:var(--text-2)}
.tps-val{font-size:16px;font-weight:700;margin-top:1px}
.tps-orange{color:#E86A0F}
.tps-purple{color:#6B4FE5}

.tp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;padding:20px 24px}
.target-card{position:relative;border:1px solid var(--border);border-radius:10px;padding:16px;overflow:hidden;background:#fff}
.tc-bar{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--tc-main),var(--tc-lite))}
.tc-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.tc-avatar{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,var(--tc-main),var(--tc-lite));display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;color:#fff;flex-shrink:0}
.tc-id{min-width:0;flex:1}
.tc-name{font-size:14px;font-weight:600;color:var(--text)}
.tc-meta{font-size:11px;color:var(--text-2);margin-top:2px}
.tc-badge{font-size:11px;font-weight:500;padding:3px 10px;border-radius:20px;background:rgba(34,197,94,.12);color:#16a34a;flex-shrink:0}
.tc-badge-off{background:rgba(150,150,150,.12);color:#999}
.tc-prog{margin-bottom:12px}
.tc-prog-top{display:flex;justify-content:space-between;font-size:11px;color:var(--text-2);margin-bottom:6px}
.tc-prog-top span:last-child{color:var(--tc-main);font-weight:700}
.tc-prog-bar{height:6px;background:#f0f0f0;border-radius:3px;overflow:hidden}
.tc-prog-fill{height:100%;background:linear-gradient(90deg,var(--tc-main),var(--tc-lite));border-radius:3px;transition:width .25s ease}
.tc-input-row{display:flex;align-items:center;gap:8px}
.tc-input-label{font-size:12px;color:var(--text-2);white-space:nowrap;flex-shrink:0}
.tc-input-wrap{position:relative;flex:1}
.tc-input{width:100%;padding:8px 32px 8px 12px;border:1px solid var(--border-strong);border-radius:8px;font-size:13px;color:var(--text);outline:none;box-sizing:border-box;background:#fff}
.tc-input:focus{border-color:var(--tc-main);box-shadow:0 0 0 2px rgba(123,97,255,.12)}
.tc-input:disabled{background:#f5f5f5;color:var(--text-3);cursor:not-allowed;border-color:#eee}
.tc-unit{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--text-3);pointer-events:none}

.tp-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;background:#FAFAFA;border-top:1px solid var(--border);flex-wrap:wrap}
.tp-quote{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.tp-quote-icon{font-size:16px;flex-shrink:0;animation:tpSparkle 2s ease-in-out infinite}
.tp-quote-text{font-size:13px;color:#92400e;line-height:1.5;font-style:italic;flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tp-quote-tag{font-size:11px;color:var(--text-2);background:#f0f0f0;border:1px solid var(--border);padding:2px 10px;border-radius:20px;white-space:nowrap;flex-shrink:0;font-style:normal;font-weight:500}
@keyframes tpSparkle{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.2)}}
.tp-save{padding:8px 28px}

@media (max-width:760px){
  .tp-grid{grid-template-columns:1fr}
  .tp-head{flex-direction:column;align-items:flex-start}
  .tp-stats{align-self:stretch}
  .tp-stat{flex:1}
}

/* ============ 视图级错误卡片 ============ */
.view-error{display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:320px;text-align:center;padding:40px;color:var(--text-2)}
.view-error .ve-icon{font-size:48px;margin-bottom:12px}
.view-error .ve-title{font-size:16px;font-weight:700;color:var(--text);margin-bottom:8px}
.view-error .ve-msg{font-size:13px;color:var(--text-2);max-width:440px;line-height:1.6;word-break:break-word}
.view-error #ve-retry{margin-top:18px}
.view-error .ve-hint{font-size:12px;color:var(--text-3);margin-top:14px;max-width:440px;line-height:1.6}

/* ============ 可点击卡片（首页工作台跳转） ============ */
.stat-card.card-clickable{cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}
.stat-card.card-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--orange)}
.stat-card.card-clickable:active{transform:translateY(0)}

/* ============ 培训场次管理 ============ */
.sess-list{display:flex;flex-wrap:wrap;gap:8px;min-height:34px;align-items:center}
.sess-chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;padding:5px 10px 5px 12px;border-radius:14px;
  background:var(--purple-light);color:#5B3FD6;border:1px solid rgba(123,97,255,.30);line-height:1.4}
.sess-del{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;
  background:rgba(123,97,255,.18);color:#5B3FD6;font-size:13px;cursor:pointer;line-height:1}
.sess-del:hover{background:var(--purple);color:#fff}

/* ============ 会务场管理 ============ */
.meet-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.meet-card{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-start;justify-content:space-between;
  background:#FFFFFF;border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}
.meet-card:hover{border-color:var(--orange)}
.meet-main{flex:1;min-width:260px}
.meet-name{font-size:15px;font-weight:700;color:var(--text);margin-bottom:6px}
.meet-meta{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--text-2);margin-bottom:8px}
.meet-meta span b{color:var(--text-3);font-weight:500;margin-right:2px}
.meet-stats{display:flex;flex-wrap:wrap;gap:8px}
.stat-pill{font-size:12px;padding:3px 10px;border-radius:12px;background:rgba(16,24,40,.05);color:var(--text-2);border:1px solid var(--border)}
.meet-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.meet-detail{flex-basis:100%;margin-top:6px;padding-top:12px;border-top:1px dashed var(--border)}
.meet-import{background:rgba(16,24,40,.02);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}
.field-2{display:flex;gap:14px;flex-wrap:wrap}
.field-2 .form-row{flex:1;min-width:140px;margin-bottom:0}
.op-link.danger{color:var(--red)}
.op-link.danger:hover{text-decoration:underline}

/* ---- 会务场管理 · 二级页（场次客户） ---- */
.meet-name.link-btn{color:var(--blue);cursor:pointer;display:inline-block}
.meet-name.link-btn:hover{text-decoration:underline}
.sub-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sub-toolbar .spacer{flex:1}
.meet-detail-head{background:rgba(16,24,40,.03);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:14px}
.mdh-name{font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px}
.mdh-meta{font-size:12px;color:var(--text-2);line-height:1.7}
.filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;background:rgba(16,24,40,.03);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:10px}
.filter-bar .input{width:auto}
.imp-table-wrap{max-height:280px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:8px}
.imp-tbl{margin:0}
.imp-tbl th{position:sticky;top:0;background:rgba(16,24,40,.03)}
.imp-tbl .input{width:100%;min-width:120px}

/* 表格内「过长截断 + 悬停方形浮层」单元格（浮层由 JS 注入 body，不随表格滚动裁切） */
.cell-tip{
  display:inline-block;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  vertical-align:bottom;cursor:default;
}
/* 悬停浮出的方形提示框：深色圆角、自动换行、最大宽度限制 → 长内容呈方形而非长条 */
.float-tip{
  position:fixed;z-index:9999;max-width:260px;
  padding:8px 10px;background:#1f2937;color:#fff;
  font-size:12px;line-height:1.6;text-align:left;
  border-radius:8px;box-shadow:0 8px 22px rgba(0,0,0,.22);
  white-space:normal;word-break:break-word;word-wrap:break-word;
  pointer-events:none;
}
/* 参会场次多选弹窗 */
.chk-list{display:flex;flex-direction:column;gap:8px;max-height:260px;overflow:auto;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:rgba(16,24,40,.02)}
.chk-item{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;padding:2px 0}
.chk-item input{width:15px;height:15px}

/* ============ 工作台设置 · 新板块 ============ */
.settings-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px;
}
.settings-grid .panel{margin-bottom:0}
@media (max-width:880px){
  .settings-grid{grid-template-columns:1fr}
}
/* 全站公告 textarea */
.textarea{
  width:100%;border:1px solid var(--border-strong);border-radius:var(--radius-sm);
  padding:10px 12px;font-size:13px;font-family:inherit;color:var(--text);
  resize:vertical;margin-bottom:12px;background:#FFFFFF;line-height:1.6;
}
.textarea:focus{outline:none;border-color:var(--orange);box-shadow:0 0 0 3px var(--orange-light)}
/* 操作日志 */
.activity-log{max-height:260px;overflow:auto;display:flex;flex-direction:column;gap:8px}
.al-item{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;background:rgba(16,24,40,.03);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px}
.al-badge{flex:none;display:inline-block;min-width:42px;text-align:center;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;color:#fff;background:var(--text-3)}
.al-badge.log-imp{background:var(--blue)}
.al-badge.log-assign{background:var(--orange)}
.al-badge.log-trans{background:var(--purple)}
.al-badge.log-sign{background:var(--green)}
.al-badge.log-renew{background:var(--green)}
.al-badge.log-recycle{background:#D9822B}
.al-badge.log-abandon{background:var(--red)}
.al-badge.log-del{background:var(--red)}
.al-badge.log-other{background:var(--text-3)}
.al-text{flex:1;color:var(--text);line-height:1.5}
.al-meta{flex:none;color:var(--text-3);font-size:11px;white-space:nowrap}
/* 开关行 */
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px dashed var(--border)}
.switch-row:last-of-type{border-bottom:none}
.switch-info{flex:1}
.switch-label{font-size:13px;font-weight:600;color:var(--text)}
.switch-hint{font-size:11px;color:var(--text-3);margin-top:2px}
/* 开关组件 */
.switch{position:relative;display:inline-block;width:42px;height:22px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch .slider{position:absolute;cursor:pointer;inset:0;background:rgba(16,24,40,.18);border-radius:22px;transition:.2s}
.switch .slider::before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(16,24,40,.3)}
.switch input:checked + .slider{background:var(--orange)}
.switch input:checked + .slider::before{transform:translateX(20px)}

/* ============ 首页公告横幅 ============ */
.ann-banner{
  display:flex;align-items:center;gap:10px;margin-bottom:18px;padding:11px 16px;
  background:var(--orange-light);
  border:1px solid rgba(255,122,26,.25);border-left:4px solid var(--orange);border-radius:var(--radius-sm);
  font-size:13px;color:var(--orange-dark);
}
.ann-icon{flex:none;font-size:15px}
.ann-text{flex:1;line-height:1.6}

/* ============ 表格紧凑模式 ============ */
body.compact .tbl th,body.compact .tbl td{padding:7px 11px}
body.compact .tbl tbody tr{height:auto}
body.compact .stat-grid{gap:10px}

/* ============ 首页工作台大改版（浅色高亮 · 2026-08-17） ============ */
/* ====== v4 首页工作台 Hero ====== */
.hero-v4{display:flex;flex-direction:column;gap:16px;margin-bottom:18px}

/* 问候行 */
.hv4-greet-row{display:flex;align-items:center;gap:18px;padding:22px 28px;background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%);
  border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hv4-greet-row::before{content:'';position:absolute;width:160px;height:160px;right:-40px;top:-50px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,138,51,.30),transparent 70%)}
.hv4-greet-row::after{content:'';position:absolute;width:92px;height:92px;left:30%;bottom:-30px;border-radius:50%;
  background:radial-gradient(circle,rgba(123,97,255,.22),transparent 70%)}
.hv4-avatar{width:68px;height:68px;border-radius:18px;background:linear-gradient(135deg,var(--orange),#FF8C33);
  display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;color:#fff;flex-shrink:0;
  box-shadow:0 8px 22px rgba(255,122,26,.30);position:relative;z-index:1}
.hv4-greet-info{flex:1;min-width:240px;position:relative;z-index:1;display:flex;flex-direction:column;gap:8px}
.hv4-greet-line{display:flex;align-items:center;gap:8px}
.hv4-time-ico{font-size:20px;line-height:1}
.hv4-greet-text{font-size:21px;font-weight:700;color:var(--text);line-height:1.3}
.hv4-streak{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;
  background:linear-gradient(135deg,#FFF3E0,#FFE0B2);color:#E65100;font-size:12px;font-weight:600;
  border:1px solid rgba(230,81,0,.2);margin-left:auto}
.hv4-date-line{display:flex;align-items:center;gap:8px;color:var(--text-2);font-size:13px}
.hv4-date-num{font-size:28px;font-weight:800;color:var(--text);line-height:1}
.hv4-date-rest{font-size:14px}

/* 进度环 */
.hv4-prog-ring-wrap{position:relative;z-index:1;
  background:linear-gradient(135deg,#F0FFF4 0%,#F5FFFA 100%);
  border:0.5px solid rgba(22,163,74,.18);border-radius:12px;padding:8px;
  box-shadow:0 2px 8px rgba(22,163,74,.08)}
.hv4-prog-ring-wrap .prog-ring{width:96px;height:96px}
.prog-ring{text-align:center;display:block}
.prg-num{font-size:27px;font-weight:800;fill:var(--text)}
.prg-sub{font-size:11px;fill:var(--text-3)}

/* 本月冲刺卡 */
.hv4-sprint-card{position:relative;overflow:hidden;background:#fff;border:1px solid var(--border);
  border-radius:14px;padding:22px 28px;box-shadow:var(--shadow)}
.hv4-sprint-bg{position:absolute;top:-30px;right:-20px;width:140px;height:140px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,106,0,.12),transparent 70%);pointer-events:none}
.hv4-sprint-bg::after{content:'';position:absolute;bottom:-40px;left:-20px;width:100px;height:100px;border-radius:50%;
  background:radial-gradient(circle,rgba(123,97,255,.10),transparent 70%)}
.hv4-sprint-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;position:relative;z-index:1}
.hv4-sprint-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:var(--text)}
.hv4-sprint-icon{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#FF6A00,#FF8F33);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:800}
.hv4-sprint-days{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;
  background:linear-gradient(135deg,rgba(255,106,0,.08),rgba(123,97,255,.08));
  color:var(--orange-dark);border:1px solid rgba(255,106,0,.15)}
.hv4-sprint-body{display:flex;align-items:baseline;gap:12px;margin-bottom:14px;position:relative;z-index:1;flex-wrap:wrap}
.hv4-sprint-val{font-size:34px;font-weight:800;color:var(--text);line-height:1.1}
.hv4-sprint-goal{font-size:15px;color:var(--text-2)}
.hv4-sprint-pct{font-size:28px;font-weight:800;color:var(--orange);margin-left:auto}
.hv4-sprint-trend{font-size:13px;font-weight:600;color:var(--green);margin-left:auto}
.hv4-sprint-bar-wrap{position:relative;height:12px;background:rgba(16,24,40,.06);border-radius:6px;overflow:hidden;margin-bottom:10px;z-index:1}
.hv4-sprint-bar{height:100%;background:linear-gradient(90deg,#FF6A00 0%,#FFAB40 50%,#7B61FF 100%);border-radius:6px;
  transition:width .8s ease}
.hv4-sprint-dot{position:absolute;top:-3px;width:18px;height:18px;border-radius:50%;background:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,.15),0 0 0 3px rgba(255,106,0,.25);
  transform:translateX(-50%);transition:left .8s ease}
.hv4-sprint-foot{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-3);position:relative;z-index:1}
.hv4-sprint-hint{color:var(--orange-dark);font-weight:500}

/* ===== 四区填充组件（框①战报 / 框②质量 / 框③漏斗 / 框④TOP3）===== */
/* 框① 今日战报 */
.hv4-report-card{background:linear-gradient(135deg,#F4F1FF 0%,#FBF7FF 100%);
  border:0.5px solid rgba(123,97,255,.22);border-radius:12px;padding:8px 11px;box-shadow:0 2px 8px rgba(91,75,214,.10)}
.hv4-rc-head{font-size:13.5px;font-weight:700;color:#534ABB;margin-bottom:6px;white-space:nowrap}
.hv4-rc-grid{display:flex;justify-content:space-between;gap:4px}
.hv4-rc-cell{flex:1;text-align:center}
.hv4-rc-num{font-size:23px;font-weight:800;color:var(--text);line-height:1.1;font-variant-numeric:tabular-nums}
.hv4-rc-lab{font-size:10.5px;color:var(--text-3);margin-top:2px}

/* 框② 客户质量分布甜甜圈 */
.hv4-qdist-card{background:linear-gradient(135deg,#FFF6EE 0%,#FFFDF8 100%);
  border:0.5px solid rgba(255,138,0,.22);border-radius:12px;padding:8px 11px;box-shadow:0 2px 8px rgba(255,138,0,.10)}
.hv4-qd-head{font-size:13.5px;font-weight:700;color:#C2590A;margin-bottom:6px;white-space:nowrap}
.hv4-qd-body{display:flex;align-items:center;gap:8px}
.hv4-qd-donut{width:62px;height:62px;flex-shrink:0}
.hv4-qd-total{font-size:15px;font-weight:800;fill:var(--text)}
.hv4-qd-total-lab{font-size:7px;fill:var(--text-3)}
.hv4-qd-legend{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:var(--text-2)}
.hv4-qd-leg{display:flex;align-items:center;gap:6px}
.hv4-qd-name{flex:0 0 auto;width:26px;color:var(--text-2)}
.hv4-qd-leg b{margin-left:auto;min-width:38px;text-align:right;color:var(--text);font-size:11px;font-variant-numeric:tabular-nums}
.hv4-qd-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}

/* 第二行改为三列 flex：冲刺卡 + 漏斗 + TOP3 */
.hv4-sprint-row{display:flex;align-items:stretch;gap:14px}
.hv4-sprint-card{flex:1.25;min-width:0}
.hv4-funnel-card,.hv4-urgent-card{flex:1;min-width:0;background:#fff;border:1px solid var(--border);
  border-radius:14px;padding:18px 20px;box-shadow:var(--shadow);display:flex;flex-direction:column}
.hv4-fn-head,.hv4-ur-head{font-size:13px;font-weight:700;color:var(--text);margin-bottom:12px;display:flex;align-items:center;gap:5px}

/* 框③ 客户转化漏斗（SVG 真漏斗） */
.hv4-fn-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.hv4-fn-title{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:5px}
.hv4-fn-rate{font-size:11px;color:var(--text-3);display:flex;align-items:baseline;gap:3px;white-space:nowrap}
.hv4-fn-rate b{font-size:22px;color:var(--orange);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.hv4-fn-body{flex:1;display:flex;align-items:center;justify-content:center;padding:6px 0 8px;min-height:0}
.hv4-fn-svg{width:100%;max-width:340px;height:auto;display:block;overflow:visible}
.hv4-fn-path{filter:drop-shadow(0 3px 6px rgba(80,60,140,.18));transition:filter .2s}
.hv4-fn-label{fill:var(--text);font-size:12px;font-weight:500;font-family:inherit;letter-spacing:.2px}
.hv4-fn-num{fill:var(--text);font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;margin:0 2px}
.hv4-fn-pct{fill:var(--text-3);font-size:11px;font-weight:500;margin-left:2px}
.hv4-fn-conv-g{opacity:.85}
.hv4-fn-conv-line{stroke:var(--border);stroke-width:1;stroke-dasharray:2 2}
.hv4-fn-conv{fill:var(--text-3);font-size:11px;font-weight:600;font-family:inherit}
.hv4-fn-foot{font-size:11px;color:var(--text-3);margin-top:6px;padding-top:10px;border-top:1px dashed var(--border);text-align:center}
.hv4-fn-foot-todo{color:var(--text-2)}
.hv4-fn-foot-todo b{color:var(--orange);font-weight:800;font-size:13px;margin:0 2px}
.hv4-fn-foot-ok{color:#3B6D11;background:#EAF3DE;padding:3px 10px;border-radius:10px;font-weight:600}

/* 框④ 待跟进 TOP3 */
.hv4-ur-list{flex:1;display:flex;flex-direction:column;gap:9px;justify-content:center}
.hv4-ur-row{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:9px;background:#FAFAFC;transition:background .15s}
.hv4-ur-row:hover{background:#F3F0FF}
.hv4-ur-rank{width:18px;height:18px;border-radius:50%;background:rgba(123,97,255,.12);color:#7B61FF;
  font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hv4-ur-main{flex:1;min-width:0}
.hv4-ur-co{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hv4-ur-owner{font-size:10px;color:var(--text-3);margin-top:1px}
.hv4-ur-right{display:flex;align-items:center;gap:5px;flex-shrink:0}
.hv4-ur-time{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}
.hv4-ur-over{background:#FDECEC}
.hv4-ur-over .hv4-ur-time{color:#D23B3B;font-weight:700}
.hv4-ur-soon .hv4-ur-time{color:#E08A00;font-weight:600}
.hv4-ur-empty{font-size:12px;color:var(--text-3);text-align:center;padding:14px}
.hv4-ur-more{margin-top:10px;font-size:11px;color:#7B61FF;font-weight:600;cursor:pointer;text-align:right}
.hv4-ur-more:hover{text-decoration:underline}

/* 指标卡（3列） */
.hv4-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.hv4-metric-card{display:flex;align-items:center;gap:14px;padding:18px 20px;background:#fff;border:1px solid var(--border);
  border-left:4px solid var(--orange);border-radius:12px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}
.hv4-metric-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.hv4-metric-icon{width:42px;height:42px;border-radius:10px;background:rgba(255,106,0,.08);display:flex;align-items:center;
  justify-content:center;font-size:19px;flex-shrink:0}
.hv4-metric-body{flex:1;min-width:0}
.hv4-metric-label{font-size:12px;color:var(--text-2);margin-bottom:3px}
.hv4-metric-val{font-size:22px;font-weight:700;color:var(--text);line-height:1.1}
.hv4-metric-sub{font-size:11px;color:var(--text-3);flex-shrink:0}

/* 提醒胶囊组 */
.hv4-alerts-wrap{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px 20px;box-shadow:var(--shadow)}
.hv4-alerts-head{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text);margin-bottom:12px}
.hv4-alerts{display:flex;gap:10px;flex-wrap:nowrap}
.hv4-acap{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:20px;font-size:12px;font-weight:600;
  white-space:nowrap;border:1px solid transparent;flex:1;min-width:fit-content;justify-content:center}
.hv4-acap-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}

/* 底部：一言 + 趋势图 */
.hv4-bottom-row{display:grid;grid-template-columns:1fr 220px;gap:14px;align-items:stretch}
.hv4-quote-bar{display:flex;align-items:center;gap:14px;padding:18px 22px;background:linear-gradient(90deg,#FFF8F3 0%,#F5F0FF 100%);
  border:1px solid rgba(255,106,0,.1);border-radius:12px;position:relative;overflow:hidden}
.hv4-quote-line{width:3px;height:36px;border-radius:2px;background:linear-gradient(180deg,#FF6A00,#7B61FF);flex-shrink:0}
.hv4-quote-body{flex:1;font-size:13px;font-style:italic;line-height:1.6;color:var(--text-2)}
.hv4-quote-tag{padding:3px 10px;border-radius:12px;background:rgba(123,97,255,.08);color:#7B61FF;
  font-size:11px;font-weight:600;flex-shrink:0;white-space:nowrap}
.hv4-trend-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:var(--shadow);display:flex;flex-direction:column}
.hv4-trend-head{font-size:12px;font-weight:600;color:var(--text-2);margin-bottom:8px}
.hv4-trend-body{flex:1;display:flex;align-items:center;justify-content:center}
.spark-svg{width:100%;max-width:160px;height:auto}
.hv4-trend-foot{font-size:12px;font-weight:700;color:var(--text);text-align:right;margin-top:6px}

/* ===== v5.2 升级：四区智能顶栏 + 设计感元素 ===== */
.hv4-greet-row.amb-morning{background:linear-gradient(135deg,#FFF7EC 0%,#FEF3E2 50%,#F2F8FF 100%)}
.hv4-greet-row.amb-noon{background:linear-gradient(135deg,#FFF4E6 0%,#FFEFD9 55%,#FFF8E8 100%)}
.hv4-greet-row.amb-afternoon{background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 55%,#F3EEFF 100%)}
.hv4-greet-row.amb-evening{background:linear-gradient(135deg,#FFF1E8 0%,#FBE9EF 50%,#ECE7FB 100%)}
.hv4-greet-row.amb-night{background:linear-gradient(135deg,#EEF0FF 0%,#F3EEFF 45%,#FBE9EF 100%)}
.hv4-greet-row.amb-dawn{background:linear-gradient(135deg,#EAF1FF 0%,#F0EDFF 50%,#FFF0EE 100%)}

.hv4-id-zone{flex-shrink:0;text-align:center;align-self:center}
.hv4-avatar-wrap{position:relative;width:64px;height:64px;margin:0 auto}
.hv4-avatar{width:64px;height:64px;border-radius:18px;background:linear-gradient(135deg,var(--orange),#FF8C33);
  display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:800;color:#fff;position:relative;z-index:1;
  box-shadow:0 8px 22px rgba(255,106,0,.32)}
.hv4-avatar-wrap::after{content:'';position:absolute;inset:-6px;border-radius:22px;border:2px solid rgba(255,106,0,.35);
  animation:hv4-breath 3.2s ease-in-out infinite}
.hv4-greet-row.amb-night .hv4-avatar-wrap::after,.hv4-greet-row.amb-dawn .hv4-avatar-wrap::after{border-color:rgba(123,97,255,.5);box-shadow:0 0 14px rgba(123,97,255,.3)}
@keyframes hv4-breath{0%{transform:scale(1);opacity:.55}50%{transform:scale(1.12);opacity:.15}100%{transform:scale(1);opacity:.55}}
.hv4-streak-mini{margin-top:6px;font-size:11px;color:#993C1D;font-weight:600;background:rgba(230,73,32,.1);padding:2px 8px;border-radius:8px;display:inline-block}

.hv4-date-line{flex-wrap:wrap;align-items:center}
.hv4-focus-cap{display:inline-flex;align-items:center;font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:8px;margin-left:8px;white-space:nowrap}
.hv4-focus-cap.focus-green{color:#0F6E56;background:#E1F5EE}
.hv4-focus-cap.focus-orange{color:#993C1D;background:#FAECE7}
.hv4-date-line .hv4-focus-cap:first-of-type{margin-left:auto}

/* 玻璃拟态天气卡（v6 重设计：字体舒展、层次分明） */
.hv4-weather{position:relative;background:rgba(255,255,255,.82);
  border:0.5px solid rgba(255,255,255,.8);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  border-radius:14px;padding:12px 10px;box-shadow:0 2px 10px rgba(80,60,140,.12);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.hv4-weather-banner{width:100%;text-align:center;font-size:13.5px;font-weight:700;color:#5B48D6;
  background:linear-gradient(135deg,#F0EDFE 0%,#E6E1FF 100%);
  border:0.5px solid rgba(123,97,255,.25);border-radius:8px;padding:5px 10px;white-space:nowrap;
  box-shadow:0 1px 4px rgba(123,97,255,.12)}
.hv4-weather-main{display:flex;align-items:center;justify-content:center;gap:6px}
.hv4-weather-ico{font-size:34px;line-height:1}
.hv4-weather-temp{font-size:30px;font-weight:800;color:var(--text)}
.hv4-weather-city{font-size:13px;color:var(--text-2);font-weight:500}
.hv4-weather-tip{font-size:12.5px;color:#0F6E56;background:#E1F5EE;padding:2px 8px;border-radius:5px;font-weight:500;white-space:nowrap;max-width:100%}
/* Hero 右侧聚簇：天气 + 圆形时钟 + 进度环 */
.hv4-hero-right{margin-left:auto;display:flex;align-items:stretch;gap:16px}
/* 顶部 5 板块统一大小：等宽 + 等高 + 内容居中，内容不截断（min-height 保底，超出自动撑高）*/
.hv4-hero-right > .hv4-report-card,
.hv4-hero-right > .hv4-qdist-card,
.hv4-hero-right > .hv4-weather,
.hv4-hero-right > .hv4-prog-ring-wrap{
  flex:1 1 0;min-height:118px;box-sizing:border-box;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px
}
/* 数字时钟（方卡 v6 重设计：时分秒一行整齐、秒数字号不突兀） */
.hv4-clock-wrap{background:linear-gradient(135deg,#E8F4FF 0%,#F2FAFF 100%);
  border:0.5px solid rgba(42,92,138,.15);border-radius:14px;
  box-shadow:0 2px 8px rgba(42,92,138,.08)}
.hv4-digital-clock{display:flex;align-items:baseline;justify-content:center;gap:1px;
  font-variant-numeric:tabular-nums;line-height:1;color:#2A5C8A}
.hv4-dc-h,.hv4-dc-m{font-size:26px;font-weight:800;letter-spacing:1px}
.hv4-dc-colon{font-size:22px;font-weight:700;margin:0 2px;animation:hv4clkblink 1.6s steps(1,end) infinite}
.hv4-dc-sec{font-size:18px;font-weight:700;color:#C2590A;margin-left:2px}
@keyframes hv4clkblink{50%{opacity:.25}}
.hv4-clock-cap{font-size:11px;color:var(--text-3);letter-spacing:1px;font-weight:500}
/* 问候区内时钟（日期行下方，方形板块版） */
.hv4-clock-inline{display:inline-flex;align-items:baseline;gap:2px;width:fit-content;margin-top:2px;
  font-variant-numeric:tabular-nums;line-height:1;color:#2A5C8A;
  padding:5px 14px;border-radius:10px;
  background:linear-gradient(135deg,#E8F4FF 0%,#F2FAFF 100%);
  border:0.5px solid rgba(42,92,138,.18);box-shadow:0 2px 6px rgba(42,92,138,.08)}
.hv4-clock-inline .hv4-dc-clock-ico{font-size:14px;margin-right:6px}
.hv4-clock-inline .hv4-dc-h,.hv4-clock-inline .hv4-dc-m{font-size:20px;font-weight:700;letter-spacing:1px}
.hv4-clock-inline .hv4-dc-colon{font-size:17px;font-weight:700;margin:0 1px;animation:hv4clkblink 1.6s steps(1,end) infinite}
.hv4-clock-inline .hv4-dc-sec{font-size:15px;font-weight:700;color:#C2590A;margin-left:2px}

/* 运营关键词 + 黄历（宜忌） */
.hv4-keyword-row{display:flex;align-items:stretch;gap:14px;flex-wrap:wrap}
.hv4-keyword{flex:1;min-width:240px;display:flex;align-items:center;gap:9px;background:rgba(123,97,255,.1);
  border:0.5px solid rgba(123,97,255,.25);border-radius:12px;padding:9px 13px}
.hv4-kw-ico{font-size:18px;flex-shrink:0}
.hv4-kw-body{min-width:0}
.hv4-kw-title{font-size:12px;color:#534ABB;font-weight:600}
.hv4-kw-sub{font-size:11px;color:var(--text-2);margin-top:1px;line-height:1.4}
/* 黄历卡片：宜 / 忌 竖排精致卡片，与左侧关键词卡片等高对齐 */
.hv4-yiji-card{display:flex;align-items:center;gap:12px;flex-shrink:0;
  background:linear-gradient(135deg,#FFFDF7 0%,#FEF6EC 100%);
  border:0.5px solid rgba(214,178,99,.35);border-radius:12px;padding:9px 16px;
  box-shadow:0 2px 10px rgba(180,140,40,.10)}
.hv4-yiji-row{display:flex;align-items:center;gap:7px}
.hv4-yi-label,.hv4-ji-label{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}
.hv4-yi-label{background:linear-gradient(135deg,#5BA838,#3B6D11)}
.hv4-ji-label{background:linear-gradient(135deg,#D9534F,#A32D2D)}
.hv4-yi-val{font-size:13px;font-weight:600;color:#3B6D11}
.hv4-ji-val{font-size:13px;font-weight:600;color:#A32D2D}
.hv4-yiji-div{width:1px;align-self:stretch;background:linear-gradient(180deg,transparent,rgba(214,178,99,.5),transparent)}

/* 区块小标题 */
.dash-h{display:flex;align-items:center;gap:6px;margin:6px 0 12px;font-size:14px;font-weight:600;color:var(--text)}
.dash-h .dh-bar{width:3px;height:15px;background:var(--orange);border-radius:2px}

/* 数据概览卡片 */
.ov-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.ov-card{position:relative;overflow:hidden;background:#FFFFFF;border:1px solid var(--border);border-left:4px solid var(--orange);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;transition:.15s}
.ov-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.ov-card .ov-top{display:flex;align-items:center;justify-content:space-between}
.ov-card .ov-label{font-size:12px;color:var(--text-2)}
.ov-card .ov-ico{font-size:18px;opacity:.9}
.ov-card .ov-val{font-size:28px;font-weight:800;margin-top:6px;color:var(--text);line-height:1.1}
.ov-card .ov-val .ov-unit{font-size:13px;font-weight:500;color:var(--text-3);margin-left:3px}
.ov-card .ov-sub{font-size:11px;color:var(--text-3);margin-top:4px}
.ov-card.card-clickable{cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s}
.ov-card.card-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--orange)}

/* 中部两栏（饼图 + 排名） */
.dash-3col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;align-items:stretch}
.dash-3col .panel{margin-bottom:0}
.dash-3col .pie-panel{flex:none;min-width:0}

/* 排行榜卡片 */
.rank-list2{display:flex;flex-direction:column;gap:10px;padding-top:4px}
.rank-card{display:flex;align-items:center;gap:12px;padding:10px 12px;background:rgba(16,24,40,.03);border-radius:8px}
.rank-card.is-top1{background:var(--orange-light);border:1px solid rgba(255,122,26,.25)}
.rank-card .rc-no{width:26px;height:26px;border-radius:50%;background:rgba(16,24,40,.10);color:var(--text-2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.rank-card.is-top1 .rc-no{background:var(--orange);color:#fff}
.rank-card .rc-main{flex:1;min-width:0}
.rank-card .rc-name{font-size:13px;font-weight:600;color:var(--text)}
.rank-card .rc-bar{height:6px;background:rgba(16,24,40,.08);border-radius:3px;margin-top:6px;overflow:hidden}
.rank-card .rc-bar-fill{height:100%;background:rgba(16,24,40,.25);border-radius:3px}
.rank-card.is-top1 .rc-bar{background:rgba(255,122,26,.25)}
.rank-card.is-top1 .rc-bar-fill{background:var(--orange)}
.rank-card .rc-val{font-size:16px;font-weight:700;color:var(--text-2);flex-shrink:0}
.rank-card.is-top1 .rc-val{color:var(--orange-dark)}

/* AI 工作洞察面板 */
.insight-panel{margin-bottom:18px}
.insight-body{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.insight-col-h{font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:12px;padding-left:2px}
.ins-refresh-tip{display:inline-block;margin-left:8px;font-size:11px;font-weight:400;color:var(--text-3);background:rgba(123,97,255,.08);border:1px solid rgba(123,97,255,.18);padding:1px 7px;border-radius:20px;vertical-align:1px;transition:background .3s}
.ins-refresh-tip.flash{background:rgba(255,184,77,.45);border-color:rgba(255,184,77,.7);color:#7A3E00;font-weight:600}
.hv4-ur-refresh{margin-left:6px;font-size:11px;color:var(--text-3);background:rgba(123,97,255,.08);padding:1px 6px;border-radius:10px;font-weight:400;border:1px solid rgba(123,97,255,.18)}
.hv4-ur-refresh.flash{background:rgba(255,184,77,.45);border-color:rgba(255,184,77,.7);color:#7A3E00;font-weight:600}
/* 整块脉冲：每次轮询后给两块加 .refresh-pulse，让用户截图也能看到刷新动作 */
@keyframes wy-refresh-pulse{0%{box-shadow:0 0 0 0 rgba(123,97,255,.55)}100%{box-shadow:0 0 0 10px rgba(123,97,255,0)}}
.hv4-urgent-card.refresh-pulse,.insight-panel.refresh-pulse{animation:wy-refresh-pulse .8s ease-out}
.insight-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ins-card{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-left-width:3px;border-radius:10px}
.ins-card .ins-ico{font-size:20px;flex-shrink:0;width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px}
.ins-card-body{min-width:0}
.ins-card-val{font-size:19px;font-weight:700;color:var(--text);line-height:1.2}
.ins-card-label{font-size:12px;color:var(--text-2);margin-top:3px}
.ins-card-sub{font-size:11px;color:var(--text-3);margin-top:1px}
.ins-card.ins-red{border-left-color:var(--red)}.ins-card.ins-red .ins-ico{color:var(--red)}
.ins-card.ins-orange{border-left-color:var(--orange)}.ins-card.ins-orange .ins-ico{color:var(--orange-dark)}
.ins-card.ins-amber{border-left-color:#D97706}.ins-card.ins-amber .ins-ico{color:#D97706}
.ins-card.ins-blue{border-left-color:var(--blue)}.ins-card.ins-blue .ins-ico{color:#1E63C8}
.ins-card.ins-green{border-left-color:var(--green)}.ins-card.ins-green .ins-ico{color:#0F7A39}
.ins-card.ins-purple{border-left-color:var(--purple)}.ins-card.ins-purple .ins-ico{color:#5B3FD6}
.insight-feed{display:flex;flex-direction:column;gap:0}
.ins-feed-item{display:flex;align-items:flex-start;gap:10px;padding:11px 2px;border-bottom:1px dashed var(--border)}
.ins-feed-item:last-child{border-bottom:none}
.ins-feed-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:6px}
.ins-feed-dot.ins-red{background:var(--red)}.ins-feed-dot.ins-orange{background:var(--orange-dark)}
.ins-feed-dot.ins-amber{background:#D97706}.ins-feed-dot.ins-blue{background:var(--blue)}
.ins-feed-dot.ins-green{background:var(--green)}.ins-feed-dot.ins-purple{background:var(--purple)}
.ins-feed-text{font-size:13px;color:var(--text-2);line-height:1.6}
.ins-feed-text b{color:var(--text);font-weight:600}

/* 销售表排名徽章 */
.rk-badge{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;background:rgba(16,24,40,.08);color:var(--text-2);border-radius:50%;font-size:12px;font-weight:700}
.rk-badge.rk-top1{background:var(--orange-light);color:var(--orange-dark)}

/* 销售端工作提示任务卡 */
.task-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.task-card{display:flex;align-items:center;gap:12px;padding:16px 18px;background:#FFFFFF;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;transition:transform .12s,box-shadow .12s}
.task-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.task-card .tc-ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.task-card.tc-warn .tc-ico{background:var(--orange-light);color:var(--orange-dark)}
.task-card.tc-blue .tc-ico{background:var(--blue-light);color:#1E63C8}
.task-card.tc-green .tc-ico{background:var(--green-light);color:#0F7A39}
.task-card .tc-body{flex:1;min-width:0}
.task-card .tc-title{font-size:14px;font-weight:600;color:var(--text)}
.task-card .tc-desc{font-size:12px;color:var(--text-3);margin-top:3px;line-height:1.5}
.task-card .tc-num{font-size:24px;font-weight:800;color:var(--text);flex-shrink:0}

/* 响应式 */
@media (max-width:1080px){
  .ov-grid{grid-template-columns:repeat(2,1fr)}
  .dash-3col{grid-template-columns:1fr}
  .task-list{grid-template-columns:1fr}
  .insight-body{grid-template-columns:1fr;gap:18px}
  .insight-cards{grid-template-columns:1fr 1fr}
}
body.compact .ov-grid{gap:10px}

/* ===== 首页工作台视觉升级 v5 (2026-08-24) ===== */
/* 问候区：更克制的渐变 + 更挺的阴影 */
.hv4-greet-row{
  padding:22px 26px;
  background:linear-gradient(135deg,#FFF6EE 0%,#FDEFE6 48%,#F3EEFF 100%);
  border:1px solid #ECE6F5;
  border-radius:18px;
  box-shadow:0 10px 30px rgba(123,97,255,.10);
  gap:22px;
  flex-wrap:wrap;
}
.hv4-avatar{box-shadow:0 8px 22px rgba(255,106,0,.32)}
.hv4-greet-text{font-size:21px;font-weight:700}
.hv4-date-num{font-size:28px;font-weight:800}

/* Hero 右侧 4 卡 -> 2x2 网格，统一白卡 */
.hv4-hero-right{
  margin-left:auto;
  display:flex;
  align-items:stretch;
  gap:14px;
  flex:1 1 0;
  min-width:0;
  flex-wrap:wrap;
}
.hv4-hero-right > .hv4-report-card,
.hv4-hero-right > .hv4-qdist-card,
.hv4-hero-right > .hv4-weather,
.hv4-hero-right > .hv4-prog-ring-wrap{
  flex:1 1 0;
  min-width:0;
  min-height:122px;
  background:#fff;
  border:1px solid #ECE6F5;
  border-radius:14px;
  box-shadow:0 4px 14px rgba(16,24,40,.06);
  padding:14px 16px;
}
.hv4-weather{backdrop-filter:none;-webkit-backdrop-filter:none}

/* 每日锦囊条 */
.hv4b-jinang{display:flex;align-items:center;gap:14px;margin-top:14px;padding:12px 16px;background:#fff;border:1px solid #ECE6F5;border-radius:14px;box-shadow:0 4px 14px rgba(16,24,40,.05)}
.hv4b-jn-left{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.hv4b-jn-badge{width:30px;height:30px;border-radius:9px;background:rgba(123,97,255,.12);color:#7B61FF;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex:none}
.hv4b-jn-kw{display:flex;flex-direction:column;gap:1px;min-width:0}
.hv4b-jn-kw b{font-size:13px;color:#534ABB;font-weight:700}
.hv4b-jn-kw span{font-size:12px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hv4b-jn-yiji{display:flex;align-items:center;gap:10px;font-size:12px;flex:none}
.hv4b-yi{color:#3B6D11;background:#EAF3DE;padding:3px 10px;border-radius:8px;font-weight:600}
.hv4b-ji{color:#A32D2D;background:#FCEBEB;padding:3px 10px;border-radius:8px;font-weight:600}

/* 三栏：冲刺 / 漏斗 / TOP3 统一卡片语言 */
.hv4-sprint-row{gap:14px}
.hv4-sprint-card,.hv4-funnel-card,.hv4-urgent-card{
  border:1px solid #ECE6F5;
  border-radius:16px;
  box-shadow:0 6px 20px rgba(16,24,40,.06);
}
.hv4-sprint-card{border-left:4px solid #FF6A00}

/* 指标卡 */
.hv4-metric-card{
  border:1px solid #ECE6F5;
  border-radius:14px;
  box-shadow:0 4px 14px rgba(16,24,40,.06);
}
.hv4-metric-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(16,24,40,.10)}

/* 提醒胶囊 */
.hv4-alerts-wrap{border:1px solid #ECE6F5;border-radius:14px;box-shadow:0 4px 14px rgba(16,24,40,.06)}
.hv4-acap{border-radius:20px;padding:7px 14px;border-color:transparent !important}

/* 底部 一言 + 趋势 */
.hv4-bottom-row{grid-template-columns:1fr 220px}
.hv4-quote-bar{border-radius:14px}
.hv4-trend-card{border:1px solid #ECE6F5;border-radius:14px;box-shadow:0 4px 14px rgba(16,24,40,.06)}

/* 窄屏 / 放大适配 */
@media (max-width:1080px){
  .hv4-hero-right{flex-wrap:wrap;gap:12px}
  .hv4-hero-right > .hv4-report-card,
  .hv4-hero-right > .hv4-qdist-card,
  .hv4-hero-right > .hv4-weather,
  .hv4-hero-right > .hv4-prog-ring-wrap{
    flex:1 1 calc(50% - 12px);
    min-width:150px;
  }
}
@media (max-width:560px){
  .hv4-greet-row{flex-direction:column;align-items:stretch}
  .hv4-hero-right{flex-wrap:wrap;gap:12px}
  .hv4-hero-right > .hv4-report-card,
  .hv4-hero-right > .hv4-qdist-card,
  .hv4-hero-right > .hv4-weather,
  .hv4-hero-right > .hv4-prog-ring-wrap{
    flex:1 1 100%;
  }
}

/* ===== 首页 Hero 无留白重设计 v6（仅问候区+锦囊条） ===== */
.hero-v4.hv6-hero{
  display:grid;
  grid-template-columns:1fr 1.25fr 1.15fr;
  gap:14px;
  align-items:stretch;
  margin:0;padding:0;background:transparent;
}
.hv6-panel{
  background:#fff;border:1px solid #E8ECF1;border-radius:14px;padding:18px 20px;
  min-height:150px;box-shadow:0 1px 3px rgba(16,24,40,.04);
}
/* 左：问候 */
.hv6-greet{
  background:linear-gradient(135deg,#FFF7ED 0%,#FFFDF9 40%,#F4F2FF 100%);
  border:none;display:flex;flex-direction:column;justify-content:center;gap:10px;position:relative;overflow:hidden;
}
.hv6-greet::after{content:'';position:absolute;bottom:-30px;right:-20px;width:120px;height:120px;background:radial-gradient(circle,rgba(123,97,255,.08),transparent 70%);border-radius:50%;}
.hv6-top{display:flex;align-items:center;gap:12px;}
.hv6-avatar{width:50px;height:50px;border-radius:14px;background:linear-gradient(135deg,#FF6A00,#FF8F3D);color:#fff;font-size:19px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 4px 12px rgba(255,106,0,.22);}
.hv6-name{font-size:17px;font-weight:600;color:#1a1a2e;}
.hv6-badge{font-size:11px;color:#888;background:rgba(0,0,0,.04);padding:2px 9px;border-radius:10px;}
.hv6-date{display:flex;align-items:baseline;gap:10px;}
.hv6-date-num{font-size:30px;font-weight:700;color:#FF6A00;line-height:1;}
.hv6-date-rest{font-size:13px;color:#888;}
.hv6-pills{display:flex;gap:8px;flex-wrap:wrap;}
.hv6-greet .hv4-clock-wrap{margin-top:2px;font-size:15px;color:#666;}
/* 中：快捷操作 */
.hv6-quick{display:flex;flex-direction:column;gap:12px;}
.hv6-q-title{font-size:13px;font-weight:600;color:#444;display:flex;align-items:center;gap:6px;}
.hv6-q-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;flex:1;}
.hv6-q-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#F8F9FC;border:1px solid #EEF0F4;border-radius:11px;padding:12px 6px;cursor:pointer;transition:.15s;}
.hv6-q-btn:hover{background:#fff;border-color:#FF6A00;transform:translateY(-2px);box-shadow:0 4px 10px rgba(255,106,0,.12);}
.hv6-q-ico{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;color:#fff;}
.hv6-q-lab{font-size:11.5px;color:#555;font-weight:500;}
/* 右：4 张数据卡 */
.hv6-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:transparent;border:none;padding:0;align-items:stretch;}
.hv6-stats > .hv4-report-card,
.hv6-stats > .hv4-qdist-card,
.hv6-stats > .hv4-weather{background:#fff;border:1px solid #EDEEF0;border-radius:12px;padding:14px;height:100%;box-shadow:0 1px 3px rgba(16,24,40,.04);}
.hv6-stats .hv4-weather-banner{margin:-2px -2px 8px;font-size:11px;}
.hv6-k{background:#fff;border:1px solid #EDEEF0;border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;justify-content:center;box-shadow:0 1px 3px rgba(16,24,40,.04);}
.hv6-k-head{font-size:11px;color:#999;margin-bottom:5px;}
.hv6-k-num{font-size:22px;font-weight:700;color:#1a1a2e;line-height:1.1;}
.hv6-k-sub{font-size:11px;color:#aaa;margin-top:3px;}
.hv6-c-orange .hv6-k-num{color:#FF6A00;}
.hv6-c-purple .hv6-k-num{color:#7B61FF;}
.hv6-c-blue .hv6-k-num{color:#2563EB;}
.hv6-c-green .hv6-k-num{color:#16A34A;}
/* 锦囊条 */
.hv6-jn{grid-column:1 / -1;margin-top:2px;background:#fff;border-radius:12px;border:1px solid #E8ECF1;padding:15px 20px;display:flex;align-items:center;gap:16px;position:relative;overflow:hidden;}
.hv6-jn::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,#FF6A00,#7B61FF);}
.hv6-jn-ico{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#FFF7ED,#FEF3E0);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.hv6-jn-body{flex:1;min-width:0;}
.hv6-jn-kw{font-size:13px;}
.hv6-jn-kw b{color:#FF6A00;}
.hv6-jn-s{font-size:12px;color:#999;margin-top:2px;}
.hv6-jn-yj{display:flex;gap:10px;flex-shrink:0;}
.hv6-yj{font-size:12px;padding:5px 11px;border-radius:8px;font-weight:500;}
.hv6-yj-y{background:rgba(22,163,74,.08);color:#16A34A;}
.hv6-yj-j{background:rgba(234,179,8,.1);color:#B45309;}
@media (max-width:1080px){
  .hero-v4.hv6-hero{grid-template-columns:1fr;}
  .hv6-jn{grid-column:auto;}
}


/* ===== 首页 Hero 重设计 v7（单行自适应·简洁·杜绝放大溢出） ===== */



/* ==================================================================
 * 运营角色工作台 P0（运营看板 / 客户服务库 / 客户服务详情）
 * 设计语言沿用：白卡片 + --border + --shadow + --radius，品牌橙主色
 * ================================================================== */

/* ---------- 布局容器 ---------- */
.ops-wrap{display:flex;flex-direction:column;gap:16px}

/* ---------- 顶部 Hero ---------- */
.ops-hero{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 24px;border-radius:var(--radius);
  background:linear-gradient(120deg,#FFF3E8 0%,#FFFAF4 55%,#F3F0FF 100%);
  border:1px solid rgba(255,122,26,.18);
  box-shadow:0 2px 10px rgba(255,122,26,.08);
  position:relative;overflow:hidden;
}
.ops-hero::after{
  content:'';position:absolute;right:-30px;top:-40px;width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,122,26,.16) 0%,rgba(255,122,26,0) 70%);
}
.ops-hero-text{min-width:0;position:relative;z-index:1}
.ops-hero-title{font-size:20px;font-weight:800;color:var(--text);letter-spacing:.3px}
.ops-hero-sub{margin-top:6px;font-size:12.5px;color:var(--text-2)}
.ops-hero-badge{
  flex-shrink:0;position:relative;z-index:1;
  font-size:12px;font-weight:600;color:var(--orange-dark);
  background:rgba(255,255,255,.85);border:1px solid rgba(255,122,26,.35);
  padding:6px 14px;border-radius:999px;white-space:nowrap;
}

/* ---------- 5 大核心指标卡 ---------- */
.ops-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.ops-metric{
  position:relative;background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 16px 14px;
  display:grid;grid-template-columns:auto 1fr;column-gap:12px;row-gap:8px;align-items:center;
  transition:.18s;
}
.ops-metric:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(16,24,40,.09)}
.ops-metric-icon{
  width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:19px;background:var(--orange-light);
}
.ops-metric.tone-primary .ops-metric-icon{background:rgba(47,127,240,.12)}
.ops-metric.tone-danger  .ops-metric-icon{background:rgba(239,68,68,.12)}
.ops-metric.tone-default .ops-metric-icon{background:rgba(16,24,40,.06)}
.ops-metric-body{min-width:0}
.ops-metric-val{font-size:26px;font-weight:800;line-height:1.1;color:var(--text)}
.ops-metric.tone-primary .ops-metric-val{color:var(--blue)}
.ops-metric.tone-danger  .ops-metric-val{color:var(--red)}
.ops-metric-label{margin-top:3px;font-size:12px;color:var(--text-2)}
.ops-metric.is-soon{background:#FBFCFE;border-style:dashed}
.ops-metric.is-soon .ops-metric-val{color:var(--text-3)}
.ops-metric.is-soon .ops-metric-icon{filter:grayscale(.6);opacity:.7}
.ops-metric-soon{
  position:absolute;top:10px;right:12px;font-size:10px;font-weight:600;
  color:var(--purple);background:rgba(123,97,255,.12);padding:2px 7px;border-radius:6px;white-space:nowrap;
}
.ops-metric-note{
  grid-column:1 / -1;margin-top:2px;padding-top:8px;border-top:1px dashed var(--border);
  font-size:11px;color:var(--text-3);line-height:1.5;
}

/* ---------- 分布条形图 ---------- */
.ops-dist-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ops-bar-row{display:grid;grid-template-columns:88px 1fr 96px;align-items:center;gap:12px;padding:7px 0}
.ops-bar-name{font-size:12.5px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ops-bar-track{height:9px;border-radius:999px;background:rgba(16,24,40,.06);overflow:hidden}
.ops-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--orange) 0%,#FFA559 100%);transition:width .4s ease}
.ops-bar-num{font-size:12px;color:var(--text-2);text-align:right;white-space:nowrap}
.ops-bar-share{color:var(--text-3);font-size:11px;margin-left:2px}

/* ---------- 面板标题副说明 ---------- */
.ops-title-hint{font-size:11.5px;font-weight:400;color:var(--text-3);margin-left:2px}

/* ---------- 表格 ---------- */
.ops-tbl{margin-top:2px;width:100%;border-collapse:collapse;table-layout:fixed}
.ops-tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--border);border-radius:var(--radius-sm)}
.ops-tbl th,.ops-tbl td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:middle}
.ops-tbl th{background:var(--bg);font-weight:700;font-size:12px;color:var(--text-2);position:sticky;top:0;z-index:1}
.ops-tbl tbody tr:hover{background:var(--bg)}
.ops-tbl .ops-company-link{display:block;color:var(--primary);font-weight:600;line-height:1.4}
.ops-tbl .ops-company-link:hover{text-decoration:underline}
.ops-tbl .ops-sub{font-size:11px;color:var(--text-3);margin-top:2px;line-height:1.3}
.ops-sub{margin-top:2px;font-size:11px;color:var(--text-3)}
.ops-link{color:var(--blue);text-decoration:none;font-size:12.5px}
.ops-link:hover{text-decoration:underline}

/* ---------- 到期状态标签 ---------- */
.ops-tag{
  display:inline-block;font-size:11px;font-weight:600;line-height:1.6;
  padding:2px 8px;border-radius:6px;white-space:nowrap;
}
.ops-tag-expired{background:rgba(239,68,68,.12);color:#DC2626}
.ops-tag-urgent {background:rgba(239,68,68,.10);color:#EA580C}
.ops-tag-warn   {background:rgba(245,166,35,.16);color:#B45309}
.ops-tag-normal {background:rgba(22,163,74,.12);color:var(--green)}
.ops-tag-none   {background:rgba(16,24,40,.06);color:var(--text-3)}
.ops-days{margin-left:6px;font-size:11px;color:var(--text-3)}

/* ---------- 空状态 ---------- */
.ops-empty{padding:48px 20px;text-align:center;color:var(--text-2);font-size:13.5px}
.ops-empty-icon{font-size:36px;margin-bottom:10px;opacity:.6}
.ops-empty-sub{margin-top:6px;font-size:12px;color:var(--text-3)}
.ops-empty-sm{padding:22px 12px;text-align:center;font-size:12.5px;color:var(--text-3)}

/* ---------- 筛选栏 ---------- */
.ops-filter{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.ops-filter .input{flex:0 1 220px;min-width:180px}
.ops-filter .select{flex:0 0 auto;min-width:130px}

/* ---------- 列表内标签 ---------- */
.ops-stage,.ops-level{
  display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:6px;white-space:nowrap;
}
.ops-stage{background:rgba(47,127,240,.12);color:#1D63D1}
.ops-level{background:rgba(123,97,255,.13);color:#6D46F0}
.ops-unassigned{color:var(--amber);font-size:12px;font-weight:600}
.ops-note-count{
  display:inline-block;min-width:20px;text-align:center;font-size:11px;font-weight:700;
  color:var(--orange-dark);background:var(--orange-light);padding:2px 7px;border-radius:999px;
}

/* ---------- 分页 ---------- */
.ops-pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px}
.ops-pager-info{font-size:12px;color:var(--text-3);margin-right:auto}

/* ---------- 分配运营弹窗 ---------- */
.ops-assign-tip{font-size:13px;color:var(--text-2);margin-bottom:14px}
.ops-assign-tip b{color:var(--text)}
.ops-assign-hint{margin-top:12px;font-size:11.5px;color:var(--text-3);line-height:1.6}

/* ---------- 详情页 ---------- */
.ops-back{margin-bottom:2px}
.ops-back a{font-size:12.5px;color:var(--text-2);cursor:pointer;text-decoration:none}
.ops-back a:hover{color:var(--orange-dark)}

.ops-remark{
  margin-top:16px;padding:12px 14px;border-radius:var(--radius-sm);
  background:rgba(255,122,26,.06);border-left:3px solid var(--orange);
}
.ops-remark-label{display:block;font-size:11px;font-weight:700;color:var(--orange-dark);margin-bottom:5px;letter-spacing:.3px}
.ops-remark-body{font-size:13px;color:var(--text);line-height:1.7;white-space:pre-wrap;word-break:break-word}

/* ---------- 服务模块宫格 ---------- */
.ops-mods{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ops-mod{
  position:relative;padding:16px 12px 14px;border-radius:var(--radius-sm);text-align:center;
  border:1px solid var(--border);background:#FBFCFE;transition:.18s;
}
.ops-mod.is-ready{cursor:pointer;background:var(--panel);border-color:rgba(255,122,26,.35);box-shadow:0 1px 4px rgba(255,122,26,.10)}
.ops-mod.is-ready:hover{transform:translateY(-3px);box-shadow:0 8px 18px rgba(255,122,26,.16);border-color:var(--orange)}
.ops-mod:not(.is-ready){opacity:.72;cursor:not-allowed}
.ops-mod-icon{font-size:24px;line-height:1;margin-bottom:8px}
.ops-mod:not(.is-ready) .ops-mod-icon{filter:grayscale(.75);opacity:.65}
.ops-mod-name{font-size:13px;font-weight:600;color:var(--text)}
.ops-mod-state{margin-top:6px;font-size:11px;color:var(--text-3)}
.ops-mod-state.ready{color:var(--green);font-weight:600}

/* ---------- 备注与交接 ---------- */
.ops-note-input{display:flex;gap:10px;align-items:flex-start;margin-bottom:16px}
.ops-note-input .input{flex:1;resize:vertical;line-height:1.6}
.ops-note-input .btn{flex-shrink:0}
.ops-notes{display:flex;flex-direction:column;gap:10px}
.ops-note{
  padding:12px 14px;border-radius:var(--radius-sm);
  background:#FAFBFD;border:1px solid var(--border);
}
.ops-note-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.ops-note-author{font-size:12.5px;font-weight:700;color:var(--text)}
.ops-note-role{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:5px;background:rgba(47,127,240,.12);color:#1D63D1}
.ops-note-time{font-size:11px;color:var(--text-3)}
.ops-note-head .op-link{margin-left:auto;font-size:11.5px}
.ops-note-body{font-size:13px;color:var(--text);line-height:1.75;white-space:pre-wrap;word-break:break-word}

/* ---------- 分配提醒弹窗 ---------- */
.ops-popup-body{font-size:13.5px;color:var(--text);line-height:1.8}
.ops-popup-body b{color:var(--orange-dark)}
.bi-dot.ops{background:var(--orange)}

/* ---------- 响应式 ---------- */
@media (max-width:1280px){
  .ops-metrics{grid-template-columns:repeat(3,1fr)}
  .ops-mods{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:1080px){
  .ops-dist-grid{grid-template-columns:1fr}
  .ops-mods{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:720px){
  .ops-metrics{grid-template-columns:repeat(2,1fr)}
  .ops-hero{flex-direction:column;align-items:flex-start}
  .ops-filter .input{flex:1 1 100%}
  .ops-bar-row{grid-template-columns:72px 1fr 84px}
}

/* ================= 运营模块：新增签约客户（建档表单） ================= */
.ops-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ops-head .ops-title-hint { margin-right: auto; }
.ops-head-btn { white-space: nowrap; }

.ops-form { width: 100%; }
.ops-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 16px;
}
.ops-form .form-row { margin-bottom: 12px; }
.ops-form .form-row label {
  display: block;
  font-size: 12px;
  color: var(--text-2);
  margin-bottom: 5px;
  font-weight: 600;
}
.ops-form .form-row .req { color: var(--red); }
.ops-form .form-row input,
.ops-form .form-row select,
.ops-form .form-row textarea {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--text);
  background: #fff;
  outline: none;
  transition: border-color .15s, box-shadow .15s;
  font-family: inherit;
}
.ops-form .form-row input:focus,
.ops-form .form-row select:focus,
.ops-form .form-row textarea:focus {
  border-color: var(--orange);
  box-shadow: 0 0 0 3px var(--orange-light);
}
.ops-form .form-row textarea { resize: vertical; min-height: 54px; line-height: 1.6; }

@media (max-width: 720px) {
  .ops-form-grid { grid-template-columns: 1fr; }
  .ops-head-btn { margin-left: 0; }
}

/* ================= 运营模块 P1：任务卡 / 每日登记 / 到期提醒 ================= */

/* 进度条（页面头部通用） */
.ops-plan-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  margin-bottom: 16px;
  background: linear-gradient(180deg, rgba(255,122,26,.06), rgba(255,122,26,.02));
  border: 1px solid rgba(255,122,26,.18);
  border-radius: var(--radius);
  flex-wrap: wrap;
}
.ops-plan-meta {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--text-2);
}
.ops-plan-meta b { color: var(--text); font-size: 15px; }
.ops-prog {
  flex: 1;
  min-width: 160px;
  height: 8px;
  background: rgba(16,24,40,.08);
  border-radius: 999px;
  overflow: hidden;
}
.ops-prog-fill {
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, var(--orange), #FFA45C);
  transition: width .3s ease;
}
.ops-prog-text {
  min-width: 44px;
  text-align: right;
  font-size: 15px;
  font-weight: 700;
  color: var(--orange-dark);
}

/* ---------------- 前七天 / 前五周：任务日（周）卡片 ---------------- */
.ops-days, .ops-weeks { display: flex; flex-direction: column; gap: 14px; }

.ops-day, .ops-week {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--panel);
  overflow: hidden;
  transition: border-color .15s, box-shadow .15s;
}
.ops-day.is-today, .ops-week.is-today {
  border-color: var(--orange);
  box-shadow: 0 0 0 3px var(--orange-light);
}
.ops-day.is-past, .ops-week.is-past { opacity: .82; }

.ops-day-head, .ops-week-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 14px;
  background: rgba(16,24,40,.025);
  border-bottom: 1px solid var(--border);
  flex-wrap: wrap;
}
.ops-day-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--orange-light);
  color: var(--orange-dark);
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
}
.ops-day-title { font-weight: 600; color: var(--text); font-size: 14px; }
.ops-day-date { font-size: 12px; color: var(--text-3); }
.ops-day-prog {
  margin-left: auto;
  font-size: 12px;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.ops-day-body, .ops-week-body { padding: 4px 14px 12px; }

/* 任务项 */
.ops-task {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 9px 2px;
  border-bottom: 1px dashed rgba(16,24,40,.07);
}
.ops-task:last-of-type { border-bottom: none; }
.ops-task-chk {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  flex: 1;
  cursor: pointer;
  font-size: 13.5px;
  line-height: 1.6;
}
.ops-task-chk input[type=checkbox] {
  width: 16px; height: 16px;
  margin-top: 3px;
  accent-color: var(--orange);
  cursor: pointer;
  flex-shrink: 0;
}
.ops-task-text { color: var(--text); word-break: break-word; }
.ops-task.is-done .ops-task-text {
  color: var(--text-3);
  text-decoration: line-through;
}
.ops-task-date {
  display: inline-block;
  min-width: 82px;
  color: var(--text-3);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.ops-task-meta {
  font-size: 11.5px;
  color: var(--text-3);
  white-space: nowrap;
  flex-shrink: 0;
  padding-top: 3px;
}

/* 补充任务输入行 */
.ops-add-task {
  display: flex;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(16,24,40,.06);
}
.ops-add-task .input { flex: 1; font-size: 13px; }

/* 前五周：复盘 / 计划 分组 */
.ops-group { padding: 8px 0 4px; }
.ops-group + .ops-group { border-top: 1px solid rgba(16,24,40,.06); }
.ops-group-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  padding: 4px 0 2px;
}
.ops-group-count {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--text-3);
  background: rgba(16,24,40,.05);
  padding: 1px 8px;
  border-radius: 999px;
}

/* ---------------- 每日任务登记（日历模式） ---------------- */
.ops-daily-intro{font-size:12.5px;color:var(--text-2);margin-bottom:10px;padding:8px 12px;background:var(--bg);border-radius:var(--radius-sm);border-left:3px solid var(--blue)}

/* 日历视图 */
.ops-dcal-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg);border-radius:var(--radius-sm);margin-bottom:8px;font-size:13px}
.ops-dcal-today{font-weight:700;color:var(--text)}
.ops-dcal-arrow{color:var(--text-3)}
.ops-dcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:16px}
.ops-dcal-day{border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 6px;background:var(--panel);min-height:100px;display:flex;flex-direction:column;transition:all .15s}
.ops-dcal-day.is-tomorrow{border-color:var(--blue);background:#eff6ff}
.ops-dcal-day.is-filled{border-color:var(--green-dark);background:#f0fff4}
.ops-dcal-day.is-locked{opacity:.5;background:var(--bg)}
.ops-dcal-date{font-size:11.5px;font-weight:700;color:var(--text-2);margin-bottom:4px}
.ops-dcal-date small{font-weight:400;color:var(--text-3);margin-left:3px}
.ops-dcal-editable{font-size:11px;color:var(--blue);cursor:pointer;text-align:center;padding:10px 0;border:1px dashed var(--blue);border-radius:4px}
.ops-dcal-lock{font-size:11px;color:var(--text-3);text-align:center;padding:20px 0}
.ops-dcal-content{font-size:11.5px;line-height:1.55;color:var(--text);word-break:break-word;flex:1;overflow:auto}
.ops-dcal-meta{font-size:10px;color:var(--text-3);margin-top:4px}

/* 填写表单 */
.ops-daily-form{border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:16px;background:var(--panel)}
.ops-daily-form-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ops-dcal-date-badge{background:var(--orange);color:#fff;padding:3px 10px;border-radius:4px;font-size:12px;font-weight:700;white-space:nowrap}
.ops-dcal-date-badge.sm{background:var(--border);color:var(--text-2);padding:1px 6px;font-size:10px}
.ops-dcal-hint{font-size:12px;color:var(--text-2)}
.ops-daily-form-ref{margin-bottom:10px}
.ops-ref-title{font-size:11.5px;color:var(--text-2);margin-bottom:4px}
.ops-ref-body{font-size:11px;line-height:1.6;color:var(--text-3);padding:8px 10px;background:var(--bg);border-radius:var(--radius-sm);max-height:120px;overflow:auto}
.saved-content{font-size:13px;line-height:1.7;color:var(--text)}

/* 历史记录 */
.ops-daily-history{margin-top:8px}
.ops-daily-hist-head{font-size:13px;font-weight:700;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.ops-daily-hist-item{display:flex;gap:8px;padding:8px 0;border-bottom:1px dashed var(--border);align-items:flex-start}
.ops-daily-hist-item:last-child{border-bottom:none}
  display: flex;
  gap: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.ops-month-bar { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.ops-month-chip {
  padding: 3px 11px;
  border-radius: 999px;
  background: rgba(16,24,40,.05);
  color: var(--text-2);
  font-size: 12px;
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
}
.ops-month-chip:hover { background: var(--orange-light); color: var(--orange-dark); }
.ops-month-chip.is-on {
  background: var(--orange);
  color: #fff;
  font-weight: 600;
}

/* ---------------- 到期提醒 ---------------- */
.ops-exp-sum {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.ops-exp-card {
  padding: 14px 16px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--panel);
  cursor: pointer;
  transition: transform .15s, box-shadow .15s, border-color .15s;
}
.ops-exp-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.ops-exp-num { font-size: 26px; font-weight: 800; line-height: 1.2; }
.ops-exp-label { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.ops-exp-card.ops-tag-expired { border-color: rgba(239,68,68,.35); background: rgba(239,68,68,.06); }
.ops-exp-card.ops-tag-expired .ops-exp-num { color: var(--red); }
.ops-exp-card.ops-tag-urgent { border-color: rgba(245,166,35,.4); background: rgba(245,166,35,.08); }
.ops-exp-card.ops-tag-urgent .ops-exp-num { color: var(--amber); }
.ops-exp-card.ops-tag-warn { border-color: rgba(47,127,240,.3); background: rgba(47,127,240,.06); }
.ops-exp-card.ops-tag-warn .ops-exp-num { color: var(--blue); }
.ops-exp-card.ops-tag-normal .ops-exp-num { color: var(--green); }

/* 模块宫格：未上线置灰 */
.ops-mod.is-locked { opacity: .5; cursor: not-allowed; }
.ops-mod.is-locked:hover { transform: none; box-shadow: none; border-color: var(--border); }

@media (max-width: 860px) {
  .ops-exp-sum { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ops-prog { min-width: 100%; order: 3; }
  .ops-prog-text { order: 4; }
}

/* ==================== P2：店铺诊断 / 巡店 / 核心数据 / 复盘 / 物料库 / 统计 ==================== */

/* 通用表单行与操作区 */
.ops-form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.ops-form-row>span{font-size:12px;color:var(--text-2);font-weight:600}
.ops-form-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}
.ops-ta{min-height:74px;resize:vertical;line-height:1.6;padding:9px 11px}

/* ---------- 店铺诊断 ---------- */
.ops-diag-list{display:flex;flex-direction:column;gap:10px;margin-bottom:6px}
.ops-diag-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 13px;background:var(--panel)}
.ops-diag-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ops-diag-slogan{font-size:12.5px;color:var(--text-2);flex:1;min-width:120px}
.ops-diag-concl{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);font-size:12.5px;color:var(--text-2);line-height:1.6}
.ops-diag-editor{display:flex;flex-direction:column;gap:8px;margin:10px 0}
.ops-diag-item{display:grid;grid-template-columns:minmax(0,1fr) 96px 84px minmax(0,1.1fr) 40px;gap:8px;align-items:center;
  padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}
.ops-diag-text{font-size:12.5px;color:var(--text);line-height:1.5}
.ops-diag-scope{display:block;font-size:11px;color:var(--text-3);margin-top:2px}
.ops-diag-sel{padding:5px 6px;font-size:12px}
.ops-diag-note{padding:6px 9px;font-size:12px}

/* ---------- 周五巡店 ---------- */
.ops-patrol-weeks{margin-bottom:12px}
.ops-patrol-groups{display:flex;flex-direction:column;gap:12px}
.ops-patrol-group{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.ops-patrol-gtitle{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--bg);
  font-size:13px;font-weight:700;color:var(--text);border-bottom:1px solid var(--border)}
.ops-patrol-scope{font-size:11px;font-weight:400;color:var(--text-3);margin-left:auto}
.ops-patrol-group .ops-task{padding:8px 12px;border-bottom:1px solid var(--border)}
.ops-patrol-group .ops-task:last-child{border-bottom:none}
.ops-patrol-group .ops-task-chk{flex:1}
/* 运营填写的备注统一红色，醒目 */
.ops-patrol-note{flex:0 1 300px;min-width:150px;padding:6px 9px;font-size:12px;
  color:#e53e3e;font-weight:600;border-color:#f5c6c6;background:#fff8f8}
.ops-patrol-note::placeholder{color:#f0a5a5;font-weight:400}
.ops-patrol-note:focus{border-color:#e53e3e;background:#fff}

/* 巡店分享图弹窗 */
.pt-share-box{display:inline-block;max-width:100%}
.pt-share-img{max-width:100%;max-height:66vh;border-radius:10px;border:1px solid var(--border);
  box-shadow:0 8px 24px rgba(0,0,0,.14);background:#fff}
.pt-share-tip{margin-top:10px;font-size:12px;color:var(--text-3);text-align:center}

/* ---------- 核心数据表 ---------- */
.ops-core-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;margin:12px 0}
.ops-core-item{display:flex;flex-direction:column;gap:5px;padding:10px 12px;
  border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel)}
.ops-core-item:hover{border-color:var(--border-strong)}
.ops-core-label{font-size:12.5px;color:var(--text);line-height:1.5;display:flex;gap:5px;align-items:baseline}
.ops-core-label b{color:var(--orange-dark);font-size:11px;min-width:16px}
.ops-core-label i{font-style:normal;font-size:11px;color:var(--text-3)}
.ops-core-item .input{padding:7px 10px;font-size:12.5px}
.ops-core-sub{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.ops-core-sub:last-child{margin-bottom:0}
.ops-core-sub-label{font-size:11.5px;color:var(--text-2);white-space:nowrap;min-width:72px}
.ops-core-sub-input{flex:1;min-width:0;padding:5px 8px;font-size:12px}
.ops-core-req{color:#e53e3e;font-size:10px;border:1px solid #e53e3e;border-radius:2px;padding:0 3px;margin-left:4px;font-style:normal}
.ops-core-item.is-required{border-left:3px solid #e53e3e}
.ops-core-req-hint{color:#c05621}
.ops-core-req-hint b{color:#e53e3e}
.ops-month-chip.is-next{border-style:dashed;opacity:.7;cursor:pointer}
.ops-month-chip.is-next:hover{opacity:1;border-color:var(--blue)}

/* ---------- 月度复盘（Word上传模式） ---------- */
.ops-review-upload{border:2px dashed var(--border);border-radius:var(--radius-sm);padding:20px;margin-bottom:16px;text-align:center;background:var(--bg)}
.ops-review-upload-head{font-size:14px;font-weight:700;color:var(--text);margin-bottom:10px}
.ops-review-upload-body{display:flex;flex-direction:column;align-items:center;gap:8px}
.ops-review-upload-body input[type=file]{font-size:13px;padding:6px}
.ops-review-upload-hint{font-size:11.5px;color:var(--text-3)}
.ops-review-months{display:flex;flex-direction:column;gap:12px}
.ops-review-month-card{border:1px solid var(--border);border-left:4px solid var(--orange);border-radius:var(--radius-sm);padding:14px 16px;background:var(--panel)}
.ops-review-mhead{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.ops-review-mbody{font-size:13px;line-height:1.75;color:var(--text);white-space:pre-wrap;word-break:break-word;padding:10px 14px;background:var(--bg);border-radius:var(--radius-sm)}
.ops-review-mbody b{color:var(--orange-dark)}
.ops-review-mfile{font-size:11px;color:var(--text-3);margin-top:6px}

/* ---------- 运营物料库（文件上传模式） ---------- */
.mt-panel{margin-bottom:14px}
.mt-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:18px 22px;border-radius:12px;margin-bottom:14px;color:#fff;
  background:linear-gradient(120deg,#ff8a3d 0%,#f4661b 55%,#d94f00 100%);
  box-shadow:0 6px 18px rgba(244,102,27,.22)}
.mt-hero-left{display:flex;align-items:center;gap:14px;min-width:0}
.mt-hero-icon{width:46px;height:46px;flex:0 0 46px;border-radius:12px;background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:24px}
.mt-hero-title{font-size:18px;font-weight:800;letter-spacing:.5px}
.mt-hero-sub{font-size:12.5px;opacity:.92;margin-top:3px}
.mt-hero-stats{display:flex;gap:26px}
.mt-stat{display:flex;flex-direction:column;align-items:center;gap:2px}
.mt-stat-num{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums}
.mt-stat-lb{font-size:11px;opacity:.85}

/* 分类管理 */
.mt-cats{display:flex;flex-wrap:wrap;gap:9px}
.mt-cat-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;
  font-size:12.5px;font-weight:600;border:1px solid transparent;background:#f1f3f5;color:#495057;
  transition:transform .12s ease,box-shadow .12s ease}
.mt-cat-chip:hover{transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.08)}
.mt-cat-chip i{font-style:normal;font-size:11px;font-weight:700;padding:1px 6px;border-radius:999px;
  background:rgba(255,255,255,.75);color:inherit}
.mt-cat-op{cursor:pointer;font-size:11px;opacity:.5;padding:0 2px}
.mt-cat-op:hover{opacity:1}
.mt-cat-op.danger:hover{color:#e53e3e;opacity:1}
.mt-cat-chip.is-add{cursor:pointer;border-style:dashed;border-color:#adb5bd;background:#fff;color:#868e96}
.mt-cat-chip.is-add:hover{border-color:var(--orange);color:var(--orange-dark)}
.mt-c-0{background:#fff0e6;color:#d9480f;border-color:#ffd8bf}
.mt-c-1{background:#e7f5ff;color:#1971c2;border-color:#c5e4ff}
.mt-c-2{background:#ebfbee;color:#2f9e44;border-color:#c3f0ca}
.mt-c-3{background:#f3f0ff;color:#6741d9;border-color:#e0d7ff}
.mt-c-4{background:#fff0f6;color:#a61e4d;border-color:#ffd6e8}
.mt-c-5{background:#e6fcf5;color:#087f5b;border-color:#b2f2e5}
.mt-c-6{background:#fff9db;color:#a07800;border-color:#ffec99}
.mt-c-7{background:#f1f3f5;color:#495057;border-color:#dee2e6}

/* 上传区 */
.mt-up-row{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.mt-up-catlb{font-size:12.5px;color:var(--text-2);font-weight:600;display:inline-flex;align-items:center;gap:8px}
.mt-drop{border:2px dashed #ced4da;border-radius:12px;background:#fafbfc;padding:26px 16px;text-align:center;
  cursor:pointer;transition:all .16s ease}
.mt-drop:hover{border-color:var(--orange);background:#fff7f2}
.mt-drop.is-over{border-color:var(--orange);background:#fff1e8;transform:scale(1.005)}
.mt-drop-icon{font-size:30px;line-height:1}
.mt-drop-main{font-size:13.5px;font-weight:700;color:var(--text);margin-top:6px}
.mt-drop-sub{font-size:11.5px;color:var(--text-3);margin-top:3px}
.mt-queue:not(:empty){margin-top:10px}
.mt-up-item{font-size:12.5px;color:var(--orange-dark);background:#fff4ec;border:1px solid #ffd8bf;
  border-radius:8px;padding:7px 12px}

/* 分组与卡片 */
.mt-group{margin-top:14px}
.mt-group-head{display:flex;align-items:center;gap:8px;padding:7px 12px;border-radius:8px;margin-bottom:10px;font-weight:700}
.mt-group-dot{width:8px;height:8px;border-radius:50%;background:currentColor;opacity:.75}
.mt-group-name{font-size:13.5px}
.mt-group-num{font-size:11.5px;opacity:.75;margin-left:auto;font-weight:600}
.mt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:12px}
.mt-card{position:relative;display:flex;gap:11px;padding:13px 14px;border:1px solid var(--border);
  border-radius:10px;background:var(--panel);transition:all .16s ease;overflow:hidden}
.mt-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:#adb5bd}
.mt-card.mt-t-image::before{background:#1971c2}
.mt-card.mt-t-sheet::before{background:#2f9e44}
.mt-card.mt-t-doc::before{background:#4c6ef5}
.mt-card.mt-t-pdf::before{background:#e03131}
.mt-card.mt-t-ppt::before{background:#d9480f}
.mt-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.09);border-color:#ced4da}
.mt-card-ico{width:40px;height:40px;flex:0 0 40px;border-radius:9px;background:var(--bg);
  display:flex;align-items:center;justify-content:center;font-size:20px}
.mt-card-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}
.mt-card-name{font-size:13px;font-weight:700;color:var(--text);line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.mt-card-file{font-size:11px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-card-meta{display:flex;align-items:center;gap:7px;margin-top:3px}
.mt-tag{font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:4px;background:#f1f3f5;color:#495057}
.mt-t-image .mt-tag{background:#e7f5ff;color:#1971c2}
.mt-t-sheet .mt-tag{background:#ebfbee;color:#2f9e44}
.mt-t-doc .mt-tag{background:#edf2ff;color:#4c6ef5}
.mt-t-pdf .mt-tag{background:#fff5f5;color:#e03131}
.mt-t-ppt .mt-tag{background:#fff0e6;color:#d9480f}
.mt-size{font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}
.mt-card-foot{font-size:10.5px;color:var(--text-3);margin-top:1px}
.mt-card-ops{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:0 0 auto}
.mt-dl{cursor:pointer;border:none;border-radius:7px;padding:6px 11px;font-size:12px;font-weight:700;
  background:linear-gradient(135deg,#ff8a3d,#f4661b);color:#fff;transition:filter .14s ease}
.mt-dl:hover{filter:brightness(1.06)}
.mt-dl:disabled{background:#adb5bd;cursor:default}
.mt-card-ops2{display:flex;gap:8px;font-size:11px}

/* ---------- 全量统计：迷你进度条 ---------- */
.ops-mini-bar{display:inline-block;width:64px;height:6px;border-radius:3px;background:var(--border);
  overflow:hidden;vertical-align:middle;margin-right:6px}
.ops-mini-fill{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange-2));border-radius:3px}
.ops-mini-num{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}

/* ---------- 响应式 ---------- */
@media (max-width: 1100px) {
  .ops-diag-item{grid-template-columns:minmax(0,1fr) 96px 84px;grid-auto-rows:min-content}
  .ops-diag-note{grid-column:1 / -1}
}
@media (max-width: 860px) {
  .ops-core-grid{grid-template-columns:1fr}
  .mt-grid{grid-template-columns:1fr}
  .mt-hero-stats{gap:16px}
  .ops-patrol-note{flex:1 1 100%}
  .ops-review-row{grid-template-columns:1fr;gap:2px}
  .ops-diag-item{grid-template-columns:minmax(0,1fr) 92px;grid-auto-rows:min-content}
}

/* ---------- 备案信息页脚 ---------- */
.beian-footer{position:fixed;bottom:0;left:0;right:0;z-index:9999;padding:9px 16px;text-align:center;
  font-size:12px;color:var(--text-3);background:rgba(255,255,255,.88);backdrop-filter:blur(6px);
  border-top:1px solid var(--border)}
.beian-footer a{color:var(--text-3);text-decoration:none;margin:0 10px}
.beian-footer a:hover{color:var(--primary)}
