/* glass-unify.css — 把所有 HUD / 面板接到 glass-tokens.css（聊天卡片那套玻璃）上。2026-10-15 ui-verify。
   只改颜色、模糊、描边、阴影、圆角、文字墨影，不动版式。index.html 里紧跟 glass-tokens.css 加载；
   vision-glass.css（html.glass）和 glass-theme.css（html.glass.glass）是 JS 后插入的，这里一律用更高的选择器权重
   （html.glass.glass.glass / html.glass.glass body …）盖过它们，所以和加载先后无关。
   聊天卡片本身（vivo-chat-ui.css 的 .sc-v2 .c2-*）就是基准，这里不碰。 */

/* 1) 把 vision-glass / glass-theme 的变量全部指到统一变量上：用这些变量的几十种面板、按钮一次跟上 */
html.glass.glass.glass {
  --g-tint: var(--glass-bg);
  --g-tint-strong: var(--glass-bg-strong);
  --g-blur: var(--glass-blur);
  --g-glow: 0 0 0 0 transparent;
  --g-shadow: var(--glass-shadow);
  --g-edge: rgba(255, 255, 255, 0.26);
  --g-hi: rgba(255, 255, 255, 0.62);
  --g-rim: none;
  --g-rim-w: 0px;
  --g-ctl: var(--glass-btn-bg);
  --g-ctl-hover: var(--glass-btn-bg-hover);
  --g-prom: var(--glass-prom-bg);
  --g-prom-hover: var(--glass-prom-bg-hover);
  --g-prom-shadow: var(--glass-prom-shadow);
  --g-sel: rgba(255, 255, 255, 0.26);
  --t1: var(--glass-t1);
  --t2: var(--glass-t2);
  --t3: var(--glass-t3);
}

/* 2) 文字墨影：vision-glass 给面板强制 text-shadow:none，聊天卡片靠一层淡墨影在亮地板上保持清楚 */
html.glass.glass body :is(.vh, .vq-card, .vp-panel, .vs-card, .vg-chip, .vc-say, .sc-say, .sc-bar, .sc-tip, .sc-toast, .sp-card, .sp-offer, .sp-game, .va-toast, .vq-win, .pl-say, .rc-chips.arc, .rc-photo, .rc-name, .vh-shop, .step, #hud .panel, #toast, #speedCard, #dress, #dressbar, #bar, #chatHint) {
  text-shadow: var(--glass-ink) !important;
}

/* 3) 自己写死颜色、没走变量的界面 */
/* 新手任务卡（vivo-tasks.js .rt-track） */
html.glass.glass body .rt-track {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow) !important;
  border: 0 !important;
  border-radius: var(--glass-radius) !important;
  color: var(--glass-t1) !important;
  text-shadow: var(--glass-ink) !important;
}
html.glass.glass body .rt-track button {
  border: 0 !important;
  background: var(--glass-btn-bg) !important;
  box-shadow: var(--glass-btn-shadow) !important;
  color: var(--glass-t1) !important;
}
html.glass.glass body .rt-track button:hover { background: var(--glass-btn-bg-hover) !important; }

/* 小地图框、时间胶囊、设置胶囊的悬停（vision-glass 写死成灰色） */
html.glass.glass body :is(#open-map, .clock-chip, #options-button):hover { background: var(--glass-sheen), rgba(32, 34, 46, 0.22) !important; }

/* 反馈胶囊和反馈窗（vivo-feedback.js） */
html.glass.glass body .fb-pill {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow-sm) !important;
  border: 0 !important;
  color: var(--glass-t1) !important;
  text-shadow: var(--glass-ink) !important;
}
html.glass.glass body .fb-pill:hover { background: var(--glass-sheen), rgba(32, 34, 46, 0.22) !important; }
html.glass.glass body .fb-win {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow) !important;
  border: 0 !important;
  border-radius: var(--glass-radius) !important;
  color: var(--glass-t1) !important;
  text-shadow: var(--glass-ink) !important;
}

/* 顶部 toast（vivo-hud.js .vh-toast） */
html.glass.glass body .vh-toast {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow-sm) !important;
  border: 0 !important;
  color: var(--glass-t1) !important;
  text-shadow: var(--glass-ink) !important;
}

/* 手机面板（kit/vivo-phone.js 新主屏）：和其他面板同一块玻璃 */
html.glass.glass.p2 .vp .vp-panel {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow) !important;
}
html.glass.glass.p2 body .vp .vp-btn:hover { background: var(--glass-btn-bg-hover) !important; }

/* 合照取景器（kit/vivo-photo-mode.js .pm-glass，本来就接近，接到同一组变量上） */
html.glass.glass body .pm-glass {
  background: var(--glass-bg) !important;
  -webkit-backdrop-filter: var(--glass-blur) !important;
  backdrop-filter: var(--glass-blur) !important;
  box-shadow: var(--glass-shadow-sm) !important;
}

/* 邀请提示（vivo-chat-ui.css .c2-invite-ui .c2-nudge）已经用 --c2-glass，与基准一致，不改 */

/* 降低透明度偏好：保持 vision-glass 的不透明兜底 */
@media (prefers-reduced-transparency: reduce) {
  html.glass.glass.glass { --glass-bg: rgba(48, 50, 60, 0.94); --glass-bg-strong: rgba(48, 50, 60, 0.96); }
}

/* 2026-10-15 Hannah: WASD 自由漫步 提示胶囊不要 */
.walk-help{display:none !important}
/* 2026-10-15 护照几乎透明的根因：外层遮罩 .pp-root 自己有 backdrop-filter(3px)，成了 backdrop root，里面两页的 blur(34px) 只能模糊遮罩本身（透明）→ 看起来没磨砂。外层去掉 backdrop-filter，两页才能模糊真正的商场。 */
html body .pp-root{-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
html body .pp-root .pp-left,html body .pp-root .pp-right{background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important}
/* 2026-10-15 ui-stack：同样的毛病在场馆弹窗、语言选择上——遮罩层带 backdrop-filter 就成了 backdrop root，里面的玻璃面板只能糊遮罩自己。遮罩不再模糊，玻璃放到面板上（同聊天卡片）。 */
html body .vn-modal{-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
html body .vn-modal .vn-panel{background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow) !important;border:0 !important;border-radius:var(--glass-radius) !important;text-shadow:var(--glass-ink)}
html body .vl-pick{-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
html body .vl-pick .vl-card{background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow) !important}
/* 2026-10-15 ui-stack：手机入口改成纯图标玻璃圆钮（Hannah：要一个手机的 logo 的感觉，而不是两个字）；文字只留在 aria-label 里 */
html.glass.glass.p2 body .vp .vp-btn{width:50px !important;height:50px !important;padding:0 !important;justify-content:center !important;border-radius:50% !important;background:var(--glass-bg) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow-sm) !important}
html.glass.glass.p2 body .vp .vp-btn .vp-lb{display:none !important}
html.glass.glass.p2 body .vp .vp-btn .vp-ic{width:24px !important;height:24px !important}
@media (max-width:700px){html.glass.glass.p2 body .vp .vp-btn{width:54px !important;height:54px !important}}
/* 2026-10-15 ui-stack：护照两页之前还是没磨砂——vision-glass.css 的 html.glass body :is(.pp-book, .ws, .ws-box, #map-modal, #time-modal) * 带 #id，权重压过所有按类名写的规则，把两页的 backdrop-filter 置成 none。这里用 :is(…, #uis-id) 拿到同级权重再盖回去。首页视图（pp-home-view）是整本一块玻璃，两页透明，不动结构，只把那块玻璃换成统一值。 */
html.glass.glass body .pp-root:not(.pp-home-view) .pp-book > :is(.pp-left, .pp-right, #uis-id){background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow) !important}
/* 探针（qa-runs/ui-stack/r4）：计算值已是 blur(34px)，后面的商场还是清楚——因为 .pp-book 上有 clip-path: border-box，clip-path 也会让它成为 backdrop root。去掉后两页立刻糊住背景。 */
html.glass.glass body .pp-root .pp-book:is(.pp-book, #uis-id){clip-path:none !important;-webkit-clip-path:none !important}
html.glass.glass body .pp-root.pp-home-view .pp-book{background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow) !important}
/* 2026-10-15 ui-stack：手机宽度——两种到账提示原来在底部 96/120px，压在摇杆上；聊天卡片停靠在底部时又压在它的爱心行上。
   平时抬到摇杆上方（邀请提示 212、toast 268、到账 322 各占一层），聊天卡片在底部时（HUD 已让位）改到屏幕顶部。 */
@media (max-width:700px){
  html.glass.glass body .c2-invite-ui .c2-nudge{bottom:calc(212px + env(safe-area-inset-bottom)) !important}
  html.glass.glass body .vh-toast{bottom:calc(268px + env(safe-area-inset-bottom)) !important}
  html.glass.glass body .va-toast{bottom:calc(322px + env(safe-area-inset-bottom)) !important}
  html.glass.glass body:has(#featured-chat .c2-card.c2-dock) .vh-toast{top:calc(14px + env(safe-area-inset-top)) !important;bottom:auto !important}
  html.glass.glass body:has(#featured-chat .c2-card.c2-dock) .va-toast{top:calc(72px + env(safe-area-inset-top)) !important;bottom:auto !important}
}
/* 2026-10-15 ui-stack：卡牌结算 .pk-res.r4 也统一成聊天卡片玻璃（Hannah：所有页面都复用）。去掉紫色深底；外层遮罩不再模糊（否则里面的 .box 又糊不到背景），只留淡暗层；胜负的金色光芒 .r4-rays 保留。 */
html.pk4.pk4.pk4 body :is(.pk, .k4-side) .pk-res.r4{background:rgba(10,12,20,.18) !important;-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
html.pk4.pk4.pk4 body :is(.pk, .k4-side) .pk-res.r4 .box{background:var(--glass-bg-strong) !important;-webkit-backdrop-filter:var(--glass-blur) !important;backdrop-filter:var(--glass-blur) !important;box-shadow:var(--glass-shadow) !important;text-shadow:var(--glass-ink)}
/* 2026-10-15 ui-stack：新手任务卡的「稍后，先自由逛逛」本来是文字链接（.rt-later 无底无内边距），被上面 .rt-track button 的玻璃底套成了没有内边距的胶囊，字溢出到胶囊外。还原成文字链接。 */
html.glass.glass body .rt-track .rt-later{background:none !important;box-shadow:none !important;padding:5px 0 !important}
/* 2026-10-15 ui-stack（mobile 线报告）：
   ① 手机宽度下护照印章的详情浮窗 .pp-tip 贴着印章往上弹，盖住护照头部 → 改成贴底的整宽卡片，只盖住印章区下沿。
   ② 装成 PWA/App 时状态栏透明，顶部卡片离顶 14px 会被状态栏/灵动岛盖住；横屏时左右避开刘海。浏览器里 env() 为 0，不变。 */
@media (max-width:700px){
  html.glass.glass body .pp-tip{left:12px !important;right:12px !important;top:auto !important;bottom:calc(12px + env(safe-area-inset-bottom)) !important;max-width:none !important;transform-origin:50% 100% !important}
}
html.glass.glass body .vh{top:max(14px, env(safe-area-inset-top)) !important;left:max(16px, env(safe-area-inset-left)) !important}
html.glass.glass.p2 body .vp .vp-btn{left:max(22px, env(safe-area-inset-left)) !important}
@media (max-width:700px){
  html.glass.glass body .minimap-cluster{right:calc(var(--mini-right, 12px) + env(safe-area-inset-right)) !important}
  html.glass.glass.p2 body .vp .vp-btn{left:max(16px, env(safe-area-inset-left)) !important}
}

/* 10-15 Hannah: 不用语音了 — hide the speaker toggle on chat cards */
.vv-btn{display:none !important}

/* 10-16 qa r3 #2: the 「画面暂时中断了 / 重新加载」 screen (#loading with #retry shown, vivo-app.js) goes over every panel — Info quests (.cx/.cxd, z 120) hid the Reload button */
#loading:has(#retry:not([hidden])){z-index:9000!important}
/* 10-16 qa r3 #17: the info detail panel (vivo-coupons.js .cxd, centred) cut its disclaimer off at 86vh; it may use the whole height less a margin */
html body .cxd .cxd-box{max-height:calc(100vh - 32px)}
