/* ================= 基础 ================= */
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
:root{
  --bg:#000;--panel:#121214;--panel2:#1c1c1f;--line:rgba(255,255,255,.09);
  --txt:#fff;--txt2:rgba(255,255,255,.62);--txt3:rgba(255,255,255,.38);
  --red:#fe2c55;--cyan:#25f4ee;--gold:#ffb300;
  --safe-b:env(safe-area-inset-bottom,0px);
  --tab-h:52px;
}
html,body{height:100%;overflow:hidden;background:#0a0a0b}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  color:var(--txt);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;
  display:flex;align-items:center;justify-content:center}
button,input,textarea{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;outline:none}
button{cursor:pointer}
img{display:block;object-fit:cover}
a{color:inherit;text-decoration:none}
/* 全站隐藏滚动条（保留滚动能力）：WebKit / Firefox / 旧 IE 三套写法 */
*{scrollbar-width:none;-ms-overflow-style:none}
::-webkit-scrollbar{width:0;height:0;display:none}
::-webkit-scrollbar-thumb,::-webkit-scrollbar-track{background:transparent}
.hidden{display:none!important}

#phone{position:relative;width:100%;max-width:430px;height:100%;max-height:100dvh;background:var(--bg);
  overflow:hidden;display:flex;flex-direction:column;box-shadow:0 0 60px rgba(0,0,0,.8)}
@media(min-width:520px){#phone{height:92vh;max-height:900px;border-radius:22px}}
#view{position:absolute;inset:0;bottom:0;overflow:hidden;display:flex;flex-direction:column}
#view.has-tab{bottom:calc(var(--tab-h) + var(--safe-b))}

/* ================= 顶栏 / 底栏 ================= */
.tabbar{position:absolute;left:0;right:0;bottom:0;height:calc(var(--tab-h) + var(--safe-b));
  padding-bottom:var(--safe-b);background:rgba(10,10,11,.96);backdrop-filter:blur(20px);
  border-top:1px solid var(--line);display:flex;z-index:60}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  color:var(--txt3);font-size:10px;position:relative;padding-top:4px}
.tabbar button.on{color:var(--txt)}
.tabbar svg{width:22px;height:22px;fill:currentColor}
.tabbar .tb-plus{flex:0 0 76px}
.tabbar .tb-plus i{display:block;width:42px;height:28px;border-radius:9px;
  background:linear-gradient(90deg,var(--cyan),#fff 45%,var(--red));position:relative}
.tabbar .tb-plus i::after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:32px;height:20px;border-radius:6px;background:#0a0a0b}
.tabbar .tb-plus i::before{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:11px;height:11px;z-index:2;background:
   linear-gradient(#fff,#fff) center/11px 2px no-repeat,
   linear-gradient(#fff,#fff) center/2px 11px no-repeat}
.tb-badge{position:absolute;top:2px;left:calc(50% + 8px);min-width:16px;height:16px;padding:0 4px;
  border-radius:8px;background:var(--red);font-size:10px;line-height:16px;text-align:center;color:#fff;font-style:normal}

/* ================= 通用按钮 ================= */
.btn-primary{background:var(--red);color:#fff;border-radius:8px;padding:9px 18px;font-weight:600;transition:.15s}
.btn-primary:active{opacity:.8}
.btn-primary.sm{padding:6px 14px;font-size:14px;border-radius:6px}
.btn-primary.w-full{width:100%;padding:13px}
.btn-primary:disabled{opacity:.5}
.btn-ghost{background:rgba(255,255,255,.1);color:var(--txt);border-radius:8px;padding:9px 18px}
.btn-ghost.w-full{width:100%;padding:13px}
.btn-follow{background:var(--red);color:#fff;border-radius:5px;padding:5px 15px;font-size:13px;font-weight:600}
.btn-follow.on{background:rgba(255,255,255,.14);color:var(--txt2)}
.ipt{width:100%;background:rgba(255,255,255,.09);border-radius:8px;padding:11px 13px;color:#fff;
  border:1px solid transparent;transition:.15s}
.ipt:focus{border-color:rgba(254,44,85,.6);background:rgba(255,255,255,.12)}
.ipt::placeholder{color:var(--txt3)}
textarea.ipt{resize:none;min-height:80px;line-height:1.5}

/* ================= 视频流 ================= */
.feed-page{position:absolute;inset:0;overflow:hidden;background:#000}
.feed-top{position:absolute;top:0;left:0;right:0;height:56px;z-index:30;display:flex;align-items:center;
  justify-content:space-between;padding:0 10px;background:linear-gradient(180deg,rgba(0,0,0,.55),transparent)}
.feed-top-lite{background:linear-gradient(180deg,rgba(0,0,0,.7),transparent);padding:0 14px}
.feed-tabs{display:flex;gap:18px;font-size:16px;font-weight:600;color:var(--txt2);flex:1;justify-content:center}
.feed-tabs .ft{color:var(--txt3);position:relative;padding-bottom:4px;font-weight:500}
.feed-tabs .ft.on{color:#fff;font-weight:700}
.feed-tabs .ft.on::after{content:'';position:absolute;left:50%;bottom:-2px;transform:translateX(-50%);
  width:18px;height:2.5px;border-radius:2px;background:#fff}
.feed-right{display:flex;align-items:center;gap:2px}
.fb-btn{display:flex;align-items:center;gap:3px;color:#fff;font-size:13px;padding:6px}
.fb-btn svg{width:20px;height:20px;fill:#fff}
.feed-left{display:flex;align-items:center;gap:2px}

/* ================= 首页样式模板（后台 DIY 可切换：html[data-tpl]） ================= */
/* 沉浸版：放大标题、隐藏话题/音乐/位置、去掉底部进度条 */
html[data-tpl="immersive"] .feed-info .feed-desc{font-size:17px;font-weight:600;line-height:1.45}
html[data-tpl="immersive"] .feed-tags,
html[data-tpl="immersive"] .feed-music,
html[data-tpl="immersive"] .feed-loc{display:none}
html[data-tpl="immersive"] .feed-progress{display:none}
html[data-tpl="immersive"] .feed-shade{background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,transparent 26%,transparent 50%,rgba(0,0,0,.9) 100%)}
/* 极简版：只留作者与标题，隐藏互动数字、话题/音乐/位置与转盘 */
html[data-tpl="minimal"] .feed-tags,
html[data-tpl="minimal"] .feed-music,
html[data-tpl="minimal"] .feed-loc,
html[data-tpl="minimal"] .feed-desc .feed-sub{display:none}
html[data-tpl="minimal"] .feed-side .cnt{display:none}
html[data-tpl="minimal"] .side-disc{display:none}
html[data-tpl="minimal"] .feed-progress{display:none}
html[data-tpl="minimal"] .feed-top{background:transparent}
/* 左侧抽屉菜单 */
.mask-left{justify-content:flex-start}
/* 抽屉宽度=手机框一半：居左弹出，右半边留空（遮罩半透明可见视频） */
.nav-drawer{width:50%;height:100%;background:var(--panel);
  border-radius:0 16px 16px 0;display:flex;flex-direction:column;
  transform:translateX(-100%);transition:transform .26s cubic-bezier(.3,.9,.3,1);
  padding-top:var(--safe-t,0)}
.mask.in .nav-drawer{transform:translateX(0)}
.nd-hd{flex:0 0 auto;height:54px;display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;border-bottom:1px solid var(--line)}
.nd-title{font-size:16px;font-weight:600}
.nd-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--txt2)}
.nd-close svg{width:20px;height:20px;fill:currentColor}
.nd-list{padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.nd-item{display:flex;align-items:center;gap:12px;padding:13px 10px;border-radius:10px;
  font-size:15px;color:var(--txt);text-align:left;transition:background .15s}
.nd-item:active{background:rgba(255,255,255,.08)}
.nd-ico{font-size:20px;width:26px;text-align:center;flex:0 0 auto}
.ft-title{font-size:16px;font-weight:600}
.feed-scroll{position:absolute;inset:0;overflow-y:scroll;scroll-snap-type:y mandatory;
  -webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}
.feed-item{position:relative;height:100%;width:100%;scroll-snap-align:start;scroll-snap-stop:always;
  overflow:hidden;background:#000}
.media-wrap{position:absolute;inset:0;background:#000}
/* 封面作模糊氛围底：视频 contain 留白处显示模糊放大的封面（抖音同款），全屏视频时被完全盖住 */
.feed-cover{position:absolute;inset:0;width:100%;height:100%;filter:blur(26px) brightness(.5);transform:scale(1.4);z-index:1}
.feed-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2}
.feed-shade{position:absolute;inset:0;z-index:3;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.45) 0%,transparent 22%,transparent 52%,rgba(0,0,0,.78) 100%)}
.play-ico{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(.6);z-index:5;
  font-size:52px;color:rgba(255,255,255,.72);opacity:0;transition:.2s;pointer-events:none;
  text-shadow:0 2px 20px rgba(0,0,0,.6)}
.feed-item:not(.playing) .play-ico{opacity:1;transform:translate(-50%,-50%) scale(1)}
.big-heart{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%) scale(0);z-index:6;
  font-size:110px;color:var(--red);opacity:0;pointer-events:none;filter:drop-shadow(0 0 24px rgba(254,44,85,.8))}
.big-heart.pop{animation:pop .85s cubic-bezier(.2,.9,.3,1.3)}
@keyframes pop{0%{transform:translate(-50%,-50%) scale(0) rotate(-14deg);opacity:0}
  30%{transform:translate(-50%,-50%) scale(1.15) rotate(6deg);opacity:1}
  60%{transform:translate(-50%,-50%) scale(.94) rotate(-3deg);opacity:1}
  100%{transform:translate(-50%,-50%) scale(1.5) rotate(0);opacity:0}}

/* v3.4 起首页不再提供声音开关（默认有声，三端统一） */

/* 右侧操作栏 */
.feed-side{position:absolute;right:9px;bottom:96px;z-index:20;display:flex;flex-direction:column;
  align-items:center;gap:17px}
.side-avatar{position:relative;margin-bottom:4px}
.av{border-radius:50%;background:#2a2a2e;object-fit:cover;border:1.6px solid rgba(255,255,255,.9)}
.av-ph{background:linear-gradient(135deg,#3a3a40,#1d1d21)}
.follow-dot{position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);width:20px;height:20px;
  border-radius:50%;background:var(--red);color:#fff;font-size:15px;line-height:18px;text-align:center;
  font-weight:600;border:2px solid #000;transition:.2s}
.follow-dot.hide{opacity:0;transform:translateX(-50%) scale(.4)}
.side-btn{display:flex;flex-direction:column;align-items:center;gap:3px;color:#fff;transition:.18s}
.side-btn .ico{width:34px;height:34px;display:flex;align-items:center;justify-content:center}
.side-btn .ico svg{width:31px;height:31px;fill:#fff;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
.side-btn .cnt{font-size:12px;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.5)}
.side-btn:active{transform:scale(.86)}
.side-btn.active .ico svg{fill:var(--red);animation:beat .35s}
@keyframes beat{0%{transform:scale(1)}45%{transform:scale(1.32)}100%{transform:scale(1)}}
.side-disc{width:46px;height:46px;border-radius:50%;overflow:hidden;border:7px solid #141416;
  margin-top:6px;animation:spin 6s linear infinite;box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.side-disc img{width:100%;height:100%}
@keyframes spin{to{transform:rotate(360deg)}}

/* 底部信息 */
.feed-info{position:absolute;left:14px;right:76px;bottom:26px;z-index:20}
.feed-item:has(.feed-product) .feed-info{bottom:152px}
.author-name{font-size:16px;font-weight:700;margin-bottom:6px;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.author-name .vf{display:inline-block;width:14px;height:14px;background:var(--cyan);color:#0a0a0b;
  border-radius:50%;font-size:9px;line-height:14px;text-align:center;margin-left:5px;font-style:normal;font-weight:900}
.feed-desc{font-size:14px;line-height:1.4;margin-bottom:5px;max-height:62px;overflow:hidden;
  text-shadow:0 1px 4px rgba(0,0,0,.6)}
.feed-sub{color:rgba(255,255,255,.75)}
.feed-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.tag{font-size:13px;color:#9ad7ff;font-weight:500}
.feed-music{display:flex;align-items:center;gap:6px;font-size:13px;margin-bottom:4px;
  text-shadow:0 1px 4px rgba(0,0,0,.6)}
.feed-music::before{content:'♪';font-size:14px}
.marq{overflow:hidden;flex:1;white-space:nowrap}
.marq>span{display:inline-block;animation:marq 9s linear infinite}
@keyframes marq{0%{transform:translateX(0)}100%{transform:translateX(-58%)}}
.feed-loc{font-size:12px;color:rgba(255,255,255,.72)}

/* 挂车商品 */
.feed-product{position:absolute;left:14px;bottom:96px;z-index:21;display:flex;align-items:center;gap:8px;
  background:rgba(0,0,0,.55);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.14);
  border-radius:10px;padding:6px 10px 6px 6px;max-width:230px}
.feed-product img{width:34px;height:34px;border-radius:7px}
.fp-txt{flex:1;text-align:left;overflow:hidden}
.fp-txt b{display:block;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fp-txt span{font-size:13px;color:var(--red);font-weight:700}
.fp-go{font-size:11px;background:var(--red);color:#fff;padding:4px 8px;border-radius:6px;white-space:nowrap}

.feed-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.13);z-index:22}
.feed-progress i{display:block;height:100%;width:0;background:rgba(255,255,255,.85);transition:width .2s linear}
.feed-page.single .feed-item{height:100%}

/* ================= 通用页面壳 ================= */
.page{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}
.navbar{height:50px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
  padding:0 12px;border-bottom:1px solid var(--line);background:rgba(12,12,14,.96);backdrop-filter:blur(16px);
  position:relative;z-index:10}
.navbar .nb-title{font-size:17px;font-weight:600;flex:1;text-align:center}
.navbar .nb-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#fff}
.navbar svg{width:22px;height:22px;fill:#fff}
.page-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.page-body.p0{padding:0}

.tabs-line{display:flex;gap:26px;padding:0 16px;border-bottom:1px solid var(--line);flex:0 0 auto}
.tabs-line button{padding:12px 0;font-size:15px;color:var(--txt3);position:relative}
.tabs-line button.on{color:#fff;font-weight:600}
.tabs-line button.on::after{content:'';position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:22px;height:2.5px;background:#fff;border-radius:2px}

.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  padding:70px 20px;color:var(--txt3);font-size:14px;text-align:center}
.empty-ico{font-size:44px;opacity:.55}
.loading{display:flex;align-items:center;justify-content:center;gap:9px;padding:50px;color:var(--txt3);font-size:14px}
.spin{width:17px;height:17px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;
  animation:spin .7s linear infinite;display:inline-block}

/* ================= 遮罩 / 弹层 ================= */
.mask{position:absolute;inset:0;background:rgba(0,0,0,.6);z-index:100;display:flex;
  opacity:0;transition:opacity .2s}
.mask.in{opacity:1}
.mask-tp{background:transparent}
.mask-center{align-items:center;justify-content:center;padding:28px}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:82%;background:var(--panel);
  border-radius:16px 16px 0 0;display:flex;flex-direction:column;transform:translateY(100%);
  transition:transform .26s cubic-bezier(.3,.9,.3,1);padding-bottom:var(--safe-b);overflow:hidden}
.mask.in .sheet{transform:translateY(0)}
.sheet-full{height:82%}
.sheet-hd{flex:0 0 auto;height:50px;display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;border-bottom:1px solid var(--line)}
.sh-count{font-size:15px;font-weight:600}
.sh-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--txt2)}
.sh-close svg{width:20px;height:20px;fill:currentColor}
.modal{width:100%;max-width:330px;background:var(--panel2);border-radius:14px;padding:20px;
  transform:scale(.92);transition:transform .2s;overflow:hidden}
.mask.in .modal{transform:scale(1)}
.modal-wide{max-width:420px}
.modal-title{font-size:16px;font-weight:600;text-align:center;margin-bottom:12px}
.modal-body{font-size:14px;color:var(--txt2);text-align:center;line-height:1.6;margin-bottom:18px}
.modal-actions{display:flex;gap:10px;margin-top:16px}
.modal-actions button{flex:1}

/* 评论 */
.cmt-list{flex:1;overflow-y:auto;padding:4px 16px 12px}
.cmt{display:flex;gap:10px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.05)}
.cmt-body{flex:1;min-width:0}
.cmt-name{font-size:13px;color:var(--txt2);margin-bottom:3px}
.cmt-text{font-size:14.5px;line-height:1.45;word-break:break-word}
.cmt-meta{font-size:12px;color:var(--txt3);margin-top:5px}
.cmt-like{display:flex;flex-direction:column;align-items:center;gap:1px;color:var(--txt3);font-size:11px;
  min-width:26px;padding-top:4px}
.cmt-like svg{width:16px;height:16px;fill:currentColor}
.cmt-like.active{color:var(--red)}
.cmt-like.active svg{fill:var(--red)}
.cmt-replies{margin-top:9px;padding-left:10px;border-left:2px solid rgba(255,255,255,.08);display:flex;
  flex-direction:column;gap:9px}
.cmt-reply{display:flex;gap:8px}
.cmt-reply .cmt-body{flex:1}
.cmt-input{flex:0 0 auto;display:flex;gap:9px;padding:10px 14px;border-top:1px solid var(--line);align-items:center}
.cmt-input .ipt{border-radius:20px;padding:9px 15px}

/* 分享 */
.share-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:20px 12px}
.share-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 4px;font-size:12px;color:var(--txt2)}
.share-item:active{opacity:.6}
.si-ico{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.09);display:flex;
  align-items:center;justify-content:center;font-size:22px}
.share-cancel{padding:0 12px 14px}
.send-list{max-height:56vh;overflow-y:auto;padding:6px 8px 12px}
.send-row{display:flex;align-items:center;gap:11px;width:100%;padding:9px 10px;border-radius:10px;font-size:15px;text-align:left}
.send-row:active{background:rgba(255,255,255,.07)}

/* Toast */
.toast{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.9);background:rgba(30,30,34,.96);
  color:#fff;padding:11px 20px;border-radius:10px;font-size:14px;z-index:999;opacity:0;pointer-events:none;
  transition:.2s;max-width:76%;text-align:center;backdrop-filter:blur(10px)}
.toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* ================= 消息 / 聊天 ================= */
.msg-top{flex:0 0 auto;padding:12px 16px 8px}
.msg-top h2{font-size:22px;font-weight:700}
.msg-shortcuts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:12px 16px 16px}
.ms-item{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11px;color:var(--txt2);
  position:relative;padding:6px 0}
.ms-ico{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.08);display:flex;
  align-items:center;justify-content:center;font-size:21px}
.ms-dot{position:absolute;top:4px;right:calc(50% - 26px);min-width:17px;height:17px;padding:0 4px;
  background:var(--red);border-radius:9px;font-size:10px;line-height:17px;color:#fff;text-align:center;font-style:normal}
.conv{display:flex;align-items:center;gap:12px;padding:11px 16px}
.conv:active{background:rgba(255,255,255,.05)}
.conv-av{position:relative;flex:0 0 auto}
.conv-body{flex:1;min-width:0}
.conv-name{font-size:15px;margin-bottom:2px}
.conv-last{font-size:13px;color:var(--txt3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-right{text-align:right;flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:5px}
.conv-time{font-size:11px;color:var(--txt3)}
.conv-unread{min-width:18px;height:18px;padding:0 5px;background:var(--red);border-radius:9px;
  font-size:10px;line-height:18px;text-align:center;color:#fff}

.chat-page{background:#0e0e10}
.chat-body{flex:1;overflow-y:auto;padding:14px 14px 6px;display:flex;flex-direction:column;gap:12px}
.msg-row{display:flex;gap:9px;align-items:flex-start;max-width:100%}
.msg-row.mine{flex-direction:row-reverse}
.msg-bubble{background:var(--panel2);padding:9px 13px;border-radius:14px;font-size:14.5px;
  max-width:64%;line-height:1.45;word-break:break-word}
.msg-row.mine .msg-bubble{background:var(--red);border-bottom-right-radius:4px}
.msg-row:not(.mine) .msg-bubble{border-bottom-left-radius:4px}
.msg-bubble.card{padding:7px}
.msg-card{width:180px;background:rgba(0,0,0,.25);border-radius:9px;overflow:hidden}
.msg-card img{width:100%;height:220px}
.msg-card .mc-t{font-size:12.5px;padding:7px 8px;line-height:1.35;max-height:52px;overflow:hidden}
.chat-input{flex:0 0 auto;display:flex;gap:9px;padding:10px 12px calc(10px + var(--safe-b));border-top:1px solid var(--line);
  background:#0e0e10;align-items:center}
.chat-input .ipt{border-radius:20px;padding:9px 15px}

/* ================= 个人主页 ================= */
.profile-hd{padding:16px 16px 0;position:relative}
.ph-bg{position:absolute;inset:0;height:180px;background:linear-gradient(160deg,#2b2b3a,#141418);
  filter:blur(0);opacity:.85}
.ph-top{position:relative;display:flex;justify-content:flex-end;gap:14px;padding-bottom:14px}
.ph-top button{color:#fff;font-size:19px}
.ph-main{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding-bottom:14px}
.ph-name{font-size:20px;font-weight:700;display:flex;align-items:center;gap:6px}
.ph-name .vf{width:15px;height:15px;background:var(--cyan);color:#0a0a0b;border-radius:50%;
  font-size:9px;line-height:15px;text-align:center;font-style:normal;font-weight:900}
.ph-uid{font-size:12px;color:var(--txt3)}
.ph-bio{font-size:13.5px;color:var(--txt2);text-align:center;max-width:290px;line-height:1.5}
.ph-stats{display:flex;gap:30px;position:relative;padding:6px 0 14px}
.ph-stats div{text-align:center;cursor:pointer}
.ph-stats b{display:block;font-size:17px;font-weight:700}
.ph-stats span{font-size:12px;color:var(--txt3)}
.ph-acts{position:relative;display:flex;gap:9px;padding-bottom:16px}
.ph-acts button{flex:1}
.ph-follow-btn{background:var(--red);color:#fff;border-radius:8px;padding:10px;font-weight:600}
.ph-follow-btn.on{background:rgba(255,255,255,.1);color:var(--txt2)}

.vgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;padding:2px}
.vcell{position:relative;aspect-ratio:9/16;background:#191919;overflow:hidden}
.vcell img{width:100%;height:100%;position:absolute;inset:0}
.vcell .vc-info{position:absolute;left:5px;bottom:5px;font-size:11.5px;font-weight:600;
  text-shadow:0 1px 4px rgba(0,0,0,.8);display:flex;align-items:center;gap:3px;z-index:2}
.vcell .vc-lock{position:absolute;right:5px;top:5px;font-size:10px;background:rgba(0,0,0,.6);
  padding:2px 6px;border-radius:4px;z-index:2}
.vcell .vc-pin{position:absolute;left:5px;top:5px;font-size:10px;background:var(--red);
  padding:2px 6px;border-radius:4px;z-index:2}

/* ================= 搜索 / 发现 ================= */
.search-bar{display:flex;gap:9px;padding:9px 14px;align-items:center;flex:0 0 auto}
.search-bar .ipt{border-radius:20px;padding:9px 15px}
.hot-list{padding:6px 0}
.hot-item{display:flex;align-items:center;gap:12px;padding:12px 16px}
.hot-item:active{background:rgba(255,255,255,.05)}
.hot-rank{width:20px;font-size:16px;font-weight:800;color:var(--txt3);font-style:italic}
.hot-rank.r1{color:#fe2c55}.hot-rank.r2{color:#ff7a45}.hot-rank.r3{color:#ffb300}
.hot-word{flex:1;font-size:15px}
.hot-tag{font-size:10px;color:#fff;background:var(--red);padding:1.5px 5px;border-radius:4px}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding:6px 16px 14px}
.chip{background:rgba(255,255,255,.08);border-radius:16px;padding:7px 14px;font-size:13px;color:var(--txt2)}
.chip.on{background:#fff;color:#000;font-weight:600}
.sec-title{font-size:15px;font-weight:600;padding:16px 16px 8px;display:flex;align-items:center;justify-content:space-between}
.sec-title small{font-size:12px;color:var(--txt3);font-weight:400}

.ulist{display:flex;flex-direction:column}
.urow{display:flex;align-items:center;gap:12px;padding:11px 16px}
.urow .u-info{flex:1;min-width:0}
.urow .u-name{font-size:15px;display:flex;align-items:center;gap:5px}
.urow .u-name .vf{width:13px;height:13px;background:var(--cyan);color:#000;border-radius:50%;font-size:8px;
  line-height:13px;text-align:center;font-style:normal;font-weight:900}
.urow .u-desc{font-size:12.5px;color:var(--txt3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.urow .u-fans{font-size:12px;color:var(--txt3)}

/* 视频列表（横排卡片，用于搜索/收藏） */
.vlist{display:flex;flex-direction:column;gap:2px}
.vrow{display:flex;gap:11px;padding:11px 16px}
.vrow:active{background:rgba(255,255,255,.05)}
.vrow img{width:96px;height:128px;border-radius:9px;flex:0 0 auto;background:#191919}
.vrow .vr-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.vrow .vr-t{font-size:14.5px;line-height:1.4;max-height:42px;overflow:hidden}
.vrow .vr-m{font-size:12px;color:var(--txt3);display:flex;align-items:center;gap:7px}
.vrow .vr-u{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--txt2);margin-top:auto}

/* ================= 发布 ================= */
.pub-page{padding:16px;display:flex;flex-direction:column;gap:16px;overflow-y:auto;flex:1}
.pub-drop{border:1.5px dashed rgba(255,255,255,.2);border-radius:14px;aspect-ratio:9/12;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  color:var(--txt3);font-size:14px;position:relative;overflow:hidden;background:rgba(255,255,255,.02)}
.pub-drop .pd-ico{font-size:46px;opacity:.6}
.pub-drop .pd-hint{font-size:12px}
.pub-drop input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}
.pub-drop video,.pub-drop .pd-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.pub-progress{height:4px;border-radius:2px;background:rgba(255,255,255,.12);overflow:hidden}
.pub-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--red));transition:width .2s}
.field{display:flex;flex-direction:column;gap:7px}
.field label{font-size:13px;color:var(--txt2)}
.row-2{display:flex;gap:10px}
.pub-tags{display:flex;flex-wrap:wrap;gap:7px}
.pub-tag-input{display:flex;gap:8px}

/* ================= 直播 ================= */
.live-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}
.live-card{position:relative;border-radius:11px;overflow:hidden;aspect-ratio:3/4;background:#161618}
.live-card img{position:absolute;inset:0;width:100%;height:100%}
.live-card .lc-shade{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.85))}
.live-card .lc-info{position:absolute;left:9px;right:9px;bottom:9px}
.lc-title{font-size:13.5px;font-weight:600;line-height:1.3;max-height:36px;overflow:hidden}
.lc-host{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:11.5px;color:rgba(255,255,255,.8)}
.lc-host img{position:static;width:20px;height:20px;border-radius:50%}
.lc-badge{position:absolute;left:8px;top:8px;background:linear-gradient(90deg,var(--red),#ff6b81);
  padding:3px 8px;border-radius:11px;font-size:10.5px;font-weight:700;display:flex;align-items:center;gap:4px}
.lc-badge i{width:5px;height:5px;background:#fff;border-radius:50%;animation:blink 1.1s infinite}
@keyframes blink{50%{opacity:.25}}
.lc-viewers{position:absolute;right:8px;top:8px;background:rgba(0,0,0,.5);padding:3px 8px;border-radius:11px;font-size:11px}

.live-room{position:absolute;inset:0;background:#000;overflow:hidden}
.live-room video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lr-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.6) 0,transparent 24%,transparent 55%,rgba(0,0,0,.72))}
.lr-top{position:absolute;top:0;left:0;right:0;padding:10px 12px;display:flex;align-items:center;gap:10px;z-index:20}
.lr-host{display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.42);border-radius:20px;padding:4px 12px 4px 4px;backdrop-filter:blur(8px)}
.lr-host .lh-txt b{display:block;font-size:13px;font-weight:600}
.lr-host .lh-txt span{font-size:10.5px;color:rgba(255,255,255,.7)}
.lr-viewers{display:flex;align-items:center;gap:5px;background:rgba(0,0,0,.42);border-radius:20px;
  padding:5px 11px;font-size:12px;backdrop-filter:blur(8px);margin-left:auto}
.lr-close{width:32px;height:32px;border-radius:50%;background:rgba(0,0,0,.42);display:flex;
  align-items:center;justify-content:center;backdrop-filter:blur(8px)}
.lr-danmaku{position:absolute;left:10px;bottom:150px;right:90px;max-height:44%;overflow-y:auto;z-index:15;
  display:flex;flex-direction:column;gap:7px;-webkit-mask-image:linear-gradient(180deg,transparent,#000 22%)}
.dm{display:flex;align-items:flex-start;gap:7px;background:rgba(0,0,0,.3);border-radius:14px;
  padding:5px 11px;font-size:13px;line-height:1.35;align-self:flex-start;max-width:100%;
  backdrop-filter:blur(4px);animation:dmIn .28s}
@keyframes dmIn{from{opacity:0;transform:translateY(8px)}}
.dm b{color:var(--cyan);font-weight:500;flex:0 0 auto}
.dm.gift{background:linear-gradient(90deg,rgba(254,44,85,.85),rgba(255,179,0,.7))}
.dm.join b{color:var(--gold)}
.lr-fly{position:absolute;inset:0;pointer-events:none;z-index:18;overflow:hidden}
.fly-gift{position:absolute;font-size:56px;animation:fly 2s ease-out forwards}
@keyframes fly{0%{opacity:0;transform:translateY(0) scale(.4)}20%{opacity:1;transform:translateY(-30px) scale(1.2)}
  100%{opacity:0;transform:translateY(-330px) scale(.85)}}
.lr-big-gift{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) scale(0);font-size:120px;z-index:19;
  pointer-events:none;filter:drop-shadow(0 0 30px rgba(255,179,0,.9))}
.lr-big-gift.pop{animation:bigGift 2.2s}
@keyframes bigGift{0%{transform:translate(-50%,-50%) scale(0) rotate(-20deg);opacity:0}
  25%{transform:translate(-50%,-50%) scale(1.2) rotate(8deg);opacity:1}
  70%{transform:translate(-50%,-50%) scale(1) rotate(0);opacity:1}
  100%{transform:translate(-50%,-63%) scale(1.4);opacity:0}}
.lr-bottom{position:absolute;left:0;right:0;bottom:0;padding:10px 12px calc(12px + var(--safe-b));
  display:flex;align-items:center;gap:9px;z-index:20}
.lr-input{flex:1;background:rgba(0,0,0,.42);border-radius:20px;padding:9px 15px;color:#fff;
  backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.1)}
.lr-input::placeholder{color:rgba(255,255,255,.55)}
.lr-act{width:40px;height:40px;border-radius:50%;background:rgba(0,0,0,.42);display:flex;
  align-items:center;justify-content:center;font-size:19px;backdrop-filter:blur(8px);flex:0 0 auto}
.gift-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:16px 14px;
  max-height:44vh;overflow-y:auto}
.gift-item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 4px;border-radius:11px;
  background:rgba(255,255,255,.05)}
.gift-item.on{background:rgba(254,44,85,.22);box-shadow:inset 0 0 0 1px var(--red)}
.gift-item .gi-ico{font-size:30px}
.gift-item .gi-name{font-size:11.5px;color:var(--txt2)}
.gift-item .gi-price{font-size:11px;color:var(--gold)}
.live-ending{position:absolute;inset:0;background:rgba(0,0,0,.86);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;z-index:40;color:#fff}
.live-ending b{font-size:20px}

/* ================= 商城 ================= */
.shop-search{padding:10px 14px;flex:0 0 auto;display:flex;gap:9px;align-items:center}
.shop-search .ipt{border-radius:20px;padding:9px 15px}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:2px 12px 16px}
.pcard{background:var(--panel);border-radius:12px;overflow:hidden}
.pcard img{width:100%;aspect-ratio:1;background:#191919}
.pcard .pc-body{padding:9px 10px 11px}
.pcard .pc-t{font-size:13.5px;line-height:1.35;max-height:37px;overflow:hidden;margin-bottom:7px}
.pcard .pc-price{color:var(--red);font-size:17px;font-weight:800}
.pcard .pc-price small{font-size:11px;font-weight:400}
.pcard .pc-orig{font-size:11px;color:var(--txt3);text-decoration:line-through;margin-left:5px}
.pcard .pc-sales{font-size:11px;color:var(--txt3);margin-top:5px}

.pd-hero{position:relative;background:#000}
.pd-hero img{width:100%;aspect-ratio:1;background:#141416}
.pd-hero .pd-back{position:absolute;left:10px;top:10px;width:34px;height:34px;border-radius:50%;
  background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px)}
.pd-hero .pd-back svg{width:20px;height:20px;fill:#fff}
.pd-price-box{background:linear-gradient(90deg,rgba(254,44,85,.16),transparent);padding:14px 16px;
  border-bottom:1px solid var(--line)}
.pd-price{font-size:27px;font-weight:800;color:var(--red);display:flex;align-items:baseline;gap:9px}
.pd-price em{font-size:13px;font-weight:400;color:var(--txt3);text-decoration:line-through;font-style:normal}
.pd-title{font-size:16px;font-weight:600;line-height:1.4;margin-top:6px}
.pd-meta{display:flex;gap:18px;font-size:12px;color:var(--txt3);margin-top:9px}
.pd-sec{padding:14px 16px;border-bottom:1px solid var(--line)}
.pd-sec h4{font-size:14px;margin-bottom:9px;display:flex;align-items:center;gap:7px}
.pd-sec h4::before{content:'';width:3px;height:13px;background:var(--red);border-radius:2px}
.pd-desc{font-size:13.5px;color:var(--txt2);line-height:1.65}
.pd-hot{display:flex;gap:9px;overflow-x:auto;padding:2px 0}
.pd-hot .vcell{flex:0 0 106px;border-radius:9px}

.pd-bar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:10px 14px calc(10px + var(--safe-b));
  border-top:1px solid var(--line);background:rgba(12,12,14,.96);backdrop-filter:blur(16px)}
.pd-bar .pd-ico{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;color:var(--txt2);min-width:42px}
.pd-bar .pd-ico i{font-size:19px;font-style:normal}
.pd-bar .grow{flex:1}

.cart-row{display:flex;gap:11px;padding:12px 14px;align-items:center;border-bottom:1px solid var(--line)}
.cart-row img{width:76px;height:76px;border-radius:9px;flex:0 0 auto;background:#191919}
.cart-row .cr-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.cart-row .cr-t{font-size:13.5px;line-height:1.35;max-height:37px;overflow:hidden}
.cart-row .cr-foot{display:flex;align-items:center;justify-content:space-between}
.cart-row .cr-price{color:var(--red);font-weight:700;font-size:16px}
.stepper{display:flex;align-items:center;gap:0;background:rgba(255,255,255,.08);border-radius:7px;overflow:hidden}
.stepper button{width:28px;height:26px;font-size:16px;color:#fff}
.stepper span{min-width:30px;text-align:center;font-size:13px}
.chk{width:20px;height:20px;border-radius:50%;border:1.6px solid rgba(255,255,255,.35);flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;color:transparent;font-size:12px}
.chk.on{background:var(--red);border-color:var(--red);color:#fff}
.cart-bar{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:10px 14px calc(10px + var(--safe-b));
  border-top:1px solid var(--line);background:rgba(12,12,14,.96)}
.cart-bar .cb-total{flex:1;font-size:13px;color:var(--txt2)}
.cart-bar .cb-total b{color:var(--red);font-size:20px;font-weight:800;margin-left:5px}

.order-card{background:var(--panel);border-radius:12px;margin:11px 14px;overflow:hidden}
.oc-hd{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;font-size:12.5px;color:var(--txt3);
  border-bottom:1px solid var(--line)}
.oc-st{font-weight:600}
.oc-st.pending{color:var(--gold)}.oc-st.paid{color:var(--cyan)}.oc-st.shipped{color:#7ee787}.oc-st.canceled{color:var(--txt3)}
.oc-item{display:flex;gap:10px;padding:11px 13px;align-items:center}
.oc-item img{width:60px;height:60px;border-radius:8px;flex:0 0 auto;background:#191919}
.oc-item .oi-b{flex:1;min-width:0;font-size:13.5px;line-height:1.35;max-height:37px;overflow:hidden}
.oc-item .oi-p{text-align:right;font-size:12.5px;color:var(--txt2)}
.oc-ft{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:10px 13px;border-top:1px solid var(--line)}
.oc-ft .oc-sum{flex:1;font-size:13px;color:var(--txt2)}
.oc-ft .oc-sum b{color:var(--red);font-size:16px}

/* ================= 登录 ================= */
.auth-page{display:flex;flex-direction:column;justify-content:center;padding:0 30px;height:100%;gap:0}
.auth-logo{text-align:center;margin-bottom:36px}
.auth-logo .al-ico{font-size:56px}
.auth-logo h1{font-size:23px;font-weight:800;letter-spacing:3px;margin-top:6px}
.auth-logo p{font-size:12.5px;color:var(--txt3);margin-top:8px;letter-spacing:1px}
.auth-form{display:flex;flex-direction:column;gap:13px}
.auth-switch{text-align:center;font-size:13px;color:var(--txt3);margin-top:20px}
.auth-switch b{color:var(--red);font-weight:600;margin-left:4px}
.auth-tip{margin-top:26px;font-size:12px;color:var(--txt3);line-height:1.8;text-align:center;
  background:rgba(255,255,255,.04);border-radius:10px;padding:12px}

/* 导航返回 */
.nav-back{display:flex;align-items:center;gap:2px;color:#fff;font-size:15px;padding:6px 4px}
.nav-back svg{width:22px;height:22px;fill:#fff}
.settings-row{display:flex;align-items:center;justify-content:space-between;padding:15px 16px;
  border-bottom:1px solid var(--line);font-size:15px}
.settings-row span{color:var(--txt3);font-size:13.5px}
.danger{color:#ff5c5c!important}

/* ================= 站点公告条 / 维护遮罩 / 站点页脚 ================= */
#siteBar{position:absolute;left:0;right:0;top:0;height:34px;z-index:70;
  display:flex;align-items:center;gap:7px;padding:0 12px;font-size:12px;
  background:linear-gradient(90deg,rgba(254,44,85,.24),rgba(37,244,238,.16));
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
#siteBar .sb-ico{flex:0 0 auto;font-size:13px}
#siteBar .sb-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#siteBar .sb-more{flex:0 0 auto;color:var(--red);font-size:11px}
#phone.has-bar #view{top:34px}

.maint-mask{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.8);
  backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:28px}
.maint-mask .maint-box{width:100%;max-width:330px;background:var(--panel2);border-radius:16px;
  padding:26px 22px;text-align:center;border:1px solid var(--line)}
.maint-mask .maint-ico{font-size:44px}
.maint-mask h3{font-size:17px;font-weight:600;margin:10px 0 8px}
.maint-mask p{font-size:13.5px;color:var(--txt2);line-height:1.7;margin-bottom:20px;white-space:pre-wrap}

.site-foot{padding:22px 16px 30px;text-align:center;font-size:11.5px;color:var(--txt3);line-height:1.9}
.site-foot a{color:var(--txt3);text-decoration:underline}

/* ================= 店铺列表 / 店铺主页 ================= */
.shop-row{display:flex;gap:11px;align-items:center;background:var(--panel);border-radius:12px;
  margin:9px 14px;padding:12px}
.shop-row img{width:54px;height:54px;border-radius:12px;background:var(--panel2);flex:0 0 auto}
.shop-row .sr-b{flex:1;min-width:0}
.shop-row .sr-t{font-size:15px;font-weight:600}
.shop-row .sr-i{font-size:12px;color:var(--txt3);margin:4px 0 7px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.shop-row .sr-m{display:flex;gap:5px;flex-wrap:wrap}
.shop-row .sr-m .chip{font-size:10.5px;padding:2px 8px}
.shop-row .sr-r{text-align:center;flex:0 0 auto}
.shop-row .sr-r b{display:block;font-size:15px}
.shop-row .sr-r span{font-size:10.5px;color:var(--txt3)}

.sd-hero{position:relative}
.sd-cover{width:100%;height:150px;background:linear-gradient(135deg,#1d1d22,#2a1420)}
.sd-hero .pd-back{position:absolute;left:12px;top:12px;z-index:2}
.sd-head{display:flex;gap:12px;align-items:flex-end;padding:0 16px;margin-top:-26px;position:relative;z-index:2}
.sd-logo{width:62px;height:62px;border-radius:14px;background:var(--panel2);border:2px solid var(--bg)}
.sd-ht{flex:1;min-width:0;padding-bottom:2px}
.sd-name{font-size:18px;font-weight:700;display:flex;align-items:center;gap:7px}
.sd-sub{font-size:12px;color:var(--txt3);margin-top:4px}
.sd-st{font-style:normal;font-size:10px;padding:2px 7px;border-radius:20px;font-weight:500}
.sd-st.green{background:rgba(37,211,102,.16);color:#25d366}
.sd-st.amber{background:rgba(255,179,0,.16);color:var(--gold)}
.sd-st.red{background:rgba(254,44,85,.16);color:var(--red)}
.sd-sec{margin:12px 14px 0;background:var(--panel);border-radius:12px;padding:12px 14px;
  font-size:13px;color:var(--txt2);line-height:1.7}
.sd-notice{color:var(--gold)}
.sd-addr{display:flex;flex-direction:column;gap:6px}
.sd-stats{display:flex;background:var(--panel);border-radius:12px;margin:12px 14px 0;padding:13px 0}
.sd-stats>div{flex:1;text-align:center}
.sd-stats b{display:block;font-size:15px}
.sd-stats span{font-size:11px;color:var(--txt3)}
.sd-sec-h{margin:18px 16px 10px;font-size:15px;font-weight:700}
.sd-sec-h span{font-size:12px;color:var(--txt3);font-weight:400;margin-left:6px}
.sd-manage{padding:4px 14px 20px}

/* ================= 开店 / 我的店铺 ================= */
.ms-wrap{padding:12px 14px 24px}
.ms-reject{background:rgba(254,44,85,.12);border:1px solid rgba(254,44,85,.3);color:#ff8fa5;
  border-radius:12px;padding:12px 14px;font-size:13px;line-height:1.7;margin-bottom:12px}
.ms-pending{background:var(--panel);border-radius:16px;padding:40px 20px;text-align:center}
.ms-pico{font-size:44px}
.ms-pt{font-size:17px;font-weight:700;margin-top:12px}
.ms-pd{font-size:13px;color:var(--txt3);margin-top:8px;line-height:1.8}
.ms-form{display:flex;flex-direction:column;gap:12px;background:var(--panel);border-radius:16px;padding:16px 14px}
.ms-tip{font-size:11.5px;color:var(--txt3);line-height:1.7;margin-top:2px}
.ms-switch{display:flex;align-items:center;justify-content:space-between;font-size:14px}
.ms-tog{width:44px;height:24px;border-radius:12px;background:rgba(255,255,255,.14);position:relative;transition:.18s}
.ms-tog i{position:absolute;left:2px;top:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.18s}
.ms-tog.on{background:var(--red)}
.ms-tog.on i{left:22px}
.ms-up-img{width:44px;height:44px;border-radius:9px;background:var(--panel2);object-fit:cover}
.ms-head{display:flex;gap:11px;align-items:center;margin:12px 14px 0;background:var(--panel);
  border-radius:14px;padding:13px}
.ms-logo{width:52px;height:52px;border-radius:12px;background:var(--panel2)}
.ms-hb{flex:1;min-width:0}
.ms-ht{font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:7px}
.ms-hs{font-size:12px;color:var(--txt3);margin-top:4px}
.ms-stats{display:flex;background:var(--panel);border-radius:14px;margin:10px 14px 0;padding:13px 0}
.ms-stats>div{flex:1;text-align:center}
.ms-stats b{display:block;font-size:14px}
.ms-stats span{font-size:10.5px;color:var(--txt3)}
.ms-quick{display:flex;gap:8px;margin:10px 14px 0}
.ms-quick button{flex:1;background:var(--panel2);border-radius:10px;padding:11px 0;font-size:12.5px;color:var(--txt2)}
.ms-prod{display:flex;gap:10px;align-items:center;background:var(--panel);border-radius:12px;
  margin:9px 14px;padding:11px}
.ms-prod img{width:52px;height:52px;border-radius:9px;background:var(--panel2);flex:0 0 auto}
.ms-prod .mp-b{flex:1;min-width:0}
.ms-prod .mp-t{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-prod .mp-p{color:var(--red);font-weight:700;font-size:14px;margin-top:5px}
.ms-prod .mp-p span{color:var(--txt3);font-weight:400;font-size:11px;margin-left:6px}
.ms-prod .mp-acts{display:flex;flex-direction:column;gap:6px}
.ms-prod .btn-ghost{padding:5px 12px;font-size:12px}
.btn-ghost.danger{color:#ff8fa5}

/* ================= 我的钱包 ================= */
.wl-card{margin:12px 14px;border-radius:18px;padding:20px 18px;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#2a1420,#481523 65%,#5b1a2c)}
.wl-cl{font-size:12.5px;color:rgba(255,255,255,.62)}
.wl-cv{font-size:34px;font-weight:800;letter-spacing:-1px;margin:8px 0 16px}
.wl-cs{display:flex;border-top:1px solid rgba(255,255,255,.14);padding-top:13px}
.wl-cs>div{flex:1}
.wl-cs b{display:block;font-size:14.5px}
.wl-cs span{font-size:10.5px;color:rgba(255,255,255,.55)}
.wl-btn{position:absolute;right:18px;top:20px;background:#fff;color:var(--red);font-weight:700;
  border-radius:20px;padding:7px 20px;font-size:13px}
.wl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:13px 16px;border-bottom:1px solid var(--line)}
.wl-rl{flex:1;min-width:0}
.wl-rt{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wl-rd{font-size:11.5px;color:var(--txt3);margin-top:3px}
.wl-rr{text-align:right;flex:0 0 auto}
.wl-rr b{display:block;font-size:14.5px}
.wl-rr b.in{color:#25d366}
.wl-rr span{font-size:10.5px;color:var(--txt3)}
.wl-tag{display:inline-block;padding:1px 7px;border-radius:20px;font-size:10px;
  background:rgba(255,255,255,.1)}
.wl-tag.pending{color:var(--gold)}
.wl-tag.paid{color:#25d366}
.wl-tag.rejected{color:#ff8fa5}
.wl-big{font-size:26px;font-weight:800}
.wl-big span{font-size:12px;color:var(--txt3);font-weight:400;margin-left:8px}
.wl-fee{font-size:12px;color:var(--txt3)}
.wl-fee b{color:var(--txt)}

/* ================= 结算 · 配送方式 ================= */
.ck-quote{margin-top:2px}
.ckq{font-size:12px;color:var(--txt3);line-height:1.6}
.ckq.no{color:#ff8fa5}
.ck-picklist{display:flex;flex-direction:column;gap:8px;max-height:180px;overflow-y:auto}
.ck-pk{display:flex;gap:9px;align-items:flex-start;background:rgba(255,255,255,.06);
  border:1px solid transparent;border-radius:10px;padding:10px 12px}
.ck-pk.on{border-color:var(--red);background:rgba(254,44,85,.12)}
.ck-pk-dot{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--txt3);flex:0 0 auto;margin-top:2px}
.ck-pk.on .ck-pk-dot{border-color:var(--red);background:var(--red);
  box-shadow:inset 0 0 0 3px var(--panel)}
.ck-pk-b{min-width:0}
.ck-pk-b b{font-size:13.5px;font-weight:600;display:block}
.ck-pk-b i{font-style:normal;font-size:11.5px;color:var(--txt3);display:block;margin-top:3px;line-height:1.5}
.oc-dlv{padding:9px 13px 0;font-size:12px;color:var(--txt3)}

/* ================= 积分中心 ================= */
.pt-cal{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}
.pt-day{display:flex;align-items:center;justify-content:center;height:26px;border-radius:7px;
  background:rgba(255,255,255,.06);font-size:10.5px;color:var(--txt3)}
.pt-day.on{background:rgba(254,44,85,.2);color:var(--red);font-weight:700}
.pt-rule{margin-top:12px;font-size:11.5px;color:var(--txt3);line-height:1.7}
.chip.blue{background:rgba(64,158,255,.16);color:#79bbff}

/* ================= 跑腿 ================= */
.er-stats{display:flex;align-items:center;gap:4px;background:var(--panel);border-radius:12px;margin:12px 14px 0;padding:13px 0}
.er-stats>div{flex:1;text-align:center}
.er-stats b{display:block;font-size:14px}
.er-stats span{font-size:10.5px;color:var(--txt3)}
.er-stats button{background:var(--panel2);border-radius:10px;padding:9px 13px;font-size:12px;color:var(--txt2);margin-right:8px}
.er-card{background:var(--panel);border-radius:14px;margin:10px 14px;padding:13px 14px}
.er-hd{display:flex;align-items:center;gap:8px}
.er-title{font-size:14.5px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-desc{font-size:12px;color:var(--txt2);margin-top:8px;line-height:1.6}
.er-addr{margin-top:9px;background:rgba(255,255,255,.05);border-radius:9px;padding:9px 11px;
  font-size:12px;color:var(--txt2);line-height:1.5}
.er-arrow{text-align:center;color:var(--txt3);font-size:10px;line-height:1.2}
.er-meta{display:flex;align-items:center;gap:12px;margin-top:9px;font-size:11px;color:var(--txt3)}
.er-meta .er-fee{margin-left:auto;color:var(--red);font-size:15px;font-weight:800}
.er-reason{margin-top:8px;font-size:11px;color:#ff8fa5}
.er-acts{display:flex;gap:8px;margin-top:11px}
.er-acts button{flex:1;padding:8px 0;font-size:12.5px;border-radius:9px}

/* ---------- 跑腿位置与导航（v2.5） ---------- */
.er-geo{display:flex;align-items:center;gap:8px;margin-top:8px;background:rgba(37,244,238,.07);
  border:1px solid rgba(37,244,238,.16);border-radius:9px;padding:7px 9px}
.er-geo-pin{flex:1;min-width:0;font-size:10.5px;color:rgba(37,244,238,.9);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.er-geo-pin i{font-style:normal;color:var(--txt3);margin:0 2px}
.er-nav{flex:0 0 auto;background:rgba(37,244,238,.16);color:#25f4ee;border-radius:7px;
  padding:5px 11px;font-size:11.5px;font-weight:600}
.er-nav:active{opacity:.7}
/* 发布弹层里的定位按钮 */
.er-pick{display:flex;gap:8px;align-items:center}
.er-pick .ipt{flex:1;min-width:0}
.er-locbtn{flex:0 0 40px;height:40px;border-radius:9px;background:rgba(255,255,255,.1);font-size:17px}
.er-locbtn:disabled{opacity:.5}
.er-locinfo{margin-top:6px;font-size:11px;color:var(--txt3);line-height:1.5}
.er-locinfo.ok{color:rgba(37,244,238,.95)}
/* 导航弹层 */
.er-nav-sheet{padding:6px 16px calc(20px + var(--safe-b));overflow-y:auto}
.er-nav-route{background:rgba(255,255,255,.05);border-radius:11px;padding:11px 13px;margin-bottom:12px}
.er-nav-pt{display:flex;align-items:center;gap:9px;padding:5px 0}
.er-nav-pt i{flex:0 0 22px;height:22px;border-radius:50%;font-size:11px;font-style:normal;
  display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff}
.er-nav-pt i.from{background:#25f4ee;color:#06202a}
.er-nav-pt i.to{background:var(--red)}
.er-nav-pt b{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-nav-pt span{flex:0 0 auto;font-size:10.5px;color:var(--txt3);font-variant-numeric:tabular-nums}
.er-nav-app{display:flex;align-items:center;gap:10px;width:100%;background:rgba(255,255,255,.06);
  border-radius:11px;padding:13px 14px;margin-bottom:8px;font-size:14px;text-align:left}
.er-nav-app.on{background:rgba(254,44,85,.18);border:1px solid rgba(254,44,85,.4)}
.er-nav-ico{font-size:18px}
.er-nav-app b{flex:1;font-weight:600}
.er-nav-tag{font-style:normal;font-size:10.5px;color:var(--red)}
.er-nav-copy{width:100%;background:rgba(255,255,255,.06);border-radius:11px;padding:12px;
  font-size:13px;color:var(--txt2)}
.er-nav-tip{margin-top:11px;font-size:11px;color:var(--txt3);text-align:center;line-height:1.6}
/* 后台跑腿表格里的坐标列 */
.er-coord{font-size:11px;color:var(--txt2);font-variant-numeric:tabular-nums;line-height:1.6}
.er-coord b{color:var(--txt3);font-weight:400}

/* ================= 跑腿众包 v3.3（骑手中心 / 抢单大厅 / 钱包） ================= */
/* 状态/类型标签配色（沿用 .chip 基础样式） */
.chip.amber{background:rgba(255,179,0,.16);color:#ffc94d}
.chip.green{background:rgba(74,222,128,.16);color:#5ee08c}
.chip.red{background:rgba(254,44,85,.18);color:#ff6b85}
.chip.purple{background:rgba(150,120,255,.18);color:#b3a0ff}
.chip.gray{background:rgba(255,255,255,.08);color:var(--txt3)}
/* 大厅顶部两个入口 */
.er-entry{display:flex;gap:10px;margin:12px 14px 0}
.er-entry button{flex:1;text-align:left;background:linear-gradient(135deg,rgba(254,44,85,.16),rgba(37,244,238,.1));
  border:1px solid var(--line);border-radius:13px;padding:12px 13px}
.er-entry button b{display:block;font-size:13.5px;font-weight:700}
.er-entry button span{display:block;margin-top:3px;font-size:10.5px;color:var(--txt3)}
.er-entry button:active{opacity:.75}
/* 骑手中心头部 */
.er-head{display:flex;align-items:center;gap:10px;margin:12px 14px 0;background:var(--panel);
  border-radius:14px;padding:14px}
.er-head-l{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.er-ava{flex:0 0 46px;height:46px;border-radius:50%;overflow:hidden;background:rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:center;font-size:21px}
.er-ava img{width:100%;height:100%}
.er-head-t{min-width:0}
.er-head-t b{display:block;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-head-t span{display:block;margin-top:2px;font-size:11px;color:var(--txt3)}
/* 听单开关 */
.er-toggle{flex:0 0 auto;display:flex;align-items:center;gap:6px;background:var(--panel2);
  border:1px solid var(--line);border-radius:20px;padding:7px 12px;font-size:12px;color:var(--txt3)}
.er-toggle i{width:8px;height:8px;border-radius:50%;background:var(--txt3)}
.er-toggle.on{color:#4ade80;border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.12)}
.er-toggle.on i{background:#4ade80;box-shadow:0 0 8px rgba(74,222,128,.8)}
.er-toggle:disabled{opacity:.6}
/* KPI 四宫格 */
.er-kpis{display:flex;gap:8px;margin:10px 14px 0}
.er-kpis>div{flex:1;background:var(--panel);border-radius:12px;padding:11px 0;text-align:center}
.er-kpis b{display:block;font-size:14px;font-variant-numeric:tabular-nums}
.er-kpis span{display:block;margin-top:2px;font-size:10px;color:var(--txt3)}
/* 快捷入口 */
.er-actions{display:flex;gap:8px;margin:10px 14px 0}
.er-actions button{flex:1;background:var(--panel);border-radius:12px;padding:12px 8px;text-align:center}
.er-actions i{display:block;font-style:normal;font-size:19px}
.er-actions b{display:block;margin-top:5px;font-size:12px}
.er-actions span{display:block;margin-top:2px;font-size:10px;color:var(--txt3);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.er-actions button:active{opacity:.75}
/* 规则说明 */
.er-info{margin:10px 14px 0;background:var(--panel);border-radius:12px;padding:4px 13px}
.er-info>div{display:flex;align-items:center;justify-content:space-between;padding:9px 0;
  font-size:12.5px;border-bottom:1px solid var(--line)}
.er-info>div:last-child{border-bottom:none}
.er-info span{color:var(--txt3)}
.er-info b{font-weight:600}
/* 状态页（审核中 / 被驳回 / 未认证） */
.er-state{margin:16px 14px;background:var(--panel);border-radius:14px;padding:26px 18px;text-align:center}
.er-state-ico{font-size:40px;line-height:1}
.er-state b{display:block;margin-top:10px;font-size:16px}
.er-state p{margin:8px 0 0;font-size:12.5px;color:var(--txt2);line-height:1.7}
.er-state .btn-primary{margin-top:16px;width:100%}
.er-state-card{margin-top:16px;background:rgba(255,255,255,.04);border-radius:11px;padding:6px 13px;text-align:left}
.er-state-card>div{display:flex;justify-content:space-between;padding:8px 0;font-size:12.5px;
  border-bottom:1px solid var(--line)}
.er-state-card>div:last-child{border-bottom:none}
.er-state-card span{color:var(--txt3)}
/* 认证表单 */
.er-apply{margin:12px 14px;background:var(--panel);border-radius:14px;padding:16px 14px 20px}
.er-apply-hd{display:flex;align-items:center;gap:11px;margin-bottom:14px}
.er-apply-ico{width:44px;height:44px;border-radius:12px;background:rgba(254,44,85,.16);
  display:flex;align-items:center;justify-content:center;font-size:21px}
.er-apply-hd b{display:block;font-size:14.5px}
.er-apply-hd div div{margin-top:2px;font-size:11px;color:var(--txt3)}
.er-reject{margin-bottom:12px;background:rgba(255,120,90,.12);border:1px solid rgba(255,120,90,.3);
  border-radius:9px;padding:9px 11px;font-size:12px;color:#ff9f8a;line-height:1.6}
/* 交通工具 / 收款方式分档 */
.er-veh{display:flex;flex-wrap:wrap;gap:8px}
.er-veh button{flex:1 1 46%;padding:9px 0;font-size:12.5px;border-radius:9px}
.er-veh button.on{background:rgba(254,44,85,.22);border:1px solid rgba(254,44,85,.45)}
/* 订单时间线 */
.er-tl{margin-top:10px;padding:10px 12px;background:rgba(255,255,255,.04);border-radius:10px}
.er-tl-i{display:flex;align-items:center;gap:9px;padding:4px 0;font-size:11.5px;color:var(--txt3)}
.er-tl-i i{flex:0 0 7px;height:7px;border-radius:50%;background:rgba(255,255,255,.18)}
.er-tl-i.on{color:var(--txt2)}
.er-tl-i.on i{background:var(--cyan);box-shadow:0 0 7px rgba(37,244,238,.7)}
.er-tl-i span{flex:1}
.er-tl-i b{font-weight:400;font-variant-numeric:tabular-nums;font-size:10.5px}
/* 骑手实得 / 预计送达 / 凭证 / 备注 */
.er-earn{display:flex;align-items:center;gap:8px;margin-top:9px;background:rgba(74,222,128,.1);
  border-radius:9px;padding:8px 11px;font-size:11.5px;color:rgba(74,222,128,.9)}
.er-earn b{font-size:14px}
.er-earn span{margin-left:auto;color:var(--txt3)}
.er-expect{margin-top:9px;font-size:11.5px;color:var(--gold)}
.er-expect.late{color:#ff7a8a}
.er-proof{display:flex;gap:7px;margin-top:9px}
.er-proof img{width:64px;height:64px;border-radius:8px;object-fit:cover;background:var(--panel2)}
.er-note{margin-top:9px;font-size:11.5px;color:var(--txt2);line-height:1.6}
/* 抢单大厅状态条 */
.er-hallbar{display:flex;align-items:center;gap:10px;margin:10px 14px 0;background:var(--panel);
  border-radius:11px;padding:10px 13px;font-size:11.5px;color:var(--txt3)}
.er-hallbar span:first-child{margin-right:auto;color:var(--txt3)}
.er-hallbar span.on{color:#4ade80}
/* 钱包 */
.er-wallet{margin:12px 14px 0;background:linear-gradient(135deg,rgba(254,44,85,.24),rgba(37,244,238,.14));
  border-radius:14px;padding:16px;display:flex;align-items:center;gap:12px}
.er-wallet-hd{flex:1;min-width:0}
.er-wallet-hd span{font-size:11.5px;color:rgba(255,255,255,.7)}
.er-wallet-hd b{display:block;margin-top:3px;font-size:26px;font-variant-numeric:tabular-nums}
.er-wallet-sub{margin-top:4px;font-size:11px;color:rgba(255,255,255,.62)}
.er-wallet .btn-primary{flex:0 0 auto;padding:10px 20px;border-radius:20px}
.er-sec{margin:16px 14px 0;font-size:13px;font-weight:700}
.er-ledger{margin:8px 14px 20px;background:var(--panel);border-radius:12px;padding:2px 13px}
.er-lg{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.er-lg:last-child{border-bottom:none}
.er-lg>div{flex:1;min-width:0}
.er-lg b{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.er-lg span{display:block;margin-top:2px;font-size:10.5px;color:var(--txt3)}
.er-lg em{font-style:normal;font-size:14px;font-weight:700;color:var(--txt2);
  font-variant-numeric:tabular-nums}
.er-lg em.in{color:#4ade80}
.er-hint{font-size:11px;color:var(--txt3);line-height:1.7;margin-top:10px}

/* ================= 广告位（后台「广告管理」→ 自定义广告位） ================= */
.ad-wrap{padding:10px 12px 0}
.ad-wrap.hidden{display:none}
.ad-slot{position:relative;display:block;width:100%;overflow:hidden;cursor:pointer;border-radius:12px}
.ad-slot img{width:100%;height:100%;object-fit:cover;display:block}
.ad-badge{display:inline-block;padding:1px 7px;border:1px solid rgba(255,255,255,.45);border-radius:4px;
  font-size:10.5px;line-height:1.5;color:rgba(255,255,255,.9);vertical-align:middle}
.ads-t{font-size:15px;font-weight:700;line-height:1.35}
.ads-d{font-size:12.5px;line-height:1.5;color:rgba(255,255,255,.78);margin-top:3px}
.ads-btn{display:inline-block;margin-top:10px;padding:8px 18px;border-radius:20px;background:var(--red);
  color:#fff;font-size:13px;font-weight:600}
.ads-btn.sm{padding:5px 14px;font-size:12px;border-radius:16px;margin-top:0}
.ads-by{font-size:11px;color:rgba(255,255,255,.55);margin-left:8px}
/* 全屏插卡（首页信息流） */
.ad-full{height:100%;border-radius:0;background:#0b0d10}
.ad-full .ads-mask{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.4) 0%,rgba(0,0,0,.05) 30%,rgba(0,0,0,.88) 100%)}
.ad-full .ads-info{position:absolute;left:16px;right:16px;bottom:104px;color:#fff}
.ad-full .ads-t{font-size:18px;margin-top:8px}
.ad-full .ads-d{font-size:13px;color:rgba(255,255,255,.8)}
.ad-full .ads-by{display:inline-block;margin:6px 0 0;color:rgba(255,255,255,.6)}
/* 横幅（发现页 / 商城页） */
.ad-banner{height:98px;background:#14171c}
.ad-banner .ads-mask{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.75),rgba(0,0,0,.12))}
.ad-banner .ads-info{position:absolute;left:12px;top:50%;right:112px;transform:translateY(-50%);color:#fff}
.ad-banner .ads-t{font-size:14.5px;margin-top:6px}
.ad-banner .ads-d{font-size:11.5px;color:rgba(255,255,255,.75)}
.ad-banner .ads-btn{position:absolute;right:12px;top:50%;transform:translateY(-50%)}
/* 卡片（我的页 / 积分中心） */
.ad-card{background:var(--panel2)}
.ad-card .ads-hd{display:flex;align-items:center;padding:10px 12px 0}
.ad-card .ads-badge{border-color:var(--line);color:var(--txt3)}
.ad-card .ads-by{color:var(--txt3)}
.ad-card .ads-body{display:flex;gap:12px;padding:10px 12px 12px}
.ad-card .ads-thumb{width:104px;height:72px;border-radius:9px;overflow:hidden;flex:0 0 auto;background:#000}
.ad-card .ads-txt{min-width:0;flex:1;display:flex;flex-direction:column;align-items:flex-start}
.ad-card .ads-t{font-size:14.5px;font-weight:600;color:var(--txt)}
.ad-card .ads-d{font-size:12px;color:var(--txt3)}
.ad-card .ads-btn{margin-top:8px}
/* 积分中心 / 我的页里（浅色底板为深色主题，保持暗色即可） */
html[data-tpl] .ad-card .ads-t{color:var(--txt)}

/* ==================== v1.9 顶部导航改版（参考抖音样式） ==================== */
.nav-menu-btn{position:relative}
.menu-badge{position:absolute;top:0;left:16px;background:#fe2c55;color:#fff;font-size:10px;font-weight:700;
  font-style:normal;line-height:1;padding:3px 6px;border-radius:10px;border:1.5px solid #10131a}
.feed-tabs .ft{font-size:17px;letter-spacing:.5px}
.feed-tabs .ft.on::after{width:28px;height:3px;border-radius:2px;background:#fff;top:auto}
.top-pin{display:inline-block;vertical-align:2px;margin-right:6px;background:#fe2c55;color:#fff;
  font-style:normal;font-size:11px;font-weight:700;line-height:1;padding:3px 7px;border-radius:4px}

/* ==================== v1.9 积分页：看广告 / 玩游戏领积分 ==================== */
.pt-earn-row{display:flex;gap:10px;margin:12px 0}
.pt-earn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 0;border-radius:12px;border:none;cursor:pointer;
  background:linear-gradient(135deg,#fe2c55,#ff6b81);color:#fff;font-size:15px;font-weight:700}
.pt-earn:last-child{background:linear-gradient(135deg,#7b5cff,#9d7bff)}
.pt-earn span{font-size:18px}
.adreward{width:300px;background:#1c1f27;border-radius:16px;padding:14px;text-align:center}
.adreward-stage{position:relative;border-radius:12px;overflow:hidden;background:#10131a;height:170px;
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px}
.adreward-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.adreward-fallback{font-size:52px}
.adreward-tag{position:absolute;top:8px;left:8px;background:rgba(0,0,0,.55);color:#cbd3e1;
  font-size:10px;padding:2px 8px;border-radius:4px;z-index:2}
.adreward-title{position:relative;z-index:2;color:#fff;font-size:14px;font-weight:600;
  padding:0 10px;text-shadow:0 1px 4px rgba(0,0,0,.8)}
.adreward-cd{margin:12px auto 10px;width:36px;height:36px;line-height:36px;border-radius:50%;
  background:rgba(255,255,255,.08);color:#fff;font-weight:700;font-size:16px}

/* ==================== v1.9 团购页 ==================== */
.group-banner{margin:12px 14px;padding:16px;border-radius:14px;color:#fff;font-weight:700;font-size:17px;
  background:linear-gradient(135deg,#fe2c55,#ff7a45)}
.group-banner-sub{margin-top:4px;font-size:12px;font-weight:400;opacity:.85}
.group-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;padding:0 14px 20px}
.group-card{background:var(--panel);border-radius:12px;overflow:hidden;text-decoration:none;display:block}
.group-card img{width:100%;height:150px;object-fit:cover;display:block}
.group-info{padding:8px 10px 10px}
.group-title{font-size:13px;color:var(--txt);line-height:1.4;min-height:36px}
.group-price{margin-top:6px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.group-price b{color:#fe2c55;font-size:17px}
.group-price s{color:var(--txt3);font-size:11px}
.group-off{font-style:normal;background:#ffe9ee;color:#fe2c55;font-size:10px;font-weight:700;
  padding:2px 6px;border-radius:4px}
.group-sales{margin-top:4px;font-size:11px;color:var(--txt3)}

/* ==================== v1.9 游戏中心 ==================== */
.game-hero{margin:12px 14px;padding:18px 16px;border-radius:14px;color:#fff;
  background:linear-gradient(135deg,#7b5cff,#fe2c55)}
.game-hero-t{font-size:18px;font-weight:800}
.game-hero-s{margin-top:6px;font-size:12px;opacity:.9}
.game-card{display:flex;align-items:center;gap:12px;margin:0 14px 10px;padding:14px;
  background:var(--panel);border-radius:14px}
.game-ico{font-size:32px}
.game-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.game-mid b{color:var(--txt);font-size:15px}
.game-mid span{color:var(--txt3);font-size:12px}
.game-shell{width:min(92vw,360px);background:#171a21;border-radius:16px;overflow:hidden;
  display:flex;flex-direction:column;align-items:stretch}
.game-hd{display:flex;align-items:center;gap:10px;padding:12px 14px;color:#fff;font-size:15px}
.game-live-score{margin-left:auto;color:#7cf29c;font-weight:700;font-size:14px}
.game-x{background:none;border:none;color:#8b93a7;font-size:16px;cursor:pointer;padding:0 2px}
.game-body{display:flex;align-items:center;justify-content:center;padding:4px 14px 10px}
.game-body canvas{border-radius:8px;touch-action:none;max-width:100%}
.game-ft{padding:10px 14px 14px;color:#8b93a7;font-size:12px;text-align:center}
.game-result{width:260px;background:#1c1f27;border-radius:16px;padding:22px 18px;text-align:center}
.gr-t{color:#cbd3e1;font-size:14px}
.gr-score{color:#fff;font-size:44px;font-weight:800;margin:8px 0 2px}
.gr-sub{color:#8b93a7;font-size:12px;margin-bottom:16px}
/* 打地鼠 */
.mole-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mole-hole{width:88px;height:88px;border-radius:50%;background:#242a36;border:none;position:relative;
  cursor:pointer;overflow:hidden}
.mole{position:absolute;left:50%;bottom:-40px;transform:translateX(-50%);font-size:44px;
  transition:bottom .15s ease}
.mole-hole.up .mole{bottom:6px}
.mole-timer{display:block;margin-bottom:6px;color:#7cf29c;font-weight:700}
/* 记忆翻牌 */
.mem-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.mem-card{width:66px;height:66px;border-radius:10px;background:#2a3040;border:none;cursor:pointer;
  font-size:28px;color:#8b93a7}
.mem-card.on,.mem-card.ok{background:#3a4154}
.mem-card.ok{opacity:.55}

/* ==================== v2.0 游戏中心：进度 + 成语填空 100 关 ==================== */
.game-prog{display:block;margin-top:2px;font-size:11px;color:#7cf29c}
.idiom-meta{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#8b93a7}
.idiom-time{font-weight:700;color:#7cf29c}
.idiom-time.low{color:#fe2c55;animation:idPulse .8s infinite}
@keyframes idPulse{50%{opacity:.35}}
.idiom-bar{height:4px;margin:8px 0 14px;border-radius:2px;background:#242a36;overflow:hidden}
.idiom-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#7cf29c,#fe2c55);
  transition:width .3s linear}
.idiom-word{display:flex;justify-content:center;gap:8px;margin:6px 0 18px}
.idiom-char,.idiom-blank{width:44px;height:52px;line-height:52px;text-align:center;font-size:26px;
  font-weight:700;border-radius:10px}
.idiom-char{background:#242a36;color:#e8ebf2}
.idiom-blank{background:#2c2233;color:#fe2c55;border:1px dashed #fe2c55}
.idiom-opts{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.idiom-opt{height:52px;border-radius:12px;border:1px solid #2f3646;background:#242a36;color:#e8ebf2;
  font-size:20px;font-weight:700;cursor:pointer;transition:transform .1s,background .15s,border-color .15s}
.idiom-opt:active{transform:scale(.96)}
.idiom-opt.ok{background:#1f7a45;border-color:#7cf29c;color:#fff}
.idiom-opt.bad{background:#7a1f31;border-color:#fe2c55;color:#fff}
.idiom-opt.hint{background:#1f7a45;border-color:#7cf29c;color:#fff}
.idiom-hint{min-height:18px;margin-top:10px;text-align:center;font-size:12px;color:#8b93a7}

/* ==================== v1.9 跨浏览器适配 ==================== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-tap-highlight-color:transparent}
#app,.app-root{min-height:100vh;min-height:-webkit-fill-available;min-height:100dvh}
button{-webkit-appearance:none;appearance:none;font-family:inherit}
input,textarea,select{font-family:inherit}
img,video,canvas{max-width:100%}
*{scrollbar-width:thin;-webkit-overflow-scrolling:touch}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:2px}

/* ==================== v2.1 小说频道 ==================== */
/* 通用截断工具（此前多处写了 class 但未定义，一并补上） */
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ellipsis-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

.nv-nav{position:relative}
.nv-sortbtn,.nv-fontbtn{width:auto;min-width:40px;font-size:13px;font-weight:600;color:var(--txt2)}
.nv-search{flex:0 0 auto;display:flex;gap:8px;padding:6px 14px 2px}
.nv-search .ipt{flex:1;height:36px;border-radius:18px;background:var(--panel2);padding:0 14px;font-size:13px}
.nv-search .btn-primary.sm{height:36px;border-radius:18px;padding:0 16px;font-size:13px}
.nv-chips{flex:0 0 auto;flex-wrap:nowrap;overflow-x:auto;padding:10px 14px}
.nv-chips .chip{flex:0 0 auto;white-space:nowrap;padding:6px 12px;font-size:12.5px}

.nv-row{display:flex;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}
.nv-row:active{background:rgba(255,255,255,.04)}
.nv-cover{position:relative;flex:0 0 78px;height:104px;border-radius:8px;overflow:hidden;background:var(--panel2)}
.nv-cover img{width:100%;height:100%;object-fit:cover}
.nv-rec{position:absolute;left:0;top:0;background:var(--red);color:#fff;font-size:10px;font-style:normal;
  padding:1px 6px;border-radius:0 0 8px 0}
.nv-info{flex:1;min-width:0;display:flex;flex-direction:column}
.nv-title{font-size:15px;font-weight:600}
.nv-sub{margin-top:3px;font-size:12px;color:var(--txt3)}
.nv-intro{margin-top:6px;font-size:12px;color:var(--txt2);line-height:1.5}
.nv-meta{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:auto;padding-top:7px;
  font-size:11px;color:var(--txt3)}
.nv-chp{font-style:normal;font-size:10px;color:var(--cyan);border:1px solid rgba(37,244,238,.35);
  border-radius:4px;padding:0 5px}
.nv-chp.done{color:var(--gold);border-color:rgba(255,179,0,.4)}
.nv-tag{font-size:10px;color:var(--txt3);background:rgba(255,255,255,.08);border-radius:4px;padding:1px 6px}
.nv-more{padding:16px;text-align:center;font-size:12px;color:var(--txt3)}

/* 详情页 */
.nv-hero{position:relative;padding:18px 16px 16px;overflow:hidden}
.nv-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  filter:blur(28px) brightness(.42);transform:scale(1.25)}
.nv-hero-in{position:relative;display:flex;gap:14px;align-items:flex-end}
.nv-hero-cover{width:104px;height:140px;border-radius:10px;object-fit:cover;flex:0 0 auto;
  background:var(--panel2);box-shadow:0 8px 24px rgba(0,0,0,.45)}
.nv-hero-txt{flex:1;min-width:0;padding-bottom:2px}
.nv-hero-title{font-size:19px;font-weight:700;line-height:1.3}
.nv-hero-sub{margin-top:6px;font-size:12.5px;color:var(--txt2)}
.nv-hero-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.nv-stats{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.nv-stats>div{flex:1;text-align:center;padding:11px 4px}
.nv-stats>div+div{border-left:1px solid var(--line)}
.nv-stats b{display:block;font-size:16px}
.nv-stats span{font-size:11px;color:var(--txt3)}
.nv-sec{padding:14px 16px 4px}
.nv-sec-t{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:600;
  margin-bottom:9px}
.nv-sec-t small{font-size:11px;font-weight:400;color:var(--txt3)}
.nv-intro-full{font-size:13px;line-height:1.7;color:var(--txt2);white-space:pre-wrap}
.nv-toc{display:flex;flex-direction:column}
.nv-toc-i{display:flex;align-items:center;gap:10px;padding:11px 2px;border-bottom:1px solid var(--line);
  font-size:13.5px}
.nv-toc-i.on{color:var(--red)}
.nv-toc-n{flex:0 0 30px;font-size:11.5px;color:var(--txt3);text-align:center;
  background:rgba(255,255,255,.06);border-radius:5px;padding:2px 0}
.nv-toc-i.on .nv-toc-n{background:var(--red);color:#fff}
.nv-toc-t{flex:1;min-width:0}
.nv-toc-w{flex:0 0 auto;font-size:11px;color:var(--txt3)}
.nv-bar{flex:0 0 auto;padding:10px 16px calc(10px + var(--safe-b));border-top:1px solid var(--line);
  background:rgba(10,10,11,.94)}
.nv-toc-sheet{padding:6px 16px calc(20px + var(--safe-b));overflow-y:auto;flex:1}

/* 阅读页 */
.page-body.nv-read{padding:18px 18px 30px;line-height:1.95;color:#e8ebf2;overflow-y:auto}
.nv-read p{margin:0 0 1.05em;text-indent:2em;word-break:break-word}
.nv-read-hd{margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.nv-read-hd b{display:block;font-size:17px;margin-bottom:5px}
.nv-read-hd span{font-size:11.5px;color:var(--txt3)}
.nv-read-end{margin-top:26px;text-align:center;font-size:12px;color:var(--txt3)}
.nv-read-bar{flex:0 0 auto;display:flex;gap:10px;padding:9px 14px calc(9px + var(--safe-b));
  border-top:1px solid var(--line);background:rgba(10,10,11,.94)}
.nv-read-bar button{flex:1;padding:11px 0;border-radius:9px;font-size:13.5px}
.nv-read-bar .btn-ghost{background:rgba(255,255,255,.08);color:var(--txt2)}
.nv-read-bar .btn-ghost:disabled{opacity:.35}

/* ============ v2.2 PWA / 安装到桌面 ============ */
.pwa-hint{position:fixed;left:50%;bottom:18px;transform:translate(-50%,20px);width:min(420px,calc(100% - 32px));
  background:rgba(30,30,32,.95);backdrop-filter:blur(10px);color:#fff;border-radius:16px;padding:16px 18px 14px;
  box-shadow:0 10px 32px rgba(0,0,0,.28);opacity:0;pointer-events:none;transition:.25s;z-index:2000}
.pwa-hint.on{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
.pwa-hd{font-weight:600;font-size:15px;margin-bottom:6px}
.pwa-hint p{margin:0;font-size:13px;color:#c8c8cc;line-height:1.6}
.pwa-hint p + p{margin-top:8px}
.pwa-hint p b{font-weight:600;color:#fff}
.pwa-sub{color:#9a9aa2 !important;font-size:12px !important}
.pwa-mask{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1999;opacity:0;transition:.25s}
.pwa-mask.on{opacity:1}
.pwa-btn{width:100%;margin-top:12px;height:38px;border:0;border-radius:10px;background:var(--pri);color:#fff;font-size:14px;font-weight:500}

/* 未授权遮罩补充信息行 */
.lic-meta{font-size:12px;color:var(--txt3);line-height:1.7;margin:-8px 0 16px}

/* 在独立全屏（添加到桌面）模式下给顶部状态栏留出安全区 */
@media (display-mode: standalone){
  #phone{padding-top:env(safe-area-inset-top)}
  .navbar{padding-top:calc(9px + env(safe-area-inset-top))}
}

/* ============ 小说富文本正文（v2.4 FXEditor 产物） ============ */
.nv-read .nv-read-html{word-break:break-word}
.nv-read .nv-read-html p{margin:0 0 1.05em;text-indent:2em}
/* 历史数据 / 网页复制常见 <div> 汤结构：与段落同样缩进（v2.5.1） */
.nv-read .nv-read-html>div:not(.fx-copybox):not(.fx-pagebreak),
.nv-read .nv-read-html>section{margin:0 0 1.05em;text-indent:2em;word-break:break-word}
.nv-read .nv-read-html img{max-width:100%;border-radius:8px;margin:.4em 0}
.nv-read .nv-read-html h1,.nv-read .nv-read-html h2,.nv-read .nv-read-html h3{margin:.8em 0 .5em;text-indent:0}
.nv-read .nv-read-html table{border-collapse:collapse;margin:.8em 0;max-width:100%}
.nv-read .nv-read-html td,.nv-read .nv-read-html th{border:1px solid rgba(255,255,255,.22);padding:5px 10px}
.nv-read .nv-read-html a{color:var(--pri)}
.nv-read .nv-read-html blockquote{border-left:3px solid var(--pri);padding-left:12px;color:var(--txt2);margin:.8em 0}
.nv-read .fx-pagebreak{margin:1.4em 0;text-align:center;color:var(--txt3);font-size:12px;letter-spacing:2px;user-select:none}
.nv-read .fx-copybox{border:1.5px dashed var(--amber,#f0a020);background:rgba(240,160,32,.08);border-radius:10px;
  padding:12px 14px;margin:1em 0;text-align:center}
.nv-read .fx-copy-t{font-weight:700;color:var(--amber,#f0a020);font-size:14px;margin-bottom:6px;text-indent:0}
.nv-read .fx-copy-b{font-size:14px;line-height:1.7;word-break:break-all;text-indent:0}
.nv-read .fx-copy-btn{margin-top:9px;padding:7px 22px;border-radius:20px;background:var(--amber,#f0a020);color:#fff;
  font-size:13px;font-weight:600;border:none}

/* ================================================================== *
 *  v2.5 小说语音听书                                                   *
 * ================================================================== */
.nv-nav-r{display:flex;align-items:center;gap:2px}
.nv-nav .nb-btn.nv-hearbtn{font-size:19px;width:38px}
.nv-nav .nb-btn.playing{color:var(--red)}
/* v2.6.1：浏览器不支持语音朗读时按钮仍可见（降透明度），点击给出原因说明 */
.nv-nav .nb-btn.nv-hearbtn.off{opacity:.45}
.nv-read .nv-sent.on{background:rgba(254,44,85,.2);border-radius:3px}
.nv-tts{flex:0 0 auto;display:flex;align-items:center;gap:6px;padding:7px 10px;
  background:linear-gradient(180deg,rgba(254,44,85,.1),rgba(12,12,14,.98));
  border-top:1px solid var(--line)}
.nv-tts-btn{flex:0 0 auto;width:34px;height:34px;border-radius:9px;background:rgba(255,255,255,.07);
  color:var(--txt2);font-size:13px;display:flex;align-items:center;justify-content:center}
.nv-tts-btn.main{width:40px;height:40px;background:var(--red);color:#fff;font-size:14px}
.nv-tts-btn:active{opacity:.75}
.nv-tts-mid{flex:1;min-width:0;padding:0 4px}
.nv-tts-line{font-size:12.5px;color:var(--txt2)}
.nv-tts-meta{font-size:10.5px;color:var(--txt3);margin-top:2px}
.tts-set{padding:6px 16px calc(20px + var(--safe-b));overflow-y:auto}
.tts-set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;
  border-bottom:1px solid var(--line)}
.tts-set-row.col{display:block}
.tts-set-row label{font-size:14px}
.tts-set-row.col label{display:block;margin-bottom:9px;color:var(--txt2)}
.tts-rates{display:flex;gap:7px;flex-wrap:wrap}
.tts-rates button{padding:6px 13px;border-radius:8px;background:rgba(255,255,255,.08);font-size:13px}
.tts-rates button.on{background:var(--red);color:#fff;font-weight:600}
.tts-switch{width:46px;height:26px;border-radius:13px;background:rgba(255,255,255,.16);position:relative;transition:.2s}
.tts-switch i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.2s}
.tts-switch.on{background:var(--red)}
.tts-switch.on i{left:23px}
.tts-tip{margin-top:12px;font-size:11.5px;color:var(--txt3);line-height:1.7}

/* ================================================================== *
 *  v2.5 PC 端框架式布局（v2.6 改为由 JS 按后台断点挂 html.pc）          *
 *    · 是否进入 PC 布局由 pc.js 决定：视口 ≥ 后台断点（默认 900px）      *
 *      且后台「PC 端」开关为开；用户也可手动强制电脑版 / 手机版          *
 *    · 因此这里不再写死媒体查询，统一挂在 html.pc 作用域下              *
 *    · html.pc.force（小屏手动进入电脑版）给容器兜底最小宽度 + 横向滚动  *
 * ================================================================== */
.pcnav,.pcbar{display:none}

html.pc body{display:block}
html.pc #phone{
  display:grid;grid-template-columns:236px 1fr;grid-template-rows:58px 1fr;
  width:100%;max-width:none;height:100%;max-height:none;border-radius:0;box-shadow:none
}
html.pc.narrow #phone{grid-template-columns:76px 1fr}
html.pc.baroff #phone{grid-template-rows:0 1fr}
html.pc .pcnav{display:flex;grid-column:1;grid-row:1 / span 2;min-height:0}
html.pc .pcbar{display:flex;grid-column:2;grid-row:1}
html.pc.baroff .pcbar{display:none}
html.pc #view{position:relative;inset:auto;grid-column:2;grid-row:2;min-height:0}
html.pc #view.has-tab{bottom:auto}
/* PC 端首页：保持与手机端完全相同的竖屏信息流比例，居中显示（三端样式一致） */
html.pc .feed-page{
  left:50%;right:auto;width:min(460px,100%);
  transform:translateX(-50%);
  border-radius:14px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(255,255,255,.06),0 18px 50px rgba(0,0,0,.45);
}
html.pc .tabbar{display:none!important}

/* 手动强制电脑版（视口未达断点）：兜底最小宽度，允许横向滚动 */
html.pc.force{overflow-x:auto}
html.pc.force body{min-width:1080px}

/* 底部弹层 → 居中对话框 */
html.pc .mask{align-items:center;justify-content:center;padding:40px}
html.pc .sheet{position:relative;left:auto;right:auto;bottom:auto;width:min(560px,100%);
  max-height:86%;border-radius:16px;transform:translateY(14px) scale(.98)}
html.pc .mask.in .sheet{transform:none}
html.pc .sheet-full{height:auto;max-height:84%}
html.pc .modal{max-width:520px}
html.pc .modal-wide{max-width:760px}
html.pc .mask-left{align-items:stretch;justify-content:flex-start;padding:0}
html.pc .mask-left .nav-drawer{height:100%;border-radius:0 16px 16px 0}
html.pc .nav-drawer{width:min(340px,36%)}

/* 正文/列表限宽，长行更好读 */
html.pc .page-body.nv-read{padding:26px max(24px,calc((100% - 780px) / 2)) 60px}
html.pc .nv-tts{padding-left:max(14px,calc((100% - 780px) / 2));padding-right:max(14px,calc((100% - 780px) / 2))}
html.pc .er-card{max-width:820px;margin:10px auto}
html.pc .er-stats{max-width:820px;margin:12px auto 0}
/* v3.3 众包：PC 宽屏下入口/头部/钱包等区块统一限宽居中 */
html.pc .er-entry,html.pc .er-head,html.pc .er-kpis,html.pc .er-actions,
html.pc .er-info,html.pc .er-wallet,html.pc .er-sec,html.pc .er-ledger,
html.pc .er-hallbar,html.pc .er-apply,html.pc .er-state{max-width:820px;margin-left:auto;margin-right:auto}
/* 大厅/我的跑单：宽屏自动两列（卡片较窄时三列），避免单列拉满整屏 */
html.pc #erList,html.pc #meList,html.pc #rhList{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));
  gap:0 14px;max-width:1120px;margin:0 auto;align-items:start}
html.pc #erList>.er-card,html.pc #meList>.er-card,html.pc #rhList>.er-card{
  max-width:none;margin:10px 0;height:100%}
html.pc #erList>.empty,html.pc #meList>.empty,html.pc #rhList>.empty{grid-column:1/-1}
html.pc .er-hint{max-width:820px;margin-left:auto;margin-right:auto}
html.pc .order-card{max-width:820px;margin:12px auto}
html.pc .nv-list .nv-row{max-width:900px;margin-left:auto;margin-right:auto}
html.pc .buy-wrap{max-width:900px;margin:0 auto}

/* ---------- v2.6 「返回电脑版 / 电脑版 / 返回手机版」入口 ---------- */
#pcSwitch{position:fixed;right:14px;bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:78;
  display:flex;align-items:center;gap:6px;padding:8px 13px;border-radius:20px;
  background:rgba(13,13,15,.86);color:#fff;font-size:12.5px;font-weight:600;
  border:1px solid rgba(255,255,255,.14);box-shadow:0 6px 20px rgba(0,0,0,.28);
  backdrop-filter:blur(10px);transition:transform .15s}
#pcSwitch svg{width:15px;height:15px;fill:currentColor}
#pcSwitch.small{padding:7px 11px;font-size:12px}
#pcSwitch:active{transform:scale(.95)}
html.pc #pcSwitch{bottom:18px}

/* ---------- 侧栏 ---------- */
.pcnav{flex-direction:column;min-height:0;background:#0d0d0f;border-right:1px solid var(--line)}
.pcnav-brand{flex:0 0 auto;height:58px;display:flex;align-items:center;gap:10px;padding:0 16px;
  border-bottom:1px solid var(--line)}
.pcnav-brand img{width:30px;height:30px;border-radius:8px;object-fit:cover}
.pcnav-logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--cyan),var(--red));
  display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800;color:#fff;font-size:15px}
.pcnav-name{font-size:16px;font-weight:700;letter-spacing:.5px}
.pcnav-list{flex:1;min-height:0;overflow-y:auto;padding:8px 10px 4px}
.pcnav-g{margin-bottom:2px}
.pcnav-gh{width:100%;display:flex;align-items:center;justify-content:space-between;
  padding:9px 8px 6px;font-size:11.5px;color:var(--txt3);letter-spacing:1px}
.pcnav-arrow{font-style:normal;font-size:10px;transition:transform .2s}
.pcnav-g.closed .pcnav-arrow{transform:rotate(-90deg)}
.pcnav-g.closed .pcnav-gb{display:none}
.pcnav-gb{display:flex;flex-direction:column;gap:2px}
.pcnav-i{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:9px;
  font-size:14px;color:var(--txt2);position:relative;transition:background .15s,color .15s}
.pcnav-i:hover{background:rgba(255,255,255,.06);color:var(--txt)}
.pcnav-i.on{background:rgba(254,44,85,.16);color:#fff;font-weight:600}
.pcnav-i.on::before{content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:3px;height:16px;border-radius:2px;background:var(--red)}
.pcnav-ico{flex:0 0 22px;height:22px;display:flex;align-items:center;justify-content:center}
.pcnav-ico svg{width:19px;height:19px;fill:currentColor}
.pcnav-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcnav-badge{flex:0 0 auto;min-width:17px;height:17px;padding:0 5px;border-radius:9px;background:var(--red);
  color:#fff;font-size:10px;font-style:normal;line-height:17px;text-align:center}
.pcnav-foot{flex:0 0 auto;border-top:1px solid var(--line);padding:8px 10px;display:flex;align-items:center;gap:6px}
.pcnav-me{flex:1;min-width:0;display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:9px}
.pcnav-me:hover{background:rgba(255,255,255,.06)}
.pcnav-me img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.pcnav-me b{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcnav-x button{width:30px;height:30px;border-radius:8px;background:rgba(255,255,255,.06);
  color:var(--txt2);font-size:14px}

/* 收窄模式：只留图标 */
html.pc.narrow .pcnav-name,
html.pc.narrow .pcnav-txt,
html.pc.narrow .pcnav-gh span,
html.pc.narrow .pcnav-arrow{display:none}
html.pc.narrow .pcnav-gh{justify-content:center;height:15px;padding:4px 0 0}
html.pc.narrow .pcnav-gh::after{content:'';width:16px;height:1px;background:var(--line)}
html.pc.narrow .pcnav-brand{justify-content:center;padding:0}
html.pc.narrow .pcnav-i{justify-content:center;padding:10px 0}
html.pc.narrow .pcnav-me{justify-content:center}
html.pc.narrow .pcnav-me b{display:none}
html.pc.narrow .pcnav-foot{flex-direction:column;gap:6px}
html.pc.narrow .pcnav-badge{position:absolute;top:5px;right:9px;min-width:8px;height:8px;padding:0;font-size:0}

/* ---------- 顶部工具条 ---------- */
.pcbar{align-items:center;gap:12px;padding:0 18px;background:rgba(13,13,15,.96);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--line);z-index:20}
.pcbar-menu{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  color:var(--txt2)}
.pcbar-menu:hover{background:rgba(255,255,255,.07);color:#fff}
.pcbar-menu svg{width:19px;height:19px;fill:currentColor}
.pcbar-crumb{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--txt3);margin-left:4px}
.pcbar-crumb i{font-style:normal;opacity:.5}
.pcbar-crumb b{color:var(--txt);font-weight:600}
.pcbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.pcbar-ico{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  color:var(--txt2);position:relative}
.pcbar-ico:hover{background:rgba(255,255,255,.07);color:#fff}
.pcbar-ico svg{width:19px;height:19px;fill:currentColor}
.pcbar-dot{position:absolute;top:7px;right:7px;width:7px;height:7px;border-radius:50%;background:var(--red)}
.pcbar-pub{display:flex;align-items:center;gap:5px;height:34px;padding:0 14px;border-radius:9px;
  background:var(--red);color:#fff;font-size:13.5px;font-weight:600}
.pcbar-pub:hover{opacity:.9}
.pcbar-pub svg{width:16px;height:16px;fill:#fff}
.pcbar-me img{width:32px;height:32px;border-radius:50%;object-fit:cover;border:1.5px solid rgba(255,255,255,.18)}
.pcbar-login{height:32px;padding:0 16px;border-radius:9px;background:rgba(255,255,255,.1);
  display:flex;align-items:center;font-size:13.5px;font-weight:600}
.pcnav-me .av,.pcbar-me .av{flex:0 0 auto}

/* ================================================================== *
 *  v2.6 购买授权页（#/buy）                                           *
 * ================================================================== */
.buy-wrap{padding:14px 14px 40px}
.buy-hero{display:flex;align-items:center;gap:14px;padding:18px 16px;border-radius:16px;
  background:linear-gradient(135deg,rgba(254,44,85,.14),rgba(37,244,238,.12));border:1px solid var(--line)}
.buy-hero-ico{width:46px;height:46px;flex:0 0 auto;border-radius:14px;background:rgba(0,0,0,.28);
  display:flex;align-items:center;justify-content:center;font-size:24px}
.buy-hero h2{font-size:17px;font-weight:700;margin:0 0 4px}
.buy-hero p{font-size:12.5px;color:var(--txt3);line-height:1.6}
.buy-plans{display:grid;gap:12px;margin-top:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.buy-plan{position:relative;padding:15px 15px 13px;border-radius:14px;background:var(--card,#fff);
  border:1px solid var(--line);color:var(--txt,#fff)}
.buy-plan.hot{border-color:var(--red);box-shadow:0 6px 20px rgba(254,44,85,.18)}
.buy-hot{position:absolute;top:-9px;right:12px;background:var(--red);color:#fff;font-size:10.5px;
  padding:2px 9px;border-radius:20px;font-weight:600}
.bp-name{font-size:14.5px}
.bp-price{margin:8px 0 6px;font-size:24px;font-weight:800;color:var(--red);display:flex;align-items:baseline;gap:2px}
.bp-price i{font-style:normal;font-size:13px}
.bp-price span{font-size:11.5px;font-weight:400;color:var(--txt3);margin-left:5px}
.bp-desc{font-size:11.5px;color:var(--txt3);margin-bottom:9px}
.bp-feat{list-style:none;display:flex;flex-direction:column;gap:6px}
.bp-feat li{font-size:12.5px;color:var(--txt2);padding-left:16px;position:relative;line-height:1.5}
.bp-feat li::before{content:'✓';position:absolute;left:0;color:#18a058;font-size:11px}
.buy-sec{margin:22px 0 10px;font-size:13.5px;font-weight:700;color:var(--txt2);
  display:flex;align-items:center;gap:8px}
.buy-sec::before{content:'';width:3px;height:13px;border-radius:2px;background:var(--red)}
.buy-act{display:flex;gap:10px;flex-wrap:wrap}
.buy-act .btn-primary,.buy-act .btn-ghost{flex:1;min-width:130px}
.buy-contact{margin-top:10px;font-size:13px;color:var(--txt2)}
.buy-note{margin-top:12px;font-size:12px;color:var(--txt3);line-height:1.75;
  background:rgba(127,127,127,.08);border-radius:10px;padding:11px 13px}
.buy-steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:9px}
.buy-steps li{font-size:12.5px;color:var(--txt2);line-height:1.7}
.buy-steps code{background:rgba(127,127,127,.14);padding:1px 5px;border-radius:4px;font-size:11.5px}
