:root {
  --dw-primary: #0047bb;
  --dw-primary-hover: #3473dc;
  --dw-text-primary: #1f1f1f;
  --dw-text-secondary: #616161;
  --dw-text-muted: #9da1a7;
  --dw-background: #f7f7f7;
  --dw-surface: #ffffff;
  --dw-card: #fcfcfc;
  --dw-subtle: #f9fafb;
  --dw-border: #dcdde0;
  --dw-divider: #e2e4e6;
  --dw-hover: #eeeeee;
  --dw-radius-md: 10px;
  --dw-radius-lg: 12px;
  --dw-content-width: 1550px;
  --dw-shell-width: 1550px;
  --dw-shell-left: max(24px, calc((100% - var(--dw-shell-width)) / 2));
  --dw-sidebar-width: 241px;
  --dw-search-width: 240px;
  --dw-search-results-width: 576px;
  --dw-article-width: 891px;
  --dw-sidebar-divider-gap: 20px;
  --dw-navbar-height: 80px;
  --dw-search-top-offset: 30px;
  --dw-search-height: 40px;
  --nextra-navbar-height: var(--dw-navbar-height);
}

html {
  background: var(--dw-background);
  color-scheme: light;
  /* 设计稿采用固定宽度桌面布局，左边界计算必须基于可用内容宽度；
     这里兜底裁剪横向溢出，避免 100vw 或第三方生成节点把滚动条宽度也计入布局。 */
  overflow-x: clip;
}

body {
  color: var(--dw-text-primary);
  background: var(--dw-background);
  font-family: "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: 0;
  overflow-x: clip;
}

.nextra-navbar {
  height: var(--dw-navbar-height);
}

/* Nextra 的导航背景默认带透明模糊，这里按设计稿还原为浅色顶栏和底部分割线。 */
.nextra-navbar-blur {
  background: var(--dw-background);
  border-color: var(--dw-border);
  box-shadow: none;
}

.nextra-navbar nav {
  max-width: var(--dw-shell-width);
  height: var(--dw-navbar-height);
  margin-left: var(--dw-shell-left);
  margin-right: 0;
  padding-inline: 0;
}

.dw-docs-logo {
  width: 211px;
  height: 50px;
  display: block;
}

/* Nextra 仍会生成顶部导航项，需求要求顶部只保留 logo，因此仅隐藏导航项容器，不影响搜索组件复用。 */
.nextra-navbar nav > div[class*="x:gap-4"][class*="nextra-scrollbar"] {
  display: none;
}

/* 桌面端 Nextra 只在 Navbar 渲染搜索，真实入口会由 DocsSidebarSearch 挂入侧栏滚动容器；这里保留宿主节点，避免影响水合。 */
.nextra-navbar nav > div[class="x:max-md:hidden"] {
  display: block;
  flex: 0 0 auto;
  width: 0;
  height: 0;
  overflow: visible;
}

@media (min-width: 769px) {
  .nextra-navbar .dw-search-host {
    /* 桌面端真实搜索框会 Portal 到侧栏滚动容器，隐藏 Navbar 原始宿主，避免水合前短暂显示第二个入口。 */
    display: none;
  }
}

.dw-sidebar-search {
  width: var(--dw-search-width);
}

.dw-sidebar-search .nextra-search {
  width: 100%;
}

.dw-sidebar-search .nextra-search kbd {
  /* 侧栏宽度只有 240px，Nextra 默认快捷键提示容易被挤成误判字符；保留键盘快捷键能力，只隐藏视觉提示。 */
  display: none;
}

.nextra-navbar .nextra-hamburger {
  color: var(--dw-text-primary);
}

@media (min-width: 769px) {
  .nextra-navbar .nextra-hamburger {
    /* 桌面端左侧栏已常驻展示导航，Nextra 的移动端汉堡按钮不应再显示，否则会在右上角留下额外横线图标。 */
    display: none;
  }
}

.nextra-search input {
  height: 40px;
  width: 100%;
  border: 1px solid var(--dw-border);
  border-radius: var(--dw-radius-md) !important;
  background: var(--dw-surface) !important;
  color: var(--dw-text-primary) !important;
  font-size: 14px !important;
  line-height: 1.6;
}

.nextra-search input::placeholder {
  color: var(--dw-text-muted) !important;
}

.nextra-search input:focus {
  border-color: var(--dw-primary);
  box-shadow: none;
}

@media (min-width: 769px) {
  .nextra-search-results {
    /* 搜索结果仍由 Headless UI 按输入框定位；这里只约束宽高和颜色，避免侧栏滚动后弹层继续使用旧的固定坐标。 */
    width: min(var(--dw-search-results-width), calc(100% - 32px)) !important;
    max-width: min(var(--dw-search-results-width), calc(100% - 32px)) !important;
    max-height: min(calc(100vh - var(--dw-navbar-height) - 96px), 400px) !important;
    background: var(--dw-surface);
    color: var(--dw-text-primary);
  }
}

/* Nextra 主题的桌面主体容器只有生成类名可用，这里通过组合类名限定作用域。
   左右两侧复用同一个 shell 边距，--dw-shell-width 是宽屏下的有效视觉最大宽度。 */
body > div[class*="x:mx-auto"][class*="x:flex"][class*="x:max-w-(--nextra-content-width)"] {
  width: min(var(--dw-content-width), calc(100% - var(--dw-shell-left) - var(--dw-shell-left)));
  max-width: var(--dw-content-width);
  margin-left: var(--dw-shell-left);
  margin-right: var(--dw-shell-left);
}

.nextra-sidebar {
  width: var(--dw-sidebar-width) !important;
  margin-right: var(--dw-sidebar-divider-gap);
  background: var(--dw-background);
  border-right: 0;
}

/* 设计稿的侧栏分割线与菜单之间保留 19px 空白，Nextra 原生 border 贴在侧栏右侧。
   用伪元素把分割线移到空白之后，避免通过额外 DOM 或全局标签选择器破坏主题结构。 */
.nextra-sidebar::after {
  content: "";
  position: absolute;
  top: 0;
  right: calc(-1 * var(--dw-sidebar-divider-gap));
  width: 1px;
  height: 100%;
  background: var(--dw-divider);
}

.nextra-sidebar > div:first-child {
  /*
   * 搜索入口现在位于侧栏滚动容器内。滚动容器需要向右扩到分隔预留区，
   * 让浏览器滚动条落在菜单与正文之间的空隙里，而不是占用 240px 搜索/菜单内容宽度。
   */
  width: calc(var(--dw-sidebar-width) + var(--dw-sidebar-divider-gap));
  box-sizing: border-box;
  overflow-x: hidden;
  padding: var(--dw-search-top-offset) var(--dw-sidebar-divider-gap) 24px 0 !important;
}

.dw-sidebar-search-slot {
  /* 这个节点由 DocsSidebarSearch 注入，用 30px 保持搜索框和首个菜单项的视觉间距，随侧栏内容一起滚动。 */
  width: var(--dw-search-width);
  margin-bottom: 30px;
}

.nextra-sidebar > div:first-child > div:not(.dw-sidebar-search-slot) {
  /*
   * Nextra 菜单外层只有生成类名可用；这里把可滚动内容宽度固定为设计稿的 240px，
   * 避免右侧新增的滚动条通道参与菜单项宽度计算。
   */
  width: var(--dw-search-width);
}

.nextra-sidebar ul {
  gap: 10px;
}

.nextra-sidebar li > hr {
  /* Nextra 的空 separator 只能生成 hr，没有业务类名；在侧栏作用域内隐藏，避免渲染成孤立短横字符。 */
  display: none;
}

/* 侧栏分组标题来自 Nextra separator 文本，必须限定在侧栏作用域内，避免影响正文列表。 */
.nextra-sidebar li:not(.active):has(> hr),
.nextra-sidebar li:not(.active):not(:has(> a)):not(:has(> button)) {
  color: var(--dw-text-secondary);
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 1px;
  line-height: 1.4;
}

.nextra-sidebar a,
.nextra-sidebar button,
.nextra-mobile-nav a,
.nextra-mobile-nav button {
  /* Nextra 链接内部文本默认按行高排版，固定 40px 行高下会贴近上边；用 flex 保证菜单文字在选中、hover 和移动抽屉状态都垂直居中。 */
  display: flex;
  align-items: center;
  min-height: 40px;
  border-radius: 8px !important;
  color: var(--dw-text-primary) !important;
  font-size: 14px !important;
  font-weight: 400 !important;
  line-height: 1.45;
  padding-inline: 16px !important;
}

.nextra-sidebar a:hover,
.nextra-sidebar button:hover,
.nextra-mobile-nav a:hover,
.nextra-mobile-nav button:hover {
  background: var(--dw-hover) !important;
  color: var(--dw-text-primary) !important;
}

.nextra-sidebar li.active > a,
.nextra-mobile-nav li.active > a {
  background: var(--dw-hover) !important;
  color: var(--dw-text-primary) !important;
  font-weight: 500 !important;
}

.nextra-sidebar-footer {
  display: none;
}

.nextra-toc {
  /* 右侧本页目录由 Nextra 生成，保留固定宽度和顶部距离，避免正文右侧出现空白但目录不可见。 */
  display: block;
  width: 220px !important;
  padding-top: 30px;
}

.nextra-toc p {
  color: var(--dw-text-primary);
  font-size: 14px;
  font-weight: 500;
}

.nextra-toc a {
  color: var(--dw-text-secondary) !important;
  font-size: 13px;
  font-weight: 400 !important;
  line-height: 1.55;
}

.nextra-toc a:hover {
  color: var(--dw-primary) !important;
}

main[data-pagefind-body] {
  max-width: var(--dw-article-width);
  padding-top: 0;
  color: var(--dw-text-primary);
}

/* 面包屑在设计稿中占据正文顶部 17px，高度和 50px 下间距共同决定 H1 的纵向起点。 */
.nextra-breadcrumb {
  display: flex !important;
  align-items: center;
  height: 17px;
  margin: 0 0 50px !important;
  color: var(--dw-text-secondary);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 1px;
  line-height: 1;
}

/* 面包屑内部文本和图标由 Nextra 生成，只能在 .nextra-breadcrumb 作用域下覆盖生成节点。 */
.nextra-breadcrumb :is(a, span, svg) {
  color: var(--dw-text-secondary) !important;
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
}

/* 文章容器是 Nextra 生成结构，DOM 顺序为侧栏、TOC、article，不能用相邻兄弟选择器。
   设计稿要求正文列从导航下方 30px 开始，因此把主题默认 16px 顶距收敛为 30px。 */
body > div[class*="x:mx-auto"][class*="x:flex"][class*="x:max-w-(--nextra-content-width)"] > article {
  padding-top: 30px;
  background: var(--dw-background);
}

@media (min-width: 769px) {
  /*
   * 生产静态导出的 Tailwind 分层压缩会让 Nextra 的 x:md:px-12 响应式工具类失效，
   * 导致桌面端文章只保留 x:px-4 的 16px 内边距，正文比本地开发态向左偏 32px。
   * 这里在文档 shell 作用域内补齐原本的 48px 文章内边距，仅兜底桌面端正文布局，
   * 移动端继续使用 Nextra 原生 16px 内边距，避免抽屉导航和窄屏正文被误放大。
   */
  body > div[class*="x:mx-auto"][class*="x:flex"][class*="x:max-w-(--nextra-content-width)"] > article {
    padding-inline: 48px;
  }
}

main[data-pagefind-body] h1 {
  margin: 0 0 24px !important;
  color: var(--dw-text-primary) !important;
  font-size: 34px !important;
  font-weight: 600 !important;
  line-height: 1.2;
  letter-spacing: 0;
}

main[data-pagefind-body] h2 {
  margin-top: 50px !important;
  padding-bottom: 0 !important;
  color: var(--dw-text-primary) !important;
  border-color: transparent !important;
  font-size: 20px !important;
  font-weight: 500 !important;
  line-height: 1.4;
  letter-spacing: 0;
}

main[data-pagefind-body] h3 {
  margin-top: 20px !important;
  color: var(--dw-text-primary) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  line-height: 1.7;
  letter-spacing: 0;
}

/* 正文节点由 MDX 生成，只在页面主体内覆盖标签，保证文档内容语义和其他 Nextra 区域不受影响。 */
main[data-pagefind-body] p,
main[data-pagefind-body] li {
  color: var(--dw-text-primary);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.7;
}

main[data-pagefind-body] p {
  margin-top: 20px;
}

main[data-pagefind-body] strong {
  color: var(--dw-text-primary);
  font-weight: 600;
}

main[data-pagefind-body] a {
  color: #0051d6;
  font-weight: 400;
  text-decoration: none;
}

main[data-pagefind-body] ul,
main[data-pagefind-body] ol {
  margin-top: 20px;
  border: 1px solid var(--dw-border);
  border-radius: 16px;
  background: var(--dw-card);
  padding: 20px 30px 20px 48px;
}

main[data-pagefind-body] li + li {
  margin-top: 16px;
}

main[data-pagefind-body] code {
  color: var(--dw-text-primary);
  border: 1px solid var(--dw-divider);
  border-radius: 6px;
  background: var(--dw-background);
}

main[data-pagefind-body] pre {
  border: 1px solid var(--dw-border);
  border-radius: var(--dw-radius-lg);
  background: var(--dw-subtle);
}

main[data-pagefind-body] + div,
main[data-pagefind-body] ~ div,
.nextra-toc + div {
  display: none;
}

.nextra-mobile-nav {
  background: var(--dw-background);
}

@media (max-width: 768px) {
  .nextra-navbar {
    --dw-navbar-height: 64px;
    --nextra-navbar-height: var(--dw-navbar-height);
    height: var(--dw-navbar-height);
  }

  .nextra-navbar nav {
    max-width: none;
    height: var(--dw-navbar-height);
    margin-left: 0;
    margin-right: auto;
    padding-inline: 16px;
  }

  .dw-docs-logo {
    width: 152px;
    height: auto;
  }

  .nextra-navbar nav > div[class="x:max-md:hidden"] {
    display: none;
  }

  .nextra-search input {
    width: 100% !important;
  }

  /* 移动端使用 Nextra 原生抽屉式导航，不继承桌面端 1200px 官网主体左边界。 */
  body > div[class*="x:mx-auto"][class*="x:flex"][class*="x:max-w-(--nextra-content-width)"] {
    width: 100%;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }

  main[data-pagefind-body] {
    max-width: none;
    padding-top: 8px;
  }

  main[data-pagefind-body] h1 {
    font-size: 28px !important;
  }

  main[data-pagefind-body] h2 {
    font-size: 20px !important;
  }

  main[data-pagefind-body] p,
  main[data-pagefind-body] li {
    font-size: 15px;
  }

  main[data-pagefind-body] ul,
  main[data-pagefind-body] ol {
    border-radius: var(--dw-radius-lg);
    padding: 18px 20px 18px 34px;
  }
}

