/*
 * DigiForensics Wiki documentation shell
 *
 * This is the sole layout and navigation layer for Wiki. It deliberately uses
 * the public theme tokens so light and dark mode share one document tree.
 */

body[data-theme-area="frontend"].route-wiki-show .dfb-page,
body[data-theme-area="frontend"].route-wiki-index .dfb-page,
body[data-theme-area="frontend"].route-wiki-space .dfb-page,
body[data-theme-area="frontend"].route-wiki-node .dfb-page,
body[data-theme-area="frontend"].route-wiki-history .dfb-page {
    min-height: 100vh;
    background: var(--surface, #fff);
}

body[data-theme-area="frontend"].route-wiki-show .dfb-container,
body[data-theme-area="frontend"].route-wiki-index .dfb-container,
body[data-theme-area="frontend"].route-wiki-space .dfb-container,
body[data-theme-area="frontend"].route-wiki-node .dfb-container,
body[data-theme-area="frontend"].route-wiki-history .dfb-container {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
}

.wiki-docs-app {
    display: grid;
    grid-template-columns: 280px minmax(0, 1fr);
    align-items: start;
    gap: 40px;
    max-width: 1600px;
    min-height: calc(100vh - var(--df-header-total, 0px));
    margin: 0 auto;
    padding: 18px 28px 64px;
    color: var(--ink, #172033);
}

/* Sidebar: a quiet structural rail, never a standalone card. */
.wiki-docs-sidebar {
    position: sticky;
    top: calc(var(--df-header-total, 0px) + 10px);
    z-index: 2;
    display: flex;
    flex-direction: column;
    height: calc(100dvh - var(--df-header-total, 0px) - 20px);
    min-height: 0;
    padding: 4px 16px 12px 0;
    overflow: hidden;
    background: var(--surface, #fff);
    border-right: 1px solid color-mix(in srgb, var(--border, #dbe3ee) 70%, transparent);
}

.wiki-docs-brand {
    padding: 5px 8px 13px;
}

.wiki-docs-brand a {
    color: var(--ink, #172033);
    font-size: 15px;
    font-weight: 650;
    letter-spacing: -.01em;
    text-decoration: none;
}

.wiki-docs-search {
    position: relative;
    margin: 0 0 12px;
    padding: 0 4px;
}

.wiki-docs-search input {
    width: 100%;
    min-height: 35px;
    padding: 0 42px 0 10px;
    border: 1px solid color-mix(in srgb, var(--border, #dbe3ee) 82%, transparent);
    border-radius: 5px;
    background: color-mix(in srgb, var(--surface, #fff) 94%, var(--muted, #64748b) 6%);
    color: var(--ink, #172033);
    font: inherit;
    font-size: 12px;
    outline: 0;
}

.wiki-docs-search input::placeholder { color: var(--muted, #64748b); }

.wiki-docs-search input:focus {
    border-color: color-mix(in srgb, var(--link, #2563eb) 60%, var(--border, #dbe3ee));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--link, #2563eb) 12%, transparent);
}

.wiki-docs-search kbd {
    position: absolute;
    top: 10px;
    right: 11px;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--muted, #64748b);
    font: 10px/1 ui-monospace, SFMono-Regular, Menlo, monospace;
}

.wiki-docs-navigation {
    flex: 1;
    min-height: 0;
    padding: 1px 4px 12px;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--muted, #64748b) 38%, transparent) transparent;
}

.wiki-docs-tree,
.wiki-docs-document-leaves {
    margin: 0;
    padding: 0;
    list-style: none;
}

.wiki-docs-tree li { margin: 0; }
.wiki-docs-tree > li + li { margin-top: 4px; }
.wiki-docs-tree details { margin: 0; }

.wiki-docs-tree summary {
    display: flex;
    align-items: center;
    min-height: 32px;
    padding: 0 6px;
    border-radius: 5px;
    color: var(--ink, #172033);
    cursor: pointer;
    list-style: none;
    outline: 0;
}

.wiki-docs-tree summary::-webkit-details-marker { display: none; }

.wiki-docs-tree-caret {
    position: relative;
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    margin-right: 2px;
    opacity: .65;
}

.wiki-docs-tree-caret::before {
    position: absolute;
    top: 4px;
    left: 3px;
    width: 5px;
    height: 5px;
    border-top: 0;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    content: "";
    transform: rotate(-45deg);
    transition: transform 150ms cubic-bezier(.23, 1, .32, 1);
}

.wiki-docs-tree details[open] > summary .wiki-docs-tree-caret::before {
    transform: rotate(45deg) translate(-1px, -1px);
}

.wiki-docs-tree-label {
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: break-word;
    color: inherit;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.4;
}

.wiki-docs-tree > li > details > summary .wiki-docs-tree-label,
.wiki-docs-tree > li.is-document-collection > details > summary .wiki-docs-tree-label {
    font-size: 14px;
    font-weight: 620;
}

.wiki-docs-tree .wiki-docs-tree {
    margin: 1px 0 3px;
    padding-left: 14px;
}

.wiki-docs-tree .wiki-docs-tree .wiki-docs-tree {
    padding-left: 14px;
}

.wiki-docs-document-leaves {
    margin: 1px 0 4px;
    padding-left: 28px;
}

.wiki-docs-document-leaves a,
.wiki-docs-nav-home {
    display: block;
    min-width: 0;
    min-height: 31px;
    padding: 7px 8px;
    border-radius: 5px;
    color: var(--muted, #64748b);
    font-size: 13px;
    font-weight: 400;
    line-height: 1.4;
    overflow-wrap: anywhere;
    word-break: break-word;
    text-decoration: none;
}

.wiki-docs-tree li.is-active-path > details > summary .wiki-docs-tree-label {
    color: var(--ink, #172033);
    font-weight: 620;
}

.wiki-docs-document-leaves li.is-current > a {
    color: var(--link, #2563eb);
    background: color-mix(in srgb, var(--link, #2563eb) 9%, transparent);
    border-radius: 5px;
    box-shadow: none;
    font-weight: 600;
}

.wiki-docs-tree summary:focus-visible,
.wiki-docs-document-leaves a:focus-visible,
.wiki-docs-sidebar-foot a:focus-visible,
.wiki-docs-brand a:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--link, #2563eb) 65%, transparent);
    outline-offset: 2px;
}

@media (hover: hover) and (pointer: fine) {
    .wiki-docs-tree summary:hover,
    .wiki-docs-document-leaves a:hover {
        background: color-mix(in srgb, var(--ink, #172033) 4%, transparent);
        color: var(--ink, #172033);
    }

    .wiki-docs-document-leaves li.is-current > a:hover {
        color: var(--link, #2563eb);
        background: color-mix(in srgb, var(--link, #2563eb) 11%, transparent);
    }
}

.wiki-docs-sidebar-foot {
    display: flex;
    gap: 14px;
    padding: 10px 8px 0;
    border-top: 1px solid color-mix(in srgb, var(--border, #dbe3ee) 70%, transparent);
}

.wiki-docs-sidebar-foot a {
    color: var(--muted, #64748b);
    font-size: 13px;
    text-decoration: none;
}

.wiki-docs-sidebar-foot a:hover { color: var(--link, #2563eb); }

/* Reading shell. */
.wiki-docs-reading { min-width: 0; }
.wiki-docs-hub { max-width: 1180px; min-width: 0; padding: 2px 10px 56px 0; }
.wiki-docs-reading-grid { display: grid; grid-template-columns: minmax(0, 840px) 220px; justify-content: start; gap: 44px; max-width: 1160px; padding: 24px 18px 76px 0; }
.wiki-docs-document { min-width: 0; }
.wiki-docs-breadcrumb { display: flex; flex-wrap: wrap; align-items: baseline; gap: 7px; min-height: 18px; margin: 0 0 26px; color: var(--muted, #64748b); font-size: 12px; line-height: 18px; }
.wiki-docs-breadcrumb a { color: var(--muted, #64748b); text-decoration: none; }
.wiki-docs-breadcrumb a:hover { color: var(--link, #2563eb); }
.wiki-docs-breadcrumb strong { color: var(--ink, #172033); font-weight: 650; }
.wiki-docs-page-head { margin-bottom: 32px; }
.wiki-docs-page-head h1 { margin: 0 0 12px; color: var(--ink, #172033); font-size: clamp(2.125rem, 2.35vw, 2.5rem); line-height: 1.16; letter-spacing: -.035em; }
.wiki-docs-page-head > p { max-width: 62ch; margin: 0; color: var(--muted, #64748b); font-size: 16px; line-height: 1.7; }
.wiki-docs-page-meta { display: flex; flex-wrap: wrap; gap: 0; margin-top: 15px; color: var(--muted, #64748b); font-size: 13px; }
.wiki-docs-page-meta span + span::before, .wiki-docs-page-meta span + a::before { padding: 0 9px; content: "·"; }
.wiki-docs-page-meta a { color: var(--link, #2563eb); text-decoration: none; }
.wiki-docs-page-meta a:hover { text-decoration: underline; }
.wiki-docs-prose { max-width: 840px; color: var(--ink-2, var(--ink, #172033)); font-size: 16.5px; line-height: 1.8; }

/* 未登录登录墙：前 1/4 正文 + Medium 风格登录/注册提示 */
.wiki-docs-prose-teaser { position: relative; }

.wiki-login-wall-fade {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 150px;
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0), var(--surface, #fff) 92%);
    pointer-events: none;
}

.wiki-login-wall {
    margin: 4px 0 28px;
    padding: 34px 28px;
    text-align: center;
    background: color-mix(in srgb, var(--surface, #fff) 92%, var(--accent, #2563eb) 8%);
    border: 1px solid var(--border, #e4e4e7);
    border-radius: 14px;
}

.wiki-login-wall-inner { max-width: 540px; margin: 0 auto; }

.wiki-login-wall-title {
    margin: 0 0 10px;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: var(--ink, #172033);
}

.wiki-login-wall-sub {
    margin: 0 auto 22px;
    font-size: 15px;
    line-height: 1.65;
    color: color-mix(in srgb, var(--ink, #172033) 72%, transparent);
}

.wiki-login-wall-actions {
    display: flex;
    gap: 12px;
    justify-content: center;
    flex-wrap: wrap;
}

.wiki-login-wall-btn {
    min-width: 140px;
    padding: 11px 22px;
    font-size: 15px;
    font-weight: 600;
    border-radius: 10px;
}

.wiki-login-wall-note {
    margin: 18px 0 0;
    font-size: 12.5px;
    color: color-mix(in srgb, var(--ink, #172033) 55%, transparent);
}
.wiki-docs-prose h2 { margin: 44px 0 16px; padding: 1px 0 1px 12px; border: 0; border-left: 2px solid var(--link, #2563eb); font-size: 26px; line-height: 1.3; }
.wiki-docs-prose h3 { margin-top: 30px; font-size: 20px; }
.wiki-docs-prose :is(p, ul, ol, blockquote, pre, table) { margin-bottom: 17px; }
.wiki-docs-prose pre { border-radius: 8px; font-size: 13.5px; }
.wiki-docs-prose :not(pre) > code { border: 1px solid color-mix(in srgb, var(--link, #2563eb) 18%, var(--border, #dbe3ee)); border-radius: 4px; background: color-mix(in srgb, var(--link, #2563eb) 6%, transparent); }

/* Current-page table of contents. */
.wiki-docs-toc { position: sticky; top: calc(var(--df-header-total, 0px) + 22px); align-self: start; max-height: calc(100vh - var(--df-header-total, 0px) - 36px); padding-top: 4px; overflow: auto; scrollbar-width: thin; }
.wiki-docs-toc > p { margin: 0 0 10px; padding-left: 10px; color: var(--muted, #64748b); font-size: 12px; font-weight: 650; }
.wiki-docs-toc .content-outline { display: grid; gap: 1px; padding-left: 9px; border-left: 1px solid var(--border, #dbe3ee); }
.wiki-docs-toc [data-outline-link] { display: block; margin-left: -10px; padding: 5px 0 5px 10px; border-left: 1px solid transparent; color: var(--muted, #64748b); font-size: 13px; line-height: 1.35; text-decoration: none; }
.wiki-docs-toc [data-outline-link]:hover { color: var(--ink, #172033); }
.wiki-docs-toc [data-outline-link].is-active { border-left-color: var(--link, #2563eb); color: var(--link, #2563eb); font-weight: 650; }

.wiki-docs-pagination { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin-top: 46px; border-top: 1px solid var(--border, #dbe3ee); }
.wiki-docs-pagination > a { min-height: 0; padding: 16px 0; color: var(--ink, #172033); text-decoration: none; }
.wiki-docs-pagination > a + a { padding-left: 24px; border-left: 1px solid var(--border, #dbe3ee); }
.wiki-docs-pagination .is-next { text-align: right; }
.wiki-docs-pagination span { display: block; color: var(--muted, #64748b); font-size: 11px; }
.wiki-docs-pagination strong { display: block; margin-top: 6px; color: var(--link, #2563eb); font-size: 14px; }
.wiki-docs-related { margin-top: 36px; padding-top: 22px; border-top: 1px solid var(--border, #dbe3ee); }
.wiki-docs-related h2 { margin: 0 0 12px; font-size: 16px; }
.wiki-docs-related > div { display: block; }
.wiki-docs-related a { display: grid; grid-template-columns: 92px minmax(0, 1fr) auto; align-items: center; padding: 13px 0; border-bottom: 1px solid var(--border, #dbe3ee); color: var(--ink, #172033); text-decoration: none; }
.wiki-docs-related a::after { color: var(--muted, #64748b); content: "→"; }
.wiki-docs-related span { margin: 0; color: var(--muted, #64748b); font-size: 12px; }
.wiki-docs-related strong { font-size: 14px; }

.wiki-docs-hub .breadcrumbs { margin: 0 0 22px; }
.wiki-library-head { display: block; padding: 0 0 28px; }
.wiki-library-head h1 { font-size: clamp(2rem, 2.2vw, 2.45rem); }
.wiki-library-head p { margin-top: 7px; font-size: 15px; }
.wiki-library-search { max-width: 680px; margin-top: 22px; }
.wiki-library-search > div { max-width: 680px; }
.wiki-space-directory, .wiki-node-directory { margin-top: 30px; }
.wiki-space-directory > header, .wiki-node-directory > header { padding-bottom: 12px; }
.wiki-space-directory > div { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 28px; }
.wiki-space-directory article { padding: 15px 0; }
.wiki-space-directory article:nth-child(n) { padding-right: 0; padding-left: 0; }
.wiki-space-directory strong { font-size: 15px; }
.wiki-space-directory span { font-size: 13px; }

.wiki-history-list { border-top: 1px solid var(--border, #dbe3ee); }
.wiki-history-row { display: flex; justify-content: space-between; gap: 24px; padding: 19px 0; border-bottom: 1px solid var(--border, #dbe3ee); }
.wiki-history-meta, .wiki-history-row > span { color: var(--muted, #64748b); font-size: 12px; }
.wiki-history-row h2 { margin: 7px 0 5px; font-size: 16px; }
.wiki-history-row p { margin: 0; color: var(--muted, #64748b); font-size: 14px; line-height: 1.6; }
.wiki-history-pagination { margin-top: 24px; }

.wiki-docs-menu-toggle, .wiki-docs-backdrop, .wiki-docs-toc-toggle { display: none; }

@media (max-width: 1400px) and (min-width: 1081px) {
    .wiki-docs-app { gap: 32px; padding-inline: 22px; }
    .wiki-docs-reading-grid { grid-template-columns: minmax(0, 1fr) 210px; gap: 36px; padding-right: 0; }
}

@media (max-width: 1080px) {
    .wiki-docs-app { gap: 28px; }
    .wiki-docs-reading-grid { grid-template-columns: minmax(0, 760px); padding-right: 12px; }
    .wiki-docs-toc { display: none; }
    .wiki-space-directory > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .wiki-docs-app { display: block; padding: 0; }
    .wiki-docs-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 30; width: min(86vw, 320px); height: auto; padding: 22px 14px 16px; transform: translateX(-104%); transition: transform 220ms cubic-bezier(.23, 1, .32, 1); box-shadow: 16px 0 40px rgba(15, 23, 42, .18); }
    .wiki-docs-sidebar.is-open { transform: translateX(0); }
    .wiki-docs-menu-toggle { position: fixed; top: calc(var(--df-header-total, 0px) + 12px); left: 14px; z-index: 31; display: block; min-height: 32px; padding: 7px 10px; border: 1px solid var(--border, #dbe3ee); border-radius: 6px; background: var(--surface, #fff); color: var(--ink, #172033); font: 600 12px/1.2 inherit; }
    .wiki-docs-backdrop[hidden] { display: none; }
    .wiki-docs-backdrop:not([hidden]) { position: fixed; inset: 0; z-index: 29; display: block; background: rgba(15, 23, 42, .28); }
    .wiki-docs-reading-grid, .wiki-docs-hub { padding: 64px 18px 48px; }
    .wiki-docs-reading-grid { display: block; }
    .wiki-docs-toc-toggle { display: inline-flex; align-items: center; min-height: 32px; margin: 0 0 22px; padding: 0 9px; border: 1px solid var(--border, #dbe3ee); border-radius: 6px; background: var(--surface, #fff); color: var(--ink, #172033); font: 600 12px/1 inherit; }
    .wiki-docs-toc.is-open { position: fixed; inset: calc(var(--df-header-total, 0px) + 8px) 12px auto; z-index: 1200; display: block; max-height: calc(100vh - var(--df-header-total, 0px) - 24px); margin: 0; padding: 16px; overflow: auto; border: 1px solid var(--border, #dbe3ee); border-radius: 8px; background: var(--surface, #fff); box-shadow: 0 18px 42px rgba(15, 23, 42, .18); }
    .wiki-docs-page-head h1 { font-size: 32px; }
    .wiki-docs-prose { font-size: 16px; line-height: 1.78; }
    .wiki-docs-prose h2 { font-size: 23px; }
    .wiki-space-directory > div, .wiki-node-directory > div, .wiki-node-resources > div { grid-template-columns: 1fr; }
    .wiki-space-directory article:nth-child(n) { padding-right: 0; padding-left: 0; }
    .wiki-docs-pagination, .wiki-docs-related a { grid-template-columns: 1fr; }
    .wiki-docs-pagination > a + a { padding-left: 0; border-left: 0; }
    .wiki-docs-pagination .is-next { text-align: left; }
    .wiki-docs-related a { gap: 5px; }
    .wiki-history-row { display: block; }
    .wiki-history-row > span { display: block; margin-top: 9px; }
}

@media (prefers-reduced-motion: reduce) {
    .wiki-docs-sidebar, .wiki-docs-tree-caret::before { transition: none; }
}

/* 修复：正文标题蓝条被渲染两次。
   根因：标题同时命中主题 .prose/.df-md-reading 的 h2::before（3px 渐变长条+辉光）
   与 wiki 自身的 .wiki-docs-prose h2 { border-left:2px }（短蓝条），
   两根垂直蓝条叠加。保留 wiki 的短蓝条，关闭主题注入的 ::before 长条。 */
.wiki-docs-prose h2::before,
.wiki-docs-prose h3::before {
    display: none !important;
    content: none !important;
}

/* 动态加载占位：正文经 JS 分片注入前显示 */
.wiki-docs-prose-loading {
    min-height: 240px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--muted, #64748b);
    font-size: 14px;
    border: 1px dashed color-mix(in srgb, var(--border, #dbe3ee) 80%, transparent);
    border-radius: 8px;
    background: color-mix(in srgb, var(--surface, #fff) 96%, var(--muted, #64748b) 4%);
}
.wiki-docs-loading-copy { margin: 0; color: var(--muted, #64748b); font-size: 14px; }
.wiki-docs-outline-loading { display: block; padding: 5px 0 5px 10px; color: var(--muted, #64748b); font-size: 13px; line-height: 1.5; }
