/* ============================================================
   Consultant Club 2.0 · 共享样式（深色 AI 风，对齐 yuko 视觉）
   ============================================================ */
:root{
  --bg:#0b0b0e; --bg2:#0e0e13;
  --surface:#141419; --card:#17171d; --card2:#1b1b22;
  --line:#26262e; --line2:#32323c;
  --fg:#f2f2f5; --fg2:#d6d6de; --mut:#9a9aa6; --dim:#6e6e7a;
  --acc:#ef4562; --acc2:#ff5c78; --acc-soft:rgba(239,69,98,.14);
  --ok:#2fbf71;
  --sans:'Noto Sans SC',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
  --mono:ui-monospace,'IBM Plex Mono','JetBrains Mono',Consolas,monospace;
  --rad:14px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--bg); color:var(--fg); font-family:var(--sans);
  font-size:15px; line-height:1.75; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img{max-width:100%}
button{font-family:inherit}
::selection{background:var(--acc);color:#fff}

/* ---------- 布局 ---------- */
.wrap{max-width:1160px;margin:0 auto;padding:0 clamp(18px,4vw,40px)}
.sec{padding:clamp(56px,8vw,96px) 0}
.sec-label{
  font-family:var(--mono);font-size:12px;letter-spacing:.22em;
  color:var(--acc);text-transform:uppercase;margin-bottom:14px;
}
.sec-title{
  font-size:clamp(24px,3.6vw,38px);font-weight:800;line-height:1.3;
  letter-spacing:-.01em;
}
.sec-sub{color:var(--mut);max-width:640px;margin-top:12px;font-size:15px}
.center{text-align:center}
.center .sec-sub{margin-left:auto;margin-right:auto}

/* ---------- 导航 ---------- */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:60;height:64px;
  display:flex;align-items:center;
  background:rgba(11,11,14,.72);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(38,38,46,.6);
}
.nav .wrap{width:100%;display:flex;align-items:center;gap:26px}
.logo{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16.5px;letter-spacing:.01em}
.logo .dot{
  width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--acc),#8f2c46);
  font-size:13px;color:#fff;
}
.logo small{display:block;font-size:10px;font-weight:400;color:var(--mut);letter-spacing:.18em;line-height:1}
.nav-links{display:flex;gap:22px;margin-left:8px;font-size:13.5px;color:var(--mut)}
.nav-links a:hover{color:var(--fg)}
.nav-cta{margin-left:auto;display:flex;gap:10px;align-items:center}
@media(max-width:720px){.nav-links{display:none}}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 22px;border-radius:99px;border:1px solid transparent;
  font-size:14px;font-weight:600;cursor:pointer;transition:.18s;line-height:1.4;
  white-space:nowrap;
}
.btn-acc{background:var(--acc);color:#fff}
.btn-acc:hover{background:var(--acc2);transform:translateY(-1px)}
.btn-ghost{background:rgba(255,255,255,.05);color:var(--fg);border-color:var(--line2)}
.btn-ghost:hover{border-color:var(--mut);background:rgba(255,255,255,.09)}
.btn-sm{padding:7px 15px;font-size:12.5px}
.btn-lg{padding:14px 30px;font-size:15px}

/* ---------- 徽章 / 标签 ---------- */
.chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:12px;padding:4px 11px;border-radius:99px;line-height:1.5;
  background:var(--card2);border:1px solid var(--line);color:var(--fg2);
}
.chip.oline{background:transparent;border:1px solid var(--line2);color:var(--fg2)}
/* 标签溢出收口：+N（悬停可看完整清单） */
.chip.chip-more{background:transparent;border-style:dashed;border-color:var(--line2);color:var(--dim);cursor:help}
/* 顾问未填写该类标签时的占位 chip，避免卡片标签行留白 */
.chip.chip-none{background:transparent;border-style:dashed;border-color:var(--line2);color:var(--dim);font-weight:400}
.chip.on{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.c-teal{background:rgba(20,184,166,.15);border:1px solid rgba(20,184,166,.35);color:#5eead4}
.c-orange{background:rgba(249,115,22,.15);border:1px solid rgba(249,115,22,.35);color:#fdba74}
.c-blue{background:rgba(59,130,246,.15);border:1px solid rgba(59,130,246,.35);color:#93c5fd}
.c-purple{background:rgba(167,139,250,.15);border:1px solid rgba(167,139,250,.35);color:#c4b5fd}
.c-green{background:rgba(34,197,94,.15);border:1px solid rgba(34,197,94,.35);color:#86efac}
.c-pink{background:rgba(236,72,153,.15);border:1px solid rgba(236,72,153,.35);color:#f9a8d4}
.c-amber{background:rgba(245,158,11,.15);border:1px solid rgba(245,158,11,.35);color:#fcd34d}
.c-red{background:rgba(239,68,68,.15);border:1px solid rgba(239,68,68,.35);color:#fca5a5}
.c-cyan{background:rgba(6,182,212,.15);border:1px solid rgba(6,182,212,.35);color:#67e8f9}
.c-lime{background:rgba(132,204,22,.15);border:1px solid rgba(132,204,22,.35);color:#bef264}

/* ---------- 头像 ---------- */
.avatar{
  border-radius:50%;overflow:hidden;display:grid;place-items:center;
  background:linear-gradient(135deg,#2a2a33,#17171d);
  border:1px solid var(--line2);flex:none;
}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar .ph-init{font-weight:800;color:var(--acc2)}

/* ---------- 卡片 ---------- */
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--rad)}

/* ---------- 页脚 ---------- */
.footer{
  border-top:1px solid var(--line);padding:34px 0 46px;margin-top:20px;
  color:var(--mut);font-size:13px;
}
.footer .wrap{display:flex;gap:14px;flex-wrap:wrap;align-items:center;justify-content:space-between}
.footer .links{display:flex;gap:18px}
.footer a:hover{color:var(--fg)}
.pw{display:flex;align-items:center;gap:7px}
.pw i{width:8px;height:8px;border-radius:50%;background:var(--acc);display:inline-block}
/* 页脚署名：Powered by baijingzixun（可点击跳转） */
.pw a{color:var(--fg2);text-decoration:none;border-bottom:1px solid transparent;transition:color .16s,border-color .16s}
.pw a:hover{color:var(--acc2);border-bottom-color:var(--acc2)}

/* ---------- 入场动效 ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  *{animation:none!important;transition:none!important}
}

/* ---------- 咨询师卡片（首页 / 名录共用；图像统一为长方形 4:3） ---------- */
.egrid,.dgrid{align-items:stretch}
.ecard{display:flex;flex-direction:column;overflow:hidden;transition:transform .25s,border-color .25s;height:100%}
.ecard:hover{transform:translateY(-4px);border-color:var(--line2)}
.ecover{position:relative;height:auto;background:#2a211c;border-bottom:1px solid var(--line);display:block}
.photo-rect{position:relative;width:100%;aspect-ratio:4/3;background:#2a211c;overflow:hidden;display:grid;place-items:center}
.photo-rect img{width:100%;height:100%;object-fit:cover;display:block}
.photo-rect .ph-init{font-size:32px;font-weight:800;color:#7a5f4a}
.eava{position:relative;z-index:1}
.av-ok,.av-no{position:absolute;top:12px;right:12px;z-index:2}
/* 图片右上角「本周可约 / 档期已满」：加深底色 + 加粗提字号，压得住照片背景 */
.ecover .av-ok,.ecover .av-no{font-size:12.5px;font-weight:700;padding:5px 12px;letter-spacing:.02em;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 4px 14px rgba(0,0,0,.42),0 1px 0 rgba(255,255,255,.12) inset;
  border-width:1px}
.av-ok{background:linear-gradient(135deg,rgba(12,110,66,.97),rgba(7,80,50,.97));
  border-color:rgba(122,240,180,.8);color:#eafff3;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.av-no{background:linear-gradient(135deg,rgba(24,24,30,.94),rgba(14,14,18,.94));
  border-color:rgba(255,255,255,.34);color:#ececf3;text-shadow:0 1px 2px rgba(0,0,0,.5)}
/* 会员权益角标（优选顾问 →「专业」/ 专家合伙人 →「专家」） */
.mbadge{position:absolute;top:12px;left:12px;z-index:2;display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;font-weight:700;letter-spacing:.08em;padding:4px 11px;border-radius:99px;color:#fff;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.mbadge i{width:5px;height:5px;border-radius:50%;background:#fff;box-shadow:0 0 6px rgba(255,255,255,.9)}
.mbadge.b-partner{background:linear-gradient(135deg,rgba(245,158,11,.92),rgba(236,72,153,.85));
  border:1px solid rgba(253,211,77,.65);box-shadow:0 6px 18px rgba(245,158,11,.34)}
.mbadge.b-preferred{background:linear-gradient(135deg,rgba(59,130,246,.9),rgba(20,184,166,.85));
  border:1px solid rgba(147,197,253,.6);box-shadow:0 6px 18px rgba(59,130,246,.3)}
/* 详情页：姓名行内的会员权益角标（v3.9 与首页 / 名录卡片同步） */
.mbadge.mbadge-inline{position:static;vertical-align:middle;margin-left:9px;top:auto;left:auto;
  box-shadow:none;font-size:10.5px;padding:3px 9px;letter-spacing:.06em}
/* 平台认证标签（机构端「咨询师认证」下发，名录卡片 / 首页卡片 / 详情页同步） */
.vchip{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;letter-spacing:.04em;
  color:#6ee7a8;background:rgba(47,191,113,.14);border:1px solid rgba(47,191,113,.4);border-radius:99px;
  padding:2px 8px;white-space:nowrap;vertical-align:middle}
.vchip::before{content:"✓";font-size:10px}
.vchip-lg{font-size:11.5px;padding:3px 10px;margin-left:9px;vertical-align:2px}

.ebody{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.ebody h3{font-size:16.5px;font-weight:700;display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;min-height:26px}
.erole{font-size:11.5px;color:var(--acc);font-weight:500;letter-spacing:.04em}
.etag{color:var(--mut);font-size:12.8px;line-height:1.6;margin-top:5px;min-height:42px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.egroup{margin-top:13px;height:87px} /* 固定高 = 标签行 23 + 两行 chip 64：所有卡片这一区块等高，卡片总高才一致 */
.elab{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--dim);margin-bottom:7px}
/* 标签最多两行：超出部分直接隐藏（第 3 行起点在 68px 处，62px 裁切不会露半行） */
.echips{display:flex;gap:6px;flex-wrap:wrap;align-content:flex-start;max-height:62px;overflow:hidden}
.chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.efoot{display:flex;gap:9px;margin-top:auto;padding-top:15px;border-top:1px solid var(--line)}
.efoot .btn{flex:1}

/* ---------- 平台数据：咨询项目 / 收益排行 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
.stat-card{padding:22px 24px;display:flex;flex-direction:column}
.stat-card .lab{font-size:12.5px;color:var(--mut);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.lab-note{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--dim);
  border:1px solid var(--line);border-radius:99px;padding:2px 8px}
.stat-big{font-size:clamp(28px,3.4vw,36px);font-weight:800;font-family:var(--mono);margin-top:8px;letter-spacing:-.02em}
.stat-big.acc{color:var(--acc2)}
.stat-sub{font-size:12px;color:var(--dim);margin-top:6px}
.spark{display:flex;gap:5px;align-items:flex-end;height:40px;margin-top:14px}
.spark i{flex:1;background:linear-gradient(180deg,var(--acc),#7a2436);border-radius:3px 3px 0 0;min-height:5px;transition:height .4s}
.spark-lab{display:flex;gap:5px;margin-top:6px;font-size:10px;color:var(--dim)}
.spark-lab span{flex:1;text-align:center}

.rank-table{width:100%;border-collapse:collapse;font-size:13.5px}
.rank-table th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--dim);
  font-weight:500;padding:0 12px 11px;border-bottom:1px solid var(--line)}
.rank-table td{padding:12px;border-bottom:1px solid var(--line);color:var(--fg2)}
.rank-table tr:last-child td{border-bottom:0}
.rank-table .r{text-align:right}
.rank-table .num{font-family:var(--mono);font-size:13px}
.rank-no{width:26px;height:26px;border-radius:8px;display:inline-grid;place-items:center;
  font-family:var(--mono);font-size:12px;background:var(--card2);color:var(--mut);border:1px solid var(--line)}
.rank-no.top1{background:linear-gradient(135deg,#f2c24b,#c08a12);color:#2b1d05;font-weight:800;border-color:transparent}
.rank-no.top2{background:#3a3a44;color:#e8e8f0;border-color:transparent}
.rank-no.top3{background:#4a3324;color:#e8c9a5;border-color:transparent}
.rank-name{display:flex;align-items:center;gap:10px}
.rank-role{font-size:11.5px;color:var(--mut)}
.rank-delta{font-family:var(--mono);font-size:10.5px;color:var(--acc2)}
.rank-meta{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11.5px;
  color:var(--acc2);background:var(--acc-soft);border:1px solid rgba(239,69,98,.28);
  border-radius:99px;padding:4px 12px;margin-top:12px}

/* ---------- 详情页：最新动态 ---------- */
.dyn-list{display:grid;gap:12px}
.dyn{display:flex;gap:11px;align-items:flex-start;font-size:13px;line-height:1.7}
.dyn .dot{width:9px;height:9px;border-radius:50%;flex:none;margin-top:7px}
.dy-applying{background:#f2a53c}
.dy-design{background:#7f77dd}
.dy-done{background:#2fbf71}
.dyn .txt{flex:1;min-width:0}
.dyn .txt b{font-weight:600}
.dyn-tag{font-size:11px;padding:2px 9px;border-radius:99px;white-space:nowrap;flex:none}
.tg-applying{background:rgba(242,165,60,.15);color:#f5c37a;border:1px solid rgba(242,165,60,.32)}
.tg-design{background:rgba(127,119,221,.16);color:#c4b5fd;border:1px solid rgba(127,119,221,.34)}
.tg-done{background:rgba(47,191,113,.14);color:#6ee7a8;border:1px solid rgba(47,191,113,.32)}
.dyn-empty{color:var(--dim);font-size:12.5px}

/* ---------- 预约弹窗 ---------- */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:20px;
  background:rgba(5,5,8,.7);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:.22s}
.modal.show{opacity:1;visibility:visible}
.mbox{width:min(430px,100%);background:var(--card);border:1px solid var(--line2);border-radius:18px;
  padding:28px;transform:translateY(14px);transition:.22s;position:relative}
.modal.show .mbox{transform:none}
.mbox h3{font-size:18px;font-weight:800}
.mbox .msub{color:var(--mut);font-size:13px;margin:6px 0 18px}
.mbox label{display:block;font-size:12.5px;color:var(--mut);margin:13px 0 6px}
.mbox input,.mbox textarea,.mbox select{width:100%;background:var(--surface);border:1px solid var(--line2);
  border-radius:10px;padding:10px 13px;color:var(--fg);font-size:14px;font-family:inherit;outline:0;transition:border-color .2s}
.mbox input:focus,.mbox textarea:focus{border-color:var(--acc)}
.mbox textarea{resize:vertical;min-height:72px}
.mbox .btn{width:100%;margin-top:19px}
.mclose{position:absolute;top:14px;right:16px;background:none;border:0;color:var(--mut);font-size:20px;cursor:pointer;line-height:1}
.bk-ok{display:none;text-align:center;padding:14px 0 6px}
.bk-ok .big{font-size:34px}
.bk-ok p{color:var(--mut);font-size:13.5px;margin-top:8px}
.btn-block{width:100%}

/* ---------- 预约诊断弹窗（公司名称 / 联系人 / 手机 / 城市 / 员工数 / 需求 / 周期 / 预算） ---------- */
.dg-form{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;padding:0 26px}
.dg-col{display:flex;flex-direction:column}
.dg-form .dg-full{grid-column:1 / -1}
.dg-submit{display:flex !important;align-items:center;gap:14px;flex-wrap:wrap;margin-top:6px}
.dg-submit .btn{width:auto;margin-top:0}
.dg-hint{color:var(--dim);font-size:12px}
.dg-ok{display:none;text-align:center;padding:14px 26px 6px}
.dg-ok .big{font-size:34px}
.dg-ok p{color:var(--mut);font-size:13.5px;margin-top:8px}
@media (max-width:640px){.dg-form{grid-template-columns:1fr}}

/* ---------- 会员权益对比表（弹窗内） ---------- */
.modal.wide .mbox{width:min(760px,100%);max-height:88vh;overflow:auto;padding:26px 0 22px}
.modal.wide .mbox h3,.modal.wide .msub,.modal.wide .ms-acts{padding:0 26px}
.ms-table{width:100%;border-collapse:collapse;font-size:12.5px}
.ms-table th{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line2);
  font-size:11.5px;color:var(--fg2);background:var(--card2);font-weight:600}
.ms-table td{padding:8px 12px;border-bottom:1px solid var(--line);color:var(--fg2)}
.ms-table td:first-child{color:var(--mut)}
.ms-table .yes{color:#6ee7a8;font-weight:600}
.ms-table .no{color:var(--dim)}
.ms-table .mid{color:var(--fg2)}
.ms-group td{background:rgba(255,255,255,.035);font-weight:600;color:var(--fg);letter-spacing:.02em}
.ms-tier-name{font-size:13px;font-weight:700;color:var(--fg)}
.ms-tier-price{font-family:var(--mono);font-size:11.5px;color:var(--acc2)}
.ms-tier-value{font-size:11px;color:var(--mut);font-weight:400;display:block}
.ms-note{font-size:11.5px;color:var(--dim);line-height:1.75;margin-top:14px;padding:0 26px}
.ms-acts{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
/* v3.15 按钮条改短：不再撑满整行（与移动端一致），按内容宽度并排、留最小可点宽度 */
.ms-acts .btn{width:auto;margin-top:0;min-width:132px}

/* ---------- 个人信息卡片（设置页 · 只读态 / 编辑态） ---------- */
.pf-view{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;padding:0 26px}
.pf-view .pf-i{padding:10px 0;border-bottom:1px dashed var(--line);min-width:0}
.pf-view .pf-k{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--dim);display:block;margin-bottom:3px}
.pf-view .pf-v{font-size:13.5px;color:var(--fg);word-break:break-word}
.pf-view .pf-v.empty{color:var(--dim)}
.pf-view .pf-full{grid-column:1 / -1}
.pf-view .pf-v.pre{white-space:pre-wrap;line-height:1.7}
@media (max-width:640px){.pf-view{grid-template-columns:1fr}}
.pf-sec{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--acc2);
  padding:18px 26px 0;grid-column:1 / -1;margin-bottom:2px}
.pf-sec:first-child{padding-top:2px}

/* ---------- 头像裁剪（上传 → 拖动定位 → 裁剪） ---------- */
.crop-stage{position:relative;width:100%;aspect-ratio:4/3;background:#2a211c;border:1px solid var(--line2);
  border-radius:12px;overflow:hidden;cursor:grab;touch-action:none;margin:6px 0 4px}
.crop-stage:active{cursor:grabbing}
.crop-stage img{position:absolute;left:0;top:0;max-width:none;pointer-events:none;user-select:none;
  -webkit-user-drag:none;display:block}
.crop-stage::after{content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.crop-hint{font-size:11.5px;color:var(--dim);margin-top:9px;text-align:center}

/* ---------- 设置：账号信息里的头像 ---------- */
.avb{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;margin-top:14px}
.avb-prev{width:168px;flex:none}
.avb-prev .photo-rect{width:100%;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.avb-prev .crop-stage{width:100%;margin:0}
.avb .avb-txt{flex:1;min-width:180px}
.avb .avb-txt b{font-size:13.5px;display:block}
.avb .avb-txt .n{font-size:12px;color:var(--mut);display:block;margin-top:5px;line-height:1.7}
.avb-acts{display:flex;gap:9px;flex-wrap:wrap;margin-top:12px}
.avb-acts .btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

/* ---------- 通知说明（只读，不可开关） ---------- */
.notify-note{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:14px}
.notify-note .n-row{display:flex;gap:11px;align-items:flex-start;font-size:12.5px;color:var(--fg2);line-height:1.7}
.notify-note .n-row + .n-row{margin-top:10px}
.notify-note .n-row i{width:7px;height:7px;border-radius:50%;background:var(--acc);flex:none;margin-top:8px}
.notify-note .n-row.def i{background:var(--ok)}
.notify-note .n-row b{font-weight:600}
.rec-chip{font-size:11.5px;padding:3px 10px;border-radius:99px;white-space:nowrap;
  background:rgba(47,191,113,.14);color:#6ee7a8;border:1px solid rgba(47,191,113,.34)}
.rec-ask{background:rgba(242,165,60,.14);color:#f5c37a;border:1px solid rgba(242,165,60,.34)}

/* ---------- 待办小红点（v3.16：后台所有「有明确动作待处理」的项统一标注，处理完自动消失） ---------- */
.todo-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acc);flex:none;
  margin-right:7px;vertical-align:middle;position:relative;top:-1px;
  box-shadow:0 0 0 3px rgba(239,69,98,.16);animation:todoPulse 2s ease-out infinite}
@keyframes todoPulse{
  0%{box-shadow:0 0 0 2px rgba(239,69,98,.34)}
  70%{box-shadow:0 0 0 8px rgba(239,69,98,0)}
  100%{box-shadow:0 0 0 2px rgba(239,69,98,0)}}
@media (prefers-reduced-motion:reduce){.todo-dot{animation:none}}
/* 表格行内的小红点（金额 / 状态列等窄列） */
.todo-dot.tight{margin-right:6px}
/* 侧边栏导航项待办小红点（无数字角标的页面用它提示） */
.snav button.has-todo{position:relative}
.snav button.has-todo::after{content:"";position:absolute;top:9px;right:11px;width:7px;height:7px;border-radius:50%;
  background:var(--acc);box-shadow:0 0 0 3px rgba(239,69,98,.16)}
@media (prefers-reduced-motion:reduce){.snav button.has-todo::after{box-shadow:0 0 0 3px rgba(239,69,98,.16)}}

/* 行级待办标记：列表行 / 表格行左侧一道红条（不改变行高，避免布局抖动） */
.row-todo{box-shadow:inset 3px 0 0 var(--acc)}
tr.row-todo > td:first-child{box-shadow:inset 3px 0 0 var(--acc)}

/* ---------- 行内提示（弹窗内校验等） ---------- */
.lerr{display:none;background:rgba(239,69,98,.12);border:1px solid rgba(239,69,98,.35);color:#fca5a5;
  border-radius:10px;padding:9px 13px;font-size:12.5px;line-height:1.6;margin-top:14px}
.lerr.show{display:block}

/* ---------- 预约诊断弹窗 · 重复提交提示 ---------- */
.dg-err{display:none;margin-top:12px;background:rgba(239,69,98,.12);border:1px solid rgba(239,69,98,.35);
  color:#fca5a5;border-radius:10px;padding:9px 13px;font-size:12.5px;line-height:1.6}
.dg-err.show{display:block}

/* ---------- 富文本编辑器（工作台「写文章」弹窗） ---------- */
.rte-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;background:var(--surface);
  border:1px solid var(--line2);border-bottom:0;border-radius:10px 10px 0 0;padding:7px 9px}
.rte-b{background:none;border:1px solid var(--line2);color:var(--fg2);font-family:inherit;font-size:12px;
  border-radius:7px;padding:4px 10px;cursor:pointer;transition:.15s}
.rte-b:hover{border-color:var(--acc);color:var(--fg)}
.rte-b.on{background:var(--acc-soft);border-color:var(--acc);color:var(--fg)}
.rte-sep{width:1px;height:16px;background:var(--line2);margin:0 3px}
.rte-tip{font-size:11.5px;color:var(--dim);margin-left:auto}
.rte{min-height:170px;max-height:44vh;overflow-y:auto;background:var(--surface);border:1px solid var(--line2);
  border-radius:0 0 10px 10px;padding:12px 14px;font-size:13.5px;line-height:1.8;color:var(--fg);outline:0}
.rte:focus{border-color:var(--acc)}
.rte:empty::before{content:"写点你的判断…";color:var(--dim)}
.rte img{max-width:100%;height:auto;display:block;margin:10px 0;border-radius:8px}
.rte font[size="2"],.art-body font[size="2"]{font-size:12.5px}
.rte font[size="3"],.art-body font[size="3"]{font-size:15px}
.rte font[size="5"],.art-body font[size="5"]{font-size:19px}

/* ---------- 详情页「观点文章」富文本正文 ---------- */
.art-body{font-size:13.5px;line-height:1.85;color:var(--fg2);border-top:1px dashed var(--line);
  margin-top:12px;padding-top:12px;word-break:break-word}
.art-body img{max-width:100%;height:auto;display:block;margin:12px 0;border-radius:8px}
/* 详情页内联样式 .art p 会把正文压成次要色，这里提权还原 */
.art-rich .art-body p{color:var(--fg2);font-size:13.5px;margin-top:8px}
.art-rich .art-body b,.art-rich .art-body strong{color:var(--fg);font-weight:600}
.art-rich summary{cursor:pointer;list-style:none}
.art-rich summary::-webkit-details-marker{display:none}
.art-rich summary::after{content:"展开全文 ▾";display:block;font-size:11.5px;color:var(--acc2);margin-top:7px}
.art-rich[open] summary::after{content:"收起 ▴"}
.art-desc{display:block;font-size:12.5px;color:var(--mut);margin-top:6px;line-height:1.7}

/* ============================================================
   v3.6 视觉打磨（全端生效；移动端另有 mobile.css 版式层）
   ============================================================ */

/* 滚动条：细一点、不抢戏 */
*{scrollbar-width:thin;scrollbar-color:#33333d transparent}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#2c2c36;border-radius:99px;border:3px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#3d3d49}
html{scrollbar-gutter:stable}

/* 键盘可达性：统一的聚焦环 */
:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:8px}
.btn:focus-visible{outline-offset:3px}

/* 应用层主区：超宽屏居中，不无限拉伸 */
.appmain{width:100%;max-width:1440px;margin:0 auto}

/* 卡片：更柔和的描边与内高光，hover 轻微抬升 */
.panel,.mbox{box-shadow:0 24px 70px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.04) inset}
.ecard{border-radius:var(--rad)}
.ecard:hover{box-shadow:0 18px 44px rgba(0,0,0,.5);border-color:#34343f;transform:translateY(-5px)}
.ecard .photo-rect img{transition:transform .5s ease}
.ecard:hover .photo-rect img{transform:scale(1.035)}

/* 主按钮：加一点投影，层级更清楚 */
.btn-acc{box-shadow:0 6px 18px rgba(239,69,98,.24)}
.btn-acc:hover{box-shadow:0 10px 28px rgba(239,69,98,.32)}
.btn-ghost{backdrop-filter:blur(4px)}

/* 输入控件：聚焦环统一为柔和外发光 */
.mbox input:focus,.mbox textarea:focus,.field input:focus,.field textarea:focus{
  box-shadow:0 0 0 3px rgba(239,69,98,.14)}

/* 排行表 / 明细表：行 hover 更明显 */
.rank-table tbody tr,.ms-table tbody tr{transition:background .16s}
.rank-table tbody tr:hover{background:rgba(255,255,255,.035)}
.rank-table .rank-name b{font-weight:600}

/* 区块节奏：标题与正文之间多一档呼吸 */
.sec-title{letter-spacing:-.018em}
.sec-sub{line-height:1.85}
.step,.fcard{transition:border-color .2s,transform .2s}
.step:hover,.fcard:hover{border-color:#34343f;transform:translateY(-3px)}

/* 弹窗进场更顺滑 */
.modal .mbox{will-change:transform}

/* ---------- 档案页「分享名片」（v3.12：头像右上角小按钮） ---------- */
.dt-share-corner{position:absolute;top:12px;right:12px;z-index:3;display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:600;letter-spacing:.02em;color:#fff;line-height:1;font-family:inherit;cursor:pointer;
  background:rgba(18,16,22,.6);border:1px solid rgba(255,255,255,.24);border-radius:99px;padding:6px 11px;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .16s,border-color .16s,transform .16s}
.dt-share-corner svg{width:12px;height:12px;flex:none}
.dt-share-corner:hover{background:var(--acc);border-color:var(--acc);transform:translateY(-1px)}
.sh-body{display:grid;grid-template-columns:minmax(0,1fr) 282px;gap:22px;padding:0 26px;align-items:start}
.sh-preview{background:#0e0e12;border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;justify-content:center}
.sh-preview img{width:100%;max-width:430px;height:auto;border-radius:10px;display:block;transition:opacity .2s}
.sh-preview img[src=""]{display:none}
.sh-preview img.loading{opacity:.3}
.sh-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.sh-acts{display:flex;flex-direction:column;gap:9px}
.sh-acts .btn{width:100%;margin-top:0}
.sh-tip{color:var(--dim);font-size:11.5px;line-height:1.75}
#shToast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(10px);
  background:#1b1b22;border:1px solid var(--line2);color:var(--fg);font-size:13px;padding:10px 18px;
  border-radius:99px;z-index:999;opacity:0;pointer-events:none;transition:.25s;max-width:88vw;text-align:center}
#shToast.show{opacity:1;transform:translateX(-50%)}

/* ---------- 空态：旧库没有真实数据的模块统一显示「暂无数据」 ---------- */
.none-data{
  display:flex;align-items:center;justify-content:center;
  min-height:64px;margin:10px 0 2px;padding:18px 14px;
  border:1px dashed var(--line2);border-radius:12px;
  background:rgba(255,255,255,.02);
  color:var(--dim);font-size:13px;letter-spacing:.04em;
}
.none-note{margin:8px 0 0;color:var(--dim);font-size:11.5px;line-height:1.7;text-align:center}
td > .none-data{margin:0}
