/* ============================================================
   style/wiki/wiki.css —— PFIC Wiki
   左侧目录贴住左边（返回主站固定在底部），右边 80% 的区域居中排正文。
   正文用衬线体（见 style/typography.css 的 Noto Serif SC），没有卡片边框。
   ============================================================ */

.wiki-body {
    background: #fff;
    -webkit-font-smoothing: antialiased;
}

/* 顶部阅读进度条 */
.wiki-progress {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 60;
    height: 2px;
    pointer-events: none;
}

.wiki-progress > i {
    display: block;
    height: 100%;
    background: var(--pf-accent);
    transform: scaleX(0);
    transform-origin: 0 50%;
    transition: transform 120ms linear;
}

/* ---------------- 顶栏 ---------------- */
.wiki-top {
    position: sticky;
    top: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    gap: 16px;
    height: 58px;
    padding: 0 20px;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: saturate(180%) blur(12px);
    border-bottom: 1px solid #EDEEF1;
}

.wiki-brand {
    display: flex;
    align-items: center;
    gap: 9px;
    flex: none;
}

.wiki-brand-logo {
    width: 24px;
    height: 24px;
    display: block;
    flex: none;
}

.wiki-brand-sub {
    font-size: 15px;
    font-weight: 600;
    color: var(--pf-text);
}

/* ---------------- 板块切换条（维基 / 新闻 / 更新日志） ----------------
   三个等宽格子，选中项用一块白色胶囊垫底：
   切换到别的板块是整页跳转，所以真正的"切换动画"交给下面的跨页过渡
   （View Transitions）—— 胶囊和正文块会在两个页面之间平滑接续。 */
.wiki-tabs {
    display: flex;
    align-items: stretch;
    flex: none;
    gap: 2px;
    height: 34px;
    padding: 3px;
    background: #F2F4F7;
    border-radius: 10px;
    view-transition-name: wiki-tabs;
}

.wiki-tab {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 66px;
    padding: 0 12px;
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1;
    color: var(--pf-text-sub);
    text-decoration: none;
    border-radius: 7px;
    transition: color 180ms ease-out;
    -webkit-tap-highlight-color: transparent;
}

.wiki-tab > span { position: relative; z-index: 1; }

/* 胶囊：未选中时整体缩到 0，选中时展开，形成"从中间长出来"的感觉 */
.wiki-tab::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 0;
    background: #fff;
    border-radius: 7px;
    box-shadow: 0 1px 2px rgba(22, 24, 29, .08), 0 2px 8px rgba(22, 24, 29, .06);
    opacity: 0;
    transform: scale(.82);
    transition: opacity 180ms ease-out, transform 220ms cubic-bezier(.34, 1.4, .64, 1);
}

.wiki-tab:hover { color: var(--pf-text); }
.wiki-tab:hover::before { opacity: .55; transform: scale(1); }

.wiki-tab.is-active {
    color: var(--pf-accent);
}

.wiki-tab.is-active::before {
    opacity: 1;
    transform: scale(1);
}

/* 键盘可见焦点：只在用 Tab 走位时出现，不干扰鼠标点击 */
.wiki-tab:focus-visible {
    outline: 2px solid var(--pf-accent-line);
    outline-offset: 1px;
}

/* 切换板块是整页导航，用 View Transitions 做跨页动画：
   支持的浏览器（Chrome/Edge 126+）会在旧页淡出的同时把新页淡入并轻微上移；
   顶栏胶囊带同名 view-transition-name，因此在两个页面之间原地接续，不会闪一下。
   不支持的浏览器就退化成普通跳转，不影响任何功能。 */
@view-transition {
    navigation: auto;
}

::view-transition-old(root) {
    animation: wiki-vt-out 170ms cubic-bezier(.4, 0, 1, 1) both;
}

::view-transition-new(root) {
    animation: wiki-vt-in 260ms cubic-bezier(.2, .8, .3, 1) both;
}

/* 胶囊自己一组：跨页时从旧位置滑到新位置，这是"选中态变化"的主要观感 */
::view-transition-group(wiki-tabs) {
    animation-duration: 300ms;
    animation-timing-function: cubic-bezier(.2, .8, .3, 1);
}

@keyframes wiki-vt-out {
    to { opacity: 0; transform: translateY(-6px); }
}

@keyframes wiki-vt-in {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: none; }
}

/* 减少动效偏好：不做位移，只留极短淡入淡出 */
@media (prefers-reduced-motion: reduce) {
    ::view-transition-old(root),
    ::view-transition-new(root),
    ::view-transition-group(wiki-tabs) { animation-duration: 1ms; }
    .wiki-tab, .wiki-tab::before, .wiki-feed-link { transition: none; }
    .wiki-search-overlay,
    .wiki-search-overlay .wiki-search-modal,
    .wiki-search-overlay.is-closing,
    .wiki-search-overlay.is-closing .wiki-search-modal { animation-duration: 1ms; }
}

/* 新闻 / 更新日志没有左侧目录，菜单按钮和「编辑此页」都不该出现 */
/* 新闻 / 更新日志现在也有左侧目录，所以窄屏的目录按钮要保留 */

/* 新闻 / 更新日志没有分类层级，侧栏是一串按时间倒序的条目：
   标题一行（过长省略）+ 月-日小字。比维基的树更紧凑。 */
.wiki-side-head {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 8px 10px;
    margin-bottom: 2px;
    border-bottom: 1px solid #F1F2F5;
}

.wiki-side-count {
    font-size: 12px;
    color: var(--pf-text-mute);
}

.wiki-side-rss {
    margin-left: auto;
    padding: 2px 8px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--pf-text-mute);
    text-decoration: none;
    background: #F5F6F8;
    border-radius: 999px;
    transition: color 160ms ease-out, background-color 160ms ease-out;
}

.wiki-side-rss:hover {
    color: #B45309;
    background: #FDF3E7;
}

.wiki-nav-feed .wiki-link {
    display: flex;
    align-items: baseline;
    gap: 8px;
    padding: 6px 8px;
}

.wiki-feed-nav-title {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.wiki-feed-nav-date {
    flex: none;
    font-size: 11.5px;
    color: #A8AEB8;
    font-variant-numeric: tabular-nums;
}

.wiki-nav-feed .wiki-link.is-active .wiki-feed-nav-date { color: var(--pf-accent-line); }

/* ---------------- 新闻 / 更新日志：列表页 ---------------- */
.wiki-body-feed {
    background: #fff;
}

/* 列表页现在和维基文章页同构（左侧目录 + .wiki-main-inner），
   只有标题行和条目本身需要单独排版。 */

.wiki-feed-head {
    display: flex;
    align-items: baseline;
    gap: 12px;
    padding-bottom: 16px;
    border-bottom: 1px solid #EDEEF1;
}

.wiki-feed-h1 {
    margin: 0;
    font-size: 30px;
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--pf-text);
}

.wiki-feed-count {
    margin: 0;
    font-size: 13px;
    color: var(--pf-text-mute);
}

/* RSS 入口只在左侧目录顶部放一个（.wiki-side-rss），
   正文标题行不再重复摆一个，否则同一屏出现两个一样的东西。 */

.wiki-feed {
    margin: 0;
    padding: 0;
    list-style: none;
}

.wiki-feed-item + .wiki-feed-item {
    border-top: 1px solid #F1F2F5;
}

.wiki-feed-link {
    display: block;
    padding: 20px 12px 20px 14px;
    margin: 0 -12px 0 -14px;
    border-radius: 10px;
    text-decoration: none;
    transition: background-color 160ms ease-out, transform 160ms ease-out;
}

.wiki-feed-link:hover {
    background: #F7F9FC;
}

.wiki-feed-link:active { transform: scale(.995); }

.wiki-feed-title {
    margin: 0 0 7px;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.5;
    color: var(--pf-text);
    transition: color 160ms ease-out;
}

.wiki-feed-link:hover .wiki-feed-title { color: var(--pf-accent); }

.wiki-feed-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: 12.5px;
    color: var(--pf-text-mute);
}

.wiki-feed-dot { color: #C9CED6; }
.wiki-feed-edited { color: #9AA1AC; }

.wiki-feed-empty {
    padding: 72px 0;
    text-align: center;
}

.wiki-feed-empty-title {
    margin: 0 0 8px;
    font-size: 16px;
    font-weight: 600;
    color: var(--pf-text-sub);
}

.wiki-feed-empty-hint {
    margin: 0;
    font-size: 13.5px;
    color: var(--pf-text-mute);
}

/* 新闻 / 日志文章页的元信息：作者与两个时间 */
.wiki-body-feed .wiki-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
}

.wiki-meta-author { color: var(--pf-text-sub); font-weight: 600; }
.wiki-meta-dot { color: #C9CED6; }
.wiki-meta-edited { color: #9AA1AC; }

@media (max-width: 1000px) {
    .wiki-feed-h1 { font-size: 25px; }
    .wiki-feed-title { font-size: 17px; }
}

/* 目录按钮：窄屏才出现（见文末窄屏媒体查询），桌面用左侧固定目录 */
.wiki-menu-btn {
    display: none;
    flex: none;
    width: 34px;
    height: 34px;
    padding: 0;
    background: var(--pf-surface);
    border: 1px solid var(--pf-border);
    border-radius: 8px;
    cursor: pointer;
}

.wiki-menu-btn span {
    display: block;
    width: 15px;
    height: 1.5px;
    margin: 3px auto;
    background: var(--pf-text-sub);
    border-radius: 2px;
}

/* 搜索框：右上角 */
.wiki-search {
    position: relative;
    margin-left: auto;
    width: 280px;
    flex: none;
}

.wiki-search-input {
    width: 100%;
    height: 34px;
    padding: 0 34px 0 12px;
    font: inherit;
    font-size: 13.5px;
    color: var(--pf-text);
    background: #F5F6F8;
    border: 1px solid transparent;
    border-radius: 9px;
    outline: none;
    transition: background-color 160ms ease-out, border-color 160ms ease-out, box-shadow 160ms ease-out;
}

.wiki-search-input::placeholder { color: var(--pf-text-mute); }
.wiki-search-input:hover { background: #EFF1F4; }

.wiki-search-input:focus {
    background: #fff;
    border-color: var(--pf-accent-line);
    box-shadow: 0 0 0 3px var(--pf-accent-soft);
}

.wiki-search-go {
    position: absolute;
    top: 0;
    right: 0;
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    padding: 0;
    color: var(--pf-text-mute);
    background: none;
    border: 0;
    border-radius: 0 9px 9px 0;
    cursor: pointer;
    transition: color 160ms ease-out;
}

.wiki-search-go:hover { color: var(--pf-accent); }

/* ---------------- 搜索结果：屏幕中间弹出 ---------------- */
.wiki-search-overlay {
    position: fixed;
    inset: 0;
    z-index: 70;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 11vh 20px 40px;
    background: rgba(22, 24, 29, .40);
    backdrop-filter: blur(2px);
    animation: wiki-fade 160ms ease-out;
}

/* 关闭：遮罩淡出、面板同时缩小，和打开时的 wiki-fade / wiki-drop 对称。
   140ms 比打开略快，收比放利落。 */
.wiki-search-overlay.is-closing {
    animation: wiki-fade-out 140ms ease-in both;
    pointer-events: none;
}

.wiki-search-overlay.is-closing .wiki-search-modal {
    animation: wiki-drop-out 140ms ease-in both;
}

@keyframes wiki-fade-out {
    from { opacity: 1; }
    to { opacity: 0; }
}

@keyframes wiki-drop-out {
    from { opacity: 1; transform: none; }
    to { opacity: 0; transform: translateY(-6px) scale(.98); }
}

/* 自己兜一层：不依赖 pf.css 的 [hidden]，样式文件没加载全也不会挂在页面上关不掉 */
.wiki-search-overlay[hidden] { display: none !important; }

.wiki-search-modal {
    display: flex;
    flex-direction: column;
    width: min(680px, 100%);
    max-height: 72vh;
    overflow: hidden;
    background: var(--pf-surface);
    border-radius: 14px;
    box-shadow: 0 24px 64px rgba(22, 24, 29, .30);
    animation: wiki-drop 180ms ease-out;
}

.wiki-search-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--pf-border-soft);
}

.wiki-search-title {
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .06em;
    color: var(--pf-text-mute);
}

.wiki-search-close {
    width: 28px;
    height: 28px;
    padding: 0;
    font-size: 19px;
    line-height: 1;
    color: var(--pf-text-mute);
    background: none;
    border: 0;
    border-radius: 7px;
    cursor: pointer;
    transition: background-color 140ms ease-out, color 140ms ease-out;
}

.wiki-search-close:hover { color: var(--pf-text); background: var(--pf-surface-sub); }

.wiki-search-panel { padding: 8px; overflow: auto; }

.wiki-search-none {
    padding: 22px 14px;
    text-align: center;
    font-size: 13.5px;
    color: var(--pf-text-mute);
}

.wiki-hit {
    display: block;
    padding: 10px 12px;
    border-radius: 9px;
    transition: background-color 140ms ease-out;
}

.wiki-hit:hover { background: var(--pf-surface-sub); }

/* 搜索结果按板块分组：维基 → 新闻 → 更新日志，三段依次排下来，不交错 */
.wiki-hit-group {
    display: flex;
    align-items: baseline;
    gap: 7px;
    padding: 12px 12px 5px;
}

.wiki-hit-group:first-child { padding-top: 4px; }

.wiki-hit-group + .wiki-hit-group {
    margin-top: 4px;
    border-top: 1px solid var(--pf-border-soft, #EFF1F4);
}

.wiki-hit-group-name {
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--pf-text-sub);
}

.wiki-hit-group-count {
    font-size: 11.5px;
    color: var(--pf-text-mute);
}

.wiki-hit-title {
    display: block;
    margin-bottom: 3px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--pf-text);
}

.wiki-hit-snippet {
    display: block;
    font-size: 12.5px;
    line-height: 1.65;
    color: var(--pf-text-mute);
    word-break: break-word;
}

/* 命中高亮：不能给左右 padding —— 中文词相邻时每层 padding 都会被看见，
   叠加起来就是「荧光笔文字左右有大间隙」。只留底色和圆角。 */
.wiki-hit mark,
.wiki-content mark {
    padding: 0;
    color: inherit;
    background: #FDF0A6;
    border-radius: 2px;
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
}

/* ---------------- 布局 ---------------- */
.wiki-layout {
    display: flex;
    align-items: stretch;
    min-height: calc(100vh - 58px);
}

/* 目录：整列固定在左侧（不用 sticky，页面滚到底也不会跟着动） */
.wiki-side {
    position: fixed;
    top: 58px;
    left: 0;
    bottom: 0;
    display: flex;
    flex-direction: column;
    width: 272px;
    overflow: hidden;
    background: #fff;
    border-right: 1px solid #EDEEF1;
}

.wiki-nav {
    flex: 1 1 auto;
    min-height: 0;
    padding: 14px 10px 12px 14px;
    overflow-y: auto;
    scrollbar-width: thin;
    font-size: 14px;
}

.wiki-nav-empty {
    margin: 0;
    padding: 10px;
    font-size: 13px;
    color: var(--pf-text-mute);
}

.wiki-cat { margin-bottom: 0; }

.wiki-cat-head {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 6px 7px;
    font: inherit;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    color: #9AA1AC;
    text-align: left;
    background: none;
    border: 0;
    border-radius: 7px;
    cursor: pointer;
    transition: color 140ms ease-out, background-color 140ms ease-out;
}

.wiki-cat-head:hover {
    color: var(--pf-text-sub);
    background: #F6F7F9;
}

.wiki-cat-arrow {
    flex: none;
    width: 0;
    height: 0;
    border-left: 4px solid currentColor;
    border-top: 3.5px solid transparent;
    border-bottom: 3.5px solid transparent;
    transform: rotate(90deg);
    transform-origin: 25% 50%;
    transition: transform 180ms ease-out;
}

.wiki-cat.is-collapsed > .wiki-cat-head .wiki-cat-arrow { transform: rotate(0deg); }

.wiki-cat-body {
    display: grid;
    grid-template-rows: 1fr;
    transition: grid-template-rows 200ms ease-out;
}

.wiki-cat.is-collapsed > .wiki-cat-body { grid-template-rows: 0fr; }

.wiki-cat-inner {
    overflow: hidden;
    margin-left: 5px;
    padding-left: 8px;
    border-left: 1px solid #F1F2F5;
}

.wiki-link {
    display: block;
    margin: 0;
    padding: 5px 8px;
    font-size: 13.5px;
    line-height: 1.45;
    color: #55606D;
    border-radius: 7px;
    transition: background-color 140ms ease-out, color 140ms ease-out;
}

.wiki-link:hover {
    color: var(--pf-text);
    background: #F6F7F9;
}

.wiki-link.is-active {
    font-weight: 600;
    color: var(--pf-accent);
    background: #EDF3FA;
}

.wiki-side-foot {
    flex: none;
    padding: 11px 12px 13px 14px;
    border-top: 1px solid #F1F2F5;
    background: #fff;
}

.wiki-side-foot a {
    font-size: 13px;
    color: var(--pf-text-mute);
    transition: color 140ms ease-out;
}

.wiki-side-foot a:hover { color: var(--pf-accent); }

/* 遮罩常驻 DOM，靠 opacity 淡入淡出（display 切换没法做关闭动画） */
.wiki-overlay {
    position: fixed;
    inset: 0;
    z-index: 45;
    background: rgba(22, 24, 29, .38);
    opacity: 0;
    pointer-events: none;
    transition: opacity 240ms ease-out;
}

/* ---------------- 正文：右边 80% 居中，一张白纸 ---------------- */
.wiki-main {
    flex: 1 1 auto;
    min-width: 0;
    margin-left: 272px;   /* 给固定的目录列让出位置 */
}

.wiki-main-inner {
    width: 80%;
    max-width: 940px;
    margin: 0 auto;
    padding: 46px 0 56px;
    /* 窄屏会把宽度改成 100% 并加左右内边距，没有这行就会横向溢出 44px */
    box-sizing: border-box;
}

.wiki-crumbs {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 0 0 20px;
    font-size: 13px;
    color: var(--pf-text-mute);
}

.wiki-crumbs a { color: var(--pf-text-sub); }
.wiki-crumbs a:hover { color: var(--pf-accent); }
.wiki-crumb-sep { color: var(--pf-border-strong); }
.wiki-crumb-current { color: var(--pf-text-sub); }

.wiki-article {
    padding: 0;
    background: none;
    border: 0;
    border-radius: 0;
}

.wiki-title {
    margin: 0 0 12px;
    font-family: "Noto Serif SC", Georgia, "Songti SC", serif;
    font-size: 34px;
    line-height: 1.32;
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--pf-text);
}

.wiki-meta {
    margin: 0 0 36px;
    padding-bottom: 20px;
    font-size: 13px;
    color: var(--pf-text-mute);
    border-bottom: 1px solid #F1F2F5;
}

/* ---------------- 正文排版（衬线） ---------------- */
.wiki-content {
    font-family: "Noto Serif SC", Georgia, "Songti SC", serif;
    font-size: 16.5px;
    line-height: 1.92;
    color: #22262C;
    word-wrap: break-word;
}

.wiki-content > *:first-child { margin-top: 0; }
.wiki-content > *:last-child { margin-bottom: 0; }

.wiki-content h1,
.wiki-content h2,
.wiki-content h3,
.wiki-content h4 {
    margin: 2em 0 .7em;
    font-family: "Noto Serif SC", Georgia, "Songti SC", serif;
    line-height: 1.45;
    font-weight: 700;
    color: var(--pf-text);
    scroll-margin-top: 80px;
}

.wiki-content h1 { font-size: 26px; }
.wiki-content h2 {
    font-size: 22px;
    padding-bottom: .35em;
    border-bottom: 1px solid #F1F2F5;
}
.wiki-content h3 { font-size: 18.5px; }
.wiki-content h4 { font-size: 17px; }

.wiki-content p { margin: 0 0 1.1em; }

.wiki-content a {
    color: var(--pf-accent);
    text-decoration: none;
    border-bottom: 1px solid rgba(27, 79, 138, .26);
    transition: border-color 140ms ease-out, color 140ms ease-out;
}

.wiki-content a:hover {
    color: var(--pf-accent-hover);
    border-bottom-color: currentColor;
}

.wiki-content ul,
.wiki-content ol { margin: 0 0 1.1em; padding-left: 1.6em; }
.wiki-content li { margin: .35em 0; }
.wiki-content li > ul,
.wiki-content li > ol { margin: .35em 0; }

.wiki-content img {
    max-width: 100%;
    height: auto;
    margin: 10px 0;
    border-radius: 8px;
    border: 1px solid #F1F2F5;
    background: var(--pf-surface-sub);
}

.wiki-content hr {
    margin: 2.6em 0;
    border: 0;
    border-top: 1px solid #EDEEF1;
}

.wiki-content blockquote {
    margin: 0 0 1.15em;
    padding: 2px 0 2px 16px;
    color: #5B6470;
    border-left: 3px solid #DDE1E7;
}

.wiki-content blockquote > :last-child { margin-bottom: 0; }

/* 行内代码 */
.wiki-content code {
    padding: .16em .42em;
    font-family: var(--pf-mono);
    font-size: .86em;
    color: #9A3412;
    background: #F7F3EE;
    border: 1px solid #EDE5DB;
    border-radius: 5px;
}

/* 代码块 */
.wiki-content pre {
    margin: 0 0 1.25em;
    padding: 15px 17px;
    overflow: auto;
    font-family: var(--pf-mono);
    font-size: 13px;
    line-height: 1.7;
    background: #F8F9FB;
    border: 1px solid #EDEEF1;
    border-radius: 10px;
}

.wiki-content pre code {
    padding: 0;
    font-size: inherit;
    color: var(--pf-text);
    background: none;
    border: 0;
    border-radius: 0;
}

/* 原文块 %%% ... %%% */
.wiki-content pre.wiki-md-text {
    color: var(--pf-text-sub);
    background: #FBFAF7;
    border-style: dashed;
}

/* 表格 */
.wiki-content table {
    width: 100%;
    margin: 0 0 1.25em;
    border-collapse: collapse;
    font-size: 15px;
}

.wiki-content th,
.wiki-content td {
    padding: 9px 13px;
    text-align: left;
    border: 1px solid #E7E9ED;
}

.wiki-content th {
    font-weight: 600;
    background: #F8F9FB;
}

.wiki-content tbody tr:nth-child(even) td { background: #FCFCFD; }

/* 任务列表（marked 的 checkbox 会被清洗掉，这里用纯 CSS 方块） */
.wiki-content li.wiki-task {
    position: relative;
    list-style: none;
    margin-left: -1.3em;
    padding-left: 1.55em;
}

.wiki-content li.wiki-task::before {
    content: '';
    position: absolute;
    left: 0;
    top: .58em;
    width: .9em;
    height: .9em;
    background: #fff;
    border: 1.5px solid #C4CAD2;
    border-radius: 4px;
}

.wiki-content li.wiki-task.is-done::before {
    background: var(--pf-accent);
    border-color: var(--pf-accent);
}

.wiki-content li.wiki-task.is-done::after {
    content: '';
    position: absolute;
    left: .24em;
    top: .75em;
    width: .32em;
    height: .17em;
    border-left: 1.8px solid #fff;
    border-bottom: 1.8px solid #fff;
    transform: rotate(-45deg);
}

/* ---------------- 折叠代码块 ---------------- */
.wiki-md-fold {
    margin: 0 0 1.25em;
    overflow: hidden;
    background: var(--pf-surface);
    border: 1px solid #EDEEF1;
    border-radius: 10px;
}

.wiki-md-fold-head {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 14px;
    font-family: var(--pf-font);
    font-size: 12.5px;
    color: var(--pf-text-sub);
    background: #F8F9FB;
    border-bottom: 1px solid #EDEEF1;
    cursor: pointer;
    user-select: none;
    transition: background-color 140ms ease-out;
}

.wiki-md-fold-head:hover { background: #F1F3F6; }

.wiki-md-fold-arrow {
    flex: none;
    width: 0;
    height: 0;
    border-left: 4.5px solid var(--pf-text-mute);
    border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
    transform: rotate(90deg);
    transform-origin: 25% 50%;
    transition: transform 200ms ease-out;
}

.wiki-md-fold:not(.is-expanded) .wiki-md-fold-arrow { transform: rotate(0); }

.wiki-md-fold-lang {
    flex: 1 1 auto;
    font-family: var(--pf-mono);
    font-size: 12px;
    letter-spacing: .02em;
    color: var(--pf-text-mute);
    text-transform: lowercase;
}

.wiki-md-fold-copy {
    padding: 2px 9px;
    font: inherit;
    font-size: 12px;
    font-weight: 600;
    color: var(--pf-text-sub);
    background: var(--pf-surface);
    border: 1px solid var(--pf-border);
    border-radius: 6px;
    cursor: pointer;
    transition: color 140ms ease-out, border-color 140ms ease-out;
}

.wiki-md-fold-copy:hover { color: var(--pf-accent); border-color: var(--pf-accent-line); }

.wiki-md-fold-body {
    position: relative;
    max-height: 168px;
    overflow: hidden;
    transition: max-height 320ms cubic-bezier(.4, 0, .2, 1);
}

.wiki-md-fold-body::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 46px;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #fff);
    pointer-events: none;
    opacity: 1;
    transition: opacity 200ms ease-out;
}

.wiki-md-fold.is-expanded .wiki-md-fold-body { max-height: none; }
.wiki-md-fold.is-expanded .wiki-md-fold-body::after { opacity: 0; }

.wiki-md-fold-body pre {
    margin: 0;
    padding: 13px 16px;
    border: 0;
    border-radius: 0;
    background: #FAFBFC;
}

/* ---------------- 自由 HTML 文章：正文装在一个有边界的框里 ---------------- */
.wiki-raw {
    width: 100%;
}

.wiki-raw-frame {
    display: block;
    width: 100%;
    min-height: 320px;
    border: 0;
    background: #fff;
}

/* ---------------- 上下篇 ---------------- */
.wiki-pager {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin: 40px 0 0;
    font-family: var(--pf-font);
}

.wiki-pager-link {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding: 14px 18px;
    background: #F8F9FB;
    border: 1px solid transparent;
    border-radius: 12px;
    transition: background-color 160ms ease-out, border-color 160ms ease-out, transform 160ms ease-out;
}

.wiki-pager-link.is-next { grid-column: 2; text-align: right; }
.wiki-pager-link.is-empty { background: none; border: 0; }

.wiki-pager-link:hover:not(.is-empty) {
    background: #fff;
    border-color: #DDE1E7;
    transform: translateY(-2px);
}

.wiki-pager-dir {
    font-size: 12px;
    color: var(--pf-text-mute);
}

.wiki-pager-title {
    font-size: 14.5px;
    font-weight: 600;
    color: var(--pf-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------------- 页脚 ---------------- */
/* 统一页脚由 shell.css 的 .pf-footer 负责（Wiki 里是 fixed 右下角） */
.wiki-foot {
    display: none;
}

.wiki-foot p { margin: 0; }

/* ---------------- 右下角「编辑此页」 ---------------- */
.wiki-edit-fab {
    position: fixed;
    right: 30px;
    bottom: 34px;
    z-index: 45;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    height: 38px;
    padding: 0 16px;
    font-size: 13.5px;
    font-weight: 600;
    color: var(--pf-text-sub);
    background: rgba(255, 255, 255, .96);
    border: 1px solid #E2E5EA;
    border-radius: 10px;
    box-shadow: 0 4px 14px rgba(22, 24, 29, .08);
    backdrop-filter: blur(6px);
    transition: color 160ms ease-out, border-color 160ms ease-out, transform 160ms ease-out, box-shadow 160ms ease-out;
}

.wiki-edit-fab:hover {
    color: var(--pf-accent);
    border-color: var(--pf-accent-line);
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(22, 24, 29, .12);
}

.wiki-edit-fab:active { transform: translateY(0) scale(.98); }

/* 同上：没权限时是 hidden，不能靠外部的 [hidden] 规则（可能被旧缓存吃掉） */
.wiki-edit-fab[hidden] { display: none !important; }

/* 正文里的搜索命中 */
.wiki-search-hit {
    padding: 0 1px;
    background: #FDF0A6;
    border-radius: 2px;
    animation: wiki-hit-pulse 1.6s ease-out 1;
}

/* 当前停在这一处：只用常驻描边防"跳过去却看不出是哪句" */
.wiki-search-hit-first { outline: 2px solid rgba(253, 224, 71, .6); }

@keyframes wiki-hit-pulse {
    0% { background: #FFE066; }
    100% { background: #FDF0A6; }
}

@keyframes wiki-drop {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: none; }
}

@keyframes wiki-fade {
    from { opacity: 0; }
    to { opacity: 1; }
}

.wiki-render-error { color: var(--pf-danger); }

/* ---------------- 后台「预览」标签页：只有正文，没有侧边栏 ---------------- */
body.pf-preview-body { background: #fff; }

.pf-preview {
    width: 80%;
    max-width: 940px;
    margin: 0 auto;
    padding: 46px 0 56px;
}

/* 自由 HTML 草稿预览：沙箱 iframe 撑满正文区 */
.pf-preview-raw {
    display: block;
    width: 100%;
    min-height: 480px;
    border: 0;
    background: #fff;
}

@media (max-width: 1000px) {
    .pf-preview { width: 100%; padding: 26px 22px 100px; }
}

/* ---------------- 窄屏 ---------------- */
@media (max-width: 1180px) {
    .wiki-main-inner { width: 86%; }
}

@media (max-width: 1000px) {
    /* 菜单按钮挪到左下角：手机上拇指够得着，也和其它页面的菜单位置一致。
       注意它只在「有左侧目录」的板块出现（新闻/日志没有目录，JS 会隐藏它），
       否则会浮在顶栏板块条上把文字挡住。 */
    .wiki-menu-btn {
        display: grid;
        place-items: center;
        position: fixed;
        left: 16px;
        bottom: 18px;
        z-index: 46;
        width: 52px;
        height: 52px;
        background: rgba(255, 255, 255, .96);
        border: 1px solid #E4E7EC;
        border-radius: 16px;
        box-shadow: 0 6px 20px rgba(22, 26, 33, .14);
        backdrop-filter: blur(10px);
    }

    /* 顶栏那一条位置留给标题，按钮已经浮起来了 */
    .wiki-menu-btn svg {
        width: 20px;
        height: 20px;
        color: #2B333D;
    }

    /* 窄屏改成抽屉：覆盖整个视口高度（top:0），从左侧滑入 */
    .wiki-side {
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: 50;
        width: 284px;
        height: auto;
        border-right: 1px solid #EDEEF1;
        transform: translateX(-102%);
        transition: transform 240ms cubic-bezier(.4, 0, .2, 1);
        box-shadow: 0 10px 40px rgba(22, 24, 29, .16);
    }

    .wiki-body.wiki-drawer-open .wiki-side { transform: none; }

    .wiki-body.wiki-drawer-open .wiki-overlay {
        opacity: 1;
        pointer-events: auto;
    }

    .wiki-main-inner { width: 100%; padding: 26px 22px 110px; }
    .wiki-main { margin-left: 0; }
    .wiki-title { font-size: 27px; }
    .wiki-content { font-size: 16px; }
    .wiki-pager { grid-template-columns: 1fr; }
    .wiki-pager-link.is-next { grid-column: 1; text-align: left; }
    .wiki-pager-link.is-empty { display: none; }

    /* 顶栏空间不够时，标题让位给板块条：品牌只留 logo */
    .wiki-top { gap: 12px; }
    .wiki-brand-sub { display: none; }
    .wiki-search { width: 200px; }
}

/* 窄屏顶栏排两行：第一行 logo + 板块条 + 搜索，第二行才是内容 */
@media (max-width: 760px) {
    .wiki-top {
        gap: 10px;
        height: auto;
        padding: 9px 14px;
        /* 两行排布：品牌 + 板块条 + 搜索挤一行，实在挤不下时板块条整体换行 */
        flex-wrap: wrap;
        row-gap: 9px;
    }

    .wiki-brand { order: 1; }

    /* 搜索框不要拉满整行：靠右收窄到 210px（窄机身时按 58vw 收），
       左边留白反而让「logo + 搜索」这一行更有呼吸感 */
    .wiki-search {
        order: 2;
        flex: 0 0 auto;
        width: min(210px, 58vw);
        min-width: 0;
    }
    .wiki-search-input { height: 32px; font-size: 13px; }
    .wiki-search-go { width: 32px; height: 32px; }

    /* 板块条独占第二行，三个 tab 平分整宽，点起来够大 */
    .wiki-tabs {
        order: 3;
        flex: 1 0 100%;
        height: 38px;
    }
    .wiki-tab {
        flex: 1 1 0;
        min-width: 0;
        padding: 0 6px;
        font-size: 14px;
    }
}
@media (max-width: 620px) {
    /* 顶栏已经是两行排布（见 760px 断点），这里只收内边距与字号 */
    .wiki-top { padding: 8px 12px; }

    /* 左下「目录」52px 与右下「编辑此页」38px 高度不同，靠垂直居中对齐：
       两者中心都落在距底 42px 这条基线上，视觉上才是一条水平线 */
    .wiki-menu-btn { bottom: 16px; }               /* 16 + 52/2 = 42 */
    .wiki-edit-fab { right: 16px; bottom: 23px; }  /* 23 + 38/2 = 42 */
}
