
:root{
  /* 层级规范：弹层 1000 起，数字越大越靠上。详情 1000 < 文章阅读 1010 < 白皮书/大图 1020 < 灯箱 1030 < 支付/开通弹窗 1100 < 登录墙 1200 < 轻提示 1300+ */
  --paper:#F7F7F8; --card:#FFFFFF; --line:#E4E4E8; --track:#EFEFF2;
  --ink:#1A1A1C; --sub:#6B6B73; --grey:#9A9AA3; --red:#C8102E;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--paper);color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
  -webkit-font-smoothing:antialiased;line-height:1.6}
a{color:inherit;text-decoration:none}

/* ---- 我的 · 设置（v0.6） ---- */
.chip.mine{color:var(--red);border-color:#E8C9CE;font-weight:600}
.chip.mine.on{background:var(--red);color:#fff;border-color:var(--red)}
/* ★★ v1.18.7 杨总「设置里面太密了，要简洁大方、留白」：行距拉到 18px、标签加宽、控件也长一点 */
.setrow{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.setrow label{flex:0 0 104px;font-size:13px;color:var(--sub)}
.setrow input,.setrow textarea{flex:1;border:1px solid var(--line);border-radius:8px;padding:11px 13px;font-size:13.5px;font-family:inherit;background:#FAFAFB}
.setrow input:focus,.setrow textarea:focus{outline:none;border-color:var(--ink)}
.setrow.vt{flex-direction:column;align-items:stretch}
.setrow.vt>label{flex:none}
.catgrid{display:flex;flex-wrap:wrap;gap:8px 14px}
.ckb{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--ink)}
.ckb input{width:15px;height:15px;accent-color:#1A1A1C}
.stip{font-style:normal;font-weight:400;color:var(--grey);font-size:11.5px;margin-left:8px}
.stip2{font-size:11.5px;color:var(--grey);margin-top:6px}
.setrow textarea{resize:vertical}

/* ---- 描述词分类筛选（v0.6） ---- */
.pcats{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.pcats .chip i{font-style:normal;color:var(--grey);font-size:11px;margin-left:2px}
.pnotex{display:flex;align-items:center;justify-content:center;height:100%;min-height:120px;color:var(--grey);font-size:12px;letter-spacing:.1em;background:repeating-linear-gradient(45deg,#F2F2F4,#F2F2F4 10px,#EBEBEF 10px,#EBEBEF 20px)}
.psrc{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:18px;padding:8px 16px;font-size:13px;color:var(--sub)}
.psrc:hover{border-color:var(--ink);color:var(--ink)}
.btnrow{display:flex;gap:10px;flex-wrap:wrap}

/* ---- 课程目录弹窗样式（v0.6） ---- */
.xcard.cl{cursor:pointer}
.xcard.cl:hover{border-color:var(--ink);transform:translateY(-2px);transition:all .18s}
.chint{display:block;font-style:normal;color:var(--red);font-size:12px;font-weight:600;margin-top:6px}
.courselist{max-height:62vh;overflow-y:auto}
.mod{margin-bottom:18px}
.mod h6{font-size:13.5px;font-weight:700;color:var(--ink);margin:0 0 8px;display:flex;align-items:center;gap:8px}
.mod h6 i{font-style:normal;font-weight:400;color:var(--grey);font-size:12px}
.les{display:flex;align-items:baseline;gap:10px;padding:7px 10px;border-radius:8px;font-size:13px;line-height:1.5}
.les:nth-child(even){background:#F4F4F6}
.les.opt{opacity:.62}
.lcode{flex:0 0 34px;font-weight:700;color:var(--red);font-size:12px}
.lname{flex:1;color:var(--ink)}
.lmeta{flex:0 0 auto;color:var(--grey);font-size:11.5px;white-space:nowrap}
.croles{font-size:12.5px;color:var(--sub);background:#F4F4F6;border-radius:8px;padding:8px 12px;margin-bottom:14px}

/* ★ v1.18.3 课程「目录长页」——点课程卡就地展开一整页，可直接打印/导出 PDF */
.clp{max-width:1080px;margin:0 auto 40px}
.clpback{display:inline-block;margin:18px 0 14px;font-size:12.5px;color:var(--red);cursor:pointer;font-weight:600}
.clpback:hover{text-decoration:underline}
.clphero{border-radius:14px;padding:34px 32px;color:#fff;background:linear-gradient(135deg,var(--cg1,#1B2C55),var(--cg2,#2F6FE4))}
.clpbadges span{display:inline-block;margin:0 8px 8px 0;font-size:12px;padding:4px 11px;border-radius:999px;background:rgba(255,255,255,.16)}
.clphero h1{font-size:26px;font-weight:700;margin:10px 0 4px;line-height:1.35}
.clpk{font-size:12px;letter-spacing:2px;opacity:.85}
.clpsec{background:var(--card,#fff);border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin-top:16px}
.clpsec h4{font-size:14px;font-weight:700;color:var(--ink);margin:0 0 12px;padding-left:10px;border-left:3px solid var(--red)}
.clptext{font-size:13.5px;line-height:1.85;color:var(--ink);margin:0 0 10px}
.clpside{margin-top:12px;background:var(--track,#F2F2F4);border-radius:10px;padding:12px 14px}
.clpside-h{font-size:12px;color:var(--red);font-weight:700;margin-bottom:6px}
.clpside p{font-size:12.5px;line-height:1.75;color:var(--sub);margin:0}
.clpchips span{display:inline-block;font-size:12.5px;background:var(--track,#F2F2F4);border:1px solid var(--line);
  border-radius:8px;padding:6px 12px;margin:0 8px 8px 0}
.clp .cl{list-style:none;margin:0;padding:0}
.clp .cl li{position:relative;padding:0 0 9px 18px;font-size:13px;line-height:1.75;color:var(--ink)}
.clp .cl li::before{content:'';position:absolute;left:2px;top:9px;width:5px;height:5px;border-radius:50%;background:var(--red)}
.clptip{font-size:12px;color:var(--grey);line-height:1.7;margin:-4px 0 12px}
.modhead{display:flex;align-items:center;gap:9px;margin:20px 0 8px;padding-bottom:7px;border-bottom:1.5px solid var(--line)}
.modno{font-size:11.5px;font-weight:700;color:#fff;background:var(--red);border-radius:5px;padding:2px 7px}
.modhead b{font-size:13.5px;color:var(--ink)}
.modhead i{font-style:normal;font-size:11.5px;color:var(--grey)}
.ltab{border:1px solid var(--line);border-radius:10px;padding:11px 14px;margin-bottom:9px}
.lth{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;margin-bottom:7px}
.ltc{font-size:12px;font-weight:700;color:var(--red)}
.lth>b{font-size:13.5px;color:var(--ink)}
.ltm{font-size:11.5px;color:var(--grey)}
.ltb{display:grid;gap:5px}
.ltrow{display:grid;grid-template-columns:88px 1fr;gap:10px;align-items:start}
.ltrow>span{font-size:11.5px;color:#fff;background:var(--red);border-radius:6px;padding:3px 8px;margin-top:2px;text-align:center}
.ltrow p{font-size:12.5px;line-height:1.7;color:var(--sub);margin:0}
.tslot{border-left:2px solid var(--red);padding:0 0 4px 14px;margin-bottom:14px}
.tst{display:inline-block;font-size:12px;font-weight:700;color:var(--ink);margin-bottom:7px}
.tline{display:flex;align-items:baseline;gap:10px;font-size:12.5px;color:var(--sub);padding:3px 0}
.tline i{font-style:normal;font-weight:700;color:var(--ink);flex:0 0 46px}
.tline b{font-weight:500;color:var(--ink);flex:1}
.tline u{flex:0 0 auto;text-decoration:none;font-size:11.5px;color:var(--grey)}
.tline.lunch i,.tline.lunch b,.tline.lunch u{color:var(--grey)}
.tpcard{border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-top:10px}
.tpname{font-size:16px;font-weight:700;color:var(--ink);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.tpname em{font-style:normal;font-size:12px;color:var(--red);font-weight:600}
.tpc{display:grid;grid-template-columns:150px 1fr;gap:4px 14px;padding:9px 0;border-top:1px solid var(--line)}
.tpc-t{font-size:12px;color:var(--sub)}
.tpc-n{grid-column:1;font-size:13.5px;font-weight:700;color:var(--ink)}
.tpc-d{grid-column:2;font-size:12.5px;line-height:1.7;color:var(--sub)}
.tpq{margin-top:12px;font-size:13px;font-weight:600;color:var(--red)}
.clpacts{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.clpacts button{border:1px solid var(--red);color:var(--red);background:#fff;border-radius:8px;padding:8px 16px;font-size:12.5px;cursor:pointer}
.clpacts button:hover{background:var(--red);color:#fff}
.dk .clpsec,.dk .ltab,.dk .tpcard{background:#1B1D22;border-color:#33363D}
.dk .clphero{color:#fff}
.dk .ltrow>span{color:#fff}
/* 打印：课程长页单独成 A4，不截断 */
@media print{
  nav,.clpback,.clpacts,.blkhead,.cgrid,.gate,#tabbar{display:none !important}
  body{background:#fff}
  .clp{max-width:none;margin:0}
  .clphero{background:linear-gradient(135deg,#1B2C55,#2F6FE4) !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .clpsec{break-inside:avoid;page-break-inside:avoid;box-shadow:none}
  .ltab,.tslot{break-inside:avoid;page-break-inside:avoid}
}

/* ---- 门层（v1.0 动态门户版，样式见文末 #gate 区块） ---- */
.ok{text-align:center;margin-top:22px;font-size:12.5px;color:var(--grey);border-top:1px solid var(--line);padding-top:16px}

/* ---- 布局：WorkBuddy 式左侧导航（v0.5 高级感改版） ---- */
#side{position:fixed;left:0;top:0;bottom:0;width:218px;z-index:30;
  background:#FBFBFC;border-right:1px solid var(--line);
  display:flex;flex-direction:column;padding:22px 14px 16px}
.slogo{font-size:15px;font-weight:700;letter-spacing:.2px;padding:0 10px;line-height:1.35}
.slogo span{display:block;font-size:11px;color:var(--grey);font-weight:400;
  margin-top:4px;letter-spacing:.8px}
nav{display:flex;flex-direction:column;gap:3px;margin-top:26px;flex:1}
nav a{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;
  font-size:13.5px;color:var(--sub);cursor:pointer;transition:.14s;line-height:1}
nav a svg{width:17px;height:17px;flex:none}
nav a:hover{background:var(--track);color:var(--ink)}
nav a.on{background:var(--ink);color:#fff;font-weight:600}
nav a.trbtn{margin-top:2px;color:var(--sub)}
nav a.trbtn:hover{color:var(--ink)}
/* ★ v1.5 侧栏「升级会员 + 积分」：去框去红，与导航项完全同款（杨总：小 logo + 升级会员，字号一样，放最下面形成统一） */
.sviprow{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;
  margin-top:6px;cursor:pointer;color:var(--sub);font-size:13.5px;line-height:1.3;transition:.14s}
.sviprow:hover{background:var(--track);color:var(--ink)}
.sviprow svg{width:17px;height:17px;flex:none}
.sviprow .sviptxt{display:flex;flex-direction:column;gap:3px;min-width:0}
.sviprow b{font-weight:400;font-size:13.5px;color:inherit}
.sviprow span{font-size:11px;color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sviprow i{font-style:normal;font-weight:600;color:inherit}
/* ★ v1.4 语言/主题控件：与导航一致的竖排单行样式（杨总：不要排两行，按上面的标识搞个符号竖着排） */
.sctrl{display:flex;flex-direction:column;gap:3px;padding:12px 0 2px;border-top:1px solid var(--line);margin-top:10px}
.sctrl .scrow{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:9px;
  font-size:13.5px;color:var(--sub);background:transparent;border:none;cursor:pointer;
  font-family:inherit;line-height:1;width:100%;text-align:left;transition:.14s}
.sctrl .scrow:hover{background:var(--track);color:var(--ink)}
.sctrl .scrow svg{width:17px;height:17px;flex:none}
.sctrl .scrow select{border:none;background:transparent;color:inherit;font-size:13px;
  font-family:inherit;cursor:pointer;flex:1;padding:0;outline:none}
.sctrl .scrow select option{color:var(--ink);background:#fff}
.sfoot{font-size:11px;color:var(--grey);padding:10px 10px 0;line-height:1.7;
  border-top:1px solid var(--line)}
#maincol{margin-left:218px;min-height:100vh;display:flex;flex-direction:column}
header{position:sticky;top:0;z-index:20;background:rgba(247,247,248,.88);
  backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:20px;height:56px}
.pt{font-size:15px;font-weight:600;letter-spacing:.2px}
.pr{margin-left:auto;display:flex;align-items:center;gap:12px}
.pr a.trbtn,.trbtn{border:1px solid var(--line);border-radius:16px;padding:4px 13px;
  font-size:12.5px;color:var(--sub);cursor:pointer}
.pr a.trbtn:hover,.trbtn:hover{border-color:var(--ink);color:var(--ink)}
.wrap{max-width:1120px;margin:0 auto;padding:0 36px;width:100%}
@media(max-width:920px){
  #side{position:static;width:auto;flex-direction:row;align-items:center;
    flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--line);gap:6px}
  .slogo span{display:none}
  nav{flex-direction:row;margin-top:0;flex-wrap:wrap;flex:1}
  nav a{padding:7px 10px}
  .sfoot{display:none}
  #maincol{margin-left:0}
}

/* ---- 公告条 ---- */
.notice{display:none;background:#FFF7E8;border:1px solid #F0E2C4;color:#7A5B18;
  border-radius:10px;padding:11px 16px;font-size:13px;margin:16px 0 0;line-height:1.6}
.notice.on{display:flex;gap:12px;align-items:flex-start}
.notice b{flex:none}
.notice .nx{margin-left:auto;cursor:pointer;color:#B49B62;font-weight:600}

/* ---- Hero ---- */
.hero{padding:56px 0 34px}
/* ★ v1.2 首页 hero 居中 + 字号放大一档（主标 46 / 简介 17） */
.hero.heroc{text-align:center;display:flex;flex-direction:column;align-items:center}
.hero h2{font-size:46px;font-weight:700;letter-spacing:-.4px}
.hero p{margin-top:14px;font-size:15px;color:var(--sub);max-width:860px;line-height:1.75}
.stats{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.stat{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:14px 20px;min-width:118px}
.stat b{display:block;font-size:23px;font-weight:600;letter-spacing:-.3px;color:var(--red)}
.stat i{font-style:normal;font-size:12px;color:var(--sub)}
/* ★ v0.8 分页条 */
.pager{display:flex;justify-content:center;margin:24px 0 6px}
.pgwrap{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}
.pgb{min-width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:var(--card);
  color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer;padding:0 8px}
.pgb:hover{border-color:var(--ink)}
.pgb.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.pgd{color:var(--grey);padding:0 2px}
.pginfo{font-size:12px;color:var(--grey);margin-right:8px}
.upd{margin-top:14px;font-size:12px;color:var(--grey)}
.upd em{font-style:normal;color:var(--red);font-weight:600}

/* ---- 筛选 ---- */
.filters{background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:18px 20px;margin:18px 0 22px}
.frow{display:flex;gap:10px;align-items:flex-start;margin-bottom:12px}
.frow:last-child{margin-bottom:0;align-items:center}
.flab{font-size:12px;color:var(--grey);width:52px;flex:none;padding-top:7px}
.chips{display:flex;gap:8px;flex-wrap:wrap;flex:1;min-width:0}
.chip{padding:5px 13px;font-size:13px;color:var(--sub);background:var(--track);
  border:1px solid transparent;border-radius:20px;cursor:pointer;transition:.15s;white-space:nowrap}
.chip:hover{color:var(--ink)}
.chip.on{background:var(--ink);color:#fff}
.chip.more{background:transparent;border:1px dashed var(--line);color:var(--sub)}
.chip.more:hover{color:var(--ink);border-color:var(--grey)}
.sbox{flex:1;min-width:190px;position:relative}
.sbox input{width:100%;padding:8px 13px;font-size:13px;border:1px solid var(--line);
  border-radius:9px;background:var(--paper);color:var(--ink);outline:none;font-family:inherit}
.sbox input:focus{border-color:var(--ink)}
.cnt{font-size:12.5px;color:var(--grey);padding:0 4px;white-space:nowrap}

/* ---- 案例卡 ---- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}/* v1.12 杨总定：一行4个 */
.card{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:20px;
  display:flex;flex-direction:column;gap:10px;cursor:pointer;transition:.18s;position:relative;overflow:hidden}
.card:hover{border-color:var(--grey);transform:translateY(-2px)}
.card.locked:hover{transform:none}
/* ★ v1.18.5 杨总「每条都要带图」：案例卡顶部加 3:2 封面，全宽出血（卡片自身 overflow:hidden） */
.cpic{height:118px;border-radius:9px;overflow:hidden;background:var(--track);position:relative;flex:none}
.cpic img{width:100%;height:100%;object-fit:cover;display:block;transition:.25s}
.card:hover .cpic img{transform:scale(1.045)}
.cpic:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 55%,rgba(0,0,0,.16))}
/* 未登录/非会员：封面糊掉，看得见「这里有好东西」但拿不走内容 */
.card.locked .cpic img{filter:blur(6px) saturate(.8)}
.ctop{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:2px}
.corg{font-size:12px;color:var(--sub);font-weight:500}
.cbadge{font-size:10.5px;padding:2px 8px;border-radius:5px;background:var(--track);color:var(--sub)}
.cbadge.cn{background:#F0EFE6;color:#6B6455}
.cbadge.fa{background:#F6ECEC;color:var(--red)}
.cbadge.shoe{background:#E9E9EE;color:#3A3A42;font-weight:600}
/* ★ v1.19.4 杨总 9-30「案例卡也形成统一」：标题恒两行、摘要最多 6 行裁切、
   每条都带日期 → 浅灰线 → 阅览/收藏行钉底，整栅格行列对齐 */
.ctitle{font-size:15.5px;font-weight:600;line-height:1.42;letter-spacing:-.1px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.84em}
.csum{font-size:13px;color:var(--sub);line-height:1.62;flex:1;display:-webkit-box;
  -webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.csum.empty{color:var(--grey);font-style:italic}
.cresult{font-size:12.5px;color:var(--ink);background:var(--track);border-radius:8px;
  padding:9px 11px;line-height:1.55;border-left:2.5px solid var(--red);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* ★ v1.19.4 日期独立一行 + 浅灰线，阅览/收藏在线下方（原日期与阅览挤同一行、没日期的整行空缺） */
.cdate{font-size:11.5px;color:var(--grey);padding-bottom:8px;margin-top:auto;
  border-bottom:1px solid var(--line)}
.cfoot{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--grey);
  padding-top:9px;flex-wrap:wrap}
.cfoot a{border-bottom:1px solid var(--line)}
.cfoot a:hover{color:var(--red);border-bottom-color:var(--red)}
/* ★ v1.18.3 杨总：案例卡 👁 浏览 / ★ 收藏 放大成可点胶囊（「待补来源」删掉后腾出的位置给它） */
.cstat{font-size:12.5px;font-weight:600;color:var(--sub);background:var(--track);border:1px solid var(--line);
  border-radius:999px;padding:4px 11px;cursor:pointer;line-height:1.4}
.cstat.star{color:var(--red)}
.cstat.star.on{background:var(--red);border-color:var(--red);color:#fff}
.cstat:hover{border-color:var(--red);color:var(--red)}
.cstat.star.on:hover{color:#fff}
/* 未验证态：摘要遮罩 + 水印 */
.mask{position:absolute;inset:auto 0 0 0;height:96px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.97))}
.lock{position:absolute;top:16px;right:16px;font-size:11px;color:var(--grey);
  border:1px dashed var(--line);border-radius:6px;padding:2px 8px}
.card.locked .ctitle,.card.locked .csum{filter:blur(4.5px);opacity:.55}

/* ---- 弹窗 ---- */
.mask2{position:fixed;inset:0;z-index:1000;background:rgba(20,20,22,.42);
  display:none;align-items:flex-start;justify-content:center;padding:56px 18px;overflow:auto}
.mask2.on{display:flex}
.modal{background:var(--card);border-radius:15px;max-width:680px;width:100%;
  padding:34px 36px;position:relative}
.mclose{position:absolute;top:20px;right:22px;font-size:22px;color:var(--grey);cursor:pointer;line-height:1}
.mclose:hover{color:var(--ink)}
.mh{font-size:23px;font-weight:700;letter-spacing:-.3px;padding-right:34px;line-height:1.45}
.mmeta{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.sec{margin-top:26px}
/* ★ v1.18.5 杨总「每章都要带图」：顶部大图 + 每个小节配图（公众号文章的长图节奏） */
.dheroimg{width:100%;border-radius:13px;overflow:hidden;margin-top:6px;background:var(--track);
  aspect-ratio:16/7;position:relative}
.dheroimg img{width:100%;height:100%;object-fit:cover;display:block}
.dsecpic{width:100%;border-radius:10px;overflow:hidden;margin:14px 0 18px;background:var(--track);
  aspect-ratio:16/7}
.dsecpic img{width:100%;height:100%;object-fit:cover;display:block}
/* ★ v1.18.4 杨总：详情页改「公众号文章式排版」——小节标题=黑粗大字+小红点，不再是红底色块；
   正文=正常文章段落，行距舒展、段与段空一行；红底白字只保留给徽标标签 */
.sec h4{display:flex;align-items:center;font-size:16.5px;color:var(--ink);font-weight:700;
  letter-spacing:.3px;background:none;border-radius:0;padding:0;margin:0 0 14px;line-height:1.5}
.sec h4:before{content:'';flex:none;width:7px;height:7px;border-radius:50%;
  background:var(--red);margin-right:9px}
/* ★ 正文行：14.5px / 行高 1.9，段与段 20px（≈空一行），小圆圈列表点 */
.sec .ln{font-size:14.5px;line-height:1.9;color:var(--ink);padding-left:16px;
  position:relative;margin-bottom:20px}
.sec .ln:last-child{margin-bottom:0}
.sec .ln:before{content:'';position:absolute;left:1px;top:12px;width:6px;height:6px;
  border-radius:50%;background:#C9C9D2}
.sec.k .ln:before{background:var(--red)}
/* ★ v0.4 正文分级排版 */
.sec .ln b{font-weight:700;color:var(--ink)}
/* 副标题：短冒号行加粗，段落间留白，圆点变黑加大 */
.sec .ln.subh{font-weight:700;color:var(--ink);margin-top:14px}
.sec .ln.subh:before{background:var(--ink);width:6px;height:6px;top:10px}
.sec .ln.subh:first-child{margin-top:0}
/* 增补行：灰底圆角 + 红色日期徽标，弱化为辅助信息 */
.sec .ln.upd{background:var(--track);border-radius:8px;padding:9px 12px 9px 13px;
  margin-top:12px;color:var(--sub);font-size:13.5px}
.sec .ln.upd:before{display:none}
.sec .ln.upd b{color:var(--ink)}
.ubadge{display:inline-block;font-size:11px;font-weight:700;color:var(--red);
  background:#F7E8EB;border-radius:5px;padding:1px 7px;margin-right:8px;
  vertical-align:1px;white-space:nowrap}
.sec.view{background:#FBF7F2;border:1px solid #EDE4D6;border-radius:10px;padding:14px 16px}
.sec.view p{font-size:13.5px;line-height:1.7;color:#5C5346}
/* 更新履历：逐行，日期徽标 + 内容，弱化色 */
.hrow{display:flex;gap:10px;font-size:12.5px;color:var(--sub);line-height:1.65;margin-bottom:7px}
.hrow b{flex:none;color:var(--grey);font-weight:600;background:var(--track);
  border-radius:5px;padding:1px 7px;font-size:11.5px;height:fit-content}
.mlinks{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.mlinks a,.mlinkbtn{display:inline-block;font-size:13px;font-weight:600;cursor:pointer;
  border:1px solid var(--line);border-radius:8px;padding:8px 15px;background:var(--card);font-family:inherit;color:var(--ink)}
.mlinks a:hover,.mlinkbtn:hover{border-color:var(--red);color:var(--red)}
.mlinkbtn.faved{background:#F6ECEC;border-color:#F6ECEC;color:var(--red)}

/* ---- 通用区块（课程 / 自媒体 / 社群 / 描述词） ---- */
/* ★ v1.11 种草 Agent 嵌入（AI 服装种草板块顶部 iframe） */
.zcao-embed{margin:0 0 18px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}
.zcao-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}
.zcao-bar b{font-size:14px}
.zcao-bar span{font-size:12px;color:var(--grey);flex:1}
.zcao-embed iframe{display:block;width:100%;height:1400px;border:0;background:#fff}
.blkpad{padding:48px 0 8px}
/* ★ v1.3 全站统一：内页主标/副标与首页 hero 同字号且居中（杨总：形成统一） */
.blkhead{text-align:center;display:flex;flex-direction:column;align-items:center}
.blkhead h2{font-size:46px;font-weight:700;letter-spacing:-.4px}
.blkhead p{margin-top:14px;font-size:15px;color:var(--sub);max-width:860px;line-height:1.75;text-align:center}
.blkhead .red, .red{color:var(--red);font-weight:700}
.statline{margin-top:12px;font-size:15px;color:var(--sub)}
.statline b.red{font-size:22px}
.cgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:26px}/* v1.12 杨总定：一行4个 */
/* ★ v1.4 白皮书页改左对齐列表（杨总：以后要经常加落地文章，不居中，白皮书放左边第一张） */
.xcard{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:22px;
  display:flex;flex-direction:column;gap:10px;transition:.18s}
.xcard:hover{border-color:var(--grey);transform:translateY(-2px)}
.xcover{height:88px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font-size:26px;font-weight:700;letter-spacing:1px}
.xtag{font-size:10.5px;padding:2px 8px;border-radius:5px;background:var(--track);color:var(--sub);width:fit-content}
.xcard h5{font-size:15.5px;font-weight:600}
.xcard p{font-size:13px;color:var(--sub);line-height:1.65}
.xcard .num{color:var(--red);font-weight:700}
.flow{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.flow .step{background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:14px 18px;flex:1;min-width:150px}
.flow .step b{display:block;font-size:13.5px;margin-bottom:5px}
.flow .step i{font-style:normal;font-size:12px;color:var(--sub);line-height:1.55;display:block}
/* ★ v0.7 换一批 / 白皮书卡 */
.pbar{display:flex;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}
.shuf{font-size:12.5px;font-weight:600;border:1px solid var(--line);border-radius:8px;
  padding:6px 13px;background:var(--card);color:var(--ink);cursor:pointer;font-family:inherit}
.shuf:hover{border-color:var(--ink);background:var(--track)}
.wcard{cursor:pointer}
.wcover{height:96px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;letter-spacing:1px}
.wmeta{display:flex;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--grey);margin-top:auto}
.wframe{width:100%;height:70vh;border:1px solid var(--line);border-radius:11px;background:#fff}
/* 描述词卡：配图版 */
.pcard{background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden;
  display:flex;flex-direction:column}
.pimg{width:100%;aspect-ratio:3/4;background:var(--track);overflow:hidden}
.pimg img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.pbody{padding:16px 18px 18px;display:flex;flex-direction:column;gap:9px;flex:1}
/* ★ v1.19.4 杨总 9-30「卡片要形成统一」：标题恒占两行（一行也按两行高度），描述定高裁切，
   按钮行钉在卡片底部同一位置——长短内容不改卡片骨架，整栅格行列对齐 */
.pbody h5{font-size:15px;font-weight:600;line-height:1.45;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.9em}
.ptext{font-size:12.5px;color:var(--sub);line-height:1.66;background:var(--paper);
  border-radius:8px;padding:11px 13px;height:132px;overflow:hidden}
/* ★ v1.5 杨总：复制按钮白底上白字看不清 → 改白底黑字（描边加粗），hover 变红字更醒目 */
.copy{font-size:12.5px;font-weight:700;border:1.5px solid var(--ink);border-radius:8px;
  padding:7px 14px;background:#fff;color:var(--ink);cursor:pointer;width:fit-content;font-family:inherit}
.copy:hover{background:#fff;color:var(--red);border-color:var(--red)}
.copy.ok{background:var(--red);border-color:var(--red);color:#fff}
body.dk .copy{background:var(--card);color:var(--ink)}
body.dk .copy:hover{color:var(--red);border-color:var(--red);background:var(--card)}
/* ★ v1.3 词卡按钮：无框幽灵钮 + 红星收藏，避免按钮行溢出（杨总） */
.prow{align-items:center;margin-top:auto}   /* ★ v1.19.4 按钮行钉底，所有卡同一位置 */
.prow .copy{flex:none}
/* ★ v1.19.2 杨总：卡内操作区统一两行结构——第一行 复制/浏览/收藏，第二行(仅管理员) 修改/删除独占整行，所有卡布局完全一致 */
.prow .prowadmin{display:flex;gap:2px;flex-basis:100%;min-width:100%}
.prow .prowadmin .pact{flex:none}
.pact{border:none;background:transparent;font-size:12.5px;color:var(--sub);cursor:pointer;
  padding:6px 8px;font-family:inherit;white-space:nowrap}
.pact:hover{color:var(--ink)}
.pact.on{color:var(--red);font-weight:600}
.pact.favstar{color:var(--red);font-weight:600}
.pact.favstar.on{color:var(--red)}
.pact.admin{color:var(--sub)}
/* ★ v1.3 社群页左右两栏：左社群右商务对接，中间竖分隔线（杨总：一看就明了） */
.join2col{display:grid;grid-template-columns:1fr 1px 1fr;gap:0 46px;margin-top:36px;align-items:start}
.jdiv{background:var(--line);width:1px;height:100%;min-height:420px}
/* ★ v1.3 目验修正：右栏标题长 + 红字标注横排会把 h3 挤成两行 → 改竖排（标题一行、标注一行），两栏一致 */
.jsec-h{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.jsec-h h3{font-size:21px;font-weight:700}
.jsec-h span{font-size:13px;color:var(--grey)}
.jsec-h .redcats{color:var(--red);font-weight:600}
/* ★ v1.4 社群左栏内容居中（杨总：社群相关性的东西居中）；★ v1.8 两栏标题/二维码全部居中（杨总 09-27） */
.jcol{text-align:center}
.jsec-h{align-items:center}
.jcol:last-child .sec,.jcol:last-child .plist,.jcol:last-child .warnbox{text-align:left}
.qrwrap.owner{justify-content:center}
/* 居中排版下去掉左上角游离的项目符号（.ln:before 绝对定位在左缘） */
.jcol .sec .ln{padding-left:0}
.jcol .sec .ln:before{display:none}
.jcol .joinlist b, .jcol .joinlist em{color:var(--red)}
/* ★ v1.5 产品体系列表：主标题大而深，条目小字灰色靠左（杨总：主题大一点，其他小一点灰一点，别太浅）
   ★ v1.18.4 杨总：详情页统一改文章式排版后，这里不再是红底白字——跟着走黑粗+红点，红底白字只留给徽标 */
.jcol:last-child .sec h4{font-size:17px;font-weight:700;color:var(--ink)}
.plist{margin-top:10px}
.plist .ln{margin-bottom:9px;font-size:12.8px;color:var(--sub);line-height:1.75}
.plist .pn{color:var(--ink);font-weight:700;margin-right:7px;font-size:13.2px}
.plist .pl-red{display:block;margin-top:10px;font-size:12.8px}
@media(max-width:900px){.join2col{grid-template-columns:1fr}.jdiv{display:none}}
/* ★ v1.4 主页（公众号式动态流）：大板块快捷入口 + 板块筛选 + 文章流 */
.homequick{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:12px;margin-top:30px}
.hq{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:14px 16px;
  cursor:pointer;transition:.15s;display:flex;align-items:center;gap:10px;
  font-size:13.5px;font-weight:600;color:var(--ink)}
.hq:hover{border-color:var(--ink);transform:translateY(-2px)}
.hq i{font-style:normal;font-size:18px}
.homerow{display:flex;gap:14px;align-items:center;margin-top:36px;flex-wrap:wrap}
/* ★★ v1.18.7 整卡可点：卡片一律 pointer，悬停轻轻抬起＋阴影，让人一看就知道能点 */
.postcard{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:22px 24px;margin-top:14px;cursor:pointer;transition:box-shadow .18s,border-color .18s}
.postcard:hover{border-color:var(--red);box-shadow:0 6px 18px rgba(0,0,0,.07)}
.postcard .pt-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.postcard h5{font-size:16.5px;font-weight:700}
.postcard .pt-date{font-size:12px;color:var(--grey)}
.postcard .pt-body{margin-top:10px;font-size:13.5px;color:var(--sub);line-height:1.85}
.postcard .pt-body p{margin-bottom:8px}
.postcard .pt-img{margin-top:12px;border-radius:10px;overflow:hidden;max-width:520px;cursor:zoom-in}
.postcard .pt-img img{width:100%;display:block}
/* ★ v1.18 首页改版：置顶 4 卡 / 随机流两列 / 分页 / 红字干货板块 */
.homegrid4{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:6px}/* v1.18.1 杨总定：一行4个，与词库 cgrid 一致 */
.homegrid2{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:6px}/* v1.18.1 同上 */
.homegrid4 .postcard,.homegrid2 .postcard{margin-top:0}
@media(max-width:1100px){.homegrid4,.homegrid2{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.homegrid4,.homegrid2{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.homegrid4,.homegrid2{grid-template-columns:repeat(2,1fr)}}/* 杨总10-01：手机一行两列，不要塌1列 */
/* 4 列下首页卡片紧凑化：摘要 3 行截断、配图定高裁切，视觉与词库卡一致 */
.homegrid4 .postcard .pt-body,.homegrid2 .postcard .pt-body{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* ★ v1.18.3 杨总：首页游客墙——非会员前 8 条清晰，其余条目原地模糊打码（不可点/选不中），teaser 样式与词库模糊墙同套 */
.homegrid2 .teaser{filter:blur(7px) saturate(.85);opacity:.72;pointer-events:none;user-select:none}
.homegrid4 .postcard .pt-img img,.homegrid2 .postcard .pt-img img{height:150px;width:100%;object-fit:cover;border-radius:10px}
.homegrid4 .postcard .pt-img,.homegrid2 .postcard .pt-img{max-width:none !important}
.homegrid4 .postcard h5,.homegrid2 .postcard h5{font-size:15px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.hsec{display:flex;align-items:baseline;gap:10px;margin:22px 0 4px;font-size:14px}
.hsec b{font-size:15px;color:var(--ink)}
.hsec span{font-size:12px;color:var(--grey)}
.homepager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:18px;font-size:12.5px;color:var(--grey)}
.chips .chip.hot{color:var(--red);border-color:var(--red);font-weight:700}
.chips .chip.hot.on{background:var(--red);color:#fff}
.chips .chip.gp{border-style:dashed}
.chips .chip.gp.on{background:var(--ink);border-style:solid}
/* ★ v1.18.7 杨总「内容别堆太密、要留白」：标签之间、板块标题上下都开缝 */
.chips{display:flex;flex-wrap:wrap;gap:10px 12px;margin-bottom:18px}
.chips .chip{padding:7px 15px}
.hq.hot{border-color:var(--red);color:var(--red)}
.postcard.pin{border-color:var(--red);box-shadow:0 2px 0 0 var(--red) inset}
.pinbtn{margin-top:10px;font-size:12px}
.pinbtn.on{color:var(--red);border-color:var(--red)}
.ptmore{color:var(--red);cursor:pointer;font-size:12.5px;font-weight:600}
/* ★ v1.18 文章阅读弹窗：自动分段 + 首行缩进两字符，像文章一样 */
.artv{display:none;position:fixed;inset:0;z-index:1010;background:rgba(15,15,20,.62);
  align-items:flex-start;justify-content:center;overflow-y:auto;padding:5vh 4vw}
.artv.on{display:flex}
.artcard{position:relative;background:var(--card,#F5F5F7);border-radius:16px;width:min(760px,100%);
  padding:30px 34px 28px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.artx{position:absolute;top:12px;right:16px;font-size:26px;line-height:1;color:var(--sub,#56565E);
  background:none;border:none;cursor:pointer}
.artdate{font-size:12px;color:var(--grey);margin-bottom:14px}
.artbody p{text-indent:2em;font-size:14.5px;line-height:1.95;color:var(--ink,#1D1D1F);margin:0 0 13px}
/* ★ v1.18 「我的」功能导航卡（点哪张看哪块，不再竖滑长页） */
.menav{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}
@media(max-width:640px){.menav{grid-template-columns:repeat(2,1fr)}}
.mnc{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 12px;text-align:center;
  cursor:pointer;font-size:13px;font-weight:600;color:var(--ink);transition:.15s}
.mnc i{display:block;font-style:normal;font-size:22px;margin-bottom:6px}
.mnc:hover{border-color:var(--red);color:var(--red);transform:translateY(-2px)}
.mnc.on{border-color:var(--red);color:var(--red);background:var(--card)}
/* ★ v1.3 图片点击放大（黑底 lightbox） */
.lb{display:none;position:fixed;inset:0;z-index:1030;background:rgba(0,0,0,.92);
  align-items:center;justify-content:center;cursor:zoom-out}
.lb.on{display:flex}
.lb img{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:8px;
  box-shadow:0 20px 80px rgba(0,0,0,.6)}
.lb .lbx{position:absolute;top:14px;right:26px;color:#fff;font-size:32px;line-height:1;cursor:pointer;opacity:.85}
/* ★ v1.17 放大编辑器（后台文本框全屏编辑） */
.bige{display:none;position:fixed;inset:0;z-index:1020;background:rgba(15,15,20,.62);align-items:center;justify-content:center;padding:4vh 4vw}
.bige.on{display:flex}
.bige .bpanel{background:var(--card,#F5F5F7);border-radius:14px;width:min(1100px,100%);max-height:92vh;display:flex;flex-direction:column;padding:16px 18px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.bige .bhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-weight:700;font-size:15px}
.bige .bx{cursor:pointer;font-size:24px;color:var(--sub,#56565E);padding:0 6px;line-height:1}
.bige textarea{flex:1;min-height:52vh;resize:vertical;font-size:14px;line-height:1.7;padding:12px;border:1px solid var(--line,#D8D8E0);border-radius:10px;background:#fff;font-family:inherit}
.bige .bfoot{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}
/* ★ v1.17 充值日历 */
.calgrid{display:contents}
.calcell{min-height:56px;border:1px solid var(--line,#D8D8E0);border-radius:8px;padding:4px 6px;font-size:12px;cursor:pointer;background:#fff}
.calcell.dim{opacity:.38;cursor:default}
.calcell.today{border-color:var(--red,#C8102E)}
.calcell b{display:block;font-size:12.5px}
/* ★ v1.19.1 杨总：金额与笔数各占一行、缩小字号，修掉「¥139.80」和「2笔」挤在一起重叠的问题 */
.calcell .amt{display:block;color:var(--red,#C8102E);font-weight:700;font-size:10.5px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calcell .cnt{display:block;color:var(--grey,#8A8A92);font-size:10px;line-height:1.35}
.calcell:hover{background:#FBF3F4}
/* ★ v1.4 白皮书 PDF 在线翻页阅读器：全屏黑底层 + 内嵌 iframe（浏览器自带 PDF 引擎翻页），
   #toolbar=0 隐藏下载按钮 —— 点开即翻阅，不再跳新窗口 */
.pdfv{display:none;position:fixed;inset:0;z-index:1020;background:#101012}
.pdfv.on{display:flex}
.pdfv iframe{width:96vw;height:94vh;margin:auto;border:none;border-radius:6px;background:#fff;
  box-shadow:0 20px 80px rgba(0,0,0,.7)}
.pdfv .pdfx{position:absolute;top:12px;right:26px;color:#fff;font-size:34px;line-height:1;
  cursor:pointer;opacity:.85;z-index:6}
.pdfv .pdfx:hover{opacity:1}
.pdfv .pdftip{position:absolute;top:18px;left:26px;color:rgba(255,255,255,.65);font-size:12.5px;letter-spacing:.5px}
/* ★ v1.19.2 杨总：白皮书非会员模糊预览墙——加载 PDF 后整屏压暗+模糊，只露模糊首屏，中卡引导开通看完整 97 页 */
.pdflock{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;
  background:rgba(16,16,18,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.pdflock .lk{background:#fff;border-radius:14px;padding:26px 28px;max-width:380px;width:84vw;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.pdflock .lk .vi{font-size:34px}
.pdflock .lk h5{font-size:17px;margin:8px 0 6px}
.pdflock .lk p{font-size:13px;color:var(--sub);line-height:1.7;margin-bottom:14px}
.pdflock .lk .btnrow{display:flex;gap:10px}
.dk .pdflock .lk{background:#23252B;color:#eee}
/* 社群二维码占位 */
.qrwrap{display:flex;gap:30px;align-items:center;margin-top:28px;flex-wrap:wrap}
.qr{width:150px;height:150px;border:1.5px dashed var(--grey);border-radius:12px;
  display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--grey);text-align:center;line-height:1.6}
.joinlist{font-size:13.5px;color:var(--ink);line-height:2}
.joinlist em{font-style:normal;color:var(--red);font-weight:600}

/* ===== v0.9 ===== */
/* 社群多群二维码 */
.qrgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:16px;margin-top:24px}
.qrcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;text-align:center}
.qrcard .qr{margin:0 auto 10px;width:150px;height:200px;position:relative;overflow:hidden}
.qrcard .qr img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.qrcard b{display:block;font-size:13.5px;font-weight:600}
.qrcard i{font-style:normal;font-size:12px;color:var(--sub)}
/* ★ v1.8 群主二维码卡改竖排居中 + 缩小（杨总：二维码居中、图片缩小一点） */
.qrwrap.owner{flex-direction:column;align-items:center;gap:14px}
.jcol:last-child .joinlist{text-align:left;max-width:430px}
.qr.big{width:150px;height:200px;position:relative;overflow:hidden}
.qr.big img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.qr.big .qrph{position:relative;z-index:0}
.qrnote{margin-top:22px}
/* 自媒体工作流 */
.step.wf{cursor:pointer;transition:box-shadow .15s}
.step.wf:hover{box-shadow:0 3px 14px rgba(0,0,0,.08)}
.step.wf.on{border-color:var(--ink)}
.step.wf em{display:block;font-style:normal;font-size:12px;color:var(--red);font-weight:600;margin-top:6px}
#wfpanel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin-top:14px}
#wfpanel h5{font-size:15px;font-weight:600;margin-bottom:10px}
#wfpanel .tip{margin-top:8px}
.topicrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}
.topicrow:last-child{border-bottom:0}
.topicrow b{flex:1;font-weight:500}
.topicrow .dt{color:var(--grey);font-size:12px}
.tbsel select{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:6px 10px;font-size:13px;color:var(--ink)}
.trendbar{display:flex;align-items:center;gap:14px;margin:26px 0 14px;flex-wrap:wrap}
.trendbar .tbsel{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--sub)}
/* ★ v1.2 日历控件（自媒体·趋势热点日期筛选） */
.calwrap{position:relative;display:inline-block}
.calpop{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:60;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:12px;width:252px;box-shadow:0 8px 28px rgba(0,0,0,.14);user-select:none}
.calpop.on{display:block}
.calhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.calhead b{font-size:13.5px;color:var(--ink)}
.calnav{border:none;background:transparent;color:var(--sub);font-size:15px;cursor:pointer;padding:2px 8px;border-radius:6px}
.calnav:hover{background:var(--track);color:var(--ink)}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.calgrid .wd{font-size:11px;color:var(--grey);text-align:center;padding:3px 0}
.calcell{border:none;background:transparent;font-size:12.5px;color:var(--ink);border-radius:7px;padding:5px 0;cursor:default}
.calcell.dim{color:var(--line)}
.calcell.has{cursor:pointer;color:var(--ink);font-weight:600}
.calcell.has:hover{background:var(--track)}
.calcell.sel{background:var(--ac);color:#fff}
.calcell.today{box-shadow:inset 0 0 0 1px var(--ac)}
.calreset{margin-top:8px;width:100%;border:1px solid var(--line);background:transparent;color:var(--sub);font-size:12px;
  border-radius:8px;padding:5px;cursor:pointer}
.calreset:hover{color:var(--ac);border-color:var(--ac)}
/* ★ v1.2 会员卡 */
.memcard{border:1px solid var(--line);background:linear-gradient(135deg,var(--card),var(--track))}
.memcard.on{border-color:var(--ac)}
/* ★ v1.3 会员档位：v1.2 是 flex+wrap，3 档时把第 3 张挤到第二行（2+1 折行、偏右 33px）→ 改 3 等分网格，永远一行排满且居中 */
/* ★★ v1.18.8 杨总定稿：一个横页里三个竖条并排（v1.18.7 的一档一行太占屏，像三条虚线）。
   每张卡内部仍是 名称→价格→权益点→按钮 的纵向竖条，卡与卡之间留足缝隙；窄屏自动落回一列 */
.planrow{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:16px}
@media(max-width:900px){.planrow{grid-template-columns:1fr;gap:16px}}
/* 卡片加高：名称 → 价格 → 权益点 → 按钮，纵向留足，不再是个矮方块 */
.plancard{border:1px solid var(--line);border-radius:14px;padding:22px 24px 24px;min-height:0;
  display:flex;flex-direction:column;gap:14px;background:var(--card2);min-width:0;max-width:none;
  transition:border-color .18s,box-shadow .18s}
.plancard:hover{border-color:var(--red);box-shadow:0 6px 18px rgba(0,0,0,.06)}
.plancard b{font-size:16px;color:var(--ink);font-weight:700;letter-spacing:.2px}
.plancard .pr{font-style:normal;display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.plancard .pr small{font-size:12.5px;color:var(--grey);font-weight:400}
/* ★ 左边红色小字划线原价、右边黑色大字实价（约 3.5 倍），不要「省 ¥N」那块 */
.plancard .porig{font-size:13px;line-height:1.3;min-height:17px}
.plancard .porig del{font-size:15px;color:var(--red);font-weight:600;opacity:.85;text-decoration:line-through;text-decoration-color:var(--red)}
.plancard .pnow{font-size:44px;font-weight:800;color:var(--ink);line-height:1.15;letter-spacing:-1px}
.plancard .pnow.big{font-size:52px}
/* ★ 权益点列表：一个点一条，行距拉开，不再糊成一段 */
.plancard .pperks{list-style:none;margin:0;padding:0;display:grid;gap:11px;flex:1}
.plancard .pperks li{font-size:13.5px;color:var(--sub);line-height:1.6;padding-left:20px;position:relative}
.plancard .pperks li::before{content:'✓';position:absolute;left:0;top:0;color:var(--red);font-weight:700;font-size:13px}
.plancard .mbtn{text-align:center;padding:11px 12px;font-size:14px}
/* ★ 三张卡里最贵那张描红边，一眼看出推荐哪档 */
.plancard.rec{border-color:var(--red)}
.plancard.rec b{color:var(--red)}
/* ★ v1.18.6 站长自设价格的输入框（「我的」页会员卡下方，仅管理员可见） */
.memeditcell{display:flex;flex-direction:column;gap:5px;min-width:0}
.memeditcell label{font-size:12px;color:var(--sub)}
.memeditcell input{padding:7px 9px;border:1px solid var(--line);border-radius:8px;font-size:12.5px;width:100%;
  box-sizing:border-box;background:#fff;color:var(--ink)}
.memeditcell input::placeholder{color:#B4B4BC}
.memeditrow{grid-template-columns:repeat(3,1fr)}
/* ★ v1.2 白皮书 3:4 封面 */
.wcover34{aspect-ratio:3/4;border-radius:10px;background:linear-gradient(160deg,#FFFFFF 0%,#F2F2F4 70%,#E9E9ED 100%);
  border:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;align-items:center;
  text-align:center;padding:18px 14px;position:relative;gap:6px}
.wcover34 .wtopbar{position:absolute;top:12px;left:14px;width:26px;height:5px;background:var(--ac);border-radius:2px}
.wcover34 em{font-style:normal;font-size:13px;letter-spacing:3px;color:var(--sub);font-weight:600}
.wcover34 h6{font-size:30px;font-weight:800;color:var(--ink);letter-spacing:6px;margin:2px 0}
.wcover34 i{font-style:normal;font-size:11.5px;color:var(--sub);line-height:1.6}
.wcover34 u{font-size:12px;color:var(--ac);text-decoration:none;font-weight:700;margin-top:6px}
.wcover34 .wfoot{position:absolute;bottom:12px;font-size:10.5px;color:var(--grey);letter-spacing:1px}
/* ★ v1.2 反爬水印 */
#trtoast{display:none;position:fixed;left:50%;bottom:28px;transform:translateX(-50%);z-index:1300;
  background:#1D1D1F;color:#FFF;font-size:13px;line-height:1.6;padding:11px 18px;border-radius:10px;
  box-shadow:0 8px 28px rgba(0,0,0,.28);max-width:min(680px,88vw)}
.wftxt{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px;font-size:13.5px;line-height:1.8;color:var(--ink);background:#fff;resize:vertical}
/* 详情弹窗：计数 / 分享 / 自媒体图 */
.mstats{display:inline-flex;gap:6px;margin-left:4px}
.mshare{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mposter{margin-top:14px;text-align:center}
.mposter img{max-width:260px;border-radius:10px;border:1px solid var(--line);box-shadow:0 4px 18px rgba(0,0,0,.12)}
.mposter .btnrow{justify-content:center;margin-top:10px}
.card .cfoot .mtr{color:var(--grey);font-size:11.5px}

.soon{font-size:11px;color:var(--grey);border:1px dashed var(--line);border-radius:5px;padding:1px 7px;margin-left:8px}
.sech{margin-top:40px;font-size:16px;font-weight:600;padding-top:22px;border-top:1px solid var(--line)}

/* ---- 个人中心 / 后台 ---- */
/* ★★ v1.18.8 杨总「我的页要跟案例库/词库一样宽」：720px → 与主容器 .wrap 同宽（1120px 内） */
.mewrap{max-width:1120px;margin:30px auto 0}
.mecard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px 28px}
.merow{display:flex;align-items:center;gap:16px;margin-bottom:20px}
.avatar{width:52px;height:52px;border-radius:50%;background:var(--ink);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600;flex:none}
.mecard h5{font-size:17px;font-weight:600}
.mecard .tier{font-size:12px;color:var(--red);font-weight:600;margin-top:2px}
.ptsrow{display:flex;gap:12px;margin-top:18px;flex-wrap:wrap}
.ptbox{flex:1;min-width:100px;background:var(--paper);border-radius:10px;padding:12px 14px;text-align:center}
.ptbox b{display:block;font-size:20px;font-weight:600}
.ptbox i{font-style:normal;font-size:11.5px;color:var(--sub)}
.btnrow{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.mbtn{font-size:13px;font-weight:600;border:1px solid var(--ink);border-radius:8px;
  padding:8px 16px;background:var(--ink);color:#fff;cursor:pointer;font-family:inherit}
.mbtn.ghost{background:var(--card);color:var(--ink)}
.mbtn.ghost:hover{border-color:var(--red);color:var(--red)}
.mbtn:disabled{opacity:.45;cursor:default}
.formrow{margin-top:14px}
.formrow label{display:block;font-size:12px;color:var(--sub);margin-bottom:5px}
.formrow input,.formrow textarea,.formrow select{width:100%;padding:9px 12px;font-size:13.5px;
  border:1px solid var(--line);border-radius:9px;background:var(--paper);color:var(--ink);
  outline:none;font-family:inherit}
.formrow input:focus,.formrow textarea:focus{border-color:var(--ink)}
.tip{font-size:12px;color:var(--grey);margin-top:14px;line-height:1.7}
.mylist{margin-top:14px}
.myitem{display:flex;gap:10px;align-items:center;font-size:13.5px;padding:10px 4px;
  border-bottom:1px solid var(--line);cursor:pointer}
.myitem:last-child{border-bottom:none}
.myitem:hover{color:var(--red)}
.myitem .dt{margin-left:auto;font-size:11.5px;color:var(--grey);flex:none}
.emptytip{font-size:13px;color:var(--grey);padding:14px 0}
.admcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:26px 26px 28px;margin-top:20px}
.admcard h5{font-size:15px;font-weight:600;margin-bottom:14px}
/* ★ v1.14 板块隔离：后台一次只显示一个板块的设置卡，点上方胶囊切换，不再把九张卡堆一页 */
#admbox .admcard{display:none}
#admbox .admcard.on{display:block}
.admnav span.on{border-color:var(--red);color:var(--red);background:rgba(200,16,46,.07)}
/* ★ v1.19.4 杨总 9-30「后台太挤，要保持距离感」：胶囊加大、行距拉开，
   说明文字与胶囊、与下方设置卡之间都留出空档 */
.admlead{font-size:12.5px;color:var(--grey);margin:6px 0 30px}
.admrow{display:flex;gap:10px;align-items:center;font-size:13px;padding:8px 0;
  border-bottom:1px solid var(--track);flex-wrap:wrap}
.admrow:last-child{border-bottom:none}
.admrow .del{margin-left:auto;color:var(--red);cursor:pointer;font-size:12px;font-weight:600}

section.blk{display:none}
section.blk.on{display:block}
footer{border-top:1px solid var(--line);margin-top:56px;padding:28px 0 40px;
  font-size:12px;color:var(--grey);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
footer a{cursor:pointer}
footer a:hover{color:var(--ink)}
@media(max-width:640px){.wrap{padding:0 18px}.hero h2{font-size:26px}.blkhead h2{font-size:26px}
  .bar{gap:12px;height:auto;padding:10px 0}.modal{padding:26px 22px}}

/* ================= v1.18 手机端适配（杨总：手机要能用；"手机 APP 也能看"= 加到主屏幕当 APP 用） ================= */
/* 侧栏：手机改成顶部一条横向滚动的导航条，不再折行挤成三行 */
@media(max-width:640px){
  #maincol{margin-left:0}
  #side{border-bottom:1px solid var(--line);background:var(--paper);flex-direction:column;align-items:stretch;gap:4px}
  #side .slogo{width:100%}
  #side nav{width:100%}
  #side .sctrl{width:100%;flex-wrap:wrap}
  .slogo{padding:8px 14px 0}
  .slogo img{width:22px;height:22px}
  .slogo span,.sfoot{display:none}
  nav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:2px;padding:2px 0 6px;
      scrollbar-width:none}
  nav::-webkit-scrollbar{display:none}
  nav a{white-space:nowrap;padding:8px 11px;font-size:13px}
  .sctrl{flex-direction:row;gap:6px;padding:0 12px 8px;border-top:none;margin:0}
  .sctrl .scrow{padding:6px 9px;border:1px solid var(--line);border-radius:9px;gap:6px}
  .sctrl .scrow svg{width:15px;height:15px}
  .sctrl .scrow select{font-size:12px;max-width:96px}
  .wrap{padding:0 14px}
  /* 触屏点击目标不小于 44px，别让手指点空 */
  .mbtn,.chip,.pinbtn{min-height:38px;display:inline-flex;align-items:center;justify-content:center}
  /* ★ 词库/案例卡：grid 默认 min-width:auto 会被长提示词英文撑破 → 手机强制单列 + 允许断词 */
  .grid,.cgrid,.teaserwrap{grid-template-columns:repeat(2,minmax(0,1fr))!important}/* 杨总10-01：手机词库/案例卡一律两列，不塌1列 */
  .pcard,.crole,.card,.teaser{min-width:0}
  .pbody,.ptext,.ptext{min-width:0;max-width:100%;overflow-wrap:anywhere}
  .chips,.homequick{flex-wrap:wrap}
  .pcard .btnrow,.pcard .pact{flex-wrap:wrap}
  /* ★ v1.18.3 杨总：卡片底部按钮一律一排，不折行（词库卡「复制/眼睛/收藏/换图」+ 案例卡「👁/★」） */
  .btnrow,.pact,.cstat{flex-wrap:nowrap !important;white-space:nowrap}
  /* iOS 输入聚焦自动放大页面 → 输入框字号必须 ≥16px（!important 压过 .formrow/.setrow 的 13px） */
  input,textarea,select{font-size:16px !important}
  select{appearance:none;-webkit-appearance:none}
  .formrow input,.formrow textarea,.formrow select{width:100%}
  .formrow{grid-template-columns:1fr !important}
  /* 文章层 / 图片放大层 / 后台弹窗：手机上铺满，别在中间留白 */
  .artv{padding:0}
  .artv .artcard{max-width:100%;max-height:100%;height:100%;width:100%;border-radius:0;border:none;padding:56px 16px 28px;overflow-y:auto}
  .artv .artbody p{font-size:15.5px;line-height:1.9}
  .artv h2{font-size:19px !important}
  .lb{border-radius:0}
  .modal{max-width:100%;width:100%;max-height:92vh;overflow-y:auto;border-radius:0;margin:0}
  .mclose{top:8px;right:12px;z-index:9}
  /* 表格横向滑动，别把内容压变形 */
  .aboard,.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .aboard table{min-width:560px}
  footer{padding-bottom:56px}
}
/* 防 iOS 横屏时字体被自放大 */
html{-webkit-text-size-adjust:100%}
/* PWA：加到主屏幕后全屏、状态栏用深色 */
@media(display-mode:standalone){body{padding-top:env(safe-area-inset-top)}}

/* ================= v1.0 深色模式 ================= */
body.dk{--paper:#16171B;--card:#1F2126;--line:#34363D;--track:#2A2C33;
  --ink:#ECECF0;--sub:#A8A9B1;--grey:#7C7D85;--red:#E8556A}
body.dk #side{background:#191B20;border-color:var(--line)}
body.dk header{background:rgba(22,23,27,.88)}
body.dk .les:nth-child(even){background:#26282E}
body.dk .croles{background:#26282E}
body.dk .setrow input,body.dk .setrow textarea{background:#26282E;color:var(--ink)}
body.dk .notice{background:#2E2A1E;border-color:#4A4330;color:#D8C28A}
body.dk .pnotex{background:repeating-linear-gradient(45deg,#26282E,#26282E 10px,#2E3037 10px,#2E3037 20px)}
body.dk .modal,body.dk .mclose{background:var(--card)}
body.dk .wframe{background:#fff}
body.dk .xcover{filter:saturate(.9)}
body.dk nav a.on{background:#ECECF0;color:#16171B}
body.dk .pgb.on{background:#ECECF0;color:#16171B;border-color:#ECECF0}
body.dk .hero h2,body.dk .gcard h3{color:#ECECF0}
body.dk .hero p,body.dk .blkhead p{color:#A8A9B1}
body.dk .chip.on{background:#ECECF0;color:#16171B;border-color:#ECECF0}
body.dk .stat b{color:#E8556A}
body.dk .cbadge{background:#2A2C33;color:#A8A9B1}
body.dk .mclose{color:#ECECF0}
/* ★ v1.18 深色模式对比度全面修复（杨总：看不清的一律改掉，重点红字、正文黑字/白字） */
body.dk .mbtn{background:#ECECF0;color:#16171B;border-color:#ECECF0}
body.dk .mbtn:hover{background:#FFFFFF;color:#C8102E;border-color:#FFFFFF}
body.dk .mbtn:disabled{background:#3A3C44;color:#8A8A92;border-color:#3A3C44}
body.dk .mbtn.ghost{background:#26282E;color:#ECECF0;border-color:#3A3C44}
body.dk .mbtn.ghost:hover{background:#26282E;color:#E8556A;border-color:#E8556A}
body.dk .sctrl .scrow select option{background:#26282E;color:#ECECF0}
body.dk .wftxt{background:#26282E;color:var(--ink)}
body.dk .bige textarea{background:#26282E;color:var(--ink)}
body.dk .calcell{background:#26282E}
body.dk .upbox{background:#26282E}
body.dk .ptbox{background:#26282E}
body.dk .plancard{background:#1F2126}
body.dk .setrow input,body.dk .setrow textarea{background:#26282E;color:var(--ink)}
body.dk .mecard{background:#1F2126}

/* ================= v1.6 会员墙（非会员：描述词打码 / 复制·滚动·放大拦截） ================= */
/* ★ v1.6 课程 3:4 海报封面：渐变底 + 大字 + 节数徽标（深底浅字，自带对比度） */
.ccover{position:relative;aspect-ratio:3/4;border-radius:11px;margin-bottom:10px;overflow:hidden;
  background:linear-gradient(160deg,var(--cg1) 0%,var(--cg2) 135%);display:flex;flex-direction:column;
  justify-content:flex-end;padding:14px 15px;color:#fff}
.ccover .cck{position:absolute;top:12px;left:15px;font-size:10.5px;letter-spacing:.2em;opacity:.85;font-weight:600}
.ccover b{font-size:19px;font-weight:700;line-height:1.3;letter-spacing:.5px}
.ccover i{font-style:normal;font-size:11.5px;opacity:.92;margin-top:4px}
.ccover .cn{position:absolute;top:10px;right:12px;font-style:normal;font-size:11px;font-weight:700;
  background:rgba(255,255,255,.94);color:var(--cg1);border-radius:999px;padding:3px 10px}

/* 非会员词卡：只露前两行，下面渐隐 + 锁标 */
.ptext{position:relative;overflow:hidden;transition:.2s}
.ptext.plock{height:132px;overflow:hidden}   /* ★ v1.19.4 与会员态同高（只露前 90 字），整卡骨架统一 */
.ptext.plock::after{content:'🔒 完整描述词 · 会员可见';position:absolute;inset:auto 0 0 0;height:38px;
  display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;font-size:10.5px;
  color:var(--sub);background:linear-gradient(180deg,rgba(242,242,244,0),rgba(242,242,244,.96) 62%)}
/* 非会员详情弹窗：正文底部渐隐，滚动被 JS 拦 */
.pbody-lock{position:relative}
.pbody-lock::after{content:'🔒 升级会员查看全部内容';position:absolute;inset:auto 0 0 0;height:64px;
  display:flex;align-items:flex-end;justify-content:center;padding-bottom:14px;font-size:12px;color:var(--sub);
  background:linear-gradient(180deg,rgba(242,242,244,0),rgba(242,242,244,.97) 70%);pointer-events:none}
/* 会员提示弹窗 */
.vipm{position:fixed;inset:0;z-index:1100;display:none;align-items:center;justify-content:center;background:rgba(20,20,22,.5)}
.vipm.on{display:flex}

/* ================= ★ v1.10 杨总三件套：游客墙 / 上传框 / 板块公告 / 后台APP化 ================= */
/* 游客墙：只放行 6 条，其余引导注册 */
.guestgate{margin:18px auto 6px;max-width:460px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:26px 24px;text-align:center}
.guestgate .gg-ic{font-size:30px}
.guestgate b{display:block;font-size:15.5px;color:var(--ink);margin-top:8px}
.guestgate p{font-size:12.5px;color:var(--sub);line-height:1.8;margin-top:8px}
.guestgate .mbtn{margin-top:14px}
/* 上传框：虚线大加号，类 APP 体验（点击选图 → 本地压缩 → 填入地址） */
.upbox{border:1.6px dashed var(--line);border-radius:12px;background:var(--paper,#F7F7F9);min-height:86px;
  display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:var(--grey);
  font-size:12.5px;transition:.15s;position:relative;overflow:hidden;text-align:center;padding:10px}
.upbox:hover{border-color:var(--red);color:var(--red)}
.upbox.has{border-style:solid;border-color:var(--line);padding:0;min-height:110px}
.upbox.has img{width:100%;height:110px;object-fit:cover;display:block}
.upbox.has .upx{position:absolute;top:6px;right:6px;background:rgba(20,20,22,.72);color:#fff;border:none;
  border-radius:999px;width:22px;height:22px;font-size:12px;line-height:1;cursor:pointer}
.upbox .plus{font-size:26px;line-height:1;font-weight:300}
/* 板块公告条：每个板块顶部的可运营横幅 */
.secnotice{display:none;align-items:flex-start;gap:10px;background:var(--card);border:1px solid var(--line);
  border-left:4px solid var(--red);border-radius:10px;padding:12px 14px;margin:0 0 14px;font-size:13px;color:var(--ink);line-height:1.7}
.secnotice.on{display:flex}
.secnotice .snx{margin-left:auto;cursor:pointer;color:var(--grey);font-size:15px;line-height:1;flex:none}
/* 管理后台：APP 式板块锚点导航 */
/* ★ v1.19.4 杨总 9-30：胶囊加大一号、彼此间距拉开，与标题/说明、与下方卡片都保持距离感 */
.admnav{display:flex;flex-wrap:wrap;gap:12px 14px;margin:22px 0 18px}
.admnav span{cursor:pointer;font-size:13px;padding:9px 17px;border:1px solid var(--line);border-radius:999px;
  background:var(--card);color:var(--sub);transition:.15s}
.admnav span:hover{border-color:var(--red);color:var(--red)}
/* 侧栏板块设置齿轮（管理员可见） */
nav a[data-t]{position:relative}
/* ============ ★ v1.12 四列响应式 + 游客模糊预告墙 ============ */
@media(max-width:1180px){.grid,.cgrid,.teaserwrap{grid-template-columns:repeat(3,1fr)}}
@media(max-width:860px){.grid,.cgrid,.teaserwrap{grid-template-columns:repeat(2,1fr)}}
.teaserwrap{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-top:15px}
.teaserwrap .teaser{filter:blur(7px) saturate(.85);opacity:.72;pointer-events:none;user-select:none}
/* 上传卡片网格（后台素材区） */
.upgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:10px}
.upgrid .ucard{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--paper,#F7F7F9)}
.upgrid .ucard img{width:100%;height:84px;object-fit:cover;display:block}
.upgrid .ucard i{display:block;font-size:11px;color:var(--grey);padding:6px 8px;font-style:normal;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vipm .vipcard{width:min(360px,90vw);background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:28px 26px 22px;text-align:center;box-shadow:0 24px 70px rgba(20,20,25,.25)}
.vipm .vipcard .vi{font-size:34px}
.vipm .vipcard h5{font-size:17px;font-weight:700;color:var(--ink);margin-top:8px}
.vipm .vipcard p{font-size:12.5px;color:var(--sub);line-height:1.8;margin-top:8px}
.vipm .vipcard .btnrow{margin-top:16px;justify-content:center}
/* ★ v1.18.3 杨总：升级弹窗加大一档（420→600），权益明细单列一块，下方留滚动区放收款说明 */
/* ★ v1.19.2 杨总 9-30：弹窗内容超屏时按钮被挡、又滑不动——paycard 限高 92vh 内部滚动，永远能点到确认 */
.vipm .paycard{width:min(760px,94vw);max-height:92vh;overflow-y:auto;padding:26px 28px 22px;text-align:left}
.vipm .paycard h5{font-size:19px}
.vipm .payperks{background:var(--track,#F2F2F4);border-radius:11px;padding:13px 15px;margin:14px 0 10px;border-left:3px solid var(--red)}
.vipm .payperks b{font-size:12.5px;color:var(--red);display:block;margin-bottom:7px}
.vipm .payperks ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.vipm .payperks li{font-size:13px;color:var(--ink);line-height:1.5;padding-left:16px;position:relative}
.vipm .payperks li::before{content:'✓';position:absolute;left:0;color:var(--red);font-weight:700}
.vipm .payscroll{max-height:0;overflow:hidden;transition:max-height .25s}
.vipm .paycard.open .payscroll{max-height:340px;overflow-y:auto}
.vipm .paytabs-ex{background:#FBF3F4;border:1px solid var(--line);border-radius:10px;padding:11px 13px;
  font-size:12.5px;line-height:1.75;color:var(--sub);margin:6px 0}
.dk .vipm .payperks{background:#26282E}
.dk .vipm .paytabs-ex{background:#26282E;border-color:#33363D}
/* ★★ v1.18.7 杨总支付弹窗排版：价格左右分栏（红小划线 / 黑大实价）、整体拉宽拉高、每块之间空一行 */
.vipm .payprice{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:14px 0 4px}
.vipm .payorig{flex:0 0 auto}
.vipm .payorig del{font-size:15px;font-weight:600;color:var(--red);opacity:.85;text-decoration-color:var(--red)}
.vipm .paynow{flex:0 0 auto;font-size:40px;font-weight:800;color:var(--ink);line-height:1.1;letter-spacing:-.5px}
.vipm .paynow small{font-size:13px;font-weight:600;color:var(--grey);margin-left:6px}
.vipm .paycard .payperks{margin:20px 0 18px;padding:15px 17px}
.vipm .paycard .payperks ul{gap:10px}
.vipm .paycard .payperks li{font-size:13.5px;line-height:1.6}
/* ★ 页签与二维码之间空一行（杨总原话：不要贴太近） */
.vipm .paytabs{display:flex;justify-content:center;gap:10px;margin-top:8px}
.vipm .paytabs .chip{padding:8px 18px;font-size:14px;min-width:104px;text-align:center}
.vipm .payqrbox{margin-top:26px;margin-bottom:6px}
.vipm .payqrbox img{border-radius:12px}
.vipm .paycard .btnrow{margin-top:20px;gap:12px}
.vipm .paycard .btnrow .mbtn{padding:12px 16px;font-size:14px}
/* ★ 必填备注提醒＋到账说明，红框小卡，跟二维码隔开一段距离 */
.vipm .paynote{background:#FBF3F4;border:1px solid var(--line);border-left:3px solid var(--red);
  border-radius:10px;padding:14px 16px;margin-top:22px;display:grid;gap:7px}
.vipm .paynote b{font-size:14px;color:var(--red)}
.vipm .paynote span{font-size:13px;color:var(--ink);line-height:1.7}
.vipm .paynote span b{font-size:13px;color:var(--red);font-weight:700}
.vipm .payfields{background:#FBF3F4;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-top:14px}
.vipm .payfields label{display:block;font-size:12.5px;color:var(--sub);margin-bottom:5px}
.vipm .payfields label b{color:var(--red)}
.vipm .payfields input{width:100%;box-sizing:border-box;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:14px;margin-bottom:11px;background:#fff}
.vipm .payfields .preq{display:block;color:var(--red);font-size:12px;line-height:1.6}
.vipm .payjoin{color:var(--red);font-weight:700;text-decoration:underline;cursor:pointer}
.dk .vipm .payfields{background:#26282E}
.dk .vipm .payfields input{background:#1b1d22;color:#eee;border-color:#33363D}
.vipm .paytip{font-size:12.5px;color:var(--sub);line-height:1.75;margin-top:14px}
.dk .vipm .paynote{background:#26282E}
.dk .vipm .paytip{color:#A9A9B2}

/* ================= v1.6 深色模式对比度修复（底写死浅色 → 字写死深色） ================= */
/* 未验证案例卡：白色渐隐遮罩在深底上会洗白文字 → 改深色渐隐 */
body.dk .mask{background:linear-gradient(180deg,rgba(22,23,27,0),rgba(31,33,38,.97))}
/* 白皮书封面：底固定浅渐变 → 内部文字一律写死深色，两种模式都清晰 */
body.dk .wcover34{background:linear-gradient(160deg,#FFFFFF 0%,#F2F2F4 70%,#E9E9ED 100%)}
body.dk .wcover34 em,body.dk .wcover34 h6,body.dk .wcover34 i{color:#56565E !important}
body.dk .wcover34 h6{color:#1D1D1F !important}
body.dk .wcover34 u{color:#C8102E !important}
body.dk .wcover34 .wfoot{color:#8A8A92 !important}
body.dk .wcover34 .wtopbar{background:#C8102E}
/* 白底小按钮（复制提示词等）：深色下换深底浅字，不再白底浅字 */
body.dk .copy{background:#26282E;color:#ECECF0;border-color:#3A3C44}
body.dk .copy:hover{background:#26282E;color:#E8556A;border-color:#E8556A}
/* 表单写死白底件 */
body.dk .wftxt,body.dk .notice{color:#ECECF0}
body.dk .notice{background:#2E2A1E;color:#D8C28A}
/* 门层整体固定浅底：局部把变量拨回浅色系，杜绝浅底浅字 */
body.dk #gate{--paper:#F2F2F4;--card:#E9E9ED;--ink:#1D1D1F;--sub:#56565E;--grey:#8A8A92;
  --line:#D8D8E0;--track:#E4E4EA;--red:#C8102E}
/* 管理员运营看板弹层 */
.aboard{max-height:62vh;overflow:auto;border:1px solid var(--line);border-radius:11px;
  background:var(--paper);padding:12px 14px;margin-top:10px}
.aboard table{width:100%;border-collapse:collapse;font-size:12px}
.aboard th,.aboard td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);color:var(--sub)}
.aboard th{color:var(--ink);font-weight:600;white-space:nowrap}
.aboard td b{color:var(--ink)}
.aboard .tagvip{color:var(--red);font-weight:600}
.aboard .invrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.aboard .invc{font-family:ui-monospace,Consolas,monospace;font-size:12px;border:1px dashed var(--line);
  border-radius:6px;padding:3px 9px;color:var(--ink);cursor:pointer}
.aboard .invc.used{color:var(--grey);text-decoration:line-through;cursor:default}


/* 顶栏控制件（语言 / 深色） */
.tctrl{display:flex;align-items:center;gap:8px;margin-left:14px}
.tctrl select{border:1px solid var(--line);border-radius:15px;padding:4px 10px;font-size:12.5px;
  background:var(--card);color:var(--ink);outline:none;font-family:inherit;cursor:pointer}
.tctrl .thbtn{border:1px solid var(--line);border-radius:15px;padding:4px 11px;font-size:12.5px;
  color:var(--sub);cursor:pointer;background:var(--card);font-family:inherit}
.tctrl .thbtn:hover{border-color:var(--ink);color:var(--ink)}
/* ★ v1.1 深色模式指示：灰色小圆点（浅色=浅色圈 / 深色=深灰圈），替代黄色月亮 emoji */
.dkdot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px;vertical-align:-1px;
  background:#FFFFFF;border:1.5px solid #A9A9B3;transition:.2s}
.dkdot.dkon{background:#43434B;border-color:#7E7E88}
/* ★ v1.1 商务对接红色类目标注 */
.redcats{color:var(--red);font-weight:600;font-size:13px}

/* ================= v1.0 动态门层（门户 + 登录） ================= */
#gate{position:fixed;inset:0;z-index:1200;overflow:hidden;background:
  radial-gradient(1100px 620px at 12% -8%, #FFFFFF 0%, rgba(255,255,255,0) 60%),
  radial-gradient(900px 560px at 96% 108%, #FDECEF 0%, rgba(253,236,239,0) 55%),
  #F4F4F6}
#gate .blob{position:absolute;border-radius:50%;filter:blur(60px);opacity:.5;pointer-events:none;
  animation:blob 11s ease-in-out infinite alternate}
@keyframes blob{from{transform:translate(0,0) scale(1)}to{transform:translate(46px,-34px) scale(1.12)}}
#gate .gwrap{position:relative;z-index:2;width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  gap:64px;padding:40px;flex-wrap:wrap}
#gate .gleft{max-width:560px}
#gate .gtag{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;letter-spacing:.22em;
  color:var(--red);font-weight:700;margin-bottom:18px}
#gate .gtag i{width:26px;height:2px;background:var(--red);font-style:normal}
#gate h1{font-size:52px;font-weight:700;letter-spacing:.5px;line-height:1.18;color:var(--ink)}
#gate h1 em{font-style:normal;color:var(--red)}
#gate .gsub{margin-top:18px;font-size:15.5px;color:var(--sub);line-height:1.9;max-width:520px}
#gate .gsub b{color:var(--ink)}
#gate .gchips{display:flex;gap:10px;margin-top:26px;flex-wrap:wrap}
#gate .gchip{background:rgba(255,255,255,.72);border:1px solid var(--line);border-radius:12px;
  padding:12px 16px;font-size:13px;color:var(--ink);cursor:grab;user-select:none;
  box-shadow:0 6px 20px rgba(20,20,25,.06);transition:transform .2s,box-shadow .2s;will-change:transform}
#gate .gchip:hover{box-shadow:0 10px 26px rgba(20,20,25,.12)}
#gate .gchip b{display:block;font-weight:700;margin-bottom:2px}
#gate .gchip span{font-size:11.5px;color:var(--sub)}
#gate .gfoot{margin-top:34px;font-size:12px;color:var(--grey);letter-spacing:.06em}
/* 登录卡 */
#gate .gcard{width:min(400px,92vw);background:rgba(255,255,255,.9);backdrop-filter:blur(14px);
  border:1px solid var(--line);border-radius:18px;padding:30px 30px 24px;
  box-shadow:0 24px 70px rgba(20,20,25,.13)}
#gate .gcard h3{font-size:19px;font-weight:700;color:var(--ink)}
#gate .gcard .gsub2{font-size:12.5px;color:var(--sub);margin-top:5px}
#gate .gtabs{display:flex;gap:8px;margin-top:18px}
#gate .gtab{flex:1;text-align:center;padding:9px 0;border-radius:9px;font-size:13px;cursor:pointer;
  border:1px solid var(--line);color:var(--sub);background:transparent;font-family:inherit}
#gate .gtab.on{background:var(--ink);color:#fff;border-color:var(--ink);font-weight:600}
#gate .gfield{margin-top:14px;display:flex;gap:8px}
#gate .gfield input{flex:1;padding:11px 13px;font-size:14px;border:1px solid var(--line);
  border-radius:9px;background:var(--paper);color:var(--ink);outline:none;font-family:inherit;min-width:0}
#gate .gfield input:focus{border-color:var(--ink)}
#gate .gfield .codebtn{flex:none;padding:0 14px;font-size:12.5px;border:1px solid var(--ink);
  border-radius:9px;background:transparent;color:var(--ink);cursor:pointer;font-family:inherit}
#gate .gfield .codebtn:disabled{border-color:var(--line);color:var(--grey);cursor:not-allowed}
#gate .gbtn{margin-top:16px;width:100%;padding:12px;font-size:14.5px;font-weight:600;border:none;
  border-radius:9px;background:var(--red);color:#fff;cursor:pointer;font-family:inherit}
#gate .gbtn:hover{filter:brightness(1.06)}
#gate .gerr{margin-top:9px;font-size:12.5px;color:var(--red);min-height:17px}
#gate .gtip{margin-top:12px;font-size:11px;color:var(--grey);line-height:1.7;border-top:1px solid var(--line);padding-top:12px}
#gate .wqr{width:190px;height:190px;margin:18px auto 0;border:1.5px dashed var(--grey);border-radius:12px;
  display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;color:var(--grey);line-height:1.7}
#gate .gone{display:none}
#gate .gone.on{display:block}
/* ★ v1.5 云端登录：邮箱体系（网页端只支持邮箱登录） */
#gate .glink{color:var(--ink);font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
#gate .gdot{margin:0 7px;color:var(--grey)}
#gate .gline{margin-top:10px}
#gate .gnew{display:none}
#gate .gnew.on{display:flex}
#gate .gtabs.sm{margin-top:14px;gap:6px}
#gate .gtabs.sm .gtab{font-size:12px;padding:7px 0}
#gate .gtabs.sm .gtab.on{font-size:12px;background:var(--ink);border-color:var(--ink);color:#fff}
#gate .gtip b{color:var(--sub);font-weight:600}
/* ★ v1.5 会员总界面 */
.gone{display:none}
.memline{font-size:12.5px;color:var(--sub);line-height:1.9;margin-top:5px}
.memline b{color:var(--ink);font-weight:600}
.memboard{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
@media(max-width:960px){#gate h1{font-size:36px}.gwrap{gap:30px}}
/* ★★ v1.18.8 手机端登录卡住修复（杨总：手机打开登录框在最下面、滑不下来）。
   真凶＝#gate overflow:hidden + .gwrap height:100%：手机屏内容超一屏，登录卡下半截被裁掉且整层不可滚。
   修复：手机端 gate 改为可滚动；漂浮卡（鼠标交互彩蛋）收掉、标题压缩，登录卡正好落在首屏中间偏上 */
@media(max-width:760px){
  #gate{overflow-y:auto;-webkit-overflow-scrolling:touch}
  #gate .gwrap{height:auto;min-height:100%;flex-direction:column;align-items:center;justify-content:flex-start;
    gap:4px;padding:38px 18px 46px}
  #gate .gleft{max-width:92vw}
  #gate h1{font-size:30px;line-height:1.25}
  #gate .gsub{font-size:13.5px;margin-top:12px;line-height:1.75}
  #gate .gchips,#gate .gfoot{display:none}
  #gate .gcard{width:min(420px,94vw);margin-top:16px}
  #gate .gtip{font-size:10.5px}
}

/* ================= v1.0 社群 / 商务对接 ================= */
.joinsec{margin-top:44px;padding-top:36px;border-top:2px dashed var(--line)}
.joinsec .jsec-h{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.joinsec .jsec-h h2{font-size:22px;font-weight:700}
.joinsec .jsec-h span{font-size:12.5px;color:var(--grey)}
.qrcard .qr.click{cursor:pointer;border-style:solid;border-color:var(--line);transition:.15s}
.qrcard .qr.click:hover{border-color:var(--red);box-shadow:0 4px 16px rgba(200,16,46,.1)}
.qrcard .qr.click::after{content:'点击上传图片';position:absolute;bottom:0;left:0;right:0;z-index:3;
  font-size:10px;color:#fff;background:rgba(20,20,25,.55);text-align:center;padding:3px 0;opacity:0;transition:.15s}
.qrcard .qr.click:hover::after{opacity:1}
.qrup{font-size:11px;color:var(--grey);margin-top:4px}
.warnbox{margin-top:16px;border:1px solid #F0D4D9;background:#FDF5F6;border-radius:10px;
  padding:13px 16px;font-size:12.5px;color:#8A2530;line-height:1.9}
.warnbox b{color:var(--red)}
body.dk .warnbox{background:#2A2124;border-color:#4A3438;color:#E2A6AE}