/* app.css - 前后台共用样式（手机端优先） */
* { margin:0; padding:0; box-sizing:border-box; font-family:"PingFang TC","Microsoft JhengHei",sans-serif; }
body { background:#f0f2f5; color:#222; font-size:15px; padding-bottom:70px; }
a { text-decoration:none; color:inherit; }
img { display:block; }
h3 { font-size:15px; color:#007b4b; margin-bottom:12px; }
.empty { text-align:center; color:#aaa; padding:40px 0; font-size:14px; }
.err-box { background:#fff0f0; color:#d33; border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:12px; }
.ok-box { background:#e8f6ef; color:#007b4b; border-radius:8px; padding:10px 12px; font-size:13px; margin-bottom:12px; }

/* ---------- 通用按钮 ---------- */
.btn-main { display:flex; align-items:center; justify-content:center; gap:6px; width:100%; background:#ff6600; color:#fff; border:none; border-radius:24px; padding:12px 0; font-size:16px; font-weight:700; cursor:pointer; }
.btn-main.sm { width:auto; padding:10px 16px; border-radius:20px; font-size:14px; flex:none; }
.btn-sub { display:flex; align-items:center; justify-content:center; gap:6px; width:100%; background:#fff; color:#ff6600; border:1.5px solid #ff6600; border-radius:24px; padding:11px 0; font-size:14px; font-weight:700; margin-top:10px; }
.btn-ghost { display:block; width:100%; background:none; border:none; color:#999; font-size:13px; padding:10px 0; cursor:pointer; text-align:center; }
.btn-disabled { width:100%; background:#ddd; color:#fff; border-radius:24px; padding:13px 0; font-size:15px; font-weight:700; text-align:center; }

/* ---------- 顶栏/进度/底部导航 ---------- */
.topbar { position:sticky; top:0; z-index:9; background:#fff; border-bottom:1px solid #eee; padding:12px 14px; display:flex; align-items:center; justify-content:space-between; }
.tb-title { font-size:16px; font-weight:700; }
.tb-back { color:#333; display:flex; }
.tb-right { font-size:13px; color:#999; }
.progress { height:4px; background:#eee; }
.progress-in { height:100%; background:#ff6600; transition:width .3s; }
.tabbar { position:fixed; bottom:0; left:0; right:0; background:#fff; border-top:1px solid #eee; display:flex; z-index:10; }
.tabbar a { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:8px 0 10px; color:#999; font-size:11px; position:relative; }
.tabbar a.on { color:#ff6600; }
.tabbar .dot { position:absolute; top:6px; right:calc(50% - 18px); width:8px; height:8px; background:#ff3b30; border-radius:50%; }

/* ---------- 前端主页 ---------- */
.profile-hero { position:relative; background:linear-gradient(135deg,#007b4b,#009e60); color:#fff; padding:34px 20px 26px; text-align:center; background-size:cover; background-position:center; }
.profile-hero.has-cover:before { content:''; position:absolute; left:0; right:0; top:0; bottom:0; background:linear-gradient(180deg,rgba(0,0,0,.34),rgba(0,0,0,.46)); }
.ph-inner { position:relative; z-index:1; }
.ph-avatar { display:flex; justify-content:center; margin-bottom:10px; }
.ph-avatar .shop-av { width:64px; height:64px; }
.shop-av { display:block; border-radius:50%; object-fit:cover; }
.ph-name { font-size:19px; font-weight:800; }
.ph-bio { font-size:13px; opacity:.92; margin-top:8px; line-height:20px; }
.ph-sub { font-size:11px; opacity:.85; margin-top:8px; }
.sec-title { padding:16px 14px 8px; font-size:15px; font-weight:700; color:#333; }
.plist { padding:0 14px; }
.pcard { display:flex; gap:12px; background:#fff; border-radius:12px; padding:10px; margin-bottom:10px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.pc-img { width:72px; height:72px; border-radius:8px; overflow:hidden; background:#f0f0f0; flex:none; display:flex; align-items:center; justify-content:center; color:#ccc; }
.pc-img img { width:100%; height:100%; object-fit:cover; }
.pc-name { font-size:14px; color:#333; line-height:20px; }
.pc-price { color:#ff6600; font-weight:800; margin-top:4px; }

/* ---------- 商品页 ---------- */
.pdt-page { max-width:640px; margin:0 auto; padding-bottom:78px; }
.pdt-gallery { position:relative; background:#e9eaec; }
.pdt-frame { position:relative; padding-top:100%; }
.pdt-frame img { position:absolute; left:0; top:0; width:100%; height:100%; object-fit:cover; }
.pdt-noimg { position:absolute; left:0; top:0; width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:#ccc; }
.sold-mask { position:absolute; inset:0; background:rgba(0,0,0,.55); display:flex; align-items:center; justify-content:center; }
.sold-mask span { display:flex; align-items:center; gap:6px; background:#fff; color:#d33; font-weight:800; padding:8px 18px; border-radius:20px; font-size:15px; }
/* 价格卡 */
.pd-pricecard { background:#fff; padding:14px; border-bottom:1px solid #f0f0f0; }
.pd-price { font-size:30px; font-weight:800; color:#f2451c; line-height:1; letter-spacing:-.5px; }
.pd-price em { font-size:17px; font-style:normal; font-weight:700; margin-right:2px; }
.pd-name { font-size:17px; font-weight:600; line-height:1.45; margin-top:10px; color:#222; }
.pd-meta { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:10px; font-size:12px; color:#999; }
.pd-tag { background:#fff1e8; color:#e2591a; border-radius:4px; padding:2px 7px; font-size:11px; }
.pd-tag.gray { background:#f2f3f5; color:#888; }
.pd-no { font-size:11px; color:#aaa; }
/* 卖家卡 */
.pd-shop { display:flex; align-items:center; padding:14px; background:#fff; margin-top:8px; }
.pd-shop-av { width:46px; height:46px; border-radius:50%; overflow:hidden; flex:none; }
.pd-shop-av .shop-av { width:46px; height:46px; }
.pd-shop-av svg { display:block; border-radius:50%; }
.pd-shop-info { margin-left:12px; flex:1; min-width:0; }
.pd-shop-name { font-size:14px; font-weight:600; color:#222; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pd-shop-sub { font-size:12px; color:#999; margin-top:3px; }
/* 通用块 */
.pd-block { background:#fff; margin-top:8px; padding:14px; }
.pd-btitle { font-size:14px; font-weight:600; margin-bottom:10px; display:flex; align-items:center; gap:6px; color:#222; }
.pd-btitle:before { content:''; width:3px; height:14px; background:#ff6600; border-radius:2px; }
.pd-row { display:flex; font-size:13px; color:#444; line-height:1.7; padding:7px 0; border-bottom:1px dashed #f0f0f0; }
.pd-row:last-child { border-bottom:0; }
.pd-row span { width:78px; color:#999; flex-shrink:0; }
.pd-desc { font-size:13px; line-height:1.75; color:#444; white-space:pre-line; word-break:break-word; }
.pd-notice-item { display:flex; gap:8px; font-size:12px; color:#666; line-height:1.65; margin-bottom:8px; }
.pd-notice-item:last-child { margin-bottom:0; }
.pd-notice-item .pd-no { width:16px; height:16px; border-radius:50%; background:#f2f3f5; color:#888; font-size:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; margin-top:1px; }
/* 卖场其他商品 */
.pd-others { display:flex; gap:10px; overflow-x:auto; padding-bottom:2px; }
.pd-other { width:104px; flex-shrink:0; }
.pd-other-img { width:104px; height:104px; border-radius:6px; overflow:hidden; background:#f0f1f3; border:1px solid #ebedef; display:flex; align-items:center; justify-content:center; color:#ccc; }
.pd-other-img img { width:100%; height:100%; object-fit:cover; }
.pd-other-name { font-size:11px; color:#444; margin-top:5px; line-height:1.4; height:2.8em; overflow:hidden; }
.pd-other-price { font-size:13px; font-weight:700; color:#f2451c; margin-top:3px; }
.pd-tip { text-align:center; font-size:11px; color:#aaa; padding:14px 0 6px; }
/* 底部固定按钮 */
.pdt-fixbar { position:fixed; left:0; right:0; bottom:0; z-index:30; display:flex; gap:10px; background:#fff; border-top:1px solid #eee; padding:10px 14px calc(10px + env(safe-area-inset-bottom)); max-width:640px; margin:0 auto; }
.pdt-fix-buy { flex:1; height:42px; border-radius:22px; background:linear-gradient(90deg,#ff8a1e,#ff5f1f); color:#fff; font-size:15px; font-weight:700; display:flex; align-items:center; justify-content:center; gap:5px; }

/* ---------- 弹窗 ---------- */
.mask { position:fixed; inset:0; background:rgba(0,0,0,.5); z-index:50; display:flex; align-items:center; justify-content:center; padding:24px; }
.mask-card { background:#fff; border-radius:16px; padding:24px 20px; width:100%; max-width:340px; text-align:center; }
.mc-ico { color:#ff6600; margin-bottom:10px; }
.mc-text { font-size:15px; line-height:24px; color:#333; margin-bottom:18px; }
.pop-btns { display:flex; gap:10px; margin-bottom:4px; }
.pop-btns .btn-ghost { border:1px solid #ddd; border-radius:24px; flex:1; color:#666; padding:11px 0; }
.pop-btns .btn-main { flex:1; }

/* ---------- 下单流程 ---------- */
.od-item { display:flex; gap:10px; background:#fff; padding:12px 14px; align-items:center; border-bottom:1px solid #f0f0f0; }
.od-thumb { width:52px; height:52px; border-radius:8px; background:#f0f0f0; overflow:hidden; flex:none; display:flex; align-items:center; justify-content:center; color:#ccc; }
.od-thumb.sm { width:40px; height:40px; }
.od-thumb img { width:100%; height:100%; object-fit:cover; }
.od-name { font-size:13px; color:#333; }
.od-price { color:#ff6600; font-weight:800; font-size:14px; margin-top:3px; }
.od-total { display:flex; justify-content:space-between; align-items:center; font-size:14px; color:#555; border-top:1px dashed #eee; padding-top:12px; margin-top:12px; }
.od-total b { color:#ff6600; font-size:18px; }
.form-card { background:#fff; border-radius:12px; padding:16px; margin:12px 14px; box-shadow:0 1px 3px rgba(0,0,0,.05); }
.form-card label { font-size:13px; color:#666; display:block; margin:12px 0 6px; }
.form-card label:first-child, .form-card h3 + form label:first-child { margin-top:0; }
.form-card input, .form-card textarea, .form-card select { width:100%; border:1px solid #ddd; border-radius:8px; padding:10px 11px; font-size:14px; font-family:inherit; }
.form-card select { -webkit-appearance:none; appearance:none; padding-right:34px; background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5l5-5' fill='none' stroke='%23888' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 13px center; }
.form-card button[type=submit], .form-card .btn-main { margin-top:16px; }
.kv { display:flex; justify-content:space-between; font-size:13px; color:#666; margin-bottom:8px; }
.kv b { color:#222; max-width:60%; text-align:right; font-weight:600; }
.radio-group { display:flex; flex-wrap:wrap; gap:8px; }
.radio { display:flex; align-items:center; gap:6px; border:1px solid #ddd; border-radius:8px; padding:8px 12px; font-size:13px; color:#555; cursor:pointer; }
.radio input { display:none; }
.radio span { width:16px; height:16px; border-radius:50%; border:2px solid #ccc; }
.radio input:checked + span { border-color:#ff6600; background:radial-gradient(circle, #ff6600 45%, transparent 50%); }
.radio:has(input:checked) { border-color:#ff6600; color:#ff6600; background:#fff7f1; }
.notice { background:#fff8e6; border:1px solid #ffe1a8; border-radius:8px; padding:10px 12px; font-size:12px; color:#9a6b00; line-height:19px; margin-top:8px; }
.pay-block { text-align:center; padding:8px 0 4px; }
.pb-title { display:flex; align-items:center; justify-content:center; gap:6px; font-size:15px; font-weight:700; color:#007b4b; margin-bottom:8px; }
.pb-desc { font-size:13px; color:#888; line-height:20px; margin-bottom:14px; }
.pb-info { background:#f0f6ff; border:1px solid #c9defb; border-radius:8px; padding:12px; font-size:14px; color:#1a3d7c; line-height:22px; text-align:left; margin-bottom:10px; }

/* ---------- 聊天 ---------- */
.chat-body { padding-bottom:0; }
.chat-item-bar { display:flex; gap:10px; align-items:center; background:#fff; padding:10px 14px; border-bottom:1px solid #f0f0f0; }
.chat-list { padding:14px; overflow-y:auto; height:calc(100vh - 178px); }
.msg-row { display:flex; gap:8px; margin-bottom:14px; align-items:flex-start; }
.msg-row.me { flex-direction:row-reverse; }
.msg-av { flex:none; }
.bubble { max-width:72%; background:#fff; border-radius:14px; padding:10px 12px; font-size:14px; line-height:21px; color:#333; box-shadow:0 1px 2px rgba(0,0,0,.05); word-break:break-word; }
.msg-row.me .bubble { background:#ffeeda; }
.msg-time { font-size:10px; color:#bbb; margin-top:4px; text-align:right; }
.chat-input { position:fixed; bottom:0; left:0; right:0; background:#fff; border-top:1px solid #eee; padding:10px 14px; display:flex; gap:8px; }
.chat-input input { flex:1; border:1px solid #e0e0e0; border-radius:22px; padding:10px 14px; font-size:14px; outline:none; }
.chat-input button { width:44px; height:44px; border-radius:50%; background:#ff6600; color:#fff; border:none; display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; }

/* ---------- 后台 ---------- */
.admin-body { padding:14px 14px 20px; max-width:640px; margin:0 auto; }
.login-box { background:#fff; border-radius:16px; padding:28px 22px; max-width:360px; margin:12vh auto 0; box-shadow:0 8px 30px rgba(0,0,0,.08); }
.lb-title { font-size:19px; font-weight:800; color:#007b4b; margin-bottom:16px; text-align:center; }
.login-box input { width:100%; border:1px solid #ddd; border-radius:10px; padding:12px; font-size:15px; margin-bottom:14px; }
.acard { background:#fff; border-radius:12px; padding:14px; margin-bottom:12px; box-shadow:0 1px 3px rgba(0,0,0,.05); }
.ac-head { display:flex; gap:10px; align-items:center; }
.ac-thumb { width:48px; height:48px; border-radius:8px; background:#f0f0f0; overflow:hidden; flex:none; display:flex; align-items:center; justify-content:center; color:#ccc; }
.ac-thumb img { width:100%; height:100%; object-fit:cover; }
.ac-info { flex:1; min-width:0; }
.ac-name { font-size:14px; font-weight:700; color:#333; }
.ac-meta { font-size:11px; color:#999; margin-top:3px; }
.st-tag { color:#fff; font-size:11px; border-radius:10px; padding:3px 9px; flex:none; }
.ac-acts { display:flex; flex-wrap:wrap; gap:4px; border-top:1px solid #f0f0f0; margin-top:12px; padding-top:10px; }
.ac-acts a { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:#007b4b; background:#f0faf5; border-radius:14px; padding:5px 11px; }
.rec-row { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-top:1px solid #f5f5f5; }
.rec-ip { font-size:12px; color:#888; font-family:monospace; }
.rec-steps { display:flex; gap:4px; flex-wrap:wrap; justify-content:flex-end; }
.rec-step { font-size:10px; color:#bbb; background:#f5f5f5; border-radius:8px; padding:2px 7px; }
.rec-step.on { color:#fff; background:#00a862; }
.rec-info { background:#fafafa; border-radius:8px; padding:8px 10px; margin-top:6px; }
.ri-line { display:flex; gap:8px; font-size:12px; line-height:20px; }
.ri-line span { color:#999; flex:none; }
.ri-line b { color:#333; font-weight:500; word-break:break-all; }

/* 商品记录：顶部操作栏 + 单条卡片 */
.rec-bar { display:flex; gap:10px; margin-bottom:12px; }
.rec-bar .rec-clear { flex:1; display:flex; align-items:center; justify-content:center; gap:5px; width:auto; background:#fff; border:1px solid #f0caca; border-radius:24px; color:#d33; font-size:13px; padding:11px 0; }
.rec-bar .rec-auto { flex:1; background:#fff; border:1px solid #e5e5e5; border-radius:24px; color:#666; font-size:13px; padding:11px 0; cursor:pointer; }
.rec-bar .rec-auto.on { background:#e8f6ef; border-color:#bfe6d2; color:#007b4b; font-weight:600; }
.rc-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.rec-del { font-size:12px; color:#d33; text-decoration:none; flex:none; }
.rc-prod { font-size:13px; color:#333; margin-bottom:2px; }
.rc-pid { font-size:11px; color:#aaa; font-family:monospace; }
.rc-lbl { font-size:12px; color:#999; flex:none; }
.rec-card .rec-row { margin-top:4px; }

/* ---------- 后台对话 ---------- */
.chat-card { display:flex; gap:10px; background:#fff; border-radius:12px; padding:12px; margin-bottom:10px; align-items:center; box-shadow:0 1px 3px rgba(0,0,0,.05); position:relative; }
.cc-body { flex:1; min-width:0; }
.cc-name { font-size:14px; font-weight:700; font-family:monospace; }
.cc-last { font-size:12px; color:#888; margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cc-prod { font-size:11px; color:#ff6600; margin-top:3px; }
.badge { background:#ff3b30; color:#fff; font-size:11px; border-radius:10px; padding:2px 8px; font-weight:700; }
.cv-head { display:flex; align-items:center; gap:8px; background:#fff; border-radius:12px; padding:10px 14px; margin-bottom:12px; }
.cv-head b { font-family:monospace; flex:1; }
.cv-simp { font-size:12px; color:#007b4b; background:#f0faf5; border-radius:14px; padding:6px 12px; }
.admin-chat { height:auto; max-height:52vh; background:#fff; border-radius:12px; }
.cv-reply { background:#fff; border-radius:12px; padding:12px; }
.cv-avpick { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.cv-avlabel { font-size:12px; color:#888; }
.av-opt { border-radius:50%; padding:2px; border:2px solid transparent; display:flex; }
.av-opt.on { border-color:#ff6600; }
.cv-inputrow { display:flex; gap:8px; }
.cv-inputrow input { flex:1; border:1px solid #e0e0e0; border-radius:22px; padding:10px 14px; font-size:14px; outline:none; }

/* 后台主页：网站介绍名片 */
.pfcard { background:#fff; border-radius:12px; padding:18px 14px; margin-bottom:14px; }
.pf-head { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.pf-avatar { flex:0 0 auto; }
.pf-name { font-size:20px; font-weight:700; color:#222; }
.pf-sub { font-size:12px; color:#999; margin-top:2px; }
.pf-bio { font-size:14px; color:#444; line-height:1.8; background:#f8f8f8; border-radius:10px; padding:12px; margin-bottom:14px; min-height:44px; }
.pf-stats { display:flex; border-top:1px solid #f0f0f0; padding-top:12px; margin-bottom:14px; }
.pf-stat { flex:1; text-align:center; }
.pf-stat b { display:block; font-size:18px; color:#ff6600; }
.pf-stat span { font-size:11px; color:#999; }
.pf-stat + .pf-stat { border-left:1px solid #f0f0f0; }

/* 后台主页：动态颗粒 hero */
.pfhero { position:relative; border-radius:14px; overflow:hidden; margin-bottom:14px; background:linear-gradient(135deg,#2b1055 0%,#7597de 55%,#ff7a18 130%); }
#pfCanvas { position:absolute; left:0; top:0; width:100%; height:100%; }
.pf-inner { position:relative; z-index:1; padding:22px 16px 18px; }
.pfhero .pf-head { margin-bottom:14px; }
.pfhero .pf-name { color:#fff; text-shadow:0 1px 6px rgba(0,0,0,.35); }
.pfhero .pf-sub { color:rgba(255,255,255,.75); }
.pf-bio2 { font-size:14px; color:#fff; line-height:1.8; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.18); border-radius:10px; padding:12px; min-height:44px; backdrop-filter:blur(2px); }
.pfcard .pf-stats { border-top:none; padding-top:0; margin-bottom:12px; }

/* 前端顶部品牌栏（仿賣貨便） */
.fbrand { position:sticky; top:0; z-index:20; display:flex; align-items:center; gap:8px; background:#fff; padding:11px 14px; border-bottom:1px solid #eee; }
.fbrand-back { display:inline-flex; align-items:center; color:#333; margin-left:-4px; }
.fbrand-logo { display:inline-flex; align-items:baseline; gap:10px; cursor:default; user-select:none; -webkit-user-select:none; line-height:1; }
.fbrand-711 { font-family:"Arial Black",Arial,Helvetica,sans-serif; font-weight:900; font-size:18px; color:#00803e; letter-spacing:-.4px; }
.fbrand-mhb { display:inline-block; font-family:"Microsoft JhengHei","PingFang TC","Noto Sans TC",sans-serif; font-weight:900; font-size:17px; color:#ff5f1f; letter-spacing:1px; transform:skewX(-6deg); text-shadow:1px 1px 0 rgba(190,70,10,.3); }
.fbrand-shop { margin-left:auto; font-size:13px; color:#777; max-width:42%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-decoration:none; }
.fbrand-shop:active { color:#f26b21; }

/* 后台底部导航切换：仅内容区淡出淡入，背景不动 */
#admBody { position:relative; z-index:1; transition:opacity .18s ease; }
#admBody.adm-loading { opacity:.45; }
.stepbar { background:#fff; padding:9px 14px 0; }
.stepbar-title { text-align:center; font-size:14px; font-weight:600; color:#333; margin-bottom:9px; }

/* 客服中心（前端对话页） */
body.chat-body { display:flex; flex-direction:column; height:100vh; padding-bottom:0; overflow:hidden; }
body.chat-body .chat-list { flex:1; min-height:0; height:auto; overflow-y:auto; padding-top:10px; }
body.chat-body .chat-input { position:static; flex:none; width:100%; max-width:none; margin:0; padding:10px 14px calc(10px + env(safe-area-inset-bottom)); border-top:1px solid #eee; }
.cs-assign { flex:none; text-align:center; padding:16px 14px 4px; }
.cs-assign-av { display:flex; justify-content:center; margin-bottom:8px; }
.cs-assign-av svg, .cs-assign-av .msg-av-img { width:64px; height:64px; border-radius:50%; object-fit:cover; display:block; }
.cs-assign-note { font-size:12px; color:#999; line-height:18px; }
.cs-assign-note b { color:#333; font-weight:600; }

/* 商品图片：多图上传 + 前端图册 */
.up-grid { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:8px; }
.up-cell { position:relative; width:88px; height:88px; border-radius:10px; overflow:hidden; border:1px solid #eee; background:#f7f7f7; }
.up-cell img { width:100%; height:100%; object-fit:cover; display:block; }
.up-del { position:absolute; top:4px; right:4px; width:20px; height:20px; line-height:19px; text-align:center; border-radius:50%; background:rgba(0,0,0,.55); color:#fff; font-size:15px; cursor:pointer; }
.up-add { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; width:88px; height:88px; border:1.5px dashed #d5d5d5; border-radius:10px; color:#999; font-size:11px; cursor:pointer; background:#fafafa; }
.up-add:hover { border-color:#ff6600; color:#ff6600; }
.up-file { display:none; }
.up-tip { font-size:11px; color:#aaa; margin-bottom:12px; }
.pdt-thumbs { display:flex; gap:8px; overflow-x:auto; padding:10px 14px; background:#fff; border-bottom:1px solid #eee; }
.pdt-thumb { flex:0 0 auto; width:56px; height:56px; border-radius:8px; overflow:hidden; border:2px solid transparent; padding:0; background:#f5f5f5; cursor:pointer; }
.pdt-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.pdt-thumb.on { border-color:#ff6600; }

/* 后台首页：全屏动漫人物 + 动态颗粒背景 */
body.has-bg { background:#1b1235; }
.homebg { position:fixed; left:0; right:0; top:0; bottom:0; z-index:0; }
.homebg-img { position:absolute; left:0; right:0; top:0; bottom:0; background:url(bg_sad.jpg) center 25%/cover no-repeat; }
.homebg-img:after { content:''; position:absolute; left:0; right:0; top:0; bottom:0; }
.homebg-vid { position:absolute; left:0; top:0; width:100%; height:100%; object-fit:cover; object-position:center 25%; }
.homebg-shade { position:absolute; left:0; right:0; top:0; bottom:0; background:linear-gradient(180deg,rgba(20,12,45,.35) 0%,rgba(20,12,45,.05) 40%,rgba(20,12,45,.45) 100%); }
.homebg #pfCanvas { position:absolute; left:0; top:0; width:100%; height:100%; }
/* 后台首页：语录自由漂浮（位置与动画由 JS 控制） */
body.m-home .admin-body { padding:0; max-width:none; }
body.has-bg .admin-body { position:relative; z-index:1; }
body.has-bg .empty { color:rgba(255,255,255,.65); }
body.has-bg .topbar { background:rgba(20,12,45,.45); border-bottom:none; backdrop-filter:blur(6px); }
body.has-bg .tb-title { color:#fff; }
body.has-bg .tb-right { color:rgba(255,255,255,.75); }
body.has-bg .tabbar { background:rgba(20,12,45,.6); border-top:1px solid rgba(255,255,255,.12); backdrop-filter:blur(8px); }
body.has-bg .tabbar a { color:rgba(255,255,255,.65); }
body.has-bg .tabbar a.on { color:#ffb37c; }

/* ---------- 后台：资料修改（点击上传头像 / 背景图） ---------- */
.pf-note { font-size:12px; color:#8a94a6; line-height:1.7; margin-bottom:8px; }
.form-card label.cover-box { position:relative; display:block; height:120px; margin:0 0 4px; border:1.5px dashed #d5d5d5; border-radius:12px; background:#fafafa; overflow:hidden; cursor:pointer; }
.form-card label.cover-box:hover { border-color:#ff6600; }
.cover-box > img { position:absolute; left:0; top:0; width:100%; height:100%; object-fit:cover; }
.cover-box .up-ph { position:absolute; left:0; top:0; width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:#999; }
.cover-box .up-ph em { font-style:normal; font-size:12px; }
.form-card label.av-box { position:relative; display:inline-flex; align-items:center; justify-content:center; width:76px; height:76px; margin:0; border:2px dashed #d5d5d5; border-radius:50%; background:#fafafa; overflow:hidden; cursor:pointer; }
.form-card label.av-box:hover { border-color:#ff6600; }
.av-box img { width:76px; height:76px; object-fit:cover; display:block; }
.av-box span svg { display:block; }
.form-card label.del-chk { display:flex; align-items:center; gap:6px; margin:8px 0 0; font-size:12px; color:#999; }
.form-card .del-chk input { width:16px; height:16px; padding:0; margin:0; flex:none; }
.form-card label.sub-lbl { font-size:12px; color:#8a94a6; margin:10px 0 4px; }
.pay-tip { font-size:11px; color:#aaa; margin:6px 0 4px; }
.pay-cfg-card { text-align:left; max-height:80vh; overflow-y:auto; }
.pay-cfg-card .pc-title { font-size:16px; font-weight:700; color:#222; margin-bottom:6px; }
.pay-cfg-card .pop-btns { margin-top:14px; margin-bottom:0; }

/* ---------- 资料修改入口（客服修改 / 前端修改） ---------- */
.pf-choice { max-width:420px; margin:26px auto; background:#fff; border-radius:16px; padding:22px 20px; box-shadow:0 8px 30px rgba(0,0,0,.12); }
.pf-choice-t { font-size:17px; font-weight:700; color:#222; }
.pf-choice-sub { font-size:12px; color:#999; margin:4px 0 16px; }
.pf-opt { display:block; border:1px solid #eee; border-radius:12px; padding:14px; margin-bottom:10px; text-decoration:none; }
.pf-opt b { display:block; font-size:15px; color:#007b4b; margin-bottom:4px; }
.pf-opt span { font-size:12px; color:#999; line-height:1.6; }
.pf-opt:active { background:#f7f7f7; }
.pf-back { display:inline-block; font-size:13px; color:#888; text-decoration:none; margin-bottom:8px; }
.sv-preview { display:flex; align-items:center; gap:10px; margin-top:12px; background:#fafafa; border-radius:10px; padding:10px 12px; }
.sv-preview-l { font-size:12px; color:#999; flex:none; }
.sv-preview-v { display:flex; align-items:center; gap:5px; font-size:13px; color:#333; }
.sv-title { display:inline-block; font-size:10px; line-height:16px; color:#ff6600; background:#fff3e6; border:1px solid #ffd8b0; border-radius:8px; padding:0 6px; font-weight:500; }

/* ---------- 拉黑记录 ---------- */
.bl-row { display:flex; align-items:center; justify-content:space-between; gap:10px; border-top:1px solid #f2f2f2; padding:10px 0; }
.bl-info { display:flex; flex-direction:column; gap:2px; min-width:0; }
.bl-time { font-size:11px; color:#aaa; }
.bl-unblock { flex:none; font-size:12px; color:#007b4b; background:#f0faf5; border-radius:14px; padding:5px 12px; text-decoration:none; }

/* ---------- 对话中心：顶部四个功能 ---------- */
.chat-tools { display:flex; gap:6px; margin-bottom:12px; }
.ct-btn { flex:1; background:#fff; border:1px solid #e5e5e5; border-radius:18px; color:#666; font-size:12px; padding:9px 0; text-align:center; text-decoration:none; cursor:pointer; font-family:inherit; white-space:nowrap; }
.ct-btn.on { background:#e8f6ef; border-color:#bfe6d2; color:#007b4b; font-weight:600; }
.ct-btn.danger { background:#ffecec; border-color:#f5bcbc; color:#d33; font-weight:600; }
.chat-batch .chat-card { outline:1px dashed #ffc39a; }
.cc-chk { flex:none; display:flex; align-items:center; padding-right:2px; }
.cc-chk input { width:18px; height:18px; margin:0; accent-color:#ff6600; }

/* ---------- 后台聊天：气泡方向 / 客服署名 ---------- */
.admin-chat .msg-row.me { flex-direction:row; justify-content:flex-end; }
.msg-col { display:flex; flex-direction:column; align-items:flex-end; max-width:76%; }
.msg-col .bubble { max-width:100%; }
.msg-sender { display:flex; align-items:center; gap:4px; font-size:11px; color:#999; margin-bottom:3px; }
.msg-sender b { font-weight:600; color:#555; }
.msg-av-img { border-radius:50%; object-fit:cover; display:block; }

/* ---------- 全屏聊天窗 ---------- */
body.m-chatview { background:#ededed; }
body.m-chatview .homebg, body.m-chatview .tabbar, body.m-chatview .topbar { display:none; }
body.m-chatview .admin-body { padding:0; max-width:none; }
.cv-full { position:fixed; left:0; top:0; right:0; bottom:0; z-index:30; display:flex; flex-direction:column; background:#ededed; }
.cv-bar { flex:none; display:flex; align-items:center; gap:10px; padding:10px 12px; background:#f7f7f7; border-bottom:1px solid #e3e3e3; }
.cv-back { font-size:26px; line-height:1; color:#333; text-decoration:none; padding:0 4px; }
.cv-who { flex:1; display:flex; align-items:center; gap:6px; min-width:0; }
.cv-who-av { display:flex; flex:none; }
.cv-who b { font-size:14px; font-family:monospace; color:#222; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cv-full .admin-chat.cv-scroll { flex:1; height:auto; max-height:none; overflow-y:auto; padding:14px 12px; background:#ededed; border-radius:0; }
.cv-reply-full { flex:none; background:#f7f7f7; border-top:1px solid #e3e3e3; border-radius:0; padding:8px 10px calc(8px + env(safe-area-inset-bottom)); }
.cv-bar-right { display:flex; align-items:center; gap:6px; flex:none; }
.cv-block { font-size:12px; color:#d33; background:#fff0f0; border:1px solid #ffd0d0; border-radius:14px; padding:6px 12px; cursor:pointer; font-family:inherit; }

/* ---------- 聊天图片 ---------- */
.chat-img { max-width:180px; max-height:240px; border-radius:10px; display:block; }
/* 訂單確認卡片（左圖 + 右側標題/金額/號碼/地址） */
.bubble-order { display:flex; gap:8px; align-items:flex-start; padding:8px; max-width:78%; }
.od-mini-thumb { flex:none; width:56px; height:56px; border-radius:8px; overflow:hidden; background:#f2f3f5; }
.od-mini-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.od-mini-info { flex:1; min-width:0; font-size:12px; line-height:18px; color:#333; }
.od-mini-name { font-size:13px; font-weight:600; color:#222; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.od-mini-kv { font-size:12px; color:#444; word-break:break-all; }
.od-mini-kv span { color:#999; margin-right:4px; }
.od-quick { display:flex; gap:8px; margin:-4px 0 14px 38px; }
.od-quick button { flex:1; min-width:0; font-family:inherit; font-size:12px; line-height:16px; color:#ff6600; background:#fff; border:1px solid #ffd2b0; border-radius:16px; padding:8px 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer; }
.bubble-img { padding:4px; }
.bubble-txt { word-break:break-word; }
.chat-imgbtn { width:38px; height:38px; border-radius:50%; background:#f2f3f5; color:#666; border:none; display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; padding:0; }
.chat-input { flex-wrap:wrap; }
.chat-input .chat-imgbtn { background:#f2f3f5; color:#666; }
.cv-imgbtn { width:38px; height:38px; border-radius:50%; background:#fff; color:#666; border:1px solid #e0e0e0; display:flex; align-items:center; justify-content:center; cursor:pointer; flex:none; padding:0; }
.cv-imgprev, .chat-imgprev { position:relative; display:inline-block; margin-bottom:6px; }
.chat-imgprev { flex-basis:100%; margin:0 0 6px; }
.cv-imgprev img, .chat-imgprev img { max-height:70px; max-width:120px; border-radius:8px; display:block; }
.cv-imgprev button, .chat-imgprev button { position:absolute; top:-6px; right:-6px; width:20px; height:20px; border-radius:50%; border:none; background:rgba(0,0,0,.6); color:#fff; font-size:12px; line-height:1; cursor:pointer; }
.chat-imgprev button { left:auto; }

