/* =====================================================================
   本地商家 AI Agent · 共享设计令牌与组件（腾讯大厂风格）
   事实源：颜色/字号/间距/圆角唯一在此定义，页面只消费语义类
   配色纪律：
   - 品牌主色只有一个蓝（#0052D9），后台一切强调/图表/选中态都走蓝色阶；
   - 微信绿 #07C160 仅用于 C 端小程序微信语境（.m-* 与 .btn.wx），后台不出现；
   - 绿/橙/红只作语义状态（成功/待办·预警/危险），且仅以 .badge/.dot-s/.up/.down 小面积出现；
   - 数据图表为单色相蓝阶（--chart-1/2/3），不再使用第二色相；
   - 页面内联只允许布局样式，禁止写任何颜色。
   ===================================================================== */
:root{
  color-scheme: light;
  /* 品牌（唯一主色） */
  --brand:#0052D9; --brand-hover:#366EF4; --brand-active:#003CAB;
  --brand-soft:#E8F1FE; --brand-tint:#F4F8FF; --brand-line:#DCEBFD;
  /* 微信绿：仅 C 端微信语境 */
  --wx:#07C160; --wx-hover:#06AD56; --wx-soft:#E7F8EF;
  /* 语义（小面积状态） */
  --success:#2BA471; --warning:#E37318; --danger:#D54941; --info:#0052D9;
  --success-soft:#E8F5EE; --warning-soft:#FDECDD; --warning-line:#F7CBA5; --danger-soft:#FCEBEA; --info-soft:#E8F1FE;
  /* 数据图表：单色相蓝阶 */
  --chart-1:#0052D9; --chart-2:#5B8FF2; --chart-3:#B7D2FA; --chart-4:#E3EEFD;
  /* 文本 */
  --t1:#181B24; --t2:#4B5263; --t3:#8690A6; --t4:#B5BDCC; --on-brand:#fff;
  /* 结构 / 中性灰阶 */
  --bg:#F3F5F9; --surface:#fff; --border:#E7E7EB; --border-strong:#DCDFE6;
  --fill:#F0F2F5; --fill-hover:#F7F9FC; --fill-strong:#E2E6EE;
  --wx-bg:#EDEDED; --wx-header:#F7F7F7;
  /* 字 */
  --font-body:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",system-ui,sans-serif;
  --font-num:"DIN Alternate","Roboto Mono",ui-monospace,system-ui,sans-serif;
  /* 圆角/阴影/间距 */
  --r-badge:3px; --r-ctl:6px; --r-card:8px; --r-md:8px;
  --sh1:0 1px 2px rgba(24,27,36,.04),0 2px 8px rgba(24,27,36,.06);
  --sh2:0 6px 24px rgba(24,27,36,.12);
  --sp:4px;
  /* 契约标准 Token 别名（同一事实源，供校验器与通用组件消费） */
  --color-primary:var(--brand);
  --color-background:var(--bg);
  --color-surface:var(--surface);
  --color-text:var(--t1);
  --color-muted-text:var(--t2);
  --color-border:var(--border);
  --color-focus:#0b66ff;
  --font-display:var(--font-body);
  --radius-sm:var(--r-badge);
  --radius-md:var(--r-ctl);
  --radius-lg:var(--r-card);
  --space-unit:4px;
  --content-width:1200px;
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--t1);font-family:var(--font-body);-webkit-font-smoothing:antialiased}
body{margin:0;min-height:100dvh;font-size:14px;line-height:1.55}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--brand);text-decoration:none}
a:hover{color:var(--brand-hover)}
h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.3}
:focus-visible{outline:3px solid rgba(0,82,217,.35);outline-offset:1px;border-radius:4px}
.skip-link{position:fixed;left:16px;top:16px;z-index:200;background:var(--brand);color:#fff;padding:8px 14px;border-radius:6px;transform:translateY(-260%)}
.skip-link:focus{transform:none}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}
.muted{color:var(--t3)}
.secondary{color:var(--t2)}
[hidden]{display:none!important}

/* ---------- 通用控件 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 16px;border:1px solid var(--border-strong);border-radius:var(--r-ctl);
  background:#fff;color:var(--t1);font-size:14px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}
.btn:hover{border-color:var(--brand);color:var(--brand)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:#fff}
.btn.primary:active{background:var(--brand-active)}
.btn.wx{background:var(--wx);border-color:var(--wx);color:#fff}
.btn.wx:hover{background:var(--wx-hover);border-color:var(--wx-hover);color:#fff}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--brand-soft);color:var(--brand)}
.btn.danger{color:var(--danger);border-color:var(--border-strong)}
.btn.danger:hover{border-color:var(--danger);background:var(--danger-soft)}
.btn.sm{height:28px;padding:0 10px;font-size:13px}
.btn.block{width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}

.badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:var(--r-badge);font-size:12px;line-height:1;
  background:var(--fill);color:var(--t2);border:1px solid transparent}
.badge.blue{background:var(--brand-soft);color:var(--brand)}
.badge.green{background:var(--success-soft);color:var(--success)}
.badge.orange{background:var(--warning-soft);color:var(--warning)}
.badge.red{background:var(--danger-soft);color:var(--danger)}
.badge.dot::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}

.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--sh1)}
.card-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}
.card-hd h3{font-size:15px}
.card-bd{padding:20px}

.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.field>label{font-size:13px;color:var(--t2)}
.field .req{color:var(--danger);margin-left:2px}
.input,textarea.input,select.input{width:100%;height:36px;padding:0 12px;border:1px solid var(--border-strong);border-radius:var(--r-ctl);background:#fff;font-size:14px}
textarea.input{height:auto;padding:8px 12px;resize:vertical}
.input:focus,textarea.input:focus,select.input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px rgba(0,82,217,.12)}
.hint{font-size:12px;color:var(--t3)}

/* switch */
.switch{position:relative;display:inline-flex;width:38px;height:22px;flex:none}
.switch input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.switch i{position:absolute;inset:0;background:var(--border-strong);border-radius:999px;transition:background .18s}
.switch i::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .18s}
.switch input:checked+i{background:var(--brand)}
.switch input:checked+i::after{left:18px}
.switch input:focus-visible+i{outline:3px solid rgba(0,82,217,.35);outline-offset:2px}

/* ===================== 入口分流页 ===================== */
.entry-wrap{max-width:980px;margin:0 auto;padding:72px 24px}
.entry-logo{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:600}
.entry-logo .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--brand-hover),var(--brand));display:grid;place-items:center;color:#fff}
.entry-hero{text-align:center;margin:56px 0 40px}
.entry-hero h1{font-size:30px;letter-spacing:.5px}
.entry-hero p{color:var(--t2);margin-top:12px;font-size:15px}
.entry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.entry-card .ico.p{background:var(--brand);color:#fff}
.entry-card{display:block;padding:32px;border-radius:12px;background:#fff;border:1px solid var(--border);box-shadow:var(--sh1);color:var(--t1);transition:transform .15s,box-shadow .15s,border-color .15s}
.entry-card:hover{transform:translateY(-3px);box-shadow:var(--sh2);border-color:var(--brand);color:var(--t1)}
.entry-card .ico{width:52px;height:52px;border-radius:12px;display:grid;place-items:center;margin-bottom:18px}
.entry-card .ico.m{background:var(--wx-soft);color:var(--wx)}
.entry-card .ico.b{background:var(--brand-soft);color:var(--brand)}
.entry-card h2{font-size:19px;margin-bottom:8px}
.entry-card p{color:var(--t2);font-size:14px;margin:0 0 18px}
.entry-card .go{font-size:13px;color:var(--brand);font-weight:500}
.entry-foot{text-align:center;color:var(--t3);font-size:12px;margin-top:48px}
@media(max-width:980px){.entry-grid{grid-template-columns:1fr}}
@media(max-width:680px){.entry-wrap{padding:40px 18px}}

/* ===================== 商家后台 WEB SHELL ===================== */
.bs-body{display:grid;grid-template-columns:224px 1fr;min-height:100dvh}
.bs-side{background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100dvh}
.bs-brand{display:flex;align-items:center;gap:10px;height:60px;padding:0 20px;border-bottom:1px solid var(--border);font-weight:600;font-size:16px}
.bs-brand .mark{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,var(--brand-hover),var(--brand));display:grid;place-items:center;color:#fff;flex:none}
.bs-nav{flex:1;overflow:auto;padding:10px 12px}
.nav-group{font-size:12px;color:var(--t3);padding:14px 10px 6px}
.nav-item{display:flex;align-items:center;gap:10px;height:38px;padding:0 10px;border-radius:6px;color:var(--t2);font-size:14px;margin-bottom:2px}
.nav-item svg{flex:none}
.nav-item:hover{background:var(--brand-soft);color:var(--brand)}
.nav-item.active{background:var(--brand);color:#fff}
.bs-side .side-foot{padding:12px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--t3)}
.bs-main{display:flex;flex-direction:column;min-width:0}
.bs-top{height:60px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:20}
.crumb{font-size:13px;color:var(--t3)}
.crumb b{color:var(--t1);font-weight:500}
.bs-top .spacer{flex:1}
.shop-switch{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer;background:#fff}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:13px;font-weight:500;flex:none}
.bs-content{padding:24px;display:flex;flex-direction:column;gap:20px}
.page-title{display:flex;align-items:center;justify-content:space-between;gap:12px}
.page-title h1{font-size:20px}
.page-title .sub{color:var(--t3);font-size:13px;margin-top:2px}

/* 指标卡 */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.kpi{padding:18px 20px}
.kpi .lbl{color:var(--t2);font-size:13px;display:flex;align-items:center;gap:6px}
.kpi .val{font-family:var(--font-num);font-size:30px;font-weight:600;margin:8px 0 4px;line-height:1.1}
.kpi .delta{font-size:12px}
.up{color:var(--success)} .down{color:var(--danger)}
.grid-2{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start}
.grid-2b{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
@media(max-width:1180px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-2b{grid-template-columns:1fr}}

/* 迷你折线/柱（纯CSS，单色相蓝） */
.bars{display:flex;align-items:flex-end;gap:8px;height:140px;padding-top:8px}
.bars .bar{flex:1;background:linear-gradient(180deg,var(--chart-2),var(--chart-1));border-radius:3px 3px 0 0;position:relative;min-height:4px}
.bars .bar span{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-size:11px;color:var(--t3);opacity:0}
.bars .bar:hover span{opacity:1}
.legend{display:flex;gap:18px;font-size:12px;color:var(--t2);margin-top:8px}
.legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px;vertical-align:middle}
.legend i.lb1{background:var(--chart-1)}
.legend i.lb2{background:var(--chart-2)}
.legend i.lb3{background:var(--chart-3)}
.donut{width:150px;height:150px;border-radius:50%;margin:6px auto;
  background:conic-gradient(var(--chart-1) 0 72%,var(--chart-2) 72% 91%,var(--chart-3) 91% 100%);position:relative}
.donut::after{content:"";position:absolute;inset:34px;background:#fff;border-radius:50%}
.donut .ctr{position:absolute;inset:0;display:grid;place-content:center;text-align:center;z-index:1}
.donut .ctr b{font-family:var(--font-num);font-size:24px}

/* 表格 */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;color:var(--t3);font-weight:500;font-size:12px;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}
.tbl td{padding:12px;border-bottom:1px solid var(--border);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl .cust{display:flex;align-items:center;gap:10px}
.tbl .cust .avatar{width:30px;height:30px;font-size:12px}
.tbl .ops a{margin-right:12px;font-size:13px}
.table-wrap{overflow-x:auto}

.seg{display:inline-flex;background:var(--fill);border-radius:6px;padding:2px}
.seg button{border:0;background:transparent;height:28px;padding:0 14px;border-radius:5px;font-size:13px;color:var(--t2);cursor:pointer}
.seg button[aria-pressed="true"]{background:#fff;color:var(--brand);box-shadow:0 1px 3px rgba(0,0,0,.1)}

/* ===================== 人工接管工作台 ===================== */
.inbox{display:grid;grid-template-columns:280px 1fr 300px;gap:0;height:calc(100dvh - 60px);min-height:560px;border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;background:#fff}
.inbox-list{border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}
.inbox-list .hd{padding:14px 16px;border-bottom:1px solid var(--border)}
.inbox-list .hd h3{font-size:15px;margin-bottom:10px}
.inbox-scroll{overflow:auto;flex:1}
.conv{display:flex;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;position:relative}
.conv:hover{background:var(--fill-hover)}
.conv.active{background:var(--brand-soft)}
.conv .avatar{width:38px;height:38px;font-size:14px}
.conv .meta{min-width:0;flex:1}
.conv .meta .row1{display:flex;justify-content:space-between;gap:8px;font-size:13px}
.conv .meta .row1 b{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv .meta .row1 time{color:var(--t3);font-size:11px;flex:none}
.conv .meta .preview{color:var(--t3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:3px}
.conv .unread{position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:var(--danger)}

.chat-pane{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--wx-bg)}
.chat-bar{display:flex;align-items:center;gap:10px;padding:12px 18px;background:var(--wx-header);border-bottom:1px solid var(--border)}
.chat-bar .who{display:flex;align-items:center;gap:10px}
.chat-msgs{flex:1;overflow:auto;padding:20px 18px;display:flex;flex-direction:column;gap:16px}
.chat-reply{border-top:1px solid var(--border);background:#fff;padding:12px 16px}
.chat-reply .ta{min-height:40px;max-height:120px;overflow:auto;font-size:14px;padding:8px 4px;color:var(--t1)}
.chat-reply .ta:empty::before{content:"输入回复内容…";color:var(--t4)}
.chat-reply .tools{display:flex;align-items:center;gap:8px;margin-top:8px}

.bub{display:flex;gap:10px;max-width:78%}
.bub .av{width:34px;height:34px;border-radius:8px;flex:none;display:grid;place-items:center;font-size:12px;font-weight:500}
.bub.ai .av{background:#fff;border:1px solid var(--border);color:var(--brand)}
.bub.human .av{background:var(--brand-soft);color:var(--brand)}
.bub.user{align-self:flex-end;flex-direction:row-reverse}
.bub.user .av{background:var(--brand-soft);color:var(--brand)}
.bub .body{min-width:0}
.bub .name{font-size:11px;color:var(--t3);margin-bottom:4px;display:flex;align-items:center;gap:6px}
.bub .bubble{padding:10px 13px;border-radius:8px;font-size:14px;background:#fff;border:1px solid var(--border);box-shadow:var(--sh1)}
.bub.user .bubble{background:var(--brand);color:#fff;border-color:var(--brand)}
.bub .bubble.ai-card{padding:0;overflow:hidden;width:300px;max-width:100%}
.ai-tag{display:inline-flex;align-items:center;height:16px;padding:0 5px;border:1px solid var(--brand);color:var(--brand);border-radius:3px;font-size:10px;line-height:1}
.tool-call{border-top:1px dashed var(--border-strong);padding:10px 13px;background:#fff;font-size:12px;color:var(--t2)}
.tool-call code{color:var(--brand);background:var(--brand-soft);padding:1px 5px;border-radius:3px;font-family:var(--font-num)}
.tool-call .ok{color:var(--success)}

/* 右侧客户卡 */
.cust-pane{border-left:1px solid var(--border);padding:18px;overflow:auto;background:var(--fill-hover)}
.cust-pane .prof{text-align:center;padding-bottom:16px;border-bottom:1px solid var(--border)}
.cust-pane .prof .avatar{width:56px;height:56px;font-size:20px;margin:0 auto 8px}
.kv{display:flex;justify-content:space-between;font-size:13px;padding:9px 0;border-bottom:1px dashed var(--border)}
.kv span{color:var(--t3)}
.side-sec{margin-top:16px}
.side-sec h4{font-size:13px;color:var(--t2);margin-bottom:8px}
.tagline{display:flex;flex-wrap:wrap;gap:6px}
.takeover-box{margin-bottom:12px;padding:12px;border-radius:8px;border:1px solid var(--border);background:#fff;display:flex;align-items:center;gap:10px}
.takeover-box .info{flex:1;min-width:0}
.takeover-box .info b{display:block;font-size:13px}
.takeover-box .info small{color:var(--t3);font-size:12px}
@media(max-width:1100px){.inbox{grid-template-columns:240px 1fr}.cust-pane{display:none}.bs-body{grid-template-columns:64px 1fr}.nav-item span,.nav-group,.bs-brand b,.side-foot{display:none}.bs-brand{justify-content:center;padding:0}}

/* ===================== 知识库设置 ===================== */
.kb-layout{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:start}
.kb-tabs{position:sticky;top:80px;display:flex;flex-direction:column;gap:2px}
.kb-tabs a{padding:10px 12px;border-radius:6px;color:var(--t2);font-size:14px;border-left:3px solid transparent}
.kb-tabs a.active{background:var(--brand-soft);color:var(--brand);border-left-color:var(--brand);font-weight:500}
.faq-row{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--border)}
.faq-row:last-child{border-bottom:none}
.faq-row .idx{width:24px;height:24px;border-radius:50%;background:var(--fill);color:var(--t2);font-size:12px;display:grid;place-items:center;flex:none;margin-top:2px}
.faq-row .txt{flex:1;min-width:0}
.faq-row .txt b{font-size:14px;font-weight:500}
.faq-row .txt p{margin:4px 0 0;color:var(--t2);font-size:13px}
.faq-row .ops{flex:none;display:flex;gap:6px}
.save-bar{position:sticky;bottom:0;background:linear-gradient(180deg,rgba(243,245,249,0),var(--bg) 30%);padding:16px 0 0;display:flex;justify-content:flex-end;gap:10px}
.tool-row{display:flex;align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--border)}
.tool-row:last-child{border-bottom:none}
.tool-row .ti{flex:1}
.tool-row .ti b{font-size:14px;font-weight:500;font-family:var(--font-num)}
.tool-row .ti p{margin:2px 0 0;color:var(--t3);font-size:12px}
.toast{position:fixed;left:50%;bottom:32px;transform:translateX(-50%) translateY(20px);background:#181B24;color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:300;display:flex;align-items:center;gap:8px}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ===================== 通用后台组件（CRM/订单/SOP/券） ===================== */
.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.toolbar .input{height:34px;min-width:170px;max-width:240px}
.toolbar .grow{flex:1}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}
.progress{height:6px;border-radius:999px;background:var(--fill);overflow:hidden;margin-top:8px}
.progress>i{display:block;height:100%;background:var(--brand);border-radius:999px}
.mini-tags{display:flex;flex-wrap:wrap;gap:6px}
.mini-tags .tag{font-size:12px;color:var(--t2);background:var(--fill);border:1px solid var(--border);border-radius:4px;padding:2px 8px}
/* SOP 计划行 */
.plan{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border)}
.plan:last-child{border-bottom:none}
.plan .pico{width:40px;height:40px;border-radius:8px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;flex:none}
.plan .pbody{flex:1;min-width:0}
.plan .pbody b{font-size:14px;font-weight:500}
.plan .pbody p{margin:3px 0 0;color:var(--t3);font-size:12px}
.plan .pstats{display:flex;gap:22px;text-align:center;flex:none}
.plan .pstats b{display:block;font-family:var(--font-num);font-size:17px;font-weight:600}
.plan .pstats span{font-size:11px;color:var(--t3)}
@media(max-width:960px){.plan{flex-wrap:wrap}.plan .pstats{order:3;width:100%;justify-content:space-between}.grid-3{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.grid-3{grid-template-columns:1fr}}
/* 优惠券卡 */
.cpn{padding:0;overflow:hidden;display:flex;flex-direction:column}
.cpn .top{display:flex;gap:14px;padding:18px 20px;align-items:center}
.cpn .amt{color:var(--warning);font-family:var(--font-num);font-size:30px;font-weight:700;line-height:1;flex:none;min-width:84px}
.cpn .amt small{font-size:13px;font-weight:500}
.cpn .amt.disc{color:var(--brand)}
.cpn .meta{flex:1;min-width:0}
.cpn .meta b{font-size:15px}
.cpn .meta p{margin:3px 0 0;color:var(--t3);font-size:12px}
.cpn .ft{padding:11px 20px;background:var(--fill-hover);display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--t2);border-top:1px solid var(--border)}
/* 客户详情侧卡 */
.crm-side h4{font-size:13px;color:var(--t2);margin:14px 0 8px}
.crm-side h4:first-child{margin-top:0}
.timeline{list-style:none;display:flex;flex-direction:column;gap:0}
.timeline li{position:relative;padding:0 0 14px 16px;border-left:2px solid var(--border);font-size:12px;color:var(--t2)}
.timeline li:last-child{border-left-color:transparent;padding-bottom:0}
.timeline li::before{content:"";position:absolute;left:-5px;top:3px;width:8px;height:8px;border-radius:50%;background:var(--brand)}
.timeline li time{display:block;color:var(--t4);font-size:11px;margin-top:2px}

/* ===================== 移动端（C 端小程序，微信绿仅在此语境） ===================== */
.m-shell{background:var(--wx-bg);max-width:430px;margin:0 auto;min-height:100dvh;position:relative;box-shadow:0 0 0 1px var(--border);display:flex;flex-direction:column}
.m-status{height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;font-size:13px;font-weight:600;background:var(--wx-header)}
.m-status .r{display:flex;gap:5px;align-items:center}
.m-header{height:46px;background:var(--wx-header);display:flex;align-items:center;justify-content:space-between;padding:0 14px;position:relative;border-bottom:1px solid var(--border)}
.m-header .t{position:absolute;left:50%;transform:translateX(-50%);font-size:16px;font-weight:600;display:flex;align-items:center;gap:6px}
.m-header .ic{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:#181B24;background:transparent;border:0;cursor:pointer}
.m-header .ic:active{background:var(--fill)}
.m-main{flex:1;overflow:auto;min-height:0}
.m-bottom{display:flex;background:var(--wx-header);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}
.m-bottom a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0;color:var(--t3);font-size:11px}
.m-bottom a.active{color:var(--wx)}
.m-bottom a svg{width:24px;height:24px}

/* 聊天流 */
.m-chat-scroll{padding:16px 14px 24px;display:flex;flex-direction:column;gap:16px}
.m-day{align-self:center;font-size:11px;color:var(--t4);margin:2px 0}
.m-bub{display:flex;gap:8px;max-width:84%}
.m-bub .av{width:38px;height:38px;border-radius:8px;flex:none;display:grid;place-items:center}
.m-bub.ai .av{background:#fff;border:1px solid var(--border);color:var(--brand)}
.m-bub.user{align-self:flex-end;flex-direction:row-reverse}
.m-bub.user .av{background:var(--wx-soft);color:var(--wx)}
.m-bub .col{min-width:0}
.m-bub .nm{font-size:11px;color:var(--t3);margin:0 0 3px 2px;display:flex;align-items:center;gap:6px}
.m-bub .bb{padding:10px 12px;border-radius:6px;font-size:15px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 1px rgba(0,0,0,.03);position:relative}
.m-bub.user .bb{background:var(--wx);color:#fff;border-color:var(--wx)}
.m-cardlink{display:block;width:300px;max-width:100%;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff;margin-top:8px}
.m-cardlink .ph{height:110px;background:linear-gradient(135deg,var(--brand-line),var(--brand-tint));display:grid;place-items:center;color:var(--chart-2)}
.m-cardlink .cap{padding:10px 12px}
.m-cardlink .cap b{font-size:14px}
.m-cardlink .cap p{margin:3px 0 0;font-size:12px;color:var(--t3)}
.m-tool{margin-top:8px;border:1px dashed var(--border-strong);border-radius:8px;overflow:hidden;font-size:13px}
.m-tool summary{list-style:none;padding:9px 12px;background:var(--brand-tint);color:var(--brand);cursor:pointer;display:flex;align-items:center;gap:6px;font-size:12px}
.m-tool .td{padding:10px 12px;background:#fff}
.m-tool .okline{color:var(--success);font-size:12px;margin-top:6px;display:flex;align-items:center;gap:5px}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.chip{border:1px solid var(--border-strong);background:#fff;color:var(--brand);border-radius:999px;padding:6px 13px;font-size:13px;cursor:pointer}
.chip:active{background:var(--brand-soft)}
.m-quick{padding:0 14px 10px;display:flex;gap:8px;overflow:auto;background:var(--wx-bg)}
.m-quick .chip{white-space:nowrap;background:#fff}
.m-inputbar{background:var(--wx-header);border-top:1px solid var(--border);padding:8px 10px calc(8px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px}
.m-inputbar .fieldbox{flex:1;height:38px;background:#fff;border:1px solid var(--border-strong);border-radius:6px;display:flex;align-items:center;padding:0 12px;color:var(--t3);font-size:15px}
.m-inputbar .ib-ic{color:var(--t2);flex:none;display:grid;place-items:center}

/* 底部弹层 sheet */
.sheet-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:50;display:flex;align-items:flex-end}
.sheet{background:#fff;width:100%;border-radius:16px 16px 0 0;padding:8px 18px calc(20px + env(safe-area-inset-bottom));animation:up .22s ease}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
.sheet .grip{width:36px;height:4px;border-radius:2px;background:var(--border-strong);margin:6px auto 14px}
.sheet h3{font-size:17px;text-align:center;margin-bottom:4px}
.sheet .sub{text-align:center;color:var(--t3);font-size:12px;margin-bottom:16px}
.sheet .field{margin-bottom:14px}
.sheet .input{height:42px}
.sheet-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.sheet-tags .chip{border-color:var(--border-strong);color:var(--t2)}
.sheet-tags .chip.on{background:var(--wx-soft);border-color:var(--wx);color:var(--wx-hover)}

/* 门店/我的（普通滚动页） */
.m-shop-hero{height:170px;background:linear-gradient(135deg,var(--brand-line),var(--brand-tint));display:grid;place-items:center;color:var(--chart-2)}
.m-shop-head{background:#fff;padding:16px;border-bottom:8px solid var(--wx-bg)}
.m-shop-head h1{font-size:19px}
.m-shop-head .meta{color:var(--t3);font-size:13px;margin-top:6px;display:flex;flex-direction:column;gap:4px}
.m-sec{background:#fff;margin-top:8px;padding:4px 16px}
.m-sec h2{font-size:15px;padding:14px 0 10px;display:flex;align-items:center;justify-content:space-between}
.m-sec h2 a{font-size:13px;font-weight:400}
.m-info-row{display:flex;gap:10px;padding:12px 0;border-top:1px solid var(--fill);font-size:14px}
.m-info-row svg{flex:none;margin-top:2px;color:var(--t3)}
.m-info-row .k{color:var(--t3);width:64px;flex:none}
.m-info-row .v{flex:1}
.pkg{display:flex;gap:12px;padding:14px 0;border-top:1px solid var(--fill)}
.pkg .pic{width:72px;height:72px;border-radius:8px;background:linear-gradient(135deg,var(--brand-line),var(--brand-tint));display:grid;place-items:center;color:var(--chart-2);flex:none}
.pkg .pc{flex:1;min-width:0}
.pkg .pc b{font-size:15px}
.pkg .pc p{margin:3px 0;color:var(--t3);font-size:12px}
.pkg .price,.price-strong{color:var(--danger);font-family:var(--font-num);font-size:16px;font-weight:600}
.pkg .price small{font-size:11px;color:var(--t3);text-decoration:line-through;font-weight:400;margin-left:6px}
.coupon{display:flex;align-items:center;gap:12px;border:1px solid var(--warning-line);background:var(--warning-soft);border-radius:8px;padding:12px;margin:12px 0}
.coupon .amt,.amt-warn{color:var(--warning);font-family:var(--font-num);font-size:24px;font-weight:700;line-height:1}
.coupon .amt small{font-size:12px}
.coupon .ci{flex:1}
.coupon .ci b{font-size:14px}
.coupon .ci p{margin:2px 0 0;font-size:12px;color:var(--t3)}
.m-cta{position:sticky;bottom:0;display:flex;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--border)}
.m-cta .btn{height:44px;flex:1;font-size:15px;border-radius:8px}

.m-list{background:#fff;margin-top:8px}
.m-cell{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--fill)}
.m-cell:last-child{border-bottom:none}
.m-cell .ci{flex:1;min-width:0}
.m-cell .ci b{font-size:15px;font-weight:500}
.m-cell .ci p{margin:2px 0 0;font-size:12px;color:var(--t3)}
.m-cell .arrow{color:var(--t4)}
.m-profile{background:#fff;padding:22px 16px;display:flex;align-items:center;gap:14px}
.m-profile .av{width:58px;height:58px;border-radius:50%;background:var(--wx-soft);color:var(--wx);display:grid;place-items:center;font-size:22px;flex:none}
.m-profile b{font-size:18px}
.m-profile p{margin:3px 0 0;font-size:12px;color:var(--t3)}
.ai-notice{margin:8px 16px;background:var(--brand-tint);border:1px solid var(--brand-line);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--t2);display:flex;gap:8px}
.ai-notice svg{color:var(--brand);flex:none;margin-top:1px}
.app-foot{text-align:center;color:var(--t4);font-size:11px;margin:14px 0 20px}

/* 状态点/徽标小工具 */
.dot-s{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}
.dot-s.g{background:var(--success)} .dot-s.o{background:var(--warning)} .dot-s.r{background:var(--danger)} .dot-s.b{background:var(--brand)}

/* ===================== 平台总后台 SHELL（深色侧栏，同一品牌蓝色相） ===================== */
:root{--p-side:#0B1B3A;--p-side-2:#10264F;--p-line:rgba(255,255,255,.08);--p-muted:#93A2C0;--p-active:rgba(0,82,217,.55)}
.ps-body{display:grid;grid-template-columns:236px 1fr;min-height:100dvh}
.ps-side{background:linear-gradient(180deg,var(--p-side),var(--p-side-2));color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh}
.ps-brand{display:flex;align-items:center;gap:10px;height:60px;padding:0 20px;border-bottom:1px solid var(--p-line);font-weight:600;font-size:15px;white-space:nowrap}
.ps-brand .mark{width:28px;height:28px;border-radius:7px;background:var(--brand);display:grid;place-items:center;color:#fff;flex:none}
.ps-brand small{display:block;font-size:11px;color:var(--p-muted);font-weight:400}
.ps-nav{flex:1;overflow:auto;padding:12px}
.ps-group{font-size:11px;color:var(--p-muted);padding:12px 10px 6px;letter-spacing:.5px}
.ps-item{display:flex;align-items:center;gap:10px;height:38px;padding:0 10px;border-radius:6px;color:#C7D2E8;font-size:14px;margin-bottom:2px}
.ps-item svg{flex:none;opacity:.85}
.ps-item:hover{background:rgba(255,255,255,.06);color:#fff}
.ps-item.active{background:var(--p-active);color:#fff;font-weight:500}
.ps-side .side-foot{padding:12px 16px;border-top:1px solid var(--p-line);font-size:12px;color:var(--p-muted)}
.ps-side .side-foot a{color:#C7D2E8}
.ps-main{display:flex;flex-direction:column;min-width:0;background:var(--bg)}
.ps-top{height:60px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:16px;padding:0 24px;position:sticky;top:0;z-index:20}
.ps-top .crumb{font-size:13px;color:var(--t3)}
.ps-top .crumb b{color:var(--t1);font-weight:600}
.ps-top .spacer{flex:1}
.top-actor{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t2)}
.top-actor .av{width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:13px}
.ps-content{padding:24px;display:flex;flex-direction:column;gap:16px}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:12px 16px}
.toolbar .grow{flex:1}
.mini-stat{font-size:12px;color:var(--t3)}
.mini-stat b{display:block;font-size:20px;color:var(--t1);font-family:var(--font-num);margin-top:2px}
.divider-v{width:1px;height:28px;background:var(--border)}

/* 登录页 */
.login-wrap{min-height:100dvh;display:grid;grid-template-columns:1.05fr 1fr}
.login-aside{background:linear-gradient(150deg,var(--brand),#003CAB);color:#fff;padding:56px;display:flex;flex-direction:column;justify-content:space-between}
.login-aside .lbrand{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:600}
.login-aside .lbrand .mark{width:38px;height:38px;border-radius:10px;background:rgba(255,255,255,.16);display:grid;place-items:center}
.login-aside h1{font-size:30px;line-height:1.4;margin:0}
.login-aside p{color:rgba(255,255,255,.82);font-size:14px;margin-top:14px;max-width:380px}
.login-aside .lp{font-size:12px;color:rgba(255,255,255,.6)}
.login-panel{display:grid;place-items:center;padding:40px}
.login-card{width:100%;max-width:360px}
.login-card h2{font-size:22px;margin-bottom:6px}
.login-card .sub{color:var(--t3);font-size:13px;margin-bottom:26px}
.role-tabs{display:flex;gap:8px;margin-bottom:18px}
.role-tabs .rtab{flex:1;text-align:center;height:36px;line-height:36px;border:1px solid var(--border-strong);border-radius:var(--r-ctl);font-size:13px;color:var(--t2);cursor:pointer;background:#fff}
.role-tabs .rtab.active{border-color:var(--brand);color:var(--brand);background:var(--brand-tint);font-weight:500}
.login-foot-links{display:flex;justify-content:space-between;margin:6px 0 20px;font-size:12px}
.login-foot-links a{color:var(--brand)}
@media(max-width:860px){.login-aside{display:none}.login-wrap{grid-template-columns:1fr}}

/* ===================== 平台页组件（复用同一令牌，与商家端组件对齐） ===================== */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--sh1)}
.cols-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.kpi-card{padding:18px 20px}
.kpi-card .k{color:var(--t2);font-size:13px}
.kpi-card .v{font-family:var(--font-num);font-size:28px;font-weight:600;margin:8px 0 4px;line-height:1.1}
.kpi-card .muted{color:var(--t3);font-size:12px}
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{text-align:left;color:var(--t3);font-weight:500;font-size:12px;padding:11px 14px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--fill-hover)}
.table td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.table tr:last-child td{border-bottom:none}
.table .strong{font-weight:600;color:var(--t1)}
.table .ops{white-space:nowrap}
.table .ops a{margin-right:12px;font-size:13px}
.badge.gray{background:var(--fill);color:var(--t2)}
.link-btn{border:0;background:none;padding:0;font-size:13px;color:var(--brand);cursor:pointer}
.link-btn:hover{text-decoration:underline}
.donut-row{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.donut-legend{list-style:none;margin:0;padding:0;flex:1;min-width:180px;font-size:13px;color:var(--t2)}
.donut-legend li{display:flex;align-items:center;gap:8px;padding:5px 0}
.donut-legend i{width:9px;height:9px;border-radius:2px;flex:none}
.donut-legend b{margin-left:auto;color:var(--t1);font-family:var(--font-num)}
.legend .lg{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}
.legend .lg.b{background:var(--chart-1)}
.sop-item{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--fill)}
.sop-item:last-child{border-bottom:none}
.sop-item b{font-size:14px}
.sop-item p{margin:4px 0 0;color:var(--t3);font-size:12.5px;line-height:1.6}

/* 套餐卡 */
.plan-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;align-items:stretch}
.plan-card{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--r-card);padding:20px;box-shadow:var(--sh1);display:flex;flex-direction:column}
.plan-card.hot{border-color:var(--brand);box-shadow:0 4px 18px rgba(0,82,217,.12)}
.hot-tag{position:absolute;top:0;right:18px;transform:translateY(-50%);background:var(--brand);color:#fff;font-size:11px;padding:3px 10px;border-radius:999px}
.plan-card .ph h3{font-size:17px;margin:0}
.plan-card .ph p{margin:6px 0 0;color:var(--t3);font-size:12.5px}
.pprice{margin:18px 0;padding-bottom:16px;border-bottom:1px solid var(--fill)}
.pprice b{font-family:var(--font-num);font-size:30px;font-weight:700;color:var(--t1)}
.pprice span{color:var(--t3);font-size:12px;margin-left:4px}
.plist{list-style:none;margin:0;padding:0;flex:1}
.plist li{position:relative;padding:7px 0 7px 22px;font-size:13px;color:var(--t2)}
.plist li::before{content:"";position:absolute;left:2px;top:13px;width:6px;height:6px;border-radius:50%;background:var(--brand)}
.plist li.off{color:var(--t4)}
.plist li.off::before{background:var(--border-strong)}
.pstat{margin:16px 0 0;font-size:12.5px;color:var(--t2)}
@media(max-width:1200px){.plan-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.cols-2{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)!important}}
@media(max-width:560px){.plan-grid{grid-template-columns:1fr}}

/* ============ v1.4 补全组件 ============ */
/* 面板小节标题（平台页） */
.panel{padding:0;overflow:hidden}
.panel .ph{font-size:15px;margin:0;padding:15px 18px;border-bottom:1px solid var(--border)}
.panel .ph:first-child{border-top:none}
.panel .hint{padding:12px 18px 16px;margin:0}

/* 订阅与账单（商家） */
.plan-now{background:linear-gradient(135deg,var(--brand-tint),#fff);border-color:var(--brand-line)}
.usage-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--t2);margin-top:14px}
.usage-row b{color:var(--t1)}
.usage-row + .progress{margin-top:6px}
.billing-kv .kv:last-child{border-bottom:none}

/* 权限矩阵 */
.tbl.perm td:nth-child(n+2),.tbl.perm th:nth-child(n+2){text-align:center;width:90px;color:var(--brand);font-weight:600}
.tbl.perm td:first-child{color:var(--t2)}
.tbl.perm td.muted{color:var(--t4);font-weight:400}

/* 危险描边按钮 */
.btn.danger-ghost{color:var(--danger);border-color:var(--border-strong);background:#fff}
.btn.danger-ghost:hover{background:#fdeceb;border-color:var(--danger)}

/* 平台：商户详情 */
.detail-head{padding:20px 22px}
.dlogo{width:52px;height:52px;border-radius:12px;background:var(--brand);color:#fff;display:grid;place-items:center;font-size:24px;font-weight:700;flex:none}
.head-stats{display:flex;gap:28px;padding-left:24px;border-left:1px solid var(--border)}
.head-stats>div{display:flex;flex-direction:column;align-items:center;gap:3px}
.head-stats b{font-size:20px;color:var(--t1)}
.head-stats span{font-size:12px;color:var(--t3)}
.table.kv-tbl th{width:130px;background:transparent;color:var(--t3);font-weight:500}
.sub-now{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--brand-tint);border:1px solid var(--brand-line);border-radius:var(--r-card);margin-bottom:6px}
.admin-ops{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}

/* 平台：设置表单 */
.sys-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.form-row{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid var(--fill)}
.form-row:last-child{border-bottom:none}
.form-row label:first-child{width:96px;flex:none;font-size:13px;color:var(--t2)}
.form-row .input{flex:1;max-width:300px;height:34px}
.form-row .input[readonly]{background:var(--fill);color:var(--t3)}
@media(max-width:980px){.sys-grid{grid-template-columns:1fr}}

/* C 端：预约详情 */
.m-status-card{margin:12px 14px 0;background:#fff;border-radius:12px;padding:22px 18px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px}
.m-status-card .ok-ico{color:var(--wx);margin-bottom:4px}
.m-status-card b{font-size:17px;color:var(--t1)}
.m-status-card p{margin:0;font-size:12.5px;color:var(--t3);line-height:1.5}
.m-card{margin:12px 14px 0;background:#fff;border-radius:12px;padding:4px 16px}
.mc-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:12px 0;border-bottom:1px solid var(--fill);font-size:14px}
.mc-row:last-child{border-bottom:none}
.mc-row .k{color:var(--t3);font-size:13.5px;flex:none}
.mc-row b{color:var(--t1);font-weight:600;text-align:right}
.mc-row.total{border-top:1px solid var(--border);margin-top:2px;padding-top:14px}
.mc-row .price{color:var(--danger);font-weight:700}
.mc-row .down{color:var(--danger)}
.tl-title{font-size:14px;font-weight:600;color:var(--t1);padding:14px 0 4px}
.m-tl{list-style:none;margin:0;padding:0 0 12px;position:relative}
.m-tl li{position:relative;padding:0 0 18px 22px;font-size:14px}
.m-tl li::before{content:"";position:absolute;left:2px;top:4px;width:9px;height:9px;border-radius:50%;background:var(--border-strong)}
.m-tl li::after{content:"";position:absolute;left:6px;top:14px;bottom:0;width:2px;background:var(--fill)}
.m-tl li:last-child::after{display:none}
.m-tl li b{color:var(--t2);font-weight:500}
.m-tl li p{margin:2px 0 0;font-size:12px;color:var(--t4)}
.m-tl li.on::before,.m-tl li.cur::before{background:var(--wx)}
.m-tl li.on b,.m-tl li.cur b{color:var(--t1)}
.m-tl li.cur::after{background:linear-gradient(var(--wx),var(--fill))}
.m-actions{display:flex;gap:10px;margin:16px 14px 0}
.m-actions .btn{flex:1;height:44px;border-radius:9px;font-size:15px}
.btn.line-wx{background:#fff;color:var(--wx);border:1px solid var(--wx)}
.btn.line-wx:hover{background:var(--wx-soft)}
a.m-cell{color:inherit;text-decoration:none}

/* ============ v1.4 工作台预约/跟进交互 ============ */
.resched{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}
.resched label{display:block;font-size:12px;color:var(--t3);margin-bottom:6px}
.resched .input{height:34px;font-size:13px}
.note-list{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.note-list:empty{display:none}
.note-item{background:var(--fill);border-radius:var(--r-ctl);padding:9px 11px}
.note-item p{margin:0;font-size:13px;color:var(--t1);line-height:1.5;word-break:break-word}
.note-item time{display:block;margin-top:5px;font-size:11.5px;color:var(--t4)}
.note-edit{margin-bottom:10px}
.note-edit textarea.input{height:auto;padding:8px 10px;resize:vertical}
.btn:disabled{opacity:.6;cursor:not-allowed}

/* ============ v1.4 顶栏门店切换下拉 ============ */
.shop-switch{position:relative}
.shop-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:210px;background:#fff;border:1px solid var(--border);border-radius:var(--r-card);box-shadow:0 8px 24px rgba(24,27,36,.14);padding:6px;z-index:200;display:none;text-align:left}
.shop-menu.open{display:block}
.shop-item{display:block;width:100%;text-align:left;background:none;border:none;padding:9px 12px;font-size:13.5px;color:var(--t1);border-radius:var(--r-ctl);cursor:pointer;line-height:1.3}
.shop-item:hover{background:var(--brand-soft);color:var(--brand)}
a.shop-item{text-decoration:none;box-sizing:border-box}
a.shop-item.manage{border-top:1px solid var(--fill);margin-top:4px;color:var(--brand);font-weight:600}
