
/* ============ 四套主题（一键换肤，只换颜色不挪按钮） ============ */
:root[data-theme="classic"]{
  --bg:#FBF5EA; --card:#FFFFFF; --ink:#2B2018; --sub:#7A6A58; --line:#ECDFC8;
  --primary:var(--brand-primary); --on-primary:var(--on-brand); --primary-sub:#F0D9B0;
  --accent:var(--brand-accent); --on-accent:#2B2018; --chip:#F5EAD4; --soft:#F7EFDF;
  --nav-active:var(--brand-primary); --nav-text:#7A6A58;
  --tab-glass:rgba(255,252,246,.78); --tab-glass-line:rgba(255,255,255,.66);
  --dark-bg:#141D1B; --dark-card:#1F2B28; --dark-line:#2E3B38;
  --dark-ink:#F1EDE5; --dark-sub:#9FAAA5; --dark-gold:#E3B268;
}
:root[data-theme="night"]{
  --brand-primary:#E3B268; --brand-accent:#E3B268;
  --bg:#141D1B; --card:#1F2B28; --ink:#F1EDE5; --sub:#9FAAA5; --line:#2E3B38;
  --primary:var(--brand-primary); --on-primary:#141D1B; --primary-sub:#141D1B;
  --accent:var(--brand-accent); --on-accent:#141D1B; --chip:#1F2B28; --soft:#1F2B28;
  --nav-active:var(--brand-primary); --nav-text:#9FAAA5;
  --tab-glass:rgba(33,45,42,.68); --tab-glass-line:rgba(255,255,255,.14);
  --dark-bg:#141D1B; --dark-card:#1F2B28; --dark-line:#2E3B38;
  --dark-ink:#F1EDE5; --dark-sub:#9FAAA5; --dark-gold:#E3B268;
}
:root[data-theme="guochao"]{
  --brand-primary:#B23A2E; --brand-accent:#C99A45;
  --bg:#FBF5EA; --card:#FFFFFF; --ink:#2B2018; --sub:#7A6A58; --line:#ECDFC8;
  --primary:var(--brand-primary); --on-primary:#FFF6E8; --primary-sub:#F0D9B0;
  --accent:var(--brand-accent); --on-accent:#2B2018; --chip:#F5EAD4; --soft:#F5EAD4;
  --nav-active:var(--brand-primary); --nav-text:#7A6A58;
  --tab-glass:rgba(255,252,246,.74); --tab-glass-line:rgba(255,255,255,.62);
  --dark-bg:#141D1B; --dark-card:#1F2B28; --dark-line:#2E3B38;
  --dark-ink:#F1EDE5; --dark-sub:#9FAAA5; --dark-gold:#C99A45;
}
:root[data-theme="aurora"]{
  --brand-primary:#E8452F; --brand-accent:#F2D28A;
  --bg:#14100D; --card:rgba(56,34,24,.62); --ink:#FFF8F0; --sub:rgba(255,248,240,.78); --line:rgba(255,255,255,.20);
  --primary:var(--brand-primary); --on-primary:#FFFFFF; --primary-sub:#FFE2C4;
  --accent:var(--brand-accent); --on-accent:#2A160D; --chip:rgba(255,255,255,.10); --soft:rgba(255,255,255,.09);
  --nav-active:var(--brand-primary); --nav-text:rgba(255,248,240,.74);
  --tab-glass:rgba(45,27,20,.66); --tab-glass-line:rgba(255,255,255,.20);
  --dark-bg:#14100D; --dark-card:rgba(56,34,24,.72); --dark-line:rgba(255,255,255,.20);
  --dark-ink:#FFF8F0; --dark-sub:rgba(255,248,240,.72); --dark-gold:#F2D28A;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  font-family:var(--ui-font);
  background:var(--surface-app-shell); display:flex; align-items:center; justify-content:center;
  height:100vh; height:100dvh; padding:16px; overflow:hidden;
}
/* ============ 自适应外壳：桌面/平板等比缩放，手机全屏 ============ */
#app-wrap{width:390px;height:844px;flex:none;transform-origin:center center}
.phone{
  width:100%; height:100%; background:var(--bg);
  border-radius:28px; overflow:hidden; position:relative; display:flex; flex-direction:column;
  box-shadow:0 24px 60px rgba(0,0,0,.25); transition:background .3s;
}
@media (max-width:480px){
  body{padding:0}
}
/* 真机全屏（竖屏手机与横屏手机都走 app-mode） */
body.app-mode{padding:0}
body.app-mode #app-wrap{width:100vw;height:100vh;height:100dvh}
body.app-mode .phone{border-radius:0;box-shadow:none}
/* 滚动区 */
.pages{flex:1;position:relative;overflow:hidden}
.page{position:absolute;inset:0;display:none;flex-direction:column;overflow:hidden}
.page.active{display:flex;animation:pageIn .3s cubic-bezier(.22,.9,.34,1)}
.scroll{flex:1;overflow-y:auto;padding:2px 16px 18px;display:flex;flex-direction:column;gap:14px;scrollbar-width:none}
.scroll>*{flex:none}
.scroll::-webkit-scrollbar{display:none}
/* ============ 底部导航（悬浮磨砂玻璃胶囊） ============ */
.tabbar{
  flex:none; margin:8px 14px 12px; height:62px; background:var(--card);
  border:1px solid var(--line); border-radius:36px; display:flex; padding:5px; gap:2px;
  transition:background .3s;
}
/* 手机形态：悬浮磨砂条，内容从底下滚过 */
body:not(.dev-tablet):not(.dev-tv):not(.dev-desktop) .tabbar{
  position:absolute; left:12px; right:12px; bottom:12px; z-index:60; height:66px; margin:0;
  background:var(--tab-glass);
  -webkit-backdrop-filter:blur(20px) saturate(1.7); backdrop-filter:blur(20px) saturate(1.7);
  border:1px solid var(--tab-glass-line); border-radius:33px;
  box-shadow:0 10px 28px rgba(90,45,25,.16);
}
/* 内容滚到导航底下不被挡 */
.page:has(.tabbar) .scroll{padding-bottom:104px}
.tab{
  flex:1; border:none; background:none; font-family:inherit; font-size:14px; font-weight:600; letter-spacing:.5px;
  color:var(--nav-text); border-radius:26px; cursor:pointer; display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.tab:active{transform:scale(.94)}
.tab.active{background:var(--nav-active);color:var(--on-primary);font-weight:700}
/* 第三栏·当前伙伴：凸起大圆钮——照片即焦点，一眼找到"人" */
.tab.tab-cmp{flex:0 0 76px;flex-direction:column;justify-content:flex-end;gap:3px;margin-top:-22px;align-self:stretch;
  padding:0;background:none;color:var(--primary);font-weight:700}
.tab.tab-cmp img{width:54px;height:54px;border-radius:50%;object-fit:cover;flex:none;
  border:3px solid var(--card);box-shadow:0 0 0 2.5px var(--primary),0 8px 18px rgba(142,35,24,.30)}
.tab.tab-cmp span{font-size:14px;line-height:1;text-shadow:0 1px 0 rgba(255,255,255,.6)}
.tab.tab-cmp.active{background:none;color:var(--primary)}
.tab.tab-cmp.active img{box-shadow:0 0 0 3px var(--accent),0 10px 22px rgba(142,35,24,.38)}
.tab.tab-cmp:active{transform:scale(.95)}
/* 通话页是沉浸式全屏，不铺导航（有返回键） */
#p-huagelive .tabbar{display:none}
/* ============ 通用组件 ============ */
.pagehead{display:flex;align-items:center;gap:12px}
/* 发布活动：页头右上角强调按钮 */
.pub-btn{min-height:var(--control-h-sm);height:auto;padding:0 16px;border:none;border-radius:var(--radius-pill);flex:none;cursor:pointer;
  background:var(--brand-accent);color:var(--on-accent,#fff);font-family:inherit;
  font-size:var(--fs-sm);font-weight:700;letter-spacing:.5px;box-shadow:0 4px 10px color-mix(in srgb,var(--brand-accent) 22%,transparent);transition:transform .15s}
.pagehead .pub-btn{margin-left:auto}
.pub-btn:active{transform:scale(.94)}
span.pub-btn{display:inline-flex;align-items:center}
.back{
  width:40px;height:40px;border-radius:20px;border:1px solid var(--line);background:var(--card);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;transition:background .3s;
}
.back svg{width:20px;height:20px}
.tgroup{display:flex;flex-direction:column;gap:3px;min-width:0}
.t1{font-size:22px;font-weight:700;color:var(--ink)}
.t2{font-size:14px;color:var(--sub)}
.dark-page{background:var(--dark-bg)}
.dark-page .t1{color:var(--dark-ink)} .dark-page .t2{color:var(--dark-sub)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-card);transition:background .3s,border-color .3s}
.dark-page .card{background:var(--dark-card);border-color:var(--dark-line)}
.pill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;cursor:pointer;border:none;font-family:inherit;transition:all .2s}
.voice-hint{
  display:flex;align-items:center;gap:10px;background:var(--chip);border-radius:16px;
  padding:12px 14px;font-size:14px;color:var(--ink);font-weight:500;line-height:1.5;
}
.voice-hint svg{flex:none}
.badge-ai{
  display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--brand-accent) 14%,transparent);color:var(--accent);
  font-size:14px;font-weight:600;padding:3px 8px;border-radius:999px;
}
.tag-dot{width:10px;height:10px;border-radius:3px;flex:none}
/* toast */
#toast{
  position:absolute;left:50%;bottom:110px;transform:translateX(-50%) translateY(20px);
  background:var(--primary);color:var(--on-primary);padding:12px 22px;border-radius:16px;
  font-size:14px;font-weight:500;opacity:0;pointer-events:none;transition:all .3s;z-index:99;
  max-width:320px;text-align:center;line-height:1.5;
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
/* ============ 首页 ============ */
.home-hero{display:flex;justify-content:space-between;align-items:center}
  .msg-note{font-size:14px;color:#B2502F;font-weight:600;margin-left:2px;white-space:nowrap}
.hello h1{font-size:21px;font-weight:700;color:var(--ink)}
.hello p{font-size:14px;color:var(--sub);margin-top:3px}
.bigfont{height:38px;padding:0 16px;border-radius:999px;background:var(--card);border:1px solid var(--line);
  color:var(--primary);font-size:14px;font-weight:600}
.bigfont.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:700}
/* 字号三档：标准 / 大字(bf1) / 特大字(bf) */
.phone.bf1 .scroll{zoom:1.08}
.phone.bf .scroll{zoom:1.16}
.hero-card{
  background:var(--primary);border-radius:24px;padding:24px 20px;display:flex;flex-direction:column;
  align-items:center;gap:8px;text-align:center;cursor:pointer;transition:background .3s;
  position:relative;
}
.hero-swap{position:absolute;top:12px;right:12px;display:flex;align-items:center;gap:4px;height:30px;
  padding:0 12px;border-radius:999px;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.35);
  color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.hero-swap svg{flex:none}
.hero-card h2{font-size:23px;font-weight:700;color:var(--on-primary)}
.hero-card p{font-size:14px;color:var(--primary-sub)}
[data-theme="classic"] .hero-card p,[data-theme="guochao"] .hero-card p{color:#C9CFCB}
.hero-cta{height:38px;padding:0 20px;border-radius:999px;background:var(--on-primary);color:var(--primary);
  font-size:14px;font-weight:600;margin-top:6px}
.hero-av{width:64px;height:64px;border-radius:32px;object-fit:cover;border:3px solid rgba(255,255,255,.35);margin-bottom:4px}
.hero-cv{width:100%;height:100px;border-radius:16px;object-fit:cover;object-position:center 42%;margin-top:12px;
  border:1px solid rgba(255,255,255,.18)}
/* ============ 能力大厅：首页十大生活版块 ============ */
.fam-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.fam{background:var(--card);border:1.5px solid var(--line);border-radius:18px;
  padding:9px 11px 13px;cursor:pointer;transition:transform .15s}
.fam:active{transform:scale(.96)}
.fam .cv{display:block;width:100%;aspect-ratio:4/3;border-radius:13px;overflow:hidden;margin-bottom:9px;background:#F6EFE4}
.fam .cv img{width:100%;height:100%;object-fit:cover;display:block}
.fam b{display:block;font-size:16px;color:var(--ink);font-weight:700}
.fam span{display:block;font-size:14px;color:var(--sub);margin-top:3px}
/* ===== 我的课程 ===== */
.fam .cv{position:relative}
.cv-tag{position:absolute;top:8px;left:8px;font-style:normal;font-size:14px;font-weight:800;color:var(--on-accent);background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));border-radius:12px;padding:3px 9px;box-shadow:0 2px 6px rgba(140,30,10,.3)}
.mk-cvs{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}
.mkcv{width:118px;flex:0 0 auto;border-radius:16px;overflow:hidden;border:2.5px solid transparent;cursor:pointer;background:none;padding:0}
.mkcv img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;border-radius:12px}
.mkcv.on{border-color:var(--brand-accent-strong)}
.mkcv span{display:block;font-size:14px;color:var(--sub);padding:4px 2px 2px;text-align:left}
/* ===== 一起学习：课程视频页 ===== */
.vhero{position:relative;border-radius:18px;overflow:hidden;aspect-ratio:16/9;box-shadow:0 6px 18px rgba(140,60,20,.14)}
.vhero img{width:100%;height:100%;object-fit:cover;display:block}
.vhero .vg{position:absolute;left:0;right:0;bottom:0;padding:38px 14px 12px;background:linear-gradient(transparent,rgba(0,0,0,.74));color:#fff}
.vhero .vg b{display:block;font-size:17px}
.vhero .vg span{font-size:14px;opacity:.92}
.vplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:50%;background:color-mix(in srgb,var(--brand-accent) 94%,transparent);border:3px solid #fff;display:grid;place-items:center;color:#fff;font-size:24px;box-shadow:0 6px 16px rgba(0,0,0,.32);cursor:pointer}
.vplay:active{transform:translate(-50%,-50%) scale(.94)}
.vchips{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.vchip{font-size:14px;font-weight:700;color:#8C4A1F;background:#FFF3E4;border:1.5px solid #F0D9B0;border-radius:20px;padding:7px 13px;cursor:pointer}
.vchip:active{transform:scale(.95)}
.lrow{display:flex;align-items:center;gap:12px;background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:12px;margin-bottom:10px;cursor:pointer}
.lrow:active{transform:scale(.98)}
.lno{min-width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:15px;background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));color:var(--on-accent)}
.lrow.done .lno{background:#EADFC8;color:#9a6a3a}
.lrow.now .lno{box-shadow:0 0 0 2px var(--brand-accent)}
.ltx{flex:1;min-width:0}
.ltx b{display:block;font-size:15px;color:var(--ink)}
.ltx span{font-size:14px;color:var(--sub)}
.lst{font-size:14px;font-weight:700;border-radius:16px;padding:4px 10px;background:#F6EFE4;color:#9a6a3a;white-space:nowrap}
.lst.done{background:#EAF3E4;color:#4A7A3A}
.lst.now{background:#FDEBE0;color:var(--brand-accent-strong)}
.acts2{display:flex;gap:10px;margin-top:12px}
.a2{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;height:46px;border-radius:16px;background:var(--card);border:1.5px solid var(--line);font-weight:700;font-size:14px;color:var(--ink);cursor:pointer}
.a2:active{transform:scale(.97)}
/* ===== 一键送货到家 ===== */
.err-foo{position:sticky;bottom:0;background:#fff;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid #f3e3d3;display:flex;align-items:center;gap:10px}
.err-foo .sum{font-size:15px;color:#9a6a3a}.err-foo .sum b{color:var(--brand-accent-strong);font-size:19px}
.err-foo .go-btn{flex:1;min-height:var(--control-h-md);height:auto;border:none;border-radius:var(--radius-action);background:var(--brand-primary);color:var(--on-primary,#fff);font-size:var(--fs-action);font-weight:700;letter-spacing:.5px}
/* ===== 私人房间二级页：大氛围图 + 宫格 + 固定操作条（对齐歌房效果） ===== */
.rl-media{position:relative;border-radius:20px;overflow:hidden;aspect-ratio:16/10;box-shadow:0 6px 18px rgba(140,60,20,.14)}
.rl-media img{width:100%;height:100%;object-fit:cover;display:block}
.rl-media::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(40,16,6,.66) 0%,rgba(40,16,6,.14) 44%,rgba(40,16,6,0) 62%)}
.rl-badge{position:absolute;top:12px;left:12px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:rgba(178,32,22,.92);color:#fff;font-size:14px;font-weight:700;letter-spacing:1px;box-shadow:0 2px 8px rgba(0,0,0,.28)}
.rl-badge i{width:7px;height:7px;border-radius:50%;background:#7CF29C;animation:rlPulse 1.6s infinite}
@keyframes rlPulse{0%,100%{opacity:1}50%{opacity:.35}}
.rl-cap{position:absolute;left:14px;right:14px;bottom:12px;z-index:2;color:#FFF6E8;font-size:15px;font-weight:600;line-height:1.4;text-shadow:0 1px 4px rgba(0,0,0,.55)}
.rl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rl-tile{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:14px 6px 12px;display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;transition:transform .15s;text-align:center}
.rl-tile:active{transform:scale(.95)}
.rl-tile span{font-size:26px;line-height:1}
.rl-tile b{font-size:14px;color:var(--ink);font-weight:700}
/* ===== AI 家庭客厅（家人房专属）：AI 主持 + 回忆入口 + 时光轴 + 家庭底栏 ===== */
.rl-host{display:flex;gap:10px;background:#fff;border-radius:18px;padding:13px 14px;margin-top:12px;box-shadow:0 2px 8px rgba(140,60,20,.06)}
.rl-host-av{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none;border:2px solid #E3B268}
.rl-host-in{flex:1;min-width:0}
.rl-host-in b{display:flex;align-items:center;gap:8px;font-size:14px;color:#8C4A1F;flex-wrap:wrap}
.rl-host-tag{font-size:14px;font-weight:700;color:var(--on-accent);background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));border-radius:999px;padding:2px 8px;flex:none}
.rl-host-in p{font-size:14px;color:var(--ink);line-height:1.5;margin:6px 0 8px}
.rl-host-acts{display:flex;gap:8px}
.rl-host-acts button{height:32px;padding:0 14px;border:none;border-radius:16px;background:rgba(227,178,104,.18);color:#8C4A1F;font-size:14px;font-weight:700;cursor:pointer}
.rl-host-acts button:active{transform:scale(.96)}
.rl-core{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:var(--control-h-lg);height:auto;margin-top:12px;border:none;border-radius:var(--radius-action);background:var(--brand-primary);color:var(--on-primary,#fff);font-size:var(--fs-action);font-weight:700;letter-spacing:.5px;cursor:pointer;box-shadow:var(--shadow-card)}
.rl-core:active{transform:scale(.98)}
.rl-tl{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.rl-tl-y{font-size:15px;font-weight:800;color:#8C4A1F;padding:2px 2px 0}
.rl-tl-row{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:11px 13px;cursor:pointer;transition:transform .15s}
.rl-tl-row:active{transform:scale(.98)}
.rl-tl-row .dot{width:9px;height:9px;border-radius:50%;background:#E3B268;flex:none}
.rl-tl-row b{font-size:14px;color:var(--ink)}
.rl-tl-row span{font-size:14px;color:var(--sub);margin-left:auto;flex:none}
.rl-fnav{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.rl-fnav button{background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:9px 2px 7px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:14px;font-weight:700;color:var(--ink);cursor:pointer}
.rl-fnav button:active{transform:scale(.95)}
.rl-fnav button span{font-size:20px;line-height:1}
.rl-footfam{flex-direction:column;gap:10px}
/* —— AI 家庭客厅·界面精致化：重排 + 暖橙氛围 + 真人头像 + 时光轴连线 —— */
#p-roomlive[data-room=family] #rl-famzone{order:1;display:flex;flex-direction:column}
#p-roomlive[data-room=family] #rl-members{order:2}
#p-roomlive[data-room=family] .rl-chat{order:3}
#p-roomlive[data-room=family] #rl-actlbl{order:4}
#p-roomlive[data-room=family] #rl-acts{order:5}
#p-roomlive[data-room=family] #rl-famtl{order:6}
#p-roomlive[data-room=family] .rl-footfam{order:9}
#p-roomlive[data-room=family] .rl-host{background:linear-gradient(135deg,#FFF3E4,#FFE4C9);border:1px solid #F5D9B8;box-shadow:0 3px 10px rgba(196,112,40,.10)}
#p-roomlive[data-room=family] .rl-core{order:2}
#p-roomlive[data-room=family] #rl-famzone .rl-host:last-child{order:3}
.rl-mb .av img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.rl-msgrow{display:flex;align-items:flex-end;gap:8px}
.rl-msgrow.mine{flex-direction:row-reverse}
.rl-mav{width:30px;height:30px;border-radius:50%;flex:none;overflow:hidden;background:linear-gradient(135deg,#F6E2C8,#F0CFA8);display:flex;align-items:center;justify-content:center;font-size:15px}
.rl-mav img{width:100%;height:100%;object-fit:cover}
.rl-msgrow .rl-msg{max-width:76%}
.rl-tl{position:relative}
.rl-tl::before{content:"";position:absolute;left:17px;top:22px;bottom:22px;width:2px;background:#F0D9B0}
.rl-tl-row{position:relative}
/* —— 在线成员压缩条（替代大宫格成员区） —— */
.rl-online{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 16px 8px 10px;box-shadow:0 2px 8px rgba(140,60,20,.06)}
.rl-avs{display:flex;flex:none}
.rl-avs .oav{width:32px;height:32px;border-radius:50%;overflow:hidden;border:2px solid #fff;margin-left:-9px;background:linear-gradient(135deg,#F6E2C8,#F0CFA8);display:flex;align-items:center;justify-content:center;font-size:15px;position:relative}
.rl-avs .oav:first-child{margin-left:0}
.rl-avs .oav img{width:100%;height:100%;object-fit:cover}
.rl-avs .oav i{position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:50%;background:#3DBB61;border:1.5px solid #fff}
.rl-online b{font-size:14px;color:var(--ink);font-weight:700;flex:none}
.rl-online span{font-size:14px;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rl-tl-y{display:inline-block;background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));color:var(--on-accent);font-size:14px;padding:5px 14px;border-radius:999px;letter-spacing:1px;position:relative;z-index:1}
@keyframes rlGlow{0%,100%{box-shadow:0 6px 14px color-mix(in srgb,var(--brand-accent) 26%,transparent)}50%{box-shadow:0 6px 24px color-mix(in srgb,var(--brand-accent) 5%,transparent)}}
.rl-footfam .rl-say{animation:rlGlow 2.4s ease-in-out infinite}
#rl-famzone{display:none}
.rl-members{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;background:#fff;border-radius:18px;padding:16px 12px;margin-top:12px;box-shadow:0 2px 8px rgba(140,60,20,.06)}
.rl-mb{text-align:center}
.rl-mb .av{width:56px;height:56px;margin:0 auto 6px;border-radius:50%;background:linear-gradient(135deg,#F6E2C8,#F0CFA8);display:flex;align-items:center;justify-content:center;font-size:26px;position:relative}
.rl-mb.me .av{box-shadow:0 0 0 3px #E3B268}
.rl-mb .av i{position:absolute;right:-2px;bottom:-2px;width:14px;height:14px;border-radius:50%;background:#3DBB61;border:2.5px solid #fff}
.rl-mb b{display:block;font-size:14px;color:var(--ink)}
.rl-mb span{font-size:14px;color:#9a6a3a}
.rl-chat{display:flex;flex-direction:column;gap:8px;margin:12px 0 2px}
.rl-msg{max-width:82%;background:#fff;border-radius:4px 16px 16px 16px;padding:10px 14px;font-size:15px;color:var(--ink);box-shadow:0 2px 6px rgba(140,60,20,.05)}
.rl-msg b{color:#B4632C;font-size:14px;display:block;margin-bottom:2px}
.rl-msg.mine{align-self:flex-end;background:var(--brand-primary);color:var(--on-brand);border-radius:16px 4px 16px 16px}
.rl-msg.mine b{color:#F7D9A0}
.rl-foot{display:flex;gap:10px;position:sticky;bottom:0;margin-top:16px;padding:12px 0 calc(6px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg,#FFF9F2) 68%,rgba(255,255,255,0))}
.rl-say{flex:1;display:flex;align-items:center;justify-content:center;gap:10px;min-height:var(--control-h-md);height:auto;border:none;border-radius:var(--radius-action);background:var(--brand-primary);color:var(--on-primary,#fff);font-size:var(--fs-action);font-weight:700;letter-spacing:.5px;box-shadow:var(--shadow-card)}
.rl-say .rl-mic{font-size:20px}
.rl-hang{width:52px;height:52px;border:none;border-radius:50%;background:#fff;color:var(--brand-accent-strong);font-size:20px;font-weight:700;box-shadow:0 2px 8px rgba(140,60,20,.12);flex:none}
#p-roomlive[data-room=friends] .rl-mb .av{background:linear-gradient(135deg,#F3E3C2,#EAD2A4)}
#p-roomlive[data-room=voice] .rl-mb .av{background:linear-gradient(135deg,#E2EAE6,#D2E0DA)}
.cap-list{display:flex;flex-direction:column;gap:10px}
.cap-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:13px 14px;cursor:pointer;transition:transform .15s}
.cap-row:active{transform:scale(.98)}
.cap-row .ic{width:44px;height:44px;border-radius:13px;background:color-mix(in srgb,var(--brand-accent) 1%,transparent);
  display:flex;align-items:center;justify-content:center;font-size:22px;flex:none}
.cap-row .in{flex:1;min-width:0}
.cap-row b{font-size:15px;color:var(--ink);font-weight:700;display:block}
.cap-row span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.cap-row .go{color:var(--accent);font-size:16px;font-weight:700;flex:none}
/* ============ 首页广告位：16:9 图片/视频通栏，点按体验，长按换素材 ============ */
.ad-hero{position:relative;overflow:hidden;border-radius:22px;aspect-ratio:16/9;
  cursor:pointer;box-shadow:var(--shadow-card,0 6px 20px rgba(94,55,31,.10));background:#8F2A20}
.ad-media{position:absolute;inset:0}
.ad-media img,.ad-media video{width:100%;height:100%;object-fit:cover;display:block}
.ad-hero .ad-txt{position:absolute;inset:auto 0 0 0;padding:16px 18px;
  background:linear-gradient(to top,rgba(84,18,11,.86) 10%,rgba(84,18,11,.42) 58%,rgba(84,18,11,0) 100%)}
.ad-hero .ad-tag{display:inline-flex;align-items:center;border-radius:999px;padding:4px 12px;
  background:rgba(201,154,69,.26);border:1px solid rgba(240,217,176,.6);
  color:#F0D9B0;font-size:14px;font-weight:700;letter-spacing:1px}
.ad-hero h2{margin:8px 0 4px;font-size:22px;line-height:1.3;color:#FFF6E8;letter-spacing:1px;font-weight:800}
.ad-hero h2 em{font-style:normal;color:#F0D9B0}
.ad-hero p{margin:0;font-size:14px;color:rgba(255,246,232,.82);line-height:1.45}
.ad-hero .lantern{position:absolute;right:12px;top:10px;font-size:26px;
  filter:drop-shadow(0 3px 6px rgba(0,0,0,.3));z-index:2}
.ad-track{position:absolute;inset:0;display:flex;will-change:transform;transition:transform .55s ease}
.ad-slide{flex:0 0 100%;position:relative}
.ad-slide img,.ad-slide video{width:100%;height:100%;object-fit:cover;display:block}
.ad-dots{position:absolute;right:14px;bottom:14px;display:flex;gap:5px;z-index:3}
.ad-dots i{width:6px;height:6px;border-radius:3px;background:rgba(255,246,232,.45);transition:all .25s}
.ad-dots i.on{width:16px;background:#F0D9B0}
.ad-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:18px}
.ad-it{display:flex;align-items:center;gap:9px;background:var(--card);border:1.5px solid var(--line);
  border-radius:15px;padding:11px 12px;cursor:pointer;transition:transform .15s}
.ad-it:active{transform:scale(.96)}
.ad-it .ic{width:38px;height:38px;border-radius:11px;background:color-mix(in srgb,var(--brand-accent) 1%,transparent);
  display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.ad-it .tx{flex:1;min-width:0}
.ad-it .tx b{font-size:14px;color:var(--ink);font-weight:700;display:block}
.ad-it .tx span{font-size:14px;color:var(--sub);display:block;margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ad-it .go{margin-left:auto;color:var(--accent);font-size:16px;font-weight:700;flex:none}
.grid4{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gcard{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:10px;display:flex;
  flex-direction:column;gap:8px;cursor:pointer;transition:background .3s}
.gcard .cv{width:100%;height:82px;border-radius:13px;object-fit:cover}
.gcard .ic{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center}
.gcard b{font-size:15px;color:var(--ink);font-weight:600}
.gcard span{font-size:14px;color:var(--sub)}
/* ============ <span class="cmp-name">华哥</span>超级智能体（暗页） ============ */
.hg-head{display:flex;align-items:center;gap:12px}
.hg-av{width:52px;height:52px;border-radius:26px;object-fit:cover;border:2px solid var(--dark-gold)}
.hg-name{font-size:18px;font-weight:700;color:var(--dark-ink)}
.hg-status{font-size:14px;color:#8CC7AE;display:flex;align-items:center;gap:6px;margin-top:2px}
.live-dot{width:7px;height:7px;border-radius:4px;background:#8CC7AE;animation:blink 1.4s infinite}
/* ============ <span class="cmp-name">华哥</span>全屏陪伴页：满屏数字人 + 语音对话 ============ */
#p-huagelive{padding:0}
#p-huagelive .hl-bg{position:absolute;inset:0;z-index:1}
#p-huagelive .hl-bg img{width:100%;height:100%;object-fit:cover;object-position:center 20%}
#p-huagelive .hl-bg::after{content:'';position:absolute;inset:0;
  background:linear-gradient(rgba(10,14,13,.42) 0%,rgba(10,14,13,0) 26%,rgba(10,14,13,0) 52%,rgba(10,14,13,.66) 100%)}
#p-huagelive .hl-top{position:relative;z-index:6;display:flex;align-items:center;justify-content:space-between;padding:10px 16px 0}
#p-huagelive .hl-title{font-size:15px;color:rgba(255,255,255,.92);font-weight:600;letter-spacing:1px;
  text-shadow:0 1px 8px rgba(0,0,0,.6)}
.hl-rbtn{width:44px;height:44px;border-radius:22px;background:rgba(255,255,255,.94);border:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.28)}
.hl-rbtn:active{transform:scale(.94)}
/* 任务状态胶囊：通往<span class="cmp-name">华哥</span>任务详情 */
.hl-task{position:relative;z-index:6;display:flex;justify-content:center;margin-top:8px}
.hl-task button{display:inline-flex;align-items:center;gap:7px;border:none;cursor:pointer;
  background:rgba(18,24,22,.55);backdrop-filter:blur(8px);border-radius:999px;padding:7px 14px;
  font-family:inherit;font-size:14px;color:rgba(255,255,255,.9)}
.hl-task button i{width:7px;height:7px;border-radius:4px;background:#8CC7AE;animation:blink 1.4s infinite;flex:none}
.hl-task button:active{transform:scale(.96)}
/* 字幕：单条胶囊贴底，脸部区域（画面上 1/3）完全让开，自动隐藏不恋战 */
.hl-cap{position:absolute;left:50%;transform:translateX(-50%) translateY(6px);bottom:176px;z-index:6;
  width:max-content;min-width:150px;max-width:94%;box-sizing:border-box;
  background:rgba(15,20,18,.60);backdrop-filter:blur(14px) saturate(1.4);
  border:1.5px solid rgba(255,255,255,.14);border-radius:20px;padding:9px 18px 10px;
  text-align:center;opacity:0;pointer-events:none;transition:opacity .28s,transform .28s}
.hl-cap.show{opacity:1;transform:translateX(-50%) translateY(0)}
.hl-cap.imp{border-color:rgba(227,178,104,.75);box-shadow:0 0 0 1px rgba(227,178,104,.30),0 8px 28px rgba(0,0,0,.38)}
.hl-cap .who{display:block;font-size:14px;font-weight:700;letter-spacing:2px;color:#E3B268;margin-bottom:2px}
.hl-cap .txt{font-size:17px;font-weight:600;color:#fff;line-height:1.55;text-shadow:0 1px 6px rgba(0,0,0,.55);
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.hl-cap .txt em{font-style:normal;color:#F0C97F}
/* 通话中的悄悄话轻提示（任务完成等，一句话，不播报） */
.hl-light{position:absolute;left:50%;transform:translateX(-50%);bottom:236px;max-width:82%;z-index:6;
  background:rgba(227,178,104,.13);backdrop-filter:blur(10px);border:1px solid rgba(227,178,104,.5);
  color:#F5D9A8;font-size:14px;line-height:1.5;padding:6px 13px;border-radius:12px;text-align:center;
  opacity:0;pointer-events:none;transition:opacity .35s}
.hl-light.show{opacity:1}
/* 真实作品完成后：在华哥聊天页直接展示与“我的风采”一致的作品卡。 */
.hl-result-card{position:absolute;left:50%;right:auto;width:min(286px,calc(100% - 36px));bottom:150px;z-index:24;display:block;
  opacity:0;pointer-events:none;transform:translateX(-50%) translateY(18px) scale(.97);transition:opacity .24s ease,transform .3s cubic-bezier(.2,.8,.2,1)}
.hl-result-card.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0) scale(1)}
.hl-result-card .wcard{width:100%;background:#fff;border-color:rgba(236,223,200,.96);box-shadow:0 16px 42px rgba(0,0,0,.34)}
.hl-result-card .wcard .ph{height:auto;aspect-ratio:4/3;background:#EFE8DD}
.hl-result-card .wcard[data-type="video"] .ph{aspect-ratio:16/10}
.hl-result-card .wcard .ph img,.hl-result-card .wcard .ph video{width:100%;height:100%;object-fit:cover;display:block}
.hl-result-card .wcard .meta{background:#fff}
.hl-result-close{position:absolute;right:7px;top:7px;z-index:3;width:28px;height:28px;border:0;border-radius:50%;
  background:rgba(22,18,15,.56);color:#fff;font-size:17px;line-height:28px;text-align:center;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.wcard.v16-real-work .ph{height:auto!important;aspect-ratio:4/3;background:#F1EADF}
.wcard.v16-real-work[data-type="video"] .ph{aspect-ratio:16/10}
.wcard.v16-real-work .ph img,.wcard.v16-real-work .ph video{width:100%;height:100%;object-fit:cover;display:block}
/* 底部操作区：三颗按钮用 grid 槽位，严格按圆心中线对齐，任何状态文字都不推动圆心。 */
.hl-dock{position:absolute;left:0;right:0;bottom:0;z-index:6;display:grid;
  grid-template-columns:repeat(3,72px);column-gap:clamp(28px,9vw,48px);align-items:start;justify-content:center;
  padding:0 max(18px,env(safe-area-inset-left,0px)) 44px;background:linear-gradient(transparent,rgba(10,14,13,.5));contain:layout style}
/* 固定内部列宽，避免不换行的状态文字撑宽隐式列、带动麦克风左右偏移。 */
.hl-side,.hl-mid{width:72px;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:72px 20px;justify-items:center;align-items:center;row-gap:5px;cursor:pointer}
.hl-side .disc{width:56px;height:56px;border-radius:28px;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;align-self:center;transition:transform .15s}
.hl-side:active .disc{transform:scale(.92)}
.hl-side span,.hl-mid .hl-lbl{align-self:start;line-height:20px;font-size:14px;color:rgba(255,255,255,.88);white-space:nowrap;justify-self:center}
/* 麦克风录音态只换颜色，不改变尺寸、margin、top/bottom 或 translateY。 */
.hl-mic{width:64px;height:64px;border-radius:32px;background:#fff;color:#1F2624;border:none;cursor:pointer;flex:none;
  align-self:center;display:flex;align-items:center;justify-content:center;box-shadow:0 5px 18px rgba(0,0,0,.38);
  margin:0!important;top:auto!important;bottom:auto!important;
  transition:background .18s,color .18s,box-shadow .18s;touch-action:none;user-select:none;-webkit-user-select:none}
.hl-mic:active{transform:none}
.hl-mic.hold{background:#FA5151;color:#fff;transform:none;box-shadow:0 6px 22px rgba(250,81,81,.45)}
.hl-mid{margin:0!important}
/* 通话页：悬浮输入键盘。使用系统中文输入法，但锁住应用画布，键盘出现时背景完全不重排。 */
.hl-kb{position:absolute;left:14px;right:14px;bottom:calc(var(--hl-kb-lift,0px) + 12px + env(safe-area-inset-bottom,0px));z-index:90;
  padding:9px;background:rgba(255,252,246,.94);-webkit-backdrop-filter:blur(24px) saturate(1.6);backdrop-filter:blur(24px) saturate(1.6);
  border:1px solid rgba(255,255,255,.78);border-radius:24px;box-shadow:0 16px 46px rgba(0,0,0,.34),0 1px 0 rgba(255,255,255,.72) inset;
  opacity:0;pointer-events:none;transform:translateY(26px) scale(.97);transition:opacity .22s ease,transform .28s cubic-bezier(.2,.8,.2,1),bottom .12s linear}
.hl-kb.show{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}
.hl-kb-in{display:flex;align-items:center;gap:8px;margin:0}
.hl-kb-in input{min-width:0;flex:1;height:48px;border-radius:17px;border:1px solid rgba(73,55,42,.10);
  background:rgba(255,255,255,.88);padding:0 14px;font-size:16px;color:#2B2018;outline:none;font-family:inherit;
  box-shadow:0 2px 10px rgba(85,55,30,.07) inset;-webkit-appearance:none;appearance:none}
.hl-kb-in input:focus{border-color:color-mix(in srgb,var(--brand-accent) 34%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-accent) 9%,transparent)}
.hl-kb-in input::placeholder{color:#9A8A78}
.hl-kb-send{height:48px;min-width:62px;padding:0 16px;border:0;border-radius:17px;background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));
  color:#fff;font-family:inherit;font-size:15px;font-weight:800;box-shadow:0 6px 14px color-mix(in srgb,var(--brand-accent) 24%,transparent);cursor:pointer}
.hl-kb-hide{height:48px;padding:0 12px;border-radius:17px;border:0;background:rgba(70,57,47,.07);color:#6F6256;
  font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}
.hl-kb-send:active,.hl-kb-hide:active{transform:scale(.96)}
/* 键盘打开期间固定应用的原始高度；visualViewport 只负责把输入条抬到系统键盘上方。 */
html.hl-kb-open,body.hl-kb-open{overflow:hidden!important;overscroll-behavior:none}
/* 全屏页隐藏输入栏，铺满 */
#p-huagelive .inputbar{display:none}
/* 横屏：同样整体上移，露出面部与底部安全区 */
body.app-mode #p-huagelive .hl-cap{bottom:146px}
body.app-mode #p-huagelive .hl-light{bottom:206px}
body.app-mode #p-huagelive .hl-dock{padding-bottom:32px}
@keyframes blink{50%{opacity:.3}}
.swap-btn{height:36px;padding:0 14px;border-radius:999px;background:var(--dark-card);border:1px solid var(--dark-line);
  color:var(--dark-gold);font-size:14px;font-weight:500;font-family:inherit;cursor:pointer}
.upload-strip{display:flex;flex-direction:column;gap:6px}
.upload-strip .lbl{font-size:14px;color:var(--dark-sub)}
.thumbs{display:flex;gap:8px}
.thumbs img,.thumbs .add{
  width:52px;height:52px;border-radius:12px;object-fit:cover;border:1px solid var(--dark-line)
}
.thumbs .add{background:var(--dark-card);display:flex;align-items:center;justify-content:center;cursor:pointer}
.bubble-user{
  background:var(--dark-card);border-radius:18px;padding:13px 15px;font-size:14px;color:var(--dark-ink);
  line-height:1.6;position:relative;
}
.bubble-user .mic-mini{color:var(--dark-gold);font-size:14px;display:flex;align-items:center;gap:5px;margin-bottom:6px}
.task-card{background:var(--dark-card);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px}
.task-head{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--dark-gold)}
.step{font-size:14px;color:#8CC7AE}
.step.now{color:var(--dark-sub)}
.progress{height:8px;border-radius:4px;background:#17211F;overflow:hidden}
.progress i{display:block;height:100%;width:72%;border-radius:4px;background:var(--dark-gold);
  animation:grow 6s ease-in-out infinite alternate}
@keyframes grow{to{width:88%}}
.deliver{background:var(--card);border-radius:18px;padding:12px;display:flex;flex-direction:column;gap:10px}
.deliver h3{font-size:14px;font-weight:600;color:#1F2624}
.video-box{position:relative;height:158px;border-radius:12px;overflow:hidden}
.video-box img{width:100%;height:100%;object-fit:cover}
.play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:26px;
  background:rgba(255,255,255,.95);display:flex;align-items:center;justify-content:center;cursor:pointer}
.dur{position:absolute;right:10px;bottom:8px;font-size:14px;color:#fff;background:rgba(0,0,0,.55);padding:3px 8px;border-radius:8px}
.btn-row{display:flex;gap:8px}
.btn-row button{flex:1;height:44px;border-radius:16px;border:none;font-family:inherit;font-size:14px;
  font-weight:600;cursor:pointer}
.btn-ghost{background:var(--soft);color:var(--ink)}
.btn-dark{background:var(--brand-primary);color:#fff}
.btn-accent{background:var(--brand-accent);color:var(--on-accent,#fff)}
.inputbar{flex:none;display:flex;gap:10px;align-items:center;padding:6px 16px 14px}
.mic-main{
  flex:1;height:56px;border-radius:28px;background:var(--dark-gold);color:#141D1B;border:none;
  font-family:inherit;font-size:16px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;
}
.round-ic{width:56px;height:56px;border-radius:28px;background:var(--dark-card);border:1px solid var(--dark-line);
  display:flex;align-items:center;justify-content:center;cursor:pointer}
/* ============ 数字人选择：单人大卡纵向滑动（右上角入口保持不变） ============ */
#p-companions .scroll{scroll-snap-type:none}
.companion-list{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.companion-person-card{
  position:relative;display:flex;flex-direction:column;align-items:stretch;gap:0;
  min-height:0;padding:10px;
  border:1px solid var(--line);border-radius:20px;background:var(--card);overflow:hidden;cursor:pointer;
  box-shadow:0 6px 18px rgba(63,42,27,.08);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .25s ease
}
.companion-person-card:active{transform:scale(.97)}
.companion-person-card .cp-big-photo{width:100%;min-width:0;max-width:none;height:172px;object-fit:cover;object-position:center 18%;border-radius:16px;flex:none;background:var(--soft);display:block}
.companion-person-card .cp-big-info{flex:1;min-width:0;padding:9px 3px 3px;display:flex;flex-direction:column;align-items:flex-start}
.companion-person-card .cp-big-name{font-size:17px;line-height:1.3;font-weight:800;color:var(--ink);letter-spacing:.2px}
.companion-person-card .cp-big-desc{font-size:14px;line-height:1.5;color:var(--sub);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.companion-person-card .cp-big-action{margin-top:8px;min-height:34px;width:100%;padding:0 8px;border-radius:999px;display:flex;align-items:center;justify-content:center;background:var(--primary);color:var(--on-primary);font-size:14px;font-weight:750}
.companion-person-card .cp-current-badge{position:absolute;right:13px;top:12px;height:32px;padding:0 13px;border-radius:999px;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;font-size:14px;font-weight:800;box-shadow:0 4px 12px rgba(0,0,0,.10)}
.companion-person-card.is-current{border:2px solid var(--accent);box-shadow:0 12px 30px rgba(94,55,26,.14)}
.companion-person-card.is-current .cp-big-photo{outline:3px solid rgba(242,210,138,.55);outline-offset:-3px}
.companion-person-card.is-current .cp-big-action{background:var(--accent);color:var(--on-accent)}
.companion-list-hint{font-size:14px;line-height:1.5;color:var(--sub);margin-top:-4px}
@media(max-width:360px){
  .companion-person-card{padding:8px}
  .companion-person-card .cp-big-photo{height:140px}
  .companion-person-card .cp-big-name{font-size:15px}
  .companion-person-card .cp-big-desc{font-size:14px}
}
/* ============ 我的風采 / 广场 ============ */
.filters{display:flex;gap:8px}
.fchip{height:34px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:var(--card);
  color:var(--ink);font-family:inherit;font-size:14px;font-weight:500;cursor:pointer}
.fchip.on{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.month{font-size:15px;font-weight:700;color:var(--ink)}
.waterfall{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wcard{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer}
.wcard .ph{position:relative;overflow:hidden}
.wcard .ph img{width:100%;object-fit:cover;display:block}
.wcard .ph .vtag{position:absolute;left:8px;top:8px;background:rgba(0,0,0,.5);color:#fff;font-size:14px;
  padding:3px 8px;border-radius:8px;display:flex;align-items:center;gap:4px}
.wcard .meta{padding:9px 10px;display:flex;flex-direction:column;gap:5px}
.wcard .meta b{font-size:14px;color:var(--ink);font-weight:600}
.wcard .meta .row{display:flex;align-items:center;justify-content:space-between}
.wcard .meta span{font-size:14px;color:var(--sub)}
/* 广场作品卡 */
.work{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;cursor:pointer}
.work .cover{position:relative;height:170px;overflow:hidden}
.work .cover img{width:100%;height:100%;object-fit:cover}
.work .cover .live{position:absolute;left:10px;top:10px;background:var(--brand-primary);color:var(--on-brand);font-size:14px;
  font-weight:600;padding:4px 10px;border-radius:999px}
.work .body{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.work .body b{font-size:15px;color:var(--ink);font-weight:600}
.work .by{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--sub)}
.work .by img{width:24px;height:24px;border-radius:12px;object-fit:cover}
.work .stats{display:flex;gap:14px;font-size:14px;color:var(--sub)}
/* ============ 游戏 ============ */
.game-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);
  border-radius:20px;padding:14px;cursor:pointer;transition:background .3s}
.game-ic{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  font-size:26px;flex:none}
.game-card .inf{flex:1;display:flex;flex-direction:column;gap:3px}
.game-card .inf b{font-size:17px;color:var(--ink);font-weight:700}
.game-card .inf span{font-size:14px;color:var(--sub)}
.play-sm{height:40px;padding:0 18px;border-radius:999px;background:var(--primary);color:var(--on-primary);
  border:none;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer}
/* —— 游戏页丰富版：主推大卡 + 宫格 + 热局 + 战绩 —— */
.game-hero{position:relative;border-radius:22px;padding:20px;overflow:hidden;cursor:pointer;color:#FDF9F2;
  background:linear-gradient(135deg,var(--brand-accent) 0%,var(--brand-accent-strong) 55%,#8F4A32 100%);transition:transform .15s}
.game-hero:active{transform:scale(.98)}
.game-hero .deco{position:absolute;right:-26px;top:-22px;width:150px;height:150px;border-radius:50%;
  background:rgba(255,255,255,.1)}
.game-hero .deco2{position:absolute;right:64px;bottom:-42px;width:110px;height:110px;border-radius:50%;
  background:rgba(255,255,255,.07)}
.game-hero .gtag{display:inline-block;font-size:14px;font-weight:600;letter-spacing:1px;
  background:rgba(255,255,255,.2);border-radius:999px;padding:3px 12px;margin-bottom:10px}
.game-hero h3{margin:0 0 4px;font-size:26px;font-weight:800;letter-spacing:2px}
.game-hero p{margin:0;font-size:14px;opacity:.92}
.game-hero .go{margin-top:16px;display:flex;align-items:center;justify-content:space-between}
.game-hero .go button{height:46px;padding:0 30px;border:none;border-radius:999px;background:#FDF9F2;
  color:#A0522D;font-family:inherit;font-size:17px;font-weight:700;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,.18)}
.game-hero .go .hot{font-size:14px;opacity:.85}
.game-tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.game-tile{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:20px;overflow:hidden;cursor:pointer;transition:transform .15s}
.game-tile:active{transform:scale(.97)}
.game-tile .cv{height:96px;background-size:cover;background-position:center;position:relative;flex:none}
.game-tile .cv .cv-badge{position:absolute;top:8px;left:8px;font-size:14px;font-weight:700;color:#fff;
  background:rgba(31,38,36,.72);border-radius:999px;padding:3px 9px;letter-spacing:.5px}
.game-tile .bd{display:flex;flex-direction:column;gap:4px;padding:12px}
.game-tile b{font-size:17px;color:var(--ink);font-weight:700}
.game-tile .gt-sub{font-size:14px;color:var(--sub)}
.game-tile .gt-play{margin-top:8px;height:42px;border:none;border-radius:12px;background:var(--brand-primary);
  color:var(--on-brand);font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;transition:opacity .2s;box-shadow:0 4px 10px color-mix(in srgb,var(--brand-primary) 18%,transparent)}
.game-tile .gt-play:active{transform:scale(.96)}
.more-row{display:flex;align-items:center;justify-content:space-between;background:var(--card);
  border:1px solid var(--line);border-radius:16px;height:48px;padding:0 16px;cursor:pointer}
.more-row span{font-size:14px;color:var(--ink);font-weight:500}
.more-row i{font-style:normal;font-size:18px;color:var(--ink);font-weight:700}
.invite-banner{display:flex;align-items:center;justify-content:center;height:52px;border-radius:16px;
  background:color-mix(in srgb,var(--brand-accent) 14%,transparent);cursor:pointer}
.invite-banner span{font-size:14px;color:var(--brand-accent-strong);font-weight:600}
/* ============ 游戏对局：机器人陪打 / 好友联网 ============ */
.play-head{display:flex;align-items:center;gap:12px}
.play-head .room-name b{font-size:17px;color:#F1EDE5;font-weight:700}
.play-head .room-name span{display:block;font-size:14px;color:var(--dark-sub,#9AA8A2)}
.play-invite{height:38px;padding:0 16px;border:none;border-radius:999px;background:rgba(227,178,104,.16);
  color:#E3B268;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;gap:6px}
.seats{display:flex;gap:10px}
.seat{flex:1;display:flex;align-items:center;gap:8px;background:var(--dark-card);border:1px solid var(--dark-line);
  border-radius:16px;padding:10px;min-width:0}
.seat img{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:none}
.seat .sn{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.seat .sn b{font-size:14px;color:#F1EDE5;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat .sn span{font-size:14px;color:#9AA8A2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seat .cnt{font-size:14px;color:#E3B268;font-weight:700;background:rgba(227,178,104,.12);
  border-radius:999px;padding:3px 8px;flex:none;white-space:nowrap}
.play-center{background:var(--dark-card);border:1px solid var(--dark-line);border-radius:20px;
  padding:16px;display:flex;flex-direction:column;gap:10px;align-items:center}
.play-center .pc-lab{font-size:14px;color:#9AA8A2}
.table-cards{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;min-height:64px}
.pcard{width:46px;height:64px;border-radius:8px;background:#FAF9F7;color:#1F2624;display:flex;
  flex-direction:column;align-items:center;justify-content:center;font-size:20px;font-weight:800;
  box-shadow:0 2px 6px rgba(0,0,0,.3)}
.pcard.sm{width:34px;height:48px;font-size:15px}
.pcard.red{color:var(--brand-accent)}
.chess-board{display:grid;grid-template-columns:repeat(9,1fr);gap:0;width:100%;aspect-ratio:9/10;
  background:#E8D5B0;border-radius:12px;overflow:hidden;padding:6px}
.chess-board i{font-style:normal;font-size:17px;display:flex;align-items:center;justify-content:center;cursor:pointer}
.chess-board i.r{color:var(--brand-accent-strong);font-weight:700}
.chess-board i.b{color:var(--brand-primary);font-weight:700}
.my-hand-lab{font-size:14px;color:#9AA8A2;display:flex;justify-content:space-between}
.my-hand{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding:2px 0 4px}
.my-hand::-webkit-scrollbar{display:none}
.my-hand .pcard{cursor:pointer;flex:none}
.my-hand .pcard.pick{transform:translateY(-8px);border:2px solid #E3B268}
.play-btns{display:flex;gap:10px}
.pb{flex:1;height:48px;border:none;border-radius:16px;font-family:inherit;font-size:16px;font-weight:700;cursor:pointer}
.pb-main{background:linear-gradient(135deg,var(--brand-primary),var(--brand-primary-hover));color:var(--on-brand)}
.pb-ghost{background:var(--dark-card);color:#F1EDE5;border:1px solid var(--dark-line)}
.pb-gold{background:rgba(227,178,104,.16);color:#E3B268}
.share-row{display:flex;align-items:center;gap:10px;background:var(--dark-card);border:1px solid var(--dark-line);
  border-radius:16px;padding:12px 14px}
.share-row .inf{flex:1;font-size:14px;color:#F1EDE5;font-weight:600}
.share-row .inf span{display:block;font-size:14px;color:#9AA8A2;font-weight:400}
.share-row button{height:34px;padding:0 14px;border:none;border-radius:999px;background:rgba(92,127,114,.22);
  color:#8CC7AE;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.sec-row{display:flex;align-items:center;justify-content:space-between;margin-top:4px}
.sec-row b{font-size:16px;color:var(--ink);font-weight:700}
.sec-row span{font-size:14px;color:var(--sub)}
.lt-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:12px 14px;cursor:pointer}
.lt-row .avs{display:flex}
.lt-row .avs img{width:38px;height:38px;border-radius:50%;object-fit:cover;border:2px solid var(--card)}
.lt-row .avs img+img{margin-left:-10px}
.lt-row .inf{flex:1;display:flex;flex-direction:column;gap:2px}
.lt-row .inf b{font-size:14px;color:var(--ink);font-weight:600}
.lt-row .inf span{font-size:14px;color:var(--sub)}
.lt-row .join{height:34px;padding:0 16px;border:none;border-radius:999px;background:color-mix(in srgb,var(--brand-accent) 14%,transparent);
  color:var(--brand-accent);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.lt-row .full{height:24px;padding:0 10px;border-radius:999px;background:var(--chip);color:var(--sub);
  font-size:14px;display:flex;align-items:center}
.recent-strip{display:flex;flex-wrap:wrap;gap:8px;scrollbar-width:none;padding-bottom:2px}
.recent-strip::-webkit-scrollbar{display:none}
.rchip{flex:none;display:flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line);
  border-radius:999px;padding:7px 12px;font-size:14px;color:var(--sub)}
.rchip b{font-size:14px;color:var(--ink);font-weight:600}
.rchip .win{color:var(--brand-accent-strong);font-weight:700}
/* ============ 我的 ============ */
.profile-card{display:flex;align-items:center;gap:14px;background:var(--primary);border-radius:22px;padding:16px;transition:background .3s}
.profile-card img{width:64px;height:64px;border-radius:32px;object-fit:cover;border:3px solid rgba(255,255,255,.3)}
.profile-card .nm{font-size:19px;font-weight:700;color:var(--on-primary)}
.profile-card .ds{font-size:14px;color:var(--primary-sub);margin-top:4px}
.stats-card{display:flex;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px 0;transition:background .3s}
.stat{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;border-right:1px solid var(--line)}
.stat:last-child{border:none}
.stat b{font-size:19px;font-weight:700;color:var(--ink)}
.stat span{font-size:14px;color:var(--sub)}
.list-card{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:background .3s}
.li{display:flex;align-items:center;gap:12px;padding:15px 16px;border-bottom:1px solid var(--line);cursor:pointer}
.li:last-child{border:none}
.li .ic{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none}
.li b{flex:1;font-size:15px;color:var(--ink);font-weight:500}
.li span{font-size:14px;color:var(--sub)}
.invite{background:var(--chip);border-radius:18px;padding:16px;display:flex;align-items:center;gap:14px;cursor:pointer}
.invite .ic{width:44px;height:44px;border-radius:16px;background:var(--accent);display:flex;align-items:center;
  justify-content:center;flex:none}
.invite b{font-size:15px;color:var(--ink);font-weight:600}
.invite span{font-size:14px;color:var(--sub)}
/* ============ 时光房间（暗页） ============ */
.room-head{display:flex;align-items:center;gap:10px}
.room-name{flex:1;display:flex;flex-direction:column;gap:2px}
.room-name b{font-size:17px;font-weight:700;color:var(--dark-ink)}
.room-name span{font-size:14px;color:var(--dark-sub)}
.stage{position:relative;height:280px;border-radius:20px;overflow:hidden}
.stage img{width:100%;height:100%;object-fit:cover}
.stage .live{position:absolute;left:12px;top:12px;background:var(--brand-primary);color:var(--on-brand);font-size:14px;font-weight:600;
  padding:5px 12px;border-radius:999px;display:flex;align-items:center;gap:5px}
.stage .now{position:absolute;left:12px;bottom:12px;right:12px;font-size:14px;color:#fff;font-weight:500;
  background:linear-gradient(transparent,rgba(0,0,0,.65));padding:26px 4px 4px}
.performer{display:flex;align-items:center;gap:10px}
.performer img{width:44px;height:44px;border-radius:22px;object-fit:cover;border:2px solid var(--dark-gold)}
.performer .inf{flex:1}
.performer b{font-size:14px;font-weight:600;color:var(--dark-ink)}
.performer .nx{font-size:14px;color:#8CC7AE;margin-top:2px}
.mode{display:flex;gap:6px;background:var(--dark-card);border-radius:16px;padding:4px;height:52px}
.mode button{flex:1;border:none;border-radius:12px;font-family:inherit;font-size:14px;cursor:pointer;
  background:transparent;color:var(--dark-sub);font-weight:500;transition:all .2s}
.mode button.on{background:var(--dark-gold);color:#141D1B;font-weight:600}
.mat-title{font-size:14px;font-weight:600;color:var(--dark-sub)}
.mat-row{display:flex;gap:8px}
.mat{flex:1;background:var(--dark-card);border:1px solid var(--dark-line);border-radius:16px;padding:10px 6px;
  display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer}
.mat b{font-size:14px;font-weight:500;color:var(--dark-ink)}
.room-actions{flex:none;display:flex;gap:10px;align-items:center;padding:4px 16px 14px}
.go-stage{flex:1;height:56px;border-radius:28px;border:none;background:var(--dark-gold);color:#141D1B;
  font-family:inherit;font-size:16px;font-weight:600;cursor:pointer}
/* ============ 素材库 ============ */
.sec-head{display:flex;justify-content:space-between;align-items:center}
.sec-head b{font-size:15px;font-weight:700;color:var(--ink)}
.sec-head span{font-size:14px;color:var(--accent)}
.stage-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.scard{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:6px;display:flex;
  flex-direction:column;gap:6px;cursor:pointer}
.scard.on{border-color:var(--accent);border-width:2px}
.scard .ph{height:84px;border-radius:12px;overflow:hidden;position:relative}
.scard .ph img{width:100%;height:100%;object-fit:cover}
.scard .nm{display:flex;align-items:center;justify-content:space-between;padding:0 4px 3px}
.scard .nm b{font-size:14px;font-weight:600;color:var(--ink)}
.scard.on .nm b{color:var(--accent)}
.check{width:18px;height:18px;border-radius:9px;background:var(--accent);display:flex;align-items:center;justify-content:center}
.hrow{display:flex;gap:8px}
.hcard{flex:1;background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:5px;display:flex;
  flex-direction:column;align-items:center;gap:5px;cursor:pointer}
.hcard.on{border-color:var(--accent);border-width:2px}
.hcard .ph{width:100%;height:92px;border-radius:9px;overflow:hidden}
.hcard .ph img{width:100%;height:100%;object-fit:cover}
.hcard b{font-size:14px;font-weight:600;color:var(--ink);padding-bottom:3px}
.hcard.on b{color:var(--accent)}
.swatch-theme{width:100%;height:92px;border-radius:9px;background:linear-gradient(180deg,#FAF9F7 0%,var(--brand-accent-strong) 55%,#C99A45 100%);
  display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px}
/* ============ 做照片视频 ============ */
.tpl-scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.tpl-scroll::-webkit-scrollbar{display:none}
.tpl{flex:none;width:120px;border-radius:16px;overflow:hidden;border:2px solid var(--line);cursor:pointer;
  background:var(--card);display:flex;flex-direction:column}
.tpl.on{border-color:var(--accent)}
.tpl .ph{height:74px;overflow:hidden}
.tpl .ph img{width:100%;height:100%;object-fit:cover}
.tpl b{font-size:14px;color:var(--ink);font-weight:600;padding:7px 10px}
.tpl.on b{color:var(--accent)}
.tpl.on b::after{content:" ✓"}
.big-btn{height:56px;border-radius:28px;border:none;background:var(--primary);color:var(--on-primary);
  font-family:inherit;font-size:16px;font-weight:600;cursor:pointer;width:100%}
.step-lbl{font-size:15px;font-weight:700;color:var(--ink)}
.step-lbl small{font-size:14px;color:var(--sub);font-weight:400;margin-left:6px}
/* ============ 模板中心 · 一键同款 ============ */
.htpl-scroll{display:flex;gap:12px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
.htpl-scroll::-webkit-scrollbar{display:none}
.htpl{flex:none;width:152px;border-radius:16px;overflow:hidden;background:var(--card);border:1px solid var(--line);cursor:pointer}
.htpl .cv{position:relative;height:100px}
.htpl .cv img{width:100%;height:100%;object-fit:cover;display:block}
.tcc .cv{position:relative;height:132px}
.tcc .cv img{width:100%;height:100%;object-fit:cover;display:block}
.cv .use{position:absolute;right:8px;bottom:8px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:700;padding:6px 13px;border-radius:16px;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.htpl .nm,.tcc .nm{padding:10px 11px 3px;font-size:14px;font-weight:700;color:var(--ink)}
.htpl .hot,.tcc .hot{padding:0 11px 11px;font-size:14px;color:var(--sub);line-height:1.5}
.tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tcc{border-radius:18px;overflow:hidden;background:var(--card);border:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column}
.tcc .nm{font-size:15px}
.tpl-more{margin-top:10px;text-align:center;font-size:14px;font-weight:600;color:var(--accent);cursor:pointer;padding:10px;background:var(--soft);border-radius:16px}
/* ============ 回忆时间（人生时间轴） ============ */
.mem-hero{background:linear-gradient(135deg,var(--soft),var(--card));border:1px solid var(--line);border-radius:20px;padding:16px;display:flex;gap:12px;align-items:center}
.mem-hero img{width:58px;height:58px;border-radius:29px;object-fit:cover;border:2px solid var(--accent)}
.mem-hero .in{flex:1}
.mem-hero b{font-size:17px;color:var(--ink);display:block}
.mem-hero span{font-size:14px;color:var(--sub);line-height:1.5;display:block;margin-top:2px}
.mem-count{background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:700;padding:6px 11px;border-radius:16px;flex:none}
.mem-tl{position:relative;padding-left:24px;margin-top:4px}
.mem-tl::before{content:"";position:absolute;left:7px;top:8px;bottom:8px;width:2px;background:var(--line)}
.mem-node{position:relative;padding-bottom:20px}
.mem-node::before{content:"";position:absolute;left:-23px;top:7px;width:12px;height:12px;border-radius:6px;background:var(--accent);border:3px solid var(--card);box-sizing:border-box}
.mem-yr{font-size:20px;font-weight:800;color:var(--ink)}
.mem-yr i{font-style:normal;font-size:14px;color:var(--sub);margin-left:8px;font-weight:400}
.mem-card{margin-top:8px;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;cursor:pointer}
.mem-card img{width:100%;height:132px;object-fit:cover;display:block}
.mem-bd{padding:11px 13px}
.mem-bd b{font-size:15px;color:var(--ink)}
.mem-bd p{font-size:14px;color:var(--sub);line-height:1.6;margin-top:3px}
.mem-bd p em{font-style:normal;color:var(--accent);font-size:14px;display:block;margin-top:4px}
.mem-add{margin-top:8px;border:2px dashed var(--line);border-radius:16px;background:transparent;padding:13px;font-family:inherit;font-size:14px;font-weight:600;color:var(--sub);cursor:pointer;width:100%}
.mem-add:hover{color:var(--accent);border-color:var(--accent)}
/* 补照片弹层：选照片网格 */
/* 通话页：手机相册多选格 */
.ph-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}
.ph-cell{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;cursor:pointer}
.ph-cell img{width:100%;height:100%;object-fit:cover;display:block}
.ph-cell .ph-ck{position:absolute;right:6px;top:6px;width:22px;height:22px;border-radius:11px;border:2px solid #fff;background:rgba(0,0,0,.28)}
.ph-cell.on{outline:3px solid var(--primary);outline-offset:-3px;animation:popSel .32s cubic-bezier(.34,1.56,.64,1)}
.ph-cell.on .ph-ck{background:var(--primary)}
.ph-cell.on .ph-ck::after{content:'✓';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:700}
.mph-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px}
.mph-t{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden}
.mph-t img{width:100%;height:100%;object-fit:cover;display:block}
.mph-t button{position:absolute;right:5px;top:5px;width:24px;height:24px;border-radius:12px;border:none;background:rgba(0,0,0,.55);color:#fff;font-size:14px;cursor:pointer;line-height:1}
.mph-add{aspect-ratio:1;border:2px dashed var(--accent);border-radius:12px;background:var(--soft);color:var(--accent);font-size:28px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-family:inherit}
.mph-add span{font-size:14px;font-weight:600}
/* ============ 关注 / 粉丝列表 ============ */
.fol-row{display:flex;align-items:center;gap:11px;padding:11px 2px;border-bottom:1px solid var(--line)}
.fol-row:last-child{border-bottom:none}
.fol-row img{width:46px;height:46px;border-radius:23px;object-fit:cover;flex:none}
.fol-row .in{flex:1;min-width:0}
.fol-row b{font-size:15px;color:var(--ink)}
.fol-row span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.fol-btn{border:none;border-radius:16px;padding:9px 15px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;flex:none;background:var(--accent);color:var(--on-accent)}
.fol-btn.off{background:var(--soft);color:var(--sub)}
/* 留言回复某人 */
/* 留言回复某人：状态条 + 引用标签 */
.rp-bar{display:none;align-items:center;gap:10px;background:var(--gold-soft);border:1px solid var(--line);border-bottom:none;border-radius:16px 14px 0 0;padding:8px 12px}
.rp-bar img{width:26px;height:26px;border-radius:50%;object-fit:cover}
.rp-bar span{flex:1;font-size:14px;color:var(--ink)}
.rp-bar b{color:var(--red-deep)}
.rp-bar button{border:none;background:none;color:var(--sub);font-size:14px;cursor:pointer;font-family:inherit;padding:2px 4px}
.rp-quote{display:inline-block;font-size:14px;font-weight:600;color:var(--accent);background:var(--gold-soft);border-radius:8px;padding:2px 9px;margin-bottom:5px}
.cm-rp{font-size:14px;color:var(--accent);cursor:pointer;margin-top:5px;display:inline-block;font-weight:600}
/* ============ 他人主页 ============ */
.u-hero{display:flex;align-items:center;gap:13px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px}
.u-hero img{width:64px;height:64px;border-radius:32px;object-fit:cover;border:2px solid var(--accent);cursor:pointer}
.u-hero .in{flex:1;min-width:0}
.u-hero b{font-size:18px;color:var(--ink);display:block}
.u-hero span{font-size:14px;color:var(--sub);display:block;margin-top:3px;line-height:1.5}
.u-btns{display:flex;gap:10px;margin-top:12px}
.u-btns button{flex:1;height:48px;border-radius:24px;border:none;font-family:inherit;font-size:15px;font-weight:600;cursor:pointer}
.u-fol{background:var(--accent);color:var(--on-accent)}
.u-fol.off{background:var(--soft);color:var(--sub)}
.u-hi{background:var(--soft);color:var(--ink)}
/* ============ 作品详情 · 作者行 / 数字人合拍 ============ */
.au-row{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:11px 13px;cursor:pointer}
.au-row img{width:44px;height:44px;border-radius:22px;object-fit:cover;flex:none}
.au-row .in{flex:1;min-width:0}
.au-row b{font-size:15px;color:var(--ink)}
.au-row span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.au-row .go{color:var(--accent);font-size:14px;font-weight:600;flex:none}
/* 详情页：作者提到顶部标题位 */
.au-head{flex:1;display:flex;align-items:center;gap:10px;min-width:0;cursor:pointer}
.au-head img{width:42px;height:42px;border-radius:21px;object-fit:cover;flex:none}
.au-head .in{flex:1;min-width:0}
.au-head b{font-size:17px;color:var(--ink);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.au-head span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.au-head .go{color:var(--accent);font-size:14px;font-weight:600;flex:none}
.cop-cta{width:100%;height:54px;border-radius:27px;border:2px dashed var(--accent);background:var(--card);color:var(--accent);font-family:inherit;font-size:15px;font-weight:700;cursor:pointer}
.cop-cta:hover{background:var(--soft)}
.cop-card{display:flex;align-items:center;gap:11px;background:var(--soft);border-radius:16px;padding:12px 13px}
.cop-card img{width:42px;height:42px;border-radius:21px;object-fit:cover;flex:none}
.cop-card .in{flex:1}
.cop-card b{font-size:14px;color:var(--ink)}
.cop-card span{font-size:14px;color:var(--sub);display:block;margin-top:2px;line-height:1.5}
#p-detail .detail-cover .badge-cop{left:auto !important;right:12px;top:12px;background:rgba(255,255,255,.92);color:var(--accent);z-index:5}
/* ============ 作品详情 ============ */
.detail-cover{position:relative;height:260px;border-radius:20px;overflow:hidden}
.detail-cover img{width:100%;height:100%;object-fit:cover}
.detail-cover .badge-ai{position:absolute;left:12px;top:12px;background:rgba(255,255,255,.92);color:var(--accent)}
.detail-title{font-size:19px;font-weight:700;color:var(--ink)}
.detail-meta{display:flex;gap:14px;font-size:14px;color:var(--sub);align-items:center}
.detail-row{display:flex;gap:10px;margin-top:2px}
.detail-row .pill{flex:1;height:52px;justify-content:center;font-size:15px;font-weight:600}
/* ============ 风格选择 ============ */
.theme-card{display:flex;align-items:center;gap:12px;background:var(--card);border:2px solid var(--line);
  border-radius:20px;padding:12px;cursor:pointer;transition:border-color .2s}
.theme-card.on{border-color:var(--accent)}
.tp{width:84px;height:108px;border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:5px;flex:none}
.theme-info{flex:1;display:flex;flex-direction:column;gap:4px}
.theme-info b{font-size:17px;font-weight:700;color:var(--ink)}
.theme-info span{font-size:14px;color:var(--sub);line-height:1.5}
.check-lg{width:26px;height:26px;border-radius:13px;background:var(--accent);display:flex;align-items:center;
  justify-content:center;flex:none}
/* ============ 横屏大屏模式（时光房间 / 作品详情 沉浸式） ============ */
.wide-btn{position:absolute;right:12px;top:12px;width:38px;height:38px;border-radius:19px;border:none;cursor:pointer;
  background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:6;transition:background .2s}
.wide-btn:hover{background:rgba(0,0,0,.65)}
.immersive .wide-btn{top:58px}
/* 时光房间/歌房/舞厅 · 横屏：舞台铺满全屏，信息与操作悬浮 */
.roompage.immersive .scroll{padding:0;gap:0;overflow:hidden;position:relative}
.roompage.immersive .stage{height:100%;border-radius:0}
.roompage.immersive .room-head{position:absolute;top:58px;left:16px;right:60px;z-index:5;
  background:linear-gradient(rgba(0,0,0,.55),transparent);padding:8px 4px;margin:0}
.roompage.immersive .mode,.roompage.immersive .mat-title,.roompage.immersive .mat-row,.roompage.immersive .room-extra{display:none}
.roompage.immersive .performer{position:absolute;left:16px;right:16px;bottom:96px;z-index:5;
  padding:10px 12px;background:rgba(20,29,27,.55);border-radius:16px;backdrop-filter:blur(6px)}
.roompage.immersive .stage .now{bottom:176px}
.roompage.immersive .room-actions{position:absolute;left:0;right:0;bottom:0;z-index:5;
  background:linear-gradient(transparent,rgba(0,0,0,.72));padding-top:16px}
/* 作品详情 · 横屏：视频铺满全屏，标题与操作悬浮 */
#p-detail.immersive .scroll{padding:0;gap:0;overflow:hidden;position:relative;background:#000}
#p-detail.immersive .detail-cover{height:100%;border-radius:0}
#p-detail.immersive .pagehead{position:absolute;top:58px;left:16px;right:60px;z-index:5;
  background:linear-gradient(rgba(0,0,0,.55),transparent);padding:8px 4px;margin:0}
#p-detail.immersive .pagehead .t1{color:#fff}
#p-detail.immersive .pagehead .t2{color:rgba(255,255,255,.72)}
#p-detail.immersive .pagehead .back{background:rgba(0,0,0,.4);border-color:transparent}
#p-detail.immersive .pagehead .back svg path{stroke:#fff}
#p-detail.immersive .detail-meta{display:none}
/* ============ 房间大厅 ============ */
.room-card{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:18px;
  padding:10px;cursor:pointer;transition:background .3s}
.room-card .cv{width:92px;height:92px;border-radius:16px;overflow:hidden;position:relative;flex:none}
.room-card .cv img{width:100%;height:100%;object-fit:cover}
.room-card .cv .rtype{position:absolute;left:6px;bottom:6px;font-size:14px;font-weight:600;color:#fff;
  padding:3px 8px;border-radius:999px;background:rgba(0,0,0,.55)}
.room-card .rc{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.room-card .rc b{font-size:16px;font-weight:700;color:var(--ink)}
.room-card .rc .ds{font-size:14px;color:var(--sub);line-height:1.45}
.room-card .rc .ft{margin-top:auto;display:flex;align-items:center;gap:10px;font-size:14px;color:var(--sub)}
.room-card .rc .ft .cnt{color:var(--accent);font-weight:600}
.room-card .enter{align-self:center;width:74px;height:40px;border-radius:20px;border:none;flex:none;
  background:var(--primary);color:var(--on-primary);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer}
/* 首页房间专区三卡 */
.room-zone{display:flex;gap:8px}
.rz{flex:1;position:relative;border-radius:16px;overflow:hidden;height:112px;cursor:pointer}
.rz img{width:100%;height:100%;object-fit:cover}
.rz .lb{position:absolute;left:0;right:0;bottom:0;padding:24px 8px 7px;font-size:14px;font-weight:700;color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.72));display:flex;justify-content:space-between;align-items:center}
.rz .lb i{font-style:normal;font-size:14px;font-weight:500;opacity:.92}
/* 相约出发：自己写地址/干什么、待确认细节、邀请分享 */
.out-inp{width:100%;box-sizing:border-box;margin-top:10px;border:1px solid var(--border-default);background:var(--surface-card);border-radius:var(--radius-input);padding:13px 15px;font-size:16px;color:var(--ink);font-family:inherit;outline:none;box-shadow:none}
.out-inp:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px rgba(178,58,46,.08)}
.od-todo{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}
.td-chip{border:1.5px solid var(--gold);background:var(--gold-soft);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer;font-family:inherit}
.td-chip em{font-style:normal;color:var(--accent);margin-left:4px}
.td-chip.ok{background:var(--card);border-color:#BBD8B0;color:#4E7A3A}
.td-chip.ok em{color:#4E7A3A}
.share-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:12px 0}
.sg-tile{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 6px;text-align:center;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}
.sg-tile .ic{width:40px;height:40px;border-radius:12px;margin:0 auto 7px;display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--gold-soft)}
/* 相约出发活动卡 */
.act-card{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;cursor:pointer}
.act-card .cv{height:116px;position:relative}
.act-card .cv img{width:100%;height:100%;object-fit:cover}
.act-card .cv .st{position:absolute;right:10px;top:10px;background:rgba(0,0,0,.55);color:#fff;font-size:14px;
  font-weight:600;padding:4px 10px;border-radius:999px}
.act-card .bd{padding:12px 14px;display:flex;flex-direction:column;gap:7px}
.act-card b{font-size:16px;font-weight:700;color:var(--ink)}
.act-card .meta{display:flex;gap:12px;font-size:14px;color:var(--sub);flex-wrap:wrap}
.act-card .join{display:flex;justify-content:space-between;align-items:center}
.act-card .ppl{display:flex;align-items:center}
.act-card .ppl img{width:26px;height:26px;border-radius:13px;border:2px solid var(--card);object-fit:cover;margin-left:-8px}
.act-card .ppl img:first-child{margin-left:0}
.act-card .ppl span{margin-left:6px;font-size:14px;color:var(--sub)}
.act-join{height:36px;padding:0 16px;border-radius:18px;border:none;background:var(--primary);color:var(--on-primary);
  font-family:inherit;font-size:14px;font-weight:600;cursor:pointer}
/* ============ 活动详情 ============ */
.od-cover{height:190px;position:relative;border-radius:18px;overflow:hidden}
.od-cover img{width:100%;height:100%;object-fit:cover}
.od-cover .st{position:absolute;left:12px;top:12px;background:rgba(0,0,0,.55);color:#fff;font-size:14px;
  font-weight:600;padding:5px 12px;border-radius:999px}
.od-title{font-size:20px;font-weight:800;color:var(--ink);line-height:1.4}
.od-facts{display:flex;flex-direction:column;gap:9px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px}
.od-facts .f{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink)}
.od-facts .f i{width:32px;height:32px;border-radius:12px;background:var(--chip);display:flex;align-items:center;
  justify-content:center;font-style:normal;flex:none}
.od-sched{display:flex;flex-direction:column;gap:0;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px}
.od-sched .s{display:flex;gap:12px;position:relative;padding:0 0 14px 0}
.od-sched .s:last-child{padding-bottom:0}
.od-sched .tm{width:64px;font-size:14px;color:var(--sub);font-weight:600;flex:none;padding-top:2px}
.od-sched .dot{width:10px;height:10px;border-radius:5px;background:var(--primary);flex:none;margin-top:4px;position:relative}
.od-sched .s:not(:last-child) .dot::after{content:'';position:absolute;left:4.5px;top:10px;bottom:-14px;width:1px;background:var(--line)}
.od-sched .tx{font-size:14px;color:var(--ink);line-height:1.5}
.od-sched .tx span{display:block;font-size:14px;color:var(--sub);margin-top:2px}
.od-bar{display:flex;gap:10px;align-items:center}
.od-bar .big-btn{flex:1;min-width:0;width:auto;margin:0;white-space:nowrap}
.od-bar .big-btn[style*="flex:none"]{flex:none;padding:0 24px}
/* ============ 我的活动 ============ */
.mo-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:12px 14px;cursor:pointer}
.mo-row .cv{width:64px;height:64px;border-radius:16px;object-fit:cover;flex:none}
.mo-row .in{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.mo-row .in b{font-size:15px;color:var(--ink);font-weight:700}
.mo-row .in span{font-size:14px;color:var(--sub)}
.mo-badge{font-size:14px;font-weight:700;border-radius:999px;padding:4px 10px;flex:none}
.mo-badge.ok{background:rgba(92,127,114,.16);color:#4E7A67}
.mo-badge.wait{background:rgba(227,178,104,.16);color:#A87B33}
.mo-badge.end{background:var(--chip);color:var(--sub)}
/* ============ 留言区 ============ */
.cm-item{display:flex;gap:10px;align-items:flex-start}
.cm-item img{width:36px;height:36px;border-radius:18px;object-fit:cover;flex:none}
.cm-item .in{flex:1;min-width:0}
.cm-item .in .nm{font-size:14px;color:var(--sub);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cm-item .in .nm b{color:var(--ink);font-weight:600;font-size:14px}
.cm-item .in p{font-size:14px;color:var(--ink);line-height:1.6;margin:3px 0 0}
.cm-item .in .tm{font-size:14px;color:var(--sub);margin-top:3px}
/* 嵌套回复（参考抖音式：缩进挂在原留言下） */
.cm-kids{margin-top:10px;padding-left:2px;display:flex;flex-direction:column;gap:10px}
.cm-item.sub>img{width:27px;height:27px;border-radius:16px}
.cm-item.sub .in p{font-size:14px}
.au-badge{display:inline-block;background:var(--gold);color:#fff;font-size:14px;font-weight:700;border-radius:6px;padding:1px 6px;line-height:1.4}
/* 留言点赞 */
.cm-like{flex:none;border:none;background:none;color:var(--sub);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;font-family:inherit;padding:2px 4px}
.cm-like span{font-size:17px;line-height:1}
.cm-like i{font-style:normal;font-size:14px}
.cm-like.on span{color:var(--red)}
.cm-input{display:flex;gap:8px;align-items:center}
.cm-input input{flex:1;height:44px;border-radius:16px;border:1px solid var(--line);background:var(--card);
  padding:0 14px;font-family:inherit;font-size:14px;color:var(--ink);min-width:0}
.cm-input input::placeholder{color:var(--sub)}
.cm-input button{height:44px;padding:0 18px;border-radius:16px;border:none;background:var(--primary);
  color:var(--on-primary);font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;flex:none}
/* ============ 注册登录 / 实名认证 ============ */
.lg-hero{display:flex;flex-direction:column;align-items:center;gap:10px;padding:26px 0 8px}
.lg-hero .logo{width:82px;height:82px;border-radius:0;object-fit:contain;box-shadow:none;filter:drop-shadow(0 6px 10px rgba(32,40,38,.14))}
.lg-hero b{font-size:20px;color:var(--ink);font-weight:800}
.lg-hero span{font-size:14px;color:var(--sub)}
.lg-field{display:flex;flex-direction:column;gap:7px}
.lg-field label{font-size:14px;color:var(--sub);font-weight:600}
.lg-input{display:flex;gap:10px;align-items:stretch}
.lg-input input{flex:1;height:56px;border-radius:16px;border:1.5px solid var(--line);background:var(--card);
  padding:0 16px;font-family:inherit;font-size:18px;color:var(--ink);min-width:0}
.lg-input input:focus{border-color:var(--primary);outline:none}
.lg-input .code{flex:none;width:118px;height:56px;border-radius:16px;border:none;background:var(--soft);
  color:var(--primary);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}
.lg-check{display:flex;gap:9px;align-items:flex-start;font-size:14px;color:var(--sub);line-height:1.6}
.lg-check .box{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line);flex:none;margin-top:1px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;background:var(--card)}
.lg-check .box.on{background:var(--primary);border-color:var(--primary)}
.rn-steps{display:flex;gap:0;align-items:center;justify-content:center;padding:4px 0 10px}
.rn-steps .st{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--sub);font-weight:600}
.rn-steps .st.on{color:var(--primary)}
.rn-steps .st .n{width:24px;height:24px;border-radius:12px;background:var(--chip);color:var(--sub);
  display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}
.rn-steps .st.on .n{background:var(--primary);color:var(--on-primary)}
.rn-steps .ln{width:34px;height:1.5px;background:var(--line);margin:0 8px}
.rn-face{display:flex;flex-direction:column;align-items:center;gap:12px;background:var(--card);
  border:1px solid var(--line);border-radius:18px;padding:26px 16px}
.rn-face .ring{width:110px;height:110px;border-radius:55px;border:3px dashed var(--primary);
  display:flex;align-items:center;justify-content:center;background:var(--soft)}
.rn-done{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 0}
.rn-done .ok{width:72px;height:72px;border-radius:36px;background:rgba(92,127,114,.16);display:flex;
  align-items:center;justify-content:center}
/* ============ 支付 / 充值 ============ */
.pay-amount{display:flex;flex-direction:column;align-items:center;gap:4px;padding:20px 0 6px}
.pay-amount b{font-size:44px;font-weight:800;color:var(--ink);letter-spacing:-1px}
.pay-amount span{font-size:14px;color:var(--sub)}
.pay-what{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:13px 14px}
.pay-what img{width:40px;height:40px;border-radius:12px;object-fit:cover}
.pay-what .in{flex:1}
.pay-what .in b{font-size:14px;color:var(--ink);font-weight:600;display:block}
.pay-what .in span{font-size:14px;color:var(--sub)}
.pay-mid{display:flex;flex-direction:column;gap:10px}
.pay-mid .m{display:flex;align-items:center;gap:12px;background:var(--card);border:1.5px solid var(--line);
  border-radius:16px;padding:14px;cursor:pointer}
.pay-mid .m.on{border-color:var(--primary);background:var(--soft)}
.pay-mid .m .ic{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:19px;flex:none}
.pay-mid .m .in{flex:1}
.pay-mid .m .in b{font-size:15px;color:var(--ink);font-weight:600;display:block}
.pay-mid .m .in span{font-size:14px;color:var(--sub)}
.pay-mid .m .rad{width:22px;height:22px;border-radius:11px;border:2px solid var(--line);flex:none}
.pay-mid .m.on .rad{border-color:var(--primary);background:var(--primary);box-shadow:inset 0 0 0 4px var(--card)}
.rc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rc-tile{display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--card);
  border:1.5px solid var(--line);border-radius:16px;padding:16px 6px;cursor:pointer}
.rc-tile.on{border-color:var(--primary);background:var(--soft)}
.rc-tile b{font-size:20px;color:var(--ink);font-weight:800}
.rc-tile span{font-size:14px;color:var(--sub)}
/* ============ 转发分享 ============ */
.sh-friends{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 8px}
.sh-f{display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer}
.sh-f .av{width:56px;height:56px;border-radius:28px;object-fit:cover;position:relative;border:2.5px solid transparent}
.sh-f.on .av{border-color:var(--primary)}
.sh-f .av .ck{position:absolute;right:-3px;top:-3px;width:20px;height:20px;border-radius:12px;
  background:var(--primary);display:none;align-items:center;justify-content:center}
.sh-f.on .av .ck{display:flex}
.sh-f span{font-size:14px;color:var(--ink)}
.sh-ch{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 8px}
.sh-c{display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer}
.sh-c .ic{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px}
.sh-c span{font-size:14px;color:var(--ink)}
/* ============ 素材上传 ============ */
.up-srcs{display:flex;flex-direction:column;gap:10px}
.up-src{display:flex;align-items:center;gap:14px;background:var(--card);border:1.5px solid var(--line);
  border-radius:18px;padding:15px;cursor:pointer;transition:all .2s}
.up-src:active{transform:scale(.98)}
.up-src .ic{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:24px;flex:none}
.up-src .in{flex:1;min-width:0}
.up-src .in b{font-size:17px;color:var(--ink);font-weight:700;display:block}
.up-src .in span{font-size:14px;color:var(--sub);display:block;margin-top:3px;line-height:1.4}
.up-src .arr{color:var(--sub);flex:none;font-size:18px}
.up-prog{display:flex;flex-direction:column;gap:13px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px}
.up-row{display:flex;gap:12px;align-items:center}
.up-row .tt{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--ink);font-weight:600}
.up-row .tt em{font-style:normal;color:var(--sub);font-weight:400}
.up-row .tt .ok{color:#4E7A67;font-weight:700;animation:popIn .4s cubic-bezier(.34,1.56,.64,1)}
.up-row .bar{height:12px;border-radius:6px;background:var(--chip);overflow:hidden}
.up-row .bar i{display:block;height:100%;border-radius:6px;width:0;transition:width .45s cubic-bezier(.25,.8,.35,1);background:linear-gradient(90deg,#E8A87C,var(--primary) 40%,#E8A87C 80%,var(--primary));background-size:200% 100%;animation:barFlow 1.3s linear infinite}
.up-row.done .bar i{background:#4E7A67;animation:none;box-shadow:0 0 8px rgba(78,122,103,.35)}
.up-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.up-cell{position:relative;border-radius:16px;overflow:hidden;border:2px solid var(--line);cursor:pointer;aspect-ratio:1}
.up-cell img{width:100%;height:100%;object-fit:cover;display:block}
.up-cell .vd{position:absolute;right:6px;bottom:6px;font-size:14px;color:#fff;background:rgba(0,0,0,.55);
  padding:2px 7px;border-radius:8px}
.up-cell .del{position:absolute;left:5px;top:5px;width:23px;height:23px;border-radius:12px;border:none;cursor:pointer;
  background:rgba(0,0,0,.5);color:#fff;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center}
.up-cell .up-date{position:absolute;left:6px;bottom:6px;font-size:14px;color:#fff;background:rgba(0,0,0,.55);
  padding:2px 7px;border-radius:8px;pointer-events:none}
.up-cell.on{border-color:var(--accent);animation:popSel .32s cubic-bezier(.34,1.56,.64,1)}
.up-add:active{transform:scale(.96)}
.up-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;aspect-ratio:1;
  border-radius:16px;border:2px dashed var(--line);background:var(--card);cursor:pointer;color:var(--sub);
  font-size:14px;font-weight:600;font-family:inherit}
.up-sw{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px;cursor:pointer}
.up-sw .in{flex:1}
.up-sw .in b{font-size:15px;color:var(--ink);font-weight:600;display:block}
.up-sw .in span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.up-sw .knob{width:48px;height:28px;border-radius:16px;background:var(--chip);position:relative;flex:none;transition:background .2s}
.up-sw .knob::after{content:'';position:absolute;left:3px;top:3px;width:22px;height:22px;border-radius:11px;background:#fff;transition:left .2s}
.up-sw.on .knob{background:var(--primary)}
.up-sw.on .knob::after{left:23px}
/* ===== 首页创作：静音制作过程卡（上传后不再空白） ===== */
.v16-home-flow{display:none;background:linear-gradient(145deg,#FFFDF8,#FFF6E9);border:1.5px solid var(--line);border-radius:20px;padding:15px 16px;box-shadow:0 8px 24px rgba(123,78,34,.10);overflow:hidden}
.v16-home-flow.show{display:block;animation:v16FlowIn .24s ease-out}
@keyframes v16FlowIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.v16-home-flow .hf-head{display:flex;align-items:center;gap:11px}
.v16-home-flow .hf-ico{width:38px;height:38px;border-radius:13px;background:#F2E4CA;display:grid;place-items:center;flex:none;color:#A66C28;font-weight:900;font-size:18px}
.v16-home-flow .hf-tx{flex:1;min-width:0}
.v16-home-flow .hf-tx b{display:block;font-size:16px;color:var(--ink);font-weight:800}
.v16-home-flow .hf-tx span{display:block;margin-top:2px;font-size:14px;line-height:1.45;color:var(--sub)}
.v16-home-flow .hf-st{font-size:14px;font-weight:700;color:#A66C28;white-space:nowrap}
.v16-home-flow .hf-bar{height:7px;margin-top:13px;border-radius:99px;overflow:hidden;background:#EFE7DA}
.v16-home-flow .hf-bar i{display:block;width:12%;height:100%;border-radius:99px;background:linear-gradient(90deg,#D19B43,#C36E38);transition:width .35s ease}
.v16-home-flow .hf-steps{display:flex;gap:7px;margin-top:12px;flex-wrap:wrap}
.v16-home-flow .hf-step{font-size:14px;line-height:1;border-radius:999px;padding:7px 10px;background:#F7EFE2;color:#8B7156}
.v16-home-flow .hf-step.on{background:#F1DFC0;color:#88591F;font-weight:700}
.v16-home-flow .hf-step.done{background:#EAF3E8;color:#4D7957;font-weight:700}
.v16-home-flow .hf-actions{display:flex;gap:8px;margin-top:12px}
.v16-home-flow .hf-actions button{flex:1;height:40px;border:0;border-radius:12px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;background:#F3E8D7;color:#704E2E}
.v16-home-flow .hf-actions button.pri{background:var(--primary);color:var(--on-primary)}
.v16-home-flow.error{border-color:#E6D7CF;background:#FFFDFC}
.v16-home-flow.error .hf-ico{background:#F4ECE8;color:#8E6E62}
.v16-home-flow.done .hf-ico{background:#EAF3E8;color:#4D7957}
.v16-home-flow .hf-result{display:none;margin-top:12px;border-radius:15px;overflow:hidden;background:#EFE7DA}
.v16-home-flow.done .hf-result{display:block}
.v16-home-flow .hf-result img,.v16-home-flow .hf-result video{width:100%;max-height:250px;object-fit:cover;display:block}
.v16-home-flow .hf-result{cursor:zoom-in}
.v16-home-flow.compact-done .hf-bar,.v16-home-flow.compact-done .hf-steps,.v16-home-flow.compact-done .hf-result{display:none!important}
.v16-home-flow.compact-done{padding:12px 14px}
.v16-home-flow.compact-done .hf-actions{margin-top:8px}
.v16-work-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:10px}
.v16-work-actions button{height:40px;border:0;border-radius:12px;font-family:inherit;font-size:14px;font-weight:700;cursor:pointer;background:#F3E8D7;color:#704E2E}
.v16-work-actions button.primary{background:var(--primary);color:var(--on-primary)}
.v16-work-actions button.share{background:#EAF3E8;color:#41684A}
.v16-work-saved{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:9px;font-size:14px;color:#5E7866}
.hl-result-card .v16-work-actions{padding:0 10px 10px}
.hl-result-card .v16-work-saved{padding-bottom:10px;margin-top:0}
.v16-work-modal{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(10,12,11,.92);display:flex;align-items:center;justify-content:center;padding:18px}
.v16-work-modal .wm-card{width:min(94vw,520px);max-height:94dvh;overflow:auto;background:#FFFDF9;border-radius:22px;padding:12px;box-shadow:0 20px 70px rgba(0,0,0,.38)}
.v16-work-modal .wm-media{background:#111;border-radius:16px;overflow:hidden;display:grid;place-items:center;min-height:220px}
.v16-work-modal .wm-media img,.v16-work-modal .wm-media video{max-width:100%;max-height:70dvh;display:block;object-fit:contain}
.v16-work-modal .wm-title{font-size:17px;font-weight:800;color:#2B2018;padding:12px 4px 4px}
.v16-work-modal .wm-sub{font-size:14px;color:#7A6A58;padding:0 4px 6px}
.v16-work-modal .wm-close{position:fixed;right:24px;top:24px;width:42px;height:42px;border:0;border-radius:50%;background:rgba(255,255,255,.92);font-size:26px;line-height:1;color:#222;z-index:2}

/* ============ 打字页 ============ */
.ty-chat{display:flex;flex-direction:column;gap:10px;min-height:24px}
.ty-chat .say-user{font-size:16px;color:var(--ink);background:var(--soft);border-radius:16px 16px 4px 16px;
  padding:11px 14px;align-self:flex-end;max-width:86%;line-height:1.6}
.ty-chat .say-hg{font-size:16px;color:var(--ink);background:var(--card);border:1px solid var(--line);
  border-radius:16px 16px 16px 4px;padding:11px 14px;align-self:flex-start;max-width:86%;line-height:1.6}
.ty-chat .say-hg em{font-style:normal;color:var(--accent);font-weight:700}
/* 任务进度卡 / 结果卡：结果走视觉通道，不混对话气泡 */
.ty-card{border:1px solid var(--line);border-radius:16px;background:var(--card);padding:14px;max-width:94%;box-shadow:0 3px 10px rgba(142,35,24,.06)}
.ty-card .tc-head{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--ink)}
.ty-card .tc-head .ic{width:30px;height:30px;border-radius:12px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:16px;flex:none}
.ty-card .tc-head .st{margin-left:auto;font-size:14px;font-weight:600;color:var(--accent);white-space:nowrap}
.ty-steps{margin-top:10px;display:flex;flex-direction:column;gap:7px}
.ty-step{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--sub)}
.ty-step .dot{width:18px;height:18px;border-radius:9px;border:2px solid var(--line);flex:none;display:flex;align-items:center;justify-content:center}
.ty-step.done{color:var(--ink)}
.ty-step.done .dot{background:var(--accent);border-color:var(--accent)}
.ty-step.done .dot::after{content:'✓';font-size:14px;color:#fff;font-weight:700}
.ty-step.doing{color:var(--ink);font-weight:600}
.ty-step.doing .dot{border-color:var(--accent)}
.ty-step.doing .dot::after{content:'';width:8px;height:8px;border-radius:4px;background:var(--accent);animation:tyblink 1s infinite}
@keyframes tyblink{50%{opacity:.25}}
.ty-card .tc-foot{margin-top:10px;font-size:14px;color:var(--sub)}
.ty-rimg{width:100%;border-radius:12px;margin-top:10px;aspect-ratio:16/9;object-fit:cover;display:block}
.ty-rbtns{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
.ty-rbtns button{flex:1;min-width:70px;border:none;border-radius:12px;padding:10px 6px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;background:var(--soft);color:var(--ink)}
.ty-rbtns button.pri{background:var(--primary);color:var(--on-primary)}
/* 稍后汇总胶囊 */
.ty-digest{align-self:flex-start;display:none;font-size:14px;font-weight:700;color:var(--accent);background:var(--soft);border:1px dashed var(--accent);border-radius:16px;padding:8px 12px;cursor:pointer}
/* 通话中的轻提示：不插卡、不播报，一句话带过（样式统一在通话页 .hl-light 定义处） */
.ty-input{width:100%;min-height:118px;border-radius:18px;border:1.5px solid var(--line);background:var(--card);
  padding:15px 16px;font-family:inherit;font-size:20px;line-height:1.6;color:var(--ink);resize:none;box-sizing:border-box}
.ty-input:focus{border-color:var(--primary);outline:none}
.ty-input::placeholder{color:var(--sub)}
.ty-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ty-q{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:13px 12px;cursor:pointer;font-size:14px;font-weight:600;color:var(--ink);font-family:inherit;text-align:left}
.ty-q:active{transform:scale(.97)}
.ty-q i{font-style:normal;font-size:17px;flex:none}
.ty-kb{display:flex;gap:10px;align-items:center}
.ty-kb .mic{width:56px;height:56px;border-radius:28px;border:none;background:var(--soft);flex:none;cursor:pointer;
  display:flex;align-items:center;justify-content:center}
.ty-kb .mic:active{transform:scale(.94)}
/* ============ 家人管理 ============ */
.fam-add{display:flex;flex-direction:column;gap:10px}
.fam-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:13px 14px}
.fam-card img{width:54px;height:54px;border-radius:27px;object-fit:cover;flex:none}
.fam-card .in{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.fam-card .in .nm{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;color:var(--ink)}
.fam-card .in .nm i{font-style:normal;font-size:14px;font-weight:700;background:rgba(92,127,114,.16);
  color:#4E7A67;border-radius:999px;padding:2px 9px;flex:none}
.fam-card .in .ds{font-size:14px;color:var(--sub);line-height:1.45}
.fam-card .ops{display:flex;flex-direction:column;gap:6px;flex:none}
.fam-card .ops button{height:32px;padding:0 13px;border-radius:16px;border:none;cursor:pointer;
  font-family:inherit;font-size:14px;font-weight:600}
.fam-card .ops .call{background:var(--soft);color:var(--primary)}
.fam-card .ops .kick{background:var(--chip);color:var(--sub)}
.fam-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:13px 14px;cursor:pointer}
.fam-row .in{flex:1;min-width:0}
.fam-row b{font-size:15px;color:var(--ink);font-weight:600;display:block}
.fam-row span{font-size:14px;color:var(--sub);display:block;margin-top:2px}
.fam-req{display:flex;align-items:center;gap:12px;background:var(--soft);border:1.5px dashed var(--primary);
  border-radius:16px;padding:12px 14px}
.fam-req img{width:44px;height:44px;border-radius:22px;object-fit:cover;flex:none}
.fam-req .in{flex:1;min-width:0}
.fam-req b{font-size:14px;color:var(--ink);font-weight:700}
.fam-req span{font-size:14px;color:var(--sub);display:block;margin-top:2px;line-height:1.4}
.fam-req .btns{display:flex;gap:7px;flex:none}
.fam-req .btns button{height:34px;padding:0 14px;border-radius:17px;border:none;cursor:pointer;
  font-family:inherit;font-size:14px;font-weight:700}
.fam-req .btns .ok{background:var(--primary);color:var(--on-primary)}
.fam-req .btns .no{background:var(--card);color:var(--sub)}
/* ============ <span class="cmp-name">华哥</span>的记忆 ============ */
.mem-filter{display:flex;gap:8px}
.mem-grid{display:flex;flex-direction:column;gap:10px}
.mem-card{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:13px 14px;align-items:flex-start}
.mem-card .ic{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;
  justify-content:center;font-size:20px;flex:none}
.mem-card .in{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.mem-card .in b{font-size:15px;color:var(--ink);font-weight:700;line-height:1.5}
.mem-card .in span{font-size:14px;color:var(--sub);line-height:1.45}
.mem-card .ops{display:flex;gap:6px;flex:none}
.mem-card .ops button{width:32px;height:32px;border-radius:12px;border:none;cursor:pointer;
  background:var(--chip);color:var(--sub);font-size:14px;display:flex;align-items:center;justify-content:center}
.mem-card .ops button:active{transform:scale(.92)}
.mem-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:22px 0;
  color:var(--sub);font-size:14px}
/* ============ 帮助中心 ============ */
.help-vids{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.hv{position:relative;border-radius:16px;overflow:hidden;cursor:pointer;border:1px solid var(--line)}
.hv img{width:100%;height:88px;object-fit:cover;display:block}
.hv .pn{position:absolute;left:50%;top:38px;transform:translate(-50%,-50%);width:34px;height:34px;
  border-radius:17px;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center}
.hv b{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--ink);
  padding:8px 10px;background:var(--card)}
.hv b i{font-style:normal;font-size:14px;color:var(--sub);font-weight:400;flex:none}
.hq{display:flex;flex-direction:column;gap:8px}
.hq .qa{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px 14px;
  display:flex;flex-direction:column;gap:5px;cursor:pointer}
.hq .qa:active{transform:scale(.99)}
.hq .qa b{font-size:14px;color:var(--ink);font-weight:700;line-height:1.5}
.hq .qa span{font-size:14px;color:var(--sub);line-height:1.6}
.hq .qa span em{font-style:normal;color:var(--accent);font-weight:600}
.help-contact{display:flex;gap:10px}
.help-contact>div{flex:1;background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:14px 10px;display:flex;flex-direction:column;align-items:center;gap:7px;cursor:pointer;text-align:center}
.help-contact .ic{width:46px;height:46px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:22px}
.help-contact b{font-size:14px;color:var(--ink);font-weight:700}
.help-contact span{font-size:14px;color:var(--sub);line-height:1.4}
/* ============ 消息通知（领队收报名） ============ */
.bell{position:relative;width:42px;height:42px;border-radius:50%;background:var(--card);
  border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;
  cursor:pointer;flex:none;color:var(--ink)}
.bell:active{transform:scale(.94)}
.bell .dot{position:absolute;top:-3px;right:-3px;min-width:19px;height:19px;border-radius:999px;
  background:var(--state-danger);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;
  justify-content:center;padding:0 5px;box-shadow:0 0 0 2.5px var(--bg)}
.msg-card{display:flex;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px;align-items:flex-start;cursor:pointer}
.msg-card.unread{border-color:var(--primary);background:var(--soft)}
.msg-card:active{transform:scale(.99)}
.msg-card img.av{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none}
.msg-card .in{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.msg-card .nm{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--ink);font-weight:700}
.msg-card .nm .t{font-size:14px;color:var(--sub);font-weight:400;margin-left:auto;flex:none}
.msg-card p{font-size:14px;color:var(--sub);line-height:1.55}
.msg-card p b{color:var(--primary)}
.msg-card .ops{display:flex;gap:8px;margin-top:2px;flex-wrap:wrap}
.msg-card .ops .fchip{border-color:var(--primary);color:var(--primary)}
.msg-card .ops .fchip.gray{border-color:var(--line);color:var(--sub)}
.new-tag{font-size:14px;font-weight:700;color:#fff;background:var(--primary);border-radius:999px;
  padding:2px 7px;flex:none}
#push-banner{position:absolute;top:38px;left:10px;right:10px;z-index:99;display:none;
  align-items:center;gap:10px;background:rgba(32,40,38,.95);color:#F1EDE5;border-radius:16px;
  padding:10px 12px;cursor:pointer;box-shadow:0 10px 28px rgba(0,0,0,.3);font-size:14px;line-height:1.5}
#push-banner.show{display:flex;animation:pbIn .3s ease}
@keyframes pbIn{from{transform:translateY(-14px);opacity:0}to{transform:none;opacity:1}}
#push-banner img{width:34px;height:34px;border-radius:50%;object-fit:cover;flex:none}
#push-banner b{color:#E3B268}
#push-banner .arr{margin-left:auto;flex:none;color:#B9C4BE}
/* ============ 游戏真全屏层：不再保留应用级顶部栏，退出悬浮在游戏左上角 ============ */
#game-layer{position:fixed;inset:0;width:100vw;height:100dvh;z-index:var(--z-overlay);display:none;background:#000;overflow:hidden;
  padding:0;margin:0;overscroll-behavior:none;touch-action:manipulation}
#game-layer.show{display:block}
#game-layer .gl-exit{position:absolute;z-index:var(--z-overlay-control);left:max(10px,env(safe-area-inset-left,0px));top:max(10px,env(safe-area-inset-top,0px));
  min-height:40px;border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:8px 14px 8px 11px;font-family:inherit;
  font-size:14px;font-weight:800;color:#fff;background:rgba(15,18,17,.62);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:0 5px 18px rgba(0,0,0,.22);cursor:pointer;display:flex;align-items:center;gap:5px}
#game-layer .gl-exit:active{transform:scale(.94)}
html.game-open,body.game-open{overflow:hidden!important;overscroll-behavior:none!important}
/* ============ 我的页：时光点余额横幅 ============ */
.wallet{display:flex;align-items:center;gap:12px;padding:16px;border-radius:18px;cursor:pointer;
  background:linear-gradient(135deg,rgba(227,178,104,.16),rgba(196,112,79,.10));border:1px solid rgba(227,178,104,.35)}
.wallet .w-ic{width:44px;height:44px;border-radius:16px;flex:none;display:flex;align-items:center;justify-content:center;
  background:rgba(227,178,104,.22);font-size:22px}
.wallet .w-in{flex:1;min-width:0}
.wallet .w-in b{display:block;font-size:15px;color:var(--ink)}
.wallet .w-in b i{font-style:normal;color:#B08D57;font-size:20px;font-weight:800}
.wallet .w-in span{font-size:14px;color:var(--sub)}
.wallet .w-ops{display:flex;gap:8px;flex:none}
.wallet .w-ops button{border:1px solid rgba(176,141,87,.45);background:var(--card);color:#9A7B45;
  border-radius:999px;font-size:14px;font-weight:700;padding:7px 13px;cursor:pointer;font-family:inherit}
.wallet .w-ops button.pri{background:#B08D57;border-color:#B08D57;color:#fff}
.wallet .w-ops button:active{transform:scale(.94)}
.pgroup{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}
.pgroup .sec-head{margin:0 2px}
.pgroup .sec-head b{font-size:14px;color:var(--ink)}
.pgroup .sec-head span{font-size:14px}
#game-layer iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000;display:block}
/* ============ 时光点 / 会员 / 兑换 ============ */
.ex-list{display:flex;flex-direction:column;gap:10px}
.ex-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px;cursor:pointer}
.ex-card:active{transform:scale(.99)}
.ex-card .ic{width:46px;height:46px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:22px;flex:none}
.ex-card .in{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.ex-card .in b{font-size:14px;color:var(--ink);font-weight:700}
.ex-card .in span{font-size:14px;color:var(--sub)}
.ex-card .pr{display:flex;flex-direction:column;align-items:flex-end;flex:none}
.ex-card .pr b{font-size:18px;font-weight:800;color:var(--primary)}
.ex-card .pr span{font-size:14px;color:var(--sub)}
/* ===== 时光会员（红金尊享版） ===== */
.mem-top{position:relative;overflow:hidden;border-radius:24px;margin:6px 16px 18px;
  padding:22px 18px 18px;background:linear-gradient(160deg,var(--brand-accent-strong) 0%,#8F2A20 55%,#6E1F17 100%);
  box-shadow:0 14px 30px -14px color-mix(in srgb,var(--brand-accent) 55%,transparent)}
.mem-top::before{content:'';position:absolute;top:-46px;right:-36px;width:180px;height:180px;border-radius:50%;
  background:radial-gradient(circle,rgba(240,200,120,.35),transparent 65%)}
.mem-top::after{content:'';position:absolute;bottom:-60px;left:-40px;width:150px;height:150px;border-radius:50%;
  background:radial-gradient(circle,rgba(240,200,120,.18),transparent 60%)}
.mem-crown{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
.mem-crown .ci{width:46px;height:46px;border-radius:50%;background:linear-gradient(135deg,#F6DCA6,#D9A84E);
  display:flex;align-items:center;justify-content:center;font-size:23px;flex:none;box-shadow:0 4px 10px rgba(0,0,0,.25)}
.mem-crown b{display:block;font-size:22px;color:#F6DCA6;font-weight:900;letter-spacing:2px}
.mem-crown span{display:block;font-size:14px;color:rgba(246,220,166,.75);margin-top:2px}
.mem-tiers2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px;position:relative;z-index:1}
.mt2{position:relative;background:rgba(255,251,243,.12);border:1.5px solid rgba(246,220,166,.4);
  border-radius:16px;padding:16px 12px 13px;cursor:pointer;text-align:center;transition:all .2s}
.mt2.on{background:#FBF5EA;border-color:#F0C878;box-shadow:0 6px 16px rgba(0,0,0,.22)}
.mt2 .tag{position:absolute;top:-9px;left:50%;transform:translateX(-50%);white-space:nowrap;
  background:linear-gradient(135deg,#F6DCA6,#D9A84E);color:#6E1F17;font-size:14px;font-weight:800;border-radius:999px;padding:2px 10px}
.mt2>b{display:block;font-size:16px;color:#F6DCA6;font-weight:800;letter-spacing:1px}
.mt2.on>b{color:#8F2A20}
.mt2 .num{display:block;font-size:26px;font-weight:900;color:#F6DCA6;margin-top:6px;line-height:1}
.mt2.on .num{color:var(--brand-accent-strong)}
.mt2 .num i{font-style:normal;font-size:14px;font-weight:600}
.mt2>span{display:block;font-size:14px;color:rgba(246,220,166,.7);margin-top:6px;line-height:1.5}
.mt2.on>span{color:#9A7B4F}
.mem-cta{margin-top:16px;position:relative;z-index:1;width:100%;height:52px;border:none;border-radius:999px;
  background:linear-gradient(135deg,#F6DCA6,#E3B268);color:#6E1F17;font-size:17px;font-weight:800;cursor:pointer;
  box-shadow:0 8px 18px -6px rgba(0,0,0,.35)}
.mem-cta:active{transform:scale(.98)}
.mem-note{margin-top:10px;text-align:center;font-size:14px;color:rgba(246,220,166,.65);position:relative;z-index:1}
.mem-perks{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mem-perks .mem-perk{flex-direction:column;align-items:flex-start;gap:8px;padding:14px 12px}
.mem-perks .mem-perk .in span{font-size:14px}
.mem-perk{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:16px;padding:14px}
.mem-perk .ic{width:44px;height:44px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:21px;flex:none}
.mem-perk .in{flex:1;display:flex;flex-direction:column;gap:3px}
.mem-perk .in b{font-size:14px;color:var(--ink);font-weight:700}
.mem-perk .in span{font-size:14px;color:var(--sub);line-height:1.5}
/* ============ 我的虚拟人 ============ */
.av-zone{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.av-card{position:relative;border-radius:16px;overflow:hidden;cursor:pointer;border:1px solid var(--line);background:var(--card)}
.av-card img{width:100%;height:104px;object-fit:cover;display:block}
.av-card .lb{padding:8px 9px;display:flex;flex-direction:column;gap:2px}
.av-card .lb b{font-size:14px;color:var(--ink);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av-card .lb i{font-style:normal;font-size:14px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av-card .st{position:absolute;top:7px;left:7px;font-size:14px;font-weight:700;color:#fff;
  background:rgba(32,40,38,.72);border-radius:999px;padding:2px 8px}
.av-add{border:2px dashed var(--line);background:transparent;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:8px;min-height:146px}
.av-add .plus{width:44px;height:44px;border-radius:50%;background:rgba(196,112,79,.12);
  display:flex;align-items:center;justify-content:center;color:var(--primary)}
.av-add b{font-size:14px;color:var(--ink);font-weight:700}
.av-add span{font-size:14px;color:var(--sub)}
.av-face{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .av-face-preview{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px 12px}
  .av-face-preview img{width:64px;height:64px;border-radius:12px;object-fit:cover;border:2px solid var(--primary)}
  .av-face-preview .tx{flex:1;min-width:0}
  .av-face-preview .tx b{display:block;font-size:14px;color:#2a7a3b}
  .av-face-preview .tx span{display:block;font-size:14px;color:var(--sub);margin-top:2px}
  .av-face-preview .tx em{display:inline-block;margin-top:6px;font-style:normal;font-size:14px;color:var(--primary);cursor:pointer;text-decoration:underline}
  #av-doing-video{width:min(260px,70vw);height:auto;border-radius:16px;object-fit:cover;box-shadow:0 8px 24px rgba(0,0,0,.18)}
  .av-camera-box{position:fixed;inset:0;z-index:var(--z-overlay);background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center}
  .av-camera-box video{width:100%;height:100%;object-fit:cover}
  .av-camera-box .bar{position:absolute;left:0;right:0;bottom:max(24px,env(safe-area-inset-bottom));display:flex;justify-content:center;gap:28px;padding:14px 0}
  .av-camera-box .bar button{border:0;border-radius:999px;font-size:16px;font-weight:700;padding:14px 30px;cursor:pointer}
  .av-camera-box .bar .c{background:rgba(255,255,255,.85);color:#333}
  .av-camera-box .bar .s{background:#fff;color:#111;box-shadow:0 4px 14px rgba(0,0,0,.35)}
  .av-camera-box .av-cam-guide{position:absolute;inset:0;pointer-events:none}
  .av-camera-box .face-ring{position:absolute;left:50%;top:42%;width:80%;height:68%;transform:translate(-50%,-50%);border:3px dashed rgba(255,255,255,.92);border-radius:50%;display:flex;align-items:center;justify-content:center}
  .av-camera-box .face-ring span{font-size:15px;color:rgba(255,255,255,.95);letter-spacing:2px;background:rgba(0,0,0,.25);padding:6px 14px;border-radius:999px}
  .av-camera-box .tip{position:absolute;left:50%;top:14%;transform:translateX(-50%);max-width:86%;text-align:center;font-size:15px;color:#fff;background:rgba(0,0,0,.45);padding:9px 16px;border-radius:999px;line-height:1.4}
  .av-camera-box .av-cam-shot{position:absolute;inset:0;background:#000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}
  .av-camera-box .av-cam-shot img{width:100%;height:78%;object-fit:contain}
  .av-camera-box .av-cam-shot .ops{display:flex;gap:26px}
  .av-camera-box .av-cam-shot .ops button{border:0;border-radius:999px;font-size:16px;font-weight:700;padding:14px 34px;cursor:pointer}
  .av-camera-box .av-cam-shot .ops .c{background:rgba(255,255,255,.85);color:#333}
  .av-camera-box .av-cam-shot .ops .s{background:#fff;color:#111}
.av-face>div{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:14px 10px;
  display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer;text-align:center}
.av-face>div.on{border-color:var(--primary);background:var(--soft)}
.av-face .ic{font-size:30px}
.av-face b{font-size:14px;color:var(--ink);font-weight:700}
.av-face span{font-size:14px;color:var(--sub);line-height:1.4}
.av-voice{display:flex;flex-direction:column;gap:10px}
.av-voice .m{display:flex;align-items:center;gap:12px;background:var(--card);border:2px solid var(--line);
  border-radius:16px;padding:14px;cursor:pointer}
.av-voice .m.on{border-color:var(--primary);background:var(--soft)}
.av-voice .m .ic{width:44px;height:44px;border-radius:16px;background:rgba(227,178,104,.16);
  display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.av-voice .m .in{flex:1;display:flex;flex-direction:column;gap:3px}
.av-voice .m .in b{font-size:14px;color:var(--ink);font-weight:700}
.av-voice .m .in span{font-size:14px;color:var(--sub)}
.av-voice .m .aud{flex:none;font-size:14px;font-weight:700;color:var(--primary);
  border:1.5px solid var(--primary);border-radius:999px;padding:5px 10px}
.av-doing{display:none;flex-direction:column;align-items:center;gap:14px;background:var(--soft);
  border:1.5px dashed var(--primary);border-radius:18px;padding:26px 18px}
.av-doing .spin{width:54px;height:54px;border-radius:50%;border:4px solid color-mix(in srgb,var(--brand-accent) 18%,transparent);
  border-top-color:var(--primary);animation:avSpin .9s linear infinite}
@keyframes avSpin{to{transform:rotate(360deg)}}
.av-doing b{font-size:15px;color:var(--ink);font-weight:700}
.av-doing span{font-size:14px;color:var(--sub)}
.av-done{display:none;flex-direction:column;align-items:center;gap:12px;background:var(--card);
  border:1px solid var(--line);border-radius:18px;padding:22px 18px;text-align:center}
.av-done img{width:110px;height:110px;border-radius:55px;object-fit:cover;border:3px solid var(--accent)}
.av-done b{font-size:19px;color:var(--ink);font-weight:800}
.av-done .tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.av-done .tags span{font-size:14px;font-weight:700;color:var(--primary);background:rgba(196,112,79,.12);
  border-radius:999px;padding:4px 10px}
.av-done .ops{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.av-done .ops .fchip{border-color:var(--primary);color:var(--primary)}
.av-done .ops .fchip.gray{border-color:var(--line);color:var(--sub)}
/* 数字人管理列表 + 删除（上限3个） */
.av-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:10px 12px}
.av-row img{width:52px;height:52px;border-radius:26px;object-fit:cover;flex:none}
.av-row .in{flex:1;min-width:0}
.av-row .in b{font-size:14px;color:var(--ink);font-weight:700;display:block}
.av-row .in span{font-size:14px;color:var(--sub);display:block;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.av-del{flex:none;font-size:14px;font-weight:700;color:var(--sub);border:1.5px solid var(--line);border-radius:999px;padding:6px 13px;cursor:pointer;background:transparent}
.av-del.arm{color:#C0392B;border-color:#C0392B;background:rgba(192,57,43,.08)}
.av-empty{font-size:14px;color:var(--sub);background:var(--soft);border:1.5px dashed var(--line);border-radius:16px;padding:14px;text-align:center}
.av-full{display:none;flex-direction:column;align-items:center;gap:6px;background:rgba(227,178,104,.1);
  border:1.5px dashed rgba(227,178,104,.6);border-radius:16px;padding:18px;text-align:center}
.av-full .ic{font-size:28px}
.av-full b{font-size:14px;color:var(--ink);font-weight:700}
.av-full span{font-size:14px;color:var(--sub);line-height:1.5}
/* ============ 时光商城 ============ */
.mall-entry{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,rgba(227,178,104,.16),rgba(196,112,79,.12));
  border:1px solid rgba(227,178,104,.5);border-radius:16px;padding:12px 14px;cursor:pointer}
.mall-entry .ic{width:42px;height:42px;border-radius:13px;background:rgba(227,178,104,.28);
  display:flex;align-items:center;justify-content:center;font-size:22px;flex:none}
.mall-entry .tx b{font-size:14px;color:var(--ink);font-weight:700;display:block}
.mall-entry .tx span{font-size:14px;color:var(--sub)}
.mall-entry .arr{margin-left:auto;color:var(--accent);font-size:18px;flex:none}
.mall-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.mall-tabs .fchip{white-space:nowrap;flex:none;height:36px;line-height:34px;padding:0 18px}
.mall-tabs::-webkit-scrollbar{display:none}
.mall-hero{border-radius:20px;padding:20px 18px;position:relative;overflow:hidden;
  background:linear-gradient(140deg,#2A3733 0%,#3D4A44 55%,#4E4335 100%);margin-bottom:16px}
.mall-hero::before{content:'';position:absolute;right:-34px;top:-34px;width:130px;height:130px;border-radius:50%;
  background:radial-gradient(circle,rgba(227,178,104,.4),transparent 70%)}
.mall-hero::after{content:'🛍️';position:absolute;right:16px;bottom:10px;font-size:52px;opacity:.2}
.mall-hero h3{margin:0 0 4px;font-size:19px;color:#F5EFE4;letter-spacing:.5px}
.mall-hero p{margin:0 0 14px;font-size:14px;color:#B9C4BE}
.mall-hero .bal{display:inline-flex;align-items:center;gap:8px;background:rgba(227,178,104,.16);
  border:1px solid rgba(227,178,104,.45);border-radius:999px;padding:7px 14px;cursor:pointer}
.mall-hero .bal b{font-size:15px;color:#E3B268;font-weight:800}
.mall-hero .bal span{font-size:14px;color:#B9C4BE}
.mall-hero .bal .go{border:none;border-radius:999px;background:#E3B268;color:#3A2F14;font-weight:800;
  font-size:14px;padding:5px 13px;cursor:pointer;font-family:inherit}
.mall-hero .bal .go:active{transform:scale(.94)}
.mall-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mall-item{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;
  display:flex;flex-direction:column;transition:transform .15s,box-shadow .2s}
.mall-item:active{transform:scale(.98)}
.mall-item .show{height:96px;position:relative;display:flex;align-items:center;justify-content:center;flex:none}
.mall-item .show::before{content:'';position:absolute;width:88px;height:88px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.85),rgba(255,255,255,0) 68%);top:50%;left:50%;
  transform:translate(-50%,-58%)}
.mall-item .show::after{content:'';position:absolute;inset:auto 0 0 0;height:26px;
  background:linear-gradient(to top,rgba(32,40,38,.07),transparent)}
.mall-item .show .emoji{position:relative;font-size:46px;filter:drop-shadow(0 6px 10px rgba(32,40,38,.18));z-index:1}
.mall-item .show .tag{position:absolute;top:8px;left:8px;z-index:2;border-radius:999px;font-size:14px;font-weight:800;
  padding:3px 9px;letter-spacing:.5px}
.mall-item .show .tag.mem{background:linear-gradient(135deg,#E3B268,#C98F3D);color:#3A2F14}
.mall-item .show .tag.hot{background:var(--state-danger);color:#fff}
.mall-item[data-k="hat"] .show{background:linear-gradient(155deg,#FBF1DA,#EFDBA9)}
.mall-item[data-k="dress"] .show{background:linear-gradient(155deg,#E9F1EC,#CFE0D6)}
.mall-item[data-k="gift"] .show{background:linear-gradient(155deg,#FBE9E2,#F4CFBF)}
.mall-item[data-k="enter"] .show{background:linear-gradient(155deg,#F0EAF7,#DCCEF0)}
.mall-item[data-k="stage"] .show{background:linear-gradient(155deg,#FDF2E0,#F6E0BC)}
.mall-item[data-k="game"] .show{background:linear-gradient(155deg,#E8EFF3,#D0DFE8)}
.mall-item .mi-body{padding:11px 12px 12px;display:flex;flex-direction:column;gap:4px;flex:1}
.mall-item .mi-body b{font-size:14px;color:var(--ink);font-weight:700}
.mall-item .mi-body p{font-size:14px;color:var(--sub);line-height:1.45;margin:0 0 6px;flex:1}
.mall-item .foot{display:flex;align-items:center;gap:8px}
.mall-item .price{flex:1;min-width:0;display:flex;align-items:baseline;gap:3px;font-size:14px;color:var(--sub)}
.mall-item .price b{font-size:16px;color:#B08D57;font-weight:800;font-family:Georgia,serif}
.mall-item .price.free b{color:#C98F3D;font-size:14px}
.mall-item .buy{border:none;border-radius:999px;padding:8px 16px;font-size:14px;font-weight:800;cursor:pointer;
  background:var(--primary);color:#F1EDE5;font-family:inherit;flex:none;box-shadow:0 3px 8px rgba(196,112,79,.28)}
.mall-item .buy:active{transform:scale(.94)}
.mall-item .buy.owned{background:var(--chip);color:var(--sub);box-shadow:none}
.mall-item .buy.mem{background:linear-gradient(135deg,#E3B268,#C98F3D);color:#3A2F14;box-shadow:0 3px 8px rgba(201,143,61,.3)}
.mall-own{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:4px 2px}
.mall-own::-webkit-scrollbar{display:none}
.mall-own .oc{flex:none;width:80px;display:flex;flex-direction:column;align-items:center;gap:6px}
.mall-own .oc .e{width:58px;height:58px;border-radius:16px;
  background:linear-gradient(155deg,#FBF1DA,#EFDBA9);
  display:flex;align-items:center;justify-content:center;font-size:28px;box-shadow:inset 0 0 0 1px rgba(176,141,87,.25)}
.mall-own .oc span{font-size:14px;color:var(--ink);font-weight:600;text-align:center;line-height:1.3}
.mall-own .oc button{border:1px solid var(--line);background:var(--card);color:var(--primary);
  border-radius:999px;font-size:14px;font-weight:700;padding:4px 11px;cursor:pointer;font-family:inherit}
/* ============ 个人资料 ============ */
.info-av{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:16px;cursor:pointer}
.info-av img{width:72px;height:72px;border-radius:36px;object-fit:cover;border:3px solid rgba(227,178,104,.6)}
.info-av .tx{flex:1;display:flex;flex-direction:column;gap:3px}
.info-av .tx b{font-size:17px;color:var(--ink);font-weight:800}
.info-av .tx span{font-size:14px;color:var(--sub)}
.info-av .edit{flex:none;color:var(--accent);font-size:15px}
.info-row{display:flex;align-items:center;gap:12px;padding:14px 4px;border-bottom:1px solid var(--line)}
.info-row:last-child{border-bottom:none}
.info-row .k{flex:none;width:76px;font-size:14px;color:var(--ink);font-weight:600}
.info-row .v{flex:1;font-size:14px;color:var(--sub);text-align:right}
.info-row input{flex:1;border:none;background:transparent;font-size:15px;color:var(--ink);text-align:right;
  font-family:inherit;outline:none;width:100%}
.info-row .arr{flex:none;color:var(--line);font-size:16px}
.info-chips{display:flex;gap:8px;flex-wrap:wrap}
.info-chips .fchip.on{border-color:var(--primary);color:var(--primary);background:rgba(196,112,79,.1)}
/* ============ 歌房 / 舞厅 扩展 ============ */
.setlist{background:var(--dark-card);border:1px solid var(--dark-line);border-radius:16px;padding:4px;display:flex;
  flex-direction:column;gap:2px}
.srow{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px}
.srow.on{background:var(--dark-gold)}
.srow .no{width:22px;font-size:14px;font-weight:700;color:var(--dark-sub);text-align:center}
.srow .tt{flex:1;font-size:14px;font-weight:500;color:var(--dark-ink)}
.srow .sg{font-size:14px;color:var(--dark-sub)}
.srow.on .no,.srow.on .tt{color:#141D1B}
.srow.on .tt{font-weight:700}
.srow.on .sg{color:#4A3E28}
.mic-list{display:flex;flex-direction:column;gap:8px}
.mic-row{display:flex;align-items:center;gap:10px;background:var(--dark-card);border:1px solid var(--dark-line);
  border-radius:16px;padding:8px 12px}
.mic-row img{width:36px;height:36px;border-radius:18px;object-fit:cover}
.mic-row .inf{flex:1;display:flex;flex-direction:column;gap:1px}
.mic-row b{font-size:14px;font-weight:600;color:var(--dark-ink)}
.mic-row span{font-size:14px;color:var(--dark-sub)}
.mic-row .pos{font-size:14px;font-weight:700;color:var(--dark-gold)}
/* ============ 邀请朋友 ============ */
.fr-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.fr{display:flex;align-items:center;gap:10px;background:var(--card);border:1.5px solid var(--line);
  border-radius:16px;padding:10px 12px;cursor:pointer;transition:all .2s}
.fr.on{border-color:var(--accent);background:var(--chip)}
.fr img{width:44px;height:44px;border-radius:22px;object-fit:cover}
.fr .inf{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.fr b{font-size:14px;font-weight:600;color:var(--ink)}
.fr span{font-size:14px;color:var(--sub)}
.fr .ck{width:22px;height:22px;border-radius:11px;border:1.5px solid var(--line);flex:none;display:flex;
  align-items:center;justify-content:center;color:#fff}
.fr.on .ck{background:var(--accent);border-color:var(--accent)}
/* ============ 打赏 ============ */
.reward-who{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:12px}
.reward-who img{width:52px;height:52px;border-radius:26px;object-fit:cover;border:2px solid var(--accent)}
.reward-who b{font-size:15px;font-weight:700;color:var(--ink)}
.reward-who span{font-size:14px;color:var(--sub);margin-top:2px}
.gift-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.gift{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:14px 6px 12px;display:flex;
  flex-direction:column;align-items:center;gap:6px;cursor:pointer;transition:all .2s}
.gift.on{border-color:var(--accent);background:var(--chip)}
.gift b{font-size:14px;font-weight:600;color:var(--ink)}
.gift span{font-size:14px;color:var(--sub)}
.gift.on span{color:var(--accent);font-weight:700}
.balance{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--sub);
  padding:0 4px}
.balance b{color:var(--ink)}
/* ============ 建房间 ============ */
.type-row{display:flex;gap:8px}
.tcard{flex:1;border-radius:16px;overflow:hidden;border:2px solid var(--line);cursor:pointer;background:var(--card)}
.tcard.on{border-color:var(--accent)}
.tcard .ph{height:76px}
.tcard .ph img{width:100%;height:100%;object-fit:cover}
.tcard .nm{padding:9px 4px;font-size:14px;font-weight:600;color:var(--ink);text-align:center}
.tcard.on .nm{color:var(--accent)}

#p-detail.immersive .detail-title{position:absolute;left:16px;right:16px;bottom:86px;color:#fff;z-index:5;font-size:17px}
#p-detail.immersive .detail-row{position:absolute;left:16px;right:16px;bottom:14px;z-index:5;margin:0}
/* ============ 设备形态：手机 / 平板 / 电视 ============ */
/* 设备切换器（真机手机上自动隐藏） */
/* —— 平板形态：横屏 1080×810，底部导航变左侧导航栏，网格多列铺开 —— */
body.dev-tablet{background:#101312;padding:0}
body.dev-tablet #app-wrap{width:100vw;height:100vh;height:100dvh;flex:none;transform:none}
body.dev-tablet .phone{border-radius:0;box-shadow:none}
body.dev-tablet .page.active{display:grid;grid-template-columns:112px 1fr;grid-template-rows:46px 1fr auto}
body.dev-tablet .room-actions{grid-column:2}
body.dev-tablet .tabbar{grid-column:1;grid-row:2;flex-direction:column;justify-content:flex-start;
  align-self:start;height:auto;margin:16px 10px 0 16px;padding:12px 6px;gap:6px;border-radius:24px}
body.dev-tablet .tab{flex:none;flex-direction:column;gap:4px;padding:14px 0;font-size:14px;border-radius:16px}
body.dev-tablet .tab.tab-cmp{margin-top:0;justify-content:center;flex-basis:auto}
body.dev-tablet .tab.tab-cmp img{width:40px;height:40px}
body.dev-tablet .scroll{grid-column:1/3;grid-row:2;padding:4px 36px 26px;gap:18px}
body.dev-tablet .page:has(.tabbar[style*="flex"]) .scroll{grid-column:2}
/* <span class="cmp-name">华哥</span>全屏页不参与平板 grid，保持满屏铺满 */
body.dev-tablet #p-huagelive.active{display:block}
body.dev-tablet .grid4{grid-template-columns:repeat(4,1fr)}
body.dev-tablet .waterfall{grid-template-columns:repeat(3,1fr)}
body.dev-tablet .grid-people{grid-template-columns:repeat(3,1fr)}
body.dev-tablet .stage-grid{grid-template-columns:repeat(4,1fr)}
body.dev-tablet .scroll{padding:4px 36px 26px;gap:18px}
/* 平板下多列铺开 */
body.dev-tablet #p-rooms .scroll{display:grid;grid-template-columns:1fr 1fr;column-gap:14px;row-gap:16px;align-content:start}
body.dev-tablet #p-rooms .pagehead,body.dev-tablet #p-rooms .chips,body.dev-tablet #p-rooms .big-btn{grid-column:1/-1}
body.dev-tablet #p-games .game-tiles{grid-template-columns:repeat(4,1fr)}
body.dev-tablet #p-games .game-card .inf{flex-direction:row;align-items:baseline;gap:10px}
body.dev-tablet .fr-grid{grid-template-columns:repeat(3,1fr)}
body.dev-tablet .gift-grid{grid-template-columns:repeat(3,1fr)}
body.dev-tablet .roompage .stage{height:420px}
body.dev-tablet #p-outing .act-card{max-width:640px}
/* 平板窄屏（竖屏）降列，避免网格挤压 */
@media (max-width:900px){
  body.dev-tablet .grid4{grid-template-columns:repeat(3,1fr)}
  body.dev-tablet .stage-grid{grid-template-columns:repeat(3,1fr)}
  body.dev-tablet .fr-grid{grid-template-columns:repeat(2,1fr)}
  body.dev-tablet .gift-grid{grid-template-columns:repeat(2,1fr)}
  body.dev-tablet #p-rooms .scroll{grid-template-columns:1fr}
}

/* —— 桌面形态：PC / Mac 独立于平板，不再把 1920 宽屏误判成电视 —— */
body.dev-desktop{background:#101312;padding:0}
body.dev-desktop #app-wrap{width:100vw;height:100vh;height:100dvh;flex:none;transform:none}
body.dev-desktop .phone{border-radius:0;box-shadow:none}
body.dev-desktop .page.active{display:grid;grid-template-columns:118px 1fr;grid-template-rows:46px 1fr auto}
body.dev-desktop .room-actions{grid-column:2}
body.dev-desktop .tabbar{grid-column:1;grid-row:2;flex-direction:column;justify-content:flex-start;align-self:start;height:auto;margin:16px 10px 0 16px;padding:12px 6px;gap:6px;border-radius:24px;position:static}
body.dev-desktop .tab{flex:none;flex-direction:column;gap:4px;padding:14px 0;font-size:14px;border-radius:16px}
body.dev-desktop .tab.tab-cmp{margin-top:0;justify-content:center;flex-basis:auto}
body.dev-desktop .tab.tab-cmp img{width:40px;height:40px}
body.dev-desktop .scroll{grid-column:1/3;grid-row:2;padding:6px 42px 28px;gap:18px}
body.dev-desktop .page:has(.tabbar[style*="flex"]) .scroll{grid-column:2}
body.dev-desktop #p-huagelive.active{display:block}
body.dev-desktop .grid4{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .waterfall{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .grid-people{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .stage-grid{grid-template-columns:repeat(4,1fr)}
body.dev-desktop #p-rooms .scroll{display:grid;grid-template-columns:1fr 1fr;column-gap:16px;row-gap:18px;align-content:start}
body.dev-desktop #p-rooms .pagehead,body.dev-desktop #p-rooms .chips,body.dev-desktop #p-rooms .big-btn{grid-column:1/-1}
body.dev-desktop #p-games .game-tiles{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .fr-grid{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .gift-grid{grid-template-columns:repeat(4,1fr)}
body.dev-desktop .roompage .stage{height:460px}
body.dev-desktop #p-outing .act-card{max-width:760px}
/* —— 超宽屏：≥1600px 桌面多列网格自动加列铺满，不留大片空白 —— */
@media (min-width:1600px){
  body.dev-desktop .grid4{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .waterfall{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .grid-people{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .stage-grid{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .fr-grid{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .gift-grid{grid-template-columns:repeat(5,1fr)}
  body.dev-desktop .game-tiles{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop #p-rooms .scroll{grid-template-columns:1fr 1fr 1fr}
  body.dev-tablet .grid4{grid-template-columns:repeat(5,1fr)}
  body.dev-tablet .waterfall{grid-template-columns:repeat(4,1fr)}
  body.dev-tablet .grid-people{grid-template-columns:repeat(4,1fr)}
  body.dev-tablet .stage-grid{grid-template-columns:repeat(5,1fr)}
}
@media (min-width:2200px){
  body.dev-desktop .grid4{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .waterfall{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .grid-people{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .stage-grid{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .fr-grid{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .gift-grid{grid-template-columns:repeat(6,1fr)}
  body.dev-desktop .game-tiles{grid-template-columns:repeat(8,1fr)}
  body.dev-desktop #p-rooms .scroll{grid-template-columns:1fr 1fr 1fr 1fr}
}

/* —— 电视形态：1280×720 十英尺大字 UI，遥控器焦点导航 —— */
body.dev-tv{background:#0B0E0D;padding:0}
body.dev-tv #app-wrap{width:1280px;height:720px}
body.dev-tv .phone{border-radius:0;box-shadow:none}
body.dev-tv .wide-btn{display:none}
body.dev-tv .grid4{grid-template-columns:repeat(4,1fr)}
body.dev-tv .waterfall{grid-template-columns:repeat(4,1fr)}
body.dev-tv .grid-people{grid-template-columns:repeat(4,1fr)}
body.dev-tv .stage-grid{grid-template-columns:repeat(4,1fr)}
body.dev-tv .scroll{zoom:1.34;padding:14px 56px 28px;gap:18px}
body.dev-tv .tabbar{zoom:1.3;margin:12px 56px 20px}
/* 电视焦点环：金色高亮，符合遥控器选择习惯 */
body.dev-tv .tv-on{outline:5px solid #C99A45 !important;outline-offset:4px;
  box-shadow:0 0 0 10px rgba(201,154,69,.28) !important;transform:scale(1.03);position:relative;z-index:6}
/* 遥控器方向盘（仅电视形态显示） */
#dpad{position:fixed;right:26px;bottom:26px;z-index:99;display:none;flex-direction:column;align-items:center;gap:6px}
body.dev-tv #dpad{display:flex}
#dpad .row{display:flex;gap:6px}
#dpad button{width:46px;height:46px;border-radius:16px;border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.1);color:#F1EDE5;font-size:15px;cursor:pointer;font-family:inherit}
#dpad button:hover{background:rgba(201,154,69,.35)}
#dpad .ok{background:var(--brand-accent);border-color:transparent;font-weight:700;font-size:14px}
#dpad .bk{width:144px;background:rgba(255,255,255,.08);font-size:14px}
#dpad .hint{color:#9FAAA5;font-size:14px;background:rgba(0,0,0,.5);padding:5px 12px;border-radius:12px}

/* ============ 生成海报（5套模板 · 横竖屏） ============ */
#p-poster .po,#p-poster .po *{box-sizing:border-box}
.po-ori{display:flex;gap:10px}
.po-ori button{flex:1;height:60px;border-radius:16px;border:1.5px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;font-family:inherit;padding:0;transition:all .2s}
.po-ori button .ic{width:24px;height:32px;border:2px solid var(--sub);border-radius:6px;position:relative;flex:none}
.po-ori button .ic::after{content:"";position:absolute;inset:3px;border-radius:3px;background:var(--sub)}
.po-ori button.h .ic{width:36px;height:22px}
.po-ori button .tx{text-align:left}
.po-ori button .tx b{display:block;font-size:15px;color:var(--ink)}
.po-ori button .tx span{font-size:14px;color:var(--sub)}
.po-ori button.on{border-color:var(--accent);background:rgba(196,112,79,.08)}
.po-ori button.on .ic{border-color:var(--accent)}
.po-ori button.on .ic::after{background:var(--accent)}
.po-rail{display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:2px 2px 4px}
.po-rail::-webkit-scrollbar{display:none}
.po-tcard{flex:none;width:118px;cursor:pointer}
.po-tcard .mini{width:118px;height:150px;border-radius:12px;border:2px solid var(--line);overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--soft);transition:all .2s}
.po-tcard.on .mini{border-color:var(--accent);box-shadow:0 6px 16px rgba(196,112,79,.28)}
.po-tcard .mini-clip{width:102px;height:136px;overflow:hidden}
.po-tcard .mini-clip .po{transform:scale(.34);transform-origin:top left}
.po-tcard .nm{font-size:14px;font-weight:700;color:var(--ink);margin-top:7px;text-align:center}
.po-tcard .ds{font-size:14px;color:var(--sub);text-align:center;margin-top:1px}
.po-tcard.on .nm{color:var(--accent)}
.po-stage{display:flex;justify-content:center;padding:4px 0}
#po-box{position:relative;border-radius:12px;overflow:hidden;transition:transform .45s;box-shadow:0 16px 40px rgba(31,38,36,.22)}
#po-holder{position:absolute;top:0;left:0}
/* ===== 通用底部选择弹层 ===== */
#sheet-mask{position:absolute;inset:0;background:rgba(0,0,0,.45);z-index:60;
  visibility:hidden;opacity:0;transition:opacity .25s,visibility .25s}
#sheet-mask.show{visibility:visible;opacity:1}
#sheet{position:absolute;left:0;right:0;bottom:0;background:var(--card);
  border-radius:24px 24px 0 0;padding:18px 20px 34px;max-height:72%;overflow-y:auto;
  transform:translateY(100%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}
#sheet-mask.show #sheet{transform:translateY(0)}
.sh-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.sh-head b{font-size:18px;color:var(--ink)}
.sh-close{width:34px;height:34px;border-radius:17px;background:var(--chip);border:none;
  font-size:14px;color:var(--sub);cursor:pointer;line-height:1}
.sh-sub{font-size:14px;color:var(--sub);margin:14px 0 4px}
.opt-row{display:flex;align-items:center;gap:12px;padding:17px 6px;border-bottom:1px solid var(--line);
  cursor:pointer;font-size:18px;color:var(--ink);font-weight:500}
.opt-row:last-child{border-bottom:none}
.opt-row .ok{margin-left:auto;color:var(--primary);font-weight:700}
.sh-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
/* 统一分享面板 */
.sh-prev{display:flex;align-items:center;gap:12px;background:var(--soft);border:1.5px solid var(--gold);
  border-radius:16px;padding:13px 15px;margin-bottom:16px}
.sh-prev .sp-ic{font-size:32px;flex:none}
.sh-prev b{display:block;font-size:16px;color:var(--ink);font-weight:700;line-height:1.4}
.sh-prev span{display:block;font-size:14px;color:var(--sub);margin-top:3px}
.sh-lbl{font-size:14px;color:var(--sub);font-weight:700;margin:4px 0 10px}
.sh-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 8px;margin-bottom:16px}
.sh-it{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:14px;color:var(--ink);font-weight:600;cursor:pointer;transition:transform .15s}
.sh-it:active{transform:scale(.92)}
.sh-it .ic{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:25px;color:#fff;box-shadow:0 3px 8px rgba(0,0,0,.12)}
.sh-chips .fchip{min-width:56px;text-align:center;justify-content:center}
.hb-add{height:34px;padding:0 16px;border-radius:999px;border:1.5px dashed var(--primary);
  background:transparent;color:var(--primary);font-size:14px;font-weight:600;cursor:pointer}
#hb-input{flex:1;height:48px;border-radius:12px;border:1.5px solid var(--line);
  background:var(--bg);padding:0 14px;font-size:17px;color:var(--ink);outline:none}
#hb-input:focus{border-color:var(--primary)}
/* ===== 用户协议 / 隐私政策 ===== */
.doc-tabs{display:flex;gap:8px;margin:4px 16px 12px}
.doc-tabs .fchip{flex:1;height:42px;font-size:15px;display:flex;align-items:center;justify-content:center}
.doc-sum{margin:0 16px 12px;background:rgba(227,178,104,.12);border:1px solid rgba(227,178,104,.35);border-radius:16px;padding:14px 16px}
.doc-sum b{font-size:15px;color:var(--ink)}
.doc-sum p{font-size:14px;color:var(--sub);line-height:1.7;margin:6px 0 0}
.doc-card{margin:0 16px 16px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:6px 18px 12px}
.doc-card h3{font-size:16px;color:var(--ink);margin:16px 0 6px;font-weight:700}
.doc-card p{font-size:15px;color:var(--sub);line-height:1.75;margin:0 0 8px}
.doc-card .hl{color:var(--accent);font-weight:700;font-style:normal}
.doc-foot{font-size:14px;color:var(--sub);opacity:.7;text-align:center;padding:0 0 6px}
.doc-link{text-align:center;padding:2px 0 10px}
.doc-link button{background:none;border:none;color:var(--sub);font-size:14px;cursor:pointer;text-decoration:underline}

/* ===== 二次审查 · 体验精致化 ===== */
.up-row.in{animation:rowIn .5s cubic-bezier(.22,.9,.34,1) both}
.up-row .th{width:46px;height:46px;border-radius:12px;object-fit:cover;flex:none;border:1px solid var(--line)}
.up-row .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
#up-done{margin-top:2px;padding:10px 14px;border-radius:12px;background:rgba(78,122,103,.12);color:#4E7A67;font-weight:700;font-size:14px;line-height:1.5;animation:rowIn .45s cubic-bezier(.22,.9,.34,1) both}
.up-cell.on::after{content:'\2713';position:absolute;right:6px;top:6px;width:24px;height:24px;border-radius:12px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;border:2px solid #fff;box-sizing:border-box;animation:popIn .38s cubic-bezier(.34,1.56,.64,1)}
@keyframes rowIn{from{transform:translateY(10px);opacity:0}to{transform:none;opacity:1}}
@keyframes popIn{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.25)}100%{transform:scale(1);opacity:1}}
@keyframes popSel{0%{transform:scale(1)}40%{transform:scale(.93)}100%{transform:scale(1)}}
@keyframes pageIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes barFlow{from{background-position:200% 0}to{background-position:-200% 0}}
.gcard:active,.big-btn:active,.enter:active,.opt-row:active{transform:scale(.97)}
.gcard,.big-btn,.enter{transition:transform .15s}


/* ===== 房间大厅改版 ===== */
.rm-sec{display:flex;align-items:baseline;gap:8px;margin:4px 0 2px}
.rm-sec .tag{font-size:14px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--primary),var(--brand-accent));border-radius:8px;padding:3px 9px;flex:none}
.rm-sec b{font-size:16px;font-weight:800;color:var(--ink)}
.rm-sec span{font-size:14px;color:var(--sub)}
.rm-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}
/* 房间大厅：横滑分类 + 竖排四宫格图卡 */
.rm-tabs{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;margin-bottom:12px;scrollbar-width:none}
.rm-tabs::-webkit-scrollbar{display:none}
.rm-tabs button{flex:none;height:38px;padding:0 17px;border-radius:19px;border:1.5px solid var(--line);
  background:var(--card);font-family:inherit;font-size:14px;font-weight:700;color:var(--sub);cursor:pointer;transition:transform .15s}
.rm-tabs button:active{transform:scale(.94)}
.rm-tabs button.on{background:linear-gradient(135deg,var(--brand-primary),var(--brand-primary-hover));color:var(--on-brand);border-color:transparent}
.rm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.rm-card{background:var(--card);border:1.5px solid var(--line);border-radius:18px;overflow:hidden;cursor:pointer;transition:transform .15s}
.rm-card:active{transform:scale(.96)}
.rm-card .cv{position:relative;aspect-ratio:4/3;overflow:hidden}
.rm-card .cv img{width:100%;height:100%;object-fit:cover;display:block}
.rm-card .cv .rtype{position:absolute;left:8px;bottom:8px;font-size:14px;font-weight:600;color:#fff;
  padding:3px 9px;border-radius:999px;background:rgba(0,0,0,.55)}
.rm-card .cv .lv{position:absolute;right:8px;top:8px;font-size:14px;font-weight:700;color:#fff;
  padding:3px 8px;border-radius:999px;background:color-mix(in srgb,var(--brand-accent) 92%,transparent)}
.rm-card .bd{padding:10px 12px 12px}
.rm-card .bd b{display:block;font-size:15px;color:var(--ink);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rm-card .bd > span{display:block;font-size:14px;color:var(--sub);margin-top:3px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:36px}
.rm-card .bd em{display:block;font-style:normal;font-size:14px;color:var(--accent);margin-top:6px;font-weight:600}
.cmp-name{display:inline} /* 名字标签永远是行内，防止被后代选择器拉成块级 */
.rm-tile{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:14px 8px 12px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;text-align:center;transition:transform .15s}
.rm-tile:active{transform:scale(.95)}
.rm-tile .em{width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center;font-size:24px;background:linear-gradient(135deg,rgba(227,178,104,.25),color-mix(in srgb,var(--brand-accent) 18%,transparent))}
.rm-tile b{font-size:14px;color:var(--ink)}
.rm-tile span{font-size:14px;color:var(--sub);line-height:1.4}
.room-card .cv{width:96px;height:96px}
.room-card .rtype{background:linear-gradient(135deg,color-mix(in srgb,var(--brand-accent) 92%,transparent),rgba(196,112,79,.92))}
.room-card .ft .cnt{color:var(--primary);font-weight:700}

/* ===== 生产壳：设计稿嫁接后仍使用真机安全区，不绘制假的系统状态栏 ===== */
html,body{width:100%;height:100%;min-height:100%;overscroll-behavior:none}
html{background:var(--bg)}
body{min-height:100svh}
body.app-mode{padding:0;background:var(--bg)}
body.app-mode #app-wrap{position:fixed;inset:0;width:100vw;height:100dvh;min-height:100svh;transform:none!important}
body.app-mode .phone{border-radius:0;box-shadow:none}
body.app-mode .page>.scroll{padding-top:calc(env(safe-area-inset-top,0px) + 12px);padding-left:calc(16px + env(safe-area-inset-left,0px));padding-right:calc(16px + env(safe-area-inset-right,0px))}
body.app-mode .page:has(.tabbar)>.scroll{padding-bottom:calc(104px + env(safe-area-inset-bottom,0px))}
body.app-mode .tabbar{left:calc(12px + env(safe-area-inset-left,0px));right:calc(12px + env(safe-area-inset-right,0px));bottom:calc(12px + env(safe-area-inset-bottom,0px))}
body.app-mode #push-banner{top:calc(env(safe-area-inset-top,0px) + 10px)}
body.app-mode #p-huagelive .hl-top{padding-top:calc(env(safe-area-inset-top,0px) + 10px)}
body.app-mode #p-huagelive .hl-dock{padding-bottom:calc(32px + env(safe-area-inset-bottom,0px))}


/* ===== 本机免费滤镜：19 款（完全本地，不上传、不调用 AI） ===== */
.ff-wrap{padding:0 14px 30px}
.ff-badge{display:inline-flex;align-items:center;gap:6px;margin:2px 0 10px;padding:6px 10px;border-radius:999px;background:rgba(31,121,93,.10);color:#19684f;font-size:14px;font-weight:800}
.ff-badge:before{content:'●';font-size:14px}
.ff-stage{position:relative;min-height:330px;border-radius:22px;overflow:hidden;background:#121715;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px rgba(23,31,28,.12);cursor:pointer;outline:none}
.ff-stage:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb,var(--brand-accent) 24%,transparent),0 8px 24px rgba(23,31,28,.12)}
.ff-stage canvas{display:none;width:100%;height:auto;max-height:62vh;object-fit:contain;background:#111}
.ff-stage.has-image canvas{display:block}
.ff-empty{padding:48px 24px;text-align:center;color:#e8ecea;line-height:1.65}
.ff-empty strong{display:block;font-size:20px;color:#fff;margin-bottom:8px}
.ff-empty span{display:block;font-size:14px;color:#bfc8c4}
.ff-stage.has-image .ff-empty{display:none}
.ff-change{display:none;position:absolute;right:12px;top:12px;padding:7px 10px;border-radius:999px;background:rgba(0,0,0,.52);color:#fff;font-size:14px;font-weight:800;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);pointer-events:none}
.ff-stage.has-image .ff-change{display:inline-flex}
.ff-original{display:none;position:absolute;left:50%;bottom:14px;transform:translateX(-50%);border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.50);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:800;touch-action:none;user-select:none;-webkit-user-select:none}
.ff-stage.has-image .ff-original{display:block}
.ff-controls{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:15px;margin-top:12px}
.ff-presets{display:flex;gap:10px;overflow-x:auto;padding:8px 1px 9px;margin-top:4px;scrollbar-width:none;-ms-overflow-style:none}
.ff-presets::-webkit-scrollbar{display:none}
.ff-preset{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-start;gap:7px;width:94px;padding:9px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.ff-preset:active{transform:scale(.98)}
.ff-preset.active{border-color:#c07d3d;box-shadow:0 8px 18px color-mix(in srgb,var(--brand-accent) 12%,transparent);background:linear-gradient(180deg,rgba(255,248,238,.96),rgba(255,255,255,.98))}
.ff-preset-thumb{position:relative;width:100%;height:62px;border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:linear-gradient(135deg,#3b4340,#1f2523);color:#fff;font-size:14px;font-weight:850;letter-spacing:.5px}
.ff-preset-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ff-preset-preview[hidden]{display:none}
.ff-preset-placeholder{position:relative;z-index:1}
.ff-preset-badge{position:absolute;left:5px;top:5px;z-index:2;padding:3px 6px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:14px;font-style:normal;font-weight:800;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.ff-preset.active .ff-preset-thumb:after{content:'';position:absolute;inset:0;z-index:3;border:2px solid rgba(255,255,255,.94);border-radius:12px;pointer-events:none}
.ff-preset-name{font-size:14px;font-weight:800;line-height:1.35;text-align:left}
.ff-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.ff-title{font-size:17px;font-weight:850;color:var(--ink)}
.ff-subtitle{font-size:14px;color:var(--sub);line-height:1.5;margin-top:4px;min-height:20px}
.ff-strength-row{margin-top:8px;padding-top:10px;border-top:1px solid var(--line)}
.ff-val{font-size:16px;font-weight:850;color:var(--brand-accent-strong);min-width:50px;text-align:right}
.ff-range{width:100%;height:36px;accent-color:var(--brand-accent-strong);margin:7px 0 0}
.ff-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;position:sticky;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:6;padding:8px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:20px}
.ff-btn{height:56px;border:none;border-radius:17px;font-size:17px;font-weight:850;cursor:pointer}
.ff-btn.primary{background:linear-gradient(135deg,var(--brand-accent-strong),var(--brand-accent));color:white;box-shadow:0 6px 15px color-mix(in srgb,var(--brand-accent) 22%,transparent)}
.ff-btn.secondary{background:var(--card);color:var(--ink);border:1.5px solid var(--line)}
.ff-btn:disabled{opacity:.42;box-shadow:none}
@media(max-width:420px){.ff-stage{min-height:285px}.ff-preset{width:90px}.ff-btn{height:54px;font-size:16px}}


/* ============ 数字人选择：右上角快速总览 ============ */
.companion-hero{display:flex;align-items:center;gap:14px;background:var(--primary);border-radius:22px;padding:14px;cursor:pointer;transition:background .3s;box-shadow:0 8px 24px rgba(40,28,20,.08)}
.companion-hero img{width:78px;height:78px;border-radius:39px;object-fit:cover;border:3px solid rgba(255,255,255,.34);flex:none}
.companion-hero .nm{font-size:18px;font-weight:800;color:var(--on-primary);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.companion-hero .role{font-size:14px;font-weight:750;color:var(--on-primary);margin-top:4px}
.companion-hero .ds{font-size:14px;color:var(--primary-sub);margin-top:4px;line-height:1.45}
.cur-badge{height:27px;padding:0 10px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:800;display:inline-flex;align-items:center}
.grid-people{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cp-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px 9px;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;transition:transform .15s,box-shadow .2s,border-color .2s;text-align:center;min-height:154px}
.cp-card:active{transform:scale(.98)}
.cp-card img{width:66px;height:66px;border-radius:33px;object-fit:cover;border:1px solid rgba(90,70,50,.10)}
.cp-card b{font-size:14px;color:var(--ink);font-weight:800;line-height:1.25}
.cp-card .role{font-size:14px;color:var(--ink);font-weight:700;line-height:1.35;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.cp-card .best{font-size:14px;color:var(--sub);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:370px){.grid-people{gap:8px}.cp-card{padding:10px 7px}.cp-card img{width:60px;height:60px}}



/* HUAGE_PERSONA_MEDIA_RC7_CLEAN */
#p-huagelive{overflow:hidden!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;touch-action:pan-y!important;background:#0d1110!important}
/* 人物媒体层：图片与视频共用，不再用整屏黑色渐变压暗素材。 */
#p-huagelive .hl-bg{display:block!important;position:absolute!important;inset:0!important;z-index:1!important;background:#0d1110!important;overflow:hidden!important}
#p-huagelive .hl-bg::after{display:none!important;content:none!important;background:none!important}
#p-huagelive .hl-bg img,#p-huagelive .hl-bg video,
#p-huagelive .hl-persona-slide img,#p-huagelive .hl-persona-slide video{
  position:absolute!important;inset:0!important;display:block;width:100%!important;height:100%!important;
  object-fit:cover!important;object-position:center 20%!important;user-select:none!important;-webkit-user-drag:none!important;pointer-events:none!important
}
#p-huagelive .hl-bg img,.hl-persona-slide .hl-media-poster{z-index:1!important}
#p-huagelive .hl-bg video,.hl-persona-slide .hl-media-video{z-index:2!important;opacity:0;transition:opacity .16s ease;background:transparent!important}
#p-huagelive .hl-bg video.is-ready,.hl-persona-slide .hl-media-video.is-ready{opacity:1}
#p-huagelive .hl-bg video[hidden]{display:none!important}
#p-huagelive #hl-reel,#p-huagelive .hl-reel{position:absolute!important;inset:0!important;z-index:2!important;overflow:hidden!important;background:transparent!important;pointer-events:none!important;touch-action:none!important}
#p-huagelive #hl-reel .hl-persona-slide,#p-huagelive .hl-reel .hl-persona-slide{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;overflow:hidden!important;background:transparent!important;pointer-events:none!important;will-change:transform!important}
#p-huagelive .hl-media-shell{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;overflow:hidden!important;background:transparent!important}
/* 顶部不再加黑罩；仅靠按钮本身与文字阴影保证可读性。 */
#p-huagelive .hl-top,body.app-mode #p-huagelive .hl-top{position:absolute!important;top:0!important;left:0!important;right:0!important;z-index:70!important;box-sizing:border-box!important;padding:calc(env(safe-area-inset-top,0px) + 10px) max(16px,env(safe-area-inset-right,0px)) 0 max(16px,env(safe-area-inset-left,0px))!important;pointer-events:none!important;background:transparent!important}
#p-huagelive .hl-top>*{pointer-events:auto!important}
#p-huagelive .hl-title{text-shadow:0 1px 7px rgba(0,0,0,.78),0 0 2px rgba(0,0,0,.5)!important}
#p-huagelive .hl-rbtn{position:relative!important;z-index:71!important}
#p-huagelive .hl-task{position:absolute!important;top:calc(env(safe-area-inset-top,0px) + 62px)!important;left:0!important;right:0!important;z-index:65!important;margin-top:0!important;pointer-events:none!important}
#p-huagelive .hl-task button{pointer-events:auto!important}
#p-huagelive .hl-cap,#p-huagelive .hl-light,#p-huagelive .hl-wave,#p-huagelive .hl-result-card{z-index:66!important}
/* 删除底部横跨整张人物图的渐变黑罩。按钮仍有独立半透明圆底。 */
#p-huagelive .hl-dock{z-index:70!important;background:none!important;background-image:none!important}
#p-huagelive .hl-dock .hl-lbl,#p-huagelive .hl-dock .hl-side>span{text-shadow:0 1px 6px rgba(0,0,0,.85),0 0 2px rgba(0,0,0,.55)!important;color:#fff!important}
#p-huagelive .hl-kb{z-index:70!important}

/* ===== 华哥聚合商城：50+ 适老展示 / 操作页 ===== */
.shop-pagehead{position:fixed;top:0;left:0;right:0;z-index:120;background:var(--bg);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);padding:calc(env(safe-area-inset-top,0px) + 10px) 14px 10px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line)}
.shop-back{width:42px;height:42px;flex:0 0 42px;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);font-size:34px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
.shop-headtext{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.shop-headtext b{font-size:19px;color:var(--ink)}.shop-headtext span{font-size:14px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shop-head-action{border:0;border-radius:18px;padding:9px 12px;background:var(--chip);color:var(--ink);font-size:14px;cursor:pointer}
.shop-scroll{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:calc(env(safe-area-inset-top,0px) + 76px) 14px calc(28px + env(safe-area-inset-bottom,0px));background:var(--bg)}
.shop-hero{background:var(--card);background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 10%,var(--card)),var(--card) 52%,color-mix(in srgb,var(--accent) 10%,var(--card)));border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:0 8px 26px rgba(65,45,25,.08)}
.shop-hero-title{font-size:23px;font-weight:800;line-height:1.3;color:var(--ink)}.shop-hero-sub{font-size:14px;line-height:1.7;color:var(--sub);margin-top:6px}
.shop-query-box{display:flex;gap:8px;margin-top:16px}.shop-query-input{min-width:0;flex:1;height:52px;border:2px solid color-mix(in srgb,var(--primary) 28%,var(--line));border-radius:16px;background:var(--card);padding:0 14px;font-size:17px;color:var(--ink);outline:none}.shop-query-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent)}
.shop-voice-btn{width:54px;height:52px;border:0;border-radius:16px;background:var(--primary);color:var(--on-primary);font-size:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;cursor:pointer}.shop-voice-btn span{font-size:14px;margin-top:-2px}
.shop-need-row{display:flex;align-items:center;gap:10px;margin-top:14px}.shop-need-row label{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap}.shop-budget-wrap{height:44px;flex:1;display:flex;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:0 12px;color:var(--sub)}.shop-budget-wrap input{width:100%;border:0;outline:0;background:transparent;font-size:16px;color:var(--ink);padding-left:5px}
.shop-pref-title{font-size:14px;font-weight:700;color:var(--ink);margin-top:14px}.shop-pref-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.shop-pref-list button,.shop-sort-row button{border:1px solid var(--line);background:var(--card);color:var(--sub);border-radius:18px;padding:9px 12px;font-size:14px;cursor:pointer}.shop-pref-list button.on,.shop-sort-row button.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.shop-main-btn{width:100%;min-height:var(--control-h-lg);height:auto;border:0;border-radius:var(--radius-action);margin-top:16px;background:var(--primary);color:var(--on-primary);font-size:var(--fs-action);font-weight:700;cursor:pointer;box-shadow:0 5px 15px color-mix(in srgb,var(--primary) 22%,transparent);padding:0 18px}
.shop-section-title{display:flex;align-items:center;justify-content:space-between;margin:20px 2px 10px}.shop-section-title b{font-size:17px;color:var(--ink)}.shop-section-title span,.shop-section-title button{font-size:14px;color:var(--sub);border:0;background:transparent;cursor:pointer}
.shop-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.shop-quick-grid button{min-height:92px;border:1px solid var(--line);border-radius:18px;background:var(--card);padding:11px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}.shop-quick-grid i{font-style:normal;font-size:28px}.shop-quick-grid b{font-size:15px;color:var(--ink);margin-top:4px}.shop-quick-grid span{font-size:14px;color:var(--sub);margin-top:3px}
.shop-source-card{margin-top:16px;border:1px solid var(--line);border-radius:18px;background:var(--card);padding:13px;display:flex;gap:10px;align-items:center}.shop-source-icon{width:42px;height:42px;border-radius:16px;background:var(--chip);display:flex;align-items:center;justify-content:center;font-size:22px}.shop-source-text{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.shop-source-text b{font-size:15px;color:var(--ink)}.shop-source-text span{font-size:14px;line-height:1.5;color:var(--sub)}.shop-source-card>button{border:0;border-radius:16px;background:var(--chip);color:var(--ink);padding:8px 10px;font-size:14px}
.shop-recent{display:flex;gap:8px;flex-wrap:wrap}.shop-recent button{border:1px solid var(--line);border-radius:18px;background:var(--card);padding:9px 12px;color:var(--ink);font-size:14px}.shop-safe-note{margin:18px 4px 4px;padding:12px 14px;border-radius:16px;background:var(--soft);background:color-mix(in srgb,var(--accent) 10%,var(--card));color:var(--sub);font-size:14px;line-height:1.7}
.shop-results-scroll{padding-bottom:calc(94px + env(safe-area-inset-bottom,0px))}.shop-summary-card{display:flex;gap:12px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px}.shop-summary-icon{font-size:30px}.shop-summary-card>div:last-child{display:flex;flex-direction:column;gap:4px}.shop-summary-card b{font-size:16px;color:var(--ink)}.shop-summary-card span{font-size:14px;line-height:1.6;color:var(--sub)}
.shop-sort-row{display:flex;gap:8px;overflow-x:auto;padding:12px 1px 10px}.shop-sort-row button{white-space:nowrap}.shop-result-list{display:flex;flex-direction:column;gap:11px}.shop-loading{min-height:180px;border:1px solid var(--line);border-radius:20px;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:var(--sub)}.shop-loading>span{width:30px;height:30px;border:3px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:shopspin .8s linear infinite}.shop-loading b{margin-top:12px;font-size:16px;color:var(--ink)}.shop-loading small{margin-top:5px;line-height:1.6}@keyframes shopspin{to{transform:rotate(360deg)}}
.shop-result-card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:12px;box-shadow:0 4px 16px rgba(65,45,25,.06)}.shop-result-top{display:flex;gap:12px}.shop-product-img{width:92px;height:92px;flex:0 0 92px;border-radius:15px;background:var(--soft);object-fit:cover}.shop-product-ph{width:92px;height:92px;flex:0 0 92px;border-radius:15px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:34px}.shop-result-main{min-width:0;flex:1}.shop-result-title{font-size:16px;font-weight:750;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.shop-price-row{display:flex;align-items:baseline;gap:7px;margin-top:8px}.shop-price{font-size:22px;font-weight:850;color:#b8392d}.shop-price small{font-size:14px;font-weight:600}.shop-offer-count{font-size:14px;color:var(--sub)}.shop-provider-pills{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.shop-provider-pills span{border-radius:7px;background:var(--chip);padding:3px 7px;font-size:14px;color:var(--sub)}.shop-result-advice{margin-top:10px;padding:9px 10px;border-radius:12px;background:var(--soft);font-size:14px;line-height:1.6;color:var(--sub)}.shop-action-row{display:flex;gap:8px;margin-top:10px}.shop-primary,.shop-secondary{height:42px;border-radius:16px;font-size:14px;font-weight:750;cursor:pointer}.shop-primary{flex:1;border:0;background:var(--primary);color:var(--on-primary)}.shop-secondary{border:1px solid var(--line);background:var(--card);color:var(--ink);padding:0 13px}.shop-secondary.on{border-color:var(--primary);color:var(--primary);background:color-mix(in srgb,var(--primary) 7%,var(--card))}
.shop-compare-bar{position:fixed;z-index:130;left:14px;right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));height:58px;border-radius:18px;background:#27211d;color:#fff;box-shadow:0 10px 30px rgba(0,0,0,.22);padding:8px 10px 8px 16px;display:flex;align-items:center;justify-content:space-between}.shop-compare-bar span{font-size:14px}.shop-compare-bar button{height:42px;border:0;border-radius:16px;background:#fff;color:#27211d;font-size:14px;font-weight:800;padding:0 16px}
.shop-detail-hero{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:14px}.shop-detail-media{width:100%;aspect-ratio:1.55;border-radius:16px;object-fit:contain;background:var(--soft)}.shop-detail-placeholder{width:100%;aspect-ratio:1.55;border-radius:16px;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:58px}.shop-detail-title{font-size:20px;font-weight:800;line-height:1.45;color:var(--ink);margin-top:12px}.shop-detail-low{font-size:14px;color:var(--sub);margin-top:8px}.shop-detail-low strong{font-size:25px;color:#b8392d;margin-left:4px}.shop-advice-card{margin-top:12px;padding:13px 14px;border-radius:16px;background:var(--soft);background:color-mix(in srgb,var(--primary) 7%,var(--card));border:1px solid color-mix(in srgb,var(--primary) 16%,var(--line));font-size:14px;line-height:1.7;color:var(--sub)}.shop-advice-card b{display:block;color:var(--ink);font-size:15px;margin-bottom:3px}.shop-offers-title{margin:18px 2px 9px;font-size:17px;font-weight:800;color:var(--ink)}.shop-offer-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:13px;margin-bottom:10px}.shop-offer-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.shop-offer-platform{font-size:16px;font-weight:800;color:var(--ink)}.shop-offer-price{font-size:21px;font-weight:850;color:#b8392d}.shop-offer-shop{font-size:14px;line-height:1.5;color:var(--sub);margin-top:5px}.shop-offer-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.shop-offer-tags span{padding:3px 7px;border-radius:7px;background:var(--chip);font-size:14px;color:var(--sub)}.shop-offer-card .shop-main-btn{height:46px;margin-top:11px;font-size:16px}.shop-checkout-note{text-align:center;color:var(--sub);font-size:14px;line-height:1.6;padding:7px 10px 20px}
.shop-compare-grid{display:grid;grid-template-columns:1fr;gap:10px}.shop-compare-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:13px}.shop-compare-card-head{display:flex;gap:10px}.shop-compare-card img,.shop-compare-card .ph{width:72px;height:72px;border-radius:13px;background:var(--soft);object-fit:cover;display:flex;align-items:center;justify-content:center;font-size:30px}.shop-compare-card h3{font-size:16px;line-height:1.45;color:var(--ink)}.shop-compare-facts{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.shop-compare-facts div{background:var(--soft);border-radius:12px;padding:9px}.shop-compare-facts small{display:block;color:var(--sub);font-size:14px}.shop-compare-facts b{display:block;margin-top:2px;color:var(--ink);font-size:14px}
.shop-empty{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px 18px;text-align:center;color:var(--sub);line-height:1.7}.shop-empty i{display:block;font-style:normal;font-size:44px}.shop-empty b{display:block;font-size:17px;color:var(--ink);margin:7px 0 3px}.shop-empty button{margin-top:12px;border:0;border-radius:16px;background:var(--primary);color:var(--on-primary);padding:11px 16px;font-size:14px;font-weight:700}

.shop-intent-card{margin-top:10px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px 14px}.shop-intent-card b{font-size:15px;color:var(--ink)}.shop-intent-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.shop-intent-tags span{background:var(--chip);border-radius:999px;padding:5px 9px;font-size:14px;color:var(--sub)}
.shop-fit-line{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:8px}.shop-fit-badge{display:inline-flex;align-items:center;min-height:25px;padding:3px 8px;border-radius:999px;background:color-mix(in srgb,var(--primary) 12%,var(--card));color:var(--primary);font-size:14px;font-weight:800}.shop-fit-score{font-size:14px;color:var(--sub)}.shop-reason-list{margin-top:7px;display:flex;flex-direction:column;gap:3px}.shop-reason-list span{font-size:14px;line-height:1.5;color:var(--sub)}
.shop-param-card{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:13px}.shop-param-title{font-size:16px;font-weight:800;color:var(--ink);margin-bottom:8px}.shop-param-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.shop-param-item{min-height:58px;background:var(--soft);border-radius:12px;padding:9px}.shop-param-item small{display:block;color:var(--sub);font-size:14px}.shop-param-item b{display:block;margin-top:3px;color:var(--ink);font-size:14px;word-break:break-word}.shop-param-missing{font-weight:600!important;color:var(--sub)!important}.shop-param-note{margin-top:8px;color:var(--sub);font-size:14px;line-height:1.5}
.shop-caution{margin-top:8px;padding:8px 10px;border-radius:12px;background:color-mix(in srgb,#d78a31 10%,var(--card));color:var(--sub);font-size:14px;line-height:1.6}.shop-caution b{color:var(--ink)}
.shop-compare-table{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:auto}.shop-compare-row{display:grid;grid-template-columns:minmax(88px,.8fr) repeat(var(--shop-cols,2),minmax(130px,1fr));border-bottom:1px solid var(--line)}.shop-compare-row:last-child{border-bottom:0}.shop-compare-row>div{padding:10px;border-right:1px solid var(--line);font-size:14px;line-height:1.5;color:var(--sub)}.shop-compare-row>div:last-child{border-right:0}.shop-compare-row .label{font-weight:800;color:var(--ink);background:var(--soft)}.shop-compare-row .value{color:var(--ink)}
.shop-history-list{display:flex;flex-direction:column;gap:10px}.shop-history-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:13px}.shop-history-title{font-size:15px;font-weight:800;line-height:1.5;color:var(--ink)}.shop-history-meta{font-size:14px;color:var(--sub);margin-top:5px;line-height:1.55}.shop-history-status{display:inline-flex;margin-top:8px;padding:4px 8px;border-radius:999px;background:var(--chip);font-size:14px;font-weight:750;color:var(--sub)}.shop-history-actions{display:flex;gap:8px;margin-top:10px}.shop-history-actions button{flex:1;height:42px;border-radius:13px;border:1px solid var(--line);background:var(--card);font-size:14px;font-weight:750;color:var(--ink)}.shop-history-actions button.primary{border:0;background:var(--primary);color:var(--on-primary)}
@media(min-width:760px){.shop-scroll{padding-left:22px;padding-right:22px}.shop-quick-grid{grid-template-columns:repeat(6,1fr)}.shop-result-list{display:grid;grid-template-columns:1fr 1fr}.shop-result-card{height:100%}.shop-compare-grid{grid-template-columns:repeat(3,1fr)}}
html.huage-tv .shop-query-input{font-size:20px;height:62px}html.huage-tv .shop-main-btn{height:62px;font-size:21px}html.huage-tv .shop-pref-list button,html.huage-tv .shop-sort-row button{font-size:17px;padding:12px 16px}


/* ===== 免费滤镜极简修正版 ===== */
#push-banner{display:none!important}
#p-filmfilter .scroll{overflow:hidden;gap:12px;padding-bottom:16px}
#p-filmfilter .pagehead.ff-head{align-items:center;gap:10px}
#p-filmfilter .tgroup{min-width:0;flex:1}
#p-filmfilter .t1{font-size:22px;font-weight:800}
#p-filmfilter .t2{font-size:14px;color:#7E766E}
#p-filmfilter .ff-dot{display:inline-block;margin:0 8px;color:#262626}
#p-filmfilter .ff-head-actions{display:flex;align-items:center;gap:8px;flex:none}
#p-filmfilter .ff-topbtn{height:40px;padding:0 16px;border-radius:20px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-family:inherit;font-size:14px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
#p-filmfilter .ff-topbtn.primary{background:#3a332e;color:#fff;border-color:#3a332e}
#p-filmfilter .ff-wrap{padding:0;display:flex;flex-direction:column;gap:12px;min-height:0;flex:1}
#p-filmfilter .ff-stage{position:relative;flex:1;min-height:0;height:calc(100dvh - 330px);max-height:56vh;border-radius:26px;overflow:hidden;background:radial-gradient(circle at 50% 0%,rgba(255,255,255,.05),transparent 42%),linear-gradient(135deg,#2a292f 0%,#40362e 100%);display:flex;align-items:center;justify-content:center;box-shadow:0 10px 28px rgba(31,27,23,.14);outline:none}
#p-filmfilter .ff-stage canvas{display:none;width:100%;height:100%}
#p-filmfilter .ff-stage.has-image canvas{display:block}
#p-filmfilter .ff-empty{padding:26px 18px;text-align:center;color:#F3EEE8;line-height:1.7}
#p-filmfilter .ff-empty strong{display:block;font-size:20px;margin-bottom:6px;color:#fff}
#p-filmfilter .ff-empty span{font-size:14px;color:#DDD3CA}
#p-filmfilter .ff-stage.has-image .ff-empty{display:none}
#p-filmfilter .ff-rail{padding-top:2px}
#p-filmfilter .ff-presets{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;padding:2px 0 4px}
#p-filmfilter .ff-presets::-webkit-scrollbar{display:none}
#p-filmfilter .ff-preset{flex:0 0 auto;width:72px;border:none;background:transparent;padding:0;margin:0;display:flex;flex-direction:column;gap:7px;align-items:center;cursor:pointer;color:var(--ink)}
#p-filmfilter .ff-preset-thumb{position:relative;display:block;width:72px;height:72px;border-radius:18px;overflow:hidden;background:#dfd7cd;box-shadow:0 1px 4px rgba(0,0,0,.06)}
#p-filmfilter .ff-preset-thumb img{width:100%;height:100%;object-fit:cover;display:block}
#p-filmfilter .ff-preset-placeholder{display:flex;width:100%;height:100%;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#766d65}
#p-filmfilter .ff-preset-name{font-size:14px;font-weight:700;line-height:1.2;color:#2a2723;text-align:center;white-space:nowrap}
#p-filmfilter .ff-preset.active .ff-preset-thumb{box-shadow:0 0 0 2.5px var(--surface-card), 0 0 0 5px var(--brand-accent)}
#p-filmfilter .ff-preset.active .ff-preset-name{color:var(--brand-accent)}
#p-filmfilter .ff-preset-badge{display:none!important}
#p-filmfilter .ff-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:auto;padding-top:2px}
#p-filmfilter .ff-btn{height:58px;border-radius:20px;font-size:18px;font-weight:800;font-family:inherit;border:none}
#p-filmfilter .ff-btn.secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}
#p-filmfilter .ff-btn.primary{background:linear-gradient(135deg,#CF5A42,#E36B4A);color:#fff;box-shadow:0 8px 20px rgba(217,89,62,.18)}
#p-filmfilter .ff-btn:disabled{opacity:.42;box-shadow:none}
@media (max-height:760px){#p-filmfilter .ff-stage{height:calc(100dvh - 305px);max-height:49vh}#p-filmfilter .ff-preset{width:68px}#p-filmfilter .ff-preset-thumb{width:68px;height:68px;border-radius:17px}#p-filmfilter .ff-btn{height:54px;font-size:17px}}


/* 100% 全图对比：整张原图与整张滤镜效果切换，不做 50:50 分屏 */
#p-filmfilter .ff-compare-divider,#p-filmfilter .ff-compare-label{display:none!important}
#p-filmfilter .ff-compare-state{display:none;position:absolute;left:12px;bottom:12px;z-index:8;height:32px;padding:0 12px;border-radius:16px;background:rgba(18,17,16,.58);color:#fff;font-size:14px;font-weight:800;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}
#p-filmfilter .ff-stage.compare-on .ff-compare-state{display:inline-flex}
#p-filmfilter .ff-stage.compare-on .ff-stage-compare{background:rgba(24,22,20,.62)!important;border-color:rgba(255,255,255,.55)!important}


/* ===== V16.1.999 个人风采相册 + 人生时间轴 ===== */
.gallery-summary{margin:2px 0 12px;padding:13px 15px;border-radius:16px;background:linear-gradient(135deg,var(--soft),var(--card));border:1px solid var(--line);color:var(--ink);font-size:15px;font-weight:700;line-height:1.5}
.gallery-date-groups{display:flex;flex-direction:column;gap:20px;padding-bottom:18px}
.gallery-date-group{display:flex;flex-direction:column;gap:10px}
.gallery-date-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.gallery-date-head b{font-size:20px;color:var(--ink);font-weight:850}
.gallery-date-head span{font-size:14px;color:var(--sub)}
.gallery-album-grid{columns:2;column-gap:10px}
.gallery-album-card{break-inside:avoid;margin:0 0 10px;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;position:relative;cursor:pointer;box-shadow:0 2px 10px rgba(42,35,28,.04)}
.gallery-album-card .album-media{position:relative;background:#eee7dc}
.gallery-album-card img,.gallery-album-card video{display:block;width:100%;height:auto;object-fit:contain}
.gallery-album-card .album-video-badge,.gallery-album-card .album-public-badge{position:absolute;top:8px;padding:5px 8px;border-radius:999px;font-size:14px;font-weight:700;color:#fff;background:rgba(0,0,0,.56);backdrop-filter:blur(8px)}
.gallery-album-card .album-video-badge{left:8px}.gallery-album-card .album-public-badge{right:8px;background:rgba(92,127,114,.88)}
.gallery-album-card .album-caption{padding:9px 10px 10px}
.gallery-album-card .album-caption b{font-size:14px;color:var(--ink);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gallery-album-card .album-caption span{font-size:14px;color:var(--sub);display:block;margin-top:3px}
.life-hero{background:linear-gradient(135deg,#FFF8EA,var(--card));border:1px solid var(--line);border-radius:22px;padding:16px;display:flex;gap:12px;align-items:center;margin-bottom:12px}
.life-hero-icon{width:54px;height:54px;border-radius:18px;background:linear-gradient(135deg,#F4D59E,#C9934F);display:grid;place-items:center;font-size:27px;flex:none}
.life-hero .in{flex:1;min-width:0}.life-hero .in b{display:block;font-size:18px;color:var(--ink)}.life-hero .in span{display:block;font-size:14px;color:var(--sub);line-height:1.55;margin-top:3px}
.life-quick{display:grid;grid-template-columns:1.25fr .75fr;gap:9px;margin:10px 0}
.life-quick button{min-height:48px;border:1px solid var(--line);border-radius:16px;background:var(--card);font:inherit;font-size:15px;font-weight:750;color:var(--ink);cursor:pointer}.life-quick button.primary{background:var(--primary);color:var(--on-primary);border-color:transparent}
.life-tip{font-size:14px;color:var(--sub);line-height:1.6;padding:0 3px 10px}
.life-timeline{position:relative;padding:2px 0 6px 25px}
.life-timeline::before{content:"";position:absolute;left:8px;top:4px;bottom:8px;width:2px;background:linear-gradient(var(--accent),var(--line))}
.life-decade{margin:16px 0 8px;position:relative}.life-decade::before{content:"";position:absolute;left:-22px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--card)}
.life-decade-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.life-decade-head b{font-size:21px;color:var(--ink)}.life-decade-head span{font-size:14px;color:var(--sub)}
.life-insert{width:100%;border:none;background:transparent;color:var(--accent);font:inherit;font-size:14px;font-weight:700;text-align:left;padding:8px 0 8px 4px;cursor:pointer}
.life-node{position:relative;margin:0 0 10px;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:0 3px 14px rgba(40,35,30,.05)}
.life-node::before{content:"";position:absolute;left:-20px;top:24px;width:8px;height:8px;border-radius:50%;background:var(--primary)}
.life-node-media{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;background:var(--line)}.life-node-media.one{grid-template-columns:1fr}.life-node-media img,.life-node-media video{display:block;width:100%;height:150px;object-fit:cover;background:#eee7dc}.life-node-media.one img,.life-node-media.one video{height:auto;max-height:280px}
.life-node-body{padding:12px 13px 13px}.life-node-time{font-size:14px;color:var(--accent);font-weight:800}.life-node-title{font-size:16px;color:var(--ink);font-weight:800;margin-top:3px}.life-node-text{font-size:14px;color:var(--sub);line-height:1.65;margin-top:5px;white-space:pre-wrap}.life-node-actions{display:flex;gap:7px;margin-top:10px}.life-node-actions button{flex:1;height:38px;border:1px solid var(--line);border-radius:12px;background:var(--soft);color:var(--ink);font:inherit;font-size:14px;font-weight:700;cursor:pointer}
.life-film-btn{margin-top:12px}
.life-editor{display:flex;flex-direction:column;gap:10px}.life-step{font-size:15px;color:var(--ink);font-weight:800;margin-top:2px}.life-sub{font-size:14px;color:var(--sub);line-height:1.55;margin-top:-5px}.life-decades{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.life-decades button{height:42px;border:1px solid var(--line);border-radius:12px;background:var(--card);font:inherit;color:var(--ink);font-weight:700;cursor:pointer}.life-decades button.on{background:var(--accent);color:var(--on-accent);border-color:transparent}.life-date-row{display:grid;grid-template-columns:1.1fr .9fr .9fr;gap:7px}.life-date-row select,.life-title-input,.life-story-input{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);font:inherit;padding:11px 12px}.life-story-input{min-height:112px;resize:vertical;line-height:1.6}.life-voice-row{display:flex;gap:8px;align-items:center}.life-voice-btn{height:44px;border:none;border-radius:999px;background:var(--primary);color:var(--on-primary);font:inherit;font-weight:800;padding:0 16px;cursor:pointer}.life-voice-btn.listening{animation:pulse 1.1s infinite}.life-editor-media{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.life-media-tile{position:relative;border-radius:12px;overflow:hidden;background:var(--soft);aspect-ratio:1}.life-media-tile img,.life-media-tile video{width:100%;height:100%;object-fit:cover;display:block}.life-media-tile button{position:absolute;right:5px;top:5px;width:25px;height:25px;border:0;border-radius:50%;background:rgba(0,0,0,.58);color:#fff}.life-media-add{aspect-ratio:1;border:2px dashed var(--accent);border-radius:12px;background:var(--soft);color:var(--accent);font:inherit;font-size:14px;font-weight:800;cursor:pointer;padding:8px}

@media(min-width:700px){.life-editor-media{grid-template-columns:repeat(4,1fr)}}

/* 2026-09-27｜风采 / 广场：参考内容社区的轻瀑布流，但保留华哥自己的业务结构 */
#p-gallery .scroll,#p-plaza .scroll{padding-left:12px;padding-right:12px}
#p-gallery .pagehead{padding-left:2px;padding-right:2px}
#p-gallery .gallery-summary{margin:0 2px 10px;padding:4px 2px;background:transparent;border:0;border-radius:0;box-shadow:none;color:var(--sub);font-size:14px;font-weight:600}
#p-gallery .mall-entry{margin:0 0 12px;border-radius:16px}
#p-gallery .gallery-filters,#p-plaza .filters{position:sticky;top:0;z-index:12;padding:8px 0 10px;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
#p-gallery .gallery-date-groups{gap:22px}
#p-gallery .gallery-date-group{gap:9px}
#p-gallery .gallery-date-head{padding:0 2px}
#p-gallery .gallery-date-head b{font-size:18px;font-weight:850}
#p-gallery .gallery-album-grid{columns:2;column-gap:8px}
#p-gallery .gallery-album-card{break-inside:avoid;margin:0 0 12px;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;cursor:pointer}
#p-gallery .gallery-album-card .album-media{overflow:hidden;border-radius:13px;background:#ece8e1;min-height:82px;max-height:min(62vw,320px);transform:translateZ(0)}
#p-gallery .gallery-album-card img,#p-gallery .gallery-album-card video{display:block;width:100%;height:auto;max-height:min(62vw,320px);object-fit:cover;object-position:center;background:#ece8e1}
#p-gallery .gallery-album-card .album-select{display:none;position:absolute;left:8px;top:8px;z-index:5;width:28px;height:28px;border-radius:50%;border:2px solid #fff;background:rgba(20,24,22,.45);color:#fff;font-size:16px;font-weight:900;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.2)}
#p-gallery.manage-mode .gallery-album-card .album-select{display:flex}
#p-gallery.manage-mode .gallery-album-card.is-selected .album-select{background:var(--primary);border-color:var(--primary)}
#p-gallery.manage-mode .gallery-album-card.is-selected .album-media{box-shadow:0 0 0 3px var(--primary)}
#p-gallery.manage-mode .gallery-album-card{user-select:none;-webkit-user-select:none}
#p-gallery .gallery-head-actions{display:flex;align-items:center;gap:7px}
#p-gallery .gallery-head-actions .pill{height:38px;padding:0 13px;font-size:14px}
.gallery-manage-bar{display:none;position:absolute;left:14px;right:14px;bottom:88px;z-index:75;min-height:58px;padding:8px 10px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 10px 28px rgba(45,35,25,.18);align-items:center;gap:8px}
#p-gallery.manage-mode .gallery-manage-bar{display:flex}
.gallery-manage-bar .gm-count{flex:1;font-size:14px;font-weight:800;color:var(--ink);padding-left:4px}
.gallery-manage-bar button{height:40px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-weight:800;padding:0 14px}
.gallery-manage-bar button.danger{background:#9f302b;color:#fff;border-color:#9f302b}
.gallery-manage-bar button:disabled{opacity:.42}

#p-gallery .gallery-album-card .album-video-badge,#p-gallery .gallery-album-card .album-public-badge{top:7px;padding:4px 7px;font-size:14px}
#p-gallery .gallery-album-card .album-video-badge{left:7px}
#p-gallery .gallery-album-card .album-public-badge{right:7px}
#p-gallery .gallery-album-card .album-caption{padding:7px 2px 0}
#p-gallery .gallery-album-card .album-caption b{font-size:14px;line-height:1.42;font-weight:750;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
#p-gallery .gallery-album-card .album-caption span{font-size:14px;margin-top:3px}

/* 风采全屏浏览：媒体与操作彻底分区 */
.v16-gallery-viewer{position:fixed;inset:0;z-index:var(--z-fullscreen);background:#fff;color:#202624;display:flex;flex-direction:column;overscroll-behavior:none}
.v16-gallery-viewer .gv-head{height:54px;flex:0 0 auto;padding:calc(env(safe-area-inset-top,0px) + 5px) 12px 5px;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;background:#fff;border-bottom:1px solid rgba(0,0,0,.06)}
.v16-gallery-viewer .gv-head button{width:40px;height:40px;border:0;border-radius:50%;background:#f2f1ee;color:#242927;font-size:26px;line-height:1}
.v16-gallery-viewer .gv-count{text-align:center;font-size:14px;font-weight:750;color:#555e5a}
.v16-gallery-viewer .gv-media-shell{position:relative;flex:1 1 auto;min-height:0;background:#0b0d0c;overflow:hidden}
.v16-gallery-viewer .gv-track{height:100%;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.v16-gallery-viewer .gv-track::-webkit-scrollbar{display:none}
.v16-gallery-viewer .gv-slide{flex:0 0 100%;width:100%;height:100%;scroll-snap-align:center;scroll-snap-stop:always;display:grid;place-items:center;background:#0b0d0c}
.v16-gallery-viewer .gv-slide img,.v16-gallery-viewer .gv-slide video{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;background:#0b0d0c}
.v16-gallery-viewer .gv-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:38px;height:52px;border:0;border-radius:16px;background:rgba(0,0,0,.35);color:#fff;font-size:26px;display:grid;place-items:center}
.v16-gallery-viewer .gv-prev{left:8px}.v16-gallery-viewer .gv-next{right:8px}
.v16-gallery-viewer .gv-info{flex:0 0 auto;background:#fff;padding:10px 14px 8px;border-top:1px solid rgba(0,0,0,.06)}
.v16-gallery-viewer .gv-title{font-size:16px;font-weight:850;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v16-gallery-viewer .gv-sub{font-size:14px;color:#7a817e;margin-top:3px}
.v16-gallery-viewer .gv-actions{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:7px 10px calc(10px + env(safe-area-inset-bottom,0px));background:#fff}
.v16-gallery-viewer .gv-actions button{min-width:0;height:54px;border:1px solid #e5e2dc;border-radius:16px;background:#f8f7f4;color:#202624;font:inherit;font-size:14px;font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.v16-gallery-viewer .gv-actions button span{font-size:18px;line-height:1}
.v16-gallery-viewer .gv-actions button.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.v16-gallery-viewer .gv-actions button.published{background:#eef4f0;border-color:#c7dbcf;color:#4e725e}
.v16-gallery-viewer .gv-more{font-size:24px!important;font-weight:900!important;letter-spacing:1px}
.v16-gallery-viewer .gv-menu{position:absolute;right:10px;top:calc(env(safe-area-inset-top,0px) + 52px);z-index:9;width:min(260px,72vw);padding:7px;background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:16px;box-shadow:0 12px 34px rgba(0,0,0,.18);display:none}
.v16-gallery-viewer .gv-menu.show{display:block}
.v16-gallery-viewer .gv-menu button{width:100%;height:48px;border:0;border-radius:12px;background:transparent;color:#252b28;font:inherit;font-size:14px;font-weight:800;text-align:left;padding:0 14px}
.v16-gallery-viewer .gv-menu button.danger{color:#a32e28;background:#fff4f2}

@media(max-width:480px){.v16-gallery-viewer .gv-arrow{display:none}.v16-gallery-viewer .gv-media-shell{min-height:46dvh}.v16-gallery-viewer .gv-actions{gap:5px;padding-left:7px;padding-right:7px}.v16-gallery-viewer .gv-actions button{font-size:14px}}

/* 广场：真实公开作品双列瀑布流，去大卡片边框 */
#p-plaza .plaza-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding:6px 2px 0}
#p-plaza .plaza-head .t1{font-size:25px;font-weight:900}
#p-plaza .plaza-head .t2{font-size:14px;color:var(--sub);margin-top:2px}
.square-waterfall{columns:2;column-gap:8px;padding:0 0 24px}
.square-pin{break-inside:avoid;margin:0 0 13px;cursor:pointer;background:transparent}
.square-pin .sq-media{position:relative;overflow:hidden;border-radius:13px;background:#ece8e1;min-height:110px}
.square-pin .sq-media img,.square-pin .sq-media video{width:100%;height:auto;display:block;object-fit:cover;max-height:460px;background:#ece8e1}
.square-pin .sq-video,.square-pin .sq-source{position:absolute;top:7px;padding:4px 7px;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:14px;font-weight:750}
.square-pin .sq-video{left:7px}.square-pin .sq-source{right:7px;max-width:54%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.square-pin .sq-title{padding:7px 2px 0;font-size:14px;font-weight:800;line-height:1.45;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.square-pin .sq-foot{padding:5px 2px 0;display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:14px;color:#7a817e}
.square-pin .sq-author{min-width:0;display:flex;align-items:center;gap:5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.square-pin .sq-avatar{width:20px;height:20px;border-radius:50%;object-fit:cover;flex:none}
.square-empty{column-span:all;padding:60px 20px;text-align:center;color:var(--sub);line-height:1.7}
#p-detail .detail-cover{background:#0b0d0c;height:min(62dvh,620px);border-radius:16px;display:grid;place-items:center}
#p-detail .detail-cover img,#p-detail .detail-cover video{width:100%;height:100%;object-fit:contain;background:#0b0d0c}
#p-detail .detail-cover video{display:none}
#p-detail .detail-cover.is-video img{display:none}
#p-detail .detail-cover.is-video video{display:block}
#p-detail .square-detail-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}
#p-detail .square-detail-actions button{height:48px;border:1px solid var(--line);border-radius:16px;background:var(--card);font:inherit;font-weight:800;color:var(--ink)}
@media(min-width:700px){#p-gallery .gallery-album-grid,.square-waterfall{columns:3}}


/* ===== 全屏制作中 / 完成展示 ===== */
.tf-body{padding:28px 20px 44px;text-align:center}
.tf-anim{width:104px;height:104px;margin:40px auto 24px;position:relative}
.tf-ring{position:absolute;inset:0;border-radius:50%;border:5px solid color-mix(in srgb,var(--brand-accent) 14%,transparent);border-top-color:var(--brand-accent-strong);animation:tfSpin 1.1s linear infinite}
.tf-ring::after{content:'';position:absolute;inset:16px;border-radius:50%;border:3px solid color-mix(in srgb,var(--brand-accent) 10%,transparent);border-bottom-color:var(--brand-accent);animation:tfSpin 1.6s linear infinite reverse}
@keyframes tfSpin{to{transform:rotate(360deg)}}
.tf-body h2{font-size:23px;margin:0 0 8px;color:var(--ink);font-weight:700}
.tf-phase{color:var(--sub);margin:0 0 20px;font-size:15px;min-height:22px}
.tf-bar{height:10px;border-radius:6px;background:var(--line);overflow:hidden;max-width:320px;margin:0 auto 22px}
.tf-bar i{display:block;height:100%;width:8%;border-radius:6px;background:linear-gradient(90deg,var(--brand-accent-strong),var(--brand-accent));transition:width .6s ease}
.tf-steps{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:24px}
.tf-step{padding:7px 14px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--sub);font-size:14px}
.tf-step.on{background:#E4F2E9;color:#2F7D4F;border-color:#BFE3CB;font-weight:600}
.tf-step.done{background:#E4F2E9;color:#2F7D4F;border-color:#BFE3CB}
.tf-tip{color:#9AA6A0;font-size:14px}
.tf-mats{display:flex;gap:8px;justify-content:center;margin:4px 0 2px}
.tf-mats img,.tf-mats video{width:64px;height:64px;border-radius:12px;object-fit:cover;border:2px solid var(--line)}
.tf-mats-tip{color:var(--sub);font-size:14px;text-align:center;margin:2px 0 4px}
.tf-result{margin:8px auto 22px;max-width:100%}
.tf-result video,.tf-result img{width:100%;max-height:54vh;border-radius:18px;object-fit:contain;background:#000}
.tf-actions{display:flex;flex-direction:column;gap:10px;max-width:300px;margin:0 auto}
.tf-actions .big-btn{width:100%}


/* ===== 以下为拆分外置的分段样式 ===== */

/* ==== vidu-s2-dual-mode-ui ==== */

/* Vidu S2 双方案 + 真全屏媒体层。安全区只移动控件，不移动图片/视频。 */
html,body{margin:0!important;padding:0!important;min-width:100%;min-height:100%;}
#p-huagelive{position:absolute!important;inset:0!important;width:100%!important;height:100vh!important;height:100dvh!important;min-height:100svh!important;margin:0!important;padding:0!important;overflow:hidden!important;background:#0d1110!important;}
/* 桌面/平板调试布局（app-wrap 高 820/810px）下，通话页铺满容器而非视口，避免底部输入条悬浮错位 */
body.dev-desktop #p-huagelive,body.dev-tablet #p-huagelive{height:100%!important;min-height:100%!important;max-height:100%!important;}
#p-huagelive .hl-bg,#p-huagelive #hl-reel,#p-huagelive #hl-s2-video-box{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;}
#p-huagelive #hl-s2-video-box{z-index:4!important;overflow:hidden!important;background:transparent!important;opacity:0;transition:opacity .16s ease;pointer-events:none!important;}
#p-huagelive #hl-s2-video-box.ready{opacity:1;}
#p-huagelive #hl-s2-video-box video{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;object-position:center top!important;background:transparent!important;}
#p-huagelive .hl-bg img,#p-huagelive .hl-bg video,#p-huagelive .hl-persona-slide img,#p-huagelive .hl-persona-slide video{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center top!important;}
#p-huagelive .hl-top,body.app-mode #p-huagelive .hl-top{top:0!important;padding-top:calc(env(safe-area-inset-top,0px) + 10px)!important;}
#p-huagelive .hl-dock{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))!important;}
#hl-render-mode-chip{max-width:108px;min-height:34px!important;padding:5px 9px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
.hl-s2-status{position:absolute;z-index:72;top:calc(env(safe-area-inset-top,0px) + 60px);left:50%;transform:translateX(-50%);max-width:min(86vw,520px);padding:7px 12px;border-radius:16px;background:rgba(15,18,18,.64);color:#fff;font-size:14px;line-height:1.35;text-align:center;box-shadow:0 3px 14px rgba(0,0,0,.22);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity .18s ease;}
.hl-s2-status.show{opacity:1;}
.hl-mode-sheet{position:fixed;inset:0;z-index:var(--z-overlay);display:none;align-items:flex-end;justify-content:center;}
.hl-mode-sheet.show{display:flex;}
.hl-mode-mask{position:absolute;inset:0;border:0;background:rgba(0,0,0,.42);}
.hl-mode-panel{position:relative;width:min(100%,620px);max-height:min(78dvh,720px);overflow:auto;box-sizing:border-box;padding:10px 16px calc(18px + env(safe-area-inset-bottom,0px));border-radius:26px 26px 0 0;background:#f6f2eb;color:#1d2422;box-shadow:0 -18px 48px rgba(0,0,0,.28);-webkit-overflow-scrolling:touch;}
.hl-mode-handle{width:44px;height:5px;border-radius:99px;background:#c8c1b8;margin:0 auto 10px;}
.hl-mode-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 2px 12px;}
.hl-mode-head>div{display:flex;flex-direction:column;gap:3px}.hl-mode-head b{font-size:20px}.hl-mode-head span{font-size:14px;color:#69716e}.hl-mode-head>button{width:42px;height:42px;border:0;border-radius:50%;background:#e7e1d8;font-size:28px;line-height:1;color:#343b39;}
.hl-mode-row{width:100%;min-height:72px;border:1px solid #ded8cf;background:#fff;border-radius:18px;margin:8px 0;padding:10px 12px;display:grid;grid-template-columns:48px 1fr 28px;gap:10px;align-items:center;text-align:left;color:#202725;}
.hl-mode-row .hl-mode-icon{width:46px;height:46px;border-radius:16px;background:#efebe4;display:grid;place-items:center;font-weight:800;font-size:15px;}
.hl-mode-row>span:nth-child(2){display:flex;flex-direction:column;gap:4px}.hl-mode-row b{font-size:17px}.hl-mode-row small{font-size:14px;line-height:1.35;color:#727a77}.hl-mode-row i{font-style:normal;font-size:20px;color:#b6b0a7;opacity:.15}.hl-mode-row.on{border-color:#b49a6a;background:#fffaf0;box-shadow:0 4px 14px rgba(100,80,45,.09)}.hl-mode-row.on i{color:#956c25;opacity:1}.hl-mode-row.on .hl-mode-icon{background:#eadbbf;color:#684910;}
.hl-mode-note{font-size:14px;line-height:1.5;color:#7b7670;padding:8px 6px 2px;}
@media (orientation:landscape){#p-huagelive #hl-s2-video-box video,#p-huagelive .hl-bg img,#p-huagelive .hl-bg video,#p-huagelive .hl-persona-slide img,#p-huagelive .hl-persona-slide video{object-position:center 18%!important}.hl-mode-panel{width:min(620px,72vw);border-radius:26px 26px 0 0;}}
@media (min-width:800px){#hl-render-mode-chip{max-width:150px;font-size:14px!important}.hl-s2-status{font-size:14px}.hl-mode-row{min-height:78px}.hl-mode-row b{font-size:18px}.hl-mode-row small{font-size:14px}}
@media (prefers-reduced-motion:reduce){#p-huagelive #hl-s2-video-box,.hl-s2-status{transition:none!important}}

/* ===== 免费滤镜 · 大图对比修正版 ===== */
#push-banner,#hl-light{display:none!important}
#p-filmfilter .scroll{overflow:hidden!important;gap:10px!important;padding-bottom:14px!important}
#p-filmfilter .pagehead.ff-head{align-items:center!important;gap:10px!important}
#p-filmfilter .tgroup{flex:1;min-width:0}
#p-filmfilter .ff-head-actions{margin-left:auto;display:flex;align-items:center;flex:none}
#p-filmfilter .ff-topbtn.primary{height:40px;padding:0 17px;border-radius:20px;background:#3A332E;color:#fff;border:1px solid #3A332E;box-shadow:none!important;white-space:nowrap}
#p-filmfilter .ff-wrap{padding:0!important;display:grid!important;grid-template-rows:minmax(0,1fr) auto auto!important;gap:10px!important;min-height:0!important;flex:1!important}
#p-filmfilter .ff-stage{position:relative!important;min-height:0!important;height:auto!important;max-height:none!important;border-radius:26px!important;overflow:hidden!important;background:#151515!important;display:flex!important;align-items:center!important;justify-content:center!important;box-shadow:none!important;outline:none!important}
#p-filmfilter .ff-stage canvas{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:none;pointer-events:none}
#p-filmfilter .ff-stage.has-image canvas.ff-main-canvas{display:block!important}
#p-filmfilter .ff-stage.has-image.compare-on canvas.ff-compare-canvas{display:block!important;z-index:3;clip-path:none!important}
#p-filmfilter .ff-stage.has-image .ff-empty{display:none!important}
#p-filmfilter .ff-stage-compare{display:none;position:absolute;right:12px;bottom:12px;z-index:8;height:36px;padding:0 14px;border-radius:18px;border:1px solid rgba(255,255,255,.55);background:rgba(24,22,20,.62);color:#fff;font-family:inherit;font-size:14px;font-weight:800;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:none;cursor:pointer}
#p-filmfilter .ff-stage.has-image .ff-stage-compare{display:inline-flex;align-items:center;justify-content:center}
#p-filmfilter .ff-stage.compare-on .ff-stage-compare{background:rgba(216,90,68,.88);border-color:rgba(255,255,255,.72)}
#p-filmfilter .ff-compare-divider{display:none;position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translateX(-1px);z-index:5;background:rgba(255,255,255,.92);box-shadow:0 0 0 1px rgba(0,0,0,.12)}
#p-filmfilter .ff-stage.compare-on .ff-compare-divider{display:block}
#p-filmfilter .ff-compare-label{display:none;position:absolute;top:12px;z-index:6;height:28px;padding:0 10px;border-radius:16px;background:rgba(20,18,17,.54);color:#fff;font-size:14px;font-weight:800;line-height:28px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
#p-filmfilter .ff-stage.compare-on .ff-compare-label{display:block}
#p-filmfilter .ff-compare-left{left:12px}
#p-filmfilter .ff-compare-right{right:12px}
#p-filmfilter .ff-rail{padding:2px 0 0!important;overflow:hidden}
#p-filmfilter .ff-presets{display:flex!important;gap:10px!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none!important;padding:3px 2px 4px!important}
#p-filmfilter .ff-presets::-webkit-scrollbar{display:none}
#p-filmfilter .ff-preset{flex:0 0 auto!important;width:72px!important;border:0!important;background:transparent!important;padding:0!important;margin:0!important;display:flex!important;flex-direction:column!important;gap:6px!important;align-items:center!important;box-shadow:none!important;transform:none!important}
#p-filmfilter .ff-preset-thumb{position:relative!important;width:72px!important;height:72px!important;border-radius:18px!important;overflow:hidden!important;background:#DFD7CD!important;border:2px solid transparent!important;box-shadow:none!important;outline:none!important}
#p-filmfilter .ff-preset-thumb img{width:100%!important;height:100%!important;object-fit:cover!important;display:block!important}
#p-filmfilter .ff-preset-name{font-size:14px!important;font-weight:700!important;line-height:1.25!important;color:#2A2723!important;text-align:center!important;white-space:nowrap!important}
#p-filmfilter .ff-preset.active .ff-preset-thumb{border-color:var(--brand-accent)!important;box-shadow:none!important;outline:none!important}
#p-filmfilter .ff-preset.active .ff-preset-name{color:var(--brand-accent)!important}
#p-filmfilter .ff-preset-badge{display:none!important}
#p-filmfilter .ff-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:12px!important;margin:0!important;padding:0!important;position:static!important;background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-radius:0!important}
#p-filmfilter .ff-btn{height:58px!important;border-radius:20px!important;font-size:18px!important;font-weight:800!important;box-shadow:none!important}
@media(max-height:760px){#p-filmfilter .ff-preset{width:66px!important}#p-filmfilter .ff-preset-thumb{width:66px!important;height:66px!important;border-radius:16px!important}#p-filmfilter .ff-btn{height:54px!important;font-size:17px!important}}



/* ==== v16154-ff-final-tune ==== */

/* ===== V16.1.54 免费滤镜终修：按住100%对比 / 大图 / 无悬浮通知 ===== */
#push-banner,.hl-result-card,.hl-light{display:none!important}
#p-filmfilter .t2{display:flex;align-items:center;gap:0;color:#7E766E}
#p-filmfilter .ff-dot{display:inline-block;margin:0 4px;font-size:14px;line-height:1;color:#262626;transform:translateY(-.5px)}
#p-filmfilter .ff-head-actions{gap:0}
#p-filmfilter .ff-topbtn.primary{min-width:108px;height:42px;border-radius:21px;background:#3a332e;color:#fff;border-color:#3a332e}
#p-filmfilter .ff-wrap{gap:10px}
#p-filmfilter .ff-stage{height:calc(100dvh - 252px)!important;min-height:52vh!important;max-height:none!important;border-radius:28px!important;background:#111!important;box-shadow:none!important}
#p-filmfilter .ff-stage canvas{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:none;pointer-events:none}
#p-filmfilter .ff-stage.has-image canvas.ff-main-canvas{display:block!important}
#p-filmfilter .ff-stage.has-image.compare-on canvas.ff-compare-canvas{display:block!important;z-index:3}
#p-filmfilter .ff-stage-compare{display:none;position:absolute;right:12px;bottom:12px;z-index:8;height:36px;padding:0 14px;border-radius:18px;border:1px solid rgba(255,255,255,.45);background:rgba(26,24,23,.58);color:#fff;font-family:inherit;font-size:14px;font-weight:800;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:none;cursor:pointer}
#p-filmfilter .ff-stage.has-image .ff-stage-compare{display:inline-flex;align-items:center;justify-content:center}
#p-filmfilter .ff-stage.compare-on .ff-stage-compare{background:rgba(26,24,23,.78);border-color:rgba(255,255,255,.72)}
#p-filmfilter .ff-compare-state,#p-filmfilter .ff-compare-divider,#p-filmfilter .ff-compare-label{display:none!important}
#p-filmfilter .ff-rail{padding-top:0}
#p-filmfilter .ff-presets{gap:10px;padding:2px 0 2px}
#p-filmfilter .ff-preset{width:72px;padding:0;background:transparent!important;border:none!important;box-shadow:none!important;gap:6px;align-items:center}
#p-filmfilter .ff-preset:active{transform:scale(.98)}
#p-filmfilter .ff-preset-thumb{position:relative;width:72px;height:72px;border-radius:18px;overflow:hidden;background:#ddd;border:1.5px solid rgba(37,33,29,.14);box-shadow:none!important}
#p-filmfilter .ff-preset.active .ff-preset-thumb{border:2px solid var(--brand-accent);box-shadow:none!important}
#p-filmfilter .ff-preset.active .ff-preset-thumb:after{display:none!important}
#p-filmfilter .ff-preset-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
#p-filmfilter .ff-preset-name{font-size:14px;font-weight:800;line-height:1.15;text-align:center;white-space:nowrap;color:#2a2723}
#p-filmfilter .ff-preset.active .ff-preset-name{color:var(--brand-accent)}
#p-filmfilter .ff-btn{height:58px;border-radius:20px}
#p-filmfilter .ff-btn.secondary{border:1px solid var(--line)}
#p-filmfilter .ff-btn.primary{box-shadow:none}
.dark-page #p-filmfilter .t1,[data-theme="dark"] #p-filmfilter .t1,body.dark #p-filmfilter .t1{color:#fff}
.dark-page #p-filmfilter .t2,[data-theme="dark"] #p-filmfilter .t2,body.dark #p-filmfilter .t2{color:rgba(255,255,255,.82)}
.dark-page #p-filmfilter .ff-dot,[data-theme="dark"] #p-filmfilter .ff-dot,body.dark #p-filmfilter .ff-dot{color:rgba(255,255,255,.9)}
.dark-page #p-filmfilter .back,[data-theme="dark"] #p-filmfilter .back,body.dark #p-filmfilter .back{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);color:#fff}
.dark-page #p-filmfilter .ff-preset-name,[data-theme="dark"] #p-filmfilter .ff-preset-name,body.dark #p-filmfilter .ff-preset-name{color:rgba(255,255,255,.92)}
.dark-page #p-filmfilter .ff-preset.active .ff-preset-name,[data-theme="dark"] #p-filmfilter .ff-preset.active .ff-preset-name,body.dark #p-filmfilter .ff-preset.active .ff-preset-name{color:#ff9f86}
.dark-page #p-filmfilter .ff-preset-thumb,[data-theme="dark"] #p-filmfilter .ff-preset-thumb,body.dark #p-filmfilter .ff-preset-thumb{border-color:rgba(255,255,255,.16)}
@media (max-height:760px){#p-filmfilter .ff-stage{height:calc(100dvh - 236px)!important;min-height:50vh!important}#p-filmfilter .ff-preset{width:68px}#p-filmfilter .ff-preset-thumb{width:68px;height:68px;border-radius:17px}#p-filmfilter .ff-btn{height:54px}}


/* ==== v16154-ff-preview-fix ==== */

#p-filmfilter .ff-stage-compare{touch-action:none;-webkit-user-select:none;user-select:none}
#p-filmfilter .ff-stage.compare-on .ff-stage-compare{background:rgba(216,90,68,.88)!important;border-color:rgba(255,255,255,.82)!important}


/* ==== v16154-ff-rail-hard-fix ==== */

/* 免费滤镜：滤镜栏必须始终可见，主图只占剩余空间 */
#p-filmfilter .scroll{overflow:hidden!important;min-height:0!important}
#p-filmfilter .ff-wrap{
  display:grid!important;
  grid-template-rows:minmax(0,1fr) 94px 58px!important;
  gap:10px!important;
  flex:1!important;
  min-height:0!important;
  height:auto!important;
  padding:0!important;
}
#p-filmfilter .ff-stage{
  grid-row:1!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  align-self:stretch!important;
  background:#111!important;
}
#p-filmfilter .ff-rail{
  grid-row:2!important;
  display:block!important;
  min-height:94px!important;
  height:94px!important;
  overflow:hidden!important;
  padding:0!important;
  visibility:visible!important;
  opacity:1!important;
}
#p-filmfilter .ff-presets{
  display:flex!important;
  align-items:flex-start!important;
  gap:10px!important;
  width:100%!important;
  min-height:94px!important;
  height:94px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  padding:2px 2px 0!important;
  margin:0!important;
  visibility:visible!important;
  opacity:1!important;
  scrollbar-width:none!important;
  -webkit-overflow-scrolling:touch;
}
#p-filmfilter .ff-presets::-webkit-scrollbar{display:none!important}
#p-filmfilter .ff-preset{
  display:flex!important;
  flex:0 0 72px!important;
  width:72px!important;
  min-width:72px!important;
  height:92px!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:var(--ink)!important;
  visibility:visible!important;
  opacity:1!important;
}
#p-filmfilter .ff-preset-thumb{
  display:block!important;
  position:relative!important;
  flex:none!important;
  width:72px!important;
  height:72px!important;
  border-radius:18px!important;
  overflow:hidden!important;
  border:1.5px solid rgba(37,33,29,.16)!important;
  background:#ddd!important;
  box-shadow:none!important;
}
#p-filmfilter .ff-preset-thumb img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
}
#p-filmfilter .ff-preset.active .ff-preset-thumb{border:2px solid var(--brand-accent)!important;box-shadow:none!important}
#p-filmfilter .ff-preset-name{
  display:block!important;
  height:16px!important;
  line-height:16px!important;
  font-size:14px!important;
  font-weight:800!important;
  text-align:center!important;
  white-space:nowrap!important;
  color:var(--ink)!important;
}
#p-filmfilter .ff-preset.active .ff-preset-name{color:var(--brand-accent)!important}
#p-filmfilter .ff-actions{
  grid-row:3!important;
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:12px!important;
  height:58px!important;
  min-height:58px!important;
  margin:0!important;
  padding:0!important;
  position:static!important;
}
#p-filmfilter .ff-btn{height:58px!important}
@media(max-height:760px){
  #p-filmfilter .ff-wrap{grid-template-rows:minmax(0,1fr) 86px 54px!important;gap:8px!important}
  #p-filmfilter .ff-rail,#p-filmfilter .ff-presets{height:86px!important;min-height:86px!important}
  #p-filmfilter .ff-preset{flex-basis:66px!important;width:66px!important;min-width:66px!important;height:84px!important}
  #p-filmfilter .ff-preset-thumb{width:66px!important;height:66px!important;border-radius:16px!important}
  #p-filmfilter .ff-actions,#p-filmfilter .ff-btn{height:54px!important;min-height:54px!important}
}


/* ==== v27-filmfilter-stable-preview ==== */

#p-filmfilter .ff-stage{background:#111!important;overflow:hidden!important}
#p-filmfilter .ff-preview-image{display:none;position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover!important;object-position:center center!important;border:0!important;border-radius:0!important;transform:none!important;transition:filter .12s linear;will-change:filter}
#p-filmfilter .ff-stage.has-image .ff-preview-image{display:block!important}
#p-filmfilter .ff-stage.has-image .ff-empty{display:none!important}
#p-filmfilter .ff-stage-compare{touch-action:none!important;-webkit-user-select:none!important;user-select:none!important}
#p-filmfilter .ff-preset{box-shadow:none!important}
#p-filmfilter .ff-preset-thumb{box-shadow:none!important;border:1.5px solid rgba(37,33,29,.16)!important}
#p-filmfilter .ff-preset.active .ff-preset-thumb{border:2px solid var(--brand-accent)!important;box-shadow:none!important;outline:none!important}
#p-filmfilter .ff-preset.active .ff-preset-name{color:var(--brand-accent)!important}


/* ==== ff-adaptive-ratio-preview-v28 ==== */

/* 免费滤镜：原比例自适应预览
   竖图沿用大图工作台；横图按原始宽高比宽度撑满；方图 1:1 居中。 */
#p-filmfilter .ff-stage{
  align-self:center;
  width:100%!important;
  transition:height .18s ease,aspect-ratio .18s ease,width .18s ease;
}
/* 竖图：沿用当前已经确认的大图视觉，允许 cover 填满工作台。 */
#p-filmfilter .ff-stage.ff-media-portrait{
  width:100%!important;
  height:calc(100dvh - 252px)!important;
  min-height:52vh!important;
  max-height:none!important;
  aspect-ratio:auto!important;
}
#p-filmfilter .ff-stage.ff-media-portrait .ff-preview-image{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
}
/* 横图：容器直接使用照片本身宽高比，宽度撑满，因此不再裁左右。 */
#p-filmfilter .ff-stage.ff-media-landscape{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  aspect-ratio:var(--ff-media-ratio,16/9)!important;
}
#p-filmfilter .ff-stage.ff-media-landscape .ff-preview-image{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  background:transparent!important;
}
/* 方图/接近方图：保持 1:1，居中显示。 */
#p-filmfilter .ff-stage.ff-media-square{
  width:min(100%,560px)!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  aspect-ratio:1/1!important;
  margin-left:auto!important;
  margin-right:auto!important;
}
#p-filmfilter .ff-stage.ff-media-square .ff-preview-image{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
  object-position:center center!important;
  background:transparent!important;
}
/* 还没选照片时仍维持竖向添加区域，不因自适应逻辑塌陷。 */
#p-filmfilter .ff-stage:not(.has-image){
  width:100%!important;
  height:calc(100dvh - 252px)!important;
  min-height:52vh!important;
  aspect-ratio:auto!important;
}
@media (max-height:760px){
  #p-filmfilter .ff-stage.ff-media-portrait,
  #p-filmfilter .ff-stage:not(.has-image){height:calc(100dvh - 236px)!important;min-height:50vh!important}
}

/* ===== 2026-10-04 暖心帮帮完整状态机 + 结伴出游适老优化 ===== */
.elder-service-grid{display:grid;grid-template-columns:1fr;gap:10px;margin:12px 0}.elder-service-grid button{border:0;background:var(--card,#fff);border-radius:18px;padding:16px;text-align:left;display:grid;grid-template-columns:52px 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;box-shadow:0 3px 14px rgba(69,49,37,.07);color:var(--ink)}.elder-service-grid i{grid-row:1/3;font-size:34px;font-style:normal;text-align:center}.elder-service-grid b{font-size:20px}.elder-service-grid span{font-size:14px;color:var(--sub);margin-top:3px}.hz-voice-main{width:100%;min-height:64px;border:0;border-radius:18px;background:var(--accent,#e8732a);color:#fff;font-size:20px;font-weight:800;padding:14px 18px;margin:10px 0;box-shadow:0 6px 18px rgba(232,115,42,.2)}.hz-home-links{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0 14px}.hz-home-links button{min-height:46px;border:1px solid rgba(150,112,88,.2);background:var(--card,#fff);border-radius:16px;font-size:16px;font-weight:700;color:var(--ink)}.outing-location{display:flex;align-items:center;gap:8px;background:var(--card,#fff);border-radius:16px;padding:12px 14px;margin:8px 0}.outing-location b{flex:1;font-size:15px}.outing-filters{display:flex!important;gap:8px;flex-wrap:wrap;margin:10px 0}.hz-order-card{display:flex;align-items:center;gap:12px;background:var(--card,#fff);border-radius:18px;padding:14px;margin:10px 0;box-shadow:0 3px 14px rgba(69,49,37,.07);cursor:pointer}.hz-order-icon{width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff3e8;font-size:25px;flex:none}.hz-order-main{min-width:0;flex:1}.hz-order-top{display:flex;align-items:center;gap:8px}.hz-order-top b{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.hz-state{font-size:14px;padding:3px 7px;border-radius:12px;background:#edf6ee;color:#527c55;white-space:nowrap}.hz-order-sub{font-size:14px;color:var(--sub);margin-top:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hz-order-go{border:0;border-radius:12px;background:#fff0e4;color:var(--accent,#d96d2f);font-weight:800;padding:10px 12px}.hz-badge.student{display:inline-block;background:#fff0dc;color:#a55c0d;border-radius:8px;padding:1px 5px;font-size:14px}.hz-helper-summary{background:var(--card,#fff);padding:14px;border-radius:16px;margin:12px 0;display:flex;align-items:center;gap:12px}.hz-helper-summary>div{display:flex;flex-direction:column;gap:4px;flex:1}.hz-helper-summary span{color:var(--sub);font-size:14px}.hz-safety-card{border-radius:16px;padding:14px;margin:12px 0;display:flex;flex-direction:column;gap:5px}.hz-safety-card.ok{background:#eef7ed;color:#416e44}.hz-safety-card.pending{background:#fff5e9;color:#85552b}.hz-safety-card b{font-size:16px}.hz-safety-card span{font-size:14px;line-height:1.5}.hz-service-list{display:grid;gap:10px;margin:14px 0}.hz-service-list button{border:0;background:var(--card,#fff);border-radius:16px;padding:14px;display:flex;align-items:center;gap:14px;text-align:left;color:var(--ink);box-shadow:0 3px 12px rgba(69,49,37,.06)}.hz-service-list i{font-style:normal;font-size:28px;width:42px;text-align:center}.hz-service-list div{display:flex;flex-direction:column;gap:3px}.hz-service-list b{font-size:18px}.hz-service-list span{color:var(--sub);font-size:14px}.hz-safety-mini{background:#fff8ef;border-radius:16px;padding:13px 14px;margin:12px 0;display:grid;grid-template-columns:auto 1fr;gap:7px 10px}.hz-safety-mini b{font-size:14px;color:#835f46}.hz-safety-mini span{font-size:14px;color:var(--ink)}.hz-wait{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;padding:18px;background:var(--card,#fff);border-radius:18px}.hz-wait b{font-size:18px}.hz-wait span{font-size:14px;color:var(--sub);line-height:1.5}.hz-pulse{font-size:38px;animation:hzPulse 1.8s ease-in-out infinite}@keyframes hzPulse{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.15);opacity:1}}.hz-track{display:flex;overflow-x:auto;gap:6px;background:var(--card,#fff);padding:14px 10px;border-radius:16px}.hz-track-step{min-width:58px;display:flex;flex-direction:column;align-items:center;gap:5px;color:#a99b91;font-size:14px}.hz-track-step i{width:27px;height:27px;border-radius:50%;background:#eee7e1;display:flex;align-items:center;justify-content:center;font-style:normal;font-weight:800}.hz-track-step.on{color:#5e875f}.hz-track-step.on i{background:#e4f2e3;color:#49784c}.hz-state-note{text-align:center;padding:9px 0 2px;color:var(--sub);font-size:14px}.hz-helper-card{display:flex;align-items:center;gap:12px;background:var(--card,#fff);padding:13px;border-radius:16px;margin:10px 0}.hz-avatar{width:48px;height:48px;border-radius:50%;background:#fff0e4;display:flex;align-items:center;justify-content:center;font-size:26px}.hz-helper-card>div:last-child{display:flex;flex-direction:column;gap:3px}.hz-helper-card span{color:var(--sub);font-size:14px}.hz-actions{display:flex;flex-direction:column;gap:10px;margin:14px 0}.hz-actions .big-btn,.hz-actions .hz-sos-btn,.hz-actions .fchip{width:100%;min-height:52px}.hz-sos-btn{border:0;border-radius:16px;background:#d84843;color:#fff;font-size:18px;font-weight:800}.hz-event{display:flex;gap:10px;padding:8px 2px}.hz-event>i{width:9px;height:9px;margin-top:5px;border-radius:50%;background:#dc7b45;flex:none}.hz-event>div{display:flex;flex-direction:column;gap:2px}.hz-event b{font-size:14px}.hz-event span{font-size:14px;color:var(--sub);line-height:1.4}.hz-student-benefits{background:#fff4e7;border-radius:16px;padding:15px;display:flex;flex-direction:column;gap:8px;margin:12px 0}.hz-student-benefits b{font-size:18px}.hz-student-benefits span{font-size:14px}.hz-radio{display:flex;align-items:center;gap:8px;background:var(--card,#fff);border-radius:16px;padding:14px;margin:8px 0;font-size:16px}.hz-cert-success,.hz-cert-pending{border-radius:16px;padding:16px;text-align:center;font-size:19px;font-weight:800;margin:12px 0}.hz-cert-success{background:#eaf5e9;color:#4b7c4e}.hz-cert-pending{background:#fff4e6;color:#93632f}@media(min-width:520px){.elder-service-grid{grid-template-columns:repeat(3,1fr)}.elder-service-grid button{grid-template-columns:1fr;grid-template-rows:auto auto auto;text-align:center}.elder-service-grid i{grid-row:auto}.hz-actions{flex-direction:row;flex-wrap:wrap}.hz-actions .big-btn,.hz-actions .hz-sos-btn,.hz-actions .fchip{width:auto;flex:1;min-width:160px}}

/* ===== V5 暖心帮帮：生产预约时间/时长输入 ===== */
.hzux-datetime-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.hzux-datetime-grid label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--hz-sub,#7A6A58)}
.hzux-datetime-grid .hzux-input{font-size:18px;font-weight:750;min-height:54px}
.hzux-duration-custom{display:flex;align-items:center;gap:10px;margin-top:10px}
.hzux-duration-custom .hzux-input{flex:1;font-size:18px;font-weight:750}
.hzux-duration-custom span{flex:none;font-size:16px;font-weight:700}
.hzux-time-preview{border-radius:18px;background:#FFF3E7;border:1px solid #F2D5BC;padding:14px 16px;color:#8A4B25;font-size:15px;font-weight:700;line-height:1.65}
.hzux-time-preview.ready{background:#EEF7EA;border-color:#CFE3C8;color:#3F6E38}
.hzux-time-preview b{color:var(--ink,#2B2018);font-size:17px}
@media(max-width:360px){.hzux-datetime-grid{grid-template-columns:1fr}.hzux-datetime-grid .hzux-input{font-size:17px}}


/* ===== V2｜主站设计系统所有权收口（2026-10-09） ===== */
/* 公共主操作规格：业务可保留主题背景，但尺寸、字号和圆角统一。 */
.big-btn,.shop-main-btn{min-height:var(--control-h-lg);height:auto;border-radius:var(--radius-action);font-size:var(--fs-action);font-weight:700}
#phone .back,#phone .page button[aria-label],#phone .page .msg-btn,#phone .page .icon-btn{min-width:var(--control-h-sm);min-height:var(--control-h-sm)}
#p-shop .shop-source-card button,#p-shop-history .shop-head-action{min-height:var(--control-h-sm);min-width:56px;font-size:16px}
/* 登录/协议触控目标 */
.lg-check{align-items:flex-start;font-size:15px;line-height:1.65}
.lg-consent-toggle{width:48px;height:48px;min-width:48px;min-height:48px;display:flex;align-items:flex-start;justify-content:center;cursor:pointer}
.lg-check input[type="checkbox"],.lg-consent-row input[type="checkbox"]{width:26px;height:26px;min-width:26px;min-height:26px;margin:1px 0 0;accent-color:var(--primary)}
.lg-check a{color:var(--primary);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.lg-consent-row{display:flex;align-items:flex-start;gap:10px;width:100%;cursor:pointer;line-height:1.65}
.lg-consent-row>span{flex:1;min-width:0}
/* 新增/空态与账户页组件，原先只存在于 runtime-delta，现归主站所有。 */
[data-theme="classic"] .hero-card p{color:#C9CFCB}
.ad-img{width:100%;height:100%;object-fit:cover;display:block}
.sec-head .sec-retry-link{border:0;background:transparent;color:var(--sub);font:inherit;font-size:14px;padding:8px 0;min-height:48px;cursor:pointer;text-align:right}
.sec-head .sec-retry-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}
.wallet-ledger-head{margin-top:20px}
.wallet-tx-list{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.wallet-tx-row{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);min-height:56px}
.wallet-tx-row:last-child{border-bottom:0}
.wallet-tx-main{flex:1;min-width:0}
.wallet-tx-main b{display:block;font-size:15px;color:var(--ink);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wallet-tx-main span{display:block;margin-top:3px;font-size:14px;color:var(--sub)}
.wallet-tx-amount{font-size:16px;font-weight:800;color:var(--ink);white-space:nowrap}
.wallet-tx-amount.pos{color:#2f7a55}
.t2,.hello p,.voice-hint,.step-lbl small,.sec-head>span,.wallet .w-in span,.profile-card .ds{font-size:max(var(--ux-sub),1em);line-height:1.45}
.pub-btn,.bigfont{min-height:48px;height:auto;padding:10px 16px;font-size:15px}
[role="button"][tabindex="0"]{cursor:pointer}
.phone.bf1 .tabbar,.phone.bf1 #sheet,.phone.bf1 #toast,.phone.bf1 .page.active>.pagehead{zoom:1.08}
.phone.bf .tabbar,.phone.bf #sheet,.phone.bf #toast,.phone.bf .page.active>.pagehead{zoom:1.16}
.ux-edit-link{align-self:center;color:var(--accent);font-size:16px;flex:none}
.ux-profile-head{margin-top:18px}
.profile-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0 20px}
.profile-quick-grid>button{position:relative;min-height:126px;border:1px solid var(--line);background:var(--card);border-radius:20px;padding:16px 14px;text-align:left;color:var(--ink);font-family:inherit;box-shadow:0 3px 12px rgba(80,50,35,.06)}
.profile-quick-grid>button i{display:block;font-style:normal;font-size:31px;margin-bottom:9px}
.profile-quick-grid>button b{display:block;font-size:18px;line-height:1.25}
.profile-quick-grid>button span{display:block;margin-top:5px;font-size:14px;line-height:1.4;color:var(--sub)}
.profile-quick-grid .hz-prof-badge{position:absolute;right:10px;top:10px;font-style:normal;font-size:14px;background:#FFF0E3;color:#8A470F;border-radius:999px;padding:4px 8px}
.ux-ic-red{background:rgba(180,70,70,.12)}
.ux-ic-green{background:rgba(92,127,114,.16)}
.ux-ic-gold{background:rgba(227,178,104,.18)}
.ux-ic-gray{background:rgba(138,155,168,.2)}
.ux-coming-hero{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;margin:14px 0 18px}
.ux-coming-hero-icon{width:52px;height:52px;border-radius:17px;background:var(--chip);display:flex;align-items:center;justify-content:center;font-size:28px;flex:none}
.ux-coming-hero b{display:block;font-size:20px;color:var(--ink);line-height:1.35}
.ux-coming-hero p{margin:7px 0 0;color:var(--sub);font-size:15px;line-height:1.65}
.ux-coming-group{margin:22px 0}
.ux-coming-group h3{margin:0 0 10px;font-size:19px;color:var(--ink)}
.ux-coming-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ux-coming-item{min-height:104px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}
.ux-coming-item i{font-style:normal;font-size:27px;margin-bottom:7px}
.ux-coming-item b{font-size:17px;color:var(--ink)}
.ux-coming-item span{font-size:14px;color:var(--sub);margin-top:3px;line-height:1.35}
.ux-coming-back{margin-top:8px}
.ux-service-tile{display:block;width:100%;border:0;background:#fff;border-radius:16px;padding:20px 16px;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.1);cursor:pointer;color:#1F2624;font-family:inherit}
.ux-service-tile b{display:block;font-size:17px}
.ux-service-tile span{display:block;font-size:14px;color:#6B625C;margin-top:5px;line-height:1.4}
.ux-service-emoji{font-size:38px;margin-bottom:8px}
.ux-coming-entry{border:1px solid var(--line)}
.ux-page-note{text-align:center;color:#6B625C;font-size:15px;line-height:1.55;margin-top:20px}
.ux-empty-card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:24px 18px;text-align:center;margin-top:18px}
.ux-empty-icon{font-size:46px}
.ux-empty-card>b{display:block;font-size:21px;margin:8px 0}
.ux-empty-card p{font-size:16px;line-height:1.65;color:var(--sub);margin:0 0 16px}
.lg-consent-toggle{width:48px;height:48px;min-width:48px;min-height:48px;display:flex;align-items:flex-start;justify-content:center;cursor:pointer}
.lg-check input[type="checkbox"]{appearance:auto;width:26px;height:26px;min-width:26px;min-height:26px;margin:1px 0 0;accent-color:var(--primary)}
.lg-check a{color:var(--primary);font-weight:700;text-decoration:underline;text-underline-offset:2px}
.lg-consent-row{display:flex;align-items:flex-start;gap:10px;width:100%;cursor:pointer;line-height:1.65}
.lg-consent-row input[type="checkbox"]{width:26px;height:26px;min-width:26px;min-height:26px;margin:1px 0 0;accent-color:var(--primary);flex:none}
.lg-consent-row>span{flex:1;min-width:0}
#phone .page button,
#phone .page [role="button"],
#phone .sheet button,
#phone .overlay button{min-height:48px}
#phone .page .back,
#phone .page button[aria-label],
#phone .page .msg-btn,
#phone .page .icon-btn{min-width:48px;min-height:48px}
#p-family #family-list .v17-empty-note,
#p-memory #mem-grid .v17-empty-note,
#p-mall #mall-grid .v17-empty-note,
#p-member #member-products .v17-empty-note,
#p-exchange .ex-list .v17-empty-note{padding:24px 16px;text-align:center;color:var(--sub);line-height:1.65}
#p-family #family-list .v17-empty-note button,
#p-memory #mem-grid .v17-empty-note button,
#p-mall #mall-grid .v17-empty-note button,
#p-member #member-products .v17-empty-note button,
#p-exchange .ex-list .v17-empty-note button{margin-top:12px;padding:0 18px;border-radius:16px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:16px;font-weight:700}
#p-member .member-real-benefits{display:flex;flex-direction:column;gap:5px;margin:10px 0 14px}
#p-member .member-real-benefits i{font-style:normal;color:var(--sub);font-size:15px;line-height:1.45}
#p-member .mt2{height:auto;min-height:150px;padding-bottom:14px}
#p-member .mt2 .mem-cta{width:100%;margin-top:4px}
.pub-btn,.bigfont{min-height:var(--control-h-sm);height:auto;border-radius:var(--radius-pill);font-size:var(--fs-sm);padding:0 16px}
/* 最低可读字号：仅覆盖明确的说明/状态文字，不暴力放大图标与牌面。 */
.t2,.hello p,.voice-hint,.step-lbl small,.sec-head>span,.wallet .w-in span,.profile-card .ds{font-size:max(var(--fs-sm),1em)}
.sec-head .sec-retry-link{min-height:48px;padding:0 12px;border-radius:var(--radius-pill)}

/* V2｜从 index.html 收回的公共固定头部/全屏容器样式 */
#hl-s2-video-box{position:absolute;inset:0;z-index:3;pointer-events:none}
.hl-render-mode-chip{background:rgba(255,255,255,.15);color:var(--ink);border:0;border-radius:50%;width:48px;height:48px;cursor:pointer;margin-right:8px;pointer-events:auto;position:relative;z-index:var(--z-popover);display:flex;align-items:center;justify-content:center;font-size:16px}
.legacy-fixed-head{position:fixed;top:0;left:0;right:0;z-index:var(--z-overlay);background:var(--surface-page);padding:calc(env(safe-area-inset-top,0px) + 10px) 16px 10px;box-sizing:border-box;display:flex;align-items:center;gap:12px}
.legacy-fixed-head .legacy-round-back{width:48px;height:48px;background:rgba(255,255,255,.9);border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer}
.legacy-fixed-head .legacy-head-title{font-size:20px;font-weight:700}
.scroll.legacy-fixed-head-space{padding-top:calc(env(safe-area-inset-top,0px) + 70px)}
.legacy-fixed-head-content{padding:calc(env(safe-area-inset-top,0px) + 78px) 16px 20px}
.legacy-map-content{padding-top:calc(env(safe-area-inset-top,0px) + 92px);padding-left:18px;padding-right:18px}
.calendar-embed-shell{position:fixed;inset:0;z-index:var(--z-fullscreen)}
.calendar-embed-frame{width:100%;height:100%;border:0;display:block}


/* ===== V3 UX语义修正版：游戏/会员/家人 ===== */
#p-games .game-tile .gt-play,#p-games .play-sm{background:var(--brand-primary);color:var(--on-primary);border:none;box-shadow:none}
#p-games .game-tile .gt-play{border-radius:var(--radius-action);min-height:48px;height:auto;font-size:16px;font-weight:700}
#p-games .play-sm{min-height:48px;height:auto;border-radius:var(--radius-action);font-size:16px;font-weight:700}
.gl-landscape-gate{display:none;position:absolute;inset:0;z-index:calc(var(--z-overlay-control) - 1);background:var(--brand-primary);align-items:center;justify-content:center;padding:24px;color:var(--on-primary);text-align:center}
.gl-landscape-gate.show{display:flex}
.gl-landscape-card{max-width:360px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:26px 22px;border-radius:var(--radius-card);background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.14)}
.gl-landscape-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.08);font-size:38px}
.gl-landscape-card b{font-size:24px}.gl-landscape-card span{font-size:16px;line-height:1.7;color:rgba(255,255,255,.78)}
/* 会员回归全局设计语言，不再使用独立红金体系 */
#p-member .mem-top{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-card);margin:6px 0 18px;padding:18px;border-radius:var(--radius-card)}
#p-member .mem-top::before,#p-member .mem-top::after{display:none}
#p-member .mem-crown .ci{background:var(--chip);color:var(--brand-primary);box-shadow:none}
#p-member .mem-crown b{color:var(--ink);font-size:20px;letter-spacing:0}
#p-member .mem-crown span{color:var(--sub);font-size:16px}
#p-member .mem-tiers2{grid-template-columns:1fr;gap:12px}
#p-member .mt2,#p-member .mt2.on{background:var(--card);border:1px solid var(--line);box-shadow:none;border-radius:var(--radius-card);text-align:left;padding:16px}
#p-member .mt2>b,#p-member .mt2.on>b{color:var(--ink);font-size:18px;letter-spacing:0}
#p-member .mt2 .num,#p-member .mt2.on .num{color:var(--brand-primary);font-size:24px}
#p-member .mt2>span,#p-member .mt2.on>span{color:var(--sub);font-size:16px}
#p-member .mem-cta{background:var(--brand-primary);color:var(--on-primary);box-shadow:none;border-radius:var(--radius-action);font-size:18px;font-weight:700}
#p-member .member-real-benefits i{font-size:16px}
.secondary-action{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.family-call-card{width:100%;min-height:76px;border:1px solid var(--line);background:var(--card);border-radius:var(--radius-card);display:flex;align-items:center;gap:14px;padding:14px 16px;text-align:left;font-family:inherit;color:var(--ink)}
.family-call-avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--chip);font-size:24px;flex:none}.family-call-copy{flex:1;min-width:0}.family-call-copy b{display:block;font-size:18px}.family-call-copy small{display:block;font-size:15px;color:var(--sub);margin-top:3px}.family-call-action{min-width:62px;height:44px;border-radius:var(--radius-action);background:var(--brand-primary);color:var(--on-primary);display:grid;place-items:center;font-size:16px;font-weight:700}
.ledger-cancel-btn{min-height:44px;border:1px solid var(--line);background:var(--card);color:var(--state-danger);border-radius:var(--radius-action);padding:0 14px;font-family:inherit;font-size:15px;font-weight:700;margin-top:10px}


/* ============ 即将开放·服务卡片（svc） ============ */
.svc-list{padding:4px 0 16px}
.svc-card{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:12px;position:relative;cursor:pointer;transition:transform .15s;margin-bottom:12px}
.svc-card:active{transform:scale(.98)}
.svc-card .svc-img{width:120px;height:90px;border-radius:16px;object-fit:cover;flex:none;background:#EFEAE2}
.svc-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;padding-right:66px}
.svc-info b{font-size:17px;color:var(--ink);font-weight:700}
.svc-info p{margin:0;font-size:14px;color:var(--sub);line-height:1.45}
.svc-more{display:inline-block;margin-top:6px;align-self:flex-start;padding:7px 18px;border-radius:999px;border:1.5px solid var(--brand-accent);background:#FDF6F2;color:var(--brand-accent-strong);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer}
.svc-tag{position:absolute;top:12px;right:12px;font-size:14px;font-weight:600;color:var(--brand-accent-strong);background:color-mix(in srgb,var(--brand-accent) 14%,transparent);padding:3px 10px;border-radius:999px;white-space:nowrap}
.svc-extra{display:none}
.svc-extra.show{display:block}
.svc-more-row{display:flex;align-items:center;justify-content:center;height:46px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--ink);font-size:15px;font-weight:600;cursor:pointer}
.svc-more-row i{font-style:normal;margin-left:6px}
/* ============ 即将开放·提示弹窗 ============ */
.svc-modal-mask{position:fixed;inset:0;background:rgba(31,38,36,.45);z-index:9998;display:none;align-items:center;justify-content:center}
.svc-modal-mask.show{display:flex}
.svc-modal{width:min(320px,86vw);background:#fff;border-radius:24px;padding:28px 22px 20px;text-align:center;box-shadow:0 12px 40px rgba(0,0,0,.18)}
.svc-modal b{display:block;font-size:18px;color:var(--brand-primary);font-weight:700;margin-bottom:10px}
.svc-modal p{margin:0 0 18px;font-size:14px;color:#6B6B66;line-height:1.6}
.svc-modal button{width:100%;height:46px;border:none;border-radius:999px;background:var(--brand-primary);color:#fff;font-size:16px;font-weight:700;font-family:inherit;cursor:pointer}
/* 游戏卡副标题与统一墨绿开玩按钮 */
#p-games .game-tile .gt-sub{font-size:14px;color:var(--sub);margin-top:1px}
#p-games .game-tile .gt-play{min-height:42px;height:auto;border-radius:var(--radius-action,12px);font-size:15px;font-weight:700}

/* V9 | 我的-订单与资金：顶部常用入口 + 粘性分类，避免长列表把关键入口压到底部 */
.account-record-scroll{padding-bottom:calc(28px + env(safe-area-inset-bottom))}
.account-quick-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 12px}
.account-quick-actions>button{min-height:104px;border:1px solid var(--line);background:var(--card);border-radius:18px;padding:13px 10px;text-align:left;color:var(--ink);font-family:inherit;box-shadow:0 3px 12px rgba(80,50,35,.05)}
.account-quick-actions>button:active{transform:scale(.985)}
.account-quick-icon{display:block;font-size:26px;line-height:1;margin-bottom:9px}
.account-quick-actions b{display:block;font-size:17px;line-height:1.25}
.account-quick-actions small{display:block;margin-top:5px;color:var(--sub);font-size:14px;line-height:1.35;font-weight:600}
.account-record-tabs{position:sticky;top:0;z-index:18;display:flex;gap:8px;margin:8px -2px 12px;padding:8px 2px;background:linear-gradient(180deg,var(--bg) 78%,rgba(250,249,247,0));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.account-record-tabs button{flex:1;min-height:48px;border:1px solid var(--line);border-radius:16px;background:var(--card);color:var(--sub);font:800 16px/1.2 inherit;padding:0 10px}
.account-record-tabs button.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.account-record-tabs button span{font-size:14px;opacity:.88}
.account-record-panel[hidden]{display:none}
.account-record-panel>.sec-head{margin-top:4px}
@media(max-width:360px){.account-quick-actions{gap:8px}.account-quick-actions>button{padding:12px 8px}.account-quick-actions b{font-size:16px}.account-quick-actions small{font-size:14px}}


/* ===== V53 / 2026-10-10 · Android WebView 浅色阴影与全屏文字栏收口 =====
   目标：去除 APK 中 color-mix/焦点叠加造成的黑影、黑金双框；网页端保持同一轻阴影语义。 */
.pub-btn{
  box-shadow:0 3px 10px rgba(94,55,31,.10);
}
#p-huagelive .hl-kb{
  left:14px;right:14px;
  padding:6px;
  border:1px solid rgba(236,223,200,.78);
  border-radius:20px;
  box-shadow:0 6px 20px rgba(94,55,31,.12),0 1px 0 rgba(255,255,255,.74) inset;
}
#p-huagelive .hl-kb-in{gap:6px}
#p-huagelive .hl-kb-in input,#hl-kb-input{
  height:42px;
  min-height:42px;
  border-radius:16px;
  border:1px solid rgba(122,106,88,.20);
  background:rgba(255,255,255,.96);
  padding:0 12px;
  box-shadow:none;
  outline:none;
  -webkit-appearance:none;appearance:none;
}
#p-huagelive .hl-kb-in input:focus,#p-huagelive .hl-kb-in input:focus-visible,#hl-kb-input:focus,#hl-kb-input:focus-visible{
  border-color:rgba(201,154,69,.42);
  box-shadow:none;
  outline:none;
}
#p-huagelive .hl-kb-send,#p-huagelive .hl-kb-hide{
  height:48px;min-height:48px;border-radius:16px;
}
#p-huagelive .hl-kb-send{
  box-shadow:0 3px 10px rgba(94,55,31,.10);
}
/* 同类浅色页面按钮统一为棕金轻阴影，避免 Android WebView 将动态颜色阴影渲染成黑块。 */
.page:not(.dark-page) .game-tile .gt-play,
.page:not(.dark-page) .ff-btn.primary,
.page:not(.dark-page) .shop-main-btn,
.page:not(.dark-page) .cv .use{
  box-shadow:0 3px 10px rgba(94,55,31,.10);
}
.page:not(.dark-page) .game-hero .go button{box-shadow:0 3px 10px rgba(94,55,31,.09)}
.shop-query-input:focus{box-shadow:0 0 0 2px rgba(178,58,46,.10)}


/* ===== V29 发起结伴输入框最终统一：实线、浅边框、无虚线 ===== */
#p-outpub .out-inp{
  width:100%;box-sizing:border-box;margin-top:10px;
  border:1px solid var(--border-default);border-style:solid;
  background:var(--surface-card);border-radius:var(--radius-input);
  padding:13px 15px;font-size:16px;color:var(--ink);font-family:inherit;
  outline:none;box-shadow:none;-webkit-appearance:none;appearance:none;
}
#p-outpub .out-inp:focus{
  border-color:var(--brand-primary);
  box-shadow:0 0 0 3px rgba(178,58,46,.08);
}

/* ===== V30 发起结伴：紧凑信息格 + 按需底部选择层 ===== */
#p-outpub .outing-compact-screen{padding-bottom:calc(10px + env(safe-area-inset-bottom))}
#p-outpub .outing-voice-btn{width:100%;min-height:54px;margin:0;border:1.5px solid var(--brand-primary);border-radius:999px;background:var(--surface-card);color:var(--brand-primary);font:800 17px/1.2 inherit;box-shadow:none;white-space:nowrap}
#p-outpub .outing-summary-list{display:grid;gap:8px;margin:8px 0 14px}
#p-outpub .outing-summary-row{width:100%;min-height:58px;display:flex;align-items:center;gap:12px;padding:9px 14px;border:1px solid var(--border-default);border-radius:18px;background:var(--surface-card);color:var(--ink);text-align:left;font-family:inherit;box-shadow:none}
#p-outpub .outing-row-copy{min-width:0;flex:1;display:grid;grid-template-columns:88px minmax(0,1fr);align-items:center;gap:10px}
#p-outpub .outing-row-copy small{font-size:15px;color:var(--sub);font-weight:700;white-space:nowrap}
#p-outpub .outing-row-copy b{font-size:17px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
#p-outpub .outing-summary-row em{font-size:26px;font-style:normal;color:var(--sub);line-height:1}
#p-outpub .outing-publish-btn{margin:0;min-height:54px;font-size:19px}
#p-outpub .outing-bottom-actions{display:grid;grid-template-columns:minmax(112px,.78fr) minmax(0,1.55fr);gap:10px;margin-top:auto;position:sticky;bottom:0;z-index:8;padding:10px 0 calc(8px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(255,255,255,0),var(--surface-page) 22%,var(--surface-page))}
#p-outpub.outing-sheet-open .scroll{overflow:hidden}
#p-outpub .outing-sheet-mask{display:none;position:absolute;inset:0;z-index:100;background:rgba(20,29,27,.30);align-items:flex-end}
#p-outpub .outing-sheet-mask.open{display:flex}
#p-outpub .outing-sheet{width:100%;max-height:min(72%,580px);overflow:auto;padding:0 18px calc(18px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;background:var(--surface-card);box-shadow:0 -16px 44px rgba(18,28,25,.16);overscroll-behavior:contain}
#p-outpub .outing-sheet-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;min-height:60px;border-bottom:1px solid var(--line);background:var(--surface-card)}
#p-outpub .outing-sheet-head b{font-size:20px}
#p-outpub .outing-sheet-head button{width:42px;height:42px;border:0;border-radius:50%;background:var(--chip);color:var(--ink);font-size:26px}
#p-outpub .outing-editor{padding:15px 0 8px}
#p-outpub .outing-editor>label{display:block;margin-bottom:10px;font-size:17px;font-weight:800;color:var(--ink)}
#p-outpub .outing-editor .chips{margin:0 0 10px;display:flex;gap:8px;flex-wrap:wrap}
#p-outpub .outing-quick-days{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
#p-outpub .outing-quick-days::-webkit-scrollbar{display:none}
#p-outpub .outing-quick-days .fchip{flex:none}
#p-outpub .outing-datetime-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:10px;margin-bottom:10px}
#p-outpub .outing-datetime-grid label span{display:block;margin-bottom:6px;color:var(--sub);font-size:14px;font-weight:700}
#p-outpub .outing-datetime-grid .out-inp{margin-top:0}
#p-outpub .outing-option-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
#p-outpub .outing-option-grid button{min-height:48px;border:1px solid var(--border-default);border-radius:16px;background:var(--surface-card);color:var(--ink);font:700 16px/1.2 inherit;padding:0 6px}
#p-outpub .outing-option-grid button.on{border-color:var(--brand-primary);background:var(--brand-primary);color:var(--on-primary)}
#p-outpub .outing-custom-line{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin-top:10px}
#p-outpub .outing-custom-line .out-inp{margin-top:0}
#p-outpub .outing-custom-line span{font-size:16px;color:var(--sub)}
#p-outpub .outing-saved-place{display:block;width:100%;min-height:44px;margin:0 0 8px;border:1px solid var(--border-default);border-radius:16px;background:var(--chip);color:var(--ink);font:700 15px/1.3 inherit;text-align:left;padding:0 12px}
#p-outpub .outing-safe-note{display:block;margin-top:8px;color:var(--sub);font-size:14px;line-height:1.45}
#p-outpub .outing-sheet-actions{position:sticky;bottom:0;padding-top:12px;background:var(--surface-card)}
#p-outpub .outing-sheet-actions .big-btn{margin:0}
@media(max-width:360px){#p-outpub .outing-row-copy{grid-template-columns:76px minmax(0,1fr);gap:7px}#p-outpub .outing-row-copy b{font-size:16px}#p-outpub .outing-option-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ===== V30.1 发起结伴：活动内容在当前行直接编辑 ===== */
#p-outpub .outing-inline-row{cursor:text}
#p-outpub .outing-inline-input{width:100%;min-width:0;height:38px;box-sizing:border-box;border:1px solid var(--border-default);border-radius:12px;background:var(--surface-card);padding:0 10px;color:var(--ink);font:700 16px/1.2 inherit;outline:none;box-shadow:none;-webkit-appearance:none;appearance:none}
#p-outpub .outing-inline-input:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px rgba(178,58,46,.07)}
#p-outpub .outing-inline-row.editing em{opacity:.28}

/* ===== V32 发起结伴：同一行编辑 + 高德式上下滚轮 + 行内地点下拉 ===== */
#p-outpub .outing-row-copy small{grid-column:1;grid-row:1}
#p-outpub .outing-row-copy b{grid-column:2;grid-row:1}
#p-outpub .outing-row-copy .outing-inline-input{grid-column:2;grid-row:1;margin:0;height:36px;padding:0 8px;border-radius:12px}
#p-outpub .outing-place-inline-row{cursor:text}
#p-outpub .outing-place-dropdown{display:grid;gap:6px;margin:-2px 0 2px;padding:6px;border:1px solid var(--border-default);border-radius:16px;background:var(--surface-card);box-shadow:0 8px 22px rgba(30,28,24,.08)}
#p-outpub .outing-place-dropdown[hidden]{display:none}
#p-outpub .outing-place-dropdown button{min-height:44px;border:0;border-radius:12px;background:var(--surface-muted);padding:7px 10px;text-align:left;color:var(--ink);font-family:inherit}
#p-outpub .outing-place-dropdown button small{display:block;color:var(--sub);font-size:14px;line-height:1.2}
#p-outpub .outing-place-dropdown button b{display:block;margin-top:2px;font-size:15px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#p-outpub .outing-place-empty{padding:8px 10px;color:var(--sub);font-size:14px;line-height:1.4}
#p-outpub .outing-wheel-sheet{max-height:none;overflow:visible}
#p-outpub .outing-wheel-hint{text-align:center;color:var(--sub);font-size:14px;padding:10px 0 4px}
#p-outpub .outing-wheel-grid{position:relative;display:grid;gap:8px;margin:4px 0 8px}
#p-outpub .outing-wheel-grid-time{grid-template-columns:1.35fr .72fr .72fr}
#p-outpub .outing-wheel-grid-duration{grid-template-columns:1fr 1fr;max-width:320px;margin-left:auto;margin-right:auto}
#p-outpub .outing-wheel-grid::before,#p-outpub .outing-wheel-grid::after{content:"";position:absolute;left:0;right:0;height:1px;background:var(--border-default);z-index:2;pointer-events:none}
#p-outpub .outing-wheel-grid::before{top:46px}
#p-outpub .outing-wheel-grid::after{top:92px}
#p-outpub .outing-wheel-col{height:138px;overflow-y:auto;scroll-snap-type:y mandatory;overscroll-behavior:contain;padding:46px 0;box-sizing:border-box;scrollbar-width:none;-webkit-overflow-scrolling:touch}
#p-outpub .outing-wheel-col::-webkit-scrollbar{display:none}
#p-outpub .outing-wheel-option{height:46px;display:flex;align-items:center;justify-content:center;scroll-snap-align:center;color:var(--sub);font-size:16px;font-weight:600;white-space:nowrap;transition:font-size .12s,color .12s,font-weight .12s}
#p-outpub .outing-wheel-option.on{color:var(--ink);font-size:19px;font-weight:800}
#p-outpub .outing-wheel-preview{text-align:center;min-height:26px;margin:4px 0 6px;color:var(--brand-primary);font-size:16px;font-weight:800}
#p-outpub .outing-wheel-sheet .outing-editor{padding:2px 0 0}
#p-outpub .outing-wheel-sheet .outing-sheet-actions{padding-top:4px}
#p-outpub.outing-inline-editing .outing-bottom-actions{display:none}

/* ===== V35｜录屏复核：表单键盘收起后按钮不丢失 + 全屏文字输入贴键盘 ===== */
/* 发起结伴：内联编辑时底部语音/确认区始终保持布局占位，软键盘收起后无需等待 blur 才恢复。 */
#p-outpub.outing-inline-editing .outing-bottom-actions{display:grid}

/* 全屏语音页文字输入态：隐藏三按钮 Dock，输入框只贴系统键盘，不再叠在三按钮上方。 */
#p-huagelive.hl-text-entry .hl-dock{opacity:0;visibility:hidden;pointer-events:none}
#p-huagelive .hl-kb{
  position:fixed;
  left:max(10px,env(safe-area-inset-left,0px));
  right:max(10px,env(safe-area-inset-right,0px));
  bottom:auto;
  padding:6px;
  border-radius:18px;
  transition:opacity .16s ease,transform .18s ease;
}
#p-huagelive .hl-kb-in{
  display:grid;
  grid-template-columns:minmax(0,1fr) 74px;
  align-items:center;
  gap:7px;
}
#p-huagelive .hl-kb-in input,#hl-kb-input{
  width:100%;
  min-width:0;
  height:46px;
  min-height:46px;
  border-radius:15px;
  font-size:16px;
}
#p-huagelive .hl-kb-send{
  width:74px;
  min-width:74px;
  height:46px;
  min-height:46px;
  padding:0 10px;
  border-radius:15px;
  background:#B23A2E;
  color:#FFFFFF;
  box-shadow:none;
  font-size:16px;
  font-weight:800;
}
#p-huagelive .hl-kb-hide{display:none}
/* V35 不再锁死整个应用高度；位置由 visualViewport 实时计算，避免 WebView resize + 手工 lift 双重上抬。 */


/* ===== V42 发起结伴：统一输入条 + 常用活动 ===== */
#p-outpub .outing-quick-what{display:flex;gap:7px;overflow:auto;padding:7px 2px 2px;margin:-2px 0 5px;scrollbar-width:none}
#p-outpub .outing-quick-what::-webkit-scrollbar{display:none}
#p-outpub .outing-quick-what button{flex:0 0 auto;border:1px solid rgba(122,106,88,.15);border-radius:999px;background:rgba(255,255,255,.92);padding:7px 11px;color:var(--ink);font-size:13px;font-weight:650}
#p-outpub .outing-inline-input,#p-outpub .outing-place-dropdown{display:none!important}
#p-outpub.outing-text-editor-open .outing-bottom-actions{display:none!important;visibility:hidden!important;pointer-events:none!important}
.outing-text-editor-mask{display:none;position:fixed;inset:0;z-index:190;background:transparent}
.outing-text-editor-mask.open{display:block}
.outing-text-editor{z-index:191}
