/* ==========================================================================
   TCY Server — Endfield v2 首页皮肤（ef2-home.css）
   「终末地 v2」重构：仿 endfield.gryphline.com / ak.hypergryph.com 官网版式，
   在【粉白】色系下重造首页：尋遺散記式 hero + 版本日历 + 情报中枢 +
   玩法轮播 + 规格表 + 胶片带相册 + 建站档案。

   依赖：
   - ef2-core.css 提供设计令牌 --ef2-* 与公共原语
     （.ef2-kicker/.ef2-tag/.ef2-title/.ef2-cmyk/.ef2-btn-dark/.ef2-btn-ghostline/
      .ef2-counter/.ef2-ghostword/.ef2-stripe/.ef2-reveal）
   - endfield.css(v1) 继续提供 §12 首页破框加宽、§8d 时间轴/地址 chip 基底
   - parallax.css/parallax.js 提供 .parallax-header 视差机制（本文件只覆写外观）

   作用域约定：首页样式包在 .md-content:has(.parallax-header) 或 ef2- 独有类名下。
   陷阱备忘（蓝图 §7）：
   - 按钮化 <a> 的 background/color 必须 !important（.md-typeset a 会吃底色）
   - <details> 禁 clip-path/contain/reveal
   - #mindmap-container 必须在默认 checked 视图、初始可测量
   ========================================================================== */

/* =========================================================================
   0. 计数器：分区自动编号（覆写 v1 的 counter-reset，故把旧计数器一并带上）
   ========================================================================= */
.md-content:has(.parallax-header) { counter-reset: ef2sec efchap efhead; }

/* =========================================================================
   1. HERO —— 尋遺散記式大海报（右缘竖排缎带 + 右下进入面板 + 幽灵巨字）
   ========================================================================= */
.parallax-header.ef2-hero {
    height: auto;
    /* v2.1 视口自适应（诉求1）：hero 尽量占满整个窗口——svh 兜移动端地址栏；
       64px 给下方打字机行留呼吸。4K/2K/16:10 下构图随窗口走，观感稳定。 */
    min-height: max(600px, calc(100svh - 64px));
    display: flex;
    flex-direction: column;
    justify-content: center;
    /* 标题块垂直居中略偏下（尋遺散記的取景），padding-top 给 flex 居中加一点下压 */
    padding-top: 4vh;
    border-radius: 3px;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 28px), calc(100% - 28px) 100%, 0 100%);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.28), 0 18px 48px rgba(0,0,0,0.18);
}
/* 视差大图不加任何色罩（用户点名）：覆掉 parallax.css 的默认纱层，
   文字可读性全部交给元素级投影，图片原色直出 */
.parallax-header.ef2-hero::before { background: none; }
.parallax-header.ef2-hero::after { background: none; height: 0; }

/* --- 左上 HUD 角标（mono 两行）：白纸墨字，不压黑底（去黑修缮） --- */
.ef2-hero-hud {
    position: absolute; top: 18px; left: 24px; z-index: 3; pointer-events: none;
    display: flex; flex-direction: column; gap: 7px;
    font-family: var(--ef2-mono); color: #fff;
    /* 无纱罩后高调画面上白字要更实的投影 */
    text-shadow: 0 1px 3px rgba(23,25,30,0.72), 0 3px 12px rgba(23,25,30,0.42);
}
.ef2-hero-hud-tag {
    font-size: .68rem; letter-spacing: .16em; font-weight: 700;
    padding: 3px 10px;
    color: var(--ef2-ink); text-shadow: none;
    /* 玻璃化（用户点名：与视差图色彩贴合的透明要素）：磨砂白玻璃取代实底白纸 */
    border: 1px solid rgba(255,255,255,0.55);
    background: rgba(255,255,255,0.52);
    backdrop-filter: blur(10px) saturate(1.25); -webkit-backdrop-filter: blur(10px) saturate(1.25);
    box-shadow: 0 2px 10px rgba(23,25,30,0.16);
    clip-path: polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);
}
.ef2-hero-hud-row { display: flex; gap: 16px; font-size: .62rem; letter-spacing: .14em; font-weight: 600; }
.ef2-hero-hud-row i {
    font-style: normal; display: inline-flex; align-items: center; gap: 6px;
}
.ef2-hero-hud-row i::before {
    content: ''; width: 6px; height: 6px; background: var(--ef2-pink);
    box-shadow: 0 0 8px var(--ef2-pink); clip-path: polygon(50% 0,100% 50%,50% 100%,0 50%);
}

/* --- 右缘竖排缎带：招牌粉 + 墨字（参考图黄缎带的直译；去黑修缮，不再整条压墨）--- */
.ef2-hero-ribbon {
    position: absolute; top: 0; right: 0; bottom: 0; width: 36px; z-index: 3;
    background:
        repeating-linear-gradient(45deg, rgba(23,25,30,.08) 0 4px, transparent 4px 9px),
        var(--ef2-pink-ribbon);
    display: flex; align-items: flex-start; justify-content: center;
    pointer-events: none;
}
.ef2-hero-ribbon span {
    writing-mode: vertical-rl; text-orientation: mixed;
    font-family: var(--ef2-mono); font-size: .6rem; letter-spacing: .3em; font-weight: 700;
    /* padding-top 让开右上角悬浮的音乐小控制台（fixed，高约 5.5rem），
       否则竖排文字开头 TCYMC 被它压住 */
    color: var(--ef2-ink); padding-top: 6.4rem; white-space: nowrap;
}
/* 缎带底部一小段墨色斜纹压秤（粉底上的对比收尾） */
.ef2-hero-ribbon::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 92px;
    background:
        repeating-linear-gradient(45deg, rgba(255,255,255,.14) 0 4px, transparent 4px 9px),
        var(--ef2-ink);
}

/* --- 幽灵巨字：hero 底缘只露上半 --- */
.ef2-hero-ghost {
    position: absolute; left: 14px; bottom: -0.16em; z-index: 2;
    color: rgba(255,255,255,0.08);
    font-size: clamp(4.4rem, 15vw, 11.5rem);
}

/* --- 玻璃点缀层：玻璃蝶 / 玻璃花 / 星星，压在图上与画面同色系（用户点名）---
   全部只动 translate/rotate/scale/opacity 独立属性 + 少量小元素，渲染开销可忽略 */
.ef2-hero-deco {
    position: absolute; inset: 0; z-index: 2;
    pointer-events: none; overflow: hidden;
}
.ef2-deco {
    position: absolute;
    /* 高调画面上要立住玻璃感：近距实影 + 远距蓝晕两层投影 */
    filter: drop-shadow(0 2px 3px rgba(70, 105, 150, 0.4)) drop-shadow(0 6px 14px rgba(90, 140, 195, 0.42));
    opacity: .92;
}
.ef2-deco-bf1 { width: 88px; top: 15%; left: 11%; rotate: -14deg; animation: ef2DecoFloat 7s ease-in-out infinite alternate; }
.ef2-deco-bf2 { width: 62px; top: 30%; right: 12%; rotate: 12deg; animation: ef2DecoFloat 8.5s ease-in-out -3.2s infinite alternate; }
.ef2-deco-fl1 { width: 66px; bottom: 26%; left: 6%; rotate: 9deg; animation: ef2DecoFloat 9s ease-in-out -1.6s infinite alternate; }
.ef2-deco-fl2 { width: 46px; top: 11%; right: 26%; rotate: 38deg; animation: ef2DecoFloat 7.8s ease-in-out -5s infinite alternate; }
@keyframes ef2DecoFloat {
    from { translate: 0 0; }
    to   { translate: 0 -12px; }
}
/* 星星：四角钻石闪烁（错相位、三种同画面色） */
.ef2-deco-star {
    position: absolute; width: 17px; height: 17px;
    background: #fff;
    clip-path: polygon(50% 0, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0 50%, 39% 39%);
    filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.95)) drop-shadow(0 0 12px rgba(140, 185, 235, 0.8));
    animation: ef2DecoTwinkle 3.4s ease-in-out infinite;
}
.ef2-deco-s1 { top: 12%; left: 30%; }
.ef2-deco-s2 { top: 24%; right: 22%; width: 13px; height: 13px; background: #ffd9e6; animation-delay: -1.1s; }
.ef2-deco-s3 { top: 42%; left: 8%; width: 14px; height: 14px; background: #cde9ff; animation-delay: -2.2s; }
.ef2-deco-s4 { bottom: 34%; right: 8.5%; animation-delay: -0.6s; }
.ef2-deco-s5 { bottom: 18%; left: 26%; width: 13px; height: 13px; background: #cde9ff; animation-delay: -2.8s; }
@keyframes ef2DecoTwinkle {
    0%, 100% { opacity: .28; scale: .8; }
    50%      { opacity: .95; scale: 1.12; }
}

/* --- 主文案（.parallax-content 由 parallax.js 做微视差，保持原类名）--- */
.ef2-hero-content {
    /* 标题不垫任何底色横带（用户点名），直接压在图上 */
    position: relative; z-index: 4; padding: 20px 16px 22px;
}
.ef2-hero-kicker {
    display: inline-block; font-family: var(--ef2-mono);
    font-size: .78rem; letter-spacing: .3em; font-weight: 700; color: #fff;
    text-shadow: 0 1px 3px rgba(23,25,30,0.72), 0 3px 16px rgba(23,25,30,0.45);
    margin-bottom: 14px; text-transform: uppercase;
}
.parallax-title.ef2-hero-title {
    font-family: var(--ef2-hei);
    font-weight: 900;
    letter-spacing: .08em !important;
    /* 无纱罩后白字的可读性全靠投影：一层近距实影 + 一层大半径柔光 */
    text-shadow: 0 1px 4px rgba(23,25,30,0.5), 0 4px 22px rgba(23,25,30,0.38) !important;
}
.ef2-hero-en {
    font-family: var(--ef2-mono); font-size: clamp(.68rem, 1.5vw, .92rem); letter-spacing: .36em;
    font-weight: 600; color: rgba(255,255,255,0.92); text-transform: uppercase;
    text-shadow: 0 1px 3px rgba(23,25,30,0.72), 0 3px 16px rgba(23,25,30,0.45); margin: 6px 0 0;
}

/* --- 右下「进入服务器」面板（尋遺散記下載面板的角色）--- */
.ef2-hero-panel {
    /* 角部锚定用 clamp：窗口比例变化时按钮相对右下角位置稳定（诉求1 点名）；
       宽度用 rem 基（20rem=1920 下 400px），4K 根缩放时面板随排版等比放大 */
    position: absolute;
    right: clamp(24px, 3vw, 72px);
    bottom: clamp(22px, 4vh, 56px);
    z-index: 5;
    width: min(20rem, 92vw);
    /* 三色主调里 hero 的「黑」锚点：墨玻璃面板（官网黑下载面板的直译）；
       v2.3 玻璃化加深：底色减淡、模糊加重，透出视差图花海色（用户点名的玻璃要素） */
    background: rgba(15,18,24,0.52);
    backdrop-filter: blur(16px) saturate(1.35); -webkit-backdrop-filter: blur(16px) saturate(1.35);
    border: 1px solid rgba(255,255,255,0.32);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.16), 0 16px 44px rgba(10,12,16,0.34);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 12px), calc(100% - 12px) 100%, 0 100%);
    padding: 12px 12px 12px;
}
.ef2-hero-panel-head {
    display: flex; align-items: center; gap: 9px; margin: 0 2px 10px;
    font-family: var(--ef2-mono); font-size: .68rem; letter-spacing: .18em; font-weight: 700;
    color: #fff;
}
.ef2-hero-panel-head b { color: var(--ef2-pink); font-size: .8rem; }
.ef2-hero-panel-dots {
    margin-left: auto; width: 42px; height: 8px; opacity: .7;
    background-image: repeating-linear-gradient(90deg, rgba(255,255,255,.85) 0 4px, transparent 4px 8px);
}
.ef2-hero-panel-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.ef2-plat {
    display: flex; align-items: center; gap: 9px; padding: 9px 11px;
    /* !important 必需：.md-typeset a { background:none } 会吃掉按钮底色（蓝图陷阱1）。
       v2.3 玻璃化：v1 玻璃 CTA 的直译——白玻璃砖 + 白描边 + 白字（在墨玻璃面板里透光） */
    background: rgba(255,255,255,0.12) !important;
    color: #fff !important;
    text-decoration: none !important;
    border: 1px solid rgba(255,255,255,0.42);
    position: relative;
    transition: transform .2s ease, box-shadow .2s ease, background .2s ease, border-color .2s ease;
}
.ef2-plat::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 0;
    background: var(--ef2-punch); transition: width .2s ease;
}
.ef2-plat:hover {
    transform: translateY(-2px);
    background: rgba(255,255,255,0.26) !important;
    border-color: rgba(255,255,255,0.72);
    box-shadow: 0 8px 20px rgba(236,64,122,0.22);
}
.ef2-plat:hover::before { width: 3px; }
.ef2-plat-ico { width: 20px; height: 20px; flex: none; display: inline-flex; }
.ef2-plat-ico svg { width: 20px; height: 20px; fill: #fff; }
.ef2-plat-copy { display: flex; flex-direction: column; line-height: 1.15; min-width: 0; }
.ef2-plat-copy b { font-family: var(--ef2-hei); font-weight: 800; font-size: .88rem; white-space: nowrap; }
.ef2-plat-copy i { font-style: normal; font-family: var(--ef2-mono); font-size: .62rem; letter-spacing: .12em; color: rgba(255,255,255,0.66); margin-top: 2px; }

/* --- 底缘中央 SCROLL ▽ 呼吸指示（参考尋遺散記底部 SCROLL，桌面/移动都要）--- */
.ef2-hero-scroll {
    position: absolute; left: 50%; bottom: 10px; transform: translateX(-50%);
    z-index: 4; pointer-events: none;
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    font-family: var(--ef2-mono); font-size: .58rem; font-weight: 700; letter-spacing: .34em;
    color: rgba(255,255,255,0.85); text-shadow: 0 1px 4px rgba(0,0,0,0.55);
    text-indent: .34em; /* 补偿 letter-spacing 尾随空隙保持视觉居中 */
}
.ef2-hero-scroll i { font-style: normal; font-size: .74rem; animation: ef2ScrollNudge 1.9s ease-in-out infinite; }
@keyframes ef2ScrollNudge {
    0%, 100% { transform: translateY(0); opacity: .6; }
    50% { transform: translateY(6px); opacity: 1; }
}

/* --- 左下打字机玻璃铭牌（原视差图下方独立行收编入画，去 emoji 缩字号）--- */
.ef2-hero-typed {
    position: absolute; left: clamp(18px, 2vw, 44px); bottom: clamp(24px, 4.4vh, 58px); z-index: 5;
    display: inline-flex; align-items: center; gap: 9px;
    min-width: 12rem; max-width: min(44vw, 30rem); min-height: 2.1em;
    font-family: var(--ef2-mono); font-size: .66rem; letter-spacing: .1em; font-weight: 600;
    color: #fff; text-shadow: 0 1px 3px rgba(23,25,30,0.55);
    background: rgba(15,18,24,0.34);
    backdrop-filter: blur(10px) saturate(1.2); -webkit-backdrop-filter: blur(10px) saturate(1.2);
    border: 1px solid rgba(255,255,255,0.38);
    padding: 6px 13px;
    clip-path: polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
}
.ef2-hero-typed i { font-style: normal; color: var(--ef2-pink); font-size: .58rem; flex: none; text-shadow: none; }
/* 压掉 v1 对 #typed-text 的旧装（extra.css 1.3rem 快乐体灰字 + endfield.css 白胶囊底），
   !important 必需：endfield.css 的 :has 选择器特异性 (1,2,0) 高于本条 */
.ef2-hero-typed #typed-text {
    white-space: nowrap; overflow: hidden;
    display: inline !important;
    background: none !important; border-radius: 0 !important; padding: 0 !important;
    font-family: var(--ef2-mono) !important;
    font-size: inherit !important;
    line-height: inherit !important;
    letter-spacing: inherit !important;
    color: #fff !important;
}

/* --- HERO 响应式 --- */
@media screen and (min-width: 76.25em) {
    /* 与 v1 §1 对 .ef-hero 的让位逻辑对齐 */
    .md-content:has(.parallax-header) .parallax-header.ef2-hero { margin-left: -1.4rem; }
}
@media screen and (max-width: 76.234375em) {
    /* <76.25em 顶部是 52px 常驻白条（SHELL2 的 S3）：
       面板降入文档流；hero 仍尽量占满一屏（100svh 已含顶条下的视口） */
    .parallax-header.ef2-hero {
        min-height: max(540px, calc(100svh - 72px));
        padding: 60px 0 30px;
        justify-content: center;
    }
    .ef2-hero-content { margin: 18px 0; }
    .ef2-hero-panel { position: static; width: auto; margin: 0 48px 0 18px; }
    /* 面板降入文档流后，绝对定位的打字铭牌会压到面板左下角——一并降入流内跟在面板后 */
    .ef2-hero-typed { position: static; align-self: flex-start; margin: 14px 48px 0 18px; max-width: calc(100% - 66px); }
    /* 悬浮汉堡/顶条占据左上：角标让位（评审 M1） */
    .ef2-hero-hud { top: 14px; left: 18px; right: 52px; }
}
@media screen and (max-width: 960px) {
    .ef2-hero-ribbon { display: none; }
    .ef2-hero-panel { margin: 0 14px; }
    .ef2-hero-ghost { font-size: clamp(3.4rem, 17vw, 6rem); }
}
/* ===== 移动端专属构图（诉求2：不做压缩版，换一套构图）=====
   满屏海报：标题居中在下三分之一 → 两枚并排主钮（加入=墨底/下载=白底）
   → QQ群/社区两枚 mono 文字链 → SCROLL 指示最底。 */
@media screen and (max-width: 720px) {
    .ef2-hero-hud { display: none; } /* 顶部条已有 logo，别叠罗汉 */
    /* 玻璃点缀收敛：小屏只留一蝶一花和星星，且让开顶部打字铭牌（top ~112px 起） */
    .ef2-deco-bf2, .ef2-deco-fl2 { display: none; }
    .ef2-deco-bf1 { width: 42px; top: 27%; left: 7%; }
    .ef2-deco-fl1 { width: 36px; bottom: 42%; }
    /* 角标隐藏后顶部空出：打字铭牌顶到左上——但要让开顶部居中悬浮的灵动岛
       （fixed top:60px 高 42px，底缘 ~102px），故下沉到 112px 起 */
    .ef2-hero-typed {
        position: absolute; top: 112px; left: 14px; bottom: auto; margin: 0;
        max-width: calc(100vw - 28px); min-width: 0; font-size: .6rem;
    }
    .parallax-header.ef2-hero {
        min-height: calc(100svh - 60px);
        /* 底部 68px：给 SCROLL 指示留独立地带，别和 QQ群/社区文字链行叠在一起（实拍踩坑） */
        padding: 24px 0 68px;
        justify-content: flex-end;
    }
    .ef2-hero-content { margin: 0 0 6px; padding: 14px 12px 10px; }
    .ef2-hero-kicker { font-size: .6rem; letter-spacing: .16em; margin-bottom: 8px; }
    .ef2-hero-panel {
        margin: 4px 16px 0; padding: 0;
        background: none; border: none;
        backdrop-filter: none; -webkit-backdrop-filter: none;
        clip-path: none;
    }
    .ef2-hero-panel-head { display: none; }
    .ef2-hero-panel-grid { grid-template-columns: 1fr 1fr; gap: 10px 9px; }
    /* 主钮①加入服务器：墨底白字切角大钮 */
    .ef2-hero-panel-grid .ef2-plat:nth-child(1) {
        background: var(--ef2-ink) !important;
        color: #fff !important;
        border-color: var(--ef2-ink);
        justify-content: center; min-height: 48px;
        clip-path: polygon(0 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%);
    }
    .ef2-hero-panel-grid .ef2-plat:nth-child(1) .ef2-plat-ico svg { fill: #fff; }
    .ef2-hero-panel-grid .ef2-plat:nth-child(1) .ef2-plat-copy i { color: rgba(255,255,255,0.62); }
    /* 主钮②下载客户端：白底墨线大钮（基础 .ef2-plat 已改玻璃白字，这里要显式回白底墨字） */
    .ef2-hero-panel-grid .ef2-plat:nth-child(2) {
        background: #fff !important;
        color: var(--ef2-ink) !important;
        border: 1px solid var(--ef2-ink);
        justify-content: center; min-height: 48px;
        clip-path: polygon(0 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%);
    }
    .ef2-hero-panel-grid .ef2-plat:nth-child(2) .ef2-plat-ico svg { fill: var(--ef2-ink); }
    .ef2-hero-panel-grid .ef2-plat:nth-child(2) .ef2-plat-copy i { color: var(--ef2-gray); }
    /* 次级③④ QQ群/社区：降级为压在画面上的 mono 文字链 */
    .ef2-hero-panel-grid .ef2-plat:nth-child(3),
    .ef2-hero-panel-grid .ef2-plat:nth-child(4) {
        background: transparent !important;
        color: #fff !important;
        border: none; padding: 8px 6px;
        justify-content: center;
        text-shadow: 0 1px 4px rgba(0,0,0,0.6);
    }
    .ef2-hero-panel-grid .ef2-plat:nth-child(3):hover,
    .ef2-hero-panel-grid .ef2-plat:nth-child(4):hover { transform: none; box-shadow: none; }
    .ef2-hero-panel-grid .ef2-plat:nth-child(3) .ef2-plat-ico svg,
    .ef2-hero-panel-grid .ef2-plat:nth-child(4) .ef2-plat-ico svg { fill: #fff; opacity: .85; }
    .ef2-hero-panel-grid .ef2-plat:nth-child(3) .ef2-plat-copy b,
    .ef2-hero-panel-grid .ef2-plat:nth-child(4) .ef2-plat-copy b { font-size: .78rem; }
    .ef2-hero-panel-grid .ef2-plat:nth-child(3) .ef2-plat-copy i,
    .ef2-hero-panel-grid .ef2-plat:nth-child(4) .ef2-plat-copy i { color: rgba(255,255,255,0.68); }
    .ef2-plat-copy b { font-size: .8rem; }
    .ef2-hero-scroll { bottom: 12px; }
}

/* =========================================================================
   2. 页尾附注 —— 招募寄语 + 旧版主页弃用小链（右下角小字）
   ========================================================================= */
.md-content:has(.parallax-header) .ef2-endnote {
    display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
    margin: 6px 0 2px;
    /* 花海背景上直接排字看不清：垫白纸条 + 粉 tick（与全站面板语言一致） */
    background: #fff;
    border: 1px solid var(--ef2-line);
    border-left: 3px solid var(--ef2-punch);
    padding: 12px 16px;
}
.ef2-endnote-msg { margin: 0 !important; color: var(--ef2-ink-soft); font-size: .9rem; }
.ef2-endnote-msg::before {
    content: '▽// '; font-family: var(--ef2-mono); font-weight: 700; font-size: .72rem;
    letter-spacing: .08em; color: var(--ef2-punch);
}
.ef2-endnote-portal {
    margin-left: auto; align-self: flex-end; flex: none;
    font-family: var(--ef2-mono); font-size: .64rem; letter-spacing: .05em; font-weight: 600;
    /* !important 必需：.md-typeset a 链接重置（蓝图陷阱1） */
    color: var(--ef2-gray) !important;
    background: none !important;
    text-decoration: none !important;
    border-bottom: 1px dashed rgba(23,25,30,0.32) !important;
    opacity: .8;
    transition: color .2s ease, opacity .2s ease, border-color .2s ease;
}
.ef2-endnote-portal::after { content: ' ↗'; }
.ef2-endnote-portal:hover { color: var(--ef2-ink) !important; opacity: 1; border-color: var(--ef2-ink) !important; }
@media screen and (max-width: 720px) {
    .md-content:has(.parallax-header) .ef2-endnote { flex-direction: column; align-items: stretch; gap: 10px; }
    .ef2-endnote-portal { align-self: flex-end; }
}

/* =========================================================================
   3. 分区头系统 v2 —— CMYK 微条 + ▽// kicker + ↘ 方框标签 + 900 粗黑标题
      + 幽灵实色巨字 + mono 自动编号
   ========================================================================= */
.md-content:has(.parallax-header) .ef2-head {
    position: relative; overflow: hidden;
    counter-increment: ef2sec;
    display: flex; align-items: flex-end; justify-content: space-between; gap: 18px;
    /* v2.1 视口化：分区节奏随窗口高度伸缩（诉求1） */
    padding: 18px 18px 14px; margin: clamp(44px, 6vh, 84px) 0 20px;
    background: #fff;
    border: 1px solid var(--ef2-line);
    border-bottom: 2px solid var(--ef2-ink);
}
.ef2-head .ef2-head-ghost {
    position: absolute; right: 84px; top: -34%; z-index: 0;
    font-size: clamp(3rem, 8vw, 6.4rem);
    color: rgba(23,25,30,0.05);
}
.ef2-head-main { position: relative; z-index: 1; display: flex; gap: 14px; align-items: stretch; min-width: 0; }
.ef2-head-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; min-width: 0; }
.md-content:has(.parallax-header) .ef2-head-title {
    margin: 2px 0 0 !important; border: none !important; padding: 0 !important;
    line-height: 1.16;
}
.ef2-head-sub { font-size: .55em; color: var(--ef2-gray); font-family: var(--ef2-mono); font-weight: 400; letter-spacing: .02em; }
.ef2-head-index {
    position: relative; z-index: 1; flex: 0 0 auto; align-self: flex-end;
    display: flex; flex-direction: column; align-items: flex-end; line-height: 1;
}
.ef2-head-index::before {
    content: 'SEC.'; font-family: var(--ef2-mono); font-size: .58rem; letter-spacing: .22em;
    font-weight: 700; color: var(--ef2-gray); margin-bottom: 4px;
}
.ef2-head-index::after {
    content: counter(ef2sec, decimal-leading-zero);
    font-family: var(--ef2-mono); font-weight: 800; font-size: 2rem; letter-spacing: .02em;
    color: var(--ef2-punch); line-height: .9;
}
@media screen and (max-width: 720px) {
    .md-content:has(.parallax-header) .ef2-head { padding: 14px 13px 11px; margin: 34px 0 16px; gap: 10px; }
    .ef2-head .ef2-head-ghost { right: 40px; font-size: clamp(2.2rem, 12vw, 3.6rem); top: -18%; }
    .ef2-head-index::after { font-size: 1.4rem; }
    .ef2-head-main { gap: 10px; }
}

/* 子分区头（NETWORK 等不占编号的小头） */
.ef2-subhead { display: flex; align-items: center; gap: 12px; margin: 30px 0 14px; }
.md-content:has(.parallax-header) .ef2-subhead-title {
    margin: 0 !important; border: none !important; padding: 0 !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: 1.25rem; color: var(--ef2-ink);
}

/* =========================================================================
   4. v2 面板底纸（.ef2-panel）—— 白纸 + 墨线 + 右下角粉 L 括号
   ========================================================================= */
.md-content:has(.parallax-header) .ef2-panel {
    position: relative;
    background: #fff;
    border: 1px solid var(--ef2-line);
    box-shadow: 0 10px 30px rgba(31,38,135,0.06);
    /* v2.1 视口化：大结构内边距随窗口伸缩（描边等机械件不跟缩） */
    padding: clamp(22px, 2.6vh, 40px) clamp(20px, 1.6vw, 34px);
    margin: 14px 0 clamp(24px, 3.4vh, 44px);
}
.md-content:has(.parallax-header) .ef2-panel::after {
    content: ''; position: absolute; right: 10px; bottom: 10px; width: 15px; height: 15px;
    border-right: 2px solid var(--ef2-punch); border-bottom: 2px solid var(--ef2-punch);
    opacity: .45; pointer-events: none;
}
@media screen and (max-width: 600px) {
    .md-content:has(.parallax-header) .ef2-panel { padding: 18px 14px; }
}

/* =========================================================================
   5. VERSION —— 版本日历（棋盘横幅 + 日期章事件条）+ 出血画卡 + 导航卡 v2
   ========================================================================= */
/* --- 5.1 棋盘横幅（参考「尋遺散記 版本日曆」红棋盘的粉色版）--- */
.ef2-cal-banner {
    position: relative; overflow: hidden;
    display: flex; flex-direction: column; gap: 6px;
    /* v2.1 视口化：横幅随窗口高度加厚 */
    padding: clamp(20px, 3.2vh, 44px) clamp(22px, 1.8vw, 40px) clamp(22px, 3.4vh, 46px);
    margin: 14px 0 12px;
    background: linear-gradient(118deg, #ad1457 0%, #d81b60 42%, #ec407a 100%);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%);
}
.ef2-cal-banner::before {
    /* 菱形棋盘格纹理 */
    content: ''; position: absolute; inset: 0;
    background-image: repeating-conic-gradient(rgba(255,255,255,0.12) 0% 25%, transparent 0% 50%);
    background-size: 28px 28px;
    mask-image: linear-gradient(100deg, #000 0%, rgba(0,0,0,.35) 45%, transparent 78%);
    -webkit-mask-image: linear-gradient(100deg, #000 0%, rgba(0,0,0,.35) 45%, transparent 78%);
}
.ef2-cal-banner::after {
    /* 底缘菱形齿带 */
    content: ''; position: absolute; left: 0; right: 0; bottom: -7px; height: 14px;
    background: var(--ef2-ink);
    clip-path: polygon(0 50%, 3% 0, 6% 50%, 9% 0, 12% 50%, 15% 0, 18% 50%, 21% 0, 24% 50%, 27% 0, 30% 50%, 33% 0, 36% 50%, 39% 0, 42% 50%, 45% 0, 48% 50%, 51% 0, 54% 50%, 57% 0, 60% 50%, 63% 0, 66% 50%, 69% 0, 72% 50%, 75% 0, 78% 50%, 81% 0, 84% 50%, 87% 0, 90% 50%, 93% 0, 96% 50%, 99% 0, 100% 50%, 100% 100%, 0 100%);
    opacity: .18;
}
.ef2-cal-banner-kicker {
    position: relative; z-index: 1;
    font-family: var(--ef2-mono); font-size: .62rem; letter-spacing: .24em; font-weight: 700;
    color: rgba(255,255,255,0.85); text-transform: uppercase;
}
.ef2-cal-banner-title {
    position: relative; z-index: 1;
    font-family: var(--ef2-hei); font-weight: 900; color: #fff;
    font-size: clamp(1.35rem, 3.2vw, 2rem); letter-spacing: .04em;
    text-shadow: 0 2px 8px rgba(0,0,0,0.25);
}
.ef2-cal-banner-title b { color: #fff; font-weight: 900; border-bottom: 4px solid rgba(255,255,255,0.55); padding-bottom: 2px; }
.ef2-cal-banner-note {
    position: relative; z-index: 1;
    font-family: var(--ef2-mono); font-size: .58rem; letter-spacing: .16em; font-weight: 600;
    color: rgba(255,255,255,0.72);
    /* 参考横幅的 mono 注记贴右下角（评审 D8） */
    align-self: flex-end; margin-top: 2px;
}

/* --- 5.2 日期章事件条 --- */
.ef2-cal {
    /* 列下限加宽：330px 时事件标题被省略号吃掉关键内容（评审 D2） */
    display: grid; grid-template-columns: repeat(auto-fit, minmax(430px, 1fr));
    gap: 9px 14px; margin: 0 0 18px;
}
.ef2-cal-row { display: flex; align-items: stretch; min-width: 0; }
.ef2-cal-date {
    flex: none; display: inline-flex; align-items: center; gap: 5px;
    font-family: var(--ef2-mono); font-size: .72rem; font-weight: 700; letter-spacing: .04em;
    color: #fff; background: var(--ef2-punch);
    padding: 6px 9px 6px 11px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 7px) 100%, 0 100%);
}
.ef2-cal-date i { font-style: normal; font-size: .68rem; opacity: .9; }
.ef2-cal-bar {
    flex: 1 1 auto; min-width: 0;
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    /* 白纸墨字（去黑修缮：参考版本日曆的事件横幅本就是浅底，重点靠粉章与 is-major 提） */
    background: #fff; color: var(--ef2-ink);
    padding: 6px 12px;
    border: 1px solid var(--ef2-line); border-left: 0;
}
.ef2-cal-bar b {
    font-family: var(--ef2-hei); font-weight: 700; font-size: .88rem;
    /* 标题允许两行，别用单行省略把「女仆餐厅」截成「女仆餐…」（评审 D2） */
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    overflow: hidden; line-height: 1.35;
}
.ef2-cal-bar i {
    /* 类别标签做成小墨块：一行里黑(标签)白(条)粉(日期章)三色齐备 */
    flex: none; font-style: normal; font-family: var(--ef2-mono);
    font-size: .58rem; letter-spacing: .12em; font-weight: 700;
    color: #fff; background: var(--ef2-ink);
    padding: 2px 8px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 5px) 100%, 0 100%);
}
.ef2-cal-row.is-major .ef2-cal-bar i { background: rgba(23,25,30,.35); }
.ef2-cal-row.is-major .ef2-cal-bar {
    background: linear-gradient(90deg, #d81b60, #ec407a 72%);
    color: #fff; border-color: transparent;
}
.ef2-cal-row.is-major .ef2-cal-bar i { color: #fff; }
@media screen and (max-width: 600px) {
    /* 移动端专属构图（诉求2）：同行挤不下 → 「日期章在上、标题条在下」的堆叠卡 */
    .ef2-cal { grid-template-columns: 1fr; gap: 12px; }
    .ef2-cal-row { flex-direction: column; align-items: stretch; }
    .ef2-cal-date { align-self: flex-start; position: relative; z-index: 1; }
    .ef2-cal-bar {
        border-left: none; border-top: 2px solid var(--ef2-punch);
        padding: 9px 12px;
    }
    .ef2-cal-bar b { font-size: .82rem; }
}

/* --- 5.3 出血画卡 v2（右缘粉缎带 + 左侧墨纱文案）--- */
.md-content:has(.parallax-header) .ef2-bleed2 {
    position: relative; margin: 18px 0; border: 1px solid var(--ef2-line);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 22px), calc(100% - 22px) 100%, 0 100%);
    /* v2.1 视口化：画卡随窗口高度长高 */
    overflow: hidden; min-height: clamp(300px, 38vh, 520px); display: flex; align-items: flex-end;
    background-size: cover; background-position: center;
}
.md-content:has(.parallax-header) .ef2-bleed2::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(17,19,24,0.68) 0%, rgba(17,19,24,0.28) 46%, transparent 74%);
}
.ef2-bleed2-body { position: relative; z-index: 2; padding: 24px 60px 26px 26px; color: #fff; max-width: 660px; }
.ef2-bleed2-body h3 {
    color: #fff !important; border: none !important; margin: 0 0 8px !important; padding: 0 !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: clamp(1.2rem, 2.6vw, 1.7rem);
    text-shadow: 0 2px 8px rgba(0,0,0,0.5);
}
.ef2-bleed2-body p { color: rgba(255,255,255,0.93) !important; text-shadow: 0 1px 4px rgba(0,0,0,0.5); margin: 0 0 8px !important; }
.ef2-bleed2-body p:last-child { margin-bottom: 0 !important; }
.ef2-count-badge {
    font-family: var(--ef2-mono); font-weight: 700; letter-spacing: .04em;
    color: var(--ef2-ink); background: var(--ef2-pink);
    padding: 2px 9px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 6px) 100%, 0 100%);
}
.ef2-bleed2-tag {
    position: absolute; top: 14px; left: 0; z-index: 3;
    font-family: var(--ef2-mono); font-size: .6rem; letter-spacing: .2em; font-weight: 700;
    color: #fff; background: rgba(17,19,24,0.82); border-left: 3px solid var(--ef2-punch);
    padding: 5px 12px 5px 10px; text-transform: uppercase;
}
.ef2-bleed2-ribbon {
    position: absolute; top: 0; right: 0; bottom: 0; z-index: 3; width: 40px;
    background:
        repeating-linear-gradient(45deg, rgba(23,25,30,.10) 0 4px, transparent 4px 9px),
        var(--ef2-pink-ribbon);
    display: flex; align-items: flex-start; justify-content: center;
}
.ef2-bleed2-ribbon span {
    writing-mode: vertical-rl; text-orientation: mixed;
    font-family: var(--ef2-disp); font-weight: 800; font-size: .78rem; letter-spacing: .3em;
    color: var(--ef2-ink); padding-top: 16px; white-space: nowrap;
}
@media screen and (max-width: 720px) {
    .md-content:has(.parallax-header) .ef2-bleed2 { min-height: 240px; }
    .ef2-bleed2-body { padding: 18px 50px 20px 16px; }
    .ef2-bleed2-ribbon { width: 30px; }
    .ef2-bleed2-ribbon span { font-size: .62rem; letter-spacing: .22em; }
}

/* --- 5.4 导航卡 v2：白纸墨线，hover 整卡反白为墨块 --- */
.md-content:has(.parallax-header) .nav-card {
    background: #fff !important;
    border: 1px solid var(--ef2-line) !important;
    border-radius: 0 !important;
    transition: transform .22s ease, background .22s ease, border-color .22s ease, box-shadow .22s ease;
}
.md-content:has(.parallax-header) .nav-card::after {
    content: '↗'; border: none;
    top: 8px; right: 10px; width: auto; height: auto;
    font-family: var(--ef2-mono); font-size: .72rem; font-weight: 700; color: var(--ef2-punch);
    opacity: .55; transition: opacity .22s ease, color .22s ease;
}
.md-content:has(.parallax-header) .nav-card:hover {
    background: var(--ef2-ink) !important;
    border-color: var(--ef2-ink) !important;
    transform: translateY(-3px) !important;
    box-shadow: 0 12px 28px rgba(23,25,30,0.28), -4px 0 0 var(--ef2-punch) !important;
}
.md-content:has(.parallax-header) .nav-card:hover::after { opacity: 1; color: var(--ef2-pink); }
.md-content:has(.parallax-header) .nav-icon { background: none !important; clip-path: none !important; }
.md-content:has(.parallax-header) .nav-card:hover .nav-icon { background: none !important; }
.md-content:has(.parallax-header) .nav-card:hover .nav-icon svg { fill: #fff; }
.md-content:has(.parallax-header) .nav-card:hover .nav-content h4 { color: #fff; }
.md-content:has(.parallax-header) .nav-card:hover .nav-content p { color: rgba(255,255,255,0.72); }
.md-content:has(.parallax-header) .nav-content h4,
.md-content:has(.parallax-header) .nav-content p { transition: color .22s ease; }

/* =========================================================================
   6. HUB —— 情报中枢（明日方舟 INFORMATION 版式的粉白版）
   ========================================================================= */
.md-content:has(.parallax-header) .ef2-hub { overflow: hidden; }
/* fixed 而非 absolute：label 点击会聚焦隐藏 radio，absolute 的 radio 缩在面板顶部，
   浏览器会把焦点元素滚进视口导致页面往上跳；fixed 元素永远视为在视口内，不触发滚动 */
.ef2-hub-radio { position: fixed; top: 0; left: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0; }
.ef2-hub-ghost {
    position: absolute; right: 6px; bottom: -14px; z-index: 0;
    font-size: clamp(3.4rem, 9vw, 7.4rem);
    color: rgba(23,25,30,0.04);
}

/* --- tab 行 --- */
.ef2-hub-tabs {
    position: relative; z-index: 1;
    display: flex; align-items: stretch; gap: 8px;
    border-bottom: 1px solid var(--ef2-line);
    margin: 0 0 22px; padding-bottom: 0;
}
.ef2-hub-tab {
    position: relative; display: flex; align-items: baseline; gap: 8px;
    padding: 9px 18px 12px; cursor: pointer; -webkit-tap-highlight-color: transparent;
    transition: background .2s ease;
    /* CJK 允许任意字间断行，flex 收缩时会把「最新」竖着折成「最/新」（评审 M2） */
    white-space: nowrap;
}
.ef2-hub-tab i {
    font-style: normal; font-family: var(--ef2-mono); font-size: .62rem; font-weight: 700;
    letter-spacing: .06em; color: var(--ef2-gray); transition: color .2s ease;
}
.ef2-hub-tab b { font-family: var(--ef2-hei); font-weight: 800; font-size: 1.02rem; color: var(--ef2-ink); transition: color .2s ease; }
.ef2-hub-tab span { font-family: var(--ef2-mono); font-size: .58rem; letter-spacing: .12em; font-weight: 600; color: var(--ef2-gray); transition: color .2s ease; }
.ef2-hub-tab::before {
    content: ''; position: absolute; left: 0; top: 22%; bottom: 26%; width: 3px;
    background: var(--ef2-punch); opacity: 0; transition: opacity .2s ease;
}
.ef2-hub-tab::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 3px;
    background: var(--ef2-punch); opacity: 0; transition: opacity .2s ease;
}
.ef2-hub-tab:hover { background: rgba(23,25,30,0.04); }
.ef2-hub-tabs-note {
    margin-left: auto; align-self: center;
    font-family: var(--ef2-mono); font-size: .56rem; letter-spacing: .18em; font-weight: 600;
    color: var(--ef2-gray); opacity: .75; padding-right: 4px;
}
/* 选中态：反白墨块 + 粉 tick + 底线段 */
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"],
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"],
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"] { background: var(--ef2-ink); }
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"]::before,
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"]::before,
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"]::before,
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"]::after,
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"]::after,
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"]::after { opacity: 1; }
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"] b,
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"] b,
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"] b { color: #fff; }
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"] i,
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"] i,
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"] i,
#hub2-overview:checked ~ .ef2-hub-tabs label[for="hub2-overview"] span,
#hub2-notice:checked   ~ .ef2-hub-tabs label[for="hub2-notice"] span,
#hub2-event:checked    ~ .ef2-hub-tabs label[for="hub2-event"] span { color: var(--ef2-pink); }
/* 焦点环只点亮当前 radio 对应的 tab，不点亮整排（评审 M6/P4） */
#hub2-overview:focus-visible ~ .ef2-hub-tabs label[for="hub2-overview"],
#hub2-notice:focus-visible   ~ .ef2-hub-tabs label[for="hub2-notice"],
#hub2-event:focus-visible    ~ .ef2-hub-tabs label[for="hub2-event"] { outline: 2px dashed var(--ef2-punch); outline-offset: 2px; }

/* --- 视图切换：display 切换 + 进场（默认 checked 视图初始即 display:block，保 mindmap 可测量）--- */
.ef2-hub-body { position: relative; z-index: 1; }
.ef2-hub-view { display: none; animation: ef2ViewIn .42s ease both; }
@keyframes ef2ViewIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
#hub2-overview:checked ~ .ef2-hub-body .ef2-hub-view[data-hub="overview"],
#hub2-notice:checked   ~ .ef2-hub-body .ef2-hub-view[data-hub="notice"],
#hub2-event:checked    ~ .ef2-hub-body .ef2-hub-view[data-hub="event"] { display: block; }

/* --- 总览视图：力导图高度视口化（诉求1）---
   index.md 内联 height:500px 保证加载即可测量（陷阱3）；>600px 用 !important clamp 接管，
   ≤600px 的 420px !important 规则在 index.md 内联 <style>（文档序更靠后）继续生效，
   故本条必须锁在 min-width:601px 内，避免更高特异性反杀移动端规则。 */
@media screen and (min-width: 601px) {
    .ef2-hub #mindmap-container { height: clamp(420px, 52vh, 640px) !important; }
}

/* --- 总览视图：力导图「装裱」进 v2（羊皮纸棕框 → 白纸墨线；网格纹理保留）（评审 D4）--- */
.ef2-hub #mindmap-container {
    border: 1px solid var(--ef2-line) !important;
    border-radius: 0 !important;
    background:
        repeating-linear-gradient(0deg, transparent, transparent 15px, rgba(100,100,100,0.05) 15px, rgba(100,100,100,0.05) 16px),
        repeating-linear-gradient(90deg, transparent, transparent 15px, rgba(100,100,100,0.05) 15px, rgba(100,100,100,0.05) 16px),
        #fff !important;
    box-shadow: none !important;
}

/* --- 总览视图：快速开始白卡 v2 化 --- */
.ef2-hub .mindmap-text-side {
    background: #fff !important;
    border: 1px solid var(--ef2-line) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.ef2-hub .mindmap-text-side:hover { transform: none; box-shadow: 0 8px 22px rgba(236,64,122,0.08) !important; }

/* --- 公告视图：左日期条目列表 + 右公告卡 --- */
.ef2-news { display: grid; grid-template-columns: 264px 1fr; gap: 24px; align-items: start; }
.ef2-news-list { display: flex; flex-direction: column; border-top: 2px solid var(--ef2-ink); }
.ef2-news-item { display: flex; flex-direction: column; gap: 4px; padding: 12px 4px; border-bottom: 1px solid var(--ef2-line); }
.ef2-news-date { font-family: var(--ef2-mono); font-size: .64rem; letter-spacing: .12em; font-weight: 700; color: var(--ef2-punch); }
.ef2-news-title { font-family: var(--ef2-hei); font-weight: 700; font-size: .92rem; color: var(--ef2-ink); line-height: 1.5; }
.ef2-news-more {
    margin-top: 12px; align-self: flex-start;
    font-family: var(--ef2-mono); font-size: .68rem; letter-spacing: .16em; font-weight: 700;
    color: var(--ef2-ink) !important;
    background: #fff !important;
    border: 1px solid var(--ef2-ink); padding: 6px 14px;
    text-decoration: none !important;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%);
    transition: background .2s ease, color .2s ease;
}
.ef2-news-more:hover { background: var(--ef2-ink) !important; color: #fff !important; }
/* 公告主卡：v1 红卡 → 墨底告示卡（危险斜纹 + 粉 tick） */
.ef2-hub .announce-card.ef2-notice-major {
    /* 白纸告示卡（去黑修缮）：重点靠顶部粉色危险斜纹 + 粉 tick，不靠整卡压墨 */
    background: #fff !important;
    border: 1px solid var(--ef2-line) !important;
    border-left: 4px solid var(--ef2-punch) !important;
    border-radius: 0 !important;
    box-shadow: 0 12px 30px rgba(236,64,122,0.12) !important;
    position: relative; overflow: hidden;
}
.ef2-hub .announce-card.ef2-notice-major::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px;
    background: repeating-linear-gradient(45deg, var(--ef2-punch) 0 8px, transparent 8px 16px);
    opacity: .8;
}
.ef2-hub .ef2-notice-major .ac-title { color: var(--ef2-ink); }
.ef2-hub .ef2-notice-major .ac-body { color: var(--ef2-ink-soft); }
.ef2-hub .ef2-notice-major .ac-body a { color: var(--ef2-deep); border-bottom-color: var(--ef2-deep); }
/* 公告次卡：绿卡 → 白纸墨线卡 */
.ef2-hub .announce-card.ef2-notice-side {
    background: #fff !important;
    border: 1px solid var(--ef2-line) !important;
    border-left: 4px solid var(--ef2-pink) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.ef2-hub .ef2-notice-side .ac-title { color: var(--ef2-ink); }
.ef2-hub .ef2-notice-side .ac-body { color: var(--ef2-ink-soft); }
.ef2-hub-foot { margin: 2px 4px 0; font-size: .9em; color: var(--ef2-gray); }

/* --- 活动视图：海报卡 --- */
.ef2-event2 { display: grid; grid-template-columns: 1.15fr 1fr; gap: 22px; align-items: center; }
.ef2-event2-media { position: relative; border: 1px solid var(--ef2-line); }
.ef2-event2-media img { display: block; width: 100%; height: auto; }
.ef2-event2-tag {
    position: absolute; left: 0; bottom: 12px;
    font-family: var(--ef2-mono); font-size: .6rem; letter-spacing: .18em; font-weight: 700;
    color: #fff; background: rgba(17,19,24,0.85); border-left: 3px solid var(--ef2-punch);
    padding: 5px 12px 5px 10px;
}
.ef2-event2-copy { position: relative; padding: 6px 2px; }
.ef2-event2-deco { display: block; font-size: 1.1rem; opacity: .8; margin-bottom: 8px; letter-spacing: .4em; }
.md-content:has(.parallax-header) .ef2-event2-title {
    margin: 0 0 10px !important; padding: 0 !important; border: none !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: clamp(1.25rem, 2.6vw, 1.7rem); color: var(--ef2-ink);
}
.ef2-event2-desc { margin: 0 0 20px !important; color: var(--ef2-ink-soft); line-height: 1.8; }
@media screen and (max-width: 880px) {
    .ef2-news { grid-template-columns: 1fr; gap: 16px; }
    .ef2-event2 { grid-template-columns: 1fr; gap: 16px; }
    .ef2-hub-tabs { gap: 4px; }
    .ef2-hub-tab { padding: 10px 12px 12px; }
    .ef2-hub-tab span, .ef2-hub-tabs-note { display: none; }
    /* 触控目标 ≥40px（评审 M5） */
    .ef2-news-more { padding: 10px 15px; }
}

/* =========================================================================
   7. GAMEPLAY —— 星链支柱选择器（v1「星轨」的高配版）+ 大画框 + 粉缎带 + 双圆钮胶囊
   ========================================================================= */
/* fixed：同 .ef2-hub-radio，防聚焦滚动 */
.ef2-gp-radio { position: fixed; top: 0; left: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0; }
.ef2-gp-lede { margin: 0 0 14px !important; color: var(--ef2-ink-soft); }

/* --- 7.1 星链：左列链轨节点（桌面竖链 / 移动横链），激活节点带星环与连桥 --- */
.ef2-gp-deck {
    display: grid;
    grid-template-columns: clamp(12rem, 15vw, 15rem) minmax(0, 1fr);
    gap: 0 clamp(18px, 1.8vw, 30px);
    align-items: stretch;
}
.ef2-gp-stagecol { min-width: 0; }
.ef2-orbit2 { position: relative; display: flex; flex-direction: column; min-width: 0; }
.ef2-orbit2-cap, .ef2-orbit2-foot {
    font-family: var(--ef2-mono); font-size: .54rem; letter-spacing: .18em; font-weight: 700;
    color: rgba(23,25,30,0.4);
}
.ef2-orbit2-cap { margin: 2px 0 10px 2px; }
.ef2-orbit2-foot { margin: 10px 0 0 2px; }
.ef2-orbit2-rail {
    position: relative; flex: 1 1 auto;
    display: flex; flex-direction: column; justify-content: space-between; gap: 2px;
    padding: 4px 0;
}
/* 链轨：粉→墨→粉渐变竖线，穿过所有节点圆心 */
.ef2-orbit2-rail::before {
    content: ''; position: absolute; left: 23px; top: 24px; bottom: 24px; width: 2px;
    background: linear-gradient(180deg, var(--ef2-pink), rgba(23,25,30,0.22) 50%, var(--ef2-pink));
    opacity: .6;
}
/* 数据脉冲：一粒菱形光珠周期性沿链滑行（元素极小，绘制开销可忽略） */
.ef2-orbit2-rail::after {
    content: ''; position: absolute; left: 20px; top: 5%; width: 8px; height: 8px;
    background: var(--ef2-pink); box-shadow: 0 0 10px var(--ef2-pink);
    clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
    opacity: 0; pointer-events: none;
    animation: ef2ChainPulse 6s ease-in-out infinite;
}
@keyframes ef2ChainPulse {
    0% { top: 5%; opacity: 0; }
    10% { opacity: .95; }
    48% { top: 91%; opacity: .95; }
    56% { top: 91%; opacity: 0; }
    100% { top: 5%; opacity: 0; }
}
.ef2-orbit2-node {
    position: relative; z-index: 1;
    display: flex; align-items: center; gap: 12px;
    padding: 4px 4px 4px 0; cursor: pointer; -webkit-tap-highlight-color: transparent;
}
.ef2-orbit2-dot {
    position: relative; width: 46px; height: 46px; border-radius: 50%; flex: none;
    display: flex; align-items: center; justify-content: center; font-size: 19px;
    background: #fff; border: 2px solid var(--ef2-line);
    box-shadow: 0 4px 12px rgba(31,38,135,0.08);
    transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease, background .25s ease;
}
/* 表情图标单色纪律：默认灰阶、hover/选中恢复彩色（评审 D6） */
.ef2-orbit2-dot i { font-style: normal; filter: grayscale(1) opacity(.6); transition: filter .2s ease; }
/* 外圈虚线星环：激活时亮起并缓转 */
.ef2-orbit2-dot::after {
    content: ''; position: absolute; inset: -7px; border-radius: 50%;
    border: 1px dashed color-mix(in srgb, var(--pc, var(--ef2-punch)) 62%, transparent);
    opacity: 0; transition: opacity .25s ease;
    animation: ef2OrbitSpin 16s linear infinite; animation-play-state: paused;
}
@keyframes ef2OrbitSpin { to { transform: rotate(360deg); } }
.ef2-orbit2-copy { display: flex; flex-direction: column; line-height: 1.12; min-width: 0; }
.ef2-orbit2-copy b { font-family: var(--ef2-hei); font-weight: 700; font-size: .96rem; color: var(--ef2-ink); white-space: nowrap; transition: color .2s ease; }
.ef2-orbit2-copy span { font-family: var(--ef2-mono); font-size: .54rem; letter-spacing: .16em; font-weight: 700; color: var(--ef2-gray); margin-top: 3px; }
.ef2-orbit2-idx { margin-left: auto; font-family: var(--ef2-mono); font-size: .58rem; font-weight: 700; color: rgba(23,25,30,0.28); transition: color .2s ease; }
.ef2-orbit2-node:hover .ef2-orbit2-dot { border-color: var(--pc, var(--ef2-punch)); transform: translateX(2px); }
.ef2-orbit2-node:hover .ef2-orbit2-dot i { filter: none; }
/* 激活节点 → 舞台的连桥（伸进列间隙，指向右侧画框） */
.ef2-orbit2-node::before {
    content: ''; position: absolute; top: 50%; right: calc(-1 * clamp(18px, 1.8vw, 30px));
    width: clamp(18px, 1.8vw, 30px); height: 2px; transform: translateY(-50%);
    background: linear-gradient(90deg, var(--pc, var(--ef2-punch)), transparent);
    opacity: 0; transition: opacity .25s ease; pointer-events: none;
}
/* 选中态：星环点亮缓转 + 圆点染色悬浮 + 名称/编号跳色 + 连桥亮起 */
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-dot,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-dot,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-dot,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-dot,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-dot,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-dot {
    border-color: var(--pc, var(--ef2-punch));
    background: linear-gradient(135deg, #fff, color-mix(in srgb, var(--pc, var(--ef2-punch)) 16%, #fff));
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--pc, var(--ef2-punch)) 20%, transparent),
                0 8px 20px color-mix(in srgb, var(--pc, var(--ef2-punch)) 36%, transparent);
    transform: scale(1.1);
}
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-dot::after,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-dot::after,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-dot::after,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-dot::after,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-dot::after,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-dot::after { opacity: 1; animation-play-state: running; }
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-dot i,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-dot i,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-dot i,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-dot i,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-dot i,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-dot i { filter: none; }
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-copy b,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-copy b,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-copy b,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-copy b,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-copy b,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-copy b { color: var(--pc, var(--ef2-punch)); }
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-idx,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-idx,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-idx,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-idx,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-idx,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-idx { color: var(--pc, var(--ef2-punch)); }
#gp-magic:checked  ~ .ef2-gp-deck label[for="gp-magic"]::before,
#gp-tech:checked   ~ .ef2-gp-deck label[for="gp-tech"]::before,
#gp-combat:checked ~ .ef2-gp-deck label[for="gp-combat"]::before,
#gp-anime:checked  ~ .ef2-gp-deck label[for="gp-anime"]::before,
#gp-life:checked   ~ .ef2-gp-deck label[for="gp-life"]::before,
#gp-tcy:checked    ~ .ef2-gp-deck label[for="gp-tcy"]::before { opacity: 1; }
/* 焦点环只点亮当前 radio 对应的节点（评审 M6/P4） */
#gp-magic:focus-visible  ~ .ef2-gp-deck label[for="gp-magic"] .ef2-orbit2-dot,
#gp-tech:focus-visible   ~ .ef2-gp-deck label[for="gp-tech"] .ef2-orbit2-dot,
#gp-combat:focus-visible ~ .ef2-gp-deck label[for="gp-combat"] .ef2-orbit2-dot,
#gp-anime:focus-visible  ~ .ef2-gp-deck label[for="gp-anime"] .ef2-orbit2-dot,
#gp-life:focus-visible   ~ .ef2-gp-deck label[for="gp-life"] .ef2-orbit2-dot,
#gp-tcy:focus-visible    ~ .ef2-gp-deck label[for="gp-tcy"] .ef2-orbit2-dot { outline: 2px dashed var(--ef2-punch); outline-offset: 3px; }

/* --- 7.2 大画框舞台 --- */
.ef2-stage {
    position: relative; overflow: hidden;
    /* v2.1 视口化（诉求1）：桌面弃固定纵横比，画框高度直接吃窗口高度——
       16:9 4K / 16:10 2K 下舞台都"占满感"一致；移动端在下方媒体查询回退纵横比方案 */
    height: clamp(360px, 56vh, 860px); min-height: 320px;
    border: 1px solid var(--ef2-line); background: #eceff1;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 22px), calc(100% - 22px) 100%, 0 100%);
}
.ef2-stage-view {
    position: absolute; inset: 0;
    background-size: cover; background-position: center;
    opacity: 0; visibility: hidden; transform: scale(1.04);
    transition: opacity .45s ease, transform .8s ease, visibility .45s;
}
.ef2-stage-view::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(17,19,24,0.4) 0%, rgba(17,19,24,0.1) 34%, transparent 60%),
                linear-gradient(to top, rgba(17,19,24,0.34), transparent 42%);
}
#gp-magic:checked  ~ .ef2-gp-deck .ef2-stage-view[data-pillar="magic"],
#gp-tech:checked   ~ .ef2-gp-deck .ef2-stage-view[data-pillar="tech"],
#gp-combat:checked ~ .ef2-gp-deck .ef2-stage-view[data-pillar="combat"],
#gp-anime:checked  ~ .ef2-gp-deck .ef2-stage-view[data-pillar="anime"],
#gp-life:checked   ~ .ef2-gp-deck .ef2-stage-view[data-pillar="life"],
#gp-tcy:checked    ~ .ef2-gp-deck .ef2-stage-view[data-pillar="tcy"] {
    opacity: 1; visibility: visible; transform: scale(1);
}
.ef2-stage-num {
    position: absolute; left: 22px; top: 16px; z-index: 2;
    font-family: var(--ef2-mono); font-weight: 700; font-size: .78rem; letter-spacing: .12em;
    color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,0.6);
}
.ef2-stage-num b { font-size: 1.05rem; color: var(--ef2-pink); }
/* 粉色竖缎带（终末地 GAMEPLAY 黄缎带 → 招牌粉，墨字直立） */
.ef2-stage-ribbon {
    position: absolute; top: 0; right: 0; bottom: 22px; z-index: 2; width: 46px;
    background:
        repeating-linear-gradient(45deg, rgba(23,25,30,.08) 0 4px, transparent 4px 9px),
        var(--ef2-pink-ribbon);
    display: flex; flex-direction: column; align-items: center; justify-content: space-between;
    padding: 16px 0 12px;
}
.ef2-stage-ribbon b {
    writing-mode: vertical-rl; text-orientation: mixed;
    font-family: var(--ef2-disp); font-weight: 800; font-size: .95rem; letter-spacing: .32em;
    color: var(--ef2-ink); white-space: nowrap;
}
.ef2-stage-ribbon i {
    writing-mode: vertical-rl; text-orientation: mixed; font-style: normal;
    font-family: var(--ef2-mono); font-size: .46rem; letter-spacing: .14em; font-weight: 700;
    color: rgba(23,25,30,0.66); white-space: nowrap;
}

/* --- 7.3 舞台下说明区（每支柱一块，含双圆钮斜纹胶囊）--- */
.ef2-gp-caps { position: relative; }
.ef2-gp-cap { display: none; padding: 0 2px; }
#gp-magic:checked  ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="magic"],
#gp-tech:checked   ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="tech"],
#gp-combat:checked ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="combat"],
#gp-anime:checked  ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="anime"],
#gp-life:checked   ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="life"],
#gp-tcy:checked    ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="tcy"] {
    display: flex; gap: 22px; align-items: flex-start;
    animation: ef2ViewIn .42s ease both;
}
/* 双圆钮斜纹胶囊（参考图翻页控件原样复刻） */
.ef2-gp-nav {
    flex: none; position: relative; z-index: 3; margin-top: -26px;
    display: flex; align-items: center; gap: 9px;
    padding: 9px 13px;
    background:
        repeating-linear-gradient(45deg, rgba(23,25,30,.08) 0 4px, transparent 4px 9px),
        #fff;
    border: 1px solid var(--ef2-line);
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%);
    box-shadow: 0 8px 22px rgba(31,38,135,0.12);
}
.ef2-gp-prev, .ef2-gp-next {
    width: 40px; height: 40px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: #fff; border: 1px solid var(--ef2-ink);
    font-family: var(--ef2-mono); font-size: 1.15rem; font-weight: 700; color: var(--ef2-ink);
    cursor: pointer; user-select: none; -webkit-tap-highlight-color: transparent;
    transition: background .2s ease, color .2s ease, transform .2s ease;
    line-height: 1; padding-bottom: 2px;
}
.ef2-gp-prev:hover, .ef2-gp-next:hover { background: var(--ef2-ink); color: #fff; transform: translateY(-1px); }
.ef2-gp-cap-copy { min-width: 0; padding-top: 12px; }
.ef2-gp-cap-copy .ef2-counter { display: block; margin-bottom: 5px; }
.md-content:has(.parallax-header) .ef2-gp-cap-copy h3 {
    margin: 0 0 7px !important; padding: 0 !important; border: none !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: clamp(1.25rem, 2.6vw, 1.7rem); color: var(--ef2-ink);
}
.ef2-gp-cap-copy p { margin: 0 0 11px !important; color: var(--ef2-ink-soft); line-height: 1.8; }
.ef2-gp-mods { display: flex; flex-wrap: wrap; gap: 7px; }
.ef2-gp-mods span {
    font-family: var(--ef2-mono); font-size: .7rem; font-weight: 600; color: var(--ef2-ink);
    padding: 4px 10px; border: 1px solid var(--ef2-line); background: #fff;
    clip-path: polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px);
}
.ef2-gp-links { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 18px; }
@media screen and (max-width: 820px) {
    /* 星链翻横：节点横排可滑，链轨改为水平线，脉冲/连桥/编号收起 */
    .ef2-gp-deck { grid-template-columns: 1fr; gap: 12px; }
    .ef2-orbit2-cap, .ef2-orbit2-foot, .ef2-orbit2-idx { display: none; }
    .ef2-orbit2-rail {
        flex-direction: row; justify-content: flex-start; gap: 2px;
        overflow-x: auto; padding: 4px 2px 8px; scrollbar-width: none;
        /* 右缘渐隐提示还有节点可横滑（评审 M4） */
        mask-image: linear-gradient(90deg, #000 88%, transparent);
        -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent);
    }
    .ef2-orbit2-rail::-webkit-scrollbar { display: none; }
    .ef2-orbit2-rail::before {
        left: 10px; right: 10px; top: 27px; bottom: auto; width: auto; height: 2px;
        background: linear-gradient(90deg, var(--ef2-pink), rgba(23,25,30,0.22) 50%, var(--ef2-pink));
    }
    .ef2-orbit2-rail::after { display: none; }
    /* 触控目标 ≥40px（评审 M5） */
    .ef2-orbit2-node { flex: none; flex-direction: column; gap: 5px; align-items: center; padding: 2px 7px; }
    .ef2-orbit2-node::before { display: none; }
    .ef2-orbit2-dot { width: 42px; height: 42px; font-size: 17px; }
    .ef2-orbit2-copy { align-items: center; }
    .ef2-orbit2-copy b { font-size: .76rem; }
    .ef2-orbit2-copy span { display: none; }
    .ef2-stage { height: auto; aspect-ratio: 16 / 9; min-height: 240px; }
    .ef2-stage-ribbon { width: 34px; }
    .ef2-stage-ribbon b { font-size: .78rem; letter-spacing: .24em; }
    .ef2-stage-ribbon i { display: none; }
    #gp-magic:checked  ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="magic"],
    #gp-tech:checked   ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="tech"],
    #gp-combat:checked ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="combat"],
    #gp-anime:checked  ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="anime"],
    #gp-life:checked   ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="life"],
    #gp-tcy:checked    ~ .ef2-gp-deck .ef2-gp-cap[data-pillar="tcy"] { flex-direction: column; gap: 12px; }
    .ef2-gp-nav { margin-top: -22px; }
}
@media screen and (max-width: 600px) {
    .ef2-stage { height: auto; aspect-ratio: 4 / 3; min-height: 220px; }
}

/* =========================================================================
   8. GUIDE —— 视频墨色画框
   ========================================================================= */
.ef2-video-frame { border: 1px solid var(--ef2-ink); background: #fff; }
.ef2-video-head {
    display: flex; align-items: center; justify-content: space-between; gap: 10px;
    background: var(--ef2-ink); color: #fff;
    font-family: var(--ef2-mono); font-size: .6rem; letter-spacing: .16em; font-weight: 700;
    padding: 7px 12px;
}
.ef2-video-frame .video-wrapper { margin: 0; border-radius: 0; }

/* =========================================================================
   9. STATS —— 干员规格表（墨 chip 标签 + mono 值 + 特性卡 + 幽灵巨字）
   ========================================================================= */
.md-content:has(.parallax-header) .ef2-stats { overflow: hidden; }
.ef2-stats-ghost {
    position: absolute; right: -8px; top: -22px; z-index: 0;
    font-size: clamp(4rem, 11vw, 8.6rem);
    color: rgba(23,25,30,0.045);
}
.ef2-stats-grid { position: relative; z-index: 1; display: flex; gap: 28px; align-items: center; flex-wrap: wrap; }
.ef2-stats-media { flex: 1.1; min-width: 300px; border: 1px solid var(--ef2-line); }
/* 直角纪律：图片自带的 12px 圆角内联样式压回直角（评审 D3） */
.ef2-stats-media img { border-radius: 0 !important; box-shadow: none !important; }
.ef2-spec { flex: 1; min-width: 300px; }
.ef2-spec-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.ef2-spec-name {
    font-family: var(--ef2-mono); font-weight: 800; font-size: 1.15rem; letter-spacing: .06em;
    color: var(--ef2-punch);
}
.md-content:has(.parallax-header) .ef2-spec-title {
    font-family: var(--ef2-hei); font-weight: 900; font-size: 1.3rem; color: var(--ef2-ink);
}
.ef2-spec-rows { border-top: 2px solid var(--ef2-ink); margin-bottom: 16px; }
.ef2-spec-row {
    display: flex; align-items: baseline; gap: 12px;
    padding: 9px 2px; border-bottom: 1px dashed var(--ef2-line);
}
.ef2-spec-chip {
    flex: none; min-width: 58px; text-align: center;
    font-family: var(--ef2-hei); font-weight: 700; font-size: .74rem; color: #fff;
    background: var(--ef2-ink); padding: 3px 10px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 7px) 100%, 0 100%);
}
.ef2-spec-val { font-family: var(--ef2-mono); font-size: .84rem; color: var(--ef2-ink-soft); font-weight: 600; min-width: 0; }
.ef2-feat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.ef2-feat {
    position: relative; background: #fff; border: 1px solid var(--ef2-line);
    padding: 12px 14px 11px;
    transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.ef2-feat::before {
    content: ''; position: absolute; left: 0; top: 14%; bottom: 14%; width: 3px;
    background: var(--ef2-punch); opacity: 0; transition: opacity .2s ease;
}
.ef2-feat:hover { transform: translateX(3px); border-color: var(--ef2-punch); box-shadow: 0 6px 18px rgba(236,64,122,0.1); }
.ef2-feat:hover::before { opacity: 1; }
.ef2-feat b { display: flex; align-items: center; gap: 7px; font-family: var(--ef2-hei); font-weight: 800; font-size: .95rem; color: var(--ef2-ink); }
.ef2-feat-ico { color: var(--ef2-punch); }
.ef2-feat p { margin: 4px 0 0 !important; font-size: .82rem; color: var(--ef2-gray); }
@media screen and (max-width: 480px) {
    .ef2-feat-grid { grid-template-columns: 1fr; }
    /* 规格行窄屏换行布局：chip 在上、值在下（诉求2 弱势区专项） */
    .ef2-spec-row { flex-direction: column; align-items: flex-start; gap: 5px; padding: 10px 2px; }
    .ef2-spec-chip { min-width: 0; }
}

/* =========================================================================
   10. GALLERY —— 胶片带跑马灯
   ========================================================================= */
.ef2-film { position: relative; padding: 16px 0 14px; }
.ef2-film::before, .ef2-film::after {
    content: ''; position: absolute; left: 0; right: 0; height: 8px;
    background-image: repeating-linear-gradient(90deg, var(--ef2-ink) 0 16px, transparent 16px 30px);
    opacity: .14; pointer-events: none;
}
.ef2-film::before { top: 0; }
.ef2-film::after { bottom: 0; }
.ef2-film .marquee-wrap { margin: 10px 0; }
/* 直角纪律：跑马灯卡片圆角压平（评审 D3；overflow 裁切保留） */
.ef2-film .marquee-item { border-radius: 0; }
.ef2-film-tag {
    position: absolute; left: -8px; top: 50%; transform: translateY(-50%) rotate(180deg); z-index: 2;
    writing-mode: vertical-rl; text-orientation: mixed;
    font-family: var(--ef2-mono); font-size: .56rem; letter-spacing: .2em; font-weight: 700;
    color: var(--ef2-gray); white-space: nowrap; pointer-events: none;
}
@media screen and (max-width: 960px) {
    .ef2-film-tag { display: none; }
}
.ef2-gallery-links { margin-top: 8px; }
/* 灯箱锚点通用重置：glightbox 插件自动包 img 生成的 <a> 不许出现下划线/底色 */
.md-content:has(.parallax-header) a.glightbox {
    background: none !important;
    border-bottom: none !important;
    text-decoration: none !important;
}
.marquee-item > a.glightbox { display: block; cursor: zoom-in; }

/* =========================================================================
   11. IDENTITY —— 服务器 ICON 墙（直角白卡，hover 描边跳粉）
   ========================================================================= */
.ef2-icons .home-icon-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 12px;
}
.ef2-icons .home-icon-tile {
    width: 100%; height: auto; box-sizing: border-box;
    background: #fff !important;
    border: 1px solid var(--ef2-line) !important;
    border-radius: 0 !important;
    padding: 8px;
    box-shadow: none !important;
    transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.ef2-icons .home-icon-tile:hover {
    transform: translateY(-3px);
    border-color: var(--ef2-punch) !important;
    box-shadow: 0 8px 20px rgba(236,64,122,0.14) !important;
}

/* =========================================================================
   12. ARCHIVE —— 建站档案切换台：历史星站 radio 切换（左）+ 官网地址（右）
       + ICON 墙（面板第三层）；<960px 塌成单列
   ========================================================================= */
/* fixed：同 .ef2-hub-radio，防聚焦滚动 */
.ef2-arch2-radio { position: fixed; top: 0; left: 0; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0; }
.ef2-arch2-grid {
    display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
    gap: clamp(22px, 2.4vw, 40px); align-items: start;
}
.ef2-arch2-h { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; flex-wrap: wrap; }
.md-content:has(.parallax-header) .ef2-arch2-title {
    margin: 0 !important; border: none !important; padding: 0 !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: 1.14rem; color: var(--ef2-ink); line-height: 1.2;
}
.ef2-arch2-hnote {
    margin-left: auto; font-family: var(--ef2-mono); font-size: .54rem;
    letter-spacing: .16em; font-weight: 700; color: var(--ef2-gray);
}

/* --- 星站排（六站横链，radio 选站） --- */
.ef2-arch2-stops {
    display: flex; flex-wrap: wrap; gap: 7px;
    padding: 0 0 14px; margin-bottom: 16px; border-bottom: 1px solid var(--ef2-line);
}
.ef2-arch2-stop {
    position: relative; flex: none; display: flex; flex-direction: column; gap: 3px;
    padding: 7px 12px 6px; cursor: pointer; -webkit-tap-highlight-color: transparent;
    background: #fff; border: 1px solid var(--ef2-line);
    transition: border-color .2s ease, transform .2s ease, background .2s ease;
}
.ef2-arch2-stop i { font-style: normal; font-family: var(--ef2-mono); font-size: .56rem; font-weight: 700; letter-spacing: .1em; color: var(--ef2-punch); transition: color .2s ease; }
.ef2-arch2-stop b { font-family: var(--ef2-hei); font-weight: 700; font-size: .78rem; color: var(--ef2-ink); white-space: nowrap; transition: color .2s ease; }
.ef2-arch2-stop::before {
    content: ''; position: absolute; left: -1px; top: -1px; width: 8px; height: 8px;
    background: var(--ef2-punch); clip-path: polygon(0 0, 100% 0, 0 100%);
    opacity: 0; transition: opacity .2s ease;
}
.ef2-arch2-stop:hover { border-color: var(--ef2-punch); transform: translateY(-1px); }
#arch-1:checked ~ .ef2-arch2-grid label[for="arch-1"],
#arch-2:checked ~ .ef2-arch2-grid label[for="arch-2"],
#arch-3:checked ~ .ef2-arch2-grid label[for="arch-3"],
#arch-4:checked ~ .ef2-arch2-grid label[for="arch-4"],
#arch-5:checked ~ .ef2-arch2-grid label[for="arch-5"] { background: var(--ef2-ink); border-color: var(--ef2-ink); }
#arch-1:checked ~ .ef2-arch2-grid label[for="arch-1"]::before,
#arch-2:checked ~ .ef2-arch2-grid label[for="arch-2"]::before,
#arch-3:checked ~ .ef2-arch2-grid label[for="arch-3"]::before,
#arch-4:checked ~ .ef2-arch2-grid label[for="arch-4"]::before,
#arch-5:checked ~ .ef2-arch2-grid label[for="arch-5"]::before { opacity: 1; }
#arch-1:checked ~ .ef2-arch2-grid label[for="arch-1"] b,
#arch-2:checked ~ .ef2-arch2-grid label[for="arch-2"] b,
#arch-3:checked ~ .ef2-arch2-grid label[for="arch-3"] b,
#arch-4:checked ~ .ef2-arch2-grid label[for="arch-4"] b,
#arch-5:checked ~ .ef2-arch2-grid label[for="arch-5"] b { color: #fff; }
#arch-1:checked ~ .ef2-arch2-grid label[for="arch-1"] i,
#arch-2:checked ~ .ef2-arch2-grid label[for="arch-2"] i,
#arch-3:checked ~ .ef2-arch2-grid label[for="arch-3"] i,
#arch-4:checked ~ .ef2-arch2-grid label[for="arch-4"] i,
#arch-5:checked ~ .ef2-arch2-grid label[for="arch-5"] i { color: var(--ef2-pink); }
#arch-1:focus-visible ~ .ef2-arch2-grid label[for="arch-1"],
#arch-2:focus-visible ~ .ef2-arch2-grid label[for="arch-2"],
#arch-3:focus-visible ~ .ef2-arch2-grid label[for="arch-3"],
#arch-4:focus-visible ~ .ef2-arch2-grid label[for="arch-4"],
#arch-5:focus-visible ~ .ef2-arch2-grid label[for="arch-5"] { outline: 2px dashed var(--ef2-punch); outline-offset: 2px; }

/* --- 展示卡（幽灵期数 + 日期章 + 标题 + 正文） --- */
.ef2-arch2-views { position: relative; min-height: 13rem; }
.ef2-arch2-view { display: none; position: relative; padding: 2px 2px 0; animation: ef2ViewIn .42s ease both; }
#arch-1:checked ~ .ef2-arch2-grid .ef2-arch2-view[data-arch="1"],
#arch-2:checked ~ .ef2-arch2-grid .ef2-arch2-view[data-arch="2"],
#arch-3:checked ~ .ef2-arch2-grid .ef2-arch2-view[data-arch="3"],
#arch-4:checked ~ .ef2-arch2-grid .ef2-arch2-view[data-arch="4"],
#arch-5:checked ~ .ef2-arch2-grid .ef2-arch2-view[data-arch="5"] { display: block; }
.ef2-arch2-ghost {
    position: absolute; right: 0; top: -10px;
    font-family: var(--ef2-mono); font-weight: 800; font-size: clamp(2.6rem, 4.5vw, 4.2rem);
    color: rgba(23,25,30,0.05); line-height: 1; pointer-events: none;
}
.ef2-arch2-stamp { display: flex; align-items: center; gap: 9px; margin-bottom: 10px; flex-wrap: wrap; }
.ef2-arch2-date {
    font-family: var(--ef2-mono); font-weight: 800; font-size: .78rem; letter-spacing: .05em;
    color: #fff; background: var(--ef2-punch); padding: 3px 11px 3px 9px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 7px) 100%, 0 100%);
}
.ef2-arch2-badge { font-family: var(--ef2-mono); font-size: .56rem; font-weight: 800; letter-spacing: .14em; color: #fff; background: var(--ef2-ink); padding: 3px 8px; }
.ef2-arch2-count { font-family: var(--ef2-mono); font-size: .58rem; font-weight: 700; letter-spacing: .14em; color: var(--ef2-gray); }
.md-content:has(.parallax-header) .ef2-arch2-vtitle {
    margin: 0 0 9px !important; border: none !important; padding: 0 !important;
    font-family: var(--ef2-hei); font-weight: 900; font-size: clamp(1.15rem, 2.2vw, 1.5rem); color: var(--ef2-ink);
}
.ef2-arch2-view p { position: relative; z-index: 1; margin: 0 0 9px !important; color: var(--ef2-ink-soft); line-height: 1.85; font-size: .92rem; }

/* --- 右栏：官网地址（v1 chip 基底刷 v2 色，竖排一列） --- */
.ef2-arch2-net { min-width: 0; }
/* minmax(0,1fr) 而非裸 1fr(=minmax(auto,1fr))：auto 最小轨会被地址 chip 内容顶宽、
   在窄面板里撑破容器（真机横向溢出、露出背景花墙）；0 最小让轨道永不超过可用宽 */
.ef2-arch2-net .ef-addr-mini { grid-template-columns: minmax(0, 1fr); }
.md-content:has(.parallax-header) .ef-addr-chip {
    background: #fff;
    border-color: var(--ef2-line);
    border-left: 3px solid var(--ef2-punch);
}
.md-content:has(.parallax-header) .ef-addr-host { color: var(--ef2-deep); }
.ef2-arch2-net .ef-addr-note { margin: 12px 2px 0 !important; font-size: .82rem; color: var(--ef2-gray); }

/* --- ICON 墙（并入档案面板的第三层）与反馈附注 --- */
.ef2-arch2-icons { margin-top: clamp(24px, 3vh, 38px); border-top: 1px solid var(--ef2-line); padding-top: 18px; }
.ef2-arch2-icons .ef2-arch2-hnote { letter-spacing: .04em; }
.ef2-arch2-feedback { margin: 18px 2px 0 !important; font-size: .8rem; color: var(--ef2-gray); }

@media screen and (max-width: 960px) {
    /* minmax(0,1fr)：裸 1fr 的 auto 最小轨会被右栏地址 chip 顶宽，撑破面板导致整页横向溢出 */
    .ef2-arch2-grid { grid-template-columns: minmax(0, 1fr); gap: 26px; }
    .ef2-arch2-views { min-height: 0; }
    .ef2-arch2-stops {
        flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 10px;
        mask-image: linear-gradient(90deg, #000 90%, transparent);
        -webkit-mask-image: linear-gradient(90deg, #000 90%, transparent);
    }
    .ef2-arch2-stops::-webkit-scrollbar { display: none; }
}

/* =========================================================================
   12b. 页尾「初次创建 / 最后更新」日期：白纸铭牌，不再裸浮在花海背景上（评审 D5）
   （Material 的 md-source-file 块 hide_time 管不到，这里只做首页视觉收编）
   ========================================================================= */
.md-content:has(.parallax-header) .md-source-file {
    display: inline-flex; flex-direction: column; gap: 2px;
    background: #fff;
    border: 1px solid var(--ef2-line);
    border-left: 3px solid var(--ef2-punch);
    padding: 8px 16px; margin-top: 10px;
    font-family: var(--ef2-mono);
}
@media screen and (max-width: 600px) {
    .md-content:has(.parallax-header) .md-source-file {
        display: flex; padding: 8px 12px; font-size: .82em;
    }
    /* 官网地址 chips 窄屏收紧内边距（v1 基底之上微调） */
    .md-content:has(.parallax-header) .ef-addr-chip { padding: 10px 12px; }
}

/* =========================================================================
   13. 技术分隔线 v2（首页 <hr> → 中缀 // ▽ // 铭牌）
   ========================================================================= */
.md-content:has(.parallax-header) hr {
    border: none; height: 1px; margin: 38px 0; position: relative; overflow: visible;
    background: linear-gradient(90deg, transparent, var(--ef2-line) 10%, var(--ef2-line) 90%, transparent);
}
.md-content:has(.parallax-header) hr::before {
    content: '// ▽ //';
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    width: auto; height: auto;
    font-family: var(--ef2-mono); font-size: .58rem; letter-spacing: .3em; font-weight: 700;
    color: var(--ef2-gray);
    background: #fff; border: 1px solid var(--ef2-line-soft);
    padding: 2px 12px 2px 15px;
    rotate: none;
}
.md-content:has(.parallax-header) hr::after { display: none; }

/* =========================================================================
   14. 暗色主题（手电筒）最小兜底：分区头/面板/说明不至于白底白字
   ========================================================================= */
body.flashlight-mode .md-content:has(.parallax-header) .ef2-head {
    background: #1a1e24; border-color: rgba(255,255,255,0.1); border-bottom-color: var(--ef2-punch);
}
body.flashlight-mode .md-content:has(.parallax-header) .ef2-head-title { color: #eceff1; }
body.flashlight-mode .ef2-head .ef2-head-ghost { color: rgba(255,255,255,0.05); }
body.flashlight-mode .md-content:has(.parallax-header) .ef2-panel {
    background: #14181d; border-color: rgba(255,255,255,0.08);
}
body.flashlight-mode .ef2-hub-tab b,
body.flashlight-mode .ef2-gp-tab b,
body.flashlight-mode .ef2-news-title,
body.flashlight-mode .ef2-feat b,
body.flashlight-mode .md-content:has(.parallax-header) .ef2-subhead-title,
body.flashlight-mode .md-content:has(.parallax-header) .ef2-gp-cap-copy h3,
body.flashlight-mode .md-content:has(.parallax-header) .ef2-event2-title,
body.flashlight-mode .md-content:has(.parallax-header) .ef2-spec-title { color: #eceff1; }
body.flashlight-mode .ef2-gp-tab,
body.flashlight-mode .ef2-feat,
body.flashlight-mode .ef2-gp-mods span,
body.flashlight-mode .ef2-icons .home-icon-tile { background: #1a1e24 !important; border-color: rgba(255,255,255,0.12) !important; }
body.flashlight-mode .ef2-gp-mods span { color: #cfd8dc; }
body.flashlight-mode .ef2-gp-cap-copy p, body.flashlight-mode .ef2-event2-desc, body.flashlight-mode .ef2-gp-lede { color: #b0bec5; }
body.flashlight-mode .ef2-spec-val { color: #b0bec5; }
body.flashlight-mode .md-content:has(.parallax-header) hr::before { background: #14181d; color: #78909c; }
body.flashlight-mode .ef2-hub .announce-card.ef2-notice-side { background: #1a1e24 !important; }
body.flashlight-mode .ef2-hub .ef2-notice-side .ac-title { color: #eceff1; }
body.flashlight-mode .ef2-hub .ef2-notice-side .ac-body { color: #b0bec5; }
body.flashlight-mode .ef2-news-more { background: #1a1e24 !important; color: #eceff1 !important; border-color: rgba(255,255,255,0.4); }
body.flashlight-mode .ef2-hub .mindmap-text-side { background: #1a1e24 !important; border-color: rgba(255,255,255,0.1) !important; }
body.flashlight-mode .ef2-video-frame { background: #14181d; }
body.flashlight-mode .md-content:has(.parallax-header) .ef2-endnote { background: #14181d; border-color: rgba(255,255,255,0.1); border-left-color: var(--ef2-punch); }
body.flashlight-mode .ef2-endnote-msg { color: #b0bec5; }
body.flashlight-mode .ef2-endnote-portal { color: #90a4ae !important; border-color: rgba(255,255,255,0.3) !important; }
body.flashlight-mode .ef2-orbit2-dot { background: #1a1e24; border-color: rgba(255,255,255,0.14); }
body.flashlight-mode .ef2-orbit2-copy b { color: #eceff1; }
body.flashlight-mode .ef2-arch2-stop { background: #1a1e24; border-color: rgba(255,255,255,0.12); }
body.flashlight-mode .ef2-arch2-stop b { color: #eceff1; }
body.flashlight-mode .md-content:has(.parallax-header) .ef2-arch2-title,
body.flashlight-mode .md-content:has(.parallax-header) .ef2-arch2-vtitle { color: #eceff1; }
body.flashlight-mode .ef2-arch2-view p,
body.flashlight-mode .ef2-arch2-feedback,
body.flashlight-mode .ef2-arch2-net .ef-addr-note { color: #b0bec5; }

/* =========================================================================
   15. 无障碍：减弱动态（切换视图瞬时、装饰动画停用）
   ========================================================================= */
@media (prefers-reduced-motion: reduce) {
    .ef2-stage-view { transition: opacity .01ms !important; transform: none !important; }
    .ef2-hub-view,
    .ef2-gp-cap,
    .ef2-arch2-view { animation: none !important; }
    .ef2-orbit2-rail::after { animation: none !important; opacity: 0 !important; }
    .ef2-orbit2-dot::after { animation: none !important; }
    .ef2-hero-scroll i { animation: none !important; }
    .ef2-deco, .ef2-deco-star { animation: none !important; }
    .ef2-plat, .ef2-orbit2-dot, .ef2-arch2-stop, .ef2-feat,
    .md-content:has(.parallax-header) .nav-card { transition: none !important; }
}

/* =========================================================================
   16. 自动化截图适配（.tcy-bot 由 extra.js 在 webdriver 环境下打到 <html>）
   全页截图会把视口拉成整页高，svh 跟着爆炸——bot 下把 hero 钉成固定高。
   真人访问不带 .tcy-bot，本节规则一概不生效。
   三个类的选择器（0-3-0）压过各断点里 .parallax-header.ef2-hero（0-2-0），
   故一条规则即可覆盖 §1 基础值与两处媒体查询变体。
   ========================================================================= */
.tcy-bot .parallax-header.ef2-hero { height: auto; min-height: 720px; }
