/* TT乐 APP —— 轻奢商务风（深海蓝 #162D4A + 浅金 #C9A86C） */

/* ============ 基础 ============ */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{margin:0;background:var(--bg)}
body{
  font-family:var(--f);font-size:14px;line-height:1.6;color:var(--t1);background:var(--bg);
  -webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none;overscroll-behavior:none;
}
/* 有固定底栏时页面末尾必须真的让出它的高度。
   以前写成 html,body{height:100%} + body{padding-bottom:62px}：body 高度被钉死为一屏，
   padding 落在盒子内部对溢出内容不生效，首页/我的页最后一屏就被 #tabbar 永久遮住。 */
body.has-tab{padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom) + 14px)}
body.copyable{user-select:text;-webkit-user-select:text}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h3{font-size:15px;font-weight:600;letter-spacing:-.01em}
input,select,textarea{font-family:inherit;font-size:15px;width:100%;border:1px solid transparent;background:#fff;
  border-radius:var(--r-in);padding:13px 14px;color:var(--t1);transition:.16s}
input::placeholder,textarea::placeholder{color:var(--t3)}
input:focus,select:focus{outline:0;border-color:var(--navy);box-shadow:0 0 0 3px rgba(22,45,74,.10)}
button{font-family:inherit;font-size:15px;border:0;border-radius:var(--r-btn);padding:12px 20px;background:#fff;color:var(--t1);transition:.16s;cursor:pointer}
button.pri{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 100%);color:#fff;font-weight:600;letter-spacing:.06em;
  box-shadow:0 8px 20px rgba(22,45,74,.24)}
button.pri:active{transform:translateY(1px);box-shadow:0 4px 12px rgba(22,45,74,.2)}
button.pri[disabled]{opacity:.55;box-shadow:none}
button.gh{border:1px solid var(--line);color:var(--t2);background:#fff}
button:active{opacity:.86}
#stage{min-height:calc(100vh - var(--tab-h) - env(safe-area-inset-bottom))}
body:not(.has-tab) #stage{min-height:100vh}

/* ============ 顶部 ============ */
.hd{position:sticky;top:0;z-index:9;color:#fff;padding:14px 16px 15px;
  background:linear-gradient(135deg,#162D4A 0%,#1F3A5F 60%,#25456D 100%);
  box-shadow:0 6px 22px rgba(22,45,74,.20)}
.hd:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.7}
.hd b{font-size:16.5px;font-weight:600;letter-spacing:.02em}
.hd .back{float:left;font-size:20px;line-height:22px;padding-right:12px;margin-left:-4px;opacity:.9}

/* ============ 卡片 / 布局 ============ */
.card{background:var(--card);border-radius:var(--r-card);box-shadow:var(--sh);padding:16px;margin:12px 12px 0}
.card:last-child{margin-bottom:16px}
.card h3{margin:0 0 12px;display:flex;align-items:center;gap:8px}
.card h3:before{content:"";width:3px;height:13px;border-radius:2px;background:var(--gold)}
.row{display:flex;align-items:center;gap:10px}
.sp{flex:1;min-width:0}
.muted{color:var(--t3);font-size:12px}
.big{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:26px;font-weight:600;letter-spacing:-.5px;color:var(--navy)}
.price{font-family:var(--num);font-variant-numeric:tabular-nums;color:var(--navy);font-weight:700;letter-spacing:-.3px}
.price.big{font-size:28px}
.num,input[type=number]{font-family:var(--num);font-variant-numeric:tabular-nums}
.tag{display:inline-flex;align-items:center;font-size:11px;line-height:1;padding:5px 9px;border-radius:20px;
  background:var(--navy-soft);color:var(--navy);font-weight:500;letter-spacing:.02em;white-space:nowrap}
.tag.b{background:rgba(39,174,96,.10);color:#1E8449}
.tag.g{background:rgba(39,174,96,.10);color:#1E8449}
.tag.r{background:rgba(229,62,62,.09);color:var(--err)}
.tag.gold{background:var(--gold-soft);color:#8A6B36;font-weight:600}
.bar{display:flex;gap:9px;align-items:center;padding:12px 14px;background:#fff;box-shadow:var(--sh)}
.bar input{background:var(--bg);border-color:transparent}
.empty{padding:54px 16px;text-align:center;color:var(--t3);font-size:13px}
.spin{padding:44px;text-align:center;color:var(--t3);font-size:13px;letter-spacing:.06em}

/* ============ 商品 ============ */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.prod{background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--sh)}
.prod .ph{height:124px;background:linear-gradient(150deg,#EEF2F7 0%,#E2E8F0 100%);
  display:flex;align-items:center;justify-content:center;color:#8C9BB0;font-size:13px;letter-spacing:.04em;position:relative}
.prod .ph img{width:100%;height:124px;object-fit:cover}
.prod .ph:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(201,168,108,.5),transparent)}
.prod .in{padding:11px 12px 13px}
.prod b{display:block;font-size:13.5px;line-height:1.5;height:40px;overflow:hidden;font-weight:500;color:var(--t1)}
/* 价格行装不下时让标签整枚换到第二行：原来不换行 + .prod{overflow:hidden} 会把
   「送365天会员」右侧直接裁掉，显示成「送365天会」 */
.prod .row{margin-top:7px;flex-wrap:wrap;row-gap:6px}
.prod .row .price,.prod .row .tag{flex:0 0 auto}

/* ============ 列表单元格 ============ */
.cell{display:flex;align-items:center;gap:10px;padding:14px;background:#fff;border-bottom:1px solid var(--line)}
.cell:first-child{border-radius:var(--r-card) var(--r-card) 0 0}
.cell:last-child{border-bottom:0;border-radius:0 0 var(--r-card) var(--r-card)}
.cell i{font-style:normal;color:var(--gold-2);font-size:16px;width:18px;text-align:center;flex:0 0 18px}
.cell b{font-weight:500;font-size:14px}
.cell>.sp>div:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ============ 会员/等级视觉 ============ */
.hero{background:linear-gradient(135deg,#162D4A 0%,#1F3A5F 55%,#2B4A73 100%);color:#fff;border-radius:var(--r-card);
  padding:20px 18px;margin:12px 12px 0;box-shadow:0 10px 30px rgba(22,45,74,.26);position:relative;overflow:hidden}
.hero:before{content:"";position:absolute;right:-30px;top:-40px;width:170px;height:170px;border-radius:50%;
  background:radial-gradient(circle,rgba(201,168,108,.30),transparent 68%)}
.hero .name{font-size:16px;font-weight:600;letter-spacing:.02em}
.hero .sub{color:rgba(255,255,255,.62);font-size:11.5px;margin-top:3px}
.hero .goldtag{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:4px 10px;border-radius:20px;
  background:rgba(201,168,108,.18);color:#E8D6B0;border:1px solid rgba(201,168,108,.42);letter-spacing:.04em}
.hero .stat b{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:23px;font-weight:600;letter-spacing:-.5px;color:#fff;display:block;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 余额上万后数字会顶到隔壁列（真实反馈：55000.00 叠住了"可提积分"），按长度降两档字号 */
.hero .stat .sp{flex:1 1 0;min-width:0}
.hero .stat b.n2{font-size:18px}
.hero .stat b.n3{font-size:14.5px;letter-spacing:-.7px}
.hero .stat span{display:block;text-align:center;color:rgba(255,255,255,.55);font-size:11px;margin-top:2px}
.hero .rule{position:absolute;right:0;left:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(201,168,108,.75),transparent)}
.prog{height:5px;background:rgba(226,232,240,.9);border-radius:4px;overflow:hidden;margin-top:7px}
.prog>i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#C9A86C,#E3CB9B)}
.prog.dark{background:var(--line)}

/* ============ 专区锁定 ============ */
.lock{position:relative;overflow:hidden}
.lock .mask{position:absolute;inset:0;background:rgba(247,249,252,.94);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;padding:22px}
.lock .mask b{font-size:15px;color:var(--navy)}
.padlock{width:48px;height:48px;border-radius:50%;background:var(--gold-soft);color:var(--gold-text);
  display:flex;align-items:center;justify-content:center}

/* ============ 内容播放 ============ */
.video{width:100%;background:#0B1725;border-radius:12px}
.art{line-height:1.9;color:var(--t1);font-size:15px}
.art *{max-width:100%}
.wm{position:fixed;inset:0;pointer-events:none;z-index:8;opacity:.11;font-size:11px;color:var(--navy);
  overflow:hidden;transform:rotate(-14deg) scale(1.7);line-height:3.4;letter-spacing:.04em}

/* ============ 底部导航 ============ */
#tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tab-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);background:rgba(255,255,255,.96);backdrop-filter:saturate(180%) blur(10px);
  border-top:1px solid var(--line);display:flex;z-index:20}
#tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--t3);font-size:10.5px;letter-spacing:.03em;position:relative}
#tabbar a svg{width:21px;height:21px;fill:currentColor;transition:.16s}
#tabbar a.on{color:var(--navy);font-weight:600}
#tabbar a.on:before{content:"";position:absolute;top:0;width:22px;height:2px;border-radius:2px;background:var(--gold)}

/* ============ 提示 ============ */
#toast{position:fixed;left:50%;top:44%;transform:translateX(-50%);z-index:99;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:8px}
#toast div{background:rgba(22,45,74,.93);color:#fff;padding:11px 20px;border-radius:24px;font-size:13px;
  max-width:78vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:var(--sh-lg)}

/* ============ 登录页 ============ */
.auth{min-height:calc(100vh - 62px);background:linear-gradient(160deg,#162D4A 0%,#122540 52%,#0D1B2E 100%);color:#fff;padding:0 26px;position:relative;overflow:hidden}
.auth:before{content:"";position:absolute;top:-90px;right:-70px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(201,168,108,.26),transparent 66%)}
.auth-in{position:relative;padding-top:76px}
.auth .mark{font-family:var(--num);font-size:34px;font-weight:700;letter-spacing:-1px}
.auth .mark span{color:var(--gold);font-family:var(--zh);font-size:29px;font-weight:600}
.auth .slogan{color:rgba(255,255,255,.55);font-size:13px;letter-spacing:.14em;margin-top:8px}
.auth .hr{height:1px;background:linear-gradient(90deg,rgba(201,168,108,.65),transparent);margin:26px 0 30px}
.auth input{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);color:#fff;margin-bottom:12px}
.auth input::placeholder{color:rgba(255,255,255,.42)}
.auth input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,168,108,.16)}
.auth .gh{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);color:#fff;white-space:nowrap}
.auth .fine{color:rgba(255,255,255,.40);font-size:11px;line-height:1.9;margin-top:20px}
.auth .pri{margin-top:8px}

/* ============ 组件补充 ============ */
.avatar{width:44px;height:44px;border-radius:14px;flex:0 0 44px;display:flex;align-items:center;justify-content:center;
  font-size:17px;font-weight:600;color:#0D1B2E;background:linear-gradient(135deg,#E3CB9B,#C9A86C);
  box-shadow:0 6px 16px rgba(0,0,0,.18)}
/* 用户传了头像就用图：占位底色与内阴影都撤掉，否则方形照片外圈会压出一圈金边 */
.avatar.has{padding:0;background:none;box-shadow:none;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
/* 「我的」页顶部四个数字全部可点：余额上万会被上面的省略号截断，不点进去根本看不到完整金额 */
.hero .stat .sp.tap{cursor:pointer;-webkit-tap-highlight-color:transparent}
.hero .stat .sp.tap:active b{opacity:.7}
/* 结算/地址表单里的勾选项：input 全局是 width:100%，复选框必须单独收回来 */
.ck{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--t2)}
.ck input[type=checkbox]{width:18px;height:18px;flex:0 0 18px;padding:0;margin:0;accent-color:var(--navy)}
.ck span{line-height:1.4}
.debt{margin-top:14px;font-size:12px;color:#F0C9A8;background:rgba(229,62,62,.16);border:1px solid rgba(229,62,62,.28);
  border-radius:10px;padding:8px 11px;line-height:1.6}
.promo{display:flex;align-items:center;gap:10px;margin:12px 12px 0;padding:16px 18px;border-radius:var(--r-card);
  background:linear-gradient(120deg,#162D4A,#2B4A73);color:#fff;box-shadow:0 10px 26px rgba(22,45,74,.22);position:relative;overflow:hidden}
.promo:before{content:"";position:absolute;right:-24px;top:-30px;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle,rgba(201,168,108,.32),transparent 68%)}
.promo b{font-size:15px;font-weight:600;display:block}
.promo span{display:block;color:rgba(255,255,255,.6);font-size:11.5px;margin-top:2px}
.promo i{margin-left:auto;font-style:normal;font-size:12px;color:#E3CB9B;letter-spacing:.04em;position:relative}
/* 详情页与固定底栏的几何量：改这两个值即可整体调整避让关系 */
:root{--tab-h:62px;--bar-h:68px}
.hero-media{position:relative;aspect-ratio:1/1;max-height:62vh;background:linear-gradient(150deg,#F4F7FB,#E7EDF5);
  display:flex;align-items:center;justify-content:center;color:#8C9BB0;font-size:14px;letter-spacing:.04em;overflow:hidden}
.hero-media img{width:100%;height:100%;object-fit:contain}
.hcnt{position:absolute;right:10px;bottom:10px;font-style:normal;font-size:11px;line-height:1;padding:5px 9px;
  border-radius:999px;background:rgba(22,45,74,.55);color:#fff;letter-spacing:.06em;font-family:var(--num)}
.code{font-family:var(--num);font-size:26px;font-weight:600;letter-spacing:5px;color:var(--navy);margin:6px 0 2px;text-indent:5px}
.panel{background:#fff;border-radius:var(--r-dlg);padding:22px;width:min(360px,90vw);box-shadow:var(--sh-lg);position:relative}
.panel.tc{text-align:center}
.panel>b{font-size:16px;font-weight:600;display:block;margin-bottom:4px}
.sheet{position:absolute;left:0;right:0;bottom:0;background:#fff;border-radius:20px 20px 0 0;padding:22px 20px calc(24px + env(safe-area-inset-bottom));box-shadow:var(--sh-lg);
  max-height:86vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.sheet:before{content:"";display:block;width:36px;height:4px;border-radius:3px;background:var(--line);margin:-10px auto 14px}
.sheet>b{font-size:16px;font-weight:600}
/* 弹层里的主操作按钮吸底：地址/结算这类长表单，按钮不能滚出屏幕外（用户就找不到"保存"了） */
.sheet .sfoot{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);
  margin:16px -20px calc(-24px - env(safe-area-inset-bottom));
  padding:12px 20px calc(20px + env(safe-area-inset-bottom))}
.sheet .sfoot button{margin-top:0;width:100%}
.sheet .sfoot button+button{margin-top:8px}

/* ---------------- 商品详情 ---------------- */
.card.pd{padding:0;overflow:hidden;margin-bottom:0}
.pinfo{padding:15px 15px 16px}
.pinfo .prow{display:flex;align-items:baseline;gap:10px}
.pinfo .prow .sold{margin-left:auto;font-size:11.5px;color:var(--t3);font-family:var(--num);letter-spacing:.02em}
.pinfo h3{margin:9px 0 0;font-size:16.5px;line-height:1.42;font-weight:600;color:var(--t1);letter-spacing:-.2px}
.pinfo .sub{margin-top:5px;font-size:12.5px;line-height:1.6;color:var(--t2)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.card.dtl{margin-top:11px}
.card .sec{margin:0 0 12px;display:flex;align-items:center;gap:8px;font-size:14.5px;color:var(--navy);letter-spacing:.02em}
.card .sec:before{content:"";width:3px;height:13px;border-radius:2px;background:var(--gold)}
.thumbs{display:flex;gap:8px;padding:8px 12px;overflow-x:auto;background:#FBFCFE;border-top:1px solid var(--line)}
.thumbs img{width:54px;height:54px;flex:0 0 auto;border-radius:10px;object-fit:cover;border:2px solid transparent;background:var(--bg)}
.thumbs img.on{border-color:var(--gold)}
.rich{font-size:14px;line-height:1.75;color:var(--t1);word-break:break-word}
.rich img{max-width:100%;border-radius:12px;display:block;margin:10px 0}
.rich table{width:100%;border-collapse:collapse;font-size:13px}
.rich td,.rich th{border:1px solid var(--line);padding:7px 9px}
.rich p{margin:8px 0}

/* ---------------- 底部操作栏 ---------------- */
.padb{height:calc(var(--bar-h) + var(--tab-h) + 26px)}
body:not(.has-tab) .padb{height:calc(var(--bar-h) + 30px)}
.buybar{position:fixed;left:0;right:0;bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));z-index:40;
  display:flex;align-items:center;gap:10px;min-height:var(--bar-h);padding:9px 12px;
  background:rgba(255,255,255,.97);backdrop-filter:saturate(180%) blur(10px);-webkit-backdrop-filter:saturate(180%) blur(10px);
  border-top:1px solid var(--line);box-shadow:0 -2px 12px rgba(22,45,74,.06)}
body:not(.has-tab) .buybar{bottom:0;padding-bottom:calc(9px + env(safe-area-inset-bottom))}
.buybar .sp{flex:1}
.buybar button{white-space:nowrap;padding:0 14px;height:46px;font-size:14px;border-radius:14px}
button.sm{flex:0 0 auto;padding:0 14px;font-size:13px}
button.flex1{flex:1}
/* 加入购物车：描边次级；立即购买：主色渐变 + 价格前置 */
button.add{flex:0 0 auto;color:var(--navy);border-color:rgba(22,45,74,.22);background:#fff;font-weight:500}
button.add:active{background:var(--navy-soft)}
button.buy{display:inline-flex;align-items:center;justify-content:center;gap:7px;letter-spacing:.04em}
button.buy i{font-style:normal;font-family:var(--num);font-variant-numeric:tabular-nums;font-size:16px;font-weight:600;
  color:#E8D6B0;letter-spacing:-.3px}
button.buy span{font-size:14.5px}

/* ---------------- 首页金刚区导航（图标＋文字，公告条下方） ---------------- */
.quick{display:grid;grid-template-columns:repeat(auto-fit,minmax(58px,1fr));gap:6px 0;
  margin:10px 12px 0;padding:13px 6px 11px;background:#fff;border-radius:var(--r-in);box-shadow:var(--sh)}
.qi{border:0;background:none;padding:0 2px;display:flex;flex-direction:column;align-items:center;gap:7px;
  font-family:var(--f);cursor:pointer;-webkit-tap-highlight-color:transparent}
.qi-ic{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:var(--navy);
  background:#F2F5FB;transition:background .18s,color .18s,box-shadow .18s,transform .12s}
.qi-ic svg{width:22px;height:22px;fill:currentColor;display:block}
.qi em{font-style:normal;font-size:11.5px;line-height:1.2;color:var(--t2);max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qi.on .qi-ic{background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 100%);color:#fff;
  box-shadow:0 5px 12px rgba(31,58,95,.26)}
.qi.on em{color:var(--navy);font-weight:600}
.qi:active .qi-ic{transform:scale(.93)}

/* ---------------- 邀请海报（canvas 生成，弹层展示） ---------------- */
.pst{width:min(86vw,340px);display:flex;flex-direction:column;gap:10px}
.pst-box{background:#fff;border-radius:16px;padding:10px;box-shadow:var(--sh-lg);min-height:200px;max-height:66vh;
  display:flex;align-items:center;justify-content:center;overflow:hidden}
/* 海报是 750×1334 的竖图，预览必须整张缩进屏幕：截一半看不见，用户根本不知道保存的是完整图 */
.pst-box img{width:100%;height:auto;max-height:calc(66vh - 20px);object-fit:contain;border-radius:10px;display:block}
.pst-bar{display:flex;gap:10px}
.pst-bar a{flex:1;text-align:center;padding:12px 0;border-radius:var(--r-btn);font-size:14px;font-weight:600;
  background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 100%);color:#fff;letter-spacing:.06em}
.pst-bar button{flex:0 0 92px}
.pst-tip{color:rgba(255,255,255,.74);font-size:11.5px;line-height:1.6;text-align:center}
.panel button.gh2{background:var(--navy-soft);color:var(--navy);box-shadow:none}

/* ---------------- 购物车 ---------------- */
.cit{display:flex;align-items:center;gap:11px;padding:12px 0;border-bottom:1px solid var(--line)}
.cit:last-child{border-bottom:0}
.cit.off{opacity:.5}
.cit .ck{flex:0 0 auto;width:18px;height:18px;accent-color:var(--navy)}
.ph.tiny{width:56px;height:56px;flex:0 0 auto;border-radius:10px;overflow:hidden;font-size:11px}
.ph.tiny img{width:100%;height:100%;object-fit:cover}
.stepper{display:flex;align-items:center;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.stepper button{width:28px;height:26px;border:0;background:#FBFCFE;color:var(--navy);font-size:15px;line-height:1;font-family:var(--num)}
.stepper span{min-width:34px;text-align:center;font-size:13px;font-family:var(--num)}
.badge{position:absolute;top:-5px;right:-12px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;
  background:var(--err);color:#fff;font-size:10px;line-height:16px;font-family:var(--num);font-weight:600}
#tabbar a{position:relative}
#tabbar span{position:relative}

/* ---------------- 订单详情键值行 ---------------- */
.kv{display:flex;justify-content:space-between;gap:14px;padding:7px 0;font-size:13px;border-bottom:1px dashed var(--line)}
.kv:last-child{border-bottom:0}
.kv span{color:var(--t3);flex:0 0 auto}
.kv b{font-weight:500;text-align:right}

/* ---------------- 首页运营位：轮播 Banner / 公告条 / 公告弹层 ---------------- */
.banners{position:relative;margin:12px 12px 0;border-radius:var(--r-card);overflow:hidden;background:var(--card);box-shadow:var(--sh)}
.btrack{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.btrack::-webkit-scrollbar{display:none}
.bslide{position:relative;flex:0 0 100%;width:100%;aspect-ratio:750/320;min-height:126px;scroll-snap-align:center;cursor:pointer;background:var(--bg)}
.bslide img{width:100%;height:100%;object-fit:cover}
.bslide em{position:absolute;left:0;right:0;bottom:0;margin:0;padding:24px 74px 11px 14px;font-style:normal;font-size:12.5px;
  color:#fff;letter-spacing:.02em;background:linear-gradient(180deg,rgba(10,22,38,0),rgba(10,22,38,.74));
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bdots{position:absolute;right:13px;bottom:12px;display:flex;gap:5px;z-index:2}
.bdots i{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.5);box-shadow:0 0 3px rgba(0,0,0,.28);transition:.18s}
.bdots i.on{width:16px;background:var(--gold)}

.notibar{display:flex;align-items:center;gap:9px;margin:10px 12px 0;padding:10px 14px;border-radius:var(--r-in);
  background:var(--gold-soft);box-shadow:var(--sh);cursor:pointer}
.notibar .ni{flex:0 0 auto;font-style:normal;font-size:11px;line-height:1;padding:5px 8px;border-radius:20px;font-weight:600;
  background:linear-gradient(135deg,var(--gold),#B08A4E);color:#fff;letter-spacing:.04em}
.notibar .nt{flex:1;min-width:0;color:#8A6B36;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notibar .more{flex:0 0 auto;font-size:11.5px;color:#A08553;letter-spacing:.02em}

.nsheet{max-height:74vh;display:flex;flex-direction:column}
.nlist{flex:1;min-height:0;margin-top:12px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.nitem{padding:12px 0;border-bottom:1px dashed var(--line)}
.nitem:last-child{border-bottom:0}
.nitem>b{display:block;font-size:14px;font-weight:600}
.ndate{margin-top:3px;color:var(--t3);font-size:11px;font-family:var(--num);letter-spacing:.02em}
.nbody{margin-top:6px;color:var(--t2);font-size:13px;line-height:1.78;white-space:normal}

/* ---------------- 余额：账户卡与流水配色 ---------------- */
.wal{position:relative;overflow:hidden}
.wal:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,var(--gold),rgba(201,168,108,0))}
.wal .row b{font-size:15px;font-weight:600}
.plus,.minus{font-family:var(--num);font-variant-numeric:tabular-nums;font-size:14px;font-weight:600}
.plus{color:#1E8449}
.minus{color:var(--navy)}
button .subline{display:block;margin-top:3px;font-size:11px;font-weight:400;letter-spacing:.02em;opacity:.82}

/* ---------------- 我的团队：日增、筛选、成员收益 ---------------- */
.tstat2{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}
.tfrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tfrow+.tfrow{margin-top:9px}
.tfrow .tlab{flex:0 0 34px;font-size:11.5px;color:var(--t3)}
.tfrow .tag{cursor:pointer;-webkit-tap-highlight-color:transparent}
.tfrow .tag.on{background:var(--navy);color:#fff}
.tmem{align-items:flex-start}
/* .cell>.sp>div 默认是单行省略，团队行首要把标签排开，必须解禁 */
.tmem .sp>div:first-child{overflow:visible;text-overflow:clip;white-space:normal}
.tname{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.temu{display:flex;gap:14px;margin-top:7px}
.temu span{font-size:11.5px;color:var(--t3)}
.temu b{display:block;margin-top:2px;font-family:var(--num);font-variant-numeric:tabular-nums;
  font-size:13.5px;font-weight:600;color:var(--navy)}
.tcon{flex:0 0 auto;text-align:right;padding-left:8px}
button.tmore{width:100%;margin-top:10px}

/* ---------------- APP 更新弹层 ---------------- */
.uptxt{margin-top:8px;padding:10px 12px;border-radius:10px;background:var(--bg);color:var(--t2);font-size:13px;line-height:1.9}
#updl{color:var(--t3);font-size:12px}
button.gh2{border:1px dashed var(--line);color:var(--t3);background:#fff}
