/* ============ BoxOrder · 像素方块风 V15 ============ */
:root{
  --brand:#3b5bff; --brand-d:#2a44d4; --brand-soft:#e6ebff;
  --bg:#f4f0e6; --card:#fffdf7; --line:#2b2b3a; --line-2:#e4ddc9;
  --txt:#1f2030; --sub:#6b6b7d; --faint:#a09e92;
  --green:#3fa34d; --green-soft:#e2f3e4;
  --orange:#e08a2e; --orange-soft:#fbeedd;
  --red:#e0463a; --red-soft:#fbe5e3;
  --pixel-grass:#5d9c3c; --pixel-dirt:#8b5a2b; --pixel-stone:#7a7a8a;
  --radius:4px; --radius-sm:3px;
  --shadow:3px 3px 0 rgba(31,32,48,.13);
  --shadow-lg:5px 5px 0 rgba(31,32,48,.18);
  --px-border:2px solid var(--line);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  background:#cfc8b8;color:var(--txt);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;
  overflow:hidden}
.hidden{display:none!important}
a{color:var(--brand);text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3{font-weight:650}

/* ---------- 手机外壳（电脑端呈现一部手机） ---------- */
.phone-stage{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px;
  background:
    linear-gradient(rgba(31,32,48,.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(31,32,48,.04) 1px,transparent 1px),
    radial-gradient(900px 500px at 50% -8%,#e8e2d2 0%,#cfc8b8 60%);
  background-size:24px 24px,24px 24px,100% 100%}
.phone-device{width:392px;height:848px;max-height:96vh;background:#0c0e13;border-radius:52px;padding:10px;
  box-shadow:0 0 0 2px #2a2e3a,0 24px 70px rgba(20,24,40,.45),inset 0 0 3px rgba(255,255,255,.18);position:relative;flex-shrink:0}
.phone-screen{width:100%;height:100%;border-radius:42px;overflow:hidden;background:var(--bg);position:relative;
  display:flex;flex-direction:column}
.status-bar{flex-shrink:0;height:34px;display:flex;align-items:center;justify-content:space-between;
  padding:0 26px 0 28px;font-size:13px;font-weight:600;color:var(--txt);z-index:20}
.status-bar .sb-icons{display:flex;align-items:center;gap:5px;color:var(--txt)}

/* ---------- 顶部 App 栏（豆包式大标题） ---------- */
.app-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:6px 14px 12px;
  background:var(--bg);z-index:15}
.ah-left{display:flex;align-items:center;gap:2px;min-width:0}
.ah-title{font-size:21px;font-weight:750;letter-spacing:-.4px}
.ah-back{width:34px;height:34px;border:none;background:transparent;border-radius:3px;display:flex;align-items:center;
  justify-content:center;color:var(--txt);cursor:pointer;margin-left:-6px;font-family:inherit}
.ah-back:active{background:var(--line-2)}
.ah-right{display:flex;align-items:center;gap:8px}
.ah-icon{width:37px;height:37px;border:2px solid var(--line);border-radius:3px;background:var(--card);color:var(--txt);display:flex;
  align-items:center;justify-content:center;cursor:pointer;box-shadow:2px 2px 0 var(--line);font-family:inherit;position:relative}
.ah-icon:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}

/* ---------- 内容滚动区 ---------- */
.view{flex:1;overflow-y:auto;overflow-x:hidden;padding:4px 14px 22px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.view::-webkit-scrollbar{display:none}
.page-head{margin:2px 2px 14px}
.page-head h1{display:none}
.page-head p{color:var(--sub);font-size:13px;margin-top:3px}

/* ---------- 底部 TabBar（像素物品栏风） ---------- */
.tabbar{flex-shrink:0;display:flex;background:#fffdf7;
  border-top:3px solid var(--line);padding:6px 8px calc(8px + env(safe-area-inset-bottom));z-index:30}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--faint);
  font-size:11px;font-weight:600;cursor:pointer;transition:.08s;padding-top:4px;border-radius:3px}
.tabbar a.active{color:var(--brand)}
.tabbar a.tab-center .tab-add{width:48px;height:48px;border-radius:3px;background:var(--brand);
  display:flex;align-items:center;justify-content:center;margin-top:-22px;
  border:2px solid var(--line);box-shadow:3px 3px 0 var(--line)}
.tabbar a.tab-center.active{color:var(--brand)}
.tabbar a.tab-center:active .tab-add{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}

/* ---------- 通用组件（像素方块风） ---------- */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:15px;margin-bottom:12px;
  border:var(--px-border)}
.card h2.sec{font-size:15px;margin-bottom:13px;display:flex;align-items:center;gap:7px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:100%;border:2px solid var(--line);
  border-radius:var(--radius);padding:12px 16px;font-size:15px;font-weight:700;font-family:inherit;
  background:var(--brand);color:#fff;cursor:pointer;transition:.08s;letter-spacing:.3px;
  box-shadow:3px 3px 0 var(--line);position:relative}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line);background:var(--brand-d)}
.btn.ghost{background:#ece7da;color:var(--txt)}
.btn.green{background:var(--green)}
.btn.gray{background:#ece7da;color:var(--sub)}
.btn.line{background:#fffdf7;border:2px solid var(--line);color:var(--txt)}
.btn.sm{width:auto;padding:7px 14px;font-size:13px;border-radius:var(--radius-sm);box-shadow:2px 2px 0 var(--line)}
.row{display:flex;gap:10px;align-items:center}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.muted{color:var(--sub);font-size:13px}
.faint{color:var(--faint);font-size:12px}
.tag{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;padding:3px 9px;border-radius:var(--radius-sm);
  background:#ece7da;color:var(--sub);font-weight:600;white-space:nowrap;border:1.5px solid var(--line-2)}
.tag.blue{background:var(--brand-soft);color:var(--brand);border-color:#b8c4ff}
.tag.green{background:var(--green-soft);color:var(--green);border-color:#a8d8b0}
.tag.orange{background:var(--orange-soft);color:var(--orange);border-color:#ecc89a}
.tag.red{background:var(--red-soft);color:var(--red);border-color:#f0b0aa}
.tag.violet{background:#f1edff;color:#6d4de0;border-color:#c8b8f0}
input,select,textarea{width:100%;border:2px solid var(--line);border-radius:var(--radius-sm);padding:11px 13px;font-size:15px;
  background:#f7f4ec;font-family:inherit;outline:none;transition:.08s;color:var(--txt)}
input:focus,select:focus,textarea:focus{border-color:var(--brand);background:#fffdf7;box-shadow:inset 2px 2px 0 rgba(59,91,255,.08)}
input::placeholder,textarea::placeholder{color:var(--faint)}
label.fld{display:block;margin-bottom:14px}
label.fld>.lb{font-size:13px;color:#4a4f5e;margin-bottom:7px;display:block;font-weight:700}
.seg{display:flex;background:#e4ddc9;border:2px solid var(--line);border-radius:var(--radius-sm);padding:3px;margin-bottom:16px;gap:3px}
.seg button{flex:1;border:none;background:transparent;padding:9px;border-radius:2px;font-size:14px;
  color:var(--sub);cursor:pointer;font-weight:600;font-family:inherit;transition:.08s}
.seg button.on{background:var(--brand);font-weight:700;color:#fff;box-shadow:2px 2px 0 rgba(0,0,0,.2)}
.switch{display:flex;align-items:center;justify-content:space-between;padding:11px 0;gap:12px}
.switch .sw-txt{font-size:14px}.switch .sw-sub{font-size:12px;color:var(--sub)}
.switch input{width:20px;height:20px;accent-color:var(--brand)}
.price{color:var(--red);font-weight:750;letter-spacing:-.3px}
.price.big{font-size:25px}
.thumb{width:100%;height:190px;background:linear-gradient(135deg,#f3f5f9,#e9edf4);border-radius:14px;
  object-fit:cover;margin-bottom:12px}
.kv{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.kv:last-child{border-bottom:none}
.kv .k{color:var(--sub);flex-shrink:0}
.kv .v{text-align:right;font-weight:500}
.empty{text-align:center;color:var(--sub);padding:60px 20px;font-size:14px}
.empty .e-ico{font-size:46px;margin-bottom:12px;opacity:.65}

/* ---------- 登录 / 注册 ---------- */
.auth-page{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 22px;
  background:linear-gradient(165deg,#eef1ff 0%,#f6f7fa 52%)}
.auth-logo{width:62px;height:62px;margin-bottom:16px}
.auth-logo svg,.logo svg{width:100%;height:100%}
.auth-page h1{font-size:23px;letter-spacing:-.4px}
.auth-page .slogan{color:var(--sub);font-size:13.5px;margin:8px 0 26px;text-align:center}
.auth-page .btn{margin-top:6px}
.auth-tip{margin-top:18px;font-size:13px;color:var(--sub);text-align:center;line-height:1.9}

/* ---------- 广场 ---------- */
.feed-item{display:flex;gap:12px;align-items:center;cursor:pointer;transition:.15s}
.feed-item:active{transform:scale(.99)}
.feed-item .fi-img{width:72px;height:72px;border-radius:13px;background:linear-gradient(135deg,#f3f5f9,#e9edf4);
  object-fit:cover;flex-shrink:0}
.feed-item .fi-body{flex:1;min-width:0}
.feed-item h3{font-size:15px;margin-bottom:5px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fi-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.fi-arrow{color:var(--faint);font-size:20px;flex-shrink:0}
.filter-bar{display:flex;gap:8px;overflow-x:auto;padding:2px 0 12px;scrollbar-width:none;margin:0 -14px;padding-left:14px;padding-right:14px}
.filter-bar::-webkit-scrollbar{display:none}
.filter-bar button{border:none;background:#fff;border-radius:20px;padding:7px 15px;font-size:13px;
  white-space:nowrap;cursor:pointer;color:var(--sub);font-family:inherit;box-shadow:var(--shadow);font-weight:550;
  flex-shrink:0;scroll-snap-align:start;transition:transform .12s var(--spring),background .15s var(--spring)}
.filter-bar button:active{transform:scale(.94)}
.filter-bar button.on{background:var(--txt);color:#fff}

/* ---------- 发布（手机内 编辑/预览 切换） ---------- */
.editor-layout{display:block}
.preview-pane{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}
.pf-hint{text-align:center;font-size:12px;color:var(--sub);margin-bottom:11px}
.preview-card-img{width:100%;height:180px;border-radius:14px;background:linear-gradient(135deg,#eef1f8,#e3e8f4);
  display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:13px;margin-bottom:13px;object-fit:cover}
.big-opt{border-radius:var(--radius);padding:22px 18px;text-align:center;cursor:pointer;margin-bottom:12px;
  background:#fff;box-shadow:var(--shadow);transition:.15s}
.big-opt:active{transform:scale(.99)}
.big-opt .ico{font-size:30px}
.big-opt h3{margin:9px 0 5px;font-size:16px}
.big-opt p{font-size:13px;color:var(--sub)}
.dyn-field{display:flex;gap:8px;margin-bottom:9px}
.dyn-field input{flex:1}
.upload-box{position:relative;border:1.5px dashed #d6dae4;border-radius:13px;padding:16px;text-align:center;color:var(--sub);
  font-size:13px;background:#fafbfd;cursor:pointer;margin-bottom:10px;transition:.15s}
.upload-box:active{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.upload-box.has{border-style:solid;border-color:var(--line-2);background:#fff;padding:0;overflow:hidden;color:var(--sub)}
.upload-box.has img{width:100%;height:150px;object-fit:cover;display:block}
.upload-box .ub-mask{position:absolute;left:0;right:0;bottom:0;background:rgba(20,28,48,.55);color:#fff;font-size:11px;padding:4px 0;text-align:center}
.ai-row{display:flex;gap:8px;align-items:center}
.ai-row .upload-box{flex:1;margin:0}

/* ---------- 聊天卡片模拟 ---------- */
.chat-preview{background:#e9edf3;border-radius:16px;padding:15px;margin:12px 0}
.chat-bubble{background:#fff;border-radius:6px 16px 16px 16px;padding:12px;display:flex;gap:11px;
  box-shadow:0 1px 4px rgba(16,24,40,.08)}
.chat-bubble .cb-img{width:56px;height:56px;border-radius:10px;background:#eef1f6;object-fit:cover;flex-shrink:0}
.chat-bubble h4{font-size:14px;margin-bottom:4px}
.chat-bubble .cb-line{font-size:12px;color:var(--sub);margin-top:2px}
.link-box{background:#f7f9fc;border:1.5px dashed #d6dae4;border-radius:12px;padding:11px 12px;font-size:12px;
  color:var(--sub);word-break:break-all;display:flex;gap:8px;align-items:center}

/* ---------- 订单步骤条 ---------- */
.status-flow{display:flex;align-items:center;margin:16px 0 8px}
.status-flow .stp{display:flex;flex-direction:column;align-items:center;flex:1;position:relative;font-size:10.5px;color:var(--faint)}
.status-flow .stp .dot{width:25px;height:25px;border-radius:50%;background:#eceef3;color:var(--faint);
  display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;margin-bottom:5px;z-index:2}
.status-flow .stp::before{content:"";position:absolute;top:12px;left:-50%;width:100%;height:2.5px;background:#eceef3;z-index:1}
.status-flow .stp:first-child::before{display:none}
.status-flow .stp.on{color:var(--green);font-weight:650}
.status-flow .stp.on .dot{background:var(--green);color:#fff}
.status-flow .stp.on::before{background:var(--green)}

/* ---------- BoxBot 吉祥物步骤条 ---------- */
.bb-steps{display:flex;align-items:flex-start;justify-content:space-between;margin:14px 0 10px;position:relative;padding:0 4px}
.bb-steps::before{content:'';position:absolute;top:20px;left:12%;right:12%;height:3px;background:#d8dce4;z-index:0}
.bb-step{display:flex;flex-direction:column;align-items:center;flex:1;position:relative;z-index:1}
.bb-bot-wrap{position:relative;width:42px;height:42px}
.bb-sign{position:absolute;top:-4px;right:-6px;background:#fffdf7;border:2px solid #1f2030;border-radius:2px;padding:0 3px;font-size:9px;font-weight:800;min-width:14px;height:14px;line-height:10px;text-align:center;z-index:3;box-shadow:1px 1px 0 #1f2030}
.bb-label{font-size:10px;margin-top:3px;text-align:center;color:#9aa1b2;line-height:1.3;font-weight:600}
.bb-step.done .bb-label{color:#5d9c3c}
.bb-step.active .bb-label{color:#3b5bff;font-weight:800}
.bb-step.done .bb-sign{background:#5d9c3c;color:#fffdf7;border-color:#3d6b24}
.bb-step.active .bb-sign{background:#f5b800;color:#1f2030;border-color:#b87a1e;animation:signBob 1s ease-in-out infinite}
@keyframes signBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}

/* ---------- 统计 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:13px}
.stat-grid .sg{background:#fff;border-radius:14px;padding:14px 6px;text-align:center;box-shadow:var(--shadow)}
.stat-grid .sg .n{font-size:18px;font-weight:750;letter-spacing:-.5px}
.stat-grid .sg .t{font-size:11px;color:var(--sub);margin-top:3px}
.stat-grid .sg.clickable{cursor:pointer;transition:.15s}
.stat-grid .sg.clickable:active{transform:scale(.95);box-shadow:0 3px 12px rgba(77,107,254,.2)}

/* ---------- 店铺 ---------- */
.shop-hero{border-radius:var(--radius);overflow:hidden;margin-bottom:12px;background:#fff;box-shadow:var(--shadow)}
.shop-banner{height:124px;background:linear-gradient(125deg,#5b76ff,#7a5cff);position:relative}
.shop-banner img{width:100%;height:100%;object-fit:cover}
.shop-hero-info{display:flex;gap:12px;padding:0 16px 15px;margin-top:-32px;position:relative;align-items:flex-end}
.shop-avatar{width:66px;height:66px;border-radius:16px;background:#fff;border:3px solid #fff;box-shadow:var(--shadow);
  object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:28px;overflow:hidden;flex-shrink:0}
.trust-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
.trust-item{border:1.5px solid var(--line);border-radius:13px;padding:13px 6px;text-align:center;font-size:11.5px;color:var(--sub);cursor:pointer}
.trust-item .ti-ico{font-size:22px;display:block;margin-bottom:5px}
.trust-item.done{border-color:var(--green);color:var(--green);background:var(--green-soft)}

/* ---------- 客服（手机内全屏对话，豆包式） ---------- */
.support-sheet{position:absolute;inset:0;z-index:70;background:var(--bg);display:flex;flex-direction:column;
  animation:slideUp .22s ease}
@keyframes slideUp{from{transform:translateY(12px);opacity:.4}to{transform:translateY(0);opacity:1}}
.ss-head{flex-shrink:0;display:flex;align-items:center;gap:8px;padding:8px 12px 12px;background:var(--bg)}
.ss-head .ah-back{margin-left:0}
.ss-title{flex:1;display:flex;flex-direction:column;line-height:1.25}
.ss-title b{font-size:16px}.ss-title span{font-size:11.5px;color:var(--sub)}
.ss-ava{width:38px;height:38px;border-radius:3px;background:var(--brand-soft);display:flex;align-items:center;
  justify-content:center;font-size:20px;border:2px solid var(--line);box-shadow:2px 2px 0 var(--line)}
.ss-body{flex:1;overflow-y:auto;padding:8px 14px;display:flex;flex-direction:column;gap:10px;scrollbar-width:none}
.ss-body::-webkit-scrollbar{display:none}
.msg{max-width:82%;padding:10px 13px;border-radius:3px;font-size:14px;line-height:1.5}
.msg.bot{background:#fffdf7;border:2px solid var(--line);align-self:flex-start;display:flex;gap:7px;align-items:flex-start;max-width:88%;box-shadow:2px 2px 0 rgba(31,32,48,.1)}
.msg-bot-ava{width:24px;height:24px;flex-shrink:0;display:block}
.msg-bot-txt{min-width:0}
.msg.user{background:var(--brand);color:#fff;align-self:flex-end;border:2px solid var(--line);box-shadow:2px 2px 0 rgba(31,32,48,.15)}
.ss-input{flex-shrink:0;display:flex;gap:9px;padding:10px 14px calc(12px + env(safe-area-inset-bottom));background:#fffdf7;border-top:3px solid var(--line)}
.ss-input input{flex:1;background:#f7f4ec;border:2px solid var(--line)}
.ss-input button{border:2px solid var(--line);background:var(--brand);color:#fff;border-radius:3px;padding:0 18px;font-size:14px;
  font-weight:700;font-family:inherit;cursor:pointer;box-shadow:2px 2px 0 var(--line)}
.ss-input button:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}

/* ---------- BoxBot 2.0 业务助手 ---------- */
.bb-tabs{flex-shrink:0;display:flex;gap:4px;padding:0 12px 8px;background:var(--bg);border-bottom:2px solid var(--line)}
.bb-tab{flex:1;padding:7px 4px;font-size:12px;font-weight:700;font-family:inherit;border:2px solid var(--line);background:#fffdf7;color:#5a6577;cursor:pointer;border-radius:3px;box-shadow:2px 2px 0 var(--line)}
.bb-tab.on{background:var(--brand);color:#fffdf7;border-color:var(--line)}
.bb-tab:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}
.bb-panel{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.bb-lib-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.bb-lib-head span{font-weight:700;font-size:14px}
.bb-lib-list{display:flex;flex-direction:column;gap:8px}
.bb-lib-item{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:10px 12px;box-shadow:2px 2px 0 rgba(31,32,48,.1);display:flex;gap:10px;align-items:center}
.bb-lib-item .bli-ico{width:36px;height:36px;background:var(--brand-soft);border:2px solid var(--line);border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.bb-lib-item .bli-info{flex:1;min-width:0}
.bb-lib-item .bli-name{font-weight:700;font-size:13px;margin-bottom:2px}
.bb-lib-item .bli-meta{font-size:11px;color:var(--sub)}
.bb-remind-list,.bb-news-list{display:flex;flex-direction:column;gap:8px}
.bb-remind-item{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:10px 12px;box-shadow:2px 2px 0 rgba(31,32,48,.1);display:flex;gap:10px;align-items:flex-start}
.bb-remind-item .bri-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;margin-top:4px}
.bb-remind-item .bri-dot.high{background:#e0443a}.bri-dot.mid{background:#f5b800}.bri-dot.low{background:#5d9c3c}
.bb-remind-item .bri-body{flex:1}
.bb-remind-item .bri-title{font-weight:700;font-size:13px;margin-bottom:2px}
.bb-remind-item .bri-desc{font-size:11.5px;color:var(--sub);line-height:1.4}
.bb-remind-item .bri-time{font-size:10px;color:var(--faint);margin-top:3px}
.bb-news-item{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:10px 12px;box-shadow:2px 2px 0 rgba(31,32,48,.1)}
.bb-news-item .bni-tag{display:inline-block;font-size:10px;font-weight:700;padding:1px 6px;border-radius:2px;margin-bottom:5px}
.bb-news-item .bni-tag.trade{background:#e8f0ff;color:#3b5bff}.bni-tag.logi{background:#e8f8e8;color:#5d9c3c}.bni-tag.mkt{background:#fff4e0;color:#b87a1e}
.bb-news-item .bni-title{font-weight:700;font-size:13px;margin-bottom:3px;line-height:1.4}
.bb-news-item .bni-desc{font-size:11.5px;color:var(--sub);line-height:1.4}
.bb-news-item .bni-time{font-size:10px;color:var(--faint);margin-top:4px}
/* 反馈表单 */
.bb-fb-form{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:12px;box-shadow:2px 2px 0 rgba(31,32,48,.1);margin-bottom:14px}
.bb-fb-type{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.bb-fb-tag{font-size:11px;padding:5px 10px;border:2px solid var(--line);background:#f7f4ec;border-radius:3px;cursor:pointer;font-family:inherit;font-weight:600;color:#5a6577}
.bb-fb-tag.on{background:var(--brand);color:#fffdf7;border-color:var(--line)}
.bb-fb-form textarea{width:100%;box-sizing:border-box;border:2px solid var(--line);border-radius:3px;padding:8px 10px;font-size:13px;font-family:inherit;resize:vertical;background:#f7f4ec;min-height:70px}
.bb-fb-actions{display:flex;align-items:center;gap:8px;margin-top:10px}
.bb-fb-imgcount{font-size:11px;color:var(--sub);flex:1}
.bb-fb-history-title{font-weight:700;font-size:13px;margin:4px 0 8px;color:var(--text)}
.bb-fb-list{display:flex;flex-direction:column;gap:8px}
.bb-fb-item{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:10px 12px;box-shadow:2px 2px 0 rgba(31,32,48,.1)}
.bb-fb-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.bb-fb-item-type{font-size:11px;font-weight:700;padding:2px 8px;background:var(--brand-soft);color:var(--brand);border-radius:2px}
.bb-fb-item-status{font-size:10px;font-weight:700;padding:2px 8px;border-radius:2px}
.bb-fb-item-status.pending{background:#fff4e0;color:#b87a1e}
.bb-fb-item-status.replied{background:#e8f8e8;color:#5d9c3c}
.bb-fb-item-status.closed{background:#eee;color:#888}
.bb-fb-item-content{font-size:13px;line-height:1.5;margin-bottom:6px}
.bb-fb-item-reply{font-size:12px;background:#f0f4ff;border-left:3px solid var(--brand);padding:6px 10px;border-radius:2px;margin-bottom:6px;line-height:1.5}
.bb-fb-item-time{font-size:10px;color:var(--faint)}
/* ---------- 游戏中心 ---------- */
.game-page{padding:12px 14px 24px;display:flex;flex-direction:column;gap:12px}
.lvl-card{background:linear-gradient(135deg,#3b5bff 0%,#5a78ff 50%,#7ab856 100%);border:3px solid var(--line);border-radius:4px;padding:14px;box-shadow:3px 3px 0 var(--line);color:#fffdf7}
.lvl-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.lvl-badge{background:#fffdf7;color:#3b5bff;font-weight:800;font-size:18px;padding:4px 10px;border:2px solid var(--line);border-radius:3px;box-shadow:2px 2px 0 rgba(0,0,0,.2)}
.lvl-info{flex:1}.lvl-title{font-weight:700;font-size:15px}.lvl-xp{font-size:11px;opacity:.85}
.lvl-pts{display:flex;align-items:center;gap:4px;font-weight:700;font-size:14px;background:rgba(0,0,0,.2);padding:4px 10px;border-radius:3px;border:1px solid rgba(255,255,255,.3)}
.lvl-bar{height:14px;background:rgba(0,0,0,.25);border:2px solid rgba(0,0,0,.3);border-radius:2px;overflow:hidden}
.lvl-fill{height:100%;background:linear-gradient(90deg,#f5b800,#ffd633);transition:width .4s}
.lvl-next{font-size:11px;margin-top:5px;opacity:.9}
.gq-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px dashed var(--line-2)}
.gq-row:last-child{border-bottom:none}
.gq-info{flex:1;min-width:0}.gq-title{font-weight:700;font-size:13px;margin-bottom:2px}
.gq-desc{font-size:11.5px;color:var(--sub);margin-bottom:3px}
.gq-prog{font-size:10.5px;color:var(--brand);font-weight:600}
.gq-row.done .gq-title{color:#5d9c3c}.gq-row.claimed{opacity:.6}
.gq-done{font-size:11px;color:#5d9c3c;font-weight:700}
.gq-todo{font-size:11px;color:var(--faint)}
.ach-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ach-card{background:#f7f4ec;border:2px solid var(--line);border-radius:3px;padding:10px 6px;text-align:center;box-shadow:2px 2px 0 rgba(31,32,48,.08)}
.ach-card.on{background:#fffdf7;border-color:#5d9c3c;box-shadow:2px 2px 0 rgba(93,156,60,.3)}
.ach-ico{width:36px;height:36px;margin:0 auto 6px;display:flex;align-items:center;justify-content:center;background:var(--brand-soft);border-radius:3px;border:1px solid var(--line)}
.ach-card.on .ach-ico{background:#e8f8e8}
.ach-name{font-size:11px;font-weight:700;margin-bottom:2px;line-height:1.2}
.ach-desc{font-size:9.5px;color:var(--sub);line-height:1.3;margin-bottom:4px;min-height:24px}
.ach-prog{font-size:10px;font-weight:700;color:var(--faint)}
.task-card{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:10px 12px;margin-bottom:8px;box-shadow:2px 2px 0 rgba(31,32,48,.08)}
.task-card:last-child{margin-bottom:0}
.task-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px}
.task-reward{font-size:11px;font-weight:700;color:#5d9c3c;background:#e8f8e8;padding:2px 8px;border-radius:2px}
.task-desc{font-size:12px;color:var(--sub);margin-bottom:5px;line-height:1.4}
.task-meta{font-size:10.5px;color:var(--faint);margin-bottom:8px}
.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.svc-cat{display:flex;align-items:center;gap:8px;padding:10px;background:#f7f4ec;border:2px solid var(--line);border-radius:3px;font-size:12px;font-weight:600;cursor:pointer;box-shadow:1px 1px 0 var(--line)}
.svc-cat:active{transform:translate(1px,1px);box-shadow:none}
.lvl-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;background:linear-gradient(135deg,#3b5bff,#5a78ff);color:#fffdf7;padding:3px 10px;border-radius:3px;border:2px solid var(--line);box-shadow:1px 1px 0 var(--line);cursor:pointer;white-space:nowrap}
.lvl-badge:active{transform:translate(1px,1px);box-shadow:none}

/* ============ 全球像素地图 ============ */
.game-map-page{padding-bottom:20px}
.pixel-map{position:relative;background:#5a78ff;border:3px solid var(--line);border-radius:4px;padding:8px;margin:12px;
  background-image:repeating-linear-gradient(0deg,transparent,transparent 7px,rgba(255,255,255,.08) 7px,rgba(255,255,255,.08) 8px),
  repeating-linear-gradient(90deg,transparent,transparent 7px,rgba(255,255,255,.08) 7px,rgba(255,255,255,.08) 8px);
  display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,70px);gap:4px}
.map-region{border:2px solid rgba(0,0,0,.3);border-radius:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;position:relative;transition:transform .1s;box-shadow:2px 2px 0 rgba(0,0,0,.2)}
.map-region:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 rgba(0,0,0,.3)}
.map-region:active{transform:translate(1px,1px);box-shadow:none}
.mr-name{font-size:13px;font-weight:700;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.4)}
.mr-count{font-size:11px;color:rgba(255,255,255,.9);margin-top:2px}
.mr-dot{position:absolute;top:4px;right:4px;width:8px;height:8px;background:#fff;border-radius:50%;box-shadow:0 0 4px #fff;animation:blink 1.5s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.map-legend{grid-column:1/-1;text-align:center;font-size:11px;color:rgba(255,255,255,.8);padding:4px}
.region-shops{margin:12px;background:var(--paper);border:3px solid var(--line);border-radius:4px;box-shadow:3px 3px 0 var(--line)}
.region-head{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:2px solid var(--line);background:var(--cream);font-weight:700;font-size:14px}
.region-shop-list{max-height:300px;overflow-y:auto;padding:8px}
.pshop-card{display:flex;align-items:center;gap:10px;padding:10px;border:2px solid var(--line);border-radius:3px;margin-bottom:6px;background:#fffdf7;cursor:pointer;box-shadow:2px 2px 0 var(--line)}
.pshop-card:active{transform:translate(1px,1px);box-shadow:none}
.ps-avatar{width:40px;height:40px;border:2px solid var(--line);border-radius:3px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--cream)}
.ps-avatar img{width:100%;height:100%;object-fit:cover}
.ps-info{flex:1}
.ps-name{font-size:13px;font-weight:700}
.ps-meta{font-size:11px;color:var(--muted)}
.ps-arrow{font-size:20px;color:var(--muted)}

/* ============ 像素店铺 ============ */
.pixel-shop-page{padding-bottom:20px}
.px-storefront{margin:12px;background:var(--paper);border:3px solid var(--line);border-radius:4px;overflow:hidden;box-shadow:3px 3px 0 var(--line)}
.px-roof{height:16px;background:repeating-linear-gradient(90deg,#c0392b 0,#c0392b 12px,#a93226 12px,#a93226 24px);border-bottom:2px solid var(--line)}
.px-signboard{background:#f5b800;padding:10px;text-align:center;border-bottom:2px solid var(--line);display:flex;align-items:center;justify-content:center;gap:8px}
.px-sign-text{font-size:18px;font-weight:900;color:#5d3a00;text-shadow:1px 1px 0 rgba(255,255,255,.3);letter-spacing:1px}
.px-verified{font-size:10px;background:#5d9c3c;color:#fff;padding:2px 6px;border-radius:2px;border:1px solid var(--line)}
.px-banner{height:80px;background:var(--cream);border-bottom:2px solid var(--line);overflow:hidden;display:flex;align-items:center;justify-content:center}
.px-banner img{width:100%;height:100%;object-fit:cover}
.px-banner-ph{color:var(--muted);font-size:13px}
.px-store-body{height:70px;background:#deb887;display:flex;align-items:flex-end;justify-content:center;gap:12px;padding:0 16px}
.px-door{width:36px;height:56px;background:#8b5a2b;border:2px solid var(--line);border-bottom:none;border-radius:3px 3px 0 0;position:relative}
.px-door::after{content:'';position:absolute;right:4px;top:28px;width:4px;height:4px;background:#f5b800;border-radius:50%}
.px-window{width:44px;height:36px;background:#87ceeb;border:2px solid var(--line);border-radius:2px;margin-bottom:0;position:relative}
.px-window::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--line)}
.px-window::after{content:'';position:absolute;top:50%;left:0;right:0;height:2px;background:var(--line)}
.px-shop-info{margin:0 12px 12px;padding:12px;background:#fffdf7;border:2px solid var(--line);border-radius:3px;box-shadow:2px 2px 0 var(--line)}
.pxsi-row{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--line);font-size:13px}
.pxsi-row:last-child{border-bottom:none}
.pxsi-row span{color:var(--muted)}
.pxsi-row b{color:var(--ink)}
.px-shelves-title{margin:16px 12px 8px;font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px}
.px-shelves{margin:0 12px}
.px-shelf{margin-bottom:14px}
.px-shelf-board{height:8px;background:repeating-linear-gradient(90deg,#8b5a2b 0,#8b5a2b 8px,#7a4e25 8px,#7a4e25 16px);border:2px solid var(--line);border-radius:2px}
.px-shelf-items{display:flex;gap:8px;padding:8px 4px 0;justify-content:flex-start}
.px-product{width:calc(33.33%-6px);flex:1;max-width:110px;background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:6px;text-align:center;cursor:pointer;box-shadow:2px 2px 0 var(--line)}
.px-product:active{transform:translate(1px,1px);box-shadow:none}
.pxp-img{width:100%;height:60px;background:var(--cream);border:1px solid var(--line);border-radius:2px;overflow:hidden;display:flex;align-items:center;justify-content:center;margin-bottom:4px}
.pxp-img img{width:100%;height:100%;object-fit:cover}
.pxp-name{font-size:11px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pxp-price{font-size:12px;color:#c0392b;font-weight:700;margin-top:2px}
.map-entry{display:flex;align-items:center;gap:12px;margin:12px;padding:14px;background:linear-gradient(135deg,#3b5bff,#5a78ff);border:3px solid var(--line);border-radius:4px;cursor:pointer;box-shadow:3px 3px 0 var(--line)}
.map-entry:active{transform:translate(1px,1px);box-shadow:none}
.me-icon{font-size:28px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.2);border-radius:4px;border:2px solid rgba(0,0,0,.2)}
.me-info{flex:1}
.me-title{font-size:15px;font-weight:800;color:#fff}
.me-desc{font-size:11px;color:rgba(255,255,255,.8);margin-top:2px}
.me-arrow{font-size:24px;color:#fff;font-weight:700}

/* ============ 游戏模式外壳 ============ */
.view.game-view{overflow:hidden;padding:0}
.phone-screen.game-mode .status-bar,
.phone-screen.game-mode .app-header,
.phone-screen.game-mode .tabbar{display:none!important}
.phone-screen.game-mode .view{padding:0;overflow:hidden;height:100%}
.phone-screen.game-mode{background:#2a2a3a}
.game-shell{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#2a2a3a;z-index:99999;overflow:hidden}
.gs-top{display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(180deg,#3a3a4a,#2a2a3a);border-bottom:3px solid #1a1a2a}
.gs-lvl{display:flex;align-items:center;gap:6px;background:linear-gradient(135deg,#3b5bff,#5a78ff);padding:5px 10px;border-radius:4px;border:2px solid #1a1a2a;cursor:pointer}
.gs-lvlnum{font-size:13px;font-weight:900;color:#fff;background:rgba(0,0,0,.3);padding:1px 5px;border-radius:2px}
.gs-lvltitle{font-size:11px;font-weight:700;color:#fffdf7}
.gs-coins{display:flex;align-items:center;gap:4px;background:#f5b800;color:#5d3a00;font-size:13px;font-weight:800;padding:4px 10px;border-radius:4px;border:2px solid #1a1a2a}
.gs-top-icons{margin-left:auto;display:flex;gap:6px}
.gs-icon-btn{width:44px;height:44px;background:#4a4a5a;border:2px solid #1a1a2a;border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:#fffdf7;gap:1px;padding:2px}
.gs-icon-btn:active{transform:translate(1px,1px)}
.gs-ib-label{font-size:8px;font-weight:600;color:#ccc;line-height:1}
.gs-exit{background:#e0443a}
.gs-exit .gs-ib-label{color:#fff}
.gs-map-wrap{flex:1;position:relative;overflow:hidden;touch-action:none;cursor:grab}
.gs-map-wrap:active{cursor:grabbing}
.gs-map-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center;transform-origin:center center;transition:transform .05s}
.gs-world-svg{width:100%;height:100%;max-width:100%;max-height:100%;shape-rendering:crispEdges}
.map-land{cursor:pointer;transition:filter .15s}
.map-land:hover{filter:brightness(1.2)}
.map-marker{cursor:pointer}
.map-marker circle{filter:drop-shadow(0 2px 2px rgba(0,0,0,.4))}
.gs-zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:4px;z-index:5}
.gs-zoom button{width:36px;height:36px;background:#fffdf7;border:2px solid #1a1a2a;border-radius:4px;font-size:18px;font-weight:900;cursor:pointer;box-shadow:2px 2px 0 #1a1a2a}
.gs-zoom button:active{transform:translate(1px,1px);box-shadow:none}
.gs-map-hint{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.6);color:#fffdf7;font-size:10px;padding:3px 10px;border-radius:3px;white-space:nowrap}
.gs-region-panel{position:absolute;left:10px;right:10px;bottom:10px;background:#fffdf7;border:3px solid #1a1a2a;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.4);z-index:10;max-height:50%;overflow-y:auto}
.gs-rp-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#3b5bff;color:#fff;font-weight:800;font-size:14px;border-bottom:2px solid #1a1a2a}
.gs-rp-head button{background:none;border:none;color:#fff;font-size:18px;cursor:pointer;font-weight:900}
.gs-rp-body{padding:10px}
.gs-rp-stats{display:flex;gap:8px;margin-bottom:10px}
.gs-rp-stat{flex:1;text-align:center;background:var(--cream);border:2px solid var(--line);border-radius:4px;padding:6px}
.gs-rp-stat b{display:block;font-size:18px;color:#3b5bff}
.gs-rp-stat span{font-size:10px;color:var(--muted)}
.gs-rp-shop{display:flex;align-items:center;gap:8px;padding:8px;border:2px solid var(--line);border-radius:4px;margin-bottom:6px;cursor:pointer;background:#fff}
.gs-rp-shop:active{transform:translate(1px,1px)}
.gs-rp-avatar{width:32px;height:32px;border:2px solid var(--line);border-radius:3px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--cream)}
.gs-rp-avatar img{width:100%;height:100%;object-fit:cover}
.gs-rp-arrow{margin-left:auto;font-size:18px;color:var(--muted)}
.gs-bottom{display:flex;align-items:flex-end;justify-content:space-around;padding:8px 6px 12px;background:linear-gradient(180deg,#3a3a4a,#1a1a2a);border-top:3px solid #0a0a1a;gap:4px;min-height:70px;flex-shrink:0}
.gs-action{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;background:linear-gradient(180deg,#4a4a5a,#333344);border:2px solid #1a1a2a;border-radius:6px;color:#ddd;cursor:pointer;padding:6px 2px;box-shadow:0 2px 0 #1a1a2a,inset 0 1px 0 rgba(255,255,255,.1)}
.gs-action:active{transform:translateY(2px);box-shadow:0 0 0 #1a1a2a,inset 0 1px 0 rgba(255,255,255,.1)}
.gs-act-ico{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:rgba(255,255,255,.08);border-radius:4px;border:1px solid rgba(255,255,255,.1)}
.gs-act-label{font-size:10px;font-weight:700}
.gs-action-big{background:linear-gradient(180deg,#f5b800,#d49800);color:#3d2800;border-color:#8b6914;box-shadow:0 3px 0 #8b6914,inset 0 1px 0 rgba(255,255,255,.3);transform:translateY(-6px)}
.gs-action-big .gs-act-ico{background:rgba(255,255,255,.25);border-color:rgba(0,0,0,.15)}
.gs-action-big .gs-act-label{color:#3d2800;font-weight:900;font-size:11px}
.gs-action-big:active{transform:translateY(-4px);box-shadow:0 1px 0 #8b6914}
/* 游戏状态栏 */
.gs-stats{display:flex;gap:4px;padding:6px 10px;background:#1e1e2e;border-bottom:2px solid #0a0a1a;flex-shrink:0}
.gs-stat{flex:1;text-align:center;background:#2e2e3e;border:1px solid #1a1a2a;border-radius:4px;padding:4px 2px;cursor:pointer}
.gs-stat:active{background:#3a3a4a}
.gs-stat b{display:block;font-size:15px;font-weight:900;color:#f5b800;line-height:1.2}
.gs-stat span{font-size:9px;color:#999}
/* 全功能菜单弹层 */
.gs-menu-mask{position:absolute;inset:0;background:rgba(0,0,0,.7);z-index:50;display:flex;align-items:flex-end}
.gs-menu-mask.hidden{display:none}
.gs-menu{width:100%;max-height:80%;background:#2a2a3a;border-top:3px solid #f5b800;border-radius:12px 12px 0 0;display:flex;flex-direction:column;animation:gsMenuUp .2s ease}
@keyframes gsMenuUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.gs-menu-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#3a3a4a;border-bottom:2px solid #1a1a2a;font-weight:900;color:#f5b800;font-size:15px}
.gs-menu-head button{background:#e0443a;color:#fff;border:2px solid #1a1a2a;border-radius:4px;width:28px;height:28px;font-size:16px;font-weight:900;cursor:pointer}
.gs-menu-body{overflow-y:auto;padding:10px 14px 20px}
.gs-menu-group{font-size:11px;font-weight:800;color:#888;margin:10px 0 6px;padding-left:2px;border-left:3px solid #f5b800;padding-left:6px}
.gs-menu-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.gs-menu-item{display:flex;flex-direction:column;align-items:center;gap:4px;background:#3a3a4a;border:2px solid #1a1a2a;border-radius:6px;padding:10px 4px;cursor:pointer;box-shadow:0 2px 0 #1a1a2a}
.gs-menu-item:active{transform:translateY(2px);box-shadow:none}
.gs-menu-item span{font-size:10px;font-weight:700;color:#ddd}
/* 地图国名标签 */
.map-labels text{font-family:inherit;user-select:none}
.map-land{cursor:pointer;transition:fill-opacity .15s}
.map-land:active{fill-opacity:.7}
/* 返回游戏悬浮按钮 */
.game-return-fab{position:fixed;right:12px;bottom:80px;z-index:500;background:linear-gradient(135deg,#f5b800,#d49800);color:#3d2800;font-weight:900;font-size:11px;padding:8px 12px;border:2px solid #1a1a2a;border-radius:6px;box-shadow:2px 2px 0 #1a1a2a;cursor:pointer}
.game-return-fab:active{transform:translate(1px,1px);box-shadow:none}
.ss-input .ss-icon-btn{width:36px;height:36px;border:2px solid var(--line);background:#fffdf7;border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:2px 2px 0 var(--line);padding:0;color:inherit}
.ss-input .ss-icon-btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}
.ss-input .ss-icon-btn.recording{background:#e0443a;border-color:#1f2030;animation:pulseRed 1s infinite}
.ss-input .ss-icon-btn svg{display:block}
@keyframes pulseRed{0%,100%{box-shadow:2px 2px 0 var(--line)}50%{box-shadow:2px 2px 0 var(--line),0 0 0 4px rgba(224,68,58,.25)}}
.ss-input .ss-send{width:40px;height:36px;border:2px solid var(--line);background:var(--brand);border-radius:3px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:2px 2px 0 var(--line);padding:0}
.ss-input .ss-send:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}
.ss-input .ss-send svg{display:block}
.bb-quick{display:flex;gap:6px;padding:6px 14px 8px;background:var(--bg);overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.bb-quick::-webkit-scrollbar{display:none}
.bb-quick button{font-size:11px;padding:5px 10px;border:2px solid var(--line);background:#fffdf7;border-radius:3px;cursor:pointer;font-family:inherit;font-weight:600;color:#5a6577;box-shadow:1px 1px 0 var(--line);white-space:nowrap;flex-shrink:0}
.bb-quick button:active{transform:translate(1px,1px);box-shadow:none}
.bb-voice-rec{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);background:#1f2030;color:#fffdf7;padding:10px 18px;border-radius:4px;display:flex;align-items:center;gap:10px;font-size:13px;z-index:80;border:2px solid #000}
.bb-voice-wave{display:flex;gap:3px;align-items:flex-end;height:20px}
.bb-voice-wave span{width:3px;background:#f5b800;border-radius:1px;animation:wave .8s ease-in-out infinite}
.bb-voice-wave span:nth-child(2){animation-delay:.1s}.bb-voice-wave span:nth-child(3){animation-delay:.2s}.bb-voice-wave span:nth-child(4){animation-delay:.3s}.bb-voice-wave span:nth-child(5){animation-delay:.4s}
@keyframes wave{0%,100%{height:6px}50%{height:18px}}
.bb-voice-rec button{background:#e0443a;color:#fff;border:none;padding:4px 12px;border-radius:2px;font-size:12px;cursor:pointer;font-family:inherit;font-weight:700}
.msg.bot .bb-card{background:#f7f4ec;border:2px solid var(--line);border-radius:3px;padding:10px;margin-top:8px;font-size:13px}
.msg.bot .bb-card .bbc-title{font-weight:700;margin-bottom:6px;color:var(--brand)}
.msg.bot .bb-card .bbc-row{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px dashed var(--line-2);font-size:12px}
.msg.bot .bb-card .bbc-row:last-child{border-bottom:none}
.msg.bot .bb-action{display:inline-block;margin-top:8px;padding:6px 14px;background:var(--brand);color:#fffdf7;border:2px solid var(--line);border-radius:3px;font-size:12px;font-weight:700;cursor:pointer;box-shadow:2px 2px 0 var(--line)}
.msg.bot .bb-action:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}

/* ---------- Toast / Modal（像素风） ---------- */
.toast{position:absolute;left:50%;bottom:84px;transform:translateX(-50%);background:#1f2030;color:#fffdf7;
  padding:11px 20px;border-radius:3px;font-size:14px;z-index:99;max-width:86%;text-align:center;border:2px solid #000;box-shadow:3px 3px 0 rgba(0,0,0,.3)}
.modal-mask{position:absolute;inset:0;background:rgba(20,24,40,.5);z-index:80;display:flex;align-items:center;
  justify-content:center;padding:24px}
.modal{background:#fffdf7;border:3px solid var(--line);border-radius:4px;padding:20px;width:100%;max-height:84%;overflow-y:auto;box-shadow:6px 6px 0 rgba(31,32,48,.25)}
.modal h3{margin-bottom:14px;font-size:18px}
.effect-preview{width:100%;border-radius:13px;margin:10px 0}
.pos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}
.pos-grid button{border:1.5px solid var(--line);background:#fff;border-radius:11px;padding:10px 4px;font-size:12px;cursor:pointer;font-family:inherit}
.pos-grid button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand);font-weight:650}

/* 九面印花选择器（3×3） */
.face-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 12px}
.face-grid button{border:1.5px solid var(--line);background:#fff;border-radius:11px;padding:11px 4px;font-size:13px;cursor:pointer;font-family:inherit;transition:.15s}
.face-grid button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand);font-weight:700;box-shadow:0 2px 8px rgba(77,107,254,.18)}

/* 充值档位 */
.pack-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.pack-card{position:relative;border:1.5px solid var(--line);border-radius:14px;padding:14px 10px;text-align:center;cursor:pointer;transition:.15s;background:#fff}
.pack-card.on{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 3px 12px rgba(77,107,254,.16)}
.pack-card .pk-name{font-size:13px;color:var(--sub);font-weight:600}
.pack-card .pk-price{font-size:22px;font-weight:800;color:var(--txt);margin:3px 0}
.pack-card.on .pk-price{color:var(--brand)}
.pack-card .pk-pts{font-size:12px;color:var(--sub)}
.pack-card .pk-gift{margin-top:4px;display:inline-block;font-size:11px;color:#e8841a;background:#fff4e5;border-radius:6px;padding:1px 7px}
.pack-card .pk-flag{position:absolute;top:-8px;right:8px;background:var(--brand);color:#fff;font-size:10px;border-radius:6px;padding:1px 7px}
.paywall-reason{background:#fff4e5;border:1px solid #ffd591;color:#b25e09;border-radius:11px;padding:9px 11px;font-size:12.5px;margin-bottom:12px;line-height:1.5}

/* 积分明细行 */
.point-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-2)}
.point-row:last-child{border-bottom:0}
.pr-plus,.pr-minus{white-space:nowrap;flex-shrink:0;font-size:15px}
.pr-plus{color:#16a34a;font-weight:700}
.pr-minus{color:var(--red);font-weight:700}

/* 规格选项 chips */
.spec-group{margin:11px 0}
.spec-name{font-size:13px;font-weight:600;color:#4a4f5e;margin-bottom:7px}
.spec-name .faint{font-weight:400;font-size:11.5px}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:6px 14px;border-radius:999px;background:#f2f4f9;color:#525a68;font-size:12.5px;border:1.5px solid transparent;line-height:1.3}
.chip.pick{cursor:pointer;transition:.15s;user-select:none}
.chip.pick:active{transform:scale(.95)}
.chip.pick.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);font-weight:700}
/* 规格逐个添加编辑器 */
.spec-editor{border:1px solid var(--line-2);border-radius:13px;padding:11px;margin-bottom:10px;background:#fafbfe}
.se-head{display:flex;gap:8px;margin-bottom:9px}
.se-head .se-name{flex:1;font-weight:600}
.se-chips{min-height:6px;margin-bottom:9px}
.chip.has-x{display:inline-flex;align-items:center;gap:7px;background:var(--brand-soft);color:var(--brand);border-color:#d6ddff;font-weight:600}
.chip.has-x b{cursor:pointer;font-weight:700;font-size:14px;line-height:1;opacity:.7}
.chip.has-x b:hover{opacity:1}
.se-add{display:flex;gap:8px}
.se-add input{flex:1}
/* 下单金额行 */
.total-line{display:flex;align-items:center;justify-content:space-between;padding:9px 2px;font-size:14px;color:#525a68}
.total-line b{color:#1c2230;font-size:14px}
.total-line.grand{border-top:1.5px dashed var(--line-2);margin-top:2px;padding-top:12px;margin-bottom:11px}
.total-line.grand span{font-weight:600;color:#1c2230}
.total-line.grand b{font-size:20px;color:var(--brand)}
/* 定制实时预览画布 */
.preview-canvas{width:100%;height:auto;aspect-ratio:1/1;border:1.5px solid var(--line-2);border-radius:14px;background:#fff;display:block}
/* 管理后台 */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}
.stat-card{background:#f7f9ff;border:1px solid var(--line-2);border-radius:14px;padding:13px}
.stat-card .n{font-size:22px;font-weight:800;color:var(--brand);line-height:1.1}
.stat-card .t{font-size:12px;color:#7a8194;margin-top:4px}
.admin-table{width:100%;border-collapse:collapse;font-size:12.5px}
.admin-table th,.admin-table td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line-2);white-space:nowrap}
.admin-table th{color:#7a8194;font-weight:600;background:#fafbfe}
.table-scroll{overflow-x:auto;border:1px solid var(--line-2);border-radius:12px}
.partner-card{border:1px solid var(--line-2);border-radius:13px;padding:12px;margin-bottom:11px;background:#fafbfe}
/* 卖家逐面底图上传 */
.face-img-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.face-img-cell{position:relative;aspect-ratio:1;border:1.5px dashed var(--line);border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:12px;color:#9aa1b1;cursor:pointer;background:#fafbfe;overflow:hidden}
.face-img-cell.set{border-style:solid;border-color:var(--brand)}
.face-img-cell img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.face-img-cell label{position:relative;z-index:1;background:rgba(255,255,255,.82);padding:1px 7px;border-radius:6px;font-size:11px;color:#4a4f5e}
.face-img-cell .x{position:absolute;top:3px;right:5px;z-index:2;width:18px;height:18px;line-height:16px;text-align:center;background:rgba(0,0,0,.55);color:#fff;border-radius:50%;font-size:13px}
/* 买家定制分步 */
.step-bar{display:flex;align-items:center;gap:6px;margin-bottom:14px;font-size:12.5px}
.step-bar .s{flex:1;text-align:center;padding:6px 2px;border-radius:9px;background:#f1f3f9;color:#8a90a0;font-weight:600}
.step-bar .s.on{background:var(--brand);color:#fff}
.cv-stage{position:relative;touch-action:none;user-select:none;border-radius:14px;overflow:hidden;background:#f4f6fb;border:1px solid var(--line-2)}
.cv-stage canvas{display:block;width:100%;height:auto;touch-action:none}
.cv-tools{display:flex;gap:8px;margin:10px 0}
.cv-tools button{flex:1;padding:9px 4px;font-size:13px}
.spec-qty-box{margin-top:8px}
.spec-qty-row{display:flex;align-items:center;gap:10px;padding:6px 2px;font-size:14px}
.spec-qty-row span:first-child{flex:1}
.spec-qty-row input{width:74px;padding:7px 9px;border:1px solid var(--line-2);border-radius:9px;text-align:center;font-family:inherit}
.sum-line{display:flex;justify-content:space-between;gap:12px;padding:7px 0;font-size:14px;border-bottom:1px dashed var(--line-2)}
.sum-line span{color:#8a90a0}.sum-line b{text-align:right;font-weight:600}
/* 3D 立方体选面器 */
.cube-scene{width:240px;height:240px;margin:4px auto;perspective:900px;touch-action:none}
.cube{position:relative;width:148px;height:148px;margin:46px auto 0;transform-style:preserve-3d}
.cf{position:absolute;width:148px;height:148px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:15px;font-weight:600;color:#33405e;border:1.5px solid #4d6bfe;background:rgba(77,107,254,.10);border-radius:10px;cursor:pointer;backface-visibility:visible;text-align:center;padding:6px;overflow:hidden}
.cf .cf-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:9px;z-index:0}
.cf .cf-mask{position:relative;z-index:1;background:rgba(0,0,0,.45);color:#fff;padding:1px 9px;border-radius:6px;font-size:12px;font-weight:600}
.cf .cf-add{font-size:11px;font-weight:400;margin-top:3px;color:#4d6bfe}
.cf .cf-del{position:absolute;top:4px;right:5px;z-index:2;width:20px;height:20px;line-height:17px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;font-size:13px}
.cf.has-img{border-color:#22c55e;background:rgba(34,197,94,.10)}
.cf.sel{background:rgba(77,107,254,.30);border-color:#3d5bf6;box-shadow:0 0 22px rgba(77,107,254,.55) inset;color:#1f34b8}
.cf.dis{background:rgba(150,158,175,.08);border:1.5px dashed #c9cfdb;color:#a6adbd;font-weight:400;font-size:12px;cursor:not-allowed}
.cf-front{transform:translateZ(74px)}
.cf-back{transform:rotateY(180deg) translateZ(74px)}
.cf-right{transform:rotateY(90deg) translateZ(74px)}
.cf-left{transform:rotateY(-90deg) translateZ(74px)}
.cf-top{transform:rotateX(90deg) translateZ(74px)}
.cf-bottom{transform:rotateX(-90deg) translateZ(74px)}
.cube-actions{display:flex;gap:8px;justify-content:center;margin:6px 0 2px}
.cube-actions button{flex:0 1 auto;padding:8px 12px}
.face-ai{position:absolute;left:4px;bottom:3px;z-index:3;font-size:11px;background:#fff;border:1px solid var(--line-2);border-radius:6px;padding:0 5px;line-height:17px;color:#4d6bfe}
/* 语言切换 */
.lang-switch{display:inline-flex;gap:4px;align-items:center;font-size:12px}
.lang-switch button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:3px 9px;font-size:12px;cursor:pointer;font-family:inherit;color:#525a68}
.lang-switch button.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---------- 真机：铺满全屏，去掉外壳 ---------- */
@media (max-width:480px){
  body{overflow:hidden}
  .phone-stage{padding:0;width:100%;background:var(--bg)}
  .phone-device{width:100%;height:100vh;max-width:100%;max-height:none;border-radius:0;padding:0;background:transparent;box-shadow:none}
  .phone-screen{border-radius:0;max-width:100%}
  .status-bar{display:none}
}

/* ---------- 电脑/iPad 宽屏：去掉手机壳，变居中网页面板，两侧像素风装饰 ---------- */
@media (min-width:768px){
  .phone-stage{
    padding:0;
    background:
      /* 像素方块装饰 */
      linear-gradient(rgba(31,32,48,.05) 2px,transparent 2px),
      linear-gradient(90deg,rgba(31,32,48,.05) 2px,transparent 2px),
      radial-gradient(700px 400px at 15% 20%,rgba(93,156,60,.12) 0%,transparent 60%),
      radial-gradient(700px 400px at 85% 80%,rgba(59,91,255,.10) 0%,transparent 60%),
      linear-gradient(160deg,#e8e2d2 0%,#d8d0bc 100%);
    background-size:32px 32px,32px 32px,100% 100%,100% 100%,100% 100%;
    align-items:center;justify-content:center;gap:0;
  }
  .phone-device{
    width:500px;max-width:94vw;height:92vh;max-height:960px;
    background:transparent;border-radius:0;padding:0;box-shadow:none;border:0;
  }
  .phone-screen{
    border-radius:6px;
    border:3px solid var(--line);
    box-shadow:8px 8px 0 rgba(31,32,48,.18),0 0 0 1px rgba(31,32,48,.06);
    overflow:hidden;
  }
  /* 两侧像素装饰块（纯CSS，不占布局） */
  .phone-stage::before,.phone-stage::after{
    content:'';position:fixed;width:64px;height:64px;opacity:.35;pointer-events:none;z-index:0;
  }
  .phone-stage::before{top:8%;left:5%;background:
    linear-gradient(var(--pixel-grass),var(--pixel-grass)) 0 0/16px 16px,
    linear-gradient(var(--pixel-dirt),var(--pixel-dirt)) 0 16px/16px 48px;
    box-shadow:80px 120px 0 rgba(59,91,255,.3),160px 40px 0 rgba(139,90,43,.3);
  }
  .phone-stage::after{bottom:10%;right:6%;background:
    linear-gradient(var(--brand),var(--brand)) 0 0/24px 24px,
    linear-gradient(var(--pixel-grass),var(--pixel-grass)) 24px 0/16px 16px;
    box-shadow:-100px -80px 0 rgba(93,156,60,.35),-60px 100px 0 rgba(224,138,46,.3);
  }
}
/* iPad 中等屏：面板再宽一点 */
@media (min-width:1024px){
  .phone-device{width:560px;height:94vh}
}
/* 大屏电脑：更大的手机屏，阅读和操作更舒展 */
@media (min-width:1440px){
  .phone-device{width:600px;height:96vh}
}

/* V11 付款闭环 & 收款方式 & 矢量稿 */
.pay-box{background:#f6f8ff;border:1px solid #dbe4ff;border-radius:12px;padding:14px;margin-bottom:4px}
.pb-title{font-size:13px;font-weight:600;color:#2f54eb;margin-bottom:9px;line-height:1.5}
.pay-method{background:#fff;border:1px solid var(--line-2,#e6e9f0);border-radius:10px;padding:10px;margin-bottom:8px;text-align:center}
.pm-head{font-size:13px;font-weight:600;margin-bottom:6px}
.pm-qr{width:150px;height:150px;object-fit:contain;border-radius:8px;border:1px solid #eee;background:#fff}
.pm-acc{font-size:13px;color:#333;word-break:break-all;margin-top:6px;font-variant-numeric:tabular-nums}
.voucher-img{width:100%;max-height:240px;object-fit:contain;border-radius:8px;border:1px solid #e6e9f0;margin:8px 0;cursor:zoom-in;background:#fff}
.pay-wait{color:#b8860b;font-weight:600}.pay-ok{color:#16a34a;font-weight:600}
.pm-card{display:flex;align-items:center;gap:10px;border:1px solid #e6e9f0;border-radius:10px;padding:8px 10px;margin-bottom:8px;background:#fff}
.pm-card-qr{width:46px;height:46px;object-fit:cover;border-radius:8px;border:1px solid #eee;flex-shrink:0}
.pm-card-info{flex:1;min-width:0;font-size:13px}.pm-card-info b{display:block;margin-bottom:2px}
button.mini{flex-shrink:0;border:1px solid #d5dbe8;background:#fff;color:#4a4f5e;border-radius:7px;padding:5px 9px;font-size:12px;cursor:pointer}
button.mini.danger{color:#dc2626;border-color:#f3c0c0}
select{width:100%;padding:11px 12px;border:1px solid #e2e6ef;border-radius:10px;font-size:14px;background:#fff;color:#222}
.pay-alert{background:#fff7e6;border:1px solid #ffe1a8;color:#9a6b00;border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.5;margin-bottom:12px;cursor:pointer}
.pay-alert b{color:#d48806}

/* ===== V15 独立管理控制台：桌面侧栏 + 窄屏顶部Tab，像素方块风 ===== */
.phone-stage.console-mode{padding:0;background:#e8e2d2;align-items:stretch}
.phone-stage.console-mode::before,.phone-stage.console-mode::after{display:none!important}
.phone-stage.console-mode .phone-device{width:100%;height:100vh;max-height:none;border-radius:0;padding:0;background:transparent;box-shadow:none;border:0}
.phone-stage.console-mode .phone-screen{border-radius:0;background:#e8e2d2}
.phone-screen.console-mode .status-bar,.phone-screen.console-mode .app-header,.phone-screen.console-mode .tabbar{display:none!important}
.phone-screen.console-mode .view{padding:0;overflow:hidden}
.adm-shell{display:flex;height:100vh;width:100%;background:#e8e2d2}
.adm-side{width:232px;flex-shrink:0;background:#1f2030;color:#c7cee0;display:flex;flex-direction:column;padding:18px 14px;
  border-right:3px solid #000}
.adm-logo{display:flex;align-items:center;gap:10px;padding:4px 8px 18px;border-bottom:2px solid rgba(255,255,255,.1);margin-bottom:14px;color:#fff;font-weight:800;font-size:16px;line-height:1.2}
.adm-mark{font-size:24px}
.adm-logo-sub{font-size:11px;font-weight:500;color:#8b95b5;margin-top:3px}
.adm-nav{display:flex;flex-direction:column;gap:4px;flex:1}
.adm-nav a{padding:11px 13px;border-radius:3px;color:#b9c1d8;font-size:14px;cursor:pointer;transition:.08s;font-weight:600;white-space:nowrap;border:2px solid transparent}
.adm-nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.adm-nav a.on{background:var(--brand);color:#fff;border-color:#000;box-shadow:3px 3px 0 rgba(0,0,0,.4)}
.adm-side-foot{border-top:2px solid rgba(255,255,255,.1);padding-top:13px;display:flex;flex-direction:column;gap:8px}
.adm-who{font-size:13px;color:#fff;font-weight:600;padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-who span{display:block;font-size:11px;color:#8b95b5;font-weight:400;margin-top:2px}
.adm-side-btn{background:rgba(255,255,255,.1);color:#e6eaf5;border:2px solid rgba(255,255,255,.15);border-radius:3px;padding:9px;font-size:13px;cursor:pointer;white-space:nowrap;font-family:inherit}
.adm-side-btn:hover{background:rgba(255,255,255,.18)}
.adm-side-btn.ghost{background:transparent}
.adm-main{flex:1;display:flex;flex-direction:column;min-width:0}
.adm-top{height:62px;flex-shrink:0;background:#fffdf7;border-bottom:3px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 26px}
.adm-top h1{font-size:18px;font-weight:800;color:#1d2436;margin:0}
.adm-badge{font-size:12px;color:#6b6b7d;background:#ece7da;border:2px solid var(--line-2);border-radius:3px;padding:5px 12px;white-space:nowrap}
.adm-content{flex:1;overflow-y:auto;padding:24px 26px}
.adm-content .stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.adm-content .stat-card{background:#fffdf7;border:2px solid var(--line);border-radius:4px;padding:18px 20px;box-shadow:3px 3px 0 rgba(31,32,48,.1)}
.adm-content .stat-card .n{font-size:25px}
.adm-content .card,.adm-panel{background:#fffdf7;border:2px solid var(--line);border-radius:4px;padding:20px 22px;box-shadow:3px 3px 0 rgba(31,32,48,.1);margin-bottom:16px}
.adm-content .sec{font-size:15px;margin:0 0 14px}
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}
.kpi-card{background:#fffdf7;border:2px solid var(--line);border-radius:4px;padding:18px 20px;box-shadow:3px 3px 0 rgba(31,32,48,.1)}
.kpi-card .n{font-size:24px;font-weight:800;color:var(--brand);line-height:1.1;word-break:break-all}
.kpi-card .t{font-size:12.5px;color:#8a93a8;margin-top:5px}
.adm-content .admin-table{font-size:13.5px}
.adm-content .admin-table th,.adm-content .admin-table td{padding:11px 12px}
.adm-content .table-scroll{border:2px solid var(--line);border-radius:4px}
.adm-content .partner-card{background:#f7f4ec;border:2px solid var(--line-2);border-radius:4px;padding:14px;margin-bottom:12px}
/* 窄屏（手机/小窗口）：侧栏变顶部横向 Tab，内容全宽 */
@media(max-width:760px){
 .adm-shell{flex-direction:column}
 .adm-side{width:100%;flex-shrink:0;flex-direction:column;padding:10px 12px;border-right:0;border-bottom:3px solid #000}
 .adm-logo{padding:2px 4px 10px;margin-bottom:8px}
 .adm-nav{flex-direction:row;overflow-x:auto;gap:6px;flex:none}
 .adm-nav a{white-space:nowrap;padding:8px 12px;font-size:13px}
 .adm-side-foot{flex-direction:row;align-items:center;gap:8px;padding-top:8px;margin-top:8px}
 .adm-who{flex:1}.adm-who span{display:inline;margin-left:6px}
 .adm-side-btn{padding:7px 10px;font-size:12px}
 .adm-top{height:auto;padding:10px 14px;flex-wrap:wrap;gap:6px}
 .adm-content{padding:14px;overflow-y:auto}
 .adm-content .stat-grid,.kpi-grid{grid-template-columns:repeat(2,1fr);gap:10px}
 .adm-content .stat-card,.kpi-card{padding:13px}
 .adm-content .stat-card .n,.kpi-card .n{font-size:20px}
 .adm-content .table-scroll{overflow-x:auto}
}

/* ============ V14 消息中心 / 团购 / PWA ============ */
.bell-btn{position:relative}
.bell-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;padding:0 4px;
  background:#ff4d4f;color:#fff;font-size:10px;font-weight:700;border-radius:8px;
  display:flex;align-items:center;justify-content:center;line-height:1}
.bell-dropdown{position:absolute;top:56px;right:8px;width:300px;max-height:400px;
  background:#fff;border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.15);
  z-index:200;overflow:hidden;display:flex;flex-direction:column}
.bd-head{display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;border-bottom:1px solid #f0f2f5;font-weight:700;font-size:14px}
.bd-readall{background:none;border:none;color:#4d6bfe;font-size:12px;cursor:pointer;padding:4px 8px}
.bd-list{flex:1;overflow-y:auto}
.bd-item{display:flex;gap:10px;padding:12px 14px;border-bottom:1px solid #f7f8fa;cursor:pointer}
.bd-item:hover{background:#f8f9ff}
.bd-item.unread{background:#f0f4ff}
.bd-dot{width:8px;height:8px;border-radius:50%;background:#c8cdd8;margin-top:6px;flex-shrink:0}
.bd-item.unread .bd-dot{background:#4d6bfe}
.bd-body{flex:1;min-width:0}
.bd-title{font-size:13.5px;font-weight:600;color:#1a1f2e;margin-bottom:2px}
.bd-content{font-size:12px;color:#6b7388;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bd-time{font-size:11px;color:#aab1c2;margin-top:3px}
.bd-empty{padding:30px;text-align:center;color:#aab1c2;font-size:13px}
.bd-foot{padding:10px 14px;border-top:1px solid #f0f2f5;text-align:center}
.bd-foot button{background:none;border:none;color:#4d6bfe;font-size:13px;cursor:pointer;font-weight:600}
.msg-card{margin-bottom:10px;cursor:pointer;transition:box-shadow .15s}
.msg-card:hover{box-shadow:0 2px 12px rgba(77,107,254,.12)}
.msg-card.unread{border-left:3px solid #4d6bfe}
.msg-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.msg-title{font-weight:700;font-size:14px;color:#1a1f2e}
.msg-time{font-size:11px;color:#aab1c2}
.msg-content{font-size:13px;color:#555d70;line-height:1.5}
.setting-row{display:flex;justify-content:space-between;align-items:center;
  padding:12px 0;border-bottom:1px solid #f0f2f5;font-size:14px;color:#333a4d}
.setting-row:last-child{border-bottom:none}
.setting-row input[type=checkbox]{width:20px;height:20px;accent-color:#4d6bfe;cursor:pointer}
.setting-row input[type=text]{border:1px solid #dce1ec;border-radius:8px;padding:6px 10px;font-size:13px}
.link-box{display:flex;align-items:center;gap:8px;background:#f5f7fb;border-radius:10px;
  padding:10px 12px;font-size:13px;color:#444b5e;word-break:break-all}
.group-progress{display:flex;gap:10px;margin:12px 0}
.gp-item{flex:1;text-align:center;background:#f5f7fb;border-radius:10px;padding:12px}
.gp-item .n{font-size:20px;font-weight:800;color:#4d6bfe}
.gp-item .t{font-size:11px;color:#8a93a8;margin-top:2px}

/* ============ V15 像素方块风统一覆盖 ============ */
/* 去掉大圆角，统一硬边方块；保留小圆角3-4px */
.stat-card,.prod-card,.order-item,.shop-card,.fi-item,.plaza-card,.link-box,.setting-row,
.pay-ch,.face-box,.spec-box,.opt-chip,.step-dot,.wizard-step,.bell-dropdown,.bd-item,
.msg-card,.group-progress,.recharge-pack,.ai-panel,.effect-box,.sample-box,.progress-track{
  border-radius:4px!important}
.prod-card,.order-item,.fi-item,.plaza-card,.shop-card,.recharge-pack,.setting-row{
  border:2px solid var(--line)!important;box-shadow:3px 3px 0 rgba(31,32,48,.1)!important}
.stat-card{border:2px solid var(--line);box-shadow:3px 3px 0 rgba(31,32,48,.1);background:var(--card)}
/* 统计数字像素感 */
.stat-card .n{font-weight:800;letter-spacing:-.5px}
/* 分段选择器、选项方块化 */
.opt-chip{border:2px solid var(--line-2)!important;background:#f7f4ec;font-weight:600}
.opt-chip.on{border-color:var(--brand)!important;background:var(--brand-soft)!important;color:var(--brand);box-shadow:2px 2px 0 rgba(31,32,48,.1)}
/* 进度条像素化 */
.progress-track{background:#e4ddc9;border:2px solid var(--line);height:14px;overflow:hidden;padding:0}
.progress-fill{background:repeating-linear-gradient(45deg,var(--brand) 0 6px,#5b76ff 6px 12px);height:100%}
/* 链接盒 */
.link-box{background:#f7f4ec;border:2px solid var(--line-2)!important;padding:9px 11px;display:flex;align-items:center;gap:9px}
/* 铃铛下拉像素化 */
.bell-dropdown{border:3px solid var(--line)!important;box-shadow:5px 5px 0 rgba(31,32,48,.2)!important;border-radius:4px!important;background:var(--card)}
.bd-item{border-bottom:2px solid var(--line-2)!important}
.bd-item.unread{background:var(--brand-soft)}
.bd-dot{width:9px;height:9px;background:var(--red);border:1.5px solid var(--line);border-radius:0!important}
/* 充值套餐 */
.recharge-pack.recommend{border-color:var(--brand)!important;box-shadow:3px 3px 0 rgba(59,91,255,.3)!important}
/* 登录页像素背景 */
.auth-page{background:
  linear-gradient(rgba(31,32,48,.035) 1px,transparent 1px),
  linear-gradient(90deg,rgba(31,32,48,.035) 1px,transparent 1px),
  linear-gradient(165deg,#e6ebff 0%,#f4f0e6 55%)!important;
  background-size:20px 20px,20px 20px,100% 100%}
.auth-logo{filter:drop-shadow(3px 3px 0 rgba(31,32,48,.2))}
/* 开关像素化 */
.switch input{accent-color:var(--brand);width:22px;height:22px}
/* 头像方块化 */
.avatar,.fi-img,.prod-img{border-radius:3px!important}
/* 步骤条像素点 */
.step-dot{border:2px solid var(--line);background:#e4ddc9;width:26px;height:26px;border-radius:3px!important;
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px}
.step-dot.on{background:var(--brand);color:#fff;box-shadow:2px 2px 0 rgba(31,32,48,.2)}
/* 3D盒子选面器像素化 */
.face-box{border:2px solid var(--line-2)!important;background:#f7f4ec;font-weight:600}
.face-box.on{border-color:var(--brand)!important;background:var(--brand-soft)!important;color:var(--brand)}
/* BoxBot 浮动吉祥物（AI助手按钮） */
.boxbot-fab{position:absolute;right:14px;bottom:84px;width:52px;height:52px;z-index:40;
  background:var(--brand);border:2px solid var(--line);border-radius:4px;box-shadow:3px 3px 0 var(--line);
  display:flex;align-items:center;justify-content:center;padding:6px;cursor:pointer}
.boxbot-fab:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}
/* 像素跳动动画 */
@keyframes pixelBlink{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.boxbot-fab svg{animation:pixelBlink 1.6s steps(2) infinite}
/* 标题像素描边感 */
.ah-title{text-shadow:2px 2px 0 rgba(31,32,48,.06)}
/* 空状态用 BoxBot */
.empty .e-ico{image-rendering:pixelated}


/* ============ 嵌入式游戏化：奖励弹窗 / 经验条 / 今日成长卡 ============ */
/* 奖励事件自动浮层（不打断操作，自动消失） */
#rewardToastLayer{position:absolute;top:52px;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column;gap:8px;pointer-events:none;width:min(88%,360px)}
.reward-toast{display:flex;align-items:center;gap:10px;background:var(--card);border:2px solid var(--line);border-left-width:6px;border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:9px 12px;opacity:0;transform:translateY(-16px) scale(.96);transition:all .28s cubic-bezier(.2,1.4,.4,1)}
.reward-toast.show{opacity:1;transform:translateY(0) scale(1)}
.rt-ico{width:38px;height:38px;flex:none;display:flex;align-items:center;justify-content:center;border:2px solid var(--line);border-radius:var(--radius-sm);image-rendering:pixelated}
.rt-ico svg{display:block}
.rt-body{flex:1;min-width:0}
.rt-label{font-size:10px;font-weight:800;color:var(--sub);letter-spacing:1px}
.rt-title{font-size:13px;font-weight:800;color:var(--txt);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt-gain{font-size:12px;font-weight:800;color:var(--green);margin-top:1px}
/* 我的页头部经验条 */
.xpbar{position:relative;margin-top:6px;height:14px;background:#e8e3d4;border:2px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
.xpbar-fill{position:absolute;left:0;top:0;bottom:0;background:repeating-linear-gradient(45deg,#5d9c3c,#5d9c3c 6px,#4f8a32 6px,#4f8a32 12px);transition:width .5s}
.xpbar-txt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:800;color:#fff;text-shadow:1px 1px 0 rgba(0,0,0,.4);letter-spacing:.5px}
.streak-tag{display:inline-block;margin-top:3px;font-size:10px;font-weight:800;color:#b45309;background:#fef3c7;border:1.5px solid #f5b800;border-radius:var(--radius-sm);padding:1px 6px}
/* 今日成长卡 */
.growth-card{cursor:pointer;padding:13px 14px!important;background:linear-gradient(180deg,#fffdf7,#f6f2e6)!important}
.gc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.gc-title{font-weight:800;font-size:14px;display:flex;align-items:center;gap:5px}
.gc-sub{font-size:10px;font-weight:600;color:var(--faint);margin-left:4px}
.gc-more{font-size:11px;font-weight:700;color:var(--brand)}
.gc-streak{display:flex;gap:8px;margin-bottom:10px}
.gcs-item{flex:1;text-align:center;background:var(--card);border:2px solid var(--line);border-radius:var(--radius-sm);box-shadow:2px 2px 0 rgba(31,32,48,.1);padding:6px 2px}
.gcs-item b{display:block;font-size:17px;font-weight:900;color:var(--brand-d);line-height:1.1}
.gcs-item span{font-size:10px;color:var(--sub)}
.tq-list{display:flex;flex-direction:column;gap:6px}
.tq-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:6px 9px;background:var(--card);border:1.5px solid var(--line-2);border-radius:var(--radius-sm)}
.tq-row.done{background:var(--green-soft);border-color:#9ed3a6}
.tq-name{display:flex;align-items:center;gap:5px;font-weight:700;color:var(--txt)}
.tq-check{display:inline-flex;width:15px;height:15px;align-items:center;justify-content:center;background:var(--green);color:#fff;font-size:10px;font-weight:900;border-radius:2px}
.tq-prog{font-size:11px;font-weight:800;color:var(--sub)}
.tq-row.done .tq-prog{color:var(--green)}

/* 广场-全球地图紧凑入口 */
.map-mini{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#3b5bff,#5d9c3c);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:9px 12px;margin-bottom:12px;cursor:pointer;color:#fff}
.map-mini:active{transform:translate(1px,1px)}
.mm-globe{font-size:22px;line-height:1;filter:drop-shadow(1px 1px 0 rgba(0,0,0,.3))}
.mm-txt{flex:1;display:flex;flex-direction:column}
.mm-txt b{font-size:13px;font-weight:800}
.mm-txt span{font-size:10.5px;opacity:.9}
.mm-arrow{font-size:20px;font-weight:900}

/* 成长中心-实时待办任务 */
.ms-count{font-size:11px;font-weight:800;color:var(--brand);background:var(--brand-soft);border-radius:3px;padding:1px 7px;margin-left:6px}
.ms-row{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1.5px dashed var(--line-2)}
.ms-row:last-child{border-bottom:0}
.ms-row.done{opacity:.62}
.ms-ico{width:34px;height:34px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--bg);border:2px solid var(--line);border-radius:3px}
.ms-row.done .ms-ico{background:var(--green-soft);border-color:#9ed3a6}
.ms-body{flex:1;min-width:0}
.ms-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:5px}
.ms-ok{display:inline-flex;width:15px;height:15px;align-items:center;justify-content:center;background:var(--green);color:#fff;font-size:10px;border-radius:2px}
.ms-desc{font-size:11px;color:var(--sub);margin-top:1px}
.ms-state{font-size:11px;font-weight:800;color:var(--green)}

/* ===== V19 头像 / 等级星星 ===== */
.avatar-edit-row{display:flex;align-items:center;gap:14px;margin:4px 0 12px;padding:12px;background:var(--bg);border:2px solid var(--line);border-radius:4px}
.avatar-edit{position:relative;width:64px;height:64px;flex:none;border-radius:14px;overflow:hidden;background:#fff;border:2px solid var(--line);cursor:pointer;display:flex;align-items:center;justify-content:center}
.avatar-edit img{width:100%;height:100%;object-fit:cover}
.avatar-edit-badge{position:absolute;right:0;bottom:0;background:var(--brand);color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:0 0 12px 0}
.ua-img{position:relative;display:inline-flex;align-items:center;justify-content:center;border-radius:14px;overflow:hidden;background:#fff;border:2px solid var(--line);flex:none}
.ua-img img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.ua-ph{display:inline-flex;width:100%;height:100%;align-items:center;justify-content:center;color:var(--sub)}
/* 等级边框：每5级一档配色 */
.ua-tier0{border-color:#9aa3b2}
.ua-tier1{border-color:#5d9c3c;box-shadow:0 0 0 2px rgba(93,156,60,.18)}
.ua-tier2{border-color:#3b5bff;box-shadow:0 0 0 2px rgba(59,91,255,.18)}
.ua-tier3{border-color:#a05cff;box-shadow:0 0 0 2px rgba(160,92,255,.2)}
.ua-tier4{border-color:#f5b800;box-shadow:0 0 0 2px rgba(245,184,0,.28)}
.mine-avatar{position:relative;cursor:pointer;flex:none}
.mine-avatar-edit{position:absolute;right:-2px;bottom:-2px;background:var(--brand);color:#fff;width:18px;height:18px;border-radius:9px;display:flex;align-items:center;justify-content:center;border:2px solid #fffdf7}
.mine-stars{display:flex;align-items:center;gap:6px;margin:3px 0}
.lvl-stars{display:inline-flex;gap:1px;align-items:center}
/* AI助手独立横滑栏：保证最后一个按钮完整可见、可顺滑横拖 */
.support-sheet .bb-quick{width:100%;box-sizing:border-box;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scroll-padding-right:14px}
.support-sheet .bb-quick button{touch-action:pan-x}
.support-sheet .bb-quick::after{content:'';flex:0 0 6px}
/* 成长任务去完成按钮 */
.ms-row .btn.sm{flex-shrink:0}

/* ===== AI助手-图文教程 ===== */
.gd-intro{font-size:12px;line-height:1.6;color:var(--sub);background:var(--brand-soft);border:2px solid var(--line);border-radius:4px;padding:9px 11px;margin-bottom:10px}
.gd-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;scrollbar-width:none;margin:0 -2px}
.gd-chips::-webkit-scrollbar{display:none}
.gd-chip{flex-shrink:0;font-family:inherit;font-size:12px;font-weight:700;padding:5px 12px;border:2px solid var(--line);background:#fffdf7;border-radius:20px;cursor:pointer;color:#5a6577}
.gd-chip.on{background:var(--brand);border-color:var(--line);color:#fffdf7}
.gd-list{display:flex;flex-direction:column;gap:8px;padding-bottom:12px}
.gd-item{display:flex;align-items:center;gap:10px;background:#fffdf7;border:2px solid var(--line);border-radius:4px;padding:10px 11px;box-shadow:2px 2px 0 rgba(31,32,48,.08);cursor:pointer}
.gd-item:active{transform:translate(1px,1px);box-shadow:none}
.gd-ico{width:34px;height:34px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--bg);border:2px solid var(--line);border-radius:3px}
.gd-body{flex:1;min-width:0}
.gd-title{font-size:13px;font-weight:700}
.gd-goal{font-size:11px;color:var(--sub);margin-top:2px}
.gd-arrow{color:var(--faint);font-size:18px;font-weight:700}
.gd-back{font-family:inherit;font-size:12px;font-weight:700;background:none;border:0;color:var(--brand);padding:0 0 8px;cursor:pointer}
.gda-h{font-size:15px;margin:0 0 6px;display:flex;gap:6px;align-items:center}
.gda-goal{font-size:12px;color:var(--brand);font-weight:700;background:var(--brand-soft);border-radius:3px;padding:6px 10px;margin-bottom:12px}
.gda-steps{display:flex;flex-direction:column;gap:12px}
.gda-step{display:flex;gap:9px;align-items:flex-start}
.gda-num{flex:none;width:22px;height:22px;background:var(--brand);color:#fffdf7;font-weight:800;font-size:12px;border-radius:3px;display:flex;align-items:center;justify-content:center;margin-top:1px}
.gda-text{flex:1;font-size:13px;line-height:1.65}
.gda-qa-wrap{margin-top:14px;border-top:2px dashed var(--line-2);padding-top:10px}
.gda-qa-title{font-size:12px;font-weight:800;color:var(--sub);margin-bottom:7px}
.gda-qa{background:var(--bg);border:2px solid var(--line);border-radius:4px;padding:8px 10px;margin-bottom:7px}
.gda-q{font-size:12px;font-weight:700;margin-bottom:3px}
.gda-a{font-size:12px;line-height:1.6;color:var(--sub)}
.gda-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;padding-bottom:14px}
/* 界面像素示意：小手机版面 + 高亮 + 箭头 */
.gmock{position:relative;margin:9px 0 4px;border:2px solid var(--line);border-radius:5px;background:#fff;overflow:hidden}
.gm-arrow{position:absolute;top:-2px;left:10px;color:#e0443a;font-weight:900;font-size:13px;z-index:2;animation:gmBounce 1.1s infinite}
@keyframes gmBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(3px)}}
.gm-screen{padding:22px 11px 11px;display:flex;flex-direction:column;gap:7px;background:
  repeating-linear-gradient(45deg,#faf8f1,#faf8f1 6px,#f4f1e8 6px,#f4f1e8 12px)}
.gm-bar{display:flex;justify-content:space-around;align-items:center;background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:8px 4px;font-size:11px;color:#8a90a0;font-weight:700}
.gm-cols{display:flex;gap:8px}
.gm-cols span{flex:1;text-align:center;background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:14px 4px;font-size:11px;font-weight:700;color:#5a6577}
.gm-cardline{background:#fffdf7;border:2px solid var(--line);border-radius:3px;padding:8px 10px;font-size:11px;color:#8a90a0}
.gm-btn{align-self:flex-start;font-size:11px;font-weight:800;padding:6px 12px;border-radius:3px;border:2px solid var(--line);background:#eef0f6;color:#5a6577}
.gm-hl,.gm-cardline.hl,.gm-cols span.gm-hl{background:var(--brand);color:#fffdf7;border-color:var(--line);animation:gmPulse 1.4s infinite}
.gm-btn.hl{background:var(--brand);color:#fffdf7}
.gm-cardline.hl{color:#fffdf7}
@keyframes gmPulse{0%,100%{box-shadow:0 0 0 0 rgba(59,91,255,.35)}50%{box-shadow:0 0 0 4px rgba(59,91,255,.12)}}
.gm-cap{font-size:11px;color:var(--sub);padding:6px 11px;background:var(--bg);border-top:1.5px dashed var(--line-2)}

/* ===== 成长规则弹层 ===== */
.lvl-rules-btn{margin-top:9px;width:100%;font-family:inherit;font-size:12px;font-weight:700;color:var(--brand);background:var(--brand-soft);border:2px solid var(--line);border-radius:3px;padding:7px 10px;display:flex;align-items:center;justify-content:center;gap:6px;cursor:pointer}
.lvl-rules-btn:active{transform:translate(1px,1px)}
.gr-mask{position:fixed;inset:0;background:rgba(24,26,38,.45);z-index:9999;display:flex;align-items:flex-end;justify-content:center}
.gr-sheet{width:100%;max-width:560px;max-height:88vh;background:#fffdf7;border:3px solid var(--ink,#1f2030);border-bottom:0;border-radius:10px 10px 0 0;display:flex;flex-direction:column;box-shadow:0 -8px 30px rgba(0,0,0,.25)}
.gr-head{display:flex;align-items:center;justify-content:space-between;padding:13px 15px;border-bottom:2px solid var(--line);font-size:15px}
.gr-head b{display:flex;align-items:center;gap:7px}
.gr-ver{font-size:11px;font-weight:700;color:#5d9c3c;background:#eaf5e4;border:1.5px solid #bfe0ae;border-radius:3px;padding:1px 6px;margin-left:2px}
.gr-x{cursor:pointer;color:#8a90a0;font-size:16px;font-weight:700;padding:2px 6px}
.gr-scroll{overflow-y:auto;padding:12px 15px 26px}
.gr-note{font-size:12px;line-height:1.65;color:#35508a;background:var(--brand-soft);border:2px solid var(--line);border-radius:4px;padding:9px 11px;margin-bottom:12px}
.gr-scroll h4{font-size:13px;margin:14px 0 8px;padding-left:8px;border-left:4px solid var(--brand)}
.gr-table{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border:2px solid var(--line)}
.gr-table th,.gr-table td{border:1px solid var(--line-2,#e7e3d6);padding:5px 7px;text-align:left}
.gr-table th{background:var(--bg);font-weight:800}
.gr-table td.num{color:var(--sub);white-space:nowrap}
.gr-table td.stars{white-space:nowrap}
.gr-lines{display:flex;flex-direction:column;gap:5px}
.gr-line{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:12px;background:#fff;border:1.5px solid var(--line-2,#e7e3d6);border-radius:3px;padding:6px 9px}
.gr-line b{white-space:nowrap;color:#35508a}
.gr-line b.minus{color:#c0442f}
.gr-sub{font-size:11px;color:var(--sub);line-height:1.6;margin-top:7px}
@media(min-width:720px){.gr-mask{align-items:center}.gr-sheet{border-bottom:3px solid var(--ink,#1f2030);border-radius:10px;max-height:80vh}}


/* ============================================================
   V32 丝滑与清晰度升级层（只增强、不改动原有布局结构）
   ============================================================ */
:root{
  --ease:cubic-bezier(.22,.61,.36,1);
}
/* 1. 每次切页，内容轻微上浮淡入，转场更顺 */
@keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.view>*{animation:viewIn .26s var(--ease) both}
.view .card{animation:viewIn .3s var(--ease) both}
/* 弹层进场更柔 */
@keyframes modalIn{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
.modal,.modal-mask .modal{animation:modalIn .24s var(--ease) both}
@keyframes maskIn{from{opacity:0}to{opacity:1}}
.modal-mask{animation:maskIn .18s ease both}

/* 2. 全局交互过渡更顺滑（按压/选中/切换） */
.btn,.seg button,.tag,.card,.big-opt,.clickable,[onclick]{transition:transform .12s var(--ease),box-shadow .12s var(--ease),background-color .12s var(--ease),border-color .12s var(--ease),color .12s var(--ease)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none!important;box-shadow:2px 2px 0 var(--line)!important}

/* 3. 主按钮更突出：更立体、文字更清晰 */
.btn{letter-spacing:.5px;font-weight:800}
.btn:not(.ghost):not(.line):not(.gray){background:linear-gradient(180deg,#4a68ff,var(--brand) 55%,var(--brand-d));text-shadow:0 1px 0 rgba(0,0,0,.18)}
.btn:active{transform:translate(2px,2px)!important}

/* 4. 电脑端（有鼠标）才给悬停上浮，触屏不触发避免粘滞 */
@media (hover:hover) and (pointer:fine){
  .btn:not(:disabled):hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--line)}
  .btn:not(:disabled):active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--line)}
  .card.clickable:hover,.big-opt:hover,.feed-item[onclick]:hover{transform:translate(-1px,-1px);box-shadow:5px 5px 0 rgba(31,32,48,.16)}
  .seg button:hover:not(.on){background:rgba(31,32,48,.06)}
  input:hover,select:hover,textarea:hover{border-color:#9aa0b5}
}

/* 5. 输入聚焦更明确（蓝色描边 + 柔和光晕） */
input:focus,select:focus,textarea:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(59,91,255,.14),inset 2px 2px 0 rgba(59,91,255,.05)}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

/* 6. 卡片层次：标题与内容拉开对比 */
.card h2.sec{font-weight:800;color:#16172a;padding-bottom:9px;border-bottom:2px solid var(--line-2);margin-bottom:13px}
.page-head p{line-height:1.5}

/* 7. 关键数字（统计/金额）更醒目、等宽数字不跳动 */
.sg .n,.kpi-card .n,.stat-card .n{font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.price{font-variant-numeric:tabular-nums}

/* 8. 分段选择器选中块加轻微滑动底色的质感 */
.seg{background:#ddd6c4}
.seg button.on{box-shadow:2px 2px 0 rgba(0,0,0,.22);letter-spacing:.5px}

/* 9. 电脑端细滚动条（手机端仍隐藏） */
@media (hover:hover) and (pointer:fine){
  .view::-webkit-scrollbar,.adm-content::-webkit-scrollbar,.modal::-webkit-scrollbar{width:8px;height:8px;display:block}
  .view::-webkit-scrollbar-thumb,.adm-content::-webkit-scrollbar-thumb,.modal::-webkit-scrollbar-thumb{background:rgba(31,32,48,.22);border-radius:8px;border:2px solid transparent;background-clip:content-box}
  .view::-webkit-scrollbar-thumb:hover,.adm-content::-webkit-scrollbar-thumb:hover{background:rgba(31,32,48,.38);background-clip:content-box}
  .view::-webkit-scrollbar-track{background:transparent}
}

/* 10. 可点列表项给出明确手感 */
.clickable,[onclick].card,.feed-item{cursor:pointer;-webkit-user-select:none;user-select:none}
.big-opt{cursor:pointer}

/* 11. 标签更利落 */
.tag{font-weight:700;letter-spacing:.2px}

/* 12. 开关更顺滑 */
.switch input{accent-color:var(--brand);cursor:pointer;transition:transform .1s}
.switch input:active{transform:scale(1.12)}

/* 13. 顶部返回/图标按钮点击区域放大、反馈明确 */
.app-header button,.ah-back,.ss-icon-btn{cursor:pointer;transition:transform .1s var(--ease),background-color .12s}
.app-header button:active{transform:scale(.9)}

/* 14. 底部导航切换更稳 */
.tabbar a{transition:color .12s var(--ease),transform .12s var(--ease)}
.tabbar a:active{transform:scale(.92)}
.tabbar a.active{font-weight:800}

/* 15. 尊重系统"减少动态效果"设置 */
@media (prefers-reduced-motion:reduce){
  .view>*,.view .card,.modal,.modal-mask{animation:none!important}
  *{transition-duration:.01ms!important}
}

/* ============ V33 · 简洁舒适化（线条图标 + 宽松排版 + 柔化边框） ============ */
:root{
  --line:#36384a;            /* 边框从死黑 #2b2b3a 柔化为深灰蓝 */
  --line-2:#e2dccb;
  --shadow:2px 2px 0 rgba(31,32,48,.10);
  --shadow-lg:4px 4px 0 rgba(31,32,48,.14);
  --radius:6px; --radius-sm:4px;
}
body{font-size:15.5px;line-height:1.62}
h1,h2,h3{font-weight:680;letter-spacing:-.2px}

/* 顶部标题 */
.ah-title{font-size:22px;letter-spacing:-.3px}
.ah-icon{width:38px;height:38px;border-radius:5px;box-shadow:2px 2px 0 var(--line)}

/* 内容区更宽松 */
.view{padding:6px 14px 30px}
.page-head{margin:4px 2px 16px}
.page-head p{font-size:13.5px;line-height:1.55}

/* 卡片：内边距加大、圆角微增、间距放宽 */
.card{padding:16px 17px;margin-bottom:14px;border-radius:6px;box-shadow:var(--shadow)}
.card .sec{font-size:15.5px;margin-bottom:12px;padding-bottom:9px;letter-spacing:-.1px}

/* 按钮：触控区≥44px，字号舒适 */
.btn{min-height:44px;padding:0 18px;font-size:15px;border-radius:6px;font-weight:600;letter-spacing:.2px}
.btn.sm{min-height:36px;padding:0 14px;font-size:13.5px;border-radius:5px}
.btn.primary{box-shadow:2px 2px 0 var(--brand-d)}

/* 输入框 */
input,select,textarea{font-size:15.5px;padding:11px 13px;border-radius:6px;border-width:2px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,255,.12)}

/* 列表行更透气 */
.list-row,.order-row,.pub-row,.msg-row{padding:14px 0}
.list-row + .list-row,.order-row + .order-row,.pub-row + .pub-row{border-top:1px solid var(--line-2)}

/* 底部 Tab：文字清晰（图标尺寸由 pix() 内联参数控制） */
.tab-item{padding:8px 0 7px;font-size:11.5px;gap:3px}

/* 金额等宽数字 */
.price,.amount,.total{font-variant-numeric:tabular-nums;letter-spacing:-.3px}

/* 空状态更柔和 */
.empty{padding:28px 16px;color:var(--faint);font-size:14px;line-height:1.6;text-align:center}

/* 标签/徽章圆角 */
.badge,.tag,.chip{border-radius:4px;padding:2px 8px;font-size:12px}

/* （已移除冲突的 .switch 小开关样式——原 .switch 是"标签+复选框"行，不可覆盖） */

/* 电脑端手机框内滚动条更细 */
@media(hover:hover){
  .view::-webkit-scrollbar{width:3px}
  .view::-webkit-scrollbar-thumb{background:rgba(31,32,48,.18);border-radius:2px}
}

/* 减弱动画幅度，更克制 */
@keyframes viewIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
.view>*{animation:viewIn .22s ease-out}

/* ============ V35 · 微交互：抽屉 / 弹性 / 按压 / 下拉刷新 ============ */
:root{
  --spring:cubic-bezier(0.32,0.72,0,1);        /* 标准弹性（豆包/苹果感） */
  --spring-bounce:cubic-bezier(0.34,1.4,0.64,1); /* 带回弹的弹性 */
}

/* ---- 菜单按钮 ---- */
.ah-menu{width:36px;height:36px;border:none;background:transparent;border-radius:6px;
  display:flex;align-items:center;justify-content:center;color:var(--txt);cursor:pointer;
  margin-left:-4px;font-family:inherit;transition:background .15s var(--spring)}
.ah-menu:active{background:var(--line-2)}

/* ---- 抽屉遮罩 ---- */
.drawer-mask{position:absolute;inset:0;background:rgba(20,22,35,.45);z-index:40;
  opacity:0;pointer-events:none;transition:opacity .28s var(--spring)}
.drawer-mask.show{opacity:1;pointer-events:auto}

/* ---- 左侧抽屉 ---- */
.drawer{position:absolute;top:0;left:0;bottom:0;width:78%;max-width:300px;z-index:41;
  background:var(--card);border-right:2px solid var(--line);
  transform:translateX(-102%);transition:transform .32s var(--spring);
  display:flex;flex-direction:column;box-shadow:4px 0 24px rgba(20,22,35,.18);
  overflow-y:auto;overflow-x:hidden}
.drawer.open{transform:translateX(0)}

/* 抽屉头部 */
.drawer-head{display:flex;align-items:center;gap:12px;padding:20px 18px 16px;
  background:linear-gradient(135deg,var(--brand-soft),#fff);border-bottom:1px solid var(--line-2)}
.drawer-avatar{width:48px;height:48px;border-radius:12px;background:var(--brand);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:700;
  border:2px solid var(--line);box-shadow:2px 2px 0 var(--line);flex-shrink:0}
.drawer-user{flex:1;min-width:0}
.drawer-name{font-size:16px;font-weight:700;color:var(--txt);letter-spacing:-.2px}
.drawer-shop{font-size:12.5px;color:var(--sub);margin-top:2px;line-height:1.4}
.drawer-level{font-size:11px;font-weight:700;color:var(--brand);background:var(--brand-soft);
  padding:3px 8px;border-radius:4px;border:1px solid rgba(59,91,255,.2);white-space:nowrap}

/* 抽屉分组 */
.drawer-body{flex:1;padding:8px 0}
.drawer-sec{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;
  letter-spacing:1px;padding:14px 20px 6px}
.drawer-item{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;
  color:var(--txt);font-size:15px;transition:background .15s var(--spring);position:relative}
.drawer-item:active{background:var(--brand-soft)}
.drawer-item .di-ico{width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--brand);flex-shrink:0}
.drawer-item .di-arrow{margin-left:auto;color:var(--faint);font-size:18px;font-weight:300}

/* 抽屉底部 */
.drawer-foot{display:flex;gap:8px;padding:14px 16px 20px;border-top:1px solid var(--line-2);
  background:var(--bg)}
.df-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  min-height:40px;padding:0 12px;font-size:13.5px;font-weight:600;color:var(--txt);
  background:var(--card);border:2px solid var(--line);border-radius:6px;cursor:pointer;
  box-shadow:2px 2px 0 var(--line);transition:transform .1s var(--spring)}
.df-btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}

/* ---- 按压反馈（全局 .pressing） ---- */
.pressing{transform:scale(0.97)!important;transition:transform .08s ease-out!important}
.btn.pressing{box-shadow:1px 1px 0 var(--line)!important}
.card.pressing{box-shadow:1px 1px 0 rgba(31,32,48,.08)!important}

/* ---- 下拉刷新指示器 ---- */
.ptr-indicator{height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:8px;
  background:transparent;transition:height .25s var(--spring);color:var(--sub);font-size:13px}
.ptr-indicator.ready{color:var(--brand)}
.ptr-spinner{width:16px;height:16px;border:2px solid var(--line-2);border-top-color:var(--brand);
  border-radius:50%;flex-shrink:0}
.ptr-indicator.loading .ptr-spinner{animation:ptrSpin .7s linear infinite}
@keyframes ptrSpin{to{transform:rotate(360deg)}}

/* ---- 全局弹性过渡 ---- */
.btn,.card,.ah-icon,.tabbar a,.drawer-item,.map-entry,.switch,.badge,.tag{
  transition:transform .15s var(--spring),box-shadow .15s var(--spring),background .15s var(--spring)}

/* 减少动画用户适配 */
@media(prefers-reduced-motion:reduce){
  .drawer,.drawer-mask,.view>*{transition:none!important;animation:none!important}
}

/* ============ V35.1 · 修复switch冲突 + 抽屉豆包化排版 + iOS视觉触觉 ============ */

/* 抽屉：更宽松的排版，图标单色（豆包感） */
.drawer-head{padding:22px 20px 18px;gap:14px}
.drawer-avatar{width:50px;height:50px;border-radius:14px;font-size:23px}
.drawer-name{font-size:16.5px}
.drawer-shop{font-size:13px;margin-top:3px}
.drawer-sec{padding:16px 20px 7px;font-size:11.5px;letter-spacing:1.2px}
.drawer-item{padding:14px 20px;font-size:15.5px;gap:13px}
.drawer-item .di-ico{color:var(--txt);opacity:.75;width:21px;height:21px}
.drawer-item:active{background:rgba(31,32,48,.06)}
.drawer-item .di-arrow{font-size:17px;opacity:.4}
.drawer-foot{padding:16px 16px 22px;gap:10px}
.df-btn{min-height:42px;font-size:14px}

/* 开关行：说明文字不溢出 */
.switch .sw-sub{line-height:1.45;margin-top:2px;display:block}
.switch > div:first-child{flex:1;min-width:0}

/* iOS 无震动 API，用更强的视觉按压替代 */
.pressing{transform:scale(0.96)!important;filter:brightness(.96)!important}
.btn.pressing{box-shadow:1px 1px 0 var(--line)!important;filter:none!important}
.card.pressing{box-shadow:1px 1px 0 rgba(31,32,48,.08)!important;filter:none!important}
.drawer-item.pressing{background:rgba(31,32,48,.08)!important;transform:none!important}

/* 批量上传条文字不换行溢出 */
.batch-import-bar span{flex:1;min-width:0;line-height:1.4}
.batch-import-bar .btn{flex-shrink:0}

/* ============ V36.1 · 横向滚动容器修复 + 爽快手感 ============ */

/* AI助手Tab栏：5个标签窄屏溢出，改为可横向滑动+吸附 */
.bb-tabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
  scroll-snap-type:x proximity;gap:6px;padding:0 12px 10px}
.bb-tabs::-webkit-scrollbar{display:none}
.bb-tab{flex:0 0 auto;min-width:72px;padding:8px 10px;font-size:12.5px;scroll-snap-align:start;
  white-space:nowrap;border-radius:6px;transition:transform .12s var(--spring),background .15s var(--spring)}
.bb-tab:active{transform:scale(.95)}

/* 快捷按钮行：滚动吸附 */
.bb-quick{scroll-snap-type:x proximity;scrollbar-width:none}
.bb-quick::-webkit-scrollbar{display:none}
.bb-quick>*{scroll-snap-align:start;flex-shrink:0}

/* 筛选栏：隐藏滚动条 */
.filter-bar{scrollbar-width:none}
.filter-bar::-webkit-scrollbar{display:none}

/* 规格选项行：窄屏不溢出，内部可缩 */
.dyn-field{flex-wrap:nowrap;gap:6px}
.dyn-field input{min-width:0}
.dyn-field .btn{flex-shrink:0}

/* 所有横向滚动区：顺滑+隐藏滚动条统一处理 */
.horizontal-scroll{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.horizontal-scroll::-webkit-scrollbar{display:none}

/* （边缘渐隐提示已移除——避免内容不溢出时右侧也变淡） */

/* ============ V39 · 菜单全站可见 + 头部双按钮适配 ============ */
.ah-left{gap:2px}
.ah-menu{margin-left:-6px;flex-shrink:0}
.ah-back{margin-left:0;flex-shrink:0}
.ah-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 抽屉拖拽关闭时，内容也跟着轻微变暗 */
.drawer.dragging{transition:none!important}


/* ============================================================
   V40 · 豆包极简风主题 —— 灰白底 / 白卡片 / 无硬边 / 柔和阴影 / 大圆角
   像素风仅保留在 logo、BoxBot 吉祥物、图标上
   ============================================================ */

:root{
  --bg:#f7f7f8;          /* 豆包浅灰底 */
  --card:#ffffff;         /* 纯白卡片 */
  --line:#e8e8ed;         /* 极淡分割线 */
  --txt:#1c1c1e;          /* 近黑主文字 */
  --sub:#8a8a8e;          /* 次级灰 */
  --faint:#c5c5ca;        /* 更淡 */
  --brand:#3b5bff;        /* 品牌蓝保持 */
  --orange:#ff7a1a;
  --green:#34c759;
  --red:#ff3b30;
  --shadow:0 1px 3px rgba(0,0,0,.04), 0 1px 2px rgba(0,0,0,.05);
  --shadow-lg:0 8px 30px rgba(0,0,0,.10);
  --radius:14px;
  --radius-sm:10px;
  --spring:cubic-bezier(0.32,0.72,0,1);
}

/* 全局底色 */
body,.phone-screen,.view{background:var(--bg)}

/* 桌面舞台：去掉像素网格，纯色 */
.phone-stage{background:#e8e8ed;background-image:none}

/* 卡片：去硬边框，柔和阴影，大圆角 */
.card{
  border:none;
  box-shadow:var(--shadow);
  border-radius:var(--radius);
  padding:16px 17px;
  background:var(--card);
}

/* 按钮：去边框去偏移阴影，圆润 */
.btn{
  border:none;
  border-radius:var(--radius-sm);
  font-weight:600;
  box-shadow:none;
  transition:transform .12s var(--spring),background .15s var(--spring),opacity .15s;
}
.btn:active{transform:scale(.96)}
.btn.primary{background:var(--brand);color:#fff;box-shadow:0 2px 10px rgba(59,91,255,.28)}
.btn.ghost{background:#f0f0f3;color:var(--txt)}
.btn.danger{background:#ffe5e3;color:var(--red)}
.btn.sm{border-radius:8px;padding:6px 12px;font-size:13px}
.btn.lg{border-radius:12px;padding:14px;font-size:16px}

/* 输入框：浅灰底，圆角，聚焦蓝环 */
input,select,textarea{
  background:#f0f0f3;
  border:none;
  border-radius:var(--radius-sm);
  padding:12px 14px;
  font-size:15px;
  color:var(--txt);
  transition:background .15s,box-shadow .15s;
}
input:focus,select:focus,textarea:focus{
  background:#fff;
  box-shadow:0 0 0 2.5px rgba(59,91,255,.25);
  outline:none;
}
.field label{color:var(--sub);font-size:13px;font-weight:500}

/* 分段控件（全部/商品供应/采购需求）：浅灰底胶囊 */
.seg{
  background:#f0f0f3;
  border:none;
  border-radius:var(--radius-sm);
  padding:4px;
  gap:2px;
}
.seg button{
  border-radius:8px;
  font-weight:600;
  color:var(--sub);
  background:transparent;
  border:none;
  box-shadow:none;
  transition:all .15s var(--spring);
}
.seg button.on{
  background:#fff;
  color:var(--txt);
  box-shadow:0 1px 3px rgba(0,0,0,.08);
}

/* 底部导航：白底，淡顶线 */
.tabbar{
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);
  border-top:1px solid var(--line);
  box-shadow:none;
  padding-bottom:env(safe-area-inset-bottom);
}
.tabbar .tb-item{color:var(--faint)}
.tabbar .tb-item.active{color:var(--brand)}
.tabbar .tb-fab{
  background:var(--brand);
  box-shadow:0 4px 14px rgba(59,91,255,.35);
  border:none;
}

/* 头部：透明底，去边框 */
.app-header{
  background:var(--bg);
  border-bottom:none;
  backdrop-filter:blur(20px);
}
.ah-icon{
  border:none;
  background:#f0f0f3;
  box-shadow:none;
  border-radius:var(--radius-sm);
  color:var(--txt);
}
.ah-title{font-weight:700;font-size:17px}

/* 分类标签按钮：白底淡边，选中深色 */
.filter-bar button{
  box-shadow:none;
  background:#fff;
  border:1px solid var(--line);
  color:var(--sub);
  font-weight:500;
}
.filter-bar button.on{
  background:var(--txt);
  color:#fff;
  border-color:var(--txt);
}

/* 标签/徽章：去边框，淡彩底 */
.tag,.badge,.chip{
  border:none;
  border-radius:6px;
  background:#f0f0f3;
  font-weight:500;
  color:var(--sub);
}
.tag.blue{background:#e6ebff;color:var(--brand)}
.tag.green{background:#e2f7e8;color:var(--green)}
.tag.orange{background:#fdecdc;color:var(--orange)}
.tag.red{background:#ffe5e3;color:var(--red)}

/* 供需市场 feed 卡片 */
.feed-item{
  border:none;
  box-shadow:var(--shadow);
  border-radius:var(--radius);
  background:#fff;
  padding:14px;
}
.feed-item:active{transform:scale(.985);transition:transform .1s}
.fi-img{border-radius:10px;background:#f0f0f3}

/* 地图入口卡片 */
.map-mini,.map-entry{
  border:none;
  box-shadow:var(--shadow);
  border-radius:var(--radius);
  background:linear-gradient(135deg,#4a6cff,#6a8cff);
  color:#fff;
}
.map-mini .mm-txt span,.map-entry span{color:rgba(255,255,255,.8)}

/* 统计宫格 */
.stat-grid .sg{
  background:#fff;
  border:none;
  box-shadow:var(--shadow);
  border-radius:var(--radius);
  padding:14px 10px;
}
.stat-grid .sg .n{font-size:20px;font-weight:700}
.stat-grid .sg .t{font-size:12px;color:var(--sub)}

/* 抽屉：白底，柔和右阴影 */
.drawer{
  background:#fff;
  border-right:1px solid var(--line);
  box-shadow:8px 0 32px rgba(0,0,0,.12);
}
.drawer-item{
  border-radius:var(--radius-sm);
  color:var(--txt);
  font-weight:500;
}
.drawer-item:active{background:#f0f0f3}
.drawer-item .di-ico{color:var(--sub)}
.drawer-section{color:var(--faint);font-size:11px;font-weight:600;letter-spacing:.5px}

/* 页面标题区 */
.page-head h1{font-size:22px;font-weight:800;letter-spacing:-.3px}
.page-head p{font-size:13px;color:var(--sub);line-height:1.5}

/* 等级卡片 */
.lvl-card{border:none;box-shadow:var(--shadow);border-radius:var(--radius);background:#fff}
.xpbar{background:#f0f0f3;border-radius:4px}
.xpbar-fill{border-radius:4px;background:linear-gradient(90deg,var(--brand),#6a8cff)}

/* 收款提醒条 */
.pay-alert{
  background:#fff5eb;
  border:none;
  border-radius:var(--radius-sm);
  color:#a04a00;
  font-size:13px;
}

/* 链接框 */
.link-box{
  background:#f0f0f3;
  border:none;
  border-radius:var(--radius-sm);
}

/* 开关 */
.switch{background:#e0e0e5}
.switch input:checked+.slider{background:var(--brand)}
.switch .slider{border-radius:16px}
.switch .slider:before{border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.2)}

/* 空状态 */
.empty{color:var(--sub)}
.empty .e-ico{opacity:.4}

/* 弹窗 */
.modal-box{
  background:#fff;
  border:none;
  border-radius:18px;
  box-shadow:var(--shadow-lg);
}

/* 商品详情/买家所见预览 */
.preview-card{border:none;box-shadow:var(--shadow);border-radius:var(--radius);background:#fff}

/* 规格动态行 */
.dyn-field{background:#f7f7f8;border-radius:var(--radius-sm);padding:8px}
.dyn-field input{background:#fff}

/* 会员横幅保持深色渐变（品牌感） */
.member-banner{border-radius:var(--radius)!important;box-shadow:var(--shadow)!important}

/* 全局文字 */
body{color:var(--txt);-webkit-font-smoothing:antialiased}
.muted,.faint{color:var(--sub)}
.price{color:var(--orange);font-weight:700}

/* 滚动条全局隐藏（横向滚动区） */
.filter-bar::-webkit-scrollbar,.bb-tabs::-webkit-scrollbar,.bb-quick::-webkit-scrollbar{display:none}

/* 按压态统一 */
.pressing{transform:scale(.97)!important;opacity:.85;transition:transform .1s,opacity .1s}

/* ============ V41 · 分类按钮 + 底部弹出面板（替代横向滚动） ============ */
.cat-selector{
  display:flex;align-items:center;gap:8px;
  background:#fff;border-radius:12px;padding:12px 16px;margin-bottom:14px;
  box-shadow:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.05);
  cursor:pointer;transition:transform .12s var(--spring),background .15s;
}
.cat-selector:active{transform:scale(.98);background:#f5f5f7}
.cs-ico{font-size:15px;opacity:.5}
.cs-label{font-size:13px;color:#8a8a8e;font-weight:500}
.cs-current{font-size:15px;font-weight:600;color:#1c1c1e;flex:1}
.cs-arrow{font-size:18px;color:#c5c5ca;font-weight:300}

/* 底部弹出面板 */
.cat-sheet-mask{
  position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:50;
  opacity:0;pointer-events:none;transition:opacity .25s var(--spring);
}
.cat-sheet-mask.show{opacity:1;pointer-events:auto}
.cat-sheet{
  position:absolute;left:0;right:0;bottom:0;z-index:51;
  background:#fff;border-radius:20px 20px 0 0;
  padding:8px 16px 32px;
  transform:translateY(100%);transition:transform .3s var(--spring);
  max-height:70%;overflow-y:auto;
}
.cat-sheet.show{transform:translateY(0)}
.cs-handle{width:36px;height:4px;background:#e0e0e5;border-radius:2px;margin:6px auto 14px}
.cs-title{font-size:16px;font-weight:700;text-align:center;margin-bottom:14px;color:#1c1c1e}
.cs-list{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start}
.cs-item{
  padding:10px 18px;border-radius:10px;background:#f0f0f3;
  font-size:14px;font-weight:500;color:#1c1c1e;border:none;cursor:pointer;
  font-family:inherit;transition:all .15s var(--spring);
}
.cs-item:active{transform:scale(.95)}
.cs-item.on{background:#3b5bff;color:#fff;font-weight:600}

/* ============ V42 · 底部动作栏（替代Tab Bar） ============ */
.actionbar{
  position:absolute;left:0;right:0;bottom:0;z-index:40;
  display:flex;align-items:center;gap:10px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-top:1px solid #e8e8ed;
}
.actionbar.hidden{display:none}

/* 我的订单按钮（左侧大区域） */
.ab-orders{
  flex:1;display:flex;align-items:center;gap:10px;
  background:#f0f0f3;border:none;border-radius:12px;
  padding:10px 14px;cursor:pointer;font-family:inherit;
  transition:transform .12s var(--spring),background .15s;
  text-align:left;min-width:0;
}
.ab-orders:active{transform:scale(.97);background:#e8e8ed}
.ab-orders-ico{
  width:36px;height:36px;border-radius:10px;background:#fff;
  display:flex;align-items:center;justify-content:center;
  color:#3b5bff;flex-shrink:0;
  box-shadow:0 1px 3px rgba(0,0,0,.06);
}
.ab-orders-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.ab-orders-txt b{font-size:14px;font-weight:700;color:#1c1c1e;line-height:1.2}
.ab-orders-sub{font-size:11px;color:#8a8a8e;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ab-badge{
  min-width:18px;height:18px;border-radius:9px;
  background:#ff3b30;color:#fff;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  padding:0 5px;flex-shrink:0;
}

/* 发布按钮（右侧蓝色） */
.ab-publish{
  display:flex;align-items:center;gap:5px;
  background:#3b5bff;color:#fff;border:none;border-radius:12px;
  padding:10px 18px;cursor:pointer;font-family:inherit;
  font-size:15px;font-weight:600;flex-shrink:0;
  box-shadow:0 3px 12px rgba(59,91,255,.35);
  transition:transform .12s var(--spring),box-shadow .15s;
}
.ab-publish:active{transform:scale(.95);box-shadow:0 2px 8px rgba(59,91,255,.3)}

/* 发布选择底部面板 */
.pub-sheet-mask{
  position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:50;
  opacity:0;pointer-events:none;transition:opacity .25s var(--spring);
}
.pub-sheet-mask.show{opacity:1;pointer-events:auto}
.pub-sheet-mask.hidden{display:none}
.pub-sheet{
  position:absolute;left:0;right:0;bottom:0;z-index:51;
  background:#fff;border-radius:20px 20px 0 0;
  padding:8px 16px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform .3s var(--spring);
}
.pub-sheet.show{transform:translateY(0)}
.pub-sheet.hidden{display:none}
.ps-handle{width:36px;height:4px;background:#e0e0e5;border-radius:2px;margin:6px auto 12px}
.ps-title{font-size:16px;font-weight:700;text-align:center;margin-bottom:14px;color:#1c1c1e}
.ps-item{
  display:flex;align-items:center;gap:12px;
  width:100%;background:#f7f7f8;border:none;border-radius:14px;
  padding:14px 16px;margin-bottom:10px;cursor:pointer;font-family:inherit;
  transition:transform .12s var(--spring),background .15s;text-align:left;
}
.ps-item:active{transform:scale(.98);background:#f0f0f3}
.ps-ico{
  width:44px;height:44px;border-radius:12px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.ps-ico-product{background:#e6ebff;color:#3b5bff}
.ps-ico-purchase{background:#fdecdc;color:#ff7a1a}
.ps-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ps-info b{font-size:15px;font-weight:700;color:#1c1c1e}
.ps-info span{font-size:12px;color:#8a8a8e}
.ps-arrow{font-size:20px;color:#c5c5ca;font-weight:300;flex-shrink:0}
.ps-cancel{
  width:100%;background:#f0f0f3;color:#1c1c1e;border:none;border-radius:12px;
  padding:13px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;
  margin-top:4px;transition:background .15s;
}
.ps-cancel:active{background:#e5e5ea}

/* ============ V43 · 对标豆包：简洁进度条+设置列表+抽屉新按钮 ============ */

/* 简洁订单进度条（替代像素机器人） */
.step-bar{display:flex;align-items:flex-start;justify-content:space-between;margin:10px 0 14px;gap:2px}
.step-item{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;min-width:0}
.step-dot{
  width:24px;height:24px;border-radius:50%;
  background:#f0f0f3;color:#8a8a8e;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;flex-shrink:0;
  transition:all .2s var(--spring);
}
.step-item.done .step-dot{background:#34c759;color:#fff;font-size:12px}
.step-item.active .step-dot{background:#3b5bff;color:#fff;box-shadow:0 0 0 4px rgba(59,91,255,.15)}
.step-label{font-size:10px;color:#8a8a8e;margin-top:5px;text-align:center;line-height:1.2;word-break:break-all}
.step-item.active .step-label{color:#3b5bff;font-weight:600}
.step-item.done .step-label{color:#34c759}
.step-line{position:absolute;top:12px;left:calc(50% + 14px);width:calc(100% - 28px);height:2px;background:#f0f0f3;z-index:0}
.step-item.done .step-line{background:#34c759}

/* 设置页：iOS风格列表 */
.set-group{margin-bottom:20px}
.set-group-title{font-size:11px;color:#8a8a8e;font-weight:600;letter-spacing:.3px;text-transform:uppercase;padding:0 16px;margin-bottom:6px}
.set-row{
  display:flex;align-items:center;justify-content:space-between;
  background:#fff;padding:14px 16px;
  border-bottom:1px solid #f0f0f3;
  cursor:pointer;transition:background .12s;
  font-size:15px;color:#1c1c1e;
}
.set-row:first-child{border-radius:12px 12px 0 0}
.set-row:last-child{border-radius:0 0 12px 12px;border-bottom:none}
.set-row:only-child{border-radius:12px}
.set-row:active{background:#f5f5f7}
.set-arrow{font-size:18px;color:#c5c5ca;font-weight:300}

/* 抽屉：新建订单大按钮 */
.drawer-neworder{
  display:flex;align-items:center;justify-content:center;gap:8px;
  margin:0 14px 14px;padding:13px;
  background:#3b5bff;color:#fff;border:none;border-radius:12px;
  font-size:15px;font-weight:600;font-family:inherit;cursor:pointer;
  box-shadow:0 3px 12px rgba(59,91,255,.3);
  transition:transform .12s var(--spring),box-shadow .15s;
  width:calc(100% - 28px);
}
.drawer-neworder:active{transform:scale(.97);box-shadow:0 2px 8px rgba(59,91,255,.25)}

/* 抽屉：最近订单列表 */
.drawer-recent{margin-bottom:8px}
.drawer-recent-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 16px;cursor:pointer;
  border-radius:8px;transition:background .12s;
  text-decoration:none;color:inherit;
}
.drawer-recent-item:active{background:#f5f5f7}
.dri-dot{width:7px;height:7px;border-radius:50%;background:#e0e0e5;flex-shrink:0}
.dri-dot.pend{background:#ff7a1a;box-shadow:0 0 0 3px rgba(255,122,26,.15)}
.dri-title{flex:1;font-size:13px;color:#1c1c1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.dri-amt{font-size:12px;color:#ff7a1a;font-weight:600;flex-shrink:0}

/* 隐藏旧像素机器人进度条 */
.bb-steps{display:none!important}

/* ============ V44 · 订单=对话：豆包式聊天界面 ============ */

/* 会话列表 */
.chat-list{display:flex;flex-direction:column}
.chat-row{
  display:flex;align-items:center;gap:12px;
  padding:12px 4px;cursor:pointer;
  border-bottom:1px solid #f0f0f3;
  transition:background .12s;
}
.chat-row:active{background:#f5f5f7}
.chat-avatar{
  width:48px;height:48px;flex-shrink:0;position:relative;
  border-radius:10px;overflow:hidden;
}
.chat-avatar img{width:100%;height:100%;object-fit:cover}
.chat-badge{
  position:absolute;top:-4px;right:-4px;
  min-width:18px;height:18px;border-radius:9px;
  background:#ff3b30;color:#fff;font-size:11px;font-weight:700;
  display:flex;align-items:center;justify-content:center;padding:0 5px;
}
.chat-body{flex:1;min-width:0}
.chat-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.chat-title{font-size:15px;font-weight:600;color:#1c1c1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.chat-time{font-size:11px;color:#c5c5ca;flex-shrink:0}
.chat-snippet{font-size:13px;color:#8a8a8e;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 筛选小按钮 */
.chat-filter{
  padding:6px 14px;border-radius:16px;border:none;
  background:#f0f0f3;color:#8a8a8e;font-size:13px;font-weight:500;
  font-family:inherit;cursor:pointer;flex-shrink:0;
  transition:all .15s;
}
.chat-filter.on{background:#1c1c1e;color:#fff;font-weight:600}

/* 聊天页面 */
.chat-page{
  display:flex;flex-direction:column;
  height:100%;background:#f7f7f8;
}
.chat-stream{
  flex:1;overflow-y:auto;padding:16px 14px 20px;
  display:flex;flex-direction:column;gap:14px;
}

/* 系统消息 */
.sys-msg{
  align-self:center;
  background:rgba(0,0,0,.06);color:#8a8a8e;
  font-size:11px;padding:4px 10px;border-radius:10px;
  max-width:80%;text-align:center;
}
.sys-msg.sys-warn{background:#fff5eb;color:#a04a00}
.sys-msg.sys-ok{background:#e2f7e8;color:#248a3d}

/* 消息气泡 */
.msg-other{display:flex;align-items:flex-start;gap:8px;max-width:85%}
.msg-mine{display:flex;flex-direction:column;align-items:flex-end;gap:3px;max-width:85%;align-self:flex-end}
.msg-avatar{
  width:32px;height:32px;border-radius:8px;flex-shrink:0;
  background:linear-gradient(135deg,#e6ebff,#c5d0ff);
  display:flex;align-items:center;justify-content:center;font-size:16px;
  overflow:hidden;
}
.msg-avatar img{width:100%;height:100%;object-fit:cover}
.msg-bubble{
  background:#fff;border-radius:0 14px 14px 14px;
  padding:10px 14px;font-size:14px;color:#1c1c1e;
  box-shadow:0 1px 2px rgba(0,0,0,.04);
  word-break:break-word;line-height:1.5;
}
.msg-mine .msg-bubble{
  background:#3b5bff;color:#fff;border-radius:14px 0 14px 14px;
}
.msg-time{font-size:10px;color:#c5c5ca}

/* 产品卡片消息 */
.msg-card{border-radius:14px;padding:14px;min-width:220px}
.msg-card .kv{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid #f0f0f3;font-size:13px}
.msg-card .kv:last-child{border-bottom:none}
.msg-card .k{color:#8a8a8e;flex-shrink:0;margin-right:12px}
.msg-card .v{color:#1c1c1e;text-align:right;word-break:break-all}
.mc-title{font-size:15px;font-weight:700;margin-bottom:8px;display:flex;align-items:center}
.mc-img{width:100%;border-radius:10px;margin-bottom:8px;max-height:200px;object-fit:cover}
.mc-order-no{font-size:11px;color:#c5c5ca;margin-top:8px;text-align:right}

/* 底部输入操作栏（对标豆包） */
.chat-input-bar{
  display:flex;align-items:center;gap:8px;
  padding:8px 12px calc(8px + env(safe-area-inset-bottom));
  background:#fff;border-top:1px solid #e8e8ed;
}
.ci-plus{
  width:36px;height:36px;border-radius:10px;border:none;
  background:#f0f0f3;color:#1c1c1e;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:transform .12s,background .15s;
}
.ci-plus:active{transform:scale(.9);background:#e5e5ea}
.ci-input{
  flex:1;background:#f0f0f3;border:none;border-radius:18px;
  padding:9px 14px;font-size:14px;color:#1c1c1e;
  font-family:inherit;outline:none;
}
.ci-input:focus{background:#fff;box-shadow:0 0 0 2px rgba(59,91,255,.25)}
.ci-send{
  width:36px;height:36px;border-radius:50%;border:none;
  background:#3b5bff;color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:transform .12s,opacity .15s;
}
.ci-send:active{transform:scale(.9)}

/* 订单操作底部面板 */
.oa-mask{position:absolute;inset:0;background:rgba(0,0,0,.4);z-index:60;opacity:0;pointer-events:none;transition:opacity .25s var(--spring)}
.oa-mask.show{opacity:1;pointer-events:auto}
.oa-sheet{
  position:absolute;left:0;right:0;bottom:0;z-index:61;
  background:#fff;border-radius:20px 20px 0 0;
  padding:8px 16px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform .3s var(--spring);
}
.oa-sheet.show{transform:translateY(0)}
.oa-handle{width:36px;height:4px;background:#e0e0e5;border-radius:2px;margin:6px auto 12px}
.oa-title{font-size:16px;font-weight:700;text-align:center;margin-bottom:14px;color:#1c1c1e}
.oa-item{
  display:flex;align-items:center;gap:12px;
  width:100%;background:#f7f7f8;border:none;border-radius:12px;
  padding:13px 16px;margin-bottom:8px;cursor:pointer;font-family:inherit;
  font-size:15px;color:#1c1c1e;text-align:left;
  transition:transform .12s,background .15s;
}
.oa-item:active{transform:scale(.98);background:#f0f0f3}
.oa-ico{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.oa-cancel{
  width:100%;background:#f0f0f3;color:#1c1c1e;border:none;border-radius:12px;
  padding:13px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;
  margin-top:6px;
}
.oa-cancel:active{background:#e5e5ea}

/* ============ V45 · 豆包操作手感深度对齐 ============ */

/* 页面转场动画（前进从右滑入） */
@keyframes pageEnter{
  from{opacity:0;transform:translateX(12px)}
  to{opacity:1;transform:translateX(0)}
}
.page-enter{animation:pageEnter .24s var(--spring)}

/* 消息气泡入场（上浮淡入） */
@keyframes msgIn{
  from{opacity:0;transform:translateY(8px) scale(.97)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
.msg-other,.msg-mine,.sys-msg{animation:msgIn .28s var(--spring)}
.sys-msg{animation:msgIn .2s var(--spring)}

/* 发送按钮：空内容灰色，有内容蓝色 */
.ci-send{background:#d1d1d6;transition:all .2s var(--spring)}
.ci-send.ready{background:#3b5bff;box-shadow:0 2px 8px rgba(59,91,255,.3)}

/* +号面板网格（豆包式图标网格） */
.oa-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:14px}
.oa-grid-item{
  display:flex;flex-direction:column;align-items:center;gap:7px;
  background:transparent;border:none;cursor:pointer;font-family:inherit;
  padding:12px 4px;border-radius:12px;transition:background .12s,transform .12s;
}
.oa-grid-item:active{background:#f5f5f7;transform:scale(.94)}
.oa-grid-ico{
  width:46px;height:46px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;font-size:20px;
}
.oa-grid-label{font-size:11px;color:#1c1c1e;text-align:center;line-height:1.2}

/* 抽屉打开时主页面右移（豆包效果） */
.phone-screen.drawer-open .app-header,
.phone-screen.drawer-open .view{
  transform:translateX(calc(var(--drawer-w, 78%) * 0.35));
  transition:transform .3s var(--spring);
}
.drawer-mask{transition:opacity .3s var(--spring)}

/* 根页面头部：菜单按钮显示 */
.ah-menu{display:flex}
.ah-menu.hidden{display:none}
.ah-back.hidden{display:none}

/* 会话列表更细腻 */
.chat-row{border-bottom:1px solid #f2f2f5;padding:13px 6px}
.chat-row:first-child{padding-top:8px}
.chat-avatar{border-radius:12px}
.chat-title{font-size:15.5px;font-weight:500}
.chat-snippet{font-size:13px;color:#9a9aa0;margin-top:2.5px}
.chat-time{font-size:11.5px;color:#c0c0c5}

/* 聊天流优化 */
.chat-stream{gap:12px;padding:14px 12px 16px}
.sys-msg{font-size:11.5px;padding:3.5px 11px;border-radius:11px;color:#9a9aa0;background:rgba(0,0,0,.045)}
.msg-bubble{font-size:14.5px;line-height:1.55;border-radius:4px 16px 16px 16px}
.msg-mine .msg-bubble{border-radius:16px 4px 16px 16px}
.msg-avatar{width:34px;height:34px;border-radius:10px}
.msg-card{border-radius:4px 16px 16px 16px;padding:13px 14px;min-width:230px;max-width:100%}
.mc-title{font-size:15px;margin-bottom:9px}
.msg-card .kv{font-size:13px;padding:5.5px 0}

/* 底部输入栏更豆包 */
.chat-input-bar{padding:9px 12px calc(9px + env(safe-area-inset-bottom));gap:9px;background:rgba(255,255,255,.96);backdrop-filter:blur(20px)}
.ci-plus{width:34px;height:34px;border-radius:50%;background:#f0f0f3}
.ci-input{border-radius:18px;padding:8.5px 15px;font-size:14.5px}
.ci-send{width:34px;height:34px}

/* 操作面板 */
.oa-sheet{border-radius:22px 22px 0 0}
.oa-handle{margin:8px auto 14px}
.oa-title{font-size:15px;font-weight:600;color:#1c1c1e;margin-bottom:16px}

/* 列表按压反馈统一 */
.chat-row:active{background:#f5f5f7;border-radius:10px}

/* 筛选按钮优化 */
.chat-filter{padding:6px 15px;border-radius:16px;font-size:13.5px}
.chat-filter.on{background:#1c1c1e}

/* 抽屉最近订单优化 */
.drawer-recent-item{padding:9px 16px}
.dri-title{font-size:13.5px}

/* ============ V46 · 完全对标豆包界面结构 ============ */

/* 顶部笔图标（新建订单） */
.ah-new{
  width:34px;height:34px;border:none;background:transparent;
  display:flex;align-items:center;justify-content:center;
  color:#1c1c1e;cursor:pointer;border-radius:9px;margin-left:2px;
  transition:background .12s,transform .12s;
}
.ah-new:active{background:#f0f0f3;transform:scale(.9)}
.ah-new.hidden{display:none}
.ah-menu.hidden{display:none}

/* 抽屉：flex 纵向布局，头尾固定，中间滚动 */
.drawer{
  display:flex;flex-direction:column;
  overflow:hidden;
}
.drawer-top{
  padding:14px 14px 10px;flex-shrink:0;
  border-bottom:1px solid #f2f2f5;
}
.drawer-neworder{
  display:flex;align-items:center;justify-content:center;gap:7px;
  width:100%;padding:11px;
  background:#1c1c1e;color:#fff;border:none;border-radius:11px;
  font-size:14.5px;font-weight:600;font-family:inherit;cursor:pointer;
  transition:transform .12s,opacity .15s;
}
.drawer-neworder:active{transform:scale(.97);opacity:.85}

/* 中间滚动区 */
.drawer-body{
  flex:1;overflow-y:auto;overflow-x:hidden;
  padding:8px 10px;
  /* 细滚动条（豆包式） */
  scrollbar-width:thin;
  scrollbar-color:rgba(0,0,0,.15) transparent;
}
.drawer-body::-webkit-scrollbar{width:3px}
.drawer-body::-webkit-scrollbar-track{background:transparent}
.drawer-body::-webkit-scrollbar-thumb{background:rgba(0,0,0,.12);border-radius:2px}
.drawer-body::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,.25)}

/* 底部固定：用户信息+设置 */
.drawer-bottom{
  flex-shrink:0;
  display:flex;align-items:center;gap:8px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  border-top:1px solid #f2f2f5;
  background:#fff;
}
.db-user{
  flex:1;display:flex;align-items:center;gap:10px;
  cursor:pointer;min-width:0;padding:4px 6px;border-radius:10px;
  transition:background .12s;
}
.db-user:active{background:#f5f5f7}
.drawer-avatar{
  width:36px;height:36px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,#3b5bff,#6a8cff);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:15px;
}
.db-user-info{flex:1;min-width:0}
.db-user-info .drawer-name{font-size:14px;font-weight:600;color:#1c1c1e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-user-info .drawer-shop{font-size:11px;color:#8a8a8e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.drawer-level{font-size:10px;color:#3b5bff;background:#e6ebff;padding:2px 7px;border-radius:8px;font-weight:600;flex-shrink:0}
.db-setting{
  width:36px;height:36px;border:none;background:#f5f5f7;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#1c1c1e;cursor:pointer;flex-shrink:0;
  transition:transform .15s var(--spring),background .12s;
}
.db-setting:active{transform:rotate(40deg);background:#e8e8ed}

/* 首页底部新建订单条（对标豆包底部输入框） */
.home-new-bar{
  display:flex;align-items:center;gap:10px;
  margin:16px 2px 8px;padding:12px 16px;
  background:#fff;border-radius:22px;
  box-shadow:0 1px 3px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.04);
  cursor:pointer;transition:transform .12s,background .15s;
}
.home-new-bar:active{transform:scale(.98);background:#f5f5f7}
.hnb-plus{
  width:28px;height:28px;border-radius:50%;
  background:#3b5bff;color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.hnb-text{font-size:14.5px;color:#8a8a8e}

/* 抽屉条目更豆包 */
.drawer-sec{padding:12px 16px 5px;font-size:11px}
.drawer-item{padding:11px 16px;border-radius:9px;font-size:14.5px}
.di-ico{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;color:#1c1c1e;opacity:.7}
.di-arrow{margin-left:auto;font-size:16px;color:#c5c5ca;font-weight:300}

/* 旧 drawer-head / drawer-foot 隐藏（结构已移到底部） */
.drawer-head{display:none!important}
.drawer-foot{display:none!important}

/* V47 修复：去掉桌面端手机框外飘散的旧像素装饰方块 */
.phone-stage::before,.phone-stage::after{display:none!important}


/* ================= V48 豆包OS骨架：抽屉搜索 / 首页对话画布 ================= */
/* 抽屉顶部搜索（对标豆包抽屉搜索框，固定不滚） */
.drawer-search{
  flex-shrink:0;display:flex;align-items:center;gap:8px;
  margin:12px 14px 6px;padding:9px 12px;
  background:#f2f2f5;border-radius:11px;color:#8a8a8e;
}
.drawer-search svg{flex-shrink:0;opacity:.7}
.drawer-search input{
  flex:1;border:none;background:transparent;outline:none;
  font-size:14px;font-family:inherit;color:#1c1c1e;
}
.drawer-search input::placeholder{color:#b0b0b7}
/* 发起新订单按钮现在位于滚动区内，给左右留白 */
.drawer-body .drawer-neworder{margin:2px 6px 4px}
/* 分组标题：左标题 + 右“全部›” */
.drawer-sec{display:flex;align-items:center;justify-content:space-between}
.drawer-more{font-size:11px;color:#b0b0b7;font-weight:500;cursor:pointer;text-transform:none;letter-spacing:0}
.drawer-more:active{color:var(--brand)}
/* 抽屉底部圆形图标按钮（消息/设置） */
.db-iconbtn{
  width:36px;height:36px;border:none;background:#f5f5f7;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  color:#1c1c1e;cursor:pointer;flex-shrink:0;
  transition:transform .15s var(--spring),background .12s;
}
.db-iconbtn:active{transform:scale(.9);background:#e8e8ed}

/* ---------- 首页对话画布（无订单空态，对标豆包“有什么能帮你的”） ---------- */
.home-canvas{min-height:100%;display:flex;flex-direction:column;padding:8px 4px 20px}
.hc-hello{text-align:center;padding:48px 24px 22px}
.hc-hello .hc-logo{display:flex;justify-content:center;margin-bottom:18px}
.hc-hello h2{font-size:23px;font-weight:700;color:#1c1c1e;letter-spacing:-.4px;margin-bottom:9px}
.hc-hello p{font-size:13.5px;color:#8a8a8e;line-height:1.6}
.hc-chips{display:flex;flex-direction:column;gap:10px;padding:0 14px}
.hc-chip{
  display:flex;flex-direction:column;gap:3px;text-align:left;
  padding:15px 17px;background:#fff;border:none;border-radius:15px;
  box-shadow:0 1px 2px rgba(0,0,0,.04);cursor:pointer;font-family:inherit;
  transition:transform .12s,background .12s;
}
.hc-chip:active{transform:scale(.98);background:#f5f5f7}
.hc-chip b{font-size:15px;font-weight:600;color:#1c1c1e}
.hc-chip span{font-size:12.5px;color:#8a8a8e}
.home-canvas .home-new-bar{margin-top:auto}


/* ================= V50 全局对话壳 ================= */
.global-composer{flex-shrink:0;box-shadow:0 -1px 0 #eef0f4 inset}
.chat-intro{width:fit-content;max-width:86%;margin:14px auto 6px;text-align:center;
  font-size:11.5px;line-height:1.55;padding:4px 12px;border-radius:11px;
  color:#9a9aa0;background:rgba(0,0,0,.045);animation:msgIn .2s var(--spring)}


/* ================= V51 键盘⇄语音 统一输入栏 ================= */
.ci-mode{width:36px;height:36px;border-radius:10px;border:none;background:transparent;color:#1c1c1e;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:transform .12s}
.ci-mode:active{transform:scale(.9)}
.ci-talk{flex:1;height:36px;border:none;border-radius:18px;background:#f0f0f3;color:#5a6577;
  font-size:14.5px;font-weight:500;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;
  display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}
.ci-talk.rec{background:#3b5bff;color:#fff}


/* ================= V52 对话流统一 ================= */
/* 页内大标题与顶部标题、系统气泡重复，统一隐藏，内容直接进对话流 */
#view .page-head{display:none !important}
.chat-intro{margin-top:6px}
/* 设置：白色 iOS 分组卡 */
.set-group{background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--shadow);margin:0 0 18px}
.set-row{background:transparent}
/* iOS 绿色拨动开关（独立 .tg，避开发布表单遗留 .switch） */
.tg{position:relative;display:inline-block;width:50px;height:30px;flex-shrink:0}
.tg input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;padding:0!important;
  background:none!important;box-shadow:none!important;cursor:pointer}
.tg .tg-knob{position:absolute;inset:0;background:#d9d9de;border-radius:30px;transition:background .22s var(--spring)}
.tg .tg-knob::before{content:"";position:absolute;top:2.5px;left:2.5px;width:25px;height:25px;border-radius:50%;
  background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.22);transition:transform .22s var(--spring)}
.tg input:checked+.tg-knob{background:#34c759}
.tg input:checked+.tg-knob::before{transform:translateX(20px)}
/* 广场地图入口收敛为白卡，去掉蓝绿渐变 */
.map-mini{background:#fff;border:none;color:var(--txt);box-shadow:var(--shadow)}
.map-mini .mm-txt b{color:var(--txt);font-weight:700}
.map-mini .mm-txt span{color:var(--sub);opacity:1}
.map-mini .mm-globe{filter:none}
.map-mini .mm-arrow{color:var(--sub);font-weight:400}


/* ================= V53 发布中心·云盘陈列·服务商 ================= */
/* 发布中心：豆包新对话式 */
.pub-hello{text-align:center;padding:26px 20px 18px}
.pub-hello-logo{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#eef1ff,#dfe5ff);
  display:flex;align-items:center;justify-content:center;margin:0 auto 14px;color:var(--brand)}
.pub-hello h2{font-size:21px;font-weight:700;letter-spacing:-.3px;margin:0 0 6px}
.pub-hello p{color:var(--sub);font-size:13.5px;margin:0}
.pub-mode{display:flex;flex-direction:column;gap:11px;margin:0 2px 22px}
.pub-mode-card{display:flex;align-items:center;gap:13px;background:#fff;border-radius:14px;padding:15px 14px;
  box-shadow:var(--shadow);cursor:pointer;transition:transform .12s var(--spring)}
.pub-mode-card:active{transform:scale(.985)}
.pmc-ico{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pmc-ico.sell{background:#eaf0ff;color:var(--brand)}
.pmc-ico.buy{background:#fff1e6;color:var(--orange)}
.pmc-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.pmc-txt b{font-size:15px;font-weight:650}
.pmc-txt span{font-size:12px;color:var(--sub);line-height:1.45}
.pmc-arrow{color:#c5c5ca;font-size:22px;font-weight:300;flex-shrink:0}
.pub-quick-label{font-size:12px;color:var(--faint);font-weight:600;padding:0 4px;margin-bottom:9px}
.pub-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pq-card{position:relative;background:#fff;border-radius:13px;padding:13px 34px 13px 13px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:4px;cursor:pointer;min-height:78px;transition:transform .12s var(--spring)}
.pq-card:active{transform:scale(.97)}
.pq-card b{font-size:13.5px;font-weight:650}
.pq-card span{font-size:11px;color:var(--sub);line-height:1.4}
.pq-card .pq-plus{position:absolute;top:11px;right:11px;width:22px;height:22px;border-radius:50%;background:#f0f0f3;
  color:#6a6f7a;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:400;line-height:1}

/* 云盘式统一陈列行（订单/发布通用） */
.doc-row{display:flex;align-items:center;gap:12px;background:#fff;padding:13px 14px;margin-bottom:9px;border-radius:13px;
  box-shadow:var(--shadow);cursor:pointer;transition:transform .12s var(--spring)}
.doc-row:active{transform:scale(.99)}
.doc-ico{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.doc-ico.sell{background:#eaf0ff;color:var(--brand)}
.doc-ico.buy{background:#fff1e6;color:var(--orange)}
.doc-main{flex:1;min-width:0}
.doc-title{font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}
.doc-meta{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--sub)}
.doc-dot{padding:1px 7px;border-radius:6px;font-size:10.5px;font-weight:600}
.doc-dot.sell{background:#eaf0ff;color:var(--brand)}
.doc-dot.buy{background:#fff1e6;color:var(--orange)}
.doc-mini{flex-shrink:0;border:1px solid var(--line);background:#fff;color:var(--brand);font-size:12px;
  padding:5px 11px;border-radius:8px;cursor:pointer}
.doc-arrow{color:#c5c5ca;font-size:20px;font-weight:300;flex-shrink:0}

/* 服务商市场（技能·连接器式） */
.svc-cats{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.svc-cats::-webkit-scrollbar{display:none}
.svc-chip{flex-shrink:0;border:none;background:#f0f0f3;color:var(--sub);font-size:13px;padding:7px 14px;border-radius:16px;cursor:pointer}
.svc-chip.on{background:var(--txt);color:#fff;font-weight:600}
.svc-grid{display:flex;flex-direction:column;gap:9px}
.svc-card{display:flex;align-items:center;gap:12px;background:#fff;border-radius:13px;padding:13px 12px 13px 14px;box-shadow:var(--shadow)}
.svc-ico{width:40px;height:40px;border-radius:11px;background:#f0f0f3;color:#5a6577;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.svc-txt{flex:1;min-width:0}
.svc-name{font-size:14.5px;font-weight:650;display:flex;align-items:center;gap:7px;margin-bottom:3px}
.svc-tag{font-size:10px;font-weight:600;color:var(--brand);background:#eaf0ff;padding:1px 6px;border-radius:5px}
.svc-desc{font-size:12px;color:var(--sub);line-height:1.4}
.svc-add{flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;
  color:var(--txt);font-size:20px;font-weight:300;line-height:1;cursor:pointer;transition:all .15s}
.svc-add:active{background:var(--brand);color:#fff;border-color:var(--brand)}


/* ================= V54 全局去像素化（像素只留 logo/吉祥物/图标） ================= */
:root{--shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04)}
/* 按钮：去 2px 硬边与偏移阴影；线框按钮改浅灰 */
.btn{border:none!important;box-shadow:none!important}
.btn:active{transform:scale(.96);box-shadow:none!important}
.btn.line{background:#f0f0f3!important;color:var(--txt)!important;border:none!important}
.btn.ghost{background:#f0f0f3!important}
/* 输入：浅灰底无硬边，聚焦蓝环 */
input,select,textarea{border:none!important;box-shadow:none!important}
input:focus,select:focus,textarea:focus{box-shadow:0 0 0 2.5px rgba(59,91,255,.22)!important}
/* 顶部图标按钮去方框 */
.ah-icon{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:10px}
.ah-icon:active{transform:scale(.9);box-shadow:none!important}
/* 分段控件兜底干净 */
.seg{border:none!important;box-shadow:none!important;background:#f0f0f3!important}
.seg button{border:none!important;box-shadow:none!important}
/* BoxBot 对话：气泡/页签/列表全部去硬边米白 */
.msg.bot,.msg.user{border:none!important;box-shadow:none!important}
.msg.bot{background:#fff!important}
.bb-tab{border:none!important;box-shadow:none!important;background:transparent!important;border-radius:9px;font-weight:600}
.bb-tab.on{background:var(--brand)!important;color:#fff!important}
.ss-input{background:#fff!important;border-top:1px solid var(--line)!important}
.ss-input input{background:#f0f0f3!important;border:none!important}
.ss-input button{border:none!important;border-radius:10px!important;box-shadow:none!important}
.bb-lib-item,.bb-remind-item,.bb-news-item,.bb-fb-form,.bb-fb-item,.task-card,.ach-card,.svc-cat{
  background:#fff!important;border:none!important;box-shadow:var(--shadow)!important;border-radius:12px!important}
.bb-lib-item .bli-ico{border:none!important}
.bb-fb-tag{border:none!important;background:#f0f0f3!important;border-radius:8px;box-shadow:none!important}
.bb-fb-tag.on{background:var(--brand)!important;color:#fff!important}
/* 等级卡：保留品牌渐变，去 3px 硬边与偏移阴影 */
.lvl-card{border:none!important;box-shadow:0 8px 20px rgba(59,91,255,.20)!important;border-radius:16px!important}
.lvl-badge{border:none!important;box-shadow:none!important;border-radius:8px}
/* 上传框：细虚线、圆角，无硬阴影 */
.upload-box{border:1.5px dashed #d6d6dc!important;border-radius:12px!important;background:#fafafc!important;box-shadow:none!important}
/* 废弃底部 tabbar 保险干净 */
.tabbar{background:#fff!important;border:none!important;box-shadow:none!important}
/* 各类带硬边的小标签/行统一为无硬边 */
.tag{border:none!important}
.link-box{border:none!important}
.pay-alert{border:none!important}


/* V54b 发布表单开关 iOS 化（无伪元素、兼容 Safari）+ 积分卡排版 */
.switch input[type=checkbox]{-webkit-appearance:none;appearance:none;width:48px;height:29px;border-radius:16px;flex-shrink:0;
  border:none!important;cursor:pointer;transition:background .18s var(--spring);
  background:#d8d8de radial-gradient(circle 11.5px at 14.5px 14.5px,#ffffff 99%,transparent 100%)}
.switch input[type=checkbox]:checked{background:var(--green) radial-gradient(circle 11.5px at 33.5px 14.5px,#ffffff 99%,transparent 100%)}
.switch input[type=checkbox]:active{transform:scale(1.04)}
.card .muted{white-space:nowrap}


/* ==================================================================
   V55 豆包壳 · 终版统一层：排版节奏 / 线条图标减重 / 全站按压微交互
   / 电脑·iPad 干净居中大手机（去像素装饰、黑边、硬阴影）
   ================================================================== */
:root{--ease-spring:cubic-bezier(.32,.72,0,1)}
body{background:#ececef}
.view{padding:4px 15px 32px;overscroll-behavior:contain}
.sec{font-size:14px;font-weight:650;letter-spacing:-.2px;color:var(--txt)}
#view .card{margin-bottom:11px}
.faint{color:var(--sub);line-height:1.55}
.muted{color:var(--sub)}
/* 功能线条图标整体减重一档，贴近豆包的轻盈线条（只作用带 stroke 的图标根，地图子路径不受影响） */
.phone-screen svg[stroke]{stroke-width:1.85}
/* 全站可点元素统一：按压缩放 + 弹性回弹 */
.drawer-item,.chat-row,.doc-row,.stat-grid .sg,.svc-card,.map-entry,.pub-mode-card,.pq-card,
.seg button,.svc-chip,.feed-item,.bb-lib-item,.bb-remind-item,.bb-news-item,.ach-card,.ms-row,
.gq-row,.task-card,.pack-card,.lvl-rules-btn,.bb-fb-tag,.quick-chip,.bb-quick button{
  transition:transform .13s var(--ease-spring),background-color .14s,box-shadow .14s,border-color .14s,color .14s}
.chat-row:active,.doc-row:active,.svc-card:active,.map-entry:active,.feed-item:active,
.pub-mode-card:active,.pq-card:active,.pack-card:active,.ms-row:active,.task-card:active,
.bb-lib-item:active,.bb-remind-item:active{transform:scale(.985)}
.drawer-item:active{transform:scale(.98);background:#f0f0f3}
.seg button:active,.svc-chip:active,.bb-fb-tag:active,.quick-chip:active{transform:scale(.94)}
.stat-grid .sg.clickable:active{transform:scale(.95)}
/* 金额/数量等宽对齐，不跳动 */
.price,.stat-grid .sg .n,.doc-meta,.point-row>div:last-child,.pk-price{font-variant-numeric:tabular-nums}
::selection{background:rgba(59,91,255,.16)}

/* ---------- 电脑 / iPad：干净居中的「大手机」，彻底去像素风 ---------- */
@media (min-width:768px){
  .phone-stage{background:linear-gradient(160deg,#eef0f3 0%,#e2e3e9 100%)!important;background-image:none!important}
  .phone-stage::before,.phone-stage::after{display:none!important;content:none!important}
  .phone-device{width:432px!important;max-width:94vw;height:min(900px,95vh)!important;max-height:95vh!important;
    background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important}
  .phone-screen{border:none!important;border-radius:32px!important;
    box-shadow:0 30px 80px rgba(17,20,35,.26),0 4px 16px rgba(17,20,35,.12)!important}
}
@media (min-width:1024px){.phone-device{width:440px!important;height:min(920px,95vh)!important}}
@media (min-width:1440px){.phone-device{width:448px!important}}

/* ---------- 细节：分割线更淡、卡片节奏统一 ---------- */
.chat-row{border-bottom-color:#f1f1f4}
.doc-row,.svc-card{border:none}
.link-box,.pay-box{border-radius:12px}
/* 顶部标题字重/字距贴近豆包 */
.ah-title{letter-spacing:-.4px}
/* 输入占位符颜色统一 */
input::placeholder,textarea::placeholder{color:#b6b6bd}


/* V55b 经验条：细条 + 文字移到条下方，不叠压 */
.xpbar{height:6px!important;background:#eef0f4!important;border:none!important;border-radius:4px!important;overflow:visible!important}
.xpbar-fill{border-radius:4px!important;background:linear-gradient(90deg,var(--brand),#6a8cff)!important}
.xpbar-txt{position:static!important;display:block!important;text-align:right;color:var(--sub)!important;
  font-size:10px!important;font-weight:500!important;text-shadow:none!important;letter-spacing:0;margin-top:3px}
/* 订单列表头像统一圆角 */
.chat-avatar{border-radius:11px}


/* V55c 最后两处暖色归一 */
.btn.gray,.btn.grey{background:#f0f0f3!important;color:var(--txt)!important;border:none!important;box-shadow:none!important}
.streak-tag{background:#fff3e0!important;color:#e07b00!important;border:none!important;border-radius:7px;padding:1px 7px;font-size:10px;font-weight:600}


/* ==================================================================
   V57 响应式 · 对标豆包：电脑网页版=左常驻侧栏+居中主列；手机/iPad 维持抽屉
   ================================================================== */
/* BoxBot 正在输入：三点呼吸 */
.bb-typing{display:inline-flex;align-items:center;gap:5px;padding:11px 14px!important}
.bb-typing i{width:7px;height:7px;border-radius:50%;background:#c5c5ca;animation:bbDot 1.1s infinite ease-in-out}
.bb-typing i:nth-child(2){animation-delay:.16s}.bb-typing i:nth-child(3){animation-delay:.32s}
@keyframes bbDot{0%,80%,100%{transform:scale(.7);opacity:.45}40%{transform:scale(1);opacity:1}}

/* ---------- iPad（768–1023）：居中大手机，略放大，抽屉仍覆盖 ---------- */
@media (min-width:768px) and (max-width:1023px){
  .phone-device{width:460px!important;height:min(940px,96vh)!important}
}

/* ---------- 电脑网页版（≥1024）：豆包式常驻侧栏 ---------- */
@media (min-width:1024px){
  body{background:#f7f7f8}
  .phone-stage{padding:0!important;display:block!important;background:#f7f7f8!important;min-height:100vh}
  .phone-device{width:100%!important;max-width:none!important;height:100vh!important;max-height:none!important;
    border-radius:0!important;background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important}
  .phone-screen{border-radius:0!important;box-shadow:none!important;background:#f7f7f8!important;
    flex-direction:column!important;padding-left:288px!important}
  .status-bar{display:none!important}

  /* 左栏常驻，不再是覆盖抽屉 */
  .drawer-mask{display:none!important}
  .drawer{position:absolute!important;left:0;top:0;bottom:0;width:288px!important;max-width:288px!important;
    transform:none!important;transition:none!important;z-index:5;box-shadow:none!important;
    border-right:1px solid #e8e8ed!important;background:#fcfcfd!important}
  .phone-screen.drawer-open .app-header,
  .phone-screen.drawer-open .view{transform:none!important}
  /* 侧栏常驻时，头部不再需要汉堡按钮 */
  #ahMenu{display:none!important}
  .app-header{width:100%;max-width:840px;align-self:center;padding:16px 28px 10px}
  .ah-title{font-size:22px}
  .view{width:100%;max-width:840px;align-self:center;padding:8px 28px 28px}
  /* 底部输入栏：居中悬浮圆角，仿豆包网页版 */
  .global-composer{width:100%;max-width:840px;align-self:center;
    margin:0 auto 18px;padding:10px 14px;border:1px solid #e8e8ed;border-radius:24px;
    background:#fff;box-shadow:0 4px 20px rgba(17,20,35,.06)}
  /* 弹层在宽屏居中为浮窗而非全屏 */
  .support-sheet{left:50%!important;right:auto!important;top:50%!important;bottom:auto!important;
    transform:translate(-50%,-50%)!important;width:min(920px,92vw);height:min(880px,92vh);border-radius:18px;
    overflow:hidden;box-shadow:0 30px 90px rgba(17,20,35,.3)}
  .pub-sheet{left:50%!important;right:auto!important;bottom:auto!important;top:50%!important;
    transform:translate(-50%,-50%)!important;width:min(460px,92vw);border-radius:18px;
    box-shadow:0 30px 90px rgba(17,20,35,.3)}
  .pub-sheet-mask{position:absolute;inset:0}
  .bell-dropdown{right:calc(50% - 420px + 28px)!important}
}
@media (min-width:1440px){
  .phone-screen{padding-left:300px!important}
  .drawer{width:300px!important;max-width:300px!important}
  .app-header,.view,.global-composer{max-width:880px}
}

/* ============ V60 BoxBot 语音打磨：朗读按钮 + 按住说话 ============ */
.msg-bot-txt .bb-speak{display:inline-flex;align-items:center;gap:3px;margin:7px 0 0 2px;padding:3px 7px 3px 5px;border:none;background:transparent;color:#9a9aa0;border-radius:8px;cursor:pointer;font-size:11px;line-height:1;vertical-align:middle;-webkit-tap-highlight-color:transparent;transition:background-color .12s,color .12s}
.msg-bot-txt .bb-speak svg{width:14px;height:14px;display:block}
.msg-bot-txt .bb-speak:hover{background:#f2f3f7;color:var(--brand)}
.msg-bot-txt .bb-speak.speaking{color:#fff;background:var(--brand);animation:bbSpeakPulse 1.1s ease-in-out infinite}
@keyframes bbSpeakPulse{0%,100%{opacity:1}50%{opacity:.6}}
.bb-mic{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.ss-input .ss-icon-btn.bb-mic.recording{background:#eef1ff;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,91,255,.15);animation:none}
.ss-input .ss-icon-btn.bb-mic.recording svg{animation:bbMicPulse 1.15s ease-in-out infinite}
@keyframes bbMicPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.14)}}
.bb-voice-rec{flex-direction:column;gap:9px;padding:16px 22px;border-radius:16px;border:none;background:rgba(28,28,30,.92);min-width:210px;text-align:center;bottom:96px;box-shadow:0 12px 32px rgba(0,0,0,.28)}
.bb-voice-rec.cancel{background:rgba(255,59,48,.94)}
.bb-voice-live{font-size:14px;max-width:240px;min-height:20px;color:#fff;line-height:1.45;word-break:break-word}
.bb-voice-hint{font-size:11px;color:rgba(255,255,255,.62);letter-spacing:.3px}
.bb-voice-wave{height:18px}
.bb-voice-wave span{height:14px}

/* ============ V61 统一云端语音 + 订单页AI + 录音浮层 ============ */
.bb-speak{display:inline-flex;align-items:center;gap:3px;margin:7px 0 0 2px;padding:3px 7px 3px 5px;border:none;background:transparent;color:#9a9aa0;border-radius:8px;cursor:pointer;font-size:11px;line-height:1;vertical-align:middle;-webkit-tap-highlight-color:transparent;transition:background-color .12s,color .12s}
.bb-speak svg{width:14px;height:14px;display:block}
.bb-speak:hover{background:#f2f3f7;color:var(--brand)}
.bb-speak.speaking{color:#fff;background:var(--brand);animation:bbSpeakPulse 1.1s ease-in-out infinite}
.msg-bubble .bb-speak{margin:6px 0 0 0}
.ci-talk,.ci-mode,.bb-mic{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.ci-talk.rec{background:var(--brand);color:#fff;border-color:var(--brand)}
.voice-hold-ov{position:fixed;left:50%;top:42%;transform:translate(-50%,-50%);z-index:9999;background:rgba(28,28,30,.93);color:#fff;border-radius:18px;padding:20px 28px;display:flex;flex-direction:column;align-items:center;gap:10px;min-width:190px;text-align:center;box-shadow:0 14px 40px rgba(0,0,0,.3)}
.voice-hold-ov.cancel{background:rgba(255,59,48,.94)}
.voice-hold-ov .vh-text{font-size:15px;max-width:240px;line-height:1.4;word-break:break-word;min-height:20px}
.voice-hold-ov .vh-hint{font-size:11px;color:rgba(255,255,255,.62)}
.vh-wave{display:flex;gap:3px;align-items:flex-end;height:20px}
.vh-wave i{width:3px;height:14px;background:#f5b800;border-radius:1px;animation:vhwave .8s ease-in-out infinite}
.vh-wave i:nth-child(2){animation-delay:.1s}.vh-wave i:nth-child(3){animation-delay:.2s}.vh-wave i:nth-child(4){animation-delay:.3s}.vh-wave i:nth-child(5){animation-delay:.4s}
@keyframes vhwave{0%,100%{height:6px}50%{height:16px}}

/* ===================== V62 豆包式对话引擎 ===================== */
.ss-input.dcomposer,.chat-input-bar.dcomposer{display:block !important;gap:0}
.dcomposer{background:#fff;border-top:1px solid #ececf0;padding:8px 12px calc(9px + env(safe-area-inset-bottom))}
.dcomposer .dc-att{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 8px 2px}
.dcomposer .dc-att[hidden]{display:none}
.dc-chip{position:relative;display:inline-flex;align-items:center;gap:6px;background:#f2f3f7;border-radius:10px;padding:5px 8px;font-size:12px;color:#1c1c1e;max-width:170px}
.dc-chip.img{padding:3px}
.dc-chip.img img{width:46px;height:46px;border-radius:8px;object-fit:cover;display:block}
.dc-chip.file{color:#5a6577}
.dc-chip.file span{max-width:112px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-chip i{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;background:#1c1c1e;color:#fff;font-style:normal;font-size:12px;line-height:18px;text-align:center;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.dc-row{display:flex;align-items:flex-end;gap:7px}
.dc-plus,.dc-mic,.dc-kbd{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:none;background:transparent;color:#5a6577;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .12s ease}
.dc-plus:active,.dc-mic:active,.dc-kbd:active{transform:scale(.86)}
.dc-wrap{flex:1;min-width:0;background:#f1f1f4;border-radius:19px;display:flex;align-items:center;min-height:38px;padding:0 4px 0 14px}
.dcomposer .dc-input{flex:1;min-width:0;border:none !important;outline:none !important;background:transparent !important;height:38px;font-size:15px;color:#1c1c1e;padding:0;border-radius:0;box-shadow:none}
.dc-talk{display:none;flex:1;height:38px;border:none;background:transparent;color:#1c1c1e;font-size:15px;letter-spacing:3px;justify-content:center;align-items:center;cursor:pointer;user-select:none;-webkit-user-select:none}
.dcomposer.voice .dc-wrap{justify-content:center;padding:0}
.dcomposer.voice .dc-input{display:none}
.dcomposer.voice .dc-talk{display:flex}
.dc-talk.rec{background:#ff3b30 !important;color:#fff;border-radius:12px}
.dc-send{flex:0 0 auto;width:38px;height:38px;border-radius:50%;border:none;background:#3b5bff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .12s ease;box-shadow:none}
.dc-send[hidden]{display:none}
.dc-send:active{transform:scale(.85)}
.msg-img{display:block;max-width:180px;width:62%;border-radius:12px;margin:2px 0 6px;object-fit:cover}
.msg-user-text{white-space:pre-wrap;word-break:break-word}
.msg-file{display:flex;align-items:center;gap:6px;border-radius:8px;padding:6px 8px;margin-bottom:6px;font-size:12px;background:rgba(255,255,255,.2)}
.msg-speak{display:inline-flex;margin-left:6px;color:#9a9aa0;cursor:pointer;vertical-align:-2px}
.msg-speak.speaking{color:#3b5bff}
.msg-retry{color:#ff3b30;cursor:pointer;font-size:13px}
.v62-sheet-mask{position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:9999;display:flex;align-items:flex-end;animation:v62fade .18s ease}
.v62-sheet-mask.hidden{display:none}
.v62-sheet{width:100%;max-width:520px;margin:0 auto;background:#f7f7f8;border-radius:18px 18px 0 0;padding:8px 14px calc(14px + env(safe-area-inset-bottom));animation:v62up .22s ease}
.v62-sheet-grip{width:38px;height:4px;border-radius:2px;background:#d6d6db;margin:6px auto 12px}
.v62-sheet button{width:100%;height:52px;border:none;background:#fff;border-radius:14px;margin-bottom:8px;font-size:16px;color:#1c1c1e;display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer}
.v62-sheet button:active{background:#eeeef2}
.v62-sheet .v62-ic{font-size:18px}
.v62-sheet .v62-cancel{font-weight:600;margin-top:4px}
@keyframes v62fade{from{opacity:0}to{opacity:1}}
@keyframes v62up{from{transform:translateY(100%)}to{transform:translateY(0)}}
.bb-typing{display:inline-flex;align-items:center}
.bb-typing i{width:6px;height:6px;border-radius:50%;background:#b6b6bd;display:inline-block;margin:0 2px;animation:bbdot 1s infinite}
.bb-typing i:nth-child(2){animation-delay:.18s}
.bb-typing i:nth-child(3){animation-delay:.36s}
@keyframes bbdot{0%,100%{transform:translateY(0);opacity:.5}50%{transform:translateY(-4px);opacity:1}}
#bbVoiceRec{display:none !important}

/* V62.1 覆盖旧版 .ss-input button 强样式，还原豆包式灰键/蓝发送 */
.dcomposer button{border:none!important;box-shadow:none!important;background:transparent!important;padding:0!important;font-size:14px!important;font-weight:400!important;text-transform:none;line-height:normal}
.dcomposer .dc-plus,.dcomposer .dc-mic,.dcomposer .dc-kbd{width:38px!important;height:38px!important;min-width:0!important;color:#6b6b70!important;border-radius:50%!important}
.dcomposer .dc-send{width:38px!important;height:38px!important;min-width:0!important;background:#3b5bff!important;color:#fff!important;border-radius:50%!important}
.dcomposer .dc-talk{width:auto!important;height:38px!important;color:#1c1c1e!important;border-radius:0!important;letter-spacing:3px}
.dcomposer.voice .dc-talk.rec{background:#ff3b30!important;color:#fff!important;border-radius:12px!important}

/* ================= V65 豆包卡片式输入栏 + 对话气泡（实测 doubao.com 规格） ================= */
.dcomposer,.dcomposer *{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",system-ui,sans-serif}
.dcomposer{padding:8px 14px calc(10px + env(safe-area-inset-bottom));background:transparent!important;border:none!important;box-shadow:none!important}
.dcomposer .dc-card{background:#fff;border:1px solid #e9e9ee;border-radius:24px;box-shadow:0 2px 14px rgba(0,0,0,.06);padding:13px 16px 10px;transition:border-color .15s ease,box-shadow .15s ease}
.dcomposer .dc-card:focus-within{border-color:#0057ff;box-shadow:0 0 0 3px rgba(0,87,255,.10)}
.dcomposer .dc-att{display:flex;gap:8px;flex-wrap:wrap;margin:0 2px 8px}
.dcomposer .dc-editor{min-height:24px}
.dcomposer .dc-input{width:100%!important;border:none!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;padding:2px 0!important;font-size:16px!important;line-height:24px;color:#111;min-width:0}
.dcomposer .dc-input::placeholder{color:#9a9aa0}
.dcomposer .dc-talk{width:100%;height:46px;border:none!important;background:#f4f4f5!important;border-radius:12px!important;color:#1c1c1e!important;font-size:16px;letter-spacing:2px;display:flex;align-items:center;justify-content:center}
.dcomposer.voice .dc-talk.rec{background:#ff3b30!important;color:#fff!important}
.dcomposer .dc-tools{display:flex;align-items:center;gap:13px;margin-top:11px}
.dcomposer .dc-plus{width:30px!important;height:30px!important;min-width:0!important;background:transparent!important;border:none!important;border-radius:8px!important;color:#111!important;display:flex;align-items:center;justify-content:center;padding:0!important}
.dcomposer .dc-plus svg{width:26px;height:26px;stroke-width:2.2}
.dcomposer .dc-sep{width:1px;height:22px;background:#e6e6ea}
.dcomposer .dc-context{display:inline-flex;align-items:center;gap:3px;font-size:16px;color:#111;font-weight:500;white-space:nowrap}
.dcomposer .dc-caret{color:rgba(0,0,0,.35);font-size:18px;line-height:1;margin-left:1px}
.dcomposer .dc-spacer{flex:1}
.dcomposer .dc-mic,.dcomposer .dc-kbd{width:40px!important;height:40px!important;min-width:0!important;background:#f4f4f5!important;border:none!important;border-radius:50%!important;color:#1c1c1e!important;display:flex;align-items:center;justify-content:center;padding:0!important;box-shadow:none!important}
.dcomposer .dc-mic svg,.dcomposer .dc-kbd svg{width:22px;height:22px}
.dcomposer .dc-send{width:40px!important;height:40px!important;min-width:0!important;background:#0057ff!important;border:none!important;border-radius:50%!important;color:#fff!important;display:flex;align-items:center;justify-content:center;padding:0!important;box-shadow:none!important}
.dcomposer .dc-send svg{width:22px;height:22px;stroke:#fff}
/* 对话流：用户蓝气泡靠右、机器人纯文本靠左（豆包式） */
#spBody,.ss-body{background:#fff!important}
.msg,.msg *{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",system-ui,sans-serif}
.msg.user{justify-content:flex-end}
.msg.user>.msg-user-text{background:#0057ff;color:#fff;border-radius:18px;padding:9px 14px;font-size:16px;line-height:1.5;max-width:78%;word-break:break-word}
.msg.user .msg-img{width:168px;border-radius:14px;border:1px solid #ececf0;display:block;margin-bottom:6px}
.msg.user .msg-file{background:#0057ff;color:#fff;border-radius:14px;padding:8px 12px;font-size:14px}
.msg.bot{align-items:flex-start;gap:8px}
.msg-bot-ava{width:30px;height:30px;flex:0 0 30px;border-radius:8px;overflow:hidden}
.msg-bot-ava svg{width:30px;height:30px;display:block}
.msg-bot-txt{background:transparent!important;border:none!important;box-shadow:none!important;padding:3px 0!important;font-size:16px!important;line-height:1.62;color:#1c1c1e;max-width:82%}
.msg-bot-txt .bb-card{background:#fff;border:1px solid #ececf0;box-shadow:0 1px 8px rgba(0,0,0,.04);border-radius:14px}
.bb-typing i{background:#b9b9bf}
/* 顶部页签极简化 */
.ss-tabs{gap:6px}
.ss-tab{background:#f4f4f5!important;border:none!important;border-radius:999px!important;color:#6b6b70!important;font-size:13.5px;padding:6px 13px!important;box-shadow:none!important}
.ss-tab.on{background:#1c1c1e!important;color:#fff!important}

/* ================= V65.1 修正 hidden 泄漏 + 页签/快捷/卡片豆包化 ================= */
.dcomposer [hidden]{display:none!important}
.bb-tabs{background:#fff!important;border-bottom:1px solid #f0f0f2!important;padding:9px 14px 10px;gap:8px}
.bb-tab{flex:0 0 auto;background:#f4f4f5!important;color:#6b6b70!important;border:none!important;box-shadow:none!important;border-radius:999px!important;padding:7px 15px!important;font-size:14px!important;font-weight:500}
.bb-tab.on{background:#1c1c1e!important;color:#fff!important}
.bb-tab:active{transform:scale(.95)!important;box-shadow:none!important}
.bb-quick{background:#fff!important;padding:10px 14px;gap:8px}
.bb-quick button{background:#f4f4f5!important;color:#3a3a3e!important;border:none!important;box-shadow:none!important;border-radius:999px!important;padding:7px 14px!important;font-size:13px!important;font-weight:500}
.bb-quick button:active{transform:scale(.95)}
.msg.bot .bb-card,.msg-bot-txt .bb-card{background:#fff!important;border:1px solid #ececf0!important;box-shadow:0 1px 8px rgba(0,0,0,.04)!important;border-radius:14px!important;padding:14px!important;font-size:14px!important;width:100%;box-sizing:border-box}
.bb-card .bbc-title{color:#111!important;font-weight:700!important;font-size:15px!important;margin-bottom:8px!important}
.bb-card .bbc-row{border-bottom:1px solid #f2f2f4!important;font-size:14px!important;padding:7px 0!important;color:#1c1c1e}
.bb-card .bb-action{background:#0057ff!important;color:#fff!important;border:none!important;box-shadow:none!important;border-radius:999px!important;padding:9px 18px!important;font-size:14px!important;font-weight:600;margin-top:12px!important}
.bb-card .bb-action:active{transform:scale(.96)}
