643 lines
12 KiB
CSS
643 lines
12 KiB
CSS
@import "./docs-nextra-search.css";
|
||
|
||
/* —— 文档区:与官网 band / token 一致 —— */
|
||
|
||
/* 全站顶栏 fixed + 文档次顶栏(通栏,非岛状;吸顶时与主导航同色衔接) */
|
||
.docs-page {
|
||
--docs-subnav-height: 2.5rem;
|
||
--docs-chrome-bg: rgb(255 255 255 / 0.52);
|
||
--docs-subnav-bg: var(--docs-chrome-bg);
|
||
--docs-chrome-blur: blur(10px);
|
||
--docs-sticky-top: calc(
|
||
var(--nav-offset) + var(--docs-subnav-height) + var(--spacing-xs)
|
||
);
|
||
padding-top: var(--nav-offset);
|
||
}
|
||
|
||
html.nav-is-docked .docs-page {
|
||
--docs-subnav-height: 2.25rem;
|
||
--docs-chrome-bg: rgb(255 255 255 / 0.94);
|
||
--docs-subnav-bg: rgb(246 248 251 / 0.98);
|
||
--docs-chrome-blur: blur(12px);
|
||
}
|
||
|
||
/* 文档页吸顶:主导航去掉底边/阴影,避免与次顶栏叠出色差 */
|
||
html.nav-is-docked .docs-page .nav-float--docked .nav-float-rail {
|
||
border-bottom: none;
|
||
box-shadow: none;
|
||
background-color: var(--docs-chrome-bg);
|
||
backdrop-filter: var(--docs-chrome-blur);
|
||
}
|
||
|
||
.docs-subnav {
|
||
position: sticky;
|
||
top: var(--nav-offset);
|
||
z-index: 40;
|
||
width: 100%;
|
||
transition: top 0.38s cubic-bezier(0.22, 1, 0.36, 1);
|
||
}
|
||
|
||
html.nav-is-docked .docs-subnav {
|
||
/* 与 fixed 主导航贴齐,消除亚像素缝 */
|
||
margin-top: -1px;
|
||
}
|
||
|
||
.docs-subnav__rail {
|
||
background-color: var(--docs-subnav-bg);
|
||
backdrop-filter: var(--docs-chrome-blur);
|
||
border-bottom: 1px solid var(--color-border-light);
|
||
transition:
|
||
background-color 0.38s ease,
|
||
backdrop-filter 0.38s ease;
|
||
}
|
||
|
||
|
||
.docs-subnav__inner {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
gap: var(--spacing-sm) var(--spacing-lg);
|
||
min-height: var(--docs-subnav-height);
|
||
padding-block: 0.15rem;
|
||
}
|
||
|
||
html.nav-is-docked .docs-subnav__inner {
|
||
padding-block: 0.1rem;
|
||
}
|
||
|
||
.docs-subnav__inner .docs-breadcrumb {
|
||
flex: 1 1 auto;
|
||
min-width: 0;
|
||
font-size: 0.8125rem;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.docs-subnav__search {
|
||
flex: 1 1 14rem;
|
||
width: 100%;
|
||
max-width: 18rem;
|
||
min-width: min(100%, 11rem);
|
||
}
|
||
|
||
.docs-subnav .docs-spotlight__input {
|
||
min-height: 1.875rem;
|
||
padding-block: 0.3rem;
|
||
font-size: 0.8125rem;
|
||
background: rgb(0 0 0 / 0.04);
|
||
}
|
||
|
||
html.nav-is-docked .docs-subnav .docs-spotlight__input {
|
||
min-height: 1.75rem;
|
||
padding-block: 0.25rem;
|
||
}
|
||
|
||
.docs-subnav .docs-spotlight__input--focus,
|
||
.docs-subnav .docs-spotlight__input:focus {
|
||
background: rgb(255 255 255 / 0.95);
|
||
}
|
||
|
||
@media (width < 768px) {
|
||
.docs-subnav__search {
|
||
max-width: none;
|
||
flex: 1 1 100%;
|
||
}
|
||
}
|
||
|
||
@media (prefers-reduced-motion: reduce) {
|
||
.docs-subnav,
|
||
.docs-subnav__rail,
|
||
html.nav-is-docked .docs-page .nav-float--docked .nav-float-rail {
|
||
transition: none;
|
||
}
|
||
}
|
||
|
||
/* 文档页内保证全站顶栏/容器宽度与首页一致 */
|
||
.docs-page .nav-float {
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
max-width: none;
|
||
}
|
||
|
||
.docs-page .container-site {
|
||
width: 100%;
|
||
max-width: var(--width-container);
|
||
margin-inline: auto;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.docs-breadcrumb {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: center;
|
||
gap: 0.35rem 0.5rem;
|
||
color: var(--color-body);
|
||
}
|
||
|
||
.docs-breadcrumb__link {
|
||
color: var(--color-body);
|
||
text-decoration: none;
|
||
transition: color 0.15s ease;
|
||
}
|
||
|
||
.docs-breadcrumb__link:hover {
|
||
color: var(--color-accent-ink);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.docs-breadcrumb__current {
|
||
color: var(--color-ink);
|
||
}
|
||
|
||
.docs-breadcrumb__sep {
|
||
color: var(--color-body-light);
|
||
user-select: none;
|
||
}
|
||
|
||
.docs-shell__grid {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr);
|
||
gap: var(--spacing-3xl);
|
||
align-items: stretch;
|
||
}
|
||
|
||
@media (width >= 992px) {
|
||
.docs-shell__grid {
|
||
grid-template-columns: minmax(168px, 188px) minmax(0, 1fr);
|
||
gap: var(--spacing-2xl);
|
||
}
|
||
}
|
||
|
||
.docs-shell {
|
||
padding-block: var(--spacing-xl) var(--spacing-section);
|
||
}
|
||
|
||
.docs-shell__aside {
|
||
display: none;
|
||
min-width: 0;
|
||
}
|
||
|
||
@media (width >= 992px) {
|
||
.docs-shell__aside {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
}
|
||
|
||
.docs-shell__sticky-anchor {
|
||
position: sticky;
|
||
top: var(--docs-sticky-top);
|
||
align-self: flex-start;
|
||
width: 100%;
|
||
}
|
||
|
||
.docs-shell__sticky {
|
||
max-height: calc(100vh - var(--docs-sticky-top) - 0.75rem);
|
||
overflow-y: auto;
|
||
overscroll-behavior: contain;
|
||
padding: 0;
|
||
padding-right: 0.35rem;
|
||
}
|
||
|
||
/* 侧栏:贴近 Nextra Docs 的扁平链接样式 */
|
||
.docs-nav {
|
||
list-style: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0.125rem;
|
||
}
|
||
|
||
.docs-nav__group-head {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.25rem;
|
||
}
|
||
|
||
.docs-nav__link {
|
||
display: block;
|
||
flex: 1;
|
||
padding: 0.3125rem 0.5rem;
|
||
border-radius: 0.375rem;
|
||
color: var(--color-body);
|
||
text-decoration: none;
|
||
font-size: 0.875rem;
|
||
line-height: 1.35;
|
||
transition:
|
||
color 0.15s ease,
|
||
background-color 0.15s ease;
|
||
}
|
||
|
||
.docs-nav__link--nested {
|
||
font-size: 0.8125rem;
|
||
padding-left: 0.875rem;
|
||
color: var(--color-body-light);
|
||
}
|
||
|
||
.docs-nav__link:hover {
|
||
color: var(--color-ink);
|
||
background: rgb(0 0 0 / 0.04);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.docs-nav__link--active {
|
||
color: var(--color-primary);
|
||
font-weight: 500;
|
||
background: rgb(38 112 232 / 0.08);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.docs-nav__link--nested.docs-nav__link--active {
|
||
color: var(--color-primary);
|
||
}
|
||
|
||
.docs-nav__toggle {
|
||
flex-shrink: 0;
|
||
width: 2rem;
|
||
height: 2rem;
|
||
border: none;
|
||
border-radius: var(--radius-sm);
|
||
background: transparent;
|
||
cursor: pointer;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
|
||
.docs-nav__toggle:hover {
|
||
background: var(--color-canvas-muted);
|
||
}
|
||
|
||
.docs-nav__chevron {
|
||
display: block;
|
||
width: 0.45rem;
|
||
height: 0.45rem;
|
||
border-right: 2px solid var(--color-body);
|
||
border-bottom: 2px solid var(--color-body);
|
||
transform: rotate(45deg);
|
||
transition: transform 0.2s ease;
|
||
}
|
||
|
||
.docs-nav__chevron[data-open="true"] {
|
||
transform: rotate(-135deg);
|
||
}
|
||
|
||
.docs-nav__sub {
|
||
list-style: none;
|
||
margin: 0.125rem 0 0.35rem;
|
||
padding: 0 0 0 0.5rem;
|
||
border-left: 1px solid var(--color-border-light);
|
||
display: none;
|
||
flex-direction: column;
|
||
gap: 0.0625rem;
|
||
}
|
||
|
||
.docs-nav__sub[data-open="true"] {
|
||
display: flex;
|
||
}
|
||
|
||
@media (width >= 992px) {
|
||
.docs-nav__toggle {
|
||
display: none;
|
||
}
|
||
|
||
.docs-nav__sub {
|
||
display: flex !important;
|
||
}
|
||
}
|
||
|
||
/* 移动端目录抽屉 */
|
||
.docs-mobile-nav {
|
||
position: relative;
|
||
margin-bottom: var(--spacing-lg);
|
||
}
|
||
|
||
.docs-mobile-nav__trigger {
|
||
width: 100%;
|
||
justify-content: center;
|
||
}
|
||
|
||
.docs-mobile-nav__backdrop {
|
||
position: fixed;
|
||
inset: 0;
|
||
z-index: 40;
|
||
background: rgb(20 20 20 / 0.35);
|
||
backdrop-filter: blur(2px);
|
||
}
|
||
|
||
.docs-mobile-nav__panel {
|
||
position: fixed;
|
||
z-index: 50;
|
||
left: var(--spacing-lg);
|
||
right: var(--spacing-lg);
|
||
top: var(--docs-sticky-top);
|
||
max-height: min(70vh, 520px);
|
||
overflow-y: auto;
|
||
padding: var(--spacing-xl);
|
||
border-radius: var(--radius-md);
|
||
background: var(--color-canvas-elevated);
|
||
box-shadow: var(--shadow-surface);
|
||
animation: docs-panel-in 0.22s ease;
|
||
}
|
||
|
||
.docs-mobile-nav__panel[hidden] {
|
||
display: none;
|
||
}
|
||
|
||
@keyframes docs-panel-in {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(-8px);
|
||
}
|
||
to {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
@media (width >= 992px) {
|
||
.docs-mobile-nav {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/* 正文 + 右侧 TOC */
|
||
.docs-article {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr);
|
||
gap: var(--spacing-3xl);
|
||
min-width: 0;
|
||
align-items: stretch;
|
||
}
|
||
|
||
@media (width >= 1100px) {
|
||
.docs-article {
|
||
grid-template-columns: minmax(0, 1fr) minmax(140px, 168px);
|
||
gap: var(--spacing-2xl);
|
||
}
|
||
}
|
||
|
||
.docs-article__body {
|
||
min-width: 0;
|
||
}
|
||
|
||
.docs-toc-anchor {
|
||
position: sticky;
|
||
top: var(--docs-sticky-top);
|
||
align-self: start;
|
||
min-width: 0;
|
||
}
|
||
|
||
.docs-toc-sticky {
|
||
max-height: calc(100vh - var(--docs-sticky-top) - 0.75rem);
|
||
overflow-y: auto;
|
||
overscroll-behavior: contain;
|
||
}
|
||
|
||
/* 右侧 TOC:Nextra 式左边线 + 小字号 */
|
||
.docs-toc {
|
||
padding: 0;
|
||
}
|
||
|
||
.docs-toc__title {
|
||
margin: 0 0 var(--spacing-sm);
|
||
font-size: 0.75rem;
|
||
font-weight: 600;
|
||
letter-spacing: 0.04em;
|
||
text-transform: uppercase;
|
||
color: var(--color-body-light);
|
||
}
|
||
|
||
.docs-toc__list {
|
||
list-style: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0;
|
||
border-left: 1px solid var(--color-border-light);
|
||
}
|
||
|
||
.docs-toc__link {
|
||
display: block;
|
||
font-size: 0.75rem;
|
||
line-height: 1.45;
|
||
color: var(--color-body);
|
||
text-decoration: none;
|
||
padding: 0.25rem 0 0.25rem 0.75rem;
|
||
margin-left: -1px;
|
||
border-left: 2px solid transparent;
|
||
border-radius: 0;
|
||
transition:
|
||
color 0.15s ease,
|
||
border-color 0.15s ease;
|
||
}
|
||
|
||
.docs-toc__link--h3 {
|
||
padding-left: 1.125rem;
|
||
font-size: 0.6875rem;
|
||
color: var(--color-body-light);
|
||
}
|
||
|
||
.docs-toc__link:hover {
|
||
color: var(--color-ink);
|
||
text-decoration: none;
|
||
}
|
||
|
||
.docs-toc__link--active {
|
||
color: var(--color-ink);
|
||
font-weight: 500;
|
||
border-left-color: var(--color-primary);
|
||
background: transparent;
|
||
}
|
||
|
||
/* 正文排版 */
|
||
.docs-prose {
|
||
min-width: 0;
|
||
max-width: 46rem;
|
||
line-height: 1.75;
|
||
color: var(--color-ink-soft);
|
||
}
|
||
|
||
.docs-prose h1 {
|
||
font-family: var(--font-serif);
|
||
font-size: clamp(1.75rem, 4vw, 2.15rem);
|
||
font-weight: 600;
|
||
color: var(--color-ink);
|
||
margin: 0 0 var(--spacing-lg);
|
||
letter-spacing: -0.02em;
|
||
}
|
||
|
||
.docs-heading {
|
||
position: relative;
|
||
scroll-margin-top: calc(var(--docs-sticky-top) + 1.5rem);
|
||
}
|
||
|
||
.docs-heading__anchor {
|
||
position: absolute;
|
||
left: -1.25rem;
|
||
opacity: 0;
|
||
color: var(--color-body-light);
|
||
text-decoration: none;
|
||
font-weight: 400;
|
||
transition: opacity 0.15s ease;
|
||
}
|
||
|
||
.docs-heading:hover .docs-heading__anchor {
|
||
opacity: 1;
|
||
}
|
||
|
||
.docs-prose h2 {
|
||
font-size: 1.35rem;
|
||
font-weight: 600;
|
||
color: var(--color-ink);
|
||
margin: var(--spacing-4xl) 0 var(--spacing-md);
|
||
padding-bottom: var(--spacing-sm);
|
||
border-bottom: 1px solid var(--color-hairline);
|
||
}
|
||
|
||
.docs-prose h3 {
|
||
font-size: 1.08rem;
|
||
font-weight: 600;
|
||
color: var(--color-ink);
|
||
margin: var(--spacing-2xl) 0 var(--spacing-sm);
|
||
}
|
||
|
||
.docs-prose p,
|
||
.docs-prose ul,
|
||
.docs-prose ol {
|
||
margin: 0 0 var(--spacing-lg);
|
||
color: var(--color-body);
|
||
}
|
||
|
||
.docs-prose a {
|
||
color: var(--color-accent-ink);
|
||
text-decoration: underline;
|
||
text-underline-offset: 0.2em;
|
||
}
|
||
|
||
.docs-prose a:hover {
|
||
color: var(--color-accent-ink-hover);
|
||
}
|
||
|
||
.docs-prose ul,
|
||
.docs-prose ol {
|
||
padding-left: 1.35rem;
|
||
}
|
||
|
||
.docs-prose li {
|
||
margin: 0.35rem 0;
|
||
}
|
||
|
||
.docs-code {
|
||
position: relative;
|
||
margin: 0 0 var(--spacing-xl);
|
||
}
|
||
|
||
.docs-code__pre {
|
||
font-family: var(--font-mono-caps);
|
||
font-size: 0.85rem;
|
||
line-height: 1.55;
|
||
padding: var(--spacing-xl) var(--spacing-lg);
|
||
border-radius: var(--radius-md);
|
||
overflow-x: auto;
|
||
background: linear-gradient(
|
||
145deg,
|
||
rgb(248 250 252 / 0.98) 0%,
|
||
rgb(236 244 255 / 0.92) 100%
|
||
);
|
||
border: 1px solid var(--color-border-light);
|
||
box-shadow: var(--shadow-field);
|
||
margin: 0;
|
||
}
|
||
|
||
.docs-code__copy {
|
||
position: absolute;
|
||
top: var(--spacing-sm);
|
||
right: var(--spacing-sm);
|
||
z-index: 1;
|
||
padding: 0.25rem 0.65rem;
|
||
font-size: 0.75rem;
|
||
border-radius: var(--radius-sm);
|
||
border: 1px solid var(--color-border-light);
|
||
background: rgb(255 255 255 / 0.92);
|
||
color: var(--color-body);
|
||
cursor: pointer;
|
||
transition:
|
||
background 0.15s ease,
|
||
color 0.15s ease;
|
||
}
|
||
|
||
.docs-code__copy:hover {
|
||
color: var(--color-accent-ink);
|
||
border-color: var(--color-accent-border);
|
||
}
|
||
|
||
.docs-prose :not(pre) > code {
|
||
font-family: var(--font-mono-caps);
|
||
font-size: 0.88em;
|
||
padding: 0.12em 0.4em;
|
||
border-radius: var(--radius-xs);
|
||
background: var(--color-accent-wash);
|
||
color: var(--color-accent-ink);
|
||
}
|
||
|
||
.docs-prose strong {
|
||
font-weight: 600;
|
||
color: var(--color-ink);
|
||
}
|
||
|
||
.docs-prose table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 0 0 var(--spacing-xl);
|
||
font-size: 0.92rem;
|
||
box-shadow: var(--shadow-field);
|
||
border-radius: var(--radius-md);
|
||
overflow: hidden;
|
||
}
|
||
|
||
.docs-prose th,
|
||
.docs-prose td {
|
||
border: 1px solid var(--color-hairline);
|
||
padding: 0.55rem 0.85rem;
|
||
text-align: left;
|
||
}
|
||
|
||
.docs-prose th {
|
||
background: var(--color-accent-wash);
|
||
color: var(--color-ink);
|
||
font-weight: 500;
|
||
}
|
||
|
||
.docs-prose blockquote {
|
||
margin: 0 0 var(--spacing-lg);
|
||
padding: var(--spacing-md) var(--spacing-lg);
|
||
border-left: 3px solid var(--color-primary);
|
||
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
||
background: var(--color-accent-wash);
|
||
color: var(--color-body);
|
||
}
|
||
|
||
.docs-prose blockquote > :last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.docs-prose hr {
|
||
margin: var(--spacing-3xl) 0;
|
||
border: none;
|
||
border-top: 1px solid var(--color-hairline);
|
||
}
|
||
|
||
.sr-only {
|
||
position: absolute;
|
||
width: 1px;
|
||
height: 1px;
|
||
padding: 0;
|
||
margin: -1px;
|
||
overflow: hidden;
|
||
clip: rect(0, 0, 0, 0);
|
||
white-space: nowrap;
|
||
border: 0;
|
||
}
|