/**
 * safe-area-compat.css —— 真机顶部安全区（状态栏 / 灵动岛 / 刘海）适配
 *
 * v1.7.3 (2026-08-24)：一起看书新增全屏阅读后，将阅读设置面板与目录面板
 * 一并下移到真实顶部安全区之后，保证沉浸态保留的设置入口与面板均可点击。
 *
 * v1.7.0 (2026-07-28)：安卓 APK 全屏安全区统一改为优先读取
 * --safe-area-inset-*（Capacitor SystemBars 按 WindowInsets 实测注入），浏览器
 * env(safe-area-inset-*) 仅作兜底。修复小米 K70 / HyperOS WebView 在全屏或
 * edge-to-edge 下 env() 错误返回 0，导致人设页及其他全屏顶栏与挖孔区重叠。
 *
 * 背景（用户反馈）：
 *   iPhone（含 15 Pro Max 等灵动岛机型）无论是否「添加到主屏幕」，只要满足
 *     <meta name="viewport" ... viewport-fit=cover">
 *   且页面本身是铺满真实视口的单页应用壳（本项目 #app 用 100dvh 铺满、body/html
 *   不产生页面级滚动），Safari 就可能把网页内容延伸到真机状态栏 / 灵动岛背后
 *   （最典型：地址栏因交互收起、或以「添加到主屏幕」独立/全屏方式启动时），
 *   此时 env(safe-area-inset-top) 变为约 47~62px。
 *
 *   最初版本仅在 <html class="lovemi-standalone">（由 index.html 头部脚本依据
 *   navigator.standalone / display-mode 判定的「独立启动态」）下生效，但用户实测
 *   反馈：直接在 Safari 标签页里操作（未添加到主屏幕）也会出现同样的重叠 ——
 *   例如「世界书 → 新建世界书」弹层顶部被状态栏/灵动岛盖住，关闭按钮完全点不到。
 *   说明该重叠并不只发生在「独立启动态」，普通标签页同样可能触发。
 *
 * 问题：
 *   主页面（#chat-page / #wechat-page / #phone-page / #twitter-page / #settings-page …）
 *   顶部都有一个 .status-bar，已用 max(12px, env(safe-area-inset-top)) 预留安全区，
 *   所以不受影响。但「铺满 #app 的全屏浮层 / 子屏」(AO3、游乐场、一起听歌、一起看书、
 *   电影院、情侣空间各子页、推特详情/私信浮层、日历全屏面板等) 自身没有 .status-bar，
 *   它们的顶部功能栏 / 返回按钮直接贴在 top:0，可能被真机状态栏 / 灵动岛完全盖住、
 *   无法点击。
 *
 * 方案：
 *   直接、无条件地给这些全屏浮层的顶部栏补上 env(safe-area-inset-top) 的顶部内边距
 *   （或 top 偏移），不再要求先命中 <html class="lovemi-standalone">：
 *     padding-top: calc(基础值 + env(safe-area-inset-top, 0px));
 *   在没有刘海/灵动岛、或浏览器未把内容延伸到状态栏背后的机型/场景下，
 *   env(safe-area-inset-top) 恒为 0，calc() 结果与原基础值完全相同，观感零变化、
 *   零副作用；只有在真的存在「内容延伸到系统状态栏背后」这种物理重叠风险时，
 *   才会自动补足对应像素，是纯 CSS、不依赖 JS 时序的兜底方案。
 *
 * 安全性 / 适配范围：
 *   - 仅作用于「确实贴在屏幕最顶部、且无 .status-bar 兜底」的全屏浮层顶栏，
 *     不动主页面、居中弹窗、底部上拉面板、好友手机内部页（它们各自已被 .status-bar
 *     或父壳的 env() 安全区覆盖），避免把不在顶部的元素错误下移；
 *   - 适配机型/内核：iPhone(Safari/Chrome/Edge/夸克/搜狗/雨见/via 等) 标签页与
 *     独立/全屏启动态、以及华为/小米/OPPO/魅族/vivo/三星等 Android 机型（含以
 *     独立应用安装时的 display-mode: standalone）；不支持 env() 的旧内核浏览器
 *     直接按第二参数兜底为 0px，同样不受影响。
 *
 * 加载顺序：本文件在所有模块样式之后；规则统一带 !important，即使个别浮层样式
 *   是按需(懒)加载、晚于本文件注入，也能稳定覆盖其顶栏内边距。
 *
 * 注：<html class="lovemi-standalone"> 判定脚本仍保留在 index.html 中（其他模块
 *   或未来功能可能仍需要区分独立启动态），但本文件不再依赖该 class 作为生效前提。
 */

/* ------------------------------------------------------------------ */
/* 通用：安全区变量桥（浏览器 env() ∪ 安卓 APK 原生注入）                */
/*                                                                    */
/* love咪安卓包（E:\lovemi-android，Capacitor 8 壳）在 Android 15+ 强制  */
/* 全面屏(edge-to-edge)模式下，由 SystemBars 插件把真机状态栏/挖孔/手势条 */
/* 的实际像素以内联样式注入到 <html> 的 --safe-area-inset-* 变量上：      */
/*   - WebView ≥ 140 且 viewport-fit=cover：insets 透传，env() 与变量同值；*/
/*   - 其余情况：原生给 WebView 容器加 padding，变量注入 0（不会双重计算）。*/
/* 但部分国产 ROM 的 WebView 灰度版本存在「透传生效而 env() 仍为 0」的     */
/* 已知兼容问题（Chromium issue 40699457 关联），只信 env() 会漏防。       */
/*                                                                    */
/* 这里在 :root 上把同名变量默认定义为 env()：                           */
/*   - 浏览器（Safari/Via/Chrome/Edge/搜狗/雨见/夸克 等）：变量 = env()， */
/*     行为与直接写 env() 完全一致；                                     */
/*   - APK：原生注入的内联样式优先级高于本条 :root 规则，变量 = 真机实测值。*/
/* 各模块在关键规则上采用「env() 单独声明兜底 + var() 双声明」写法：       */
/*   padding-top: calc(基础 + env(safe-area-inset-top, 0px));            */
/*   padding-top: calc(基础 + var(--safe-area-inset-top, 0px));          */
/* 不支持 CSS 变量的老内核自动落在第一行，行为不变。                       */
/* ------------------------------------------------------------------ */
:root {
    --safe-area-inset-top: env(safe-area-inset-top, 0px);
    --safe-area-inset-right: env(safe-area-inset-right, 0px);
    --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px);
    --safe-area-inset-left: env(safe-area-inset-left, 0px);
}

/* ------------------------------------------------------------------ */
/* 通用：全屏浮层顶栏统一补顶部安全区（不依赖独立/全屏启动态判定）        */
/* ------------------------------------------------------------------ */

/* AO3 专区（.ao3-root 铺满 #app，无 status-bar） */
.ao3-root .ao3-root__header {
    padding-top: calc(18px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 一起听歌（.lt-overlay 铺满 #app） */
.lt-overlay .lt-topbar {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 一起看书（#rt-overlay-root 铺满 #app）
   ⚠ 2026-07-04 用户实测反馈（iPhone14 Pro / Safari）：此前只处理了「阅读器」
   视图的 .rt-topbar，但「书架」视图（添加书籍格子页）的顶栏 .rt-shelf-head
   （标题 + 右上角关闭键）同样贴在 #rt-overlay-root 物理顶部，被灵动岛 /
   状态栏盖住导致返回（关闭）键点不到。一并补齐同结构的：
   - .rt-shelf-head   书架页顶栏（原 padding: 10px 14px 8px）
   - .rt-invite-head  「邀请共读」面板头（.rt-invite-panel 为 inset:0 铺满
     阅读器、盖住 .rt-topbar，面板自己的返回键贴顶，原 padding: 10px 12px）
   - .rt-toc-panel / .rt-settings-panel / .rt-theme-picker  目录、阅读设置与旧配色面板（top:52px 是按
     原顶栏高度定位的；顶栏补安全区增高后需同步下移，避免面板顶部按钮
     被增高的顶栏 / 灵动岛压住） */
#rt-overlay-root .rt-topbar {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
#rt-overlay-root .rt-shelf-head {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
#rt-overlay-root .rt-invite-head {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
#rt-overlay-root .rt-toc-panel,
#rt-overlay-root .rt-settings-panel,
#rt-overlay-root .rt-theme-picker {
    top: calc(52px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 游乐场（#sub-screen-game-hub）右上角关闭按钮：绝对定位 top，需整体下移 */
#sub-screen-game-hub .sub-screen-game-hub__close {
    top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* love咪放映厅（.lmc-cinema 铺满 #app） */
.lmc-cinema-topbar {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 购物·商品详情全屏面板（盖住 #shopping-page 的 status-bar） */
#shopping-page .shopping-product-detail-panel .shopping-detail-toolbar {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ------------------------------------------------------------------ */
/* 推特（#twitter-page 内的全屏浮层；列表态头栏在 .status-bar 之下，无需处理） */
/* ------------------------------------------------------------------ */

/* 推文详情页（.twitter-detail-page: position:absolute; inset:0; 盖住状态栏） */
#twitter-page .twitter-detail-page .twitter-detail-header {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 私信会话浮层（.twitter-dm-root: position:absolute; inset:0 铺满 #twitter-page）。
   会话头 .twitter-dm-chat-header / 多选顶栏 .twitter-dm-multiselect-topbar 二者
   择一可见，都贴在浮层物理顶部，需补安全区。
   ⚠ 上一版只挂 [data-dm-chat-overlay="on"] 单一 hook：该属性由 setChatOverlayActive()
   设置，但 renderChatView() 重入（切到别的 Tab 再切回消息）时不会恢复，导致属性可能
   为 off / 缺失而规则不命中。改用 [data-dm-page="chat"] 作主 hook（openConversation 设置后
   一直保留、只在回列表时清除，最稳定），并叠加页面 class 与原 overlay 属性作三重保险。
   （已同步在 twitter-dm.js 的 renderChatView 开头补 setChatOverlayActive(true) 兜底。） */
.twitter-dm-root[data-dm-page="chat"] .twitter-dm-chat-header,
.twitter-dm-root[data-dm-page="chat"] .twitter-dm-multiselect-topbar,
.twitter-dm-root[data-dm-chat-overlay="on"] .twitter-dm-chat-header,
.twitter-dm-root[data-dm-chat-overlay="on"] .twitter-dm-multiselect-topbar,
#twitter-page.twitter-page--dm-chat-overlay .twitter-dm-chat-header,
#twitter-page.twitter-page--dm-chat-overlay .twitter-dm-multiselect-topbar {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ------------------------------------------------------------------ */
/* 情侣空间（各子浮层均铺满 #app，无 status-bar）                       */
/* ------------------------------------------------------------------ */

/* 情侣空间主页（排除已自带安全区的 --private 私密态头栏） */
.couple-space-overlay .couple-space-header:not(.couple-space-header--private) {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 情侣空间·票务须知浮层 */
.couple-ticketing-notice-overlay .couple-ticketing-notice-header {
    padding-top: calc(22px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 情侣空间·纪念日 */
.cs-anniv-overlay .cs-anniv-header {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 情侣空间·恋爱日记（普通头栏 + 封面上悬浮头栏） */
.cs-lj-overlay .cs-lj-header {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
.cs-lj-overlay .cs-lj-header--over-cover {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 情侣空间·经期记录 */
.couple-period-overlay .couple-period-topbar {
    padding-top: calc(18px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 情侣空间·甜蜜日记（封面态绝对顶栏 + 内页头栏） */
.cs-sd-overlay .cs-sd-topbar {
    padding-top: calc(16px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
.cs-sd-overlay .cs-sd-page-topbar {
    padding-top: calc(18px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ------------------------------------------------------------------ */
/* 子屏日历：仅「全屏型」面板（闹钟编辑 / 来电）；普通底部上拉面板不处理   */
/* ------------------------------------------------------------------ */
.ssc-overlay.ssc-overlay--full .ssc-sheet-header {
    padding-top: calc(16px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ------------------------------------------------------------------ */
/* IF 线板块（#love-mi-if-line-root.if-line-root 铺满 #app，无 status-bar） */
/*                                                                    */
/* .if-line-topbar 由 sub-screen-if-line.js 通过 <style> 注入（非 inline，*/
/* 故可用 !important + 后加载稳定覆盖），覆盖：IF线 Hub（世界线列表）、    */
/* 当前世界（地图）、周氏古宅（内部沿用 Past AVG 壳）、以及未来 timeline 页。 */
/*                                                                    */
/* 注意：原样式写死 height:64px（矮屏 56px），若只加 padding-top 会把       */
/* 返回/关闭按钮与标题挤压；这里改用 min-height 并放开 height，让顶栏       */
/* 随安全区自然增高。                                                    */
/* ------------------------------------------------------------------ */
.if-line-topbar {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
    height: auto !important;
    min-height: calc(64px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

@media (max-height: 700px) {
    .if-line-topbar {
        padding-top: calc(7px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
        min-height: calc(56px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
    }
}

/* Past AVG 背景网格层写死 inset-top:64px（对齐原顶栏高度）；顶栏随安全区
   增高后，把网格起点同步下移，避免网格顶端被加高的顶栏盖住而错位。 */
.past-avg-screen::before {
    top: calc(64px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ------------------------------------------------------------------ */
/* 游戏板块·双保险                                                      */
/*                                                                    */
/* 游乐场各全屏游戏（你画我猜 / 真心话大冒险 / 好友助手）的顶栏在各自源      */
/* CSS 里已用 calc(基数 + env(safe-area-inset-top)) 预留安全区。这里再用     */
/* 同等基数 + !important 兜底，防止个别机型/浏览器内核因样式加载时序或       */
/* env 计算时序问题导致源规则一时未生效时顶栏被状态栏盖住。基数与源 CSS      */
/* 保持一致（你画我猜 8 / 真心话 10 / 好友助手 8），故正常态视觉零变化。     */
/* ------------------------------------------------------------------ */
.draw-guess-game .dg-header {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
.truth-or-dare-game .tod-header {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
.sgh-friend-assistant .sgh-fa-header {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
/* 微信模块·全屏覆盖式子页面 / 浮层顶栏统一安全区适配                    */
/*                                                                    */
/* 背景：#wechat-page / #wechat-me-page / #wechat-discover-page /      */
/* #chat-page 这些主页面首子元素是 .status-bar，已预留安全区；但它们    */
/* 之上还会弹出大量「position:absolute; inset:0 铺满、且自己没有        */
/* .status-bar」的子页面 / 浮层（聊天设置、好友设置、专属美化、钱包、   */
/* 收藏、亲属卡、添加好友、查找聊天记录、长期记忆、线下模式各页等）。   */
/* 它们的顶栏直接贴 top:0，可能被真机状态栏 / 灵动岛盖住。             */
/*                                                                    */
/* 处理分两类：                                                        */
/*  (一) 贴顶全宽顶栏（有 border-bottom、无 margin 偏移）→ 加 padding-top， */
/*       顶栏背景延伸到状态栏背后，文字下移，观感最佳；                  */
/*  (二) 从聊天页打开 / 心动记录页里被改成「margin 定位的悬浮圆角卡片」  */
/*       的顶栏 → 必须加 margin-top 把整张卡片下移（并把 padding-top    */
/*       还原，避免卡片被撑高）。                                       */
/*                                                                    */
/* 特异性：部分源规则带 #id + !important（如 #wechat-me-page            */
/* .wechat-settings-header / #chat-page .chat-fullscreen-glass …），   */
/* 故覆盖规则按需带 #id + !important，确保稳定生效。                    */
/* ================================================================== */

/* ---------------- (一) 贴顶全宽顶栏：加 padding-top ---------------- */

/* 微信「设置」/「聊天设置」/「专属美化」页（#wechat-me-page 内，header
   规则带 #wechat-me-page + !important，需同级 #id 覆盖） */
#wechat-me-page .wechat-settings-header {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 钱包 / 我的余额 / 银行卡 / 账单（通用贴顶；#chat-page 悬浮态在下方还原） */
.wallet-page-header {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 亲属卡 */
.kinship-page-header {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 收藏页 + 收藏详情（通用贴顶；#chat-page / 心动记录悬浮态在下方还原） */
.favorites-page-header {
    padding-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 添加好友（手机端为 top:0 全屏壳） */
#add-friend-modal.add-friend-page-shell .add-friend-page-header {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 聊天页内 chat-fullscreen-glass 全屏层（聊天设置 / 好友设置 / 群设置 /
   专属美化 / AI时间感知 / 群专属气泡成员 / 生图参考等，共用 .modal-header）。
   ⚠ 2026-07-04 实测修复：style.css 里存在
     #chat-page .chat-fullscreen-glass .modal-content.chat-settings-modal > .modal-header
     #chat-page .chat-fullscreen-glass .modal-content.friend-settings-modal > .modal-header
   两条「padding: 12px 16px !important」的美化规则（选择器带 4 个 class），
   比本文件原来只写 .modal-content（3 个 class）的通用规则特异性更高——
   哪怕本文件在文档里后加载、也会被 CSS 特异性规则判负，导致 padding-top
   被 12px 覆盖回去，安全区补偿完全失效。这正是用户实测「聊天设置 / 好友
   设置 / 专属美化」返回键被灵动岛/状态栏盖住点不到的根因。
   现在把两条源规则命中的具体 class 组合也在此列出，特异性打平后，靠
   本文件后加载的层叠顺序稳定获胜；同时保留原通用规则兜底其余（AI 时间
   感知 / 专属美化 / 生图参考 / 私聊气泡成员等只带 .chat-settings-modal 或
   .friend-settings-modal 单一命名 class 的浮层，它们本就不会被上面两条
   4-class 规则命中，走通用规则即可）。 */
#chat-page .chat-fullscreen-glass .modal-content > .modal-header,
#chat-page .chat-fullscreen-glass .modal-content.chat-settings-modal > .modal-header,
#chat-page .chat-fullscreen-glass .modal-content.friend-settings-modal > .modal-header {
    padding-top: calc(12px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 查找聊天记录全屏（含常规线下页同源） */
#chat-page #search-chat-modal.search-chat-fullscreen .modal-content > .modal-header {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 长期记忆全屏（含旅行长记忆，复用 .chat-long-memory-header） */
.chat-long-memory-header {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 线下模式全屏层各顶栏（线下模式 / 文风选择 / 新建文风）；
   #chat-page 下「线下模式」头是悬浮卡片，在下方单独还原 + margin */
.offline-mode-header,
.offline-style-picker-header,
.offline-style-new-header {
    padding-top: calc(14px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ---------------- (二) 悬浮圆角卡片顶栏：加 margin-top ---------------- */
/* 这些顶栏用 margin 定位、离屏幕顶部有圆角间距，必须整张卡片下移；
   同时把 padding-top 还原为原值，避免被上面的通用规则撑高。 */

/* 从聊天页打开的：收藏 / 钱包（及账单）/ 线下模式 头栏（margin:10px） */
#chat-page .favorites-page-header {
    padding-top: 8px !important;
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
#chat-page .wallet-page-header {
    padding-top: 12px !important;
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}
#chat-page .offline-mode-header {
    padding-top: 14px !important;
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 心动记录收藏页 / 详情页头栏（margin:8px 悬浮卡片） */
#favorites-heartbeat-page .favorites-page-header,
#favorites-heartbeat-detail-page .favorites-page-header {
    padding-top: 8px !important;
    margin-top: calc(8px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
/* 世界书（#books-page 内「新建/编辑世界书」贴合小手机屏的全屏浮层）      */
/*                                                                    */
/* #add-world-book-modal.add-world-book-modal--phone 的卡片四边各 8px    */
/* 内嵌，本身已在 love-mi-world-book.css 里用 env(safe-area-inset-top)   */
/* 直接给 .modal-header 补了顶部安全区，这里不再重复；仅留此分区标记，     */
/* 方便后续在世界书模块新增类似「贴屏顶」浮层时就近补充规则。              */
/* ================================================================== */

/* ================================================================== */
/* 我的人设（#wechat-me-page 内「人设列表 / 新建·编辑人设」全屏浮层）    */
/*                                                                    */
/* .my-persona-list-header-row / .my-persona-editor-header-row 已在    */
/* profile-persona-ui.css 里用 env(safe-area-inset-top) 直接补了顶部    */
/* 安全区（不依赖本文件），这里同样不再重复。                            */
/* ================================================================== */

/* ================================================================== */
/* 2026-07-04 新增排查：微信「发现 → 游戏手札 / 游戏手札笔记」全屏页     */
/*                                                                    */
/* 根因：#wechat-discover-page 自身 position:relative；其内的            */
/* .game-handbook-page / .game-handbook-note-page（game-handbook.js     */
/* 动态挂载进 .discover-content）都是 position:absolute; inset:0，       */
/* 父级 .discover-content 本身并未建立定位上下文（position:static），    */
/* 于是这两个浮层的包含块直接是 #wechat-discover-page —— 其 inset:0      */
/* 会盖住 #wechat-discover-page 自己的 .status-bar 所在区域，导致        */
/* .game-handbook-head 顶栏贴到真机屏幕最顶端，返回键被状态栏 / 灵动岛   */
/* 盖住点不到。							     */
/* （同级的「记忆库 / 记忆空间」虽是同样的挂载结构，但 style.css 里的     */
/* #wechat-discover-page .wechat-memory-header 水彩皮肤规则已经用        */
/* `padding: max(12px, env(safe-area-inset-top,0px)) ... !important`     */
/* 处理过安全区，此处不再重复；仅游戏手札这条一直缺失。） */
.game-handbook-head {
    padding-top: calc(9px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
/* 2026-07-04 新增排查：角色日程「查看大地图」关闭按钮                   */
/*                                                                    */
/* #wechat-char-schedule-host 本身是铺满 #app 的全屏层（#app             */
/* #wechat-char-schedule-host，position:absolute; inset:0），其内的      */
/* .cs-topbar / .cs-detail-topbar 已各自用 env(safe-area-inset-top)      */
/* 处理过安全区；但「查看大地图」( .cs-large-map-overlay，                */
/* wechat-char-schedule.js 动态挂载在同一个全屏层里) 的关闭按钮           */
/* .cs-large-map-close 是 top:10px 绝对定位、直接贴在这个全屏层的物理     */
/* 顶端，同样会被状态栏 / 灵动岛盖住。 */
.cs-large-map-close {
    top: max(10px, var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
/* 2026-07-04 用户实测反馈：②号子屏幕「闲置」→「背包」选择要转卖的宝贝    */
/* 顶部返回键被真机状态栏 / 灵动岛盖住，完全点不到                       */
/*                                                                    */
/* 根因：#idle-market-page 自身有 .status-bar（已预留安全区），但其内的  */
/* 「选择要转卖的宝贝 / 发布闲置 / 闲置详情」三个内嵌全屏面板              */
/* （.idle-panel：position:absolute; inset:0）铺满整个 #idle-market-page，*/
/* 把 .status-bar 所在区域也一并盖住 —— 三个面板共用的 .idle-panel-toolbar */
/* 顶栏因此直接贴在页面（=真机屏幕）物理最顶端，返回键被状态栏/灵动岛     */
/* 完全遮挡且无法点击。三个面板结构、样式完全一致，一条规则统一修复。      */
/* 已同步确认「吃了么」（.wallet-modal-header 已带 env() 安全区且默认为    */
/* 居中弹窗，仅 body.ss2tk-app 全屏态才需要、也已处理）、「当前世界」      */
/* （.cw-topbar 已带 env() 安全区）、「城市地图详情页」（复用 IF 线引擎，   */
/* 走上面已修复的 .if-line-topbar）均未发现同类遗漏，故只需补这一处。      */
/* ================================================================== */
.idle-panel-toolbar {
    padding-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
/* 2026-07-04 用户实测反馈：iPhone17/Safari、iPhone15 Pro/谷歌浏览器 —— 微信
 * 聊天窗口进入「线下模式」后，顶部功能栏（返回键 / 设置键）与真机状态栏 /
 * 灵动岛重叠，完全无法点击；多人群组常规线下模式同样受影响。
 *
 * 根因：进入线下模式后，#chat-page 会把自带安全区的 .status-bar 整个隐藏
 *   （见 #chat-page.chat-page--offline-mode > .status-bar { display:none }），
 *   聊天头 .chat-header 改造成「悬浮卡片」，只用 margin:10px auto 0（1v1 私聊
 *   常规设置入口）或 margin:10px 0 0（多人群组水彩美化态）做顶部间距，
 *   没有再补 env(safe-area-inset-top)，于是卡片直接贴在 #chat-page（=铺满
 *   真机视口的 #app 内页）物理顶部，被状态栏 / 灵动岛整块盖住。
 *   三种线下头部形态（1v1 私聊 / 多人群组-未美化重置态 / 多人群组-水彩美化态）
 *   结构相同、均存在同一疏漏，一并修复。
 *
 * 方案：只改 margin-top（不动 margin 的左右/下值与其余尺寸、圆角、阴影等
 *   视觉细节），把安全区累加进去；无刘海/灵动岛机型 env() 恒为 0，观感零变化。
 *
 * 适配范围：iPhone（Safari / Chrome / Edge / 夸克 / 搜狗 / 雨见 / via 等）与
 *   华为/小米/OPPO/魅族/vivo/三星等 Android 机型下的对应浏览器内核；不支持
 *   env() 的旧内核浏览器按第二参数兜底为 0px，同样不受影响。 */

/* 1v1 私聊线下模式：折叠态 + 展开态卡片头（原 margin: 10px auto 0） */
#chat-page.chat-page--offline-mode .chat-header,
#chat-page.chat-page--offline-mode .chat-header.chat-header--expanded {
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 多人群组线下模式·未美化重置态（原 margin: 10px auto 0 !important） */
#chat-page.chat-page--offline-mode.chat-page--offline-group:not(.chat-page--offline-beautified) .chat-header,
#chat-page.chat-page--offline-mode.chat-page--offline-group:not(.chat-page--offline-beautified) .chat-header.chat-header--expanded {
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* 多人群组线下模式·水彩美化态封面卡（原 margin: 10px 0 0 !important） */
#chat-page.chat-page--offline-mode.chat-page--offline-group.chat-page--offline-beautified .chat-header,
#chat-page.chat-page--offline-mode.chat-page--offline-group.chat-page--offline-beautified .chat-header.chat-header--expanded {
    margin-top: calc(10px + var(--safe-area-inset-top, env(safe-area-inset-top, 0px))) !important;
}

/* ================================================================== */
