/* ============================================================
   📦 全局样式库 — 主题/字体/字号/容器定义
   跨模块共用：详情页 / 列表页 / Member 模块
   引入位置：frame.blade.php / show.blade.php / list.blade.php
   ============================================================ */

/* ============================================================
   🔄 基础 Reset — 替代 ModStart/Layui 框架的样式重置
   不再依赖任何框架 CSS，前端样式完全自主可控
   - 统一盒模型、边距、字体、表单元素默认行为
   ============================================================ */
*, *::before, *::after {
    box-sizing: border-box;
}

html {
    font-size: 14px;
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: #333;
    font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', Tahoma, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

a {
    color: inherit;
    text-decoration: none;
}

button, input, select, textarea {
    margin: 0;
    padding: 0;
    font-family: inherit;
    font-size: inherit;
    font-weight: inherit;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
}

ul, ol {
    margin: 0;
    padding: 0;
    list-style: none;
}

h1, h2, h3, h4, h5, h6,
blockquote, pre, td, th, dl, dt, dd {
    margin: 0;
    padding: 0;
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* ============================================================
   0. 移动端交互修复（防止按钮边框闪烁 / 系统样式侵入）
   - -webkit-tap-highlight-color：iOS/Safari 默认按住按钮时的半透明灰蒙版（"闪边"元凶）
   - appearance：安卓 Chrome 默认给 <button> 套系统风格边框，点按瞬间会切换样式造成闪烁
   - user-select：按钮/链接/交互元素禁止长按文字选中弹出菜单（避免选中态高亮叠加在按钮上）
   - -webkit-touch-callout：禁止 iOS 长按图片/链接的系统分享/保存菜单弹窗
   ============================================================ */
button, a, [role="button"],
.btn-ui-1, .nav-link, .nav-toggle-btn,
.menu-main-item, .primary-download-btn,
.pdf-help-toolbar-btn, .pdf-portal-exit,
.pdf-seg-btn, .pdf-zoom-preset,
.submenu-item, .mobile-menu-toggle-btn,
.control-btn, .sub-btn {
    -webkit-tap-highlight-color: transparent;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    -webkit-appearance: none;
    appearance: none;
    -webkit-user-select: none;
    user-select: none;
    outline: none;
}
* {
    -webkit-touch-callout: none;
}
/* 输入框/文本区允许选中（交互元素排除在外） */
input, textarea, [contenteditable="true"],
pre, code, p, h1, h2, h3, h4, h5, h6, li, span {
    -webkit-user-select: text;
    user-select: text;
    -webkit-touch-callout: default;
}


/* ============================================================
   1. UI 变量系统（默认回退值）
   玻璃层 / 实体层 / 尺寸规范
   ============================================================ */
:root {
    /* 玻璃层参数 */
    --ui-glass-bg:        rgba(255, 255, 255, 0.22);
    --ui-glass-border:    rgba(255, 255, 255, 0.30);
    --ui-glass-hilight:   rgba(255, 255, 255, 0.45);
    --ui-glass-shadow:    rgba(0, 0, 0, 0.10);

    /* 实体层参数（2026-08-31：带透明度，框架容器透出动态背景，全站融合） */
    --ui-solid-bg:        rgba(253, 251, 247, 0.80);
    --ui-solid-border:    rgba(0, 0, 0, 0.06);
    --ui-accent:          #9b6bff;
    --ui-accent-ci:       #4f46e5;
    --ui-text:            #2a2a2a;
    --ui-text-dim:        #6b7280;

    /* 尺寸规范 */
    --ui-radius-sm:       4px;
    --ui-radius-md:       6px;
    --ui-radius-lg:       8px;
    --ui-radius-xl:       10px;
    --ui-shadow-sm:       0 2px 8px rgba(0, 0, 0, 0.04);
    --ui-shadow-md:       0 4px 15px rgba(0, 0, 0, 0.08);
    --ui-shadow-lg:       0 8px 30px rgba(0, 0, 0, 0.12);
    --ui-shadow-float:    0 12px 40px rgba(155, 107, 255, 0.18);

    /* 色板扩展 token（2026-08-31）：各主题覆盖，此处为回退值 */
    --ui-accent-deep:     #7c3aed;                               /* 主色深化：hover/按下/渐变终点 */
    --ui-accent-soft:     rgba(155, 107, 255, 0.10);             /* 主色微染底 */
    --ui-accent-2:        #38bdf8;                               /* 辅助色：点缀/次级交互 */
    --ui-accent-2-soft:   rgba(56, 189, 248, 0.10);              /* 辅助色微染底 */
    --ui-gold:            #d8af51;                               /* 金色点缀 */
    --ui-ink:             #1a1a2e;                               /* 强墨文字 */
    --ui-line:            rgba(155, 107, 255, 0.14);             /* 主题分隔线 */
    --ui-grad-accent:     linear-gradient(135deg, #9b6bff, #7c3aed);  /* 激活渐变 */
    --ui-btn-hilight:     rgba(255, 255, 255, 0.25);             /* 按钮内高光 */
}


/* ============================================================
   2. 字号变量系统（侧边栏/导航/用户区）
   用于 <html class="theme-zihao-N"> 切换
   ============================================================ */
:root {
    --size-logo:     22px;
    --size-nav:      15px;
    --size-submenu:  14px;
    --size-user:     14px;
    --size-toggle:   24px;
}

.theme-zihao-1 {
    --size-logo:     20px;
    --size-nav:      13px;
    --size-submenu:  12px;
    --size-user:     12px;
    --size-toggle:   22px;
}

.theme-zihao-2 {
    --size-logo:     22px;
    --size-nav:      15px;
    --size-submenu:  14px;
    --size-user:     14px;
    --size-toggle:   24px;
}

.theme-zihao-3 {
    --size-logo:     24px;
    --size-nav:      17px;
    --size-submenu:  16px;
    --size-user:     16px;
    --size-toggle:   26px;
}

/* 档4/档5（2026-09-04）：全局字号扩 5 档（1/2/3 保持原值兼容旧档案），更大端延伸 */
.theme-zihao-4 {
    --size-logo:     25px;
    --size-nav:      18px;
    --size-submenu:  17px;
    --size-user:     17px;
    --size-toggle:   27px;
}

.theme-zihao-5 {
    --size-logo:     26px;
    --size-nav:      19px;
    --size-submenu:  18px;
    --size-user:     18px;
    --size-toggle:   28px;
}


/* ============================================================
   3. UI 组件类（视觉层，只含 background/border/shadow）
   原则：不写 padding/margin/display/flex/width/height/gap/font/z-index/transform
   用法：在原布局 class 后追加
     <div class="poetry-control-bar menu-ui-1">
     <button class="control-btn btn-ui-1">
   ============================================================ */

/* ---------- 📋 菜单栏 UI ---------- */
.menu-ui-1 {
    background: var(--ui-glass-bg) !important;
    border: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-lg) !important;
    box-shadow: inset 0 1px 0 var(--ui-glass-hilight);
}

/* ---------- 🔘 按钮 UI ---------- */
.btn-ui-1 {
    /* ★ 性能&闪边修复：移除 backdrop-filter 毛玻璃
     *   手机端按住时 iOS 需对按钮覆盖区域外做整屏 GPU 采样模糊 → 边框/背景"闪一下"；
     *   改用 --ui-solid-bg 实色（98%+ 不透明），视觉层级一致但无采样开销。 */
    background: var(--ui-solid-bg) !important;
    border: 1px solid var(--ui-solid-border) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.6),
        0 2px 8px rgba(0, 0, 0, 0.05) !important;
    transition: background-color .2s ease, box-shadow .2s ease !important;
}
.btn-ui-1:hover {
    background: color-mix(in srgb, var(--ui-accent) 10%, var(--ui-solid-bg)) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.6),
        0 3px 12px rgba(0, 0, 0, 0.08) !important;
}
.btn-ui-1:active {
    /* ★ 闪边修复：:active 时保持与基础态同结构的阴影（仅加 1px 内阴影模拟按下），
     *   不要突然切换到纯 inset 阴影组合 —— iOS 在 :active 触发时阴影结构变化会
     *   导致 GPU 重新分配阴影纹理层，观感上就是"边框闪一下"。 */
    background: color-mix(in srgb, var(--ui-accent) 14%, var(--ui-solid-bg)) !important;
    box-shadow:
        inset 0 2px 4px rgba(0, 0, 0, 0.06),
        0 1px 3px rgba(0, 0, 0, 0.04) !important;
}

/* ---------- 📦 内容框 UI ---------- */
/* 2026-08-31：content-ui-2 实体壳 → 玻璃拟态（背景透出动态底色）；solid-bg 已带 alpha */
.content-ui-1 {
    background: var(--ui-glass-bg) !important;
    border: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-lg) !important;
    box-shadow: inset 0 1px 0 var(--ui-glass-hilight);
    backdrop-filter: blur(14px) saturate(1.4);
    -webkit-backdrop-filter: blur(14px) saturate(1.4);
}

.content-ui-2 {
    background: var(--ui-solid-bg) !important;
    border: 1px solid var(--ui-solid-border) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        0 1px 0 var(--ui-solid-border),
        0 3px 0 var(--ui-solid-border),
        0 6px 16px var(--ui-shadow-md) !important;
    backdrop-filter: blur(18px) saturate(1.5);
    -webkit-backdrop-filter: blur(18px) saturate(1.5);
}

/* ---------- 📂 下拉浮层面板 UI ---------- */
.dropdown-ui-1 {
    background:
        linear-gradient(180deg,
            color-mix(in srgb, var(--ui-glass-bg) 78%, white),
            color-mix(in srgb, var(--ui-glass-bg) 88%, white)) !important;
    backdrop-filter: blur(22px) saturate(1.6) !important;
    border: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        inset 0 1px 0 var(--ui-glass-hilight),
        var(--ui-shadow-lg) !important;
}

/* ---------- 💬 悬浮气泡 / 提示框 UI ---------- */
.popover-ui-1 {
    background: color-mix(in srgb, #000 82%, var(--ui-accent) 8%) !important;
    backdrop-filter: blur(10px) saturate(1.4) !important;
    -webkit-backdrop-filter: blur(10px) saturate(1.4) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.08),
        var(--ui-shadow-lg) !important;
}

/* ---------- 🪟 页面外壳 / 视口容器 UI ---------- */
.shell-ui-1 {
    background: color-mix(in srgb, var(--ui-glass-bg) 70%, transparent) !important;
    backdrop-filter: blur(24px) saturate(1.3) !important;
    -webkit-backdrop-filter: blur(24px) saturate(1.3) !important;
    border: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-lg) !important;
    box-shadow:
        inset 0 1px 0 var(--ui-glass-hilight),
        var(--ui-shadow-sm) !important;
}

/* ---------- 📎 页脚条 UI ---------- */
.footer-ui-1 {
    background: var(--ui-glass-bg) !important;
    backdrop-filter: blur(14px) saturate(1.4) !important;
    -webkit-backdrop-filter: blur(14px) saturate(1.4) !important;
    border-top: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-sm) !important;
    box-shadow: inset 0 1px 0 var(--ui-glass-hilight) !important;
}

/* ---------- 🌫️ 全屏遮罩 UI ---------- */
.overlay-ui-1 {
    background: rgba(0, 0, 0, 0.4) !important;
    backdrop-filter: blur(4px) !important;
    -webkit-backdrop-filter: blur(4px) !important;
}

/* ---------- 🏷️ 小标签 / 注释芯片 UI ---------- */
.chip-ui-1 {
    background: var(--ui-glass-bg) !important;
    backdrop-filter: blur(8px) saturate(1.4) !important;
    -webkit-backdrop-filter: blur(8px) saturate(1.4) !important;
    border: 1px solid var(--ui-glass-border) !important;
    border-radius: var(--ui-radius-sm) !important;
    box-shadow:
        inset 0 1px 0 var(--ui-glass-hilight),
        var(--ui-shadow-sm) !important;
}

/* ============================================================
   4. 开关组件（拟态玻璃开关）
   状态：默认 = 关闭 / .on = 开启
   ============================================================ */
.gswitch {
    position: relative;
    width: 36px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    cursor: pointer;
    background: linear-gradient(145deg, rgba(0, 0, 0, 0.22), rgba(255, 255, 255, 0.04));
    border: 1px solid var(--ui-glass-border);
    border-radius: 999px;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.22);
    transition: background 0.25s, border-color 0.25s;
}

.gswitch::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: linear-gradient(145deg, #fff, rgba(255, 255, 255, 0.7));
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* 联动：按钮 .active 状态触发开关亮起（详情页 .sub-btn 联动） */
.sub-btn.active .gswitch {
    background: linear-gradient(145deg,
        color-mix(in srgb, var(--ui-accent) 75%, transparent),
        color-mix(in srgb, var(--ui-accent) 40%, transparent));
    border-color: color-mix(in srgb, var(--ui-accent) 50%, var(--ui-glass-border));
}
.sub-btn.active .gswitch::after {
    transform: translateX(16px);
}


/* ============================================================
   5. 字体注册表（统一字体池）
   全局组合 / 6 区块定制 / 工作台共用的唯一字体源
   ============================================================ */

/* ── 自托管字体：幼圆 975Maru SC ─────────────────────────────
 * 说明：原 cn-fontsource CDN 分包字形进距(advance)为 0，导致竖排(vertical-rl)
 *      文字全叠成一团。改为自托管 GB2312 分包 woff2（1.35MB，进距 1em 正常），
 *      本地装了 975Maru SC 的用户优先用 local，否则下载自托管文件。
 *      仅在排版用到该族名时按需下载（font-display: swap，不阻塞首屏）。 */
@font-face {
    font-family: '975Maru SC';
    src: local('975Maru SC'), local('975MaruSC'),
         url('/static/fonts/975maru-sc.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

:root {
    /* ═══ 字体注册变量：全平台跨平台回退方案 ═══════════════════════════
     * 原则：同风格优先 → 跨平台覆盖 → 通用关键字兜底
     * 浏览器按声明顺序匹配首个可用字体（O(1) 查找，非逐个下载）
     * Win=Windows | Mac=macOS | iOS=iOS | And=Android | Lin=Linux        */

    /* 宋体（中易宋体）: Win=SimSun/宋体 → Mac/iOS=Songti SC/STSong → And/Lin=Noto Serif → serif */
    --font-reg-songti:      "SimSun", "宋体", "NSimSun", "Songti SC", "STSong", "华文宋体", "Noto Serif CJK SC", serif;

    /* 雅黑: Win=YaHei/微软雅黑 → Mac/iOS=PingFang SC → And/Lin=Noto Sans → sans-serif */
    --font-reg-yahei:       "Microsoft YaHei", "微软雅黑", "Microsoft YaHei UI", "PingFang SC", "Heiti SC", "Noto Sans CJK SC", sans-serif;

    /* 幼圆: Win=YouYuan → Mac/iOS=Yuanti SC → CDN975圆体(Android) → Noto Sans → sans-serif */
    --font-reg-youyuan:     "YouYuan", "幼圆", "Yuanti SC", "975Maru SC", "PingFang SC", "Noto Sans CJK SC", sans-serif;

    /* 细黑（华文细黑）: Mac/iOS=STXihei → Win=YaHei Light(细体变体) → And/Lin=Noto Sans Thin → sans-serif
     * Windows 上 STXihei 不存在，用 Microsoft YaHei Light（雅黑细体）做主力，与雅黑区分 */
    --font-reg-stxihei:     "STXihei", "华文细黑", "STHeiti Light", "Microsoft YaHei Light", "微软雅黑 Light", "PingFang SC", "Noto Sans CJK SC", sans-serif;

    /* 西文衬线: Win=Times New Roman → Mac/iOS=Times → Georgia → serif */
    --font-reg-latin-serif: "Times New Roman", "Times", Georgia, serif;

    /* 西文无衬线: Win=Arial → Mac/iOS=Helvetica → And=Roboto → sans-serif */
    --font-reg-latin-sans:  "Arial", "Helvetica", "Roboto", sans-serif;

    /* ── CDN 字体（@chinese-fonts 生态，OFL/免费商用，分片按需加载） ──
     * CSS 由 poetry-detail.js 字体加载器懒注入（jsDelivr 单源，带 CORS 头不被 ORB 拦截）
     * 兜底链：Web 字体未就绪时回落系统字体，内容始终可读                  */

    /* 文楷（霞鹜文楷）: CDN → Mac/iOS=Kaiti SC → Win=KaiTi → And/Lin=Noto Serif → serif */
    --font-reg-lxgw:        "LXGW WenKai", "Kaiti SC", "STKaiti", "KaiTi", "楷体", "Noto Serif CJK SC", serif;

    /* 老宋（京華老宋体）: CDN → Mac/iOS=Songti SC → Win=SimSun → And/Lin=Noto Serif → serif */
    --font-reg-kingsong:    "KingHwa_OldSong", "Songti SC", "STSong", "SimSun", "宋体", "Noto Serif CJK SC", serif;

    /* 明朝（汇文明朝体）: CDN → Mac/iOS=Songti SC → Win=SimSun → And/Lin=Noto Serif → serif */
    --font-reg-mincho:      "Huiwen-mincho", "Songti SC", "STSong", "SimSun", "宋体", "Noto Serif CJK SC", serif;

    /* 楷体: Mac/iOS=Kaiti SC/STKaiti → Win=KaiTi/楷体 → CDN文楷兜底(Android) → serif */
    --font-reg-kaiti:       "Kaiti SC", "STKaiti", "华文楷体", "KaiTi", "楷体", "KaiTi_GB2312", "LXGW WenKai", serif;
}


/* ============================================================
   6. 字体组合系统
   用法：<body class="font-combo-ys/qy/mh/yr">
   ============================================================ */
body.font-combo-ys {
    --font-family-base:    var(--font-reg-latin-serif);
    --font-family-heading: var(--font-reg-latin-serif);
    --font-family-body:    var(--font-reg-kaiti);
    --font-family-meta:    var(--font-reg-songti);
    --font-family-nav:     var(--font-reg-latin-serif);
    --font-family-button:  var(--font-reg-latin-serif);
    --font-weight-heading: 700;
    --font-weight-nav:     500;
    --font-weight-button:  400;
}

body.font-combo-qy {
    --font-family-base:    var(--font-reg-kaiti);
    --font-family-heading: var(--font-reg-kaiti);
    --font-family-body:    var(--font-reg-kaiti);
    --font-family-meta:    var(--font-reg-yahei);
    --font-family-nav:     var(--font-reg-kaiti);
    --font-family-button:  var(--font-reg-kaiti);
    --font-weight-heading: 700;
    --font-weight-nav:     500;
    --font-weight-button:  400;
}

body.font-combo-mh {
    --font-family-base:    var(--font-reg-heiti);
    --font-family-heading: var(--font-reg-heiti);
    --font-family-body:    var(--font-reg-kaiti);
    --font-family-meta:    var(--font-reg-songti);
    --font-family-nav:     var(--font-reg-heiti);
    --font-family-button:  var(--font-reg-heiti);
    --font-weight-heading: 700;
    --font-weight-nav:     400;
    --font-weight-button:  300;
}

body.font-combo-yr {
    --font-family-base:    var(--font-reg-yahei);
    --font-family-heading: var(--font-reg-yahei);
    --font-family-body:    var(--font-reg-kaiti);
    --font-family-meta:    var(--font-reg-yahei);
    --font-family-nav:     var(--font-reg-yahei);
    --font-family-button:  var(--font-reg-yahei);
    --font-weight-heading: 600;
    --font-weight-nav:     400;
    --font-weight-button:  400;
}

body {
    --font-family-base:    var(--font-reg-latin-serif);
    --font-family-heading: var(--font-reg-latin-serif);
    --font-family-body:    var(--font-reg-kaiti);
    --font-family-meta:    var(--font-reg-songti);
    --font-family-nav:     var(--font-reg-latin-serif);
    --font-family-button:  var(--font-reg-latin-serif);
    --font-weight-heading: 700;
    --font-weight-nav:     500;
    --font-weight-button:  400;
}


/* ============================================================
   7. 正文区块字体变量（6 区块）
   默认跟随全局组合，可被详情页/工作台覆盖
   ============================================================ */
body {
    --cf-title:     var(--font-family-heading);
    --cf-poem:      var(--font-family-body);
    --cf-translate: var(--font-family-body);
    --cf-note:      var(--font-family-meta);
    --cf-subtitle:  var(--font-family-heading);
    --cf-apprec:    var(--font-family-body);
}


/* ============================================================
   8. 统一主题系统（5 个主题类）
   详情页：<body class="theme-*"> → 全局生效
   工作台：.pdf-content-wrapper.theme-* → 局部隔离
   每个主题类同时包含：页面级变量 + UI 变量 + 诗词字体变量
   ============================================================ */

/* ============================================================
   动态背景系统（2026-08-31）
   底色渐变挂在 html（body 透明化），body 伪元素做两个漂移光斑
   性能纪律：仅 transform 动画（合成层）、慢速 26s+、reduced-motion 停用
   ============================================================ */
html { background: #0f0c29; }   /* 兜底：:has 不可用时防白屏 */

/* ---- 漂移光斑：body 伪元素，颜色由各主题 --bg-orb-1/2 提供 ---- */
body[class*="theme-"]::before,
body[class*="theme-"]::after {
    content: '';
    position: fixed;
    border-radius: 50%;
    filter: blur(60px);
    z-index: -1;
    pointer-events: none;
    will-change: transform;
}
body[class*="theme-"]::before {
    width: 55vmax;
    height: 55vmax;
    background: var(--bg-orb-1, transparent);
    top: -16vmax;
    left: -12vmax;
    animation: bgDrift1 26s ease-in-out infinite alternate;
}
body[class*="theme-"]::after {
    width: 46vmax;
    height: 46vmax;
    background: var(--bg-orb-2, transparent);
    bottom: -14vmax;
    right: -10vmax;
    animation: bgDrift2 34s ease-in-out infinite alternate;
}
@keyframes bgDrift1 {
    to { transform: translate(14vmax, 9vmax) scale(1.18); }
}
@keyframes bgDrift2 {
    to { transform: translate(-11vmax, -8vmax) scale(1.12); }
}
@media (prefers-reduced-motion: reduce) {
    body[class*="theme-"]::before,
    body[class*="theme-"]::after { animation: none; }
}

/* ---- 【默认/梦幻极光】午夜深空 + 青绿/品紫极光斑 ---- */
html:has(body.theme-default) {
    background:
        radial-gradient(ellipse 90% 70% at 50% 110%, #104080 0%, transparent 60%),
        linear-gradient(160deg, #0f0c29 0%, #1a1040 45%, #0d2a4a 100%);
    background-attachment: fixed;
}
.theme-default {
    background: transparent;

    --bg-default:          linear-gradient(160deg, #0f0c29, #1a1040 45%, #0d2a4a);
    --bg-orb-1:            rgba(52, 211, 153, 0.26);   /* 极光青绿 */
    --bg-orb-2:            rgba(168, 85, 247, 0.28);   /* 极光品紫 */
    --text-primary:        #1a1a1a;
    --text-secondary:      #2c3e50;
    --text-accent:         #7832ff;
    --pagination-bg:       rgba(255, 255, 255, 0.4);
    --pagination-color:    #0284c7;
    --pagination-current-bg: #0284c7;
    --logo-gradient:       linear-gradient(135deg, #ffffff 20%, #7832ff 100%);
    --filter-bg:           rgba(30, 20, 50, 0.1);

    /* 侧边栏 */
    --sidebar-bg:            rgba(255, 245, 250, 0.3);
    --sidebar-border:        rgba(230, 210, 230, 0.8);
    --sidebar-text:          #4a2a5a;
    --sidebar-text-secondary:#7a5a8a;
    --sidebar-text-hover:    #9b6bff;
    --sidebar-logo-text:     #6b3a8a;
    --sidebar-btn-bg:        rgba(255, 240, 250, 0.8);
    --sidebar-btn-border:    rgba(230, 210, 240, 0.8);
    --sidebar-btn-color:     #8a6a9a;
    --sidebar-btn-hover-bg:  #ffffff;
    --sidebar-btn-hover-color:#9b6bff;
    --sidebar-divider:       rgba(100, 50, 120, 0.08);
    --sidebar-user-bg:       rgba(255, 240, 250, 0.6);
    --sidebar-user-border:   rgba(230, 210, 240, 0.8);
    --sidebar-user-name:     #6a4a7a;
    --sidebar-submenu-bg:    rgba(255, 245, 250, 0.95);
    --sidebar-submenu-text:  #4a2a5a;

    /* 网格线 */
    --tianzi-line-color:   rgba(216, 175, 81, 0.8);
    --pinyin-line-color:   rgba(216, 175, 81, 0.3);
    --tianzi-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'50'%20y1%3D'0'%20x2%3D'50'%20y2%3D'100'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.8'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'50'%20x2%3D'100'%20y2%3D'50'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.8'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3C%2Fsvg%3E");
    --pinyin-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'0'%20y1%3D'5'%20x2%3D'100'%20y2%3D'5'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.3'%20stroke-width%3D'1.5'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'35'%20x2%3D'100'%20y2%3D'35'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.3'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'65'%20x2%3D'100'%20y2%3D'65'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.3'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'95'%20x2%3D'100'%20y2%3D'95'%20stroke%3D'%23D8AF51'%20stroke-opacity%3D'0.3'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E");

    /* 诗词字体变量 */
    --poetry-text-primary: #1a1a2e;
    --poetry-text-secondary: #475569;
    --poetry-meta-color: #666;
    --poetry-btn-t-color: #0984e3;
    --poetry-btn-n-color: #00b894;
    --poetry-header-bg: linear-gradient(135deg, rgba(124, 77, 255, 0.2), rgba(0, 145, 234, 0.2));
    --poetry-card-bg: rgba(255, 255, 255, 0.3);
    --poetry-line-border: 1px solid rgba(0, 0, 0, 0.05);
    --poetry-highlight-bg: rgba(3, 105, 161, 0.15);
    --poetry-translate-bg: rgba(0, 0, 0, 0.03);
    --poetry-note-bg: #f1f5f9;
    --poetry-control-bar: rgba(255, 255, 255, 0.8);
}

/* ---- 【古典雅宋】宣纸暖底 + 鎏金/赭石微光斑 ---- */
html:has(body.theme-gudian) {
    background:
        radial-gradient(ellipse 80% 50% at 50% 0%, rgba(255, 250, 238, 0.9) 0%, transparent 60%),
        linear-gradient(135deg, #f5efe4 0%, #ede4d3 50%, #e8dcc8 100%);
    background-attachment: fixed;
}
.theme-gudian {
    background: transparent;

    --bg-default:          linear-gradient(135deg, #f5efe4 0%, #ede4d3 100%);
    --bg-orb-1:            rgba(201, 162, 39, 0.10);   /* 鎏金 */
    --bg-orb-2:            rgba(185, 74, 63, 0.08);    /* 赭石 */
    --text-primary:        #2a2a2e;
    --text-secondary:      #6b5a4a;
    --text-accent:         #b94a3f;
    --pagination-bg:       rgba(245, 239, 228, 0.6);
    --pagination-color:    #b94a3f;
    --pagination-current-bg: #b94a3f;
    --logo-gradient:       linear-gradient(135deg, #2a2a2e 20%, #b94a3f 100%);
    --filter-bg:           rgba(160, 120, 90, 0.1);

    /* 侧边栏 */
    --sidebar-bg:            rgba(245, 239, 228, 0.85);
    --sidebar-border:        rgba(160, 120, 90, 0.25);
    --sidebar-text:          #2a2a2e;
    --sidebar-text-secondary:#a0785a;
    --sidebar-text-hover:    #b94a3f;
    --sidebar-logo-text:     #2a2a2e;
    --sidebar-btn-bg:        rgba(255, 252, 245, 0.8);
    --sidebar-btn-border:    rgba(160, 120, 90, 0.2);
    --sidebar-btn-color:     #6b5a4a;
    --sidebar-btn-hover-bg:  #fff8eb;
    --sidebar-btn-hover-color:#b94a3f;
    --sidebar-divider:       rgba(160, 120, 90, 0.1);
    --sidebar-user-bg:       rgba(255, 252, 245, 0.6);
    --sidebar-user-border:   rgba(160, 120, 90, 0.2);
    --sidebar-user-name:     #2a2a2e;
    --sidebar-submenu-bg:    rgba(245, 239, 228, 0.95);
    --sidebar-submenu-text:  #2a2a2e;

    /* 网格线 */
    --tianzi-line-color:   rgba(160, 120, 90, 0.6);
    --pinyin-line-color:   rgba(160, 120, 90, 0.3);
    --tianzi-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'50'%20y1%3D'0'%20x2%3D'50'%20y2%3D'100'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.6'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'50'%20x2%3D'100'%20y2%3D'50'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.6'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3C%2Fsvg%3E");
    --pinyin-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'0'%20y1%3D'5'%20x2%3D'100'%20y2%3D'5'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.3'%20stroke-width%3D'1.5'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'35'%20x2%3D'100'%20y2%3D'35'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.3'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'65'%20x2%3D'100'%20y2%3D'65'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.3'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'95'%20x2%3D'100'%20y2%3D'95'%20stroke%3D'%23A0785A'%20stroke-opacity%3D'0.3'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E");

    /* UI 变量 */
    --ui-glass-bg:        rgba(245, 239, 228, 0.60);
    --ui-glass-border:    rgba(160, 120, 90, 0.25);
    --ui-glass-hilight:   rgba(255, 255, 255, 0.60);
    --ui-glass-shadow:    rgba(42, 42, 42, 0.08);
    --ui-solid-bg:        rgba(245, 239, 228, 0.80);
    --ui-solid-border:    rgba(160, 120, 90, 0.20);
    --ui-accent:          #b94a3f;
    --ui-accent-ci:       #2f5d50;
    --ui-text:            #2a2a2a;
    --ui-text-dim:        #a0785a;
    --ui-shadow-float:    0 12px 40px rgba(185, 74, 63, 0.15);

    /* 色板扩展（赭红×松绿×鎏金） */
    --ui-accent-deep:     #9a352c;
    --ui-accent-soft:     rgba(185, 74, 63, 0.10);
    --ui-accent-2:        #2f5d50;
    --ui-accent-2-soft:   rgba(47, 93, 80, 0.10);
    --ui-gold:            #c9a227;
    --ui-ink:             #2a2a2e;
    --ui-line:            rgba(185, 74, 63, 0.16);
    --ui-grad-accent:     linear-gradient(135deg, #b94a3f, #9a352c);
    --ui-btn-hilight:     rgba(255, 255, 255, 0.30);

    /* 诗词字体变量 */
    --poetry-text-primary: #2a2a2e;
    --poetry-text-secondary: #6b5a4a;
    --poetry-meta-color: #8b6f4e;
    --poetry-btn-t-color: #b94a3f;
    --poetry-btn-n-color: #2f5d50;
    --poetry-header-bg: linear-gradient(135deg, rgba(185, 74, 63, 0.15), rgba(47, 93, 80, 0.15));
    --poetry-card-bg: rgba(245, 239, 228, 0.5);
    --poetry-line-border: 1px solid rgba(160, 120, 90, 0.2);
    --poetry-highlight-bg: rgba(185, 74, 63, 0.15);
    --poetry-translate-bg: rgba(160, 120, 90, 0.1);
    --poetry-note-bg: #f5efe4;
    --poetry-control-bar: rgba(245, 239, 228, 0.9);
}

/* ---- 【雅致莫兰迪】灰调暖底 + 雾蓝/灰粉微光斑 ---- */
html:has(body.theme-yazhi) {
    background:
        radial-gradient(ellipse 80% 50% at 50% 0%, rgba(250, 248, 245, 0.85) 0%, transparent 60%),
        linear-gradient(135deg, #e8e4df 0%, #ddd8d0 50%, #d4cec3 100%);
    background-attachment: fixed;
}
.theme-yazhi {
    background: transparent;

    --bg-default:          linear-gradient(135deg, #e8e4df 0%, #ddd8d0 100%);
    --bg-orb-1:            rgba(141, 164, 191, 0.14);   /* 雾蓝 */
    --bg-orb-2:            rgba(201, 169, 166, 0.14);   /* 灰粉 */
    --text-primary:        #3f3f46;
    --text-secondary:      #6b7280;
    --text-accent:         #8da4bf;
    --pagination-bg:       rgba(232, 228, 223, 0.6);
    --pagination-color:    #8da4bf;
    --pagination-current-bg: #8da4bf;
    --logo-gradient:       linear-gradient(135deg, #3f3f46 20%, #8da4bf 100%);
    --filter-bg:           rgba(141, 164, 191, 0.1);

    /* 侧边栏 */
    --sidebar-bg:            rgba(232, 228, 223, 0.85);
    --sidebar-border:        rgba(141, 164, 191, 0.25);
    --sidebar-text:          #3f3f46;
    --sidebar-text-secondary:#6b7280;
    --sidebar-text-hover:    #8da4bf;
    --sidebar-logo-text:     #3f3f46;
    --sidebar-btn-bg:        rgba(245, 242, 238, 0.8);
    --sidebar-btn-border:    rgba(141, 164, 191, 0.2);
    --sidebar-btn-color:     #6b7280;
    --sidebar-btn-hover-bg:  #f5f2ee;
    --sidebar-btn-hover-color:#8da4bf;
    --sidebar-divider:       rgba(141, 164, 191, 0.1);
    --sidebar-user-bg:       rgba(245, 242, 238, 0.6);
    --sidebar-user-border:   rgba(141, 164, 191, 0.2);
    --sidebar-user-name:     #3f3f46;
    --sidebar-submenu-bg:    rgba(232, 228, 223, 0.95);
    --sidebar-submenu-text:  #3f3f46;

    /* 网格线 */
    --tianzi-line-color:   rgba(141, 164, 191, 0.5);
    --pinyin-line-color:   rgba(141, 164, 191, 0.25);
    --tianzi-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'50'%20y1%3D'0'%20x2%3D'50'%20y2%3D'100'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'50'%20x2%3D'100'%20y2%3D'50'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3C%2Fsvg%3E");
    --pinyin-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'0'%20y1%3D'5'%20x2%3D'100'%20y2%3D'5'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'1.5'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'35'%20x2%3D'100'%20y2%3D'35'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'65'%20x2%3D'100'%20y2%3D'65'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'95'%20x2%3D'100'%20y2%3D'95'%20stroke%3D'%238DACBF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E");

    /* UI 变量 */
    --ui-glass-bg:        rgba(232, 228, 223, 0.60);
    --ui-glass-border:    rgba(141, 164, 191, 0.25);
    --ui-glass-hilight:   rgba(255, 255, 255, 0.50);
    --ui-glass-shadow:    rgba(107, 114, 128, 0.10);
    --ui-solid-bg:        rgba(232, 228, 223, 0.80);
    --ui-solid-border:    rgba(141, 164, 191, 0.20);
    --ui-accent:          #8da4bf;
    --ui-accent-ci:       #c9a9a6;
    --ui-text:            #3f3f46;
    --ui-text-dim:        #6b7280;
    --ui-shadow-float:    0 12px 40px rgba(141, 164, 191, 0.22);

    /* 色板扩展（雾蓝×灰粉×暖金） */
    --ui-accent-deep:     #6b8aa8;
    --ui-accent-soft:     rgba(141, 164, 191, 0.14);
    --ui-accent-2:        #c9a9a6;
    --ui-accent-2-soft:   rgba(201, 169, 166, 0.14);
    --ui-gold:            #b0a58f;
    --ui-ink:             #3f3f46;
    --ui-line:            rgba(141, 164, 191, 0.22);
    --ui-grad-accent:     linear-gradient(135deg, #8da4bf, #6b8aa8);
    --ui-btn-hilight:     rgba(255, 255, 255, 0.35);

    /* 诗词字体变量 */
    --poetry-text-primary: #3f3f46;
    --poetry-text-secondary: #6b7280;
    --poetry-meta-color: #78716c;
    --poetry-btn-t-color: #8da4bf;
    --poetry-btn-n-color: #c9a9a6;
    --poetry-header-bg: linear-gradient(135deg, rgba(141, 164, 191, 0.15), rgba(201, 169, 166, 0.15));
    --poetry-card-bg: rgba(232, 228, 223, 0.5);
    --poetry-line-border: 1px solid rgba(141, 164, 191, 0.2);
    --poetry-highlight-bg: rgba(141, 164, 191, 0.15);
    --poetry-translate-bg: rgba(232, 228, 223, 0.3);
    --poetry-note-bg: #e8e4df;
    --poetry-control-bar: rgba(232, 228, 223, 0.9);
}

/* ---- 【现代科技】深空蓝黑 + 科技青/亮紫鲜亮光斑（与墨韵区分：高饱和、高对比） ---- */
html:has(body.theme-xiandai) {
    background:
        radial-gradient(ellipse 70% 50% at 80% 100%, rgba(34, 211, 238, 0.12) 0%, transparent 55%),
        linear-gradient(140deg, #05070f 0%, #0a1628 50%, #12082a 100%);
    background-attachment: fixed;
}
.theme-xiandai {
    background: transparent;

    --bg-default:          linear-gradient(140deg, #05070f, #0a1628 50%, #12082a);
    --bg-orb-1:            rgba(34, 211, 238, 0.20);   /* 科技青 */
    --bg-orb-2:            rgba(124, 77, 255, 0.22);   /* 亮紫 */
    --text-primary:        #e2e8f0;
    --text-secondary:      #94a3b8;
    --text-accent:         #7c4dff;
    --pagination-bg:       rgba(255, 255, 255, 0.15);
    --pagination-color:    #7c4dff;
    --pagination-current-bg: #7c4dff;
    --logo-gradient:       linear-gradient(135deg, #ffffff 20%, #7c4dff 100%);
    --filter-bg:           rgba(30, 41, 59, 0.2);

    /* 侧边栏 */
    --sidebar-bg:            rgba(15, 23, 42, 0.5);
    --sidebar-border:        rgba(124, 77, 255, 0.3);
    --sidebar-text:          #e2e8f0;
    --sidebar-text-secondary:#94a3b8;
    --sidebar-text-hover:    #7c4dff;
    --sidebar-logo-text:     #e2e8f0;
    --sidebar-btn-bg:        rgba(30, 41, 59, 0.8);
    --sidebar-btn-border:    rgba(124, 77, 255, 0.25);
    --sidebar-btn-color:     #94a3b8;
    --sidebar-btn-hover-bg:  #334155;
    --sidebar-btn-hover-color:#7c4dff;
    --sidebar-divider:       rgba(255, 255, 255, 0.08);
    --sidebar-user-bg:       rgba(30, 41, 59, 0.6);
    --sidebar-user-border:   rgba(124, 77, 255, 0.25);
    --sidebar-user-name:     #cbd5e1;
    --sidebar-submenu-bg:    rgba(15, 23, 42, 0.95);
    --sidebar-submenu-text:  #e2e8f0;

    /* 网格线 */
    --tianzi-line-color:   rgba(124, 77, 255, 0.5);
    --pinyin-line-color:   rgba(124, 77, 255, 0.25);
    --tianzi-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'50'%20y1%3D'0'%20x2%3D'50'%20y2%3D'100'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'50'%20x2%3D'100'%20y2%3D'50'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3C%2Fsvg%3E");
    --pinyin-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'0'%20y1%3D'5'%20x2%3D'100'%20y2%3D'5'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'1.5'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'35'%20x2%3D'100'%20y2%3D'35'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'65'%20x2%3D'100'%20y2%3D'65'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'95'%20x2%3D'100'%20y2%3D'95'%20stroke%3D'%237C4DFF'%20stroke-opacity%3D'0.25'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E");

    /* UI 变量 */
    --ui-glass-bg:        rgba(15, 23, 42, 0.60);
    --ui-glass-border:    rgba(124, 77, 255, 0.30);
    --ui-glass-hilight:   rgba(124, 77, 255, 0.25);
    --ui-glass-shadow:    rgba(0, 0, 0, 0.30);
    --ui-solid-bg:        rgba(13, 22, 38, 0.66);
    --ui-solid-border:    rgba(124, 77, 255, 0.25);
    --ui-accent:          #7c4dff;
    --ui-accent-ci:       #22d3ee;
    --ui-text:            #e2e8f0;
    --ui-text-dim:        #94a3b8;
    --ui-shadow-float:    0 12px 40px rgba(124, 77, 255, 0.28);

    /* 色板扩展（亮紫×科技青×霓粉，暗底） */
    --ui-accent-deep:     #6935e0;
    --ui-accent-soft:     rgba(124, 77, 255, 0.16);
    --ui-accent-2:        #22d3ee;
    --ui-accent-2-soft:   rgba(34, 211, 238, 0.12);
    --ui-gold:            #f472b6;
    --ui-ink:             #e2e8f0;
    --ui-line:            rgba(124, 77, 255, 0.30);
    --ui-grad-accent:     linear-gradient(135deg, #8f63ff, #6935e0);
    --ui-btn-hilight:     rgba(255, 255, 255, 0.18);

    /* 诗词字体变量 */
    --poetry-text-primary: #e2e8f0;
    --poetry-text-secondary: #94a3b8;
    --poetry-meta-color: #64748b;
    --poetry-btn-t-color: #7c4dff;
    --poetry-btn-n-color: #22d3ee;
    --poetry-header-bg: linear-gradient(135deg, rgba(124, 77, 255, 0.25), rgba(34, 211, 238, 0.25));
    --poetry-card-bg: rgba(30, 41, 59, 0.5);
    --poetry-line-border: 1px solid rgba(124, 77, 255, 0.25);
    --poetry-highlight-bg: rgba(124, 77, 255, 0.25);
    --poetry-translate-bg: rgba(30, 41, 59, 0.3);
    --poetry-note-bg: #1e293b;
    --poetry-control-bar: rgba(15, 23, 42, 0.8);
}

/* ---- 【墨韵/深色】墨黑沉稳底 + 极淡紫灰呼吸光斑（与科技区分：低饱和、近墨色） ---- */
html:has(body.theme-dark) {
    background:
        radial-gradient(ellipse 70% 45% at 50% 115%, rgba(120, 100, 160, 0.08) 0%, transparent 60%),
        linear-gradient(150deg, #0c0c10 0%, #17141f 55%, #100f14 100%);
    background-attachment: fixed;
}
.theme-dark {
    background: transparent;

    --bg-default:          linear-gradient(150deg, #0c0c10, #17141f 55%, #100f14);
    --bg-orb-1:            rgba(167, 139, 250, 0.10);   /* 淡紫墨晕 */
    --bg-orb-2:            rgba(96, 165, 250, 0.06);    /* 墨蓝 */
    --text-primary:        #e0e6ed;
    --text-secondary:      #cbd5e1;
    --text-accent:         #c4b5fd;
    --pagination-bg:       rgba(255, 255, 255, 0.15);
    --pagination-color:    #a78bfa;
    --pagination-current-bg: #5a2dba;
    --logo-gradient:       linear-gradient(135deg, #ffffff 20%, #c4b5fd 100%);
    --filter-bg:           rgba(30, 20, 50, 0.2);

    /* 侧边栏 */
    --sidebar-bg:            rgba(30, 20, 50, 0.3);
    --sidebar-border:        rgba(80, 70, 120, 0.8);
    --sidebar-text:          #e0e6ed;
    --sidebar-text-secondary:#94a3b8;
    --sidebar-text-hover:    #c4b5fd;
    --sidebar-logo-text:     #e0e6ed;
    --sidebar-btn-bg:        rgba(50, 40, 70, 0.8);
    --sidebar-btn-border:    rgba(80, 70, 120, 0.8);
    --sidebar-btn-color:     #94a3b8;
    --sidebar-btn-hover-bg:  #4a3a6e;
    --sidebar-btn-hover-color:#c4b5fd;
    --sidebar-divider:       rgba(255, 255, 255, 0.08);
    --sidebar-user-bg:       rgba(50, 40, 70, 0.6);
    --sidebar-user-border:   rgba(80, 70, 120, 0.8);
    --sidebar-user-name:     #cbd5e1;
    --sidebar-submenu-bg:    rgba(30, 20, 50, 0.95);
    --sidebar-submenu-text:  #e0e6ed;

    /* 网格线 */
    --tianzi-line-color:   rgba(78, 94, 115, 0.8);
    --pinyin-line-color:   rgba(78, 94, 115, 0.5);
    --tianzi-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'50'%20y1%3D'0'%20x2%3D'50'%20y2%3D'100'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.8'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'50'%20x2%3D'100'%20y2%3D'50'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.8'%20stroke-width%3D'1.2'%20stroke-dasharray%3D'3%2C4'%2F%3E%3C%2Fsvg%3E");
    --pinyin-grid-bg: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%20100%20100'%20preserveAspectRatio%3D'none'%3E%3Cline%20x1%3D'0'%20y1%3D'5'%20x2%3D'100'%20y2%3D'5'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.5'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'35'%20x2%3D'100'%20y2%3D'35'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.5'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'65'%20x2%3D'100'%20y2%3D'65'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.5'%20stroke-width%3D'0.8'%2F%3E%3Cline%20x1%3D'0'%20y1%3D'95'%20x2%3D'100'%20y2%3D'95'%20stroke%3D'%234E5E73'%20stroke-opacity%3D'0.5'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E");

    /* UI 变量 */
    --ui-glass-bg:        rgba(30, 20, 50, 0.60);
    --ui-glass-border:    rgba(124, 77, 255, 0.30);
    --ui-glass-hilight:   rgba(124, 77, 255, 0.25);
    --ui-glass-shadow:    rgba(0, 0, 0, 0.30);
    --ui-solid-bg:        rgba(22, 19, 29, 0.66);
    --ui-solid-border:    rgba(124, 77, 255, 0.25);
    --ui-accent:          #c4b5fd;
    --ui-accent-ci:       #a78bfa;
    --ui-text:            #e2e8f0;
    --ui-text-dim:        #94a3b8;
    --ui-shadow-float:    0 12px 40px rgba(124, 77, 255, 0.28);

    /* 色板扩展（墨韵×浅紫×天蓝×鎏金，暗底） */
    --ui-accent-deep:     #8b5cf6;
    --ui-accent-soft:     rgba(196, 181, 253, 0.14);
    --ui-accent-2:        #60a5fa;
    --ui-accent-2-soft:   rgba(96, 165, 250, 0.12);
    --ui-gold:            #d8af51;
    --ui-ink:             #e0e6ed;
    --ui-line:            rgba(196, 181, 253, 0.22);
    --ui-grad-accent:     linear-gradient(135deg, #8b5cf6, #6d28d9);
    --ui-btn-hilight:     rgba(255, 255, 255, 0.15);

    /* 诗词字体变量 */
    --poetry-text-primary: #e0e6ed;
    --poetry-text-secondary: #cbd5e1;
    --poetry-meta-color: #94a3b8;
    --poetry-btn-t-color: #60a5fa;
    --poetry-btn-n-color: #34d399;
    --poetry-header-bg: linear-gradient(135deg, rgba(124, 77, 255, 0.25), rgba(0, 145, 234, 0.25));
    --poetry-card-bg: rgba(30, 20, 50, 0.3);
    --poetry-line-border: 1px solid rgba(255, 255, 255, 0.1);
    --poetry-highlight-bg: rgba(124, 77, 255, 0.25);
    --poetry-translate-bg: rgba(255, 255, 255, 0.05);
    --poetry-note-bg: #1e293b;
    --poetry-control-bar: rgba(124, 77, 255, 0.8);
}

/* PWA */
.pwa-install-fab{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:999px;background:linear-gradient(135deg,#7c4dff,#22d3ee);color:#fff!important;font-size:14px;font-weight:600;text-decoration:none!important;box-shadow:0 10px 30px rgba(124,77,255,.35),0 2px 8px rgba(0,0,0,.12);z-index:9998;cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;user-select:none}
.pwa-install-fab:hover{transform:translateY(-1px);box-shadow:0 14px 34px rgba(124,77,255,.4),0 3px 10px rgba(0,0,0,.15)}
.pwa-install-fab:active{transform:translateY(0) scale(.97)}
@media (min-width:820px){.pwa-install-fab{right:auto;left:20px;bottom:20px;padding:8px 14px;font-size:13px;background:#fff;color:#334155!important;border:1px solid #e2e8f0;box-shadow:0 6px 20px rgba(15,23,42,.12)}.pwa-install-fab:hover{background:#f8fafc;color:#7c4dff!important;border-color:#7c4dff}}
.pwa-install-link{display:inline-flex;align-items:center;margin-left:14px;padding:2px 8px;border-radius:6px;color:inherit;opacity:.8}
.pwa-install-link:hover{opacity:1;color:#7c4dff;text-decoration:underline}
@media (max-width:640px){.pwa-install-link{display:none}}
.pwa-ios-guide{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:99999;display:flex;align-items:flex-end;justify-content:center;padding:0 0 calc(20px + env(safe-area-inset-bottom,0px)) 0}
.pwa-ios-guide__inner{width:min(92%,420px);background:#fff;border-radius:16px 16px 14px 14px;padding:20px 20px 16px;color:#0f172a;box-shadow:0 -8px 40px rgba(0,0,0,.25)}
.pwa-ios-guide__title{font-size:17px;font-weight:700;margin-bottom:14px;color:#0f172a;text-align:center}
.pwa-ios-guide__step{display:flex;align-items:flex-start;gap:12px;padding:8px 0}
.pwa-ios-guide__num{flex:0 0 24px;width:24px;height:24px;line-height:24px;text-align:center;font-size:13px;font-weight:700;color:#fff;background:linear-gradient(135deg,#7c4dff,#22d3ee);border-radius:50%}
.pwa-ios-guide__txt{flex:1;font-size:14.5px;line-height:1.6;color:#334155;padding-top:2px}
.pwa-ios-guide__txt b{color:#7c4dff;font-weight:700}
.pwa-ios-guide__close{margin-top:16px;width:100%;padding:11px 0;border-radius:10px;border:none;background:linear-gradient(135deg,#7c4dff,#22d3ee);color:#fff;font-size:15px;font-weight:600;cursor:pointer}
@media (min-width:820px){.pwa-ios-guide{align-items:center;padding-bottom:40px}.pwa-ios-guide__inner{border-radius:16px}}


/* ============================================================
   9. 统一布局：左右两块悬浮（替代旧 site-content shell-ui-1 包裹）
   引入：2026-08-26 — 用户要求各模块视觉统一
   原则：
     - 外层 .site-content 不再有视觉边界（去掉 shell-ui-1 玻璃态壳）
     - 左侧 .left-nav-menu 与右侧 .content-area 改用实色风格（content-ui-2 风格）
     - 左右两块独立悬浮，高度对齐（96vh + top:2vh）
     - 内容区内部滚动（overflow-y:auto）
     - 模块切换时左右两块位置不变，只有内容区内容变化
   作用域：body.site-page / body.member-page（所有模块统一，不再特殊处理诗词详情页）
   ============================================================ */

/* body 不滚动，由内容区内部滚动 */
body.site-page,
body.member-page {
    height: 100vh;
    overflow: hidden;
    /* ★ 位移修复：强制保留滚动条空间，避免不同页面 overflow 不同导致视口宽度差 17px
       原 body overflow:hidden 时无滚动条，但子页面内部 overflow:auto 有滚动条，
       视口宽度差异会让 .site-content 居中位置偏移 8.5px → 侧边栏和内容区轻微错位 */
    scrollbar-gutter: stable;
}

/* 外层 site-content 透明 + 固定高度（去掉 shell-ui-1 玻璃态壳）
   ★ 强制统一 padding 和 max-width，防止各模块引入的子 CSS 覆盖导致间隙不一致
   ★ 保留 poetry.css 原有的 position:sticky + height:100vh + overflow:hidden
     这些是布局关键属性：sticky 让 site-content 从顶部开始、height 撑满视口、overflow:hidden 防止 body 滚动条 */
body .site-content {
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    border: none !important;
    box-shadow: none !important;
    border-radius: 0 !important;
    /* ★ 统一 site-content 的 padding（原 poetry.css: padding:0 10px）
       侧边栏 left 和 content-area margin-left 都依赖这个 padding 计算 */
    padding: 0 10px !important;
    max-width: 1200px !important;
    margin: auto !important;
    /* ★ 关键布局属性（从 poetry.css 保留，确保页面不会散架） */
    position: sticky !important;
    top: 0 !important;
    height: 100vh !important;
    overflow: hidden !important;
}

/* 左侧侧边栏：实色风格（覆盖 menu-ui-1 玻璃态）
   高度对齐：96vh + top:2vh（与右侧 .content-area 一致）
   ★ 位置对齐：用 left: calc(50% - 600px + 10px) 跟随 .site-content 居中
     原 .left-nav-menu 是 position:fixed 相对视口，而 .content-area 的 margin-left:160px
     相对 .site-content（max-width:1200px; margin:auto 居中）。视口>1220px 时两者会错位。
     这里强制 left 跟随 site-content 的居中位置，保证侧边栏和内容区永远对齐 */
body .left-nav-menu {
    background: var(--ui-solid-bg) !important;
    backdrop-filter: blur(20px) saturate(1.5) !important;
    -webkit-backdrop-filter: blur(20px) saturate(1.5) !important;
    border: 1px solid var(--ui-solid-border) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        0 1px 0 var(--ui-solid-border),
        0 3px 0 var(--ui-solid-border),
        0 6px 16px var(--ui-shadow-md) !important;
    /* ★ 关键定位：fixed 相对视口，确保侧边栏独立浮动，不被内容区挤下去 */
    position: fixed !important;
    top: 2vh !important;
    height: 96vh !important;
    /* 跟随 site-content 居中：视口宽度>1220px 时，site-content 左边距=(100vw-1200)/2，
       侧边栏 left 设为该值+10px（site-content padding），与内容区对齐 */
    left: calc((100vw - 1200px) / 2 + 10px) !important;
    /* z-index 确保在其他元素之上 */
    z-index: 888 !important;
}

/* 视口≤1220px（site-content 撑满）：侧边栏贴左，去掉 calc 计算 */
@media (max-width: 1220px) {
    body .left-nav-menu {
        left: 10px !important;
    }
}

/* 右侧内容区：实色风格 + 高度对齐 + 内部滚动
   覆盖 poetry.css 中 .content-area 的 height:100% / padding:2vh 0
   ★ 强制统一 margin-left（侧边栏留白），防止各模块子 CSS 覆盖导致间隙/宽度不一致 */
body .content-area {
    background: var(--ui-solid-bg) !important;
    border: 1px solid var(--ui-solid-border) !important;
    border-radius: var(--ui-radius-md) !important;
    box-shadow:
        0 1px 0 var(--ui-solid-border),
        0 3px 0 var(--ui-solid-border),
        0 6px 16px var(--ui-shadow-md) !important;
    /* 高度对齐：与 .left-nav-menu 的 96vh + top:2vh 一致 */
    height: 96vh !important;
    top: 2vh !important;
    /* 内部滚动 */
    overflow-y: auto !important;
    overflow-x: hidden !important;
    /* 内边距：让内容不贴边 — 固定 24px 水平间距，统一所有模块与侧边栏的距离 */
    padding: 2vh 24px !important;
    box-sizing: border-box !important;
    /* ★ 强制统一 margin-left（侧边栏留白 160px）
       原 poetry.css: margin-left:160px，但诗词模块引入的 archive-poetry.css / poetry-detail.css
       可能间接影响布局计算。用 !important 锁死，确保所有页面 content-area 左边距一致 */
    margin-left: 160px !important;
    /* ★ 布局：relative 定位 + flex 纵向布局
       relative 确保 content-area 在文档流中正常占位，配合 margin-left:160px 与 fixed 侧边栏并排
       flex column 让诗词详情页的 .site-main / 控制栏能纵向排列 */
    position: relative !important;
    display: flex !important;
    flex-direction: column !important;
}

/* 移动端：恢复 body 滚动 + 侧边栏抽屉 + 内容区平铺
   桌面端的 fixed/高度对齐在移动端失效，回到原生流式布局
   ★ 必须同时覆盖 body / .site-content / .content-area 三层，缺一会导致滚动失效：
     - body: height:auto + overflow:auto（body 可滚）
     - .site-content: 解除 height:100vh + overflow:hidden 锁定，否则父级裁剪子元素
     - .content-area: 回到流式布局 */
@media (max-width: 820px) {
    body.site-page,
    body.member-page {
        height: auto;
        overflow: auto;
    }
    body .site-content {
        position: static !important;
        top: auto !important;
        height: auto !important;
        min-height: 100vh;
        overflow: visible !important;
        max-width: 100% !important;
        padding: 0 !important;
    }
    body .content-area {
        position: static !important;
        top: auto !important;
        height: auto !important;
        margin-left: 0 !important;
        padding: 1rem !important;
        overflow: visible !important;
        border: none !important;
        box-shadow: none !important;
        border-radius: 0 !important;
    }
}


/* ============================================================
   10. 全局基础环境（从 poetry.css 合并）
   ============================================================ */

/* 文档根：深色兜底背景 */
html {
    background: #1a1a2e;
    min-height: 100%;
}

/* 页面根：应用主题背景 */
body {
    background: var(--bg-default);
    margin: 0;
}

/* PDF 加载遮罩（默认隐藏，加载时由 JS 显示） */
.pdf-loading-overlay {
    display: none;
}

/* ============================================================
   11. 全局滚动条（从 poetry.css 合并）
   ============================================================ */
::-webkit-scrollbar {
    width: 2px;
    height: 2px;
    background: transparent;
    box-shadow: 0 0 0 3px transparent;
}
::-webkit-scrollbar-track {
    background: transparent;
    border-radius: 0;
}
::-webkit-scrollbar-thumb {
    background: rgba(124, 77, 255, 0.35);
    border-radius: 10px;
    background-clip: content-box;
    border: 2px solid transparent;
    min-height: 30px;
    transition: background 0.3s ease;
}
::-webkit-scrollbar-thumb:hover { background: rgba(124, 77, 255, 0.6); }
::-webkit-scrollbar-thumb:active { background: rgba(124, 77, 255, 0.8); }
::-webkit-scrollbar-corner { background: transparent; }
* {
    scrollbar-width: thin;
    scrollbar-color: rgba(124, 77, 255, 0.35) transparent;
}
html.hide-scrollbar { scrollbar-width: none; -ms-overflow-style: none; }
html.hide-scrollbar::-webkit-scrollbar { width: 0; height: 0; background: transparent; }


/* ============================================================
   12. 自定义页脚（从 poetry.css 合并）
   ============================================================ */
.custom-footer {
    text-align: center;
    padding: 12px;
    margin-top: var(--spacing-xl);
    font-size: var(--size-fanyi);
    color: var(--text-secondary, #475569);
}
.footer-icp-info {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--spacing-sm);
}
.footer-icp-info a { color: var(--text-secondary, #475569); text-decoration: none; }
.footer-icp-info a:hover { color: var(--text-accent, #7832ff); text-decoration: underline; }


/* ============================================================
   13. 左侧导航侧边栏组件（从 poetry.css 合并）
   所有模块通过 common.sidebar 共用
   ============================================================ */

/* 主侧边栏容器基础布局（global.css 第 9 段已覆盖背景/边框/阴影/位置） */
.left-nav-menu {
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    width: 150px;
    z-index: 888;
    padding: 15px 10px;
    box-sizing: border-box;
    transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
    overflow: visible;
}

/* 备用侧边栏 class */
.sidebar {
    background: var(--ui-solid-bg);
    border: 1px solid var(--ui-solid-border);
    box-shadow: var(--ui-shadow-md);
}

/* Logo 区域 */
.left-nav-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 30px 12px 10px 12px;
    margin-bottom: 15px;
    border-bottom: 1px solid var(--sidebar-divider, rgba(0,0,0,0.06));
    width: 100%;
    text-align: center;
    flex-shrink: 0;
}
.sidebar-logo-section {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    flex-shrink: 0;
}
.logo-text {
    font-size: var(--size-logo);
    font-weight: 700;
    color: var(--sidebar-logo-text, #1a1a2e);
    letter-spacing: 3px;
    text-align: center;
    width: 100%;
    display: block;
}

/* 折叠/展开按钮 */
.nav-toggle-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: var(--sidebar-btn-bg, rgba(0,0,0,0.05));
    border: 1px solid var(--sidebar-btn-border, rgba(0,0,0,0.1));
    border-radius: 10px;
    cursor: pointer;
    color: var(--sidebar-btn-color, #666);
    transition: background-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
}
.nav-toggle-btn:hover {
    background: var(--sidebar-btn-hover-bg, rgba(139,92,246,0.15));
    color: var(--sidebar-btn-hover-color, #4f46e5);
    transform: scale(1.05);
}

/* 导航项列表 */
.left-nav-items {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 0;
    margin: 0;
    list-style: none;
    flex: 1;
}

/* 一级导航链接 */
.nav-link {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 5px;
    border-radius: 16px;
    color: var(--sidebar-text-secondary, #666);
    text-decoration: none;
    font-size: var(--size-nav);
    font-weight: 500;
    transition: background-color 0.25s ease, color 0.25s ease;
    cursor: pointer;
}

/* 侧边栏容器与分组 */
.sidebar-nav-group {
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 4px 0;
    width: 100%;
    box-sizing: border-box;
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: rgba(124, 77, 255, 0.3) transparent;
    position: relative;
}
.sidebar-nav-group::-webkit-scrollbar { width: 3px; height: 3px; }
.sidebar-nav-group::-webkit-scrollbar-thumb { background: rgba(124, 77, 255, 0.35); border-radius: 3px; }
.sidebar-nav-group::-webkit-scrollbar-track { background: transparent; }

.sidebar-user-section { margin-top: auto; width: 100%; flex-shrink: 0; }
.sidebar-divider { height: 1px; margin: 6px 8px; background: var(--sidebar-divider, rgba(0,0,0,0.06)); border: none; flex-shrink: 0; }
.left-nav-footer { padding-top: 12px; border-top: 1px solid var(--sidebar-divider, rgba(0,0,0,0.06)); }

/* 用户信息 */
.user-info { display: flex; align-items: center; gap: 12px; padding: 12px 16px; position: relative; cursor: pointer; }
.user-avatar { font-size: 1.25rem; background: var(--sidebar-avatar-bg, #e2e8f0); width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 50%; overflow: hidden; flex-shrink: 0; }
.user-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.user-avatar-placeholder img { opacity: 0.7; }
.user-name { font-size: var(--size-user); font-weight: 600; color: var(--sidebar-user-name, #333); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-info-logged-out .user-text-primary { color: var(--sidebar-user-name, #333); }
.user-info-logged-out .user-text-divider { color: var(--sidebar-user-border, rgba(0,0,0,0.15)); margin: 0 2px; font-weight: 400; }
.user-info-logged-out .user-text-secondary { color: var(--ui-accent, #8b5cf6); }
.user-info-logged-in .user-welcome { font-weight: 400; color: var(--sidebar-user-name, #333); opacity: 0.75; }
.user-info-logged-in .user-nickname { color: var(--ui-accent, #8b5cf6); }
.user-info-chip { width: 100%; }
.user-info-chip > .nav-link { padding: 6px 8px; gap: 8px; }
.user-submenu-divider { height: 1px; margin: 4px 8px; background: var(--sidebar-divider, rgba(0,0,0,0.06)); }


/* ============================================================
   14. 二级子菜单（从 poetry.css 合并）
   ============================================================ */
.nav-item.has-submenu { position: relative; }
.submenu-arrow { font-size: 0.625rem; transition: transform 0.2s ease; margin-left: auto; display: inline-block; }
.nav-item.has-submenu.open > .nav-link > .submenu-arrow { transform: rotate(180deg); }
.submenu {
    position: fixed;
    padding: 8px;
    min-width: 140px;
    width: max-content;
    max-width: calc(100vw - 16px);
    display: none;
    flex-direction: column;
    gap: 4px;
    z-index: 10000;
    background: var(--ui-solid-bg, #fdfbf7);
    border: 1px solid var(--ui-solid-border, rgba(0,0,0,0.06));
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.10);
    border-radius: 12px;
    animation: submenuFadeIn 0.18s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes submenuFadeIn { from { opacity: 0; } to { opacity: 1; } }
.submenu-item { display: block; padding: 10px 16px; color: var(--sidebar-submenu-text, #333); text-decoration: none; border-radius: 6px; font-size: var(--size-submenu); transition: background 0.2s; white-space: nowrap; cursor: pointer; }
.submenu-item:hover { background: rgba(139,92,246,0.15); color: var(--sidebar-text-hover, #4f46e5); }
.submenu-group-label { font-size: 11px; font-weight: 600; color: var(--sidebar-submenu-text, #9ca3af); padding: 6px 16px 2px; text-transform: uppercase; letter-spacing: 0.5px; cursor: default; }
.submenu-group-label:hover { background: none; }
.submenu-group-divider { height: 1px; margin: 4px 12px; background: rgba(0,0,0,0.06); }


/* ============================================================
   15. 响应式：桌面端（从 poetry.css 合并）
   ============================================================ */
@media (min-width: 821px) {
    .mobile-menu-toggle-btn, .mobile-menu-overlay { display: none; }
    .nav-item.has-submenu.open > .submenu { display: flex; }
}


/* ============================================================
   16. 响应式：移动端抽屉式侧边栏（从 poetry.css 合并）
   断点统一到 820px，与 .content-area 全宽断点一致
   避免 769~820px 区间侧边栏仍 fixed 显示导致遮挡内容
   ============================================================ */
@media (max-width: 820px) {
    .mobile-menu-toggle-btn {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 5px;
        position: fixed;
        top: 1vh;
        left: 3px;
        width: 35px;
        height: 35px;
        background: var(--ui-solid-bg);
        border: 1px solid var(--ui-solid-border);
        border-radius: 12px;
        box-shadow: var(--ui-shadow-md);
        z-index: 99999;
        cursor: pointer;
        transition: background-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
        padding: 0;
    }
    .mobile-menu-toggle-btn .toggle-line {
        display: block;
        width: 18px;
        height: 2px;
        background: var(--ui-accent);
        border-radius: 2px;
        transition: transform 0.3s ease, opacity 0.25s ease, width 0.25s ease;
    }
    .mobile-menu-toggle-btn:hover {
        background: color-mix(in srgb, var(--ui-accent) 12%, var(--ui-glass-bg));
        box-shadow: inset 0 1px 0 var(--ui-glass-hilight), 0 0 0 1px color-mix(in srgb, var(--ui-accent) 30%, transparent), var(--ui-shadow-md);
    }
    .mobile-menu-toggle-btn:hover .toggle-line { width: 20px; }
    .mobile-menu-toggle-btn:active { transform: scale(0.92); }
    body.mobile-menu-active .mobile-menu-toggle-btn .toggle-line:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    body.mobile-menu-active .mobile-menu-toggle-btn .toggle-line:nth-child(2) { opacity: 0; transform: scaleX(0); }
    body.mobile-menu-active .mobile-menu-toggle-btn .toggle-line:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

    .mobile-menu-overlay {
        position: fixed;
        top: 0; left: 0;
        width: 100%; height: 100%;
        z-index: 9998;
        background: rgba(0, 0, 0, 0.45);
        opacity: 0;
        visibility: hidden;
        pointer-events: none;
        transition: opacity 0.25s ease, visibility 0.25s ease;
    }
    body.mobile-menu-active .mobile-menu-overlay { opacity: 1; visibility: visible; pointer-events: auto; }

    .site-left-nav-sidebar { z-index: 9999; }

    body .left-nav-menu {
        position: fixed !important;
        top: 0 !important; left: 0 !important; bottom: 0 !important;
        height: 100vh !important;
        min-height: 100vh !important;
        width: 150px !important;
        border-radius: 0 16px 16px 0 !important;
        transform: translateX(-100%);
        transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
        margin-right: 0;
        z-index: 9999 !important;
        overflow: visible;
        contain: layout paint;
    }
    body.mobile-menu-active .left-nav-menu { transform: translateX(0); }

    #switchToTopNavBtn { display: none; }
    .poetry-control-bar { padding-left: 45px; margin-right: 3px; }

    .content-area { margin-left: 0; width: 100%; }
    .site-content { padding: 0; top: 0; }
}
