/* rw2 统一平台 - 用户端设计系统（明亮主题 · 移动优先） */
:root{
  --primary:#4f6ef7;
  --primary-d:#3b56d9;
  --primary-l:#eef1fe;
  --violet:#7c5cf7;
  --cyan:#0ea5e9;
  --green:#10b981;
  --red:#ef4444;
  --orange:#f59e0b;
  --pink:#ec4899;
  --bg:#f4f6fb;
  --card:#ffffff;
  --text:#171a26;
  --text-2:#5a6072;
  --text-3:#9aa0b0;
  --line:#eef0f7;
  --line-2:#f6f7fb;
  --radius:16px;
  --radius-s:10px;
  --shadow:0 2px 14px rgba(30,45,110,.06);
  --shadow-l:0 8px 30px rgba(30,45,110,.12);
  --grad:linear-gradient(135deg,#4f6ef7,#7c5cf7);
  --grad-warm:linear-gradient(135deg,#f97316,#ec4899);
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue","Microsoft YaHei",sans-serif;
  background:var(--bg);color:var(--text);font-size:14px;line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none;}
input,textarea,select,button{font-family:inherit;font-size:14px;outline:none;border:none;background:none;color:inherit;}
img{max-width:100%;display:block;}
.hidden{display:none !important;}

#view{padding-bottom:calc(66px + var(--safe-b));min-height:100vh;}

/* ============ 顶栏 ============ */
.navbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:10px;
  padding:12px 16px;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
}
.navbar .back{width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border-radius:50%;background:var(--line-2);font-size:16px;flex:0 0 auto;}
.navbar .title{flex:1;font-size:16px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.navbar .act{font-size:13px;color:var(--primary);font-weight:600;flex:0 0 auto;}
.navbar.trans{background:transparent;border-bottom:none;}

/* ============ 底部导航 ============ */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;
  background:rgba(255,255,255,.96);backdrop-filter:blur(16px);
  border-top:1px solid var(--line);padding:6px 4px calc(6px + var(--safe-b));
}
.tabbar .tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:4px 0;color:var(--text-3);font-size:11px;transition:.2s;}
.tabbar .tab .ico{font-size:20px;line-height:1;filter:grayscale(1);opacity:.6;transition:.2s;}
.tabbar .tab.on{color:var(--primary);font-weight:700;}
.tabbar .tab.on .ico{filter:none;opacity:1;transform:translateY(-2px) scale(1.08);}
.tabbar .tab.mid .ico{
  width:44px;height:44px;margin-top:-16px;border-radius:50%;background:var(--grad);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:22px;
  box-shadow:0 6px 18px rgba(79,110,247,.42);filter:none;opacity:1;
}

/* ============ 卡片 / 通用 ============ */
.wrap{padding:14px 16px;}
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:12px;}
.card.flat{box-shadow:none;border:1px solid var(--line);}
.sec-title{display:flex;align-items:center;justify-content:space-between;margin:18px 0 10px;}
.sec-title h3{margin:0;font-size:16px;font-weight:700;display:flex;align-items:center;gap:6px;}
.sec-title .more{font-size:12px;color:var(--text-3);}
.row{display:flex;align-items:center;}
.row.between{justify-content:space-between;}
.gap{gap:10px;}
.mt{margin-top:12px;}.mb{margin-bottom:12px;}
.muted{color:var(--text-3);font-size:12px;}
.muted2{color:var(--text-2);font-size:13px;}
.center{text-align:center;}
.flex1{flex:1;overflow:hidden;}
.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fw7{font-weight:700;}
.primary-t{color:var(--primary);}
.price{color:#ef4444;font-weight:800;font-family:"DIN Alternate",-apple-system,sans-serif;}
.price::before{content:"¥";font-size:.78em;margin-right:1px;}
.divider{height:1px;background:var(--line);margin:12px 0;}

/* ============ 按钮 ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 18px;border-radius:12px;background:var(--grad);color:#fff;
  font-size:14px;font-weight:700;transition:.18s;cursor:pointer;
}
.btn:active{transform:scale(.97);opacity:.9;}
.btn.block{width:100%;padding:13px;}
.btn.ghost{background:var(--primary-l);color:var(--primary);}
.btn.plain{background:var(--line-2);color:var(--text-2);}
.btn.line{background:#fff;border:1px solid var(--line);color:var(--text-2);}
.btn.warn{background:linear-gradient(135deg,#f59e0b,#f97316);}
.btn.danger{background:linear-gradient(135deg,#ef4444,#f43f5e);}
.btn.sm{padding:7px 13px;font-size:12px;border-radius:9px;}
.btn.xs{padding:4px 10px;font-size:11px;border-radius:8px;}
.btn[disabled],.btn.disabled{opacity:.45;pointer-events:none;}

/* ============ 标签 ============ */
.tag{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:6px;
  font-size:11px;font-weight:600;background:var(--line-2);color:var(--text-2);}
.tag.blue{background:#eef1fe;color:#4f6ef7;}
.tag.green{background:#e7f8f1;color:#0d9488;}
.tag.red{background:#fef0f0;color:#dc2626;}
.tag.orange{background:#fef5e7;color:#d97706;}
.tag.violet{background:#f3eefe;color:#7c5cf7;}
.tag.pink{background:#fdeff5;color:#db2777;}
.tag.gray{background:#f1f2f6;color:#8b90a0;}

/* ============ 头像 ============ */
.avt{width:40px;height:40px;border-radius:50%;background:var(--grad);color:#fff;display:flex;
  align-items:center;justify-content:center;font-weight:700;font-size:15px;flex:0 0 auto;overflow:hidden;}
.avt img{width:100%;height:100%;object-fit:cover;}
.avt.sm{width:32px;height:32px;font-size:12px;}
.avt.lg{width:60px;height:60px;font-size:22px;}
.avt.xl{width:74px;height:74px;font-size:26px;}

/* ============ 表单 ============ */
.field{margin-bottom:14px;}
.field label{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:7px;}
.field label .req{color:var(--red);}
.input,textarea.input{
  width:100%;padding:12px 14px;border-radius:12px;background:var(--line-2);
  border:1.5px solid transparent;transition:.18s;font-size:14px;
}
.input:focus,textarea.input:focus{background:#fff;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,110,247,.1);}
textarea.input{resize:vertical;min-height:88px;line-height:1.6;}
.input::placeholder{color:#b6bbc9;}
.select-row{display:flex;gap:8px;flex-wrap:wrap;}
.chip{padding:7px 14px;border-radius:999px;background:var(--line-2);font-size:12.5px;font-weight:600;color:var(--text-2);transition:.18s;}
.chip.on{background:var(--grad);color:#fff;box-shadow:0 4px 12px rgba(79,110,247,.3);}
.switch{width:46px;height:26px;border-radius:999px;background:#dfe3ec;position:relative;transition:.2s;flex:0 0 auto;}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 4px rgba(0,0,0,.2);}
.switch.on{background:var(--primary);}
.switch.on::after{left:23px;}
.counter{text-align:right;font-size:11px;color:var(--text-3);margin-top:4px;}

/* ============ 网格 ============ */
.grid{display:grid;gap:10px;}
.grid.c2{grid-template-columns:repeat(2,1fr);}
.grid.c3{grid-template-columns:repeat(3,1fr);}
.grid.c4{grid-template-columns:repeat(4,1fr);}
.quick{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;
  background:var(--card);border-radius:14px;box-shadow:var(--shadow);}
.quick .qi{font-size:23px;}
.quick .qt{font-size:12px;font-weight:600;color:var(--text-2);}

/* ============ 顶部英雄区 ============ */
.hero{background:var(--grad);padding:20px 16px 56px;position:relative;overflow:hidden;}
.hero::after{content:"";position:absolute;right:-60px;top:-60px;width:200px;height:200px;
  border-radius:50%;background:rgba(255,255,255,.1);}
.hero::before{content:"";position:absolute;right:40px;bottom:-70px;width:150px;height:150px;
  border-radius:50%;background:rgba(255,255,255,.08);}
.hero h1{margin:0;color:#fff;font-size:21px;font-weight:800;letter-spacing:.5px;}
.hero p{margin:6px 0 0;color:rgba(255,255,255,.85);font-size:12.5px;}
.hero .balance{margin-top:18px;color:#fff;position:relative;z-index:2;}
.hero .balance .amt{font-size:34px;font-weight:800;font-family:"DIN Alternate",-apple-system,sans-serif;letter-spacing:-1px;}
.hero .balance .lbl{font-size:12px;opacity:.8;}
.hero-actions{display:flex;gap:8px;margin-top:14px;position:relative;z-index:2;}
.hero-actions .ha{flex:1;background:rgba(255,255,255,.18);backdrop-filter:blur(8px);border-radius:12px;
  padding:9px;text-align:center;color:#fff;font-size:12.5px;font-weight:600;border:1px solid rgba(255,255,255,.2);}
.pull-up{margin-top:-44px;position:relative;z-index:3;padding:0 16px;}

/* ============ 任务卡 ============ */
.taskcard{background:var(--card);border-radius:var(--radius);padding:14px;margin-bottom:10px;
  box-shadow:var(--shadow);position:relative;overflow:hidden;}
.taskcard .top{display:flex;gap:10px;align-items:flex-start;}
.taskcard .tt{flex:1;font-size:15px;font-weight:700;line-height:1.45;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.taskcard .tt .badge{margin-right:5px;}
.taskcard .desc{font-size:12.5px;color:var(--text-3);margin-top:6px;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.taskcard .bott{display:flex;align-items:center;justify-content:space-between;margin-top:12px;
  padding-top:10px;border-top:1px dashed var(--line);}
.taskcard .metas{display:flex;gap:12px;font-size:11.5px;color:var(--text-3);margin-top:8px;}
.taskcard .metas span{display:flex;align-items:center;gap:3px;}
.taskcard .reward{text-align:right;flex:0 0 auto;}
.taskcard .reward .n{font-size:19px;font-weight:800;color:#ef4444;font-family:"DIN Alternate",-apple-system,sans-serif;}
.taskcard .reward .s{font-size:11px;color:var(--text-3);}
.progress{height:5px;border-radius:99px;background:var(--line);overflow:hidden;margin-top:9px;}
.progress i{display:block;height:100%;border-radius:99px;background:var(--grad);transition:.4s;}
.badge-dot{position:absolute;top:0;right:0;background:var(--grad-warm);color:#fff;font-size:10px;
  padding:3px 9px;border-bottom-left-radius:10px;font-weight:700;}

/* ============ 列表项 ============ */
.li{display:flex;align-items:center;gap:11px;padding:13px 14px;background:var(--card);
  border-radius:14px;margin-bottom:9px;box-shadow:var(--shadow);}
.li .ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:18px;background:var(--primary-l);flex:0 0 auto;}
.li .ic.g{background:#e7f8f1;}
.li .ic.o{background:#fef5e7;}
.li .ic.p{background:#f3eefe;}
.li .ic.r{background:#fef0f0;}
.li .body{flex:1;overflow:hidden;}
.li .body .t{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.li .body .s{font-size:11.5px;color:var(--text-3);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.li .rt{text-align:right;flex:0 0 auto;font-size:12px;}

/* 设置项 */
.setli{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--card);
  border-bottom:1px solid var(--line);}
.setli:last-child{border-bottom:none;}
.setli .ic{font-size:17px;width:26px;text-align:center;}
.setli .lb{flex:1;font-size:14.5px;}
.setli .vl{font-size:13px;color:var(--text-3);max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.setli .ar{color:#c8ccd8;font-size:15px;}
.setgroup{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px;}

/* ============ 空状态 ============ */
.empty{text-align:center;padding:56px 20px;color:var(--text-3);}
.empty .e{font-size:52px;opacity:.35;margin-bottom:12px;}
.empty .t{font-size:14px;font-weight:600;color:var(--text-2);}
.empty .s{font-size:12px;margin-top:5px;}

/* ============ Tab 切换 ============ */
.tabs{display:flex;gap:6px;padding:4px;background:var(--line-2);border-radius:12px;margin-bottom:14px;}
.tabs .t{flex:1;text-align:center;padding:8px;border-radius:9px;font-size:13px;font-weight:600;
  color:var(--text-2);transition:.18s;}
.tabs .t.on{background:#fff;color:var(--primary);box-shadow:0 2px 8px rgba(30,45,110,.08);}
.subtabs{display:flex;gap:18px;overflow-x:auto;padding:0 16px;border-bottom:1px solid var(--line);
  background:#fff;position:sticky;top:0;z-index:40;}
.subtabs::-webkit-scrollbar{display:none;}
.subtabs .st{flex:0 0 auto;padding:12px 0;font-size:14px;font-weight:600;color:var(--text-2);position:relative;}
.subtabs .st.on{color:var(--primary);}
.subtabs .st.on::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:22px;height:3px;border-radius:3px;background:var(--grad);}

/* ============ 悬浮发布按钮 ============ */
.fab{position:fixed;right:16px;bottom:calc(82px + var(--safe-b));z-index:55;width:52px;height:52px;
  border-radius:50%;background:var(--grad);color:#fff;font-size:24px;display:flex;align-items:center;
  justify-content:center;box-shadow:0 8px 24px rgba(79,110,247,.45);}

/* ============ Toast ============ */
.toast-wrap{position:fixed;top:0;left:0;right:0;z-index:9999;display:flex;flex-direction:column;
  align-items:center;padding-top:60px;pointer-events:none;gap:8px;}
.toast{background:rgba(23,26,38,.9);color:#fff;padding:10px 18px;border-radius:12px;font-size:13.5px;
  font-weight:600;max-width:84%;text-align:center;animation:tin .25s ease;
  box-shadow:0 6px 24px rgba(0,0,0,.2);backdrop-filter:blur(8px);}
.toast.ok{background:rgba(16,185,129,.94);}
.toast.err{background:rgba(239,68,68,.94);}
@keyframes tin{from{opacity:0;transform:translateY(-14px) scale(.94);}to{opacity:1;transform:none;}}

/* ============ 弹层 ============ */
.sheet-mask,.dialog-mask{position:fixed;inset:0;background:rgba(15,18,30,.45);z-index:9000;
  display:flex;align-items:flex-end;justify-content:center;animation:fin .2s ease;backdrop-filter:blur(2px);}
.dialog-mask{align-items:center;padding:24px;}
@keyframes fin{from{opacity:0;}to{opacity:1;}}
.sheet{width:100%;max-width:560px;background:#fff;border-radius:20px 20px 0 0;padding:18px 16px calc(18px + var(--safe-b));
  max-height:86vh;overflow-y:auto;animation:sup .26s cubic-bezier(.2,.8,.3,1);}
@keyframes sup{from{transform:translateY(100%);}to{transform:none;}}
.sheet h3{margin:0 0 14px;font-size:16px;font-weight:700;text-align:center;}
.dialog{width:100%;max-width:340px;background:#fff;border-radius:18px;padding:22px 18px;
  animation:din .22s cubic-bezier(.2,.8,.3,1);}
@keyframes din{from{transform:scale(.9);opacity:0;}to{transform:none;opacity:1;}}
.dialog h3{margin:0 0 8px;font-size:16.5px;font-weight:700;text-align:center;}
.dialog .msg{font-size:13.5px;color:var(--text-2);text-align:center;margin-bottom:18px;line-height:1.7;}
.dialog .acts{display:flex;gap:10px;}
.dialog .acts .btn{flex:1;}
.sheet-actions{display:flex;gap:10px;margin-top:16px;}

/* ============ 轮播 ============ */
.banner{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 16px 4px;margin:0 -16px;}
.banner::-webkit-scrollbar{display:none;}
.banner .b{flex:0 0 84%;scroll-snap-align:center;border-radius:var(--radius);padding:16px;
  color:#fff;position:relative;overflow:hidden;min-height:88px;display:flex;flex-direction:column;justify-content:center;}
.banner .b h4{margin:0;font-size:16px;font-weight:800;}
.banner .b p{margin:5px 0 0;font-size:12px;opacity:.9;}
.banner .b::after{content:"";position:absolute;right:-24px;top:-24px;width:110px;height:110px;
  border-radius:50%;background:rgba(255,255,255,.14);}

/* ============ 数字员工卡 ============ */
.empcard{background:var(--card);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);position:relative;overflow:hidden;}
.empcard .head{display:flex;gap:11px;align-items:center;}
.empcard .cube{width:52px;height:52px;border-radius:14px;background:var(--grad);display:flex;
  align-items:center;justify-content:center;font-size:26px;flex:0 0 auto;box-shadow:0 6px 16px rgba(79,110,247,.3);}
.empcard .cube.v{background:linear-gradient(135deg,#7c5cf7,#a78bfa);}
.empcard .cube.c{background:linear-gradient(135deg,#0ea5e9,#22d3ee);}
.empcard .cube.o{background:var(--grad-warm);}
.empcard .cube.g{background:linear-gradient(135deg,#10b981,#34d399);}
.empcard .skills{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px;}
.empcard .plans{display:flex;gap:7px;overflow-x:auto;margin-top:12px;padding-bottom:2px;}
.empcard .plans::-webkit-scrollbar{display:none;}
.planchip{flex:0 0 auto;padding:8px 12px;border-radius:11px;background:var(--line-2);text-align:center;border:1.5px solid transparent;}
.planchip.on{background:var(--primary-l);border-color:var(--primary);}
.planchip .d{font-size:13px;font-weight:700;}
.planchip .p{font-size:11px;color:#ef4444;font-weight:700;margin-top:2px;}
.planchip .q{font-size:10px;color:var(--text-3);}

/* 状态条 */
.statbar{display:flex;gap:6px;margin-top:10px;}
.statbar .sb{flex:1;text-align:center;}
.statbar .sb .lb{font-size:10px;color:var(--text-3);}
.statbar .sb .bar{height:5px;border-radius:99px;background:var(--line);margin-top:3px;overflow:hidden;}
.statbar .sb .bar i{display:block;height:100%;border-radius:99px;background:var(--grad);}

/* ============ 钱包 ============ */
.wallet-card{background:var(--grad);border-radius:20px;padding:20px;color:#fff;position:relative;overflow:hidden;
  box-shadow:0 10px 30px rgba(79,110,247,.3);}
.wallet-card::after{content:"";position:absolute;right:-40px;bottom:-60px;width:160px;height:160px;
  border-radius:50%;background:rgba(255,255,255,.12);}
.wallet-card .amt{font-size:36px;font-weight:800;font-family:"DIN Alternate",-apple-system,sans-serif;letter-spacing:-1px;}
.wallet-card .acts{display:flex;gap:8px;margin-top:16px;position:relative;z-index:2;}
.wallet-card .acts .b{flex:1;background:rgba(255,255,255,.2);border-radius:11px;padding:8px;
  text-align:center;font-size:12.5px;font-weight:700;border:1px solid rgba(255,255,255,.25);}
.stats3{display:flex;background:var(--card);border-radius:var(--radius);padding:14px 0;box-shadow:var(--shadow);}
.stats3 .s{flex:1;text-align:center;position:relative;}
.stats3 .s+.s::before{content:"";position:absolute;left:0;top:20%;height:60%;width:1px;background:var(--line);}
.stats3 .s .n{font-size:17px;font-weight:800;font-family:"DIN Alternate",-apple-system,sans-serif;}
.stats3 .s .l{font-size:11.5px;color:var(--text-3);margin-top:2px;}

/* ============ 聊天 ============ */
.chatbox{height:calc(100vh - 116px - var(--safe-b));overflow-y:auto;padding:14px 16px;background:var(--bg);}
.msg{display:flex;gap:8px;margin-bottom:14px;}
.msg.me{flex-direction:row-reverse;}
.msg .bub{max-width:70%;padding:10px 13px;border-radius:16px;font-size:14px;line-height:1.55;
  background:#fff;box-shadow:var(--shadow);border-top-left-radius:4px;word-break:break-word;}
.msg.me .bub{background:var(--grad);color:#fff;border-top-left-radius:16px;border-top-right-radius:4px;}
.msg .sys{width:100%;text-align:center;font-size:11.5px;color:var(--text-3);}
.chatinput{position:fixed;left:0;right:0;bottom:0;display:flex;gap:8px;padding:10px 12px calc(10px + var(--safe-b));
  background:#fff;border-top:1px solid var(--line);z-index:70;}
.chatinput input{flex:1;padding:10px 14px;border-radius:99px;background:var(--line-2);}
.chatinput .send{padding:0 18px;border-radius:99px;background:var(--grad);color:#fff;font-weight:700;font-size:13px;}

/* ============ 商城 ============ */
.goods{background:var(--card);border-radius:14px;overflow:hidden;box-shadow:var(--shadow);}
.goods .pic{height:110px;background:var(--line-2);display:flex;align-items:center;justify-content:center;font-size:40px;}
.goods .info{padding:9px 10px;}
.goods .nm{font-size:13px;font-weight:600;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;min-height:36px;line-height:1.4;}
.goods .pr{color:#ef4444;font-weight:800;font-size:15px;margin-top:5px;
  font-family:"DIN Alternate",-apple-system,sans-serif;}
.goods .op{font-size:11px;color:var(--text-3);text-decoration:line-through;margin-left:4px;}

/* ============ 登录页 ============ */
.auth-page{min-height:100vh;background:linear-gradient(160deg,#4f6ef7 0%,#7c5cf7 46%,#f4f6fb 46.2%);padding:0 22px;}
.auth-head{padding:56px 0 30px;color:#fff;}
.auth-head .logo{width:58px;height:58px;border-radius:17px;background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:30px;margin-bottom:16px;
  border:1px solid rgba(255,255,255,.3);}
.auth-head h1{margin:0;font-size:24px;font-weight:800;letter-spacing:.5px;}
.auth-head p{margin:8px 0 0;font-size:13px;opacity:.86;}
.auth-box{background:#fff;border-radius:20px;padding:22px 18px;box-shadow:var(--shadow-l);margin-top:12px;}

/* ============ 详情页头 ============ */
.detail-hero{background:var(--grad);padding:18px 16px 22px;color:#fff;}
.detail-hero .tt{font-size:19px;font-weight:800;line-height:1.45;}
.detail-hero .tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;}
.detail-hero .tags .tag{background:rgba(255,255,255,.2);color:#fff;}

/* ============ 排行榜 ============ */
.rank-li{display:flex;align-items:center;gap:11px;padding:11px 14px;background:#fff;border-radius:14px;margin-bottom:8px;box-shadow:var(--shadow);}
.rank-no{width:24px;height:24px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:800;background:var(--line-2);color:var(--text-3);flex:0 0 auto;}
.rank-no.n1{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;}
.rank-no.n2{background:linear-gradient(135deg,#cbd5e1,#94a3b8);color:#fff;}
.rank-no.n3{background:linear-gradient(135deg,#fdba74,#ea580c);color:#fff;}

/* ============ 骨架屏 ============ */
.skel{background:linear-gradient(90deg,#eef0f7 25%,#f6f7fb 37%,#eef0f7 63%);
  background-size:400% 100%;animation:skl 1.3s infinite;border-radius:10px;}
@keyframes skl{0%{background-position:100% 50%;}100%{background-position:0 50%;}}
.skel-line{height:14px;margin-bottom:10px;}
.skel-card{height:100px;border-radius:var(--radius);margin-bottom:12px;}

/* ============ 数据可视化 ============ */
.barchart{display:flex;align-items:flex-end;gap:6px;height:110px;padding-top:10px;}
.barchart .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:5px;}
.barchart .bar i{width:100%;border-radius:6px 6px 0 0;background:var(--grad);min-height:4px;transition:.5s;}
.barchart .bar .lb{font-size:9.5px;color:var(--text-3);}

/* ============ 安全区 ============ */
.safe-bottom{height:calc(20px + var(--safe-b));}
::-webkit-scrollbar{width:0;height:0;}
