﻿/* ==========================================================================
   TCY Server — Endfield v2.6 内容页皮肤（ef2-content.css）
   把文章页（左侧栏目 / 正文排版 / 组件）拉齐终末地干员页语言：
   黑白粉三色骨架 + 分区「第四色」渗出 + 直角切角 + mono 铭牌 + 900 粗黑标题
   + 等高线/半调网点纹理 + 开启动画系统。

   同时【尊重各文章自己的分区配色】——admonition / 徽章 / 表格主题色一律不动，
   只统一几何（圆角→直角）、字体（快乐体→粗黑）、结构装饰（tick/编号/幽灵）。

   作用域：body:not(:has(.parallax-header)) —— 主页（有视差头图）完全不受影响。
   依赖：ef2-core.css 的 --ef2-* 设计令牌；分区第四色 --efc-accent/--efc-accent-soft
   由 ef2-hud.js 按 URL 首段写入 :root（未写入时回落招牌粉）。
   注意：本文件在 extra.css 之后加载；同特异性规则以本文件为准，
   故 flashlight（手电筒）模式的对应暗色兜底必须在本文件内重申（§9）。
   ========================================================================== */

/* =========================================================================
   0. 令牌：缓动三曲线（动画系统共用）+ 手绘纹理（等高线/半调网点）
   ========================================================================= */
:root {
    /* 标准滑出：与灵动岛/白轨同曲线，全站已有语感 */
    --efc-ease-out: cubic-bezier(.2, .7, .2, 1);
    /* 盖章落定：极快到极慢的急停，用于铭牌/章/头像环 */
    --efc-ease-snap: cubic-bezier(.16, 1, .3, 1);
    /* 机械匀滑：划线/擦入/扫描这类「刀走直线」的动作 */
    --efc-ease-mech: cubic-bezier(.4, 0, .2, 1);

    /* CMYK 校色条统一配方（评审 V③：chip/h1/表格三处各一套 → 收敛成令牌，M→Y→C 定序） */
    --efc-cmyk-m: #e6007e;
    --efc-cmyk-y: #ffd400;
    --efc-cmyk-c: #00b7d3;

    /* 等高线：320×320 无缝平铺（开放等值线只从左右缘进出、端点 C1 连续；
       另附「山头」闭合小环）。stroke-opacity 烤死 0.05，一屏 ≤2 个大容器使用。 */
    --efc-tex-contour: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='320'%20height='320'%3E%3Cg%20fill='none'%20stroke='%2317191e'%20stroke-opacity='.05'%20stroke-width='1'%3E%3Cpath%20d='M0%2060C24%2030%2088%2092%20140%2078%20180%2068%20200%2034%20244%2044%20272%2050%20296%2090%20320%2060'/%3E%3Cpath%20d='M0%20170C20%20190%2070%20130%20120%20150%20170%20168%20210%20200%20250%20180%20278%20166%20300%20150%20320%20170'/%3E%3Cpath%20d='M0%20262C12%20280%2090%20300%20150%20282%20200%20268%20230%20236%20272%20250%20296%20258%20308%20244%20320%20262'/%3E%3Cellipse%20cx='236'%20cy='114'%20rx='26'%20ry='11'%20transform='rotate(-12%20236%20114)'/%3E%3Cellipse%20cx='236'%20cy='114'%20rx='13'%20ry='5'%20transform='rotate(-12%20236%20114)'/%3E%3Cellipse%20cx='70'%20cy='220'%20rx='20'%20ry='8'%20transform='rotate(8%2070%20220)'/%3E%3C/g%3E%3C/svg%3E");

    /* 半调网点：1.1px 墨点径向渐变，background-size 6~8px 调疏密；
       只做小面积点缀（≤120px 见方），禁全幅平铺（摩尔纹）。 */
    --efc-tex-halftone: radial-gradient(circle at 1.5px 1.5px, rgba(23, 25, 30, .10) 1.1px, transparent 1.3px);
}

/* =========================================================================
   1. 正文纸面：白纸墨线大图纸 + 等高线底纹 + 档案戳 letterhead + 角落 L 括号
   ========================================================================= */
body:not(:has(.parallax-header)) .md-content__inner {
    background-color: rgba(255, 255, 255, 0.88);
    background-image: var(--efc-tex-contour);
    background-repeat: repeat;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border-radius: 3px;
    border: 1px solid var(--ef2-line);
    border-top: 2px solid var(--ef2-ink);
    box-shadow: 0 14px 40px rgba(31, 38, 135, 0.08);
}
/* 档案戳 letterhead：整页左上角的 mono 印章行（原 h1 kicker 升格迁位，
   腾出 h1::before 给方括号名牌；::after 已被下方粉 L 括号占用） */
body:not(:has(.parallax-header)) .md-content__inner::before {
    content: '▽// TCYMC ARCHIVE — DOCUMENT';
    display: block;
    font-family: var(--ef2-mono);
    font-size: .6rem;
    font-weight: 700;
    letter-spacing: .22em;
    color: var(--efc-accent, var(--ef2-punch));
    margin-bottom: 18px;
}
/* 右下角 L 括号（与主页 .ef2-panel 同款落款，染分区色） */
body:not(:has(.parallax-header)) .md-content__inner::after {
    content: '';
    position: absolute; right: 10px; bottom: 10px; width: 15px; height: 15px;
    border-right: 2px solid var(--efc-accent, var(--ef2-punch));
    border-bottom: 2px solid var(--efc-accent, var(--ef2-punch));
    opacity: .45; pointer-events: none;
}

/* =========================================================================
   2. 标题系：方括号名牌 h1 + 仪表编号 h2 + › h3 + mono h4
   ========================================================================= */
/* h1：干员名牌 [ 标题 ] —— 括号用【内联】伪元素跟随文本流（标题长度不定、
   可能含 emoji/换行，absolute 定位必错位）。
   选择器带 .md-content 前缀：搜索下拉的每条结果也是 .md-typeset 且含 h1，
   不加前缀会给搜索结果长出括号+彩条（评审 H2） */
body:not(:has(.parallax-header)) .md-content .md-typeset h1 {
    font-family: var(--ef2-hei);
    font-weight: 900;
    font-size: 2em;
    letter-spacing: .04em;
    text-align: left;
    color: var(--ef2-ink);
    border-bottom: 2px solid var(--ef2-ink);
    padding-bottom: 16px;
    margin-bottom: 1em;
    /* CMYK 分段微条：品红 → 分区色 → 青，骑在墨底线上缘（终末地名牌下的
       多色微条直译）；px 定长 = 机械件不随根缩放，与全站描边纪律一致 */
    background: linear-gradient(90deg,
        var(--efc-cmyk-m) 0 44px,
        var(--efc-accent, var(--ef2-punch)) 44px 128px,
        var(--efc-cmyk-c) 128px 156px,
        transparent 156px) left bottom / 100% 3px no-repeat;
}
/* 左右方括号：mono 细体、淡墨，字号略小于标题作「框架件」层级 */
body:not(:has(.parallax-header)) .md-content .md-typeset h1::before {
    content: '[ ';
    display: inline;
    position: static;
    margin: 0;
    font-family: var(--ef2-mono);
    font-weight: 400;
    font-size: .82em;
    letter-spacing: 0;
    color: rgba(23, 25, 30, 0.35);
}
body:not(:has(.parallax-header)) .md-content .md-typeset h1::after {
    content: ' ]';
    /* 必须显式压掉 extra.css 的绝对定位粉渐变段（它把 ::after 用作底部装饰条） */
    position: static;
    display: inline;
    width: auto; height: auto;
    transform: none;
    background: none;
    border-radius: 0;
    font-family: var(--ef2-mono);
    font-weight: 400;
    font-size: .82em;
    letter-spacing: 0;
    color: rgba(23, 25, 30, 0.45);
}
/* 若开了 toc permalink，h1 的 ¶ 锚点会插在闭括号之前留缝——页面自身即锚点，隐掉 */
body:not(:has(.parallax-header)) .md-content .md-typeset h1 .headerlink { display: none; }

/* h2：切角分区色 tick + 底部发丝线 + 行尾「// 01 ───」仪表编号
   （letter-spacing 把箱线字符拉成断续刻度） */
body:not(:has(.parallax-header)) .md-content .md-typeset { counter-reset: efc2h2; }
body:not(:has(.parallax-header)) .md-content .md-typeset h2 {
    counter-increment: efc2h2;
    position: relative;
    font-family: var(--ef2-hei);
    font-weight: 800;
    color: var(--ef2-ink);
    border-left: none;
    padding: 0 92px 9px 16px;
    border-bottom: 1px solid var(--ef2-line);
}
body:not(:has(.parallax-header)) .md-content .md-typeset h2::before {
    content: '';
    position: absolute; left: 0; top: .16em; bottom: .5em; width: 4px;
    background: var(--efc-accent, var(--ef2-punch));
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 4px), 0 100%);
}
body:not(:has(.parallax-header)) .md-content .md-typeset h2::after {
    content: '// ' counter(efc2h2, decimal-leading-zero) ' ───';
    position: absolute; right: 2px; bottom: 8px;
    font-family: var(--ef2-mono);
    font-size: .6rem; font-weight: 700; letter-spacing: .14em;
    color: rgba(23, 25, 30, 0.32);
}

/* h3：粗黑 + › 前缀；h4：mono 小节标 */
body:not(:has(.parallax-header)) .md-content .md-typeset h3 {
    font-family: var(--ef2-hei);
    font-weight: 800;
    color: var(--ef2-ink);
}
body:not(:has(.parallax-header)) .md-content .md-typeset h3::before {
    content: '› ';
    color: var(--efc-accent, var(--ef2-punch));
    font-family: var(--ef2-mono);
    font-weight: 700;
}
body:not(:has(.parallax-header)) .md-content .md-typeset h4 {
    font-family: var(--ef2-mono);
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--ef2-ink-soft);
}

/* =========================================================================
   3. 左侧文章栏目 —— 终末地「干员选择轨」直译
   ①虚线导轨串起条目 ②选中项白隙+分区色圆环+半调网点晕 ③行尾 mono 编号
   ④分区标题=墨 chip+白字+CMYK 微条。规则全锁 ≥76.25em：<76.25em 侧栏是
   ef2-shell.css §5 的全屏抽屉，不许污染。
   ========================================================================= */
@media screen and (min-width: 76.25em) {

    /* --- 3.1 容器：白纸设备面板（墨顶梁 + REC 铭牌 + 收尾帽 + 等高线底纹） --- */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary {
        position: relative;
        background-color: rgba(255, 255, 255, 0.94);
        background-image: var(--efc-tex-contour);
        background-repeat: repeat;
        backdrop-filter: none;
        -webkit-backdrop-filter: none;
        border-radius: 0;
        border: 1px solid var(--ef2-line);
        border-top: 2px solid var(--ef2-ink);
        padding: 30px 10px 26px;
        box-shadow: 0 10px 28px rgba(31, 38, 135, 0.07);
    }
    /* [ REC ] 铭牌：容器左上角的 mono 微字（终末地干员页左上 REC 框的直译） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary::before {
        content: '[ REC ] ▽// SECTION INDEX';
        position: absolute; top: 8px; left: 12px;
        font-family: var(--ef2-mono);
        font-size: .52rem; font-weight: 700; letter-spacing: .18em;
        color: var(--ef2-gray);
    }
    /* 收尾帽：底缘 mono 微字 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary::after {
        content: '◇ END OF INDEX';
        display: block;
        margin: 12px 2px 0;
        font-family: var(--ef2-mono);
        font-size: .5rem; font-weight: 700; letter-spacing: .2em;
        color: rgba(23, 25, 30, 0.32);
    }

    /* --- 3.2 分区标题：墨 chip + 白字 + 强调色缺口 + CMYK 三色微条 --- */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link {
        position: relative;
        font-family: var(--ef2-hei) !important;
        font-weight: 800 !important;
        font-size: .78rem;
        color: #fff !important;
        background: var(--ef2-ink) !important;
        border-radius: 0 !important;
        border-bottom: none;
        padding: 9px 12px 10px 15px;
        margin: 0 0 16px;
        /* 右上斜切一刀：黑 chip 的机械口子（纯色块无 absolute 后代，可用 clip-path） */
        clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 10px, 100% 100%, 0 100%);
    }
    /* 左缘强调色缺口 tick */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title::before,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link::before,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link::before {
        content: '';
        position: absolute; left: 0; top: 6px; bottom: 6px; width: 3px;
        background: var(--efc-accent, var(--ef2-punch));
    }
    /* chip 底缘 CMYK 三色微条（终末地干员名下彩条的直译） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title::after,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link::after,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link::after {
        content: '';
        position: absolute; left: 15px; bottom: 0; width: 52px; height: 3px;
        background: linear-gradient(90deg, var(--efc-cmyk-m) 0 34%, var(--efc-cmyk-y) 34% 67%, var(--efc-cmyk-c) 67% 100%);
    }
    /* Material 折叠箭头/返回箭头在 chip 里没戏份 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title .md-nav__icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link .md-nav__icon { display: none !important; }
    /* 分区标题里的注入图标：墨底上反白 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link .tcy-sidebar-icon {
        filter: grayscale(1) brightness(0) invert(1) opacity(.9);
    }

    /* --- 3.3 导轨：竖向虚线轨穿过页面条目的圆节点圆心（x = 27px） --- */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list {
        position: relative;
        counter-reset: efnav;
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list::before {
        content: '';
        position: absolute; left: 27px; top: 14px; bottom: 14px; width: 0;
        border-left: 2px dashed rgba(23, 25, 30, 0.18);
        pointer-events: none;
    }
    /* 轨顶端点小菱（设备接头） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list::after {
        content: '';
        position: absolute; left: 23px; top: 6px; width: 9px; height: 9px;
        transform: rotate(45deg);
        background: var(--efc-accent, var(--ef2-punch));
        opacity: .85;
        pointer-events: none;
    }

    /* --- 3.4 页面条目：圆节点（头像位）+ 名称 + 行尾 mono 编号 --- */
    /* 带页内目录的活动页会多渲染一个 label[for="__toc"]（移动端开目录用），
       Material 桌面本来藏着它——但下面的 display:flex 会把它唤醒成重复行，
       于是「有目录的页」重复、「没目录的页」正常（用户实拍）。显式压死。 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link[for="__toc"] {
        display: none !important;
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list > .md-nav__item { counter-increment: efnav; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] .md-nav__link {
        position: relative;
        display: flex;
        align-items: center;
        gap: 0;
        border-radius: 0 !important;
        padding: 5px 8px 5px 12px;
        margin: 2px 0;
        color: var(--ef2-ink-soft);
        transition: color .18s ease, transform .18s ease;
    }
    /* 行尾工业编号 // 01（counter 纯 CSS，无需 JS） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list > .md-nav__item > .md-nav__link::after {
        content: '// ' counter(efnav, decimal-leading-zero);
        /* extra.css 给 .md-ellipsis 定了 order:2，伪元素默认 order:0 会被排到名称前——押后 */
        order: 3;
        margin-left: auto;
        font-family: var(--ef2-mono);
        font-size: .52rem; font-weight: 700; letter-spacing: .08em;
        color: rgba(23, 25, 30, 0.28);
        transition: color .18s ease;
    }
    /* 图标容器 → 白底圆节点，骑在导轨上（圆形选中环是圆角纪律的豁免项） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-page-icon {
        position: relative; z-index: 1;
        width: 30px; height: 30px; flex: none;
        display: inline-flex; align-items: center; justify-content: center;
        background: #fff;
        border: 1.5px solid rgba(23, 25, 30, 0.28);
        border-radius: 50%;
        margin-right: 10px;
        filter: grayscale(1) opacity(.72);
        transition: filter .18s ease, border-color .18s ease, box-shadow .18s ease;
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-icon svg,
    body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-page-icon svg {
        width: 15px; height: 15px;
    }
    /* 名称紧贴节点：extra.css 给 .md-ellipsis 的 margin-left:auto 会把名称推到行尾，
       挤乱「名称居左、编号居右」的仪表布局——收回来，行尾让给 mono 编号 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] .md-nav__link .md-ellipsis {
        margin-left: 0 !important;
        margin-right: auto;
        flex: 0 1 auto;
        min-width: 0;
    }
    /* chip 里的图标是「白字铭牌」不是圆节点：撤销 3.4 的白圆盘（否则白盘吞白字） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__title .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--nested > .md-nav__link .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item--section > .md-nav__link .tcy-sidebar-icon {
        width: auto; height: auto;
        background: none;
        border: none;
        border-radius: 0;
        box-shadow: none;
        margin-right: 8px;
    }
    /* 悬停：节点通电、条目右探 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] .md-nav__link:hover {
        background: none !important;
        color: var(--ef2-ink) !important;
        transform: translateX(3px);
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link:hover .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link:hover .tcy-sidebar-page-icon {
        filter: none;
        border-color: var(--efc-accent, var(--ef2-punch));
    }

    /* --- 3.5 选中态：白隙 + 强调色圆环 + 半调网点方块晕（终末地黄圈的直译） --- */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active {
        background: none !important;
        color: var(--ef2-ink) !important;
        box-shadow: none !important;
        font-weight: 800;
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .md-ellipsis {
        color: var(--ef2-ink) !important;
        font-family: var(--ef2-hei);
    }
    /* 半调网点贴片：错位垫在圆节点左后方（radial-gradient 平铺，零资源） */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active::before {
        content: '';
        position: absolute; left: 2px; top: 50%; width: 38px; height: 38px;
        transform: translateY(-46%);
        background-image: radial-gradient(circle, rgba(23, 25, 30, 0.3) 1.1px, transparent 1.2px);
        background-size: 5px 5px;
        pointer-events: none;
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .tcy-sidebar-icon,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .tcy-sidebar-page-icon {
        filter: none;
        border-color: var(--ef2-ink);
        box-shadow: 0 0 0 2px #fff,
                    0 0 0 4px var(--efc-accent, var(--ef2-punch)),
                    0 6px 14px color-mix(in srgb, var(--efc-accent, var(--ef2-punch)) 45%, transparent);
    }
    /* 选中条目的编号跳强调色 */
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list > .md-nav__item > .md-nav__link--active::after {
        color: var(--efc-accent, var(--ef2-punch));
    }

    /* --- 3.6 手电筒（暗色）兜底 --- */
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary {
        background-color: rgba(26, 28, 33, 0.85);
        background-image: none;
        border-color: rgba(255, 255, 255, 0.08);
        border-top-color: var(--efc-accent, var(--ef2-punch));
    }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] .md-nav__link { color: #b0bec5; }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .md-ellipsis { color: #eceff1 !important; }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-icon,
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-page-icon {
        background: #1a1e24;
        border-color: rgba(255, 255, 255, 0.16);
    }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .tcy-sidebar-icon,
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active .tcy-sidebar-page-icon {
        box-shadow: 0 0 0 2px #14181d,
                    0 0 0 4px var(--efc-accent, var(--ef2-punch));
    }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav[data-md-level="1"] > .md-nav__list::before { border-left-color: rgba(255, 255, 255, 0.14); }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link--active::before {
        background-image: radial-gradient(circle, rgba(255, 255, 255, 0.22) 1.1px, transparent 1.2px);
    }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary::before { color: #78909c; }
    body.flashlight-mode:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary::after { color: rgba(255, 255, 255, 0.28); }

    /* --- 3.7 减弱动态 --- */
    @media (prefers-reduced-motion: reduce) {
        body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav__link,
        body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-icon,
        body:not(:has(.parallax-header)) .md-sidebar--primary .tcy-sidebar-page-icon { transition: none !important; }
    }
}

/* =========================================================================
   4. 日期铭牌：终末地「黑chip+白值域」对（陣營|羅德島 的直译）
   DOM 不可改：.tcy-page-dates > .tcy-page-dates-row > (.tcy-page-dates-ico + span[+note])
   方案：容器裸化；ico(▤/↻) 充当黑 chip（图标即标签，避免用 :first-child
   猜「创建/更新」——创建行在无 git 创建日期的页面上会缺席，文字标签会贴错）；
   紧随的无类 span 充当白值域盒；note 留在盒外做灰注
   ========================================================================= */
body:not(:has(.parallax-header)) .tcy-page-dates {
    display: inline-flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 20px;
    padding: 0;
    background: none;
    border: none;
    font-family: var(--ef2-mono);
    font-size: 0.78em;
    line-height: 1.6;
    color: var(--ef2-gray);
}
body:not(:has(.parallax-header)) .tcy-page-dates-row {
    display: inline-flex;
    align-items: stretch;
    gap: 0;
    flex-wrap: wrap;
}
/* 黑 chip：墨底白字 + 左缘分区色 tick（inset 阴影画，不占盒） */
body:not(:has(.parallax-header)) .tcy-page-dates-ico {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    padding: 4px 10px;
    background: var(--ef2-ink);
    color: #fff;
    font-weight: 700;
    box-shadow: inset 3px 0 0 var(--efc-accent, var(--ef2-punch));
}
/* 白值域盒：与 chip 同高对接（border-left 让位给 chip） */
body:not(:has(.parallax-header)) .tcy-page-dates-row > span:not([class]) {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    padding: 4px 12px;
    background: #fff;
    border: 1px solid var(--ef2-line);
    border-left: none;
    color: var(--ef2-ink-soft);
}
/* 灰注：留在盒外 */
body:not(:has(.parallax-header)) .tcy-page-dates-note {
    align-self: center;
    padding: 0 6px;
    font-size: .85em;
    color: #b0bec5;
}

/* =========================================================================
   5. 组件几何纪律：圆角→直角，配色一律保留原文章主题色
   ========================================================================= */
/* admonition / details：保留各类型自己的主题色，只压直角 + 粗黑标题 */
body:not(:has(.parallax-header)) .md-typeset .admonition,
body:not(:has(.parallax-header)) .md-typeset details {
    border-radius: 0 !important;
    box-shadow: 0 8px 22px rgba(31, 38, 135, 0.07) !important;
}
body:not(:has(.parallax-header)) .md-typeset .admonition-title,
body:not(:has(.parallax-header)) .md-typeset summary {
    font-family: var(--ef2-hei) !important;
    font-weight: 800 !important;
    border-radius: 0 !important;
}
/* 原生表格：墨头行 + 直角（自定义 .mod-table 等带类表格不动它的配色，只压圆角） */
body:not(:has(.parallax-header)) .md-typeset table:not([class]) {
    border-radius: 0 !important;
    border: 1px solid var(--ef2-line);
    box-shadow: none !important;
}
body:not(:has(.parallax-header)) .md-typeset table:not([class]) th {
    background: var(--ef2-ink) !important;
    color: #fff !important;
    font-family: var(--ef2-hei);
    font-weight: 700;
    border-radius: 0 !important;
}
body:not(:has(.parallax-header)) .md-typeset .mod-table-container,
body:not(:has(.parallax-header)) .md-typeset .mod-table { border-radius: 0 !important; }
/* 代码块 / 行内码 / 常用小徽章：直角化（颜色不动） */
body:not(:has(.parallax-header)) .md-typeset pre > code,
body:not(:has(.parallax-header)) .md-typeset .highlight,
body:not(:has(.parallax-header)) .md-typeset .highlight > pre { border-radius: 0 !important; }
body:not(:has(.parallax-header)) .md-typeset code { border-radius: 2px; }
body:not(:has(.parallax-header)) .md-typeset .file-name,
body:not(:has(.parallax-header)) .md-typeset .type-badge,
body:not(:has(.parallax-header)) .md-typeset .new-tag,
body:not(:has(.parallax-header)) .md-typeset .danger-badge,
body:not(:has(.parallax-header)) .md-typeset .cmd-code,
body:not(:has(.parallax-header)) .md-typeset .path-code,
body:not(:has(.parallax-header)) .md-typeset .code-tag,
body:not(:has(.parallax-header)) .md-typeset .copy-ip { border-radius: 2px !important; }
/* grid cards：直角 + 悬停描边跳分区色 */
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li {
    border-radius: 0 !important;
    border: 1px solid var(--ef2-line);
}
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li:hover {
    border-color: var(--efc-accent, var(--ef2-punch));
    box-shadow: 0 10px 26px color-mix(in srgb, var(--efc-accent, var(--ef2-punch)) 12%, transparent);
}
/* 正文常见「行内样式圆角卡」：只点名常见卡片圆角值压平，
   刻意不碰 50% / 999px（那些是有意的圆点、圆头像、胶囊） */
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 10px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius:10px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 12px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius:12px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 14px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius:14px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 15px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 16px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius:16px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 18px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius:18px"],
body:not(:has(.parallax-header)) .md-typeset [style*="border-radius: 20px"] {
    border-radius: 2px !important;
}
/* 图片：微圆角即可（灯箱缩略语义），阴影保留原样 */
body:not(:has(.parallax-header)) .md-typeset img { border-radius: 2px; }
/* blockquote：墨线引用 */
body:not(:has(.parallax-header)) .md-typeset blockquote {
    border-left: 3px solid var(--ef2-ink);
    color: var(--ef2-gray);
}
/* .md-button：切角钮（白底墨线 / primary 反白墨底） */
body:not(:has(.parallax-header)) .md-typeset .md-button {
    border-radius: 0 !important;
    border: 1px solid var(--ef2-ink) !important;
    font-family: var(--ef2-hei);
    font-weight: 700;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 9px), calc(100% - 9px) 100%, 0 100%);
}
body:not(:has(.parallax-header)) .md-typeset .md-button--primary {
    background: var(--ef2-ink) !important;
    color: #fff !important;
}

/* =========================================================================
   6. 分隔线：主页同款 // ▽ // 铭牌
   ========================================================================= */
body:not(:has(.parallax-header)) .md-typeset hr {
    border: none; height: 1px; margin: 34px 0; position: relative; overflow: visible;
    background: linear-gradient(90deg, transparent, var(--ef2-line) 10%, var(--ef2-line) 90%, transparent);
}
body:not(:has(.parallax-header)) .md-typeset hr::before {
    content: '// ▽ //';
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    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;
}

/* =========================================================================
   7. 页尾来源铭牌（md-source-file）：白纸分区色 tick
   ========================================================================= */
body:not(: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(--efc-accent, var(--ef2-punch));
    padding: 8px 16px; margin-top: 10px;
    font-family: var(--ef2-mono);
    border-radius: 0;
}

/* =========================================================================
   8. 移动端收敛
   ========================================================================= */
@media screen and (max-width: 720px) {
    body:not(:has(.parallax-header)) .md-content .md-typeset h1 { font-size: 1.6em; }
    /* 长标题的闭括号会孤行断裂（评审 V②）：窄屏干脆收起括号，名牌语言让位可读性 */
    body:not(:has(.parallax-header)) .md-content .md-typeset h1::before,
    body:not(:has(.parallax-header)) .md-content .md-typeset h1::after {
        content: none;
    }
    /* 窄屏收编号的刻度尾，防止把标题挤换行 */
    body:not(:has(.parallax-header)) .md-content .md-typeset h2 { padding-right: 52px; }
    body:not(:has(.parallax-header)) .md-content .md-typeset h2::after {
        content: '// ' counter(efc2h2, decimal-leading-zero);
    }
    body:not(:has(.parallax-header)) .tcy-page-dates { font-size: .72em; display: flex; }
    /* 值域长串（日期+时区）在窄屏于盒内自然折行，chip 不跟着掉行；
       keep-all 防 CJK 任意断行切出「日」字孤儿（评审 V⑤） */
    body:not(:has(.parallax-header)) .tcy-page-dates-row > span:not([class]) {
        flex: 1 1 0;
        white-space: normal;
        word-break: keep-all;
    }
}
/* 等距铭牌预留地：短页别让铭牌压住末行/来源铭牌（评审 V④/L3；铭牌 ≤720px 隐藏故只管桌面） */
@media screen and (min-width: 721px) {
    body:not(:has(.parallax-header)) .md-content__inner { padding-bottom: calc(3rem + 84px); }
}

/* =========================================================================
   9. 手电筒（暗色）兜底：本文件晚于 extra.css，同特异性会压掉它的暗色规则，
      故必须在此重申（侧栏暗色在 §3.6，组件暗色在 §11 尾）
   ========================================================================= */
body.flashlight-mode:not(:has(.parallax-header)) .md-content__inner {
    background-color: rgba(26, 28, 33, 0.92);
    background-image: none;
    border-color: rgba(255, 255, 255, 0.08);
    border-top-color: var(--efc-accent, var(--ef2-punch));
    color: #999;
}
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h1,
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h2,
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h3 { color: #eceff1; }
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h1 { border-bottom-color: rgba(255, 255, 255, 0.3); }
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h1::before,
body.flashlight-mode:not(:has(.parallax-header)) .md-content .md-typeset h1::after {
    color: rgba(255, 255, 255, 0.38);
}
body.flashlight-mode:not(:has(.parallax-header)) .tcy-page-dates {
    background: none;
    border: none;
}
body.flashlight-mode:not(:has(.parallax-header)) .tcy-page-dates-ico {
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-right: none;
}
body.flashlight-mode:not(:has(.parallax-header)) .tcy-page-dates-row > span:not([class]) {
    background: #16181c;
    border-color: rgba(255, 255, 255, 0.14);
    color: #b0bec5;
}
body.flashlight-mode:not(:has(.parallax-header)) .md-typeset hr::before { background: #16181c; color: #78909c; }
body.flashlight-mode:not(:has(.parallax-header)) .md-source-file { background: #16181c; border-color: rgba(255, 255, 255, 0.12); border-left-color: var(--efc-accent, var(--ef2-punch)); }

/* =========================================================================
   10. 手绘纹理库使用类（等高线/网点晕/准星角标/数据牌）—— 通用件，主页也可用
   ========================================================================= */
.efc-contour {
    background-image: var(--efc-tex-contour);
    background-repeat: repeat;
}
/* 网点晕：45° 渐隐蒙版的半调角雾。占用 ::before —— 别贴在 ::before 已被占用的
   组件上；那种情况在容器里塞一个空 <i class="efc-halftone-fade"> 即可。 */
.efc-halftone-fade { position: relative; }
.efc-halftone-fade::before {
    content: '';
    position: absolute; inset: 0;
    pointer-events: none;
    background-image: var(--efc-tex-halftone);
    background-size: 7px 7px;
    -webkit-mask-image: linear-gradient(45deg, #000 0%, transparent 55%);
    mask-image: linear-gradient(45deg, #000 0%, transparent 55%);
}
/* 准星角标：四角 [ ] 括号（8 条渐变细线画在一个 ::after 罩层上）。
   占用 ::after —— ef2-panel 的 ::after 已被粉 L 括号占用，给面板加角标时
   贴到面板的内层子容器上。一屏 ≤3 处。 */
.efc-reticle { position: relative; }
.efc-reticle::after {
    content: '';
    position: absolute;
    inset: var(--efc-ret-in, 6px);
    pointer-events: none;
    --c: var(--efc-ret-c, rgba(23, 25, 30, .38));
    background-image:
        linear-gradient(var(--c), var(--c)), linear-gradient(var(--c), var(--c)),
        linear-gradient(var(--c), var(--c)), linear-gradient(var(--c), var(--c)),
        linear-gradient(var(--c), var(--c)), linear-gradient(var(--c), var(--c)),
        linear-gradient(var(--c), var(--c)), linear-gradient(var(--c), var(--c));
    background-repeat: no-repeat;
    background-size:
        var(--efc-ret-len, 10px) var(--efc-ret-w, 1.5px), var(--efc-ret-w, 1.5px) var(--efc-ret-len, 10px),
        var(--efc-ret-len, 10px) var(--efc-ret-w, 1.5px), var(--efc-ret-w, 1.5px) var(--efc-ret-len, 10px),
        var(--efc-ret-len, 10px) var(--efc-ret-w, 1.5px), var(--efc-ret-w, 1.5px) var(--efc-ret-len, 10px),
        var(--efc-ret-len, 10px) var(--efc-ret-w, 1.5px), var(--efc-ret-w, 1.5px) var(--efc-ret-len, 10px);
    background-position:
        left top, left top,
        right top, right top,
        left bottom, left bottom,
        right bottom, right bottom;
}
/* 独立小 + 准星 */
.efc-plus {
    display: inline-block;
    width: 11px; height: 11px;
    --c: var(--efc-plus-c, rgba(23, 25, 30, .35));
    background-image:
        linear-gradient(var(--c), var(--c)),
        linear-gradient(var(--c), var(--c));
    background-repeat: no-repeat;
    background-size: 11px 1.5px, 1.5px 11px;
    background-position: center;
    pointer-events: none;
}
/* 「▽ 数据牌」：mono 微字 + 菱形点 + 渐隐短横 */
.efc-plate {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-family: var(--ef2-mono, ui-monospace, 'Fira Code', monospace);
    font-size: .58rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--ef2-gray, #7b8087);
    white-space: nowrap;
}
.efc-plate::before {
    content: '';
    width: 7px; height: 7px; flex: none;
    background: var(--ef2-punch, #ec407a);
    clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
}
.efc-plate--v::before {
    content: '▽';
    width: auto; height: auto;
    background: none;
    clip-path: none;
    color: var(--ef2-punch, #ec407a);
    font-size: .64rem;
    line-height: 1;
}
.efc-plate::after {
    content: '';
    flex: none;
    width: 34px; height: 1px;
    background: linear-gradient(90deg, currentColor, transparent);
    opacity: .5;
}
body.flashlight-mode .efc-contour { background-image: none; }
body.flashlight-mode .efc-halftone-fade::before { display: none; }
body.flashlight-mode .efc-reticle::after { --c: rgba(255, 255, 255, .22); }
body.flashlight-mode .efc-plus { --c: rgba(255, 255, 255, .22); }

/* =========================================================================
   11. 正文组件细节打磨（纯增量装饰层；配色红线：全走 currentColor / 分区色）
   ========================================================================= */
/* --- 11.1 admonition / details：类型缩写章 + 右上 mono 水印词 --- */
body:not(:has(.parallax-header)) .md-typeset .admonition,
body:not(:has(.parallax-header)) .md-typeset details {
    position: relative;
}
body:not(:has(.parallax-header)) .md-typeset .admonition::after,
body:not(:has(.parallax-header)) .md-typeset details::after {
    position: absolute; top: 5px; right: 10px;
    font-family: var(--ef2-mono);
    font-size: .6rem; font-weight: 800; letter-spacing: .22em;
    color: currentColor; opacity: .15;
    pointer-events: none; user-select: none;
}
body:not(:has(.parallax-header)) .md-typeset .admonition > .admonition-title::after {
    font-family: var(--ef2-mono);
    font-size: .6rem; font-weight: 700; letter-spacing: .08em;
    border: 1px solid currentColor;
    padding: 1px 6px; margin-left: 9px;
    vertical-align: 1px; opacity: .5;
    pointer-events: none;
}
body:not(:has(.parallax-header)) .md-typeset .admonition.note > .admonition-title::after { content: '[ N. ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.note::after,
body:not(:has(.parallax-header)) .md-typeset details.note::after { content: 'NOTE'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.info > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.todo > .admonition-title::after { content: '[ i ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.info::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.todo::after,
body:not(:has(.parallax-header)) .md-typeset details.info::after,
body:not(:has(.parallax-header)) .md-typeset details.todo::after { content: 'INFO'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.tip > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.hint > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.important > .admonition-title::after { content: '[ T. ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.tip::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.hint::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.important::after,
body:not(:has(.parallax-header)) .md-typeset details.tip::after,
body:not(:has(.parallax-header)) .md-typeset details.hint::after,
body:not(:has(.parallax-header)) .md-typeset details.important::after { content: 'TIP'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.warning > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.caution > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.attention > .admonition-title::after { content: '[ W! ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.warning::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.caution::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.attention::after,
body:not(:has(.parallax-header)) .md-typeset details.warning::after,
body:not(:has(.parallax-header)) .md-typeset details.caution::after,
body:not(:has(.parallax-header)) .md-typeset details.attention::after { content: 'WARNING'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.danger > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.error > .admonition-title::after { content: '[ D!! ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.danger::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.error::after,
body:not(:has(.parallax-header)) .md-typeset details.danger::after,
body:not(:has(.parallax-header)) .md-typeset details.error::after { content: 'DANGER'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.example > .admonition-title::after { content: '[ EX ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.example::after,
body:not(:has(.parallax-header)) .md-typeset details.example::after { content: 'EXAMPLE'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.quote > .admonition-title::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.cite > .admonition-title::after { content: '[ Q ]'; }
body:not(:has(.parallax-header)) .md-typeset .admonition.quote::after,
body:not(:has(.parallax-header)) .md-typeset .admonition.cite::after,
body:not(:has(.parallax-header)) .md-typeset details.quote::after,
body:not(:has(.parallax-header)) .md-typeset details.cite::after { content: 'QUOTE'; }

/* --- 11.2 原生表格：表头 CMYK 分段微条 + 行悬停淡分区色 --- */
body:not(:has(.parallax-header)) .md-typeset .md-typeset__table {
    position: relative;
}
body:not(:has(.parallax-header)) .md-typeset .md-typeset__table::before {
    content: '';
    position: absolute; top: 0; left: 0; z-index: 1;
    width: 48px; height: 3px;
    background: linear-gradient(90deg,
        var(--efc-cmyk-m) 0 14px,  transparent 14px 16px,
        var(--efc-cmyk-y) 16px 30px, transparent 30px 32px,
        var(--efc-cmyk-c) 32px 46px, transparent 46px 48px);
    pointer-events: none;
}
body:not(:has(.parallax-header)) .md-typeset table:not([class]) tbody tr:hover {
    background: color-mix(in srgb, var(--efc-accent, var(--ef2-punch)) 8%, transparent) !important;
    transition: background .15s ease;
}

/* --- 11.3 代码块：墨色 mono 微标头「CODE // ▽」+ 右侧三小方点 --- */
body:not(:has(.parallax-header)) .md-typeset .highlight {
    position: relative;
}
body:not(:has(.parallax-header)) .md-typeset .highlight::before {
    content: 'CODE // ▽';
    display: block;
    font-family: var(--ef2-mono);
    font-size: .56rem; font-weight: 700; letter-spacing: .18em;
    color: rgba(255, 255, 255, .85);
    padding: 4px 44px 4px 12px;
    background-color: var(--ef2-ink);
    background-image: repeating-linear-gradient(90deg, rgba(255, 255, 255, .55) 0 5px, transparent 5px 9px);
    background-repeat: no-repeat;
    background-position: right 44px center;
    background-size: 23px 5px;
    pointer-events: none; user-select: none;
}
body:not(:has(.parallax-header)) .md-typeset .highlight > pre,
body:not(:has(.parallax-header)) .md-typeset .highlight > table {
    margin-top: 0 !important;
}
body:not(:has(.parallax-header)) .md-typeset .highlight:has(> .filename)::before {
    content: none;
}

/* --- 11.4 grid cards / .md-button：悬停角标 L 括号 --- */
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li {
    position: relative;
}
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li::before,
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li::after {
    content: '';
    position: absolute; width: 10px; height: 10px; z-index: 1;
    border: 0 solid var(--efc-accent, var(--ef2-punch));
    opacity: 0;
    transition: opacity .2s ease, transform .2s ease;
    pointer-events: none;
}
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li::before {
    top: 6px; left: 6px;
    border-top-width: 2px; border-left-width: 2px;
    transform: translate(3px, 3px);
}
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li::after {
    bottom: 6px; right: 6px;
    border-bottom-width: 2px; border-right-width: 2px;
    transform: translate(-3px, -3px);
}
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li:hover::before,
body:not(:has(.parallax-header)) .md-typeset .grid.cards > ul > li:hover::after {
    opacity: 1;
    transform: translate(0, 0);
}
body:not(:has(.parallax-header)) .md-typeset .md-button {
    position: relative;
}
body:not(:has(.parallax-header)) .md-typeset .md-button::before {
    content: '';
    position: absolute; top: 4px; left: 4px; width: 8px; height: 8px;
    border-top: 2px solid var(--efc-accent, var(--ef2-punch));
    border-left: 2px solid var(--efc-accent, var(--ef2-punch));
    opacity: 0;
    transition: opacity .2s ease;
    pointer-events: none;
}
body:not(:has(.parallax-header)) .md-typeset .md-button:hover::before {
    opacity: 1;
}

/* --- 11.5 页尾来源铭牌：EOF 收尾行 --- */
body:not(:has(.parallax-header)) .md-source-file::after {
    content: 'EOF // ▽';
    font-family: var(--ef2-mono);
    font-size: .56rem; font-weight: 700; letter-spacing: .24em;
    color: var(--ef2-gray); opacity: .7;
    margin-top: 4px;
    pointer-events: none;
}

/* --- 11.6 窄屏：水印词让位（缩写章 inline 很小，保留） --- */
@media screen and (max-width: 720px) {
    body:not(:has(.parallax-header)) .md-typeset .admonition::after,
    body:not(:has(.parallax-header)) .md-typeset details::after {
        display: none !important;
    }
}

/* --- 11.7 手电筒兜底 --- */
body.flashlight-mode:not(:has(.parallax-header)) .md-typeset .highlight::before {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14);
}
body.flashlight-mode:not(:has(.parallax-header)) .md-source-file::after {
    color: #78909c;
}

/* =========================================================================
   12. 开启动画系统（内容页编排 + 滚动揭示；主页揭示变体在 ef2-core.css）
   动画的信息功能 = 告诉眼睛「这块东西是什么材质、从哪来」：
   铭牌→盖章 / 名牌→擦开 / 导轨→通电 / 提示框→下扫 / 表格→划开 / 代码→打字。
   克制红线：≤450ms；只动 transform/opacity/clip-path；错峰 ≤80ms/项；
   同屏载入恰好 3 种（h1+铭牌+侧栏），滚动组件由 IO 逐个触发不叠加。
   ========================================================================= */
/* --- 12a. h1 名牌：整块左→右擦开（kicker/括号/底线都在盒内，一刀全带出） --- */
body:not(:has(.parallax-header)) .md-content .md-typeset h1 {
    animation: efcWipe .38s var(--efc-ease-mech) backwards;
}
@keyframes efcWipe {
    from { clip-path: inset(0 100% 0 0); opacity: .4; }
    to   { clip-path: inset(0 0 0 0);    opacity: 1; }
}
/* --- 12b. 日期铭牌：盖章（微放大落定；origin 钉在左上像盖印） --- */
body:not(:has(.parallax-header)) .tcy-page-dates {
    transform-origin: 18px 8px;
    animation: efcStamp .3s var(--efc-ease-snap) .12s backwards;
}
@keyframes efcStamp {
    from { transform: scale(1.06); opacity: 0; }
    60%  { opacity: 1; }
    to   { transform: scale(1);    opacity: 1; }
}
/* --- 12c. 侧栏条目：沿导轨自上而下依次通电（55ms 错峰，第 8 项后封顶） --- */
@media screen and (min-width: 76.25em) {
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item {
        animation: efcRailIn .26s var(--efc-ease-out) backwards;
        animation-delay: calc(.05s + .48s); /* 兜底：nth 未命中的深层项走封顶延迟 */
    }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(1) { animation-delay: .05s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(2) { animation-delay: .105s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(3) { animation-delay: .16s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(4) { animation-delay: .215s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(5) { animation-delay: .27s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(6) { animation-delay: .325s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(7) { animation-delay: .38s; }
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item:nth-child(8) { animation-delay: .435s; }
}
@keyframes efcRailIn {
    from { transform: translateX(-7px); opacity: 0; }
    to   { transform: none;             opacity: 1; }
}

/* --- 12d. 滚动揭示（配 ef2-hud.js 的 initContentReveal 模块） ---
   机制：JS 给候选组件加 .efc-will（待命），进入视口加 .efc-in（起播）。
   .efc-will 自带 2.4s 后自动现身的兜底——IO 永远没触发内容也绝不会永久隐身。 */
.efc-will:not(.efc-in) {
    animation: efcPre 2.4s step-end both;
}
@keyframes efcPre {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* 提示框（div.admonition，绝不含 details）：自上而下扫描通电 */
body:not(:has(.parallax-header)) div.admonition.efc-in {
    animation: efcSweepDown .34s var(--efc-ease-mech) backwards;
}
@keyframes efcSweepDown {
    from { clip-path: inset(0 0 100% 0); opacity: .5; }
    to   { clip-path: inset(0 0 0 0);    opacity: 1; }
}
/* 表格：数据划开 + 顶线扫过 */
body:not(:has(.parallax-header)) .md-typeset__scrollwrap.efc-in {
    position: relative;
    animation: efcWipe .34s var(--efc-ease-mech) backwards;
}
body:not(:has(.parallax-header)) .md-typeset__scrollwrap.efc-in::before {
    content: '';
    position: absolute; left: 0; top: 0; height: 2px; width: 100%;
    background: var(--efc-accent, var(--ef2-punch));
    transform-origin: left center;
    animation: efcRule .42s var(--efc-ease-mech) .08s backwards;
    pointer-events: none;
}
@keyframes efcRule {
    0%   { transform: scaleX(0); opacity: 1; }
    72%  { transform: scaleX(1); opacity: 1; }
    100% { transform: scaleX(1); opacity: 0; }
}
/* 代码块：块体轻浮入 + 微标头打字（steps 逐字擦出） */
body:not(:has(.parallax-header)) div.highlight.efc-in {
    animation: efcRise .26s var(--efc-ease-out) backwards;
}
body:not(:has(.parallax-header)) div.highlight.efc-in::before {
    animation: efcType .38s steps(12, end) .1s backwards;
}
@keyframes efcType {
    from { clip-path: inset(0 100% 0 0); }
    to   { clip-path: inset(0 0 0 0); }
}
@keyframes efcRise {
    from { transform: translateY(10px); opacity: 0; }
    to   { transform: none;             opacity: 1; }
}
/* h2 小节头：分区色 tick 通电竖亮 + 本体轻显 */
body:not(:has(.parallax-header)) .md-content .md-typeset h2.efc-in {
    animation: efcFade .24s var(--efc-ease-out) backwards;
}
body:not(:has(.parallax-header)) .md-content .md-typeset h2.efc-in::before {
    transform-origin: center top;
    animation: efcTickOn .24s var(--efc-ease-mech) .06s backwards;
}
@keyframes efcTickOn {
    from { transform: scaleY(0); }
    to   { transform: scaleY(1); }
}
@keyframes efcFade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
/* grid cards：子卡 60ms 错峰浮入（≤6 张，之后同批出场） */
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li {
    animation: efcRise .26s var(--efc-ease-out) backwards;
    animation-delay: .3s;
}
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(1) { animation-delay: 0s; }
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(2) { animation-delay: .06s; }
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(3) { animation-delay: .12s; }
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(4) { animation-delay: .18s; }
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(5) { animation-delay: .24s; }
body:not(:has(.parallax-header)) .grid.cards.efc-in > ul > li:nth-child(6) { animation-delay: .3s; }

/* --- 12d+. 无缝换页轻量路径（html.efc-swap 由 ef2-hud.js 在第二次 document$ 起挂上）：
   instant navigation 换文章时载入编排（h1 擦开/铭牌盖章/侧栏通电）全部瞬时，
   只留 extra.css 的 .md-content 0.28s 淡入——保住"无缝切换"的手感；
   硬加载（首次进站/F5）不带该类，完整开场照演。 --- */
html.efc-swap body:not(:has(.parallax-header)) .md-content .md-typeset h1,
html.efc-swap body:not(:has(.parallax-header)) .tcy-page-dates,
html.efc-swap body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item {
    animation: none !important;
}

/* --- 12e. 减弱动态：一律瞬时（JS 侧 initContentReveal 也整个不启用，双保险） --- */
@media (prefers-reduced-motion: reduce) {
    body:not(:has(.parallax-header)) .md-content .md-typeset h1,
    body:not(:has(.parallax-header)) .md-content .md-typeset h1::before,
    body:not(:has(.parallax-header)) .md-content .md-typeset h1::after,
    body:not(:has(.parallax-header)) .tcy-page-dates,
    body:not(:has(.parallax-header)) .md-sidebar--primary .md-nav--primary .md-nav__item,
    .efc-will, .efc-will:not(.efc-in),
    div.admonition.efc-in,
    .md-typeset__scrollwrap.efc-in,
    .md-typeset__scrollwrap.efc-in::before,
    div.highlight.efc-in,
    div.highlight.efc-in::before,
    .md-typeset h2.efc-in,
    .md-typeset h2.efc-in::before,
    .grid.cards.efc-in > ul > li {
        animation: none !important;
    }
}

/* =========================================================================
   13. 等距机械铭牌（手绘 SVG，由 ef2-hud.js 注入 .md-content__inner 尾部）
   ========================================================================= */
.md-content__inner .ef2-iso-plate {
    position: absolute; right: 34px; bottom: 30px;   /* 让开右下角 L 括号(10px) */
    width: 150px; height: auto;
    opacity: .6;
    pointer-events: none; user-select: none;
}
@media screen and (max-width: 720px) {
    .md-content__inner .ef2-iso-plate { display: none; }  /* 小屏别抢地 */
}
body.flashlight-mode .md-content__inner .ef2-iso-plate { opacity: .25; }
