:root {
  --ink: #23282d; --muted: #868e96; --line: #ece6dd; --bg: #f7f8fa; --card: #fff;
  --primary: #d9603b; --primary-dk: #b84a29; --green: #2f7a5f; --blue: #2c7be5;
  --hot: #e2453c; --warm: #e8a33d; --cold: #b8b2aa;
  --radius: 14px;
}
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; padding: 0; max-width: 100%; overflow-x: hidden; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--ink); font-size: 15px; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
.wrap { max-width: 520px; margin: 0 auto; padding: 0 14px 96px; }
.wide { max-width: 900px; }

/* ---------- 顶栏 ---------- */
.topbar { position: sticky; top: 0; z-index: 30; background: rgba(255,255,255,.96); backdrop-filter: blur(10px); border-bottom: 1px solid var(--line); }
.topbar-in { max-width: 520px; margin: 0 auto; padding: 10px 14px; display: flex; align-items: center; gap: 10px; }
.avatar { width: 36px; height: 36px; border-radius: 10px; flex: 0 0 36px; background: linear-gradient(135deg,#f0b24a,#d9603b); color: #fff; font-weight: 700; font-size: 16px; display: flex; align-items: center; justify-content: center; }
.topbar h1 { font-size: 16px; margin: 0; font-weight: 700; }
.topbar .sub { font-size: 11px; color: var(--muted); margin-top: 1px; }
.iconbtn { background: none; border: none; font-size: 13px; color: var(--primary-dk); padding: 6px 2px; font-family: inherit; cursor: pointer; }

/* ---------- 底部导航 ---------- */
.tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; background: rgba(255,255,255,.98); border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom); }
.tabbar-in { max-width: 520px; margin: 0 auto; display: flex; }
.tabbar button { flex: 1; background: none; border: none; padding: 7px 0 8px; font-family: inherit; font-size: 11px; color: var(--muted); display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; }
.tabbar button.on { color: var(--primary-dk); font-weight: 700; }
.tabbar svg { width: 21px; height: 21px; stroke: currentColor; fill: none; stroke-width: 1.7; }

/* ---------- 卡片 ---------- */
.card { background: var(--card); border-radius: var(--radius); padding: 14px; margin: 10px 0; border: 1px solid #f0ebe4; }
.card.flat { border: none; box-shadow: 0 1px 3px rgba(30,25,20,.05); }
.card-title { font-size: 15px; font-weight: 700; margin: 0 0 4px; }
.card-desc { font-size: 13px; color: var(--muted); margin: 0; }
.sec-title { font-size: 13px; color: var(--muted); margin: 18px 4px 6px; display: flex; align-items: center; gap: 8px; }
.sec-title b { color: var(--ink); font-size: 14px; }

/* ---------- 按钮 ---------- */
.btn { display: block; width: 100%; padding: 12px; border: none; border-radius: 11px; font-size: 16px; font-weight: 700; font-family: inherit; cursor: pointer; background: var(--primary); color: #fff; margin-top: 10px; }
.btn:active { background: var(--primary-dk); }
.btn.ghost { background: #fff; color: var(--primary-dk); border: 1px solid var(--primary); }
.btn.grey { background: #f2efea; color: var(--ink); }
.btn.sm { display: inline-block; width: auto; padding: 7px 12px; font-size: 13px; margin: 0; border-radius: 9px; }
.btn:disabled { opacity: .55; }
.linkbtn { background: none; border: none; color: var(--primary-dk); font-size: 13px; font-family: inherit; padding: 4px 0; cursor: pointer; }

/* ---------- 表单 ---------- */
label { display: block; font-size: 12.5px; color: var(--muted); margin: 12px 0 5px; }
input, select, textarea { width: 100%; font-family: inherit; font-size: 15px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); outline: none; }
input:focus, textarea:focus { border-color: var(--primary); }
.row2 { display: flex; gap: 10px; } .row2 > div { flex: 1; }
.err { color: var(--hot); font-size: 13px; margin-top: 8px; min-height: 18px; }
.tip { background: #fdf1ea; border-left: 3px solid var(--primary); padding: 10px 12px; border-radius: 0 8px 8px 0; font-size: 13px; color: #7a4a34; margin: 10px 0; }
.tip.green { background: #edf7f1; border-color: var(--green); color: #245c46; }
.tip.grey { background: #f3f4f6; border-color: #c9ccd1; color: #5b6269; }
.tip.blue { background: #eef4fd; border-color: var(--blue); color: #1f4c8f; }

/* ---------- 统计 ---------- */
.stats { display: flex; gap: 8px; margin: 10px 0 2px; }
.stat { flex: 1; background: #f8f6f3; border-radius: 10px; padding: 8px 6px; text-align: center; }
.stat b { display: block; font-size: 19px; line-height: 1.2; }
.stat span { font-size: 11px; color: var(--muted); }

/* ---------- 方案池 ---------- */
.chips { display: flex; gap: 8px; overflow-x: auto; padding: 10px 0 6px; -webkit-overflow-scrolling: touch; }
.chips::-webkit-scrollbar { display: none; }
.chip { flex: 0 0 auto; padding: 7px 14px; border-radius: 20px; font-size: 13px; background: #fff; border: 1px solid var(--line); color: #5b6269; cursor: pointer; font-family: inherit; }
.chip.on { background: var(--ink); border-color: var(--ink); color: #fff; }
.plan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.plan-card { background: #fff; border-radius: 12px; overflow: hidden; border: 1px solid #f0ebe4; cursor: pointer; }
.plan-thumb { position: relative; aspect-ratio: 4/3; background: linear-gradient(135deg,#cfd8e3,#a9bccd); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; }
.plan-thumb .playmask { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.plan-thumb .playmask svg { width: 34px; height: 34px; fill: rgba(255,255,255,.9); }
.plan-thumb .tag { position: absolute; left: 6px; top: 6px; background: rgba(0,0,0,.42); color: #fff; font-size: 10px; padding: 2px 6px; border-radius: 4px; }
.plan-thumb .none { font-size: 11px; opacity: .9; }
.plan-name { padding: 8px 9px 10px; font-size: 13px; line-height: 1.45; font-weight: 600; }
.plan-name small { display: block; color: var(--muted); font-weight: 400; font-size: 11px; margin-top: 3px; }

/* 方案详情 */
.hero-media { position: relative; width: 100%; aspect-ratio: 16/9; background: #26313c; border-radius: 12px; overflow: hidden; display: flex; align-items: center; justify-content: center; color: #cfd8e3; }
.hero-media img { width: 100%; height: 100%; object-fit: cover; }
.hero-media .pl { position: absolute; width: 52px; height: 52px; border-radius: 50%; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; }
.hero-media .pl svg { width: 22px; height: 22px; fill: #fff; }
.actbar { display: flex; background: #fff; border-radius: 12px; margin-top: -14px; position: relative; z-index: 2; box-shadow: 0 2px 8px rgba(30,25,20,.07); }
.act { flex: 1; background: none; border: none; padding: 9px 0 8px; font-family: inherit; font-size: 11px; color: var(--muted); display: flex; flex-direction: column; align-items: center; gap: 2px; cursor: pointer; }
.act svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.7; }
.act.on { color: var(--primary-dk); }
.act.disabled { opacity: .38; }
.article { font-size: 15px; line-height: 1.85; color: #33383d; padding: 4px 2px; }
.article p { margin: 0 0 12px; }
.article h2, .article h3 { font-size: 16px; margin: 18px 0 8px; }
.article img { margin: 10px 0; border-radius: 10px; }

/* ---------- 发布 ---------- */
.seg { display: flex; background: #f1efec; border-radius: 10px; padding: 3px; margin: 8px 0; }
.seg button { flex: 1; border: none; background: none; font-family: inherit; font-size: 13.5px; padding: 7px 0; border-radius: 8px; color: #5b6269; cursor: pointer; }
.seg button.on { background: #fff; font-weight: 700; color: var(--ink); box-shadow: 0 1px 3px rgba(0,0,0,.06); }
.post-row { display: flex; gap: 11px; background: #fff; border-radius: 12px; padding: 11px; margin: 9px 0; border: 1px solid #f0ebe4; }
.post-thumb { width: 84px; height: 63px; border-radius: 8px; flex: 0 0 84px; background: linear-gradient(135deg,#cfd8e3,#a9bccd); overflow: hidden; }
.post-thumb img { width: 100%; height: 100%; object-fit: cover; }
.post-main { flex: 1; min-width: 0; }
.post-title { font-size: 14px; font-weight: 600; line-height: 1.4; }
.post-meta { font-size: 11px; color: var(--muted); margin-top: 4px; }
.badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 5px; }
.badge.draft { background: #fff2de; color: #a3701f; }
.badge.pub { background: #e9f5ee; color: #24684c; }

/* ---------- 编辑器 ---------- */
.ed-top { position: sticky; top: 0; z-index: 25; background: #fff; border-bottom: 1px solid var(--line); padding: 9px 14px; display: flex; align-items: center; gap: 8px; }
.ed-top .t { flex: 1; font-size: 14px; font-weight: 700; text-align: center; }
.cover-box { position: relative; border-radius: 12px; overflow: hidden; background: linear-gradient(135deg,#c9d6e4,#9fb3c6); aspect-ratio: 16/9; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.cover-box img { width: 100%; height: 100%; object-fit: cover; }
.cover-box .hint { position: absolute; right: 8px; bottom: 8px; background: rgba(0,0,0,.5); color: #fff; font-size: 11px; padding: 4px 9px; border-radius: 20px; }
.cover-box .ph { color: #fff; font-size: 13px; opacity: .9; }
.ed-body { background: #fff; border-radius: 12px; padding: 14px; margin-top: 10px; min-height: 260px; }
.ed-body:focus { outline: 2px solid #f3d9cd; }
.toolbar { display: flex; gap: 6px; margin: 8px 0; flex-wrap: wrap; }
.toolbar button { border: 1px solid var(--line); background: #fff; border-radius: 7px; padding: 5px 10px; font-size: 12.5px; font-family: inherit; color: #444; cursor: pointer; }
.ev-box { background: #f8f9fb; border: 1px dashed #d8dee6; border-radius: 12px; padding: 12px; margin-top: 10px; }

/* ---------- 客户池 ---------- */
.funnel { display: flex; gap: 12px; align-items: center; background: #fff; border-radius: 14px; padding: 14px; }
.donut { width: 108px; height: 108px; border-radius: 50%; flex: 0 0 108px; position: relative; display: flex; align-items: center; justify-content: center; }
.donut::after { content: ""; position: absolute; inset: 15px; background: #fff; border-radius: 50%; }
.donut .in { position: relative; z-index: 2; text-align: center; line-height: 1.15; }
.donut .in b { font-size: 19px; display: block; }
.donut .in span { font-size: 10px; color: var(--muted); }
.funnel-nums { flex: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.fn { background: #f8f6f3; border-radius: 10px; padding: 7px 8px; text-align: center; }
.fn b { display: block; font-size: 17px; } .fn span { font-size: 10.5px; color: var(--muted); }
.searchbar { display: flex; align-items: center; gap: 8px; background: #fff; border-radius: 10px; padding: 9px 12px; margin: 10px 0; border: 1px solid #f0ebe4; }
.searchbar input { border: none; padding: 0; font-size: 14px; background: none; }
.filters { display: flex; gap: 8px; margin: 4px 0 10px; flex-wrap: wrap; }
.filters select { width: auto; padding: 6px 10px; font-size: 12.5px; border-radius: 8px; }
.lead-card { background: #fff; border-radius: 12px; padding: 11px 12px; margin: 9px 0; border: 1px solid #f0ebe4; }
.lead-top { display: flex; gap: 8px; align-items: flex-start; }
.lead-line { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.lead-idx { width: 20px; height: 20px; border-radius: 50%; background: var(--hot); color: #fff; font-size: 11px; display: flex; align-items: center; justify-content: center; flex: 0 0 20px; margin-top: 2px; }
.lead-idx.n2 { background: #f0a04b; } .lead-idx.n3 { background: #c9ccd1; }
.progress { height: 16px; border-radius: 8px; background: #eef1f4; margin-top: 8px; overflow: hidden; position: relative; }
.progress i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 8px; }
.progress b { position: absolute; left: 8px; top: 0; line-height: 16px; font-size: 10.5px; color: #fff; }
.lead-acts { display: flex; gap: 6px; margin-top: 9px; flex-wrap: wrap; }
.lead-acts .btn { margin: 0; flex: 1 1 0; min-width: 0; padding: 7px 4px; font-size: 12px; white-space: nowrap; }

/* ---------- 官网 ---------- */
.site-hero { background: linear-gradient(135deg,#3b4c5c,#22303c); color: #fff; border-radius: 14px; padding: 22px 16px; margin-top: 10px; }
.site-hero .n { font-size: 20px; font-weight: 800; }
.site-hero .d { font-size: 12px; opacity: .75; margin-top: 6px; }
.feed { background: #fff; border-radius: 14px; padding: 12px; margin: 10px 0; border: 1px solid #f0ebe4; }
.feed-hd { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.feed-hd .av { width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(135deg,#f0b24a,#d9603b); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.feed-hd .nm { font-size: 12.5px; font-weight: 600; }
.feed-hd .tm { font-size: 10.5px; color: var(--muted); }
.feed-t { font-size: 15px; font-weight: 700; line-height: 1.45; margin: 2px 0 6px; }
.feed-s { font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.feed-thumb { width: 100%; aspect-ratio: 16/9; border-radius: 10px; background: linear-gradient(135deg,#cfd8e3,#a9bccd); margin-top: 9px; overflow: hidden; position: relative; }
.feed-thumb img { width: 100%; height: 100%; object-fit: cover; }
.feed-thumb .pl { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.feed-thumb .pl svg { width: 40px; height: 40px; fill: rgba(255,255,255,.9); }
.feed-ft { display: flex; gap: 16px; font-size: 11px; color: var(--muted); margin-top: 9px; }

/* ---------- 我的 ---------- */
.list-row { display: flex; align-items: center; gap: 10px; padding: 13px 2px; border-bottom: 1px solid #f2ede7; }
.list-row:last-child { border-bottom: none; }
.list-row .l { flex: 1; font-size: 14.5px; }
/* 右侧说明文字以前会被硬切（"老师学习如何…"），改成超长就省略号，别切一半 */
.list-row .r { font-size: 12.5px; color: var(--muted); flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chev { color: #c3c8cd; font-size: 16px; }
.teacher-row { display: flex; align-items: center; gap: 10px; padding: 11px 0; border-bottom: 1px solid #f2ede7; }
.teacher-row:last-child { border-bottom: none; }
.tname { font-weight: 600; font-size: 14px; }
.tmeta { font-size: 11.5px; color: var(--muted); }
.role { font-size: 10px; padding: 1px 6px; border-radius: 4px; background: #eef4fd; color: #1f4c8f; margin-left: 5px; }
.role.admin { background: #fdf1ea; color: #a4492a; }

/* ---------- 弹层 ---------- */
.mask { position: fixed; inset: 0; background: rgba(25,20,16,.45); z-index: 60; display: flex; align-items: flex-end; justify-content: center; }
.sheet { width: 100%; max-width: 520px; max-height: 88vh; overflow-y: auto; background: #fff; border-radius: 18px 18px 0 0; padding: 16px 15px calc(18px + env(safe-area-inset-bottom)); }
.sheet h3 { margin: 0 0 6px; font-size: 17px; }
.sheet .close { float: right; font-size: 22px; line-height: 1; color: var(--muted); background: none; border: none; cursor: pointer; }
/* 详情弹窗里的内容图：源内容可能带写死的 width/height 属性（如 768×1024），
   强制"宽度占满、高度按比例自动"，避免宽度缩了高度还写死导致被拉变形 */
.sheet .ss img, .sheet .article img { max-width: 100%; width: 100%; height: auto !important; }

/* ---------- 杂 ---------- */
.hr { height: 1px; background: var(--line); margin: 12px 0; }
.muted { color: var(--muted); } .small { font-size: 12px; } .center { text-align: center; }
.hidden { display: none !important; }
.hot { color: var(--hot); } .warmc { color: #b9802a; } .coldc { color: var(--muted); }
.toast { position: fixed; left: 50%; top: 22px; transform: translateX(-50%); z-index: 99; background: #2c3a34; color: #fff; padding: 9px 16px; border-radius: 20px; font-size: 13px; box-shadow: 0 6px 20px rgba(0,0,0,.18); }

/* 后台在电脑上别太宽 */
#login { max-width: 420px; margin-left: auto; margin-right: auto; }
#tab-config .card { max-width: 620px; margin-left: auto; margin-right: auto; }
#tab-plans .card { max-width: 760px; margin-left: auto; margin-right: auto; }

/* 编辑器底部按钮条 */
.footbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; background: rgba(255,255,255,.98); border-top: 1px solid var(--line); padding: 10px 14px calc(10px + env(safe-area-inset-bottom)); }
.footbar-in { max-width: 520px; margin: 0 auto; display: flex; gap: 10px; }
.footbar .btn { margin: 0; flex: 1; }
.ed-top-in { width: 100%; max-width: 520px; margin: 0 auto; display: flex; align-items: center; gap: 8px; }

/* 方案卡片底部的热度 */
.plan-stats { display: flex; align-items: center; gap: 10px; margin-top: 6px; font-size: 11px; color: var(--muted); font-weight: 400; }
.plan-stats .like { display: inline-flex; align-items: center; gap: 3px; padding: 1px 7px; border-radius: 20px; background: #f4f1ec; }
.plan-stats .like.on { background: #fdeee8; color: var(--primary-dk); }

/* 官网顶部轮播 */
.carousel { display: flex; gap: 10px; overflow-x: auto; padding: 2px 0 8px; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
.carousel::-webkit-scrollbar { display: none; }
.slide { flex: 0 0 86%; aspect-ratio: 16/9; border-radius: 12px; background: linear-gradient(135deg,#cfd8e3,#a9bccd); background-size: cover; background-position: center; scroll-snap-align: center; position: relative; overflow: hidden; cursor: pointer; }
.slide .t { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 10px; color: #fff; font-size: 13.5px; font-weight: 700; background: linear-gradient(transparent, rgba(0,0,0,.55)); }

/* ---------- 意向温度（旧版没有，本版新增的辅助指标） ---------- */
.temp { flex: 0 0 48px; text-align: right; }
.temp b { font-size: 14px; color: var(--ink); }
.temp .bar { height: 5px; border-radius: 3px; background: #eee9e2; margin-top: 4px; overflow: hidden; }
.temp .bar i { display: block; height: 100%; border-radius: 3px; transition: width .3s; }
.temp.hot b { color: #e2453c; }
.temp.warm b { color: #b9802a; }
.temp.cold b { color: #8b857d; }
.bar i.high { background: #e2453c; }
.bar i.mid { background: #e8a33d; }
.bar i.low { background: #c9c3ba; }

/* ---------- 底部导航：五格文字不挤 ---------- */
.tabbar-in { width: 100%; }
.tabbar button { min-width: 0; font-size: 10.5px; white-space: nowrap; letter-spacing: -.2px; }
.tabbar button span { display: block; line-height: 1.1; }

/* ---------- 客户卡片内部（之前重写 CSS 时漏掉的一组） ---------- */
.lead { display: flex; gap: 8px; align-items: flex-start; }
.lead-main { flex: 1; min-width: 0; }
.lead-name { font-size: 14.5px; font-weight: 700; color: var(--ink); overflow-wrap: anywhere; }
.lead-name small { font-weight: 400; color: var(--muted); font-size: 11.5px; margin-left: 4px; }
.lead-meta { font-size: 11.5px; color: var(--muted); margin-top: 3px; overflow-wrap: anywhere; }

/* ---------- 邀请老师卡片 ---------- */
.invite-card { background: linear-gradient(135deg,#fff8ef,#fdeee2); border: 1px solid #f3dcc4; }
.invite-t { font-size: 15px; font-weight: 700; color: var(--ink); }
.invite-sub { font-size: 11.5px; color: #8a6a45; margin-top: 3px; line-height: 1.5; }
.invite-code { font-size: 27px; font-weight: 800; letter-spacing: 3px; text-align: center;
  color: var(--primary-dk); background: #fff; border: 1px dashed #e3c6a6; border-radius: 12px;
  padding: 14px 6px; margin: 12px 0 10px; user-select: all; -webkit-user-select: all; }
.invite-acts { display: flex; gap: 8px; }
.invite-acts .btn { flex: 1; margin: 0; }
.invite-tip { font-size: 11px; color: #92795a; margin-top: 9px; line-height: 1.5; }

/* ---------- 评论建议 ---------- */
.cmt-list { max-height: 42vh; overflow-y: auto; margin-bottom: 10px; }
.cmt { padding: 9px 0; border-bottom: 1px solid #f2ede6; }
.cmt:last-child { border-bottom: none; }
.cmt-h { display: flex; justify-content: space-between; font-size: 11.5px; color: var(--muted); }
.cmt-h b { color: var(--ink); font-size: 12.5px; }
.cmt-t { font-size: 13px; margin-top: 4px; line-height: 1.55; color: #33383d; }
.cmt-imgs { display: flex; gap: 6px; margin-top: 7px; }
.cmt-imgs img { width: 74px; height: 74px; object-fit: cover; border-radius: 8px; }

/* ---------- 客户池顶部五个指标 ---------- */
.kpi { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-top: 12px; }
.kpi-i { background: #fff; border: 1px solid var(--line); border-radius: 10px; padding: 9px 2px;
  display: flex; flex-direction: column; align-items: center; gap: 1px; font-family: inherit; cursor: pointer; }
.kpi-i b { font-size: 17px; color: var(--ink); line-height: 1.2; }
.kpi-i span { font-size: 9.5px; color: var(--muted); white-space: nowrap; transform: scale(.95); }
.kpi-i.on { background: var(--ink); border-color: var(--ink); }
.kpi-i.on b, .kpi-i.on span { color: #fff; }

/* 卡片上的状态标 + 最近跟进 */
.st { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 4px; margin-left: 6px; font-weight: 400; }
.st.ok { background: #e9f5ee; color: #24684c; }
.st.wait { background: #fff2de; color: #a3701f; }
.st.bad { background: #f2f2f2; color: #8b857d; }
.last-talk { color: #8a5a2b !important; }

/* ---------- 跟进时间轴 ---------- */
.timeline { max-height: 30vh; overflow-y: auto; padding: 2px 0 6px; }
.tl { display: flex; gap: 9px; position: relative; }
.tl + .tl { margin-top: 10px; }
.tl-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--primary); flex: 0 0 7px; margin-top: 5px; }
.tl-body { flex: 1; min-width: 0; }
.tl-time { font-size: 10.5px; color: var(--muted); }
.tl-text { font-size: 13px; margin-top: 2px; line-height: 1.5; color: #33383d; overflow-wrap: anywhere; }

/* ---------- 今天这场签到卡 ---------- */
.sign-card { background: #fff8ef; border: 1px solid #f3dcc4; margin-top: 12px; }
.sign-head { display: flex; align-items: flex-start; gap: 8px; }
.sign-t { font-size: 14.5px; font-weight: 700; }
.sign-s { font-size: 11.5px; color: #8a6a45; margin-top: 3px; }
.sign-list { margin-top: 10px; }
.sign-row { display: flex; align-items: center; gap: 8px; padding: 7px 0; border-bottom: 1px solid #f5e6d5; }
.sign-row:last-child { border-bottom: none; }
.sr-main { flex: 1; min-width: 0; font-size: 13.5px; }
.sr-main small { color: var(--muted); font-size: 11px; margin-left: 5px; }
.sign-row .btn { margin: 0; padding: 5px 14px; font-size: 12.5px; }
.sign-tip { font-size: 10.5px; color: #9a805f; margin-top: 9px; line-height: 1.5; }

/* ---------- 转发提醒条 ---------- */
.share-bar { background: linear-gradient(135deg,#fff4e6,#ffe9d4); border: 1px solid #f6ddbf;
  border-radius: 12px; padding: 12px 14px; margin: 12px 0 4px; }
.sb-t { font-size: 14.5px; font-weight: 700; color: #a8491f; }
.sb-s { font-size: 11.5px; color: #96674a; margin-top: 3px; line-height: 1.5; }
.feed-hd .btn.sm { margin: 0; padding: 5px 12px; font-size: 12px; }

/* ---------- 发布完成弹窗 ---------- */
.pub-done { text-align: center; padding: 4px 2px 2px; }
.pd-ico { width: 52px; height: 52px; border-radius: 50%; background: #e9f5ee; color: #24684c;
  font-size: 26px; line-height: 52px; margin: 0 auto 10px; }
.pd-t { font-size: 20px; font-weight: 800; }
.pd-s { font-size: 13px; color: #5b6269; line-height: 1.7; margin-top: 8px; }
.pd-link { font-size: 11px; color: var(--muted); background: #f7f5f2; border-radius: 8px;
  padding: 9px 10px; margin: 12px 0 4px; word-break: break-all; }

/* 底部五格：绝不允许中文折行 */
.tabbar-in { max-width: 560px; }
.tabbar button { font-size: 10px; letter-spacing: 0; white-space: nowrap; padding-left: 1px; padding-right: 1px; }

/* ---------- 签到按钮：到了 → 已到（变绿） ---------- */
.btn.arrived { background: #e9f5ee !important; color: #24684c !important; border: 1px solid #cfe6da !important; }
.btn.arrived:disabled { opacity: 1; }

/* ---------- 动态卡片底部的三个数 ---------- */
.feed-nums { display: flex; align-items: center; gap: 14px; padding-top: 9px; margin-top: 9px; border-top: 1px solid #f4efe8; }
.feed-nums > div { text-align: center; }
.feed-nums b { display: block; font-size: 15px; color: var(--ink); line-height: 1.2; }
.feed-nums span { font-size: 10px; color: var(--muted); }
.feed-nums .fn-go { margin-left: auto; font-size: 11.5px; color: var(--primary-dk); }

/* ---------- 单场活动的三个数 ---------- */
.ev-stat { display: flex; gap: 10px; margin-top: 12px; }
.ev-stat > div { flex: 1; background: #f8f6f3; border-radius: 9px; padding: 9px 0; text-align: center; }
.ev-stat b { display: block; font-size: 18px; color: var(--ink); }
.ev-stat span { font-size: 10.5px; color: var(--muted); }

/* ---------- 分享卡片预览 ---------- */
.share-card { border: 1px solid #e6e2db; border-radius: 10px; overflow: hidden; background: #fff; margin-bottom: 14px; }
.sc-img { height: 132px; background: #eef1f4; overflow: hidden; }
.sc-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sc-ph { background: linear-gradient(135deg,#cfd8e3,#a9bccd); }
.sc-body { padding: 9px 11px 11px; }
.sc-t { font-size: 14px; font-weight: 700; line-height: 1.4; }
.sc-s { font-size: 11.5px; color: #8b857d; margin-top: 4px; line-height: 1.45; }
.sc-u { font-size: 10px; color: #b3ada4; margin-top: 7px; }

/* ---------- 编辑器标题输入 ---------- */
.ed-title { font-size: 17px !important; font-weight: 700; }
.btn.pubdone { background: #e9f5ee !important; color: #24684c !important; border: 1px solid #cfe6da !important; }

/* ---------- 客户池温度条：差距更明显 ---------- */
.temp { flex: 0 0 56px; }
.temp .bar { height: 6px; }
.bar i.high { background: linear-gradient(90deg,#f07167,#d9332a); }
.bar i.mid { background: linear-gradient(90deg,#f3bd6a,#df9a2f); }
.bar i.low { background: #cfc9c0; }

/* 分享条改成蓝色系，和上面的签到栏（暖黄）明确分开 */
.share-bar { background: linear-gradient(135deg,#eef5fb,#e2eefa); border-color: #cfe0f0; }
.sb-t { color: #1c5c86; }
.sb-s { color: #5b7c94; }

/* ---------- 邀请二维码 ---------- */
.invite-qr { width: 196px; height: 196px; display: block; margin: 14px auto 6px; padding: 8px;
  background: #fff; border: 1px solid #f0e2d0; border-radius: 12px; }
.invite-hint { text-align: center; font-size: 12px; color: #8a6a45; font-weight: 600; }

/* 到场标记、沟通记录可点 */
.att-mark { color: #24684c; background: #e9f5ee; border-radius: 4px; padding: 0 5px; margin-left: 5px; font-size: 10.5px; }
.last-talk { cursor: pointer; }
.talk-more { color: var(--primary-dk); margin-left: 4px; }

/* ================= 编辑文章（照旧版手机端） ================= */
.pub-top { background: #ec4a5d; color: #fff; border: none; border-radius: 14px; padding: 6px 16px;
  font-size: 13px; font-weight: 700; font-family: inherit; }
.pub-top:active { opacity: .85; }

.ed-cover { margin: 12px 0 4px; border-radius: 10px; overflow: hidden; background: #f2efe9;
  min-height: 120px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.ed-cover img { width: 100%; display: block; }
.ed-cover .ph { color: #a89f94; font-size: 12.5px; padding: 40px 0; }

.ed-sec { margin: 16px 0 0; }
.ed-lb { font-size: 14px; font-weight: 700; color: var(--ink); margin-bottom: 8px; }
.ed-title { font-size: 16px !important; font-weight: 600; }

.ed-set { border-top: 1px solid #f1ece5; }
.set-row { display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 12px 0; border-bottom: 1px solid #f1ece5; }
.set-k { font-size: 13.5px; color: #3a4046; flex: 0 0 auto; }
.set-k .req { color: #c0392b; font-size: 11px; margin-left: 2px; }
.set-k .opt { color: #9a938a; font-size: 11px; margin-left: 2px; }
.set-v { flex: 1; display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.set-v input[type=date] { width: auto; padding: 6px 8px; font-size: 12.5px; border-radius: 8px; }
.set-v input:not([type=date]) { width: 110px; text-align: right; padding: 6px 8px; font-size: 13px;
  border: none; background: transparent; }
.set-v .to { color: var(--muted); font-size: 12px; }

/* 开关 */
.sw { position: relative; display: inline-block; width: 46px; height: 26px; }
.sw input { opacity: 0; width: 0; height: 0; }
.sw i { position: absolute; inset: 0; background: #ddd7cf; border-radius: 20px; transition: .2s; }
.sw i:before { content: ''; position: absolute; width: 20px; height: 20px; left: 3px; top: 3px;
  background: #fff; border-radius: 50%; transition: .2s; }
.sw input:checked + i { background: #34c759; }
.sw input:checked + i:before { transform: translateX(20px); }

.led-tip { font-size: 11.5px; color: #9a938a; margin: -2px 0 8px; }
.eled-body { background: #fff; border: 1px solid #eee8e0; border-radius: 10px; padding: 14px 13px;
  min-height: 240px; outline: none; font-size: 15px; line-height: 1.8; color: #33383d; }
.eled-body p { margin: 0 0 10px; }
.eled-body img { max-width: 100%; }
.eled-body .eled-on { outline: 2px solid #4a90d9; outline-offset: 3px; border-radius: 3px; }

/* 九宫格菜单（照旧版 Eleditor） */
.eled-menu { position: fixed; z-index: 3000; background: #fff; border-radius: 12px;
  box-shadow: 0 8px 28px rgba(0,0,0,.18); padding: 8px; display: grid;
  grid-template-columns: repeat(3, 76px); gap: 4px; }
.eled-menu button { background: #fff; border: none; border-radius: 8px; padding: 10px 2px;
  display: flex; flex-direction: column; align-items: center; gap: 3px; font-family: inherit;
  font-size: 12px; color: #3a4046; cursor: pointer; }
.eled-menu button i { font-style: normal; font-size: 17px; line-height: 1; }
.eled-menu button:active { background: #f2f4f7; }
.eled-menu button.danger { color: #c0392b; }

/* 发布：选发送对象 */
.sendto { border-top: 1px solid #f1ece5; }
.sendto-i { display: flex; align-items: center; justify-content: space-between; padding: 14px 2px;
  border-bottom: 1px solid #f1ece5; font-size: 14.5px; }
.sendto-i input { width: 18px; height: 18px; accent-color: #ec4a5d; }

/* 预览页 */
.pv-title { font-size: 20px; font-weight: 700; line-height: 1.5; color: #23282d; }
.pv-sub { font-size: 12px; color: #9a938a; margin: 6px 0 14px; }
.pv-body { font-size: 15px; line-height: 1.8; color: #33383d; }
.pv-body p { margin: 0 0 10px; }
.pv-body img { max-width: 100%; }
.pv-card { display: flex; gap: 12px; align-items: center; border: 1px solid #eee8e0; border-radius: 10px;
  padding: 12px; margin-top: 22px; }
.pv-qr img { width: 74px; height: 74px; display: block; }
.pv-n { font-size: 15px; font-weight: 700; }
.pv-l { font-size: 11.5px; color: #7d766d; margin-top: 3px; line-height: 1.5; }
.pv-foot { display: flex; gap: 18px; align-items: center; justify-content: center; margin-top: 22px;
  font-size: 12.5px; color: #7d766d; border-top: 1px solid #f1ece5; padding-top: 14px; }
.pv-badge { background: #ec4a5d; color: #fff; padding: 6px 16px; border-radius: 16px; font-weight: 700; }

/* ================= 模板详情（照旧版） ================= */
.tpl-wrap { background: #fff; margin-top: 12px; border-radius: 10px; padding: 14px 13px; }
.tpl-hd { border-bottom: 1px solid #f2ede6; padding-bottom: 10px; margin-bottom: 12px; }
.tpl-t { font-size: 16px; font-weight: 700; line-height: 1.5; }
.tpl-sub { font-size: 11.5px; color: #9a938a; margin-top: 5px; }
.tpl-body { font-size: 15px; line-height: 1.8; color: #33383d; }
.tpl-body p { margin: 0 0 10px; }
.tpl-body img { max-width: 100%; }
.tpl-foot { position: fixed; left: 0; right: 0; bottom: 0; z-index: 45; display: flex; gap: 0;
  background: #fff; border-top: 1px solid var(--line); padding-bottom: env(safe-area-inset-bottom); }
.tpl-fav { flex: 0 0 34%; background: #fff; border: none; font-family: inherit; font-size: 13.5px;
  color: #5b6269; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 15px 0; }
.tpl-fav span { font-size: 17px; }
.tpl-fav.on { color: #e8a33d; }
.tpl-edit { flex: 1; background: #ec4a5d; color: #fff; border: none; font-family: inherit;
  font-size: 15px; font-weight: 700; padding: 15px 0; }

/* ============================================================
   第三版视觉：奶油底 + 玫瑰主色（小红书那种干净的东西）
   只覆盖颜色、圆角、阴影、间距，不动任何结构和逻辑。
   ============================================================ */
:root {
  --ink: #2e2723; --muted: #9c9189; --line: #f1e9e3; --bg: #fbf8f6; --card: #fff;
  --primary: #d95c74; --primary-dk: #b8445c; --primary-soft: #fdeef1;
  --green: #4e8a70; --blue: #5b8fc7;
  --hot: #dc4a52; --warm: #d99a3e; --cold: #b9b1a8;
  --radius: 18px;
  --sh: 0 6px 20px rgba(176,126,116,.07);
  --sh-lg: 0 12px 32px rgba(176,126,116,.12);
}
body { background: var(--bg); color: var(--ink); }

/* 顶栏：更轻，边上不要硬线 */
.topbar { background: rgba(251,248,246,.86); backdrop-filter: blur(16px); border-bottom: none; }
.topbar h1 { font-size: 16.5px; letter-spacing: .2px; }
.topbar .sub { color: #a99e95; }
.avatar { border-radius: 50%; background: linear-gradient(135deg,#f0b27a,#d95c74); box-shadow: 0 3px 10px rgba(217,92,116,.28); }

/* 卡片：去边框，用阴影分层 */
.card { border: none; border-radius: var(--radius); box-shadow: var(--sh); padding: 16px; margin: 12px 0; }
.card-title { letter-spacing: .2px; }
.plan-card, .post-row, .lead-card, .feed, .funnel, .searchbar { border: none !important; box-shadow: var(--sh); border-radius: var(--radius); }

/* 按钮：更圆、更有手感 */
.btn { border-radius: 14px; background: linear-gradient(135deg,#e06d82,#d2506a); box-shadow: 0 6px 16px rgba(210,80,106,.22); letter-spacing: .5px; }
.btn:active { background: linear-gradient(135deg,#cf5a72,#b8445c); }
.btn.ghost { background: #fff; color: var(--primary-dk); border: 1px solid #f0dfe4; box-shadow: none; }
.btn.grey { background: #f4eee9; }

/* 标签：药丸型 */
.chip { border: 1px solid #f0e6e1; background: #fff; color: #7d736b; border-radius: 999px; padding: 7px 15px; }
.chip.on { background: var(--ink); border-color: var(--ink); color: #fff; }

/* 方案池：两列瀑布流（小红书那种不等高） */
.plan-grid { display: block; columns: 2; column-gap: 10px; }
.plan-card { display: inline-block; width: 100%; margin-bottom: 10px; break-inside: avoid; overflow: hidden; }
.plan-thumb { border-radius: 0; }
.plan-card:nth-child(3n+1) .plan-thumb { aspect-ratio: 3/4; }
.plan-card:nth-child(3n+2) .plan-thumb { aspect-ratio: 4/3; }
.plan-card:nth-child(3n) .plan-thumb { aspect-ratio: 1/1; }
.plan-name { padding: 10px 11px 12px; font-size: 13.5px; font-weight: 600; line-height: 1.5; letter-spacing: .1px; }
.plan-name small { font-size: 11px; margin-top: 5px; }
.plan-stats .like { background: #f7f1ed; }
.plan-stats .like.on { background: var(--primary-soft); color: var(--primary-dk); }

/* 统计块 */
.stat, .fn, .ev-stat > div { background: #f8f2ee; border-radius: 12px; }

/* 动态卡片：图更大更圆 */
.feed { padding: 14px; }
.feed-t { font-size: 15.5px; letter-spacing: .1px; }
.feed-thumb { border-radius: 12px; background: linear-gradient(135deg,#e6d5d0,#d3bdb6); }
.hero-media { border-radius: 16px; }
.actbar { border-radius: 16px; box-shadow: var(--sh); }

/* 底部导航 */
.tabbar { background: rgba(255,255,255,.97); backdrop-filter: blur(18px); border-top: 1px solid #f4ece6; }
.tabbar button.on { color: var(--primary-dk); }
.tabbar button.on svg { stroke-width: 2; }

/* 官网头图、封面渐变换成暖粉 */
.site-hero { border-radius: var(--radius); background: linear-gradient(135deg,#e29a8e,#c95f74); box-shadow: var(--sh-lg); }
.invite-card { background: linear-gradient(135deg,#fff6f8,#fdebee); border: 1px solid #f7e1e7; border-radius: var(--radius); }
.invite-code { color: var(--primary-dk); border-color: #f2d6de; }
.sign-card { background: #fff8f8; border-color: #f7e3e7; border-radius: var(--radius); }
.share-bar { background: linear-gradient(135deg,#fef6f4,#fdeef0); border-color: #f7e2e4; border-radius: var(--radius); }
.sb-t { color: var(--primary-dk); }
.kpi-i { border: 1px solid #f2eae5; border-radius: 12px; box-shadow: 0 2px 8px rgba(176,126,116,.05); }
.kpi-i.on { background: var(--ink); }
.eled-body, .ed-sec input, .set-v input { border-color: #f0e7e1; }
.set-v input:focus { border-color: var(--primary); }
.pub-top { background: linear-gradient(135deg,#e06d82,#d2506a); border-radius: 999px; box-shadow: 0 4px 12px rgba(210,80,106,.25); }
.tip { background: #fdf2f4; border-left-color: var(--primary); color: #7d4d58; }
.toolbar button { border-color: #f0e7e1; }
.toast { background: #3a2f2b; border-radius: 999px; }

/* ============================================================
   招生军师页：书名 + 对话 + 按住说话
   ============================================================ */
body.on-ai #view { padding-bottom: 170px; }
body.on-ai .tabbar { background: rgba(255,255,255,.98); }

.ai-hero { padding: calc(26px + env(safe-area-inset-top)) 4px 8px; }
.ai-kicker { font-size: 10.5px; letter-spacing: .22em; color: #c9a08c; font-weight: 600; }
.ai-book {
  font-family: "Songti SC", "STSong", "Source Han Serif SC", "Noto Serif SC", "SimSun", "宋体", Georgia, serif;
  font-size: 31px; font-weight: 700; letter-spacing: 1px; line-height: 1.35;
  color: #2e2723; margin-top: 8px;
}
.ai-lead { font-size: 14px; color: #6f645c; line-height: 1.95; margin: 10px 0 0; letter-spacing: .2px; }
.ai-caps { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.ai-caps span {
  font-size: 11.5px; color: #a08578; background: #fff; border: 1px solid #f4e7e0;
  border-radius: 999px; padding: 4px 11px; letter-spacing: .3px;
}
.ai-hero.compact { padding: calc(14px + env(safe-area-inset-top)) 4px 4px; border-bottom: 1px solid #f4ece6; margin-bottom: 4px; }
.ai-hero.compact .ai-kicker { display: none; }
.ai-hero.compact .ai-book { font-size: 17px; letter-spacing: .5px; margin: 0; }
.ai-lead1 { font-size: 11.5px; color: #a2988f; margin-top: 3px; }

/* 开场的四个问题 */
.ai-seeds { background: #fff; border-radius: var(--radius); box-shadow: var(--sh); padding: 6px 16px; margin-top: 14px; }
.ai-seeds-t { font-size: 11px; color: #b3a89f; padding: 10px 0 4px; letter-spacing: .1em; }
.ai-seed {
  display: flex; align-items: center; width: 100%; background: none; border: none;
  border-top: 1px solid #f6efe9; padding: 13px 0; font-family: inherit; font-size: 14px;
  color: #3a332e; text-align: left; cursor: pointer;
}
.ai-seed:first-of-type { border-top: none; }
.ai-seed i { margin-left: auto; font-style: normal; color: #cfc4bb; font-size: 17px; }

/* 对话 */
.ai-chat { margin-top: 6px; }
.msg { display: flex; gap: 8px; margin: 16px 0; align-items: flex-start; }
.msg.me { justify-content: flex-end; }
.msg .av {
  flex: 0 0 28px; width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg,#e79a86,#d95c74); color: #fff;
  font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center;
  margin-top: 2px; box-shadow: 0 3px 9px rgba(217,92,116,.25);
}
.bubble { max-width: 80%; padding: 12px 15px; border-radius: 18px; font-size: 14.5px; line-height: 1.78; letter-spacing: .1px; }
.msg.me .bubble { background: linear-gradient(135deg,#e06d82,#d2506a); color: #fff; border-bottom-right-radius: 6px; box-shadow: 0 6px 16px rgba(210,80,106,.2); }
.msg.ai .bubble.ai-b { background: #fff; color: #3a332e; border-bottom-left-radius: 6px; box-shadow: var(--sh); }
.ai-b p { margin: 0 0 11px; }
.ai-b p:last-of-type { margin-bottom: 0; }
.ai-todo {
  margin-top: 12px; background: #fdf3f5; border-left: 3px solid var(--primary);
  border-radius: 0 10px 10px 0; padding: 9px 12px; font-size: 13px; color: #7d4d58; line-height: 1.7;
}
.ai-todo b { display: block; font-size: 10px; letter-spacing: .16em; color: var(--primary-dk); margin-bottom: 3px; }
.ai-ask { margin-top: 11px; font-size: 13.5px; font-weight: 600; color: var(--primary-dk); line-height: 1.7; }
.ai-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 13px; }
.ai-chips button {
  font-family: inherit; font-size: 12px; padding: 6px 11px; border-radius: 999px;
  border: 1px solid #f2dfe4; background: #fff; color: #b06378; cursor: pointer;
}
.ai-chips button:active { background: var(--primary-soft); }

/* 语音气泡 */
.vb { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.vwave { display: inline-flex; align-items: center; gap: 2px; }
.vwave i { width: 3px; height: 7px; background: rgba(255,255,255,.9); border-radius: 2px; }
.vwave i:nth-child(2) { height: 12px; } .vwave i:nth-child(4) { height: 12px; }
.vwave i:nth-child(3) { height: 16px; }
.vsec { font-size: 12.5px; opacity: .9; }
.vtext { flex-basis: 100%; border-top: 1px solid rgba(255,255,255,.32); margin-top: 8px; padding-top: 7px; font-size: 13px; line-height: 1.65; }

/* 输入中 */
.bubble.typing { display: flex; gap: 5px; padding: 15px 16px; }
.bubble.typing i { width: 6px; height: 6px; border-radius: 50%; background: #d8ccc4; animation: aidot 1.1s infinite ease-in-out; }
.bubble.typing i:nth-child(2) { animation-delay: .15s; } .bubble.typing i:nth-child(3) { animation-delay: .3s; }
@keyframes aidot { 0%,80%,100% { opacity: .35; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }

.ai-note { font-size: 11px; color: #bdb2a8; text-align: center; margin: 22px 0 8px; letter-spacing: .2px; }

/* 底部输入条 */
.ai-bar {
  position: fixed; left: 0; right: 0; margin: 0 auto; max-width: 520px; z-index: 50;
  bottom: calc(56px + env(safe-area-inset-bottom));
  display: flex; align-items: center; gap: 8px;
  padding: 10px 12px 12px;
  background: linear-gradient(rgba(251,248,246,0), rgba(251,248,246,.96) 32%);
}
.ai-switch {
  flex: 0 0 38px; width: 38px; height: 38px; border-radius: 50%; background: #fff;
  border: 1px solid #f2e8e2; display: flex; align-items: center; justify-content: center;
  color: #8a7b70; cursor: pointer; box-shadow: 0 2px 8px rgba(176,126,116,.08);
}
.ai-switch svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.6; stroke-linecap: round; }
.ai-field { flex: 1; min-width: 0; }
.ai-txt {
  width: 100%; height: 40px; border-radius: 999px; border: 1px solid #f2e8e2;
  background: #fff; padding: 0 16px; font-size: 14px; color: var(--ink);
  box-shadow: 0 2px 8px rgba(176,126,116,.06);
}
.ai-txt:focus { outline: none; border-color: #eecdd6; }
.ai-hold {
  width: 100%; height: 40px; border-radius: 999px; background: #fff;
  border: 1px solid #f2e8e2; color: #6f645c; font-family: inherit; font-size: 14.5px;
  display: flex; align-items: center; justify-content: center; gap: 7px;
  cursor: pointer; user-select: none; -webkit-user-select: none; touch-action: none;
  box-shadow: 0 2px 8px rgba(176,126,116,.06);
}
.ai-hold.on { background: linear-gradient(135deg,#e06d82,#d2506a); border-color: transparent; color: #fff; box-shadow: 0 6px 16px rgba(210,80,106,.3); }
.ai-hold .mic { width: 9px; height: 14px; border: 1.7px solid currentColor; border-radius: 5px; position: relative; display: inline-block; }
.ai-hold .mic::after { content: ''; position: absolute; left: 50%; bottom: -5px; width: 1.7px; height: 4px; margin-left: -.85px; background: currentColor; }
.ai-send {
  flex: 0 0 auto; height: 40px; padding: 0 18px; border: none; border-radius: 999px;
  background: linear-gradient(135deg,#e06d82,#d2506a); color: #fff; font-family: inherit;
  font-size: 14px; font-weight: 600; cursor: pointer; box-shadow: 0 6px 16px rgba(210,80,106,.24);
}
.ai-bar.voice .ai-txt, .ai-bar.voice .ai-send { display: none; }
.ai-bar.text .ai-hold { display: none; }
.ai-web {
  flex: 0 0 auto; font-size: 11px; color: #b07a88; text-decoration: none;
  border: 1px solid #f2dfe4; border-radius: 999px; padding: 4px 9px; background: #fff;
}

/* 录音浮层 */
.rec-mask {
  position: fixed; inset: 0; z-index: 80; display: none;
  align-items: flex-end; justify-content: center; padding-bottom: 150px;
  background: rgba(46,38,34,.22); backdrop-filter: blur(2px);
}
.rec-mask.on { display: flex; }
.rec-card {
  background: rgba(46,38,34,.93); color: #fff; border-radius: 20px;
  padding: 20px 30px 16px; text-align: center; min-width: 200px;
  box-shadow: 0 18px 40px rgba(0,0,0,.28);
}
.rec-mask.cancel .rec-card { background: rgba(184,68,92,.95); }
.rec-wave { display: flex; align-items: center; justify-content: center; height: 26px; gap: 3px; }
.rec-wave i { width: 3px; height: 6px; background: #fff; border-radius: 2px; animation: recwave .9s infinite ease-in-out; }
@keyframes recwave { 0%,100% { height: 6px; opacity: .6; } 50% { height: 22px; opacity: 1; } }
.rec-time { font-size: 18px; font-weight: 700; margin-top: 10px; letter-spacing: .5px; font-variant-numeric: tabular-nums; }
.rec-tip { font-size: 11.5px; opacity: .78; margin-top: 7px; letter-spacing: .4px; }

/* 嵌入网页版 */
.ai-frame { width: 100%; height: calc(100vh - 48px); border: none; display: block; background: #fff; }

/* 方案卡：说明只留一行，多了截断（原来会被硬切） */
.plan-name small { display: block !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---------- 注册页：地址 + 定位 ---------- */
.addr-wrap { display: flex; gap: 8px; align-items: center; }
.addr-wrap input { flex: 1; min-width: 0; }
.addr-loc { flex: 0 0 auto; width: 68px; margin: 0; padding: 10px 0; font-size: 13.5px; }
.addr-hint { font-size: 11.5px; color: #a89e95; margin-top: 6px; line-height: 1.5; }

/* ---------- 家长报名页：吸底报名条 ---------- */
.p-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  max-width: 520px; margin: 0 auto; padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
  background: linear-gradient(rgba(251,248,246,0), rgba(251,248,246,.96) 40%);
}
.p-bar .btn { margin: 0; }

/* ===== 引流素材：板块宫格（2026-10-26 加） ===== */
.blk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 4px}
.blk-i{display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer}
.blk-ico{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-size:22px}
.blk-nm{font-size:12px;color:#4a443f;text-align:center;line-height:1.25}
.blk-st{font-size:10.5px;color:#d95c74;text-align:center;line-height:1.2}
.blk-i.off .blk-ico{filter:grayscale(.55);opacity:.72}
.blk-i.off .blk-nm{color:#9a908a}
.blk-i.off .blk-st{color:#b08a8a}

/* ===== 编辑页：草稿/发布 说明条（2026-10-26 加） ===== */
.ed-hint{
  margin:12px 12px 0;padding:10px 12px;border-radius:10px;
  background:#fff6e8;border:1px solid #f3dfc0;color:#8a6a3a;
  font-size:12px;line-height:1.65
}
.ed-hint b{color:#b4552f}

/* ===== 邀请老师：链接盒子（2026-10-26 加，B 方案：发链接不发码） ===== */
.invite-link{
  margin-top:8px;padding:9px 12px;border-radius:9px;background:#f6f2ee;
  border:1px dashed #d8cec4;font-size:12px;color:#6b6259;word-break:break-all;line-height:1.5
}

/* ===== 老师端：转发文案卡（2026-10-27 加） ===== */
.copycard{margin:16px 0 0;padding:14px 16px;background:#fff8ef;border:1px solid #f3dfc0;
  border-radius:14px}
.copycard .cc-h{font-size:12px;color:#b08a5a;font-weight:600;display:flex;align-items:center;
  justify-content:space-between;margin-bottom:8px}
.copycard .cc-x{color:#d95c74;cursor:pointer;font-weight:400}
.copycard .cc-t{font-size:14.5px;color:#3c352f;line-height:1.7;min-height:44px}
.copycard .cc-b{display:flex;gap:10px;margin-top:12px}
.copycard .cc-b .btn{flex:1;margin:0}
.copycard .cc-note{font-size:11.5px;color:#a89e95;margin-top:10px;line-height:1.5}

/* ===== 客户池：家长名单/获客榜 切换（2026-10-27 加） ===== */
.lead-tabs{display:flex;gap:6px;margin-top:8px;background:#f0eae2;border-radius:10px;padding:4px}
.lead-tabs button{flex:1;border:none;background:transparent;padding:9px 0;font-size:13.5px;
  color:#8a8078;border-radius:8px}
.lead-tabs button.on{background:#fff;color:#3c352f;font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.rank-tip{font-size:12px;color:#8a8078;line-height:1.6}
.rank-tip b{color:#a5522f}
.rank-row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid #f0eae2}
.rank-row:last-child{border-bottom:none}
.rank-no{width:28px;height:28px;border-radius:50%;background:#eee8df;color:#9a908a;
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex:0 0 auto}
.rank-no.top1{background:#f5c94e;color:#fff}
.rank-no.top2{background:#c0c8d0;color:#fff}
.rank-no.top3{background:#d8a26b;color:#fff}
.rank-main{flex:1;min-width:0}
.rank-name{font-size:14.5px;color:#3c352f;font-weight:600;display:flex;align-items:center;gap:6px}
.rank-tag{font-size:10px;color:#a5522f;background:#f7e6dd;border-radius:4px;padding:1px 6px;font-weight:400}
.rank-sub{font-size:12px;color:#9a908a;margin-top:2px}
.rank-val{text-align:right;flex:0 0 auto}
.rank-val b{font-size:18px;color:#3c352f}
.rank-val span{display:block;font-size:10.5px;color:#9a908a}

/* ===== 未到场唤醒反馈卡（2026-10-27 加） ===== */
.wake-card{margin:0 12px 8px;padding:14px 16px;background:linear-gradient(135deg,#f0f7f3,#e4efe9);
  border:1px solid #cfe4d8;border-radius:14px}
.wake-h{font-size:14.5px;color:#2f5d46;font-weight:600;line-height:1.5}
.wake-h b{color:#1d7a4a}
.wake-sub{font-size:12px;color:#5b7568;margin-top:6px;line-height:1.6}
.wake-b{display:flex;gap:10px;margin-top:12px}
.wake-b .btn{flex:1;margin:0}

/* ===== 我的：年费卡片（2026-10-27 加） ===== */
.pay-card{margin:0 12px;padding:16px;background:linear-gradient(135deg,#f7f0e8,#f0e7db);
  border:1px solid #e6d9c8;border-radius:14px}
.pay-card.soon{background:linear-gradient(135deg,#fdf3e2,#f8e7c8);border-color:#eecf9a}
.pay-card.expired{background:linear-gradient(135deg,#fbe9e6,#f5d6cf);border-color:#e8b4a8}
.pay-top{display:flex;align-items:center;justify-content:space-between}
.pay-t{font-size:15px;font-weight:700;color:#3c352f}
.pay-d{font-size:12px;color:#8a8078;margin-top:3px}
.pay-card.expired .pay-t{color:#c0392b}
.pay-card.soon .pay-t{color:#b07a1e}
.pay-price{font-size:22px;font-weight:700;color:#a5522f}
.pay-price span{font-size:12px;color:#8a8078;font-weight:400}
.pay-bar{height:6px;border-radius:4px;background:#e4dbcf;margin-top:12px;overflow:hidden}
.pay-bar i{display:block;height:100%;background:#a5522f;border-radius:4px;transition:width .3s}
.pay-card.soon .pay-bar i{background:#d9a23e}
.pay-card.expired .pay-bar i{background:#c0392b;width:0!important}
.pay-note{font-size:11.5px;color:#b07a1e;margin-top:10px;line-height:1.5}

/* ===== 客户池：手机号可点击拨打（2026-10-27 加） ===== */
.tel-link{color:#3f7fd6;text-decoration:none;font-weight:600}
.tel-link:active{opacity:.7}
.kpi-hint{font-size:11.5px;color:#a89e95;margin:2px 0 6px;text-align:center}

/* ===== 获客榜：来源 + 明细（2026-10-27 加） ===== */
.rank-src{font-size:11px;color:#b0a69c;margin-top:3px}
.rank-detail{margin:2px 0 8px;padding:4px 0 0 40px}
.rank-client{display:flex;align-items:center;justify-content:space-between;
  padding:8px 0;border-top:1px dashed #efe8de}
.rc-main{flex:1;min-width:0}
.rc-name{font-size:13.5px;color:#3c352f;font-weight:600}
.rc-meta{font-size:11.5px;color:#9a908a;margin-top:2px}
.rc-tel{color:#3f7fd6;text-decoration:none;font-size:13px;font-weight:600}

/* ===== 开通成功：家长视角三步感知（2026-10-27 加） ===== */
.pv-flow{background:#faf6f0;border-radius:12px;padding:12px}
.pv-step{display:flex;gap:10px;align-items:flex-start;padding:7px 0}
.pv-step + .pv-step{border-top:1px dashed #eee3d5}
.pv-n{width:22px;height:22px;border-radius:50%;background:#d95c74;color:#fff;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.pv-b b{display:block;font-size:13.5px;color:#3c352f}
.pv-b span{display:block;font-size:12px;color:#8a817c;margin-top:2px;line-height:1.5}

/* ===== 我的：年费弱化态（平时只占一行小条，2026-10-27 加） ===== */
.pay-mini{margin:0 12px;padding:10px 14px;background:#fbf9f6;border:1px solid #eee7dc;
  border-radius:11px;display:flex;align-items:center;gap:10px}
.pm-ico{font-size:16px}
.pm-t{font-size:12.5px;color:#8a8078;flex:1}
.pm-bar{width:64px;height:4px;border-radius:3px;background:#eee7dc;overflow:hidden}
.pm-bar i{display:block;height:100%;background:#b9c9a8;border-radius:3px}
.pm-go{font-size:12px;color:#a5522f;flex:0 0 auto}

/* ===== 招生动态：当天签到浮框（2026-10-27 加，视觉漂浮感） ===== */
/* 浮框感：当天签到卡悬浮在动态列表上方，活动过了自动消失 */
.sign-card{
  position:relative;z-index:5;
  box-shadow:0 10px 28px rgba(120,80,50,.16), 0 2px 8px rgba(120,80,50,.08);
  border-radius:16px;
  transform:translateY(-2px);
}

/* ===== 开通选择：左右并排两块（2026-10-27 加） ===== */
.pay-choose{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.pc-i{position:relative;width:100%;border:1.5px solid #e3b9ad;background:#fff;border-radius:14px;padding:14px 16px;
  display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer}
.pc-i:disabled{cursor:default}
.pc-i b{font-size:24px;color:#d95c74}
.pc-i span{font-size:14px;color:#5a524c;font-weight:700}
.pc-i.all{border:none;background:linear-gradient(135deg,#c9962e,#b07a1e);color:#fff;box-shadow:0 4px 14px rgba(176,122,30,.32)}
.pc-i.all b{color:#fff}
.pc-i.all span{color:#fff}
.pc-i.all .bb-tag{position:absolute;top:-9px;left:16px;background:#e2453c;color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:2px 9px}

/* ===== 家长填写页缩略图（CSS迷你模拟页，2026-10-27 加） ===== */
.pv-mock{width:180px;margin:0 auto;background:#fff;border:2px solid #e8ded2;border-radius:16px;
  overflow:hidden;box-shadow:0 8px 20px rgba(90,70,50,.12)}
.pvm-bar{background:#f6f1ea;font-size:10px;color:#9a908a;text-align:center;padding:5px 0}
.pvm-body{padding:10px}
.pvm-hero{background:linear-gradient(135deg,#9ed3b4,#5f9e7d);color:#fff;font-size:12px;
  font-weight:700;text-align:center;padding:18px 0;border-radius:8px}
.pvm-form{margin-top:10px}
.pvm-in{background:#f7f4f0;border:1px solid #eee5da;border-radius:7px;
  padding:7px 10px;font-size:11px;color:#b0a69c;margin-top:6px}
.pvm-btn{background:#3d7a54;color:#fff;font-size:11.5px;font-weight:700;text-align:center;
  padding:8px 0;border-radius:7px;margin-top:8px}
.pv-arrow{text-align:center;font-size:12.5px;color:#6b6259;margin-top:12px;line-height:1.6}
.pv-arrow b{color:#1d7a4a}

/* ===== 年费小图标：与顶部园所信息同行（2026-10-27 v2） ===== */
.pay-chip{display:flex;flex-direction:column;align-items:center;gap:1px;flex:0 0 auto;
  background:#f2ede4;border:1px solid #e8dfcf;border-radius:10px;padding:5px 9px;cursor:pointer}
.pay-chip .pcp-ico{font-size:14px;line-height:1}
.pay-chip .pcp-d{font-size:10px;color:#8a8078;font-weight:600}
.pay-chip.soon{background:#fdf3e2;border-color:#eecf9a}
.pay-chip.soon .pcp-d{color:#b07a1e}

/* ===== 邀请老师紧凑卡（2026-10-27 v2，面积小于园所信息卡） ===== */
.invite-compact{padding:12px 14px}
.invite-compact .ic-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.invite-compact .ic-t{font-size:13.5px;font-weight:600;color:#3c352f}
.invite-compact .ic-link{margin-top:8px;padding:7px 10px;border-radius:8px;background:#f6f2ee;
  border:1px dashed #d8cec4;font-size:11px;color:#8a817c;word-break:break-all;line-height:1.4}

/* ===== 签到浮框 v2：红色小折叠标签 + 紧凑可滚名单（2026-10-27） ===== */
.sign-card::before{
  content:"活动签到";position:absolute;top:-9px;left:14px;z-index:2;
  background:#d95c74;color:#fff;font-size:10.5px;font-weight:600;
  padding:2px 12px;border-radius:999px 999px 999px 2px;letter-spacing:1px;
  box-shadow:0 2px 6px rgba(200,60,80,.25);
}
.sign-list{max-height:196px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.sign-row{padding:5px 0}
.sign-row .sr-main{font-size:13px}
.sign-row .sr-main small{display:inline}
.pc-i small{font-size:11.5px;color:#b0a69c;line-height:1.5;margin-top:2px}
.pc-i.all small{color:rgba(255,255,255,.92)}

/* ===== 年费小图标：顶栏右上角版（2026-10-27 v3） ===== */
.topbar .pay-chip{transform:scale(.92);margin-left:4px}

/* ===== 素材宫格：待开通小标签在图标左上角（2026-10-27，参照家长端样式） ===== */
.blk-ico{position:relative}
.blk-lock{position:absolute;top:-5px;left:-7px;background:#fff;border:1px solid #f0c9cd;
  color:#d95c74;font-size:9px;font-style:normal;font-weight:600;
  padding:1px 5px;border-radius:7px;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.06)}

/* ===== 客户池：已到徽章紧凑（2026-10-27，不再换行占一行） ===== */
.att-mark{display:inline-block;font-size:10px;color:#1d7a4a;background:#e4f2e9;
  border-radius:5px;padding:1px 5px;margin-left:4px;white-space:nowrap;vertical-align:1px}

/* ===== 老师管理：操作按钮弱化（2026-10-27，小字不抢焦点） ===== */
.teacher-row .btn{padding:3px 10px;font-size:11.5px;font-weight:400;background:transparent;
  border:1px solid #e3d9cd;color:#9a8f83;border-radius:7px}
.teacher-row .btn:active{background:#f4eee6}

/* ===== 自动养熟清单（2026-10-27） ===== */
.nurture-row .nr-head{display:flex;align-items:center;gap:7px;margin-bottom:7px}
.nr-band{font-size:10px;color:#b07a1e;background:#fdf3e2;border-radius:5px;padding:2px 7px;font-weight:600}
.nr-band.act{color:#1d7a4a;background:#e4f2e9}
.nr-head b{font-size:14px;color:#3c352f}
.nr-what{font-size:11px;color:#8a8078;margin-left:auto}
.nr-copy{font-size:13px;color:#4a433c;line-height:1.6;background:#faf7f2;border-radius:9px;padding:9px 11px}
.nr-acts{display:flex;gap:8px;margin-top:9px}
.nr-acts .btn{flex:1}

/* ===== 后台：内容缺口（醒目列表，2026-10-27） ===== */
.gap-alert{background:linear-gradient(135deg,#fdf1e7,#fae3d3);border:1.5px solid #f0c49b}
.gap-alert-t{font-size:16px;font-weight:800;color:#c05a22}
.gap-alert-s{font-size:13px;color:#7a5a3d;margin-top:6px;line-height:1.7}
.gap-alert-s b{color:#b84018}
.gap-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.gap-cat{font-size:12px;color:#7a5a3d;background:#fff;border:1px solid #f0d4b8;
  border-radius:999px;padding:3px 12px}
.gap-cat b{color:#c05a22}
.gap-row{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid #f0e9e1}
.gap-row:last-child{border-bottom:none}
.gap-main{flex:1;min-width:0}
.gap-q{font-size:14.5px;color:#2f2a28;font-weight:600;line-height:1.5}
.gap-meta{font-size:11.5px;color:#9a908a;margin-top:3px}
.gap-count{flex:0 0 auto;text-align:center;min-width:52px}
.gap-count{font-size:22px;font-weight:800;color:#c05a22}
.gap-count span{display:block;font-size:10.5px;color:#9a908a;font-weight:400}

/* ===== 后台：宣传素材管理（2026-10-31） ===== */
.ct-items{margin-top:6px}
.ct-row{display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid #f0e9e1}
.ct-row:last-child{border-bottom:none}
.ct-main{flex:1;min-width:0}
.ct-main b{font-size:13.5px;color:#2f2a28}
.ct-main .muted{display:block;margin-top:2px}
.mask.on{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:90;display:flex;align-items:center;justify-content:center}
.mask.on .sheet{background:#fff;border-radius:14px;padding:18px;width:86%;max-width:360px}
.mask.on label{display:block;margin-top:10px;font-size:12px;color:#8a8078}
.mask.on input,.mask.on select{width:100%;margin-top:4px}

/* ===== 调动大师·每日推荐（2026-10-31） ===== */
.daily-head{font-size:14px;color:#2f2a28;margin-bottom:6px}
.daily-head b{font-weight:700}
.daily-copy{font-size:13.5px;color:#4a433c;line-height:1.6;background:#faf7f2;border-radius:9px;padding:9px 11px}

/* ===== 活动复盘卡（2026-10-31） ===== */
.review-card{margin-top:8px}
.rv-hd{display:flex;align-items:center;justify-content:space-between;gap:10px}
.rv-hd b{font-size:14px;color:#3c352f}
.rv-date{font-size:11px;color:#9a908a}
.rv-nums{display:flex;gap:10px;margin-top:10px}
.rv-nums>div{flex:1;text-align:center;background:#faf7f2;border-radius:10px;padding:8px 0}
.rv-nums b{display:block;font-size:18px;color:#2f6b52}
.rv-nums span{font-size:11px;color:#9a908a}
.rv-noshow{margin-top:9px;font-size:12.5px;color:#b07a1e;background:#fdf3e2;border-radius:8px;padding:7px 10px}
.rv-noshow.ok{color:#1d7a4a;background:#e4f2e9}

/* ===== 意向排名（2026-11-01） ===== */
.rank-row .rank-main{margin-bottom:6px}
.rank-bar{height:5px;background:#f0e9e1;border-radius:3px;overflow:hidden}
.rank-bar i{display:block;height:100%;background:linear-gradient(90deg,#5f9c80,#2f6b52);border-radius:3px}

/* ===== 活动过期（2026-11-02 重写：不用filter整体变灰，只灰内容，按钮保持亮） ===== */
.past-card .feed-t,.past-card .feed-s,.past-card .nm,.past-card .tm{color:#b0a69c}
.past-card .feed-thumb img{filter:grayscale(.7);opacity:.6}
.past-card .feed-nums b,.past-card .feed-nums span{color:#b0a69c}
.past-tag{display:inline-block;font-size:10px;color:#9a908a;background:#ece7e1;border-radius:4px;padding:1px 6px;margin-left:6px;font-weight:400}

/* ===== 招生内训入口（我的里，正常样式） ===== */
.list-row.train-row .l{font-weight:600}

/* 近30天意向：按钮缩小不换行 */
.rank-row .btn.sm{font-size:12px;padding:7px 6px;white-space:nowrap}

/* 过期活动卡片里，"看名单"保持亮色醒目 */
.past-card .fn-go{color:#b84a29;font-weight:700;font-size:13px}

/* ===== 复盘小图标 + 活动间隔提示（2026-11-02） ===== */
.review-dot{flex:0 0 auto;font-size:13px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,#e34b86,#c2185b);
  border:none;border-radius:999px;padding:6px 14px;cursor:pointer;
  box-shadow:0 2px 8px rgba(194,24,91,.38);animation:revPulse 2.2s ease-out infinite}
.review-dot:active{opacity:.85;transform:scale(.97)}
@keyframes revPulse{
  0%{box-shadow:0 2px 8px rgba(194,24,91,.38),0 0 0 0 rgba(194,24,91,.42)}
  70%{box-shadow:0 2px 8px rgba(194,24,91,.38),0 0 0 9px rgba(194,24,91,0)}
  100%{box-shadow:0 2px 8px rgba(194,24,91,.38),0 0 0 0 rgba(194,24,91,0)}
}
.gap-tip{margin:8px 0 4px;background:linear-gradient(135deg,#fff4ec,#ffe8d8);
  border:1px solid #f3c9ae;border-radius:12px;padding:12px 14px}
.gap-t{font-size:14px;font-weight:700;color:#b84a29}
.gap-s{font-size:12.5px;color:#7a5a3d;margin-top:4px;line-height:1.6}
.gap-tip .btn{margin-top:10px}

/* ===== 后台左侧树状布局（2026-11-02） ===== */
.admin-layout{display:flex;max-width:1200px;margin:0 auto;min-height:calc(100vh - 56px)}
.admin-side{flex:0 0 200px;background:#faf7f3;border-right:1px solid #efe7de;padding:14px 10px}
.admin-side .side-group{font-size:11px;color:#b0a69c;margin:14px 8px 6px;font-weight:600}
.admin-side .side-group:first-child{margin-top:0}
.admin-side .side-item{display:block;width:100%;text-align:left;border:none;background:none;
  font-size:14px;color:#4a433c;padding:10px 12px;border-radius:8px;cursor:pointer;margin-bottom:2px}
.admin-side .side-item:hover{background:#f0e9e1}
.admin-side .side-item.on{background:linear-gradient(135deg,#b84a29,#9c3d20);color:#fff;font-weight:700}
.admin-main{flex:1;min-width:0;padding:0 16px 24px}
.admin-main .card,.admin-main .card.tight{max-width:none}
@media (max-width:760px){
  .admin-side{flex:0 0 64px}
  .admin-side .side-group{display:none}
  .admin-side .side-item{font-size:0;text-align:center;padding:12px 0}
  .admin-side .side-item::before{content:attr(data-short);font-size:14px}
}

/* ===== 活动流程表（2026-11-02） ===== */
.flow-wrap{margin:10px 0 12px;border:1px solid #efe7de;border-radius:12px;overflow:hidden}
.flow-title{font-size:13px;font-weight:700;color:#2f6b52;background:#f0f7f3;padding:8px 12px;border-bottom:1px solid #e4ede7}
.flow-table{overflow-x:auto}
.flow-row{display:grid;grid-template-columns:74px 90px 76px 70px 1fr 1.2fr;min-width:560px;border-bottom:1px solid #f0e9e1;font-size:12px}
.flow-row:last-child{border-bottom:none}
.flow-row>div{padding:7px 8px;line-height:1.5;color:#4a433c;word-break:break-all}
.flow-row>div+div{border-left:1px solid #f5efe9}
.flow-head>div{font-weight:700;color:#6b6259;background:#faf7f3}

/* ===== 内容列表（园长端板块内容库）：缩略图 + 标题行 ===== */
.rows{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.row{display:flex;gap:12px;padding:12px 14px;border-bottom:1px solid #f4eeeb;cursor:pointer}
.row:last-child{border-bottom:none}
.row:active{background:#faf7f4}
.row .thumb{width:92px;height:69px;border-radius:8px;background:#f2ece9 center/cover no-repeat;flex:0 0 auto}
.row .body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between}
.row .h{font-size:14.5px;color:var(--ink);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row .meta{color:var(--muted);font-size:12px;display:flex;gap:12px;align-items:center}
.row .free{color:#d95c74;font-weight:600}

/* 后台方案表单的分组标题 */
.p-sec{margin:20px 0 4px;font-size:13px;font-weight:700;color:#b07a1e}

/* 后台：到期预警（2026-11-04） */
.exp-soon{display:inline-block;margin-left:6px;font-size:11.5px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,#f08a4b,#e2453c);border-radius:999px;padding:2px 8px;
  animation:expPulse 1.8s ease-out infinite}
.exp-bad{display:inline-block;margin-left:6px;font-size:11.5px;font-weight:700;color:#b3352c;
  background:#fdecea;border-radius:999px;padding:2px 8px}
@keyframes expPulse{0%{box-shadow:0 0 0 0 rgba(226,69,60,.35)}70%{box-shadow:0 0 0 7px rgba(226,69,60,0)}100%{box-shadow:0 0 0 0 rgba(226,69,60,0)}}

/* 后台：省市区三级联动（2026-11-04） */
.rg3{display:flex;gap:6px;flex-wrap:wrap}
.rg3 select{min-width:104px;padding:8px 10px;border:1px solid #e6e1d8;border-radius:8px;
  background:#fff;font-size:13px;color:#2b2b2b}

/* 后台：园所/监测横排列表（2026-11-04） */
.srow{display:grid;grid-template-columns:1.7fr 1.5fr 1fr .9fr 56px;gap:10px;align-items:center;
  padding:10px 18px 10px 14px;border-bottom:1px solid #f2ede7;font-size:13px}
.srow:last-child{border-bottom:0}
.srow.head{background:#f4ece1;color:#1f3b34;font-size:12.5px;font-weight:800;
  letter-spacing:.4px;border-bottom:2px solid #e2d5c4}
.srow .sname{font-weight:700;font-size:14px;color:#1f3b34}
.srow .smut{color:#8a8378;font-size:11.5px;margin-top:2px;line-height:1.6}
@media (max-width:760px){.srow{grid-template-columns:1fr 1fr}.srow.head{display:none}}

/* 后台：监测横排（7列） */
.mrow{display:grid;grid-template-columns:1.6fr 1fr .8fr 1.25fr .7fr .7fr .7fr;gap:8px;align-items:center;
  padding:10px 14px;border-bottom:1px solid #f2ede7;font-size:13px}
.mrow.head{background:#faf7f2;color:#8a8378;font-size:11.5px;font-weight:600}
.mrow:last-child{border-bottom:0}
@media (max-width:820px){.mrow{grid-template-columns:1fr 1fr 1fr}.mrow.head{display:none}}


/* 后台：监测数据小色块（2026-11-04） */
.mstat{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-top:9px}
.mstat>div{background:#faf7f2;border:1px solid #f1eae0;border-radius:9px;padding:7px 6px;text-align:center}
.mstat b{display:block;font-size:16px;line-height:1.25;color:#1f3b34;font-weight:800}
.mstat span{display:block;font-size:10.5px;color:#8a8378;margin-top:2px;white-space:nowrap}
.mstat em{display:block;font-size:10px;color:#a9a49a;font-style:normal;margin-top:1px}
@media (max-width:760px){.mstat{grid-template-columns:repeat(3,1fr)}}

/* 后台：知识库三步流程（2026-11-04） */
.kb-flow{margin-top:12px;background:#fff;border:1px solid #f1eae0;border-radius:10px;padding:11px 13px}
.kb-flow-t{font-size:12.5px;font-weight:800;color:#1f3b34;margin-bottom:8px}
.kb-step{display:flex;gap:9px;align-items:flex-start;padding:5px 0;font-size:12.5px;line-height:1.75;color:#5a5450}
.kb-step>b{flex:0 0 18px;height:18px;border-radius:50%;background:#1f3b34;color:#fff;
  font-size:11px;display:flex;align-items:center;justify-content:center;margin-top:2px}
.kb-step span{font-weight:700;color:#1f3b34;margin-right:4px}
.kb-var{display:inline-block;cursor:pointer;color:#8a6a3a;background:#f6efe3;
  border-radius:999px;padding:1px 8px;font-size:11px}

/* 后台：行内操作区（2026-11-04，防止按钮换行溢出） */
.sact{display:flex;gap:5px;align-items:center;justify-content:flex-end;flex-wrap:nowrap}
.sact .btn{padding:5px 9px;font-size:11.5px;line-height:1.3;border-radius:7px;white-space:nowrap}
.sord{display:flex;gap:2px;flex:0 0 auto}
.sord button{width:23px;height:23px;border:1px solid #e6e1d8;background:#faf7f2;
  border-radius:6px;font-size:11px;color:#6b6560;cursor:pointer;line-height:1;padding:0}
.sord button:disabled{opacity:.3;cursor:default}
.sord button:not(:disabled):hover{background:#f1e9dd}

/* 后台：置顶小标签（点一下切换） */
.pinchip{display:inline-block;margin-left:8px;font-size:11px;padding:1px 8px;border-radius:999px;
  border:1px solid #e0d6c6;color:#8a8378;cursor:pointer;user-select:none}
.pinchip:hover{border-color:#c9b898;color:#6b5b45}
.pinchip.on{background:#1f3b34;border-color:#1f3b34;color:#fff;font-weight:700}

/* 登录/注册 切换（2026-11-04） */
.seg{display:flex;background:#f3ede4;border-radius:12px;padding:4px;margin:16px 0 12px}
.seg button{flex:1;border:0;background:none;padding:9px 0;font-size:13.5px;font-weight:600;
  color:#8a8378;border-radius:9px;cursor:pointer;font-family:inherit}
.seg button.on{background:#fff;color:#1f3b34;box-shadow:0 1px 4px rgba(0,0,0,.07)}
.pickRow{display:flex;align-items:center;gap:8px;padding:11px 12px;border:1px solid #eae3d8;
  border-radius:10px;margin-top:8px;cursor:pointer;background:#fff}
.pickRow:hover{border-color:#c9b898;background:#fbf8f2}

/* 评论下的官方回复（2026-11-04） */
.cmt-reply{margin-top:8px;background:#f6fbf7;border-left:3px solid #2f7d4f;
  border-radius:0 8px 8px 0;padding:7px 10px}

/* 2026-11-04：flex 行里的输入框必须能缩，否则会把卡片撑破（手机上右侧被裁） */
.card input, .wrap input{min-width:0}

/* 联系客服：主路径是留言，联系方式弱化到下面（2026-11-04） */
.ca-box{margin-top:16px;padding-top:12px;border-top:1px dashed #ece6dc}
.ca-t{font-size:11.5px;color:#a9a49a;margin-bottom:6px}
.ca-row{display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid #f6f2ea;
  font-size:12.5px;color:#8a8378;cursor:pointer}
.ca-row:last-child{border-bottom:0}
.ca-row:active{background:#faf7f2}
.ca-l{flex:0 0 auto;color:#a9a49a}
.ca-v{flex:1;min-width:0;color:#8a8378;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-a{flex:0 0 auto;color:#c0b8ab;font-size:11.5px}

/* ---------- 联系我们：输入框提示语要"退后"，别抢焦点（2026-11-04） ---------- */
.sm-ta{font-size:14px;line-height:1.7}
.sm-ta::placeholder{color:#c3bbb2;font-size:12.5px;font-weight:400}
.sm-note{text-align:center;font-size:11.5px;color:#b3aba2;margin-top:9px;letter-spacing:.2px}

/* ---------- 家长端园所名片：二维码挪到右侧，跟名称地址电话同一块 ---------- */
.sf{display:flex;gap:12px;align-items:flex-start;margin-top:16px}
.sf-l{flex:1;min-width:0}
.sf-name{font-size:15.5px;font-weight:700;color:#1f3b34;margin-bottom:10px;line-height:1.4}
.sf-row{display:flex;align-items:center;gap:7px;font-size:13.5px;color:#5a524c;line-height:1.75;margin-bottom:7px}
.sf-row>span:first-child{flex:0 0 17px}
.sf-v{flex:1;min-width:0}
.sf-tel{color:#1f3b34;font-weight:700;text-decoration:none;letter-spacing:.4px;
  border-bottom:1px dashed #c9bdb0;padding-bottom:1px}
.sf-hint{font-size:11px;color:#b3aba2}

/* 二维码：有图给一圈淡色细边 + 极轻的呼吸；空的时候是虚线框 */
.sf-qr{flex:0 0 82px;width:82px}
.sf-qr img{width:82px;height:82px;object-fit:contain;border-radius:9px;background:#fff;
  border:1px solid #f0dde2;box-shadow:0 1px 6px rgba(217,92,116,.10);
  animation:qrBreath 3.2s ease-in-out infinite}
@keyframes qrBreath{0%,100%{box-shadow:0 1px 6px rgba(217,92,116,.10)}50%{box-shadow:0 1px 12px rgba(217,92,116,.24)}}
.qr-tip{font-size:10.5px;color:#a39a92;text-align:center;margin-top:5px;line-height:1.45}
.qr-empty{width:82px;height:82px;border:1.5px dashed #ddd2c6;border-radius:9px;background:#fcfaf7;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}
.qr-empty svg{width:22px;height:22px;fill:none;stroke:#c9bdb0;stroke-width:1.5}
.qr-empty span{display:block;width:100%;font-size:9.5px;color:#b3aba2;text-align:center;line-height:1.35;padding:0 4px;box-sizing:border-box}

/* ---------- 园所介绍编辑器（园所端「我的→园所信息」） ---------- */
.ab-ed{margin-top:4px}
.ab-item{border:1px solid #f0e6df;border-radius:9px;padding:9px 10px;margin-bottom:8px;background:#fdfbf9}
.ab-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}
.ab-hd b{font-size:11.5px;color:#8a7f76;font-weight:600;letter-spacing:.3px}
.ab-ops{display:flex;gap:4px}
.ab-ops button{border:1px solid #e6dbd3;background:#fff;color:#8a7f76;border-radius:6px;
  font-size:12px;padding:2px 8px;line-height:1.5;cursor:pointer}
.ab-ops button:disabled{opacity:.35;cursor:default}
.ab-ops .ab-del{color:#b3352c;border-color:#f0d5d1}
.ab-item textarea{width:100%;box-sizing:border-box;font-size:13.5px;line-height:1.7;
  border:1px solid #eae0d9;border-radius:7px;padding:8px 9px;font-family:inherit;resize:vertical}
.ab-media{position:relative}
.ab-media img,.ab-media video{width:100%;border-radius:7px;display:block;max-height:220px;object-fit:cover;background:#f4efeb}
.ab-rep{margin-top:7px;border:1px solid #e6dbd3;background:#fff;color:#6b6059;border-radius:7px;
  font-size:12px;padding:5px 12px;cursor:pointer}
.ab-add{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}
.ab-add .btn{margin:0;flex:0 0 auto;font-size:12.5px;padding:8px 12px}

/* ---------- 园所介绍页（家长端 /about/园所码） ---------- */
.site-hero{position:relative}
.hero-more{position:absolute;right:14px;bottom:11px;font-size:12px;color:rgba(255,255,255,.9);
  background:rgba(255,255,255,.16);border-radius:999px;padding:3px 10px;letter-spacing:.3px}
.ab-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 2px 6px}
.ab-back{width:34px;height:34px;border-radius:50%;background:#fff;display:flex;align-items:center;
  justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.ab-back svg{width:19px;height:19px;fill:none;stroke:#4a4340;stroke-width:2;stroke-linecap:round}
.ab-t{font-size:15px;font-weight:700;color:#2f2a28}
.ab-hero{background:linear-gradient(135deg,#d9738b,#c9576f);border-radius:14px;padding:20px 18px;
  color:#fff;margin-top:6px}
.ab-n{font-size:21px;font-weight:700;letter-spacing:.5px}
.ab-d{margin-top:9px;font-size:13.5px;line-height:1.85;color:rgba(255,255,255,.94)}
.ab-card{margin-top:12px;padding:16px 15px}
.ab-p{font-size:14.5px;line-height:1.95;color:#3a3431;margin-bottom:14px;white-space:normal}
.ab-p:last-child{margin-bottom:0}
.ab-m{margin-bottom:12px}
.ab-m img,.ab-m video{width:100%;border-radius:10px;display:block;background:#f4efeb}

/* ---------- 家长端底部导航（官网 / 园所介绍 / 家长大学共用一套） ---------- */
.tab{position:fixed;left:0;right:0;bottom:0;height:calc(56px + env(safe-area-inset-bottom));
  background:#fff;border-top:1px solid #eee5e1;display:flex;padding-bottom:env(safe-area-inset-bottom);
  z-index:90;box-shadow:0 -2px 10px rgba(0,0,0,.04)}
.tab div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;font-size:11.5px;color:#a49a94;cursor:pointer;user-select:none;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation;
  padding:6px 0;transition:transform .12s ease,opacity .12s ease}
.tab div:active{transform:scale(.93);opacity:.72}
.tab div.on{color:#d95c74}
.tab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}
body.has-tab{padding-bottom:calc(78px + env(safe-area-inset-bottom))}
