/* =========================================================================
   Fetarute Wiki — injection.css（自动生成，请勿手工编辑）

   来源：site-assets/style/{tokens.css, base.css, content.css, components.css, wikijs-overrides.css}
   重新生成：node tools/src/build-css.ts

   用途：粘贴到 Wiki.js → Administration → Theme → CSS Override
   ========================================================================= */

/* ===== tokens.css ======================================================== */
:root {
  --fw-color-scheme: light;

  --fw-bg-canvas: #f0f1f0;
  --fw-bg-surface: #fafbfa;
  --fw-bg-raised: #fcfdfc;
  --fw-bg-subtle: #e8eae9;

  --fw-text-primary: #1b2022;
  --fw-text-secondary: #626a6d;
  --fw-text-muted: #646c6e;
  --fw-text-inverse: #f4f6f5;

  --fw-border: #c9ced0;
  --fw-border-subtle: #dcdfdf;

  --fw-accent: #0067b1;
  --fw-accent-hover: #004c82;
  --fw-accent-soft: rgb(0 103 177 / 0.09);
  --fw-link: #0067b1;
  --fw-link-hover: #004c82;
  --fw-link-underline: rgb(0 103 177 / 0.4);

  --fw-sweep: rgb(0 103 177 / 0.13);
  --fw-sweep: color-mix(in srgb, var(--fw-accent) 13%, transparent);

  --fw-selection-bg: #0067b1;
  --fw-selection-text: #f4f6f5;

  --fw-selection-lines: "fta-sl", "surn-main", "surn-bs", "surn-lt", "surn-frn",
    "surn-pn", "surc-ws", "surc-ds", "surc-mt", "krtk-l";

  --fw-on-line-light: #f4f6f5;
  --fw-on-line-dark: #0d1011;

  --fw-chip-edge: rgb(27 32 34 / 0.22);

  --fw-focus-ring: #1b2022;

  --fw-info: #0067b1;
  --fw-ok: #0f7a4f;
  --fw-warning: #9a5d00;
  --fw-danger: #b8443e;
  --fw-on-status: #f4f6f5;

  --fw-callout-bg: #fafbfa;
  --fw-code-bg: #eaecec;
  --fw-code-text: #1b2022;
  --fw-code-block-bg: #f6f7f7;
  --fw-code-block-text: #1b2022;
  --fw-table-header-bg: #e8eae9;
  --fw-table-zebra-bg: rgb(27 32 34 / 0.025);

  --fw-header-bg: #1b2022;
  --fw-header-text: #f4f6f5;
  --fw-header-text-soft: rgb(244 246 245 / 0.62);
  --fw-header-border: #2f3639;
  --fw-header-field-bg: rgb(244 246 245 / 0.08);

  --fw-fab-bg: #1b2022;
  --fw-fab-border: #2f3639;
  --fw-fab-text: #f4f6f5;
  --fw-fab-track: rgb(244 246 245 / 0.2);
  --fw-fab-progress: #79bce8;

  --fw-line-fta-sl: #1712a7;
  --fw-line-surn-main: #adadad;
  --fw-line-surn-bs: #17b292;
  --fw-line-surn-lt: #c8ffff;
  --fw-line-surn-frn: #ffcd2a;
  --fw-line-surn-pn: #ee65a6;
  --fw-line-surc-ws: #70deee;
  --fw-line-surc-ds: #f6a000;
  --fw-line-surc-mt: #d920d9;
  --fw-line-krtk-l: #c40d0b;

  --fw-font-sans: "Noto Sans Display", "Noto Sans", "Noto Sans SC",
    "Noto Sans CJK SC", "Source Han Sans SC", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --fw-font-mono: ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono",
    Menlo, Consolas, "Liberation Mono", monospace,
    "PingFang SC", "Microsoft YaHei";

  --fw-measure: 51rem;
  --fw-portal-width: 78rem;

  --fw-wide-width: 78rem;
  --fw-gutter: clamp(1rem, 2.5vw, 2.5rem);
  --fw-section-space: clamp(2rem, 4vw, 3.5rem);
  --fw-line-height: 1.85;

  --fw-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z'/%3E%3C/svg%3E");

  --fw-icon-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M200 56 56 200M56 56l144 144' fill='none' stroke='black' stroke-width='24' stroke-linecap='round'/%3E%3C/svg%3E");

  --fw-viewer-scrim: rgb(13 16 17 / 0.96);
  --fw-viewer-text: #f4f6f5;
  --fw-viewer-text-soft: rgb(244 246 245 / 0.72);
  --fw-viewer-edge: rgb(244 246 245 / 0.28);
  --fw-viewer-hover: rgb(244 246 245 / 0.1);

  --fw-radius: 0;
  --fw-radius-sign: 0;

  --fw-radius-window: clamp(12px, 1.6vw, 22px);

  --fw-duration: 150ms;
  --fw-ease: cubic-bezier(0.23, 1, 0.32, 1);

  --fw-duration-overlay: 180ms;
  --fw-duration-overlay-content: 260ms;
}

:root[data-fw-theme="dark"],
html:not([data-fw-theme]) #app.v-application.theme--dark {
  --fw-color-scheme: dark;

  --fw-bg-canvas: #111416;
  --fw-bg-surface: #1a1e20;
  --fw-bg-raised: #24292b;
  --fw-bg-subtle: #24292b;

  --fw-text-primary: #eef0ef;
  --fw-text-secondary: #b2b8b9;
  --fw-text-muted: #969d9e;
  --fw-text-inverse: #1b2022;

  --fw-border: #3d474a;
  --fw-border-subtle: #2c3437;

  --fw-accent: #79bce8;
  --fw-accent-hover: #b4dcf6;
  --fw-accent-soft: rgb(121 188 232 / 0.14);
  --fw-link: #79bce8;
  --fw-link-hover: #b4dcf6;
  --fw-link-underline: rgb(121 188 232 / 0.45);

  --fw-sweep: rgb(121 188 232 / 0.16);
  --fw-sweep: color-mix(in srgb, var(--fw-accent) 16%, transparent);

  --fw-selection-bg: #155575;
  --fw-selection-text: #f4f6f5;

  --fw-focus-ring: #eef0ef;

  --fw-info: #79bce8;
  --fw-ok: #4fcb8a;
  --fw-warning: #f0b84a;
  --fw-danger: #ff8c84;
  --fw-on-status: #1b2022;

  --fw-callout-bg: #1a1e20;
  --fw-code-bg: #24292b;
  --fw-code-text: #eef0ef;
  --fw-code-block-bg: #0d1011;
  --fw-code-block-text: #eef0ef;
  --fw-table-header-bg: #24292b;
  --fw-table-zebra-bg: rgb(238 240 239 / 0.04);

  --fw-header-bg: #0d1011;
  --fw-header-text: #f4f6f5;
  --fw-header-text-soft: rgb(244 246 245 / 0.62);
  --fw-header-border: #262c2e;
  --fw-header-field-bg: rgb(244 246 245 / 0.09);

  --fw-fab-bg: #24292b;
  --fw-fab-border: #3d474a;
  --fw-fab-text: #f4f6f5;
  --fw-fab-track: rgb(244 246 245 / 0.16);

  --fw-chip-edge: rgb(238 240 239 / 0.24);

}

/* ===== base.css ========================================================== */
html {
  background-color: var(--fw-bg-canvas);
  color-scheme: var(--fw-color-scheme);
}

#app.v-application {
  color-scheme: var(--fw-color-scheme);
  background: var(--fw-bg-canvas);
  color: var(--fw-text-primary);
  font-family: var(--fw-font-sans);
}

#app.v-application .title,
#app.v-application .headline,
#app.v-application .subtitle-1,
#app.v-application .subtitle-2,
#app.v-application .body-1,
#app.v-application .body-2,
#app.v-application .caption,
#app.v-application .overline {
  font-family: var(--fw-font-sans) !important;
}

#root #app .v-application--wrap,
#root #app .v-main__wrap > .container {
  background-color: var(--fw-bg-canvas) !important;
}

::selection {
  background-color: var(--fw-selection-runtime-bg, var(--fw-selection-bg));
  color: var(--fw-selection-runtime-text, var(--fw-selection-text));
  -webkit-text-fill-color: var(--fw-selection-runtime-text, var(--fw-selection-text));

  fill: var(--fw-selection-runtime-text, var(--fw-selection-text));
}

::-moz-selection {
  background-color: var(--fw-selection-runtime-bg, var(--fw-selection-bg));
  color: var(--fw-selection-runtime-text, var(--fw-selection-text));
}

#app .v-main .contents :focus-visible,
#app .v-navigation-drawer a:focus-visible,
#app .v-navigation-drawer .v-list-item:focus-visible,
#app .nav-header a:focus-visible,
#app .nav-header .v-btn:focus-visible {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: -3px;
}

#app .v-main .contents a:focus-visible {
  outline-offset: 2px;
}

#app .nav-header a:focus-visible,
#app .nav-header .v-btn:focus-visible {
  outline-color: var(--fw-header-text);
}

#app .v-main .contents img:not([data-image-drag-allowed]) {
  user-select: none;
  -webkit-user-select: none;
}

@supports (-webkit-user-drag: none) {
  #app .v-main .contents img:not([data-image-drag-allowed]) {
    -webkit-user-drag: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  #root #app .v-main .contents a,
  #root #app .v-main .contents .fw-card,
  #root #app .v-main .contents .fw-link-arrow::after {
    transition: none;
  }
}

/* ===== content.css ======================================================= */
#app .v-main .contents {
  color: var(--fw-text-primary);
  font-size: clamp(1rem, 0.98rem + 0.1vw, 1.0625rem);
  line-height: var(--fw-line-height);

  line-break: strict;
  overflow-wrap: anywhere;
  min-width: 0;
  width: 100%;
  max-width: var(--fw-measure);
  margin-inline: auto;
  padding-bottom: 88px;
}

#app .v-main .contents > div > p,
#app .v-main .contents > div > ul,
#app .v-main .contents > div > ol,
#app .v-main .contents > div > dl,
#app .v-main .contents > div > h1,
#app .v-main .contents > div > h2,
#app .v-main .contents > div > h3,
#app .v-main .contents > div > h4,
#app .v-main .contents > div > h5,
#app .v-main .contents > div > h6,
#app .v-main .contents > div > blockquote,
#app .v-main .contents > div > details {
  max-width: var(--fw-measure);
  margin-inline: auto;
}

#app .v-main .contents > div > ul:not(.tabset-tabs) {
  max-width: var(--fw-measure);
  margin-inline: auto;
}

#app .v-main .contents .fw-wide,
#app .v-main .contents .fw-full-width {
  width: 100%;
  max-width: var(--fw-wide-width);
  margin: 1.6em auto 2.2em;
  min-width: 0;
}

#app .v-main .contents .fw-wide > :first-child,
#app .v-main .contents .fw-full-width > :first-child {
  margin-top: 0;
}

#app .v-main .contents .fw-wide > :last-child,
#app .v-main .contents .fw-full-width > :last-child {
  margin-bottom: 0;
}

#app .v-main .contents p {
  padding: 0;
  margin: 0 0 1.15em;
}

#app .v-main .contents ul:not(.tabset-tabs),
#app .v-main .contents ol {
  margin: 0 0 1.15em;
  padding-left: 1.5em;
}

#app .v-main .contents ul:not(.tabset-tabs) li + li,
#app .v-main .contents ol li + li {
  margin-top: 0.35em;
}

#app .v-main .contents li > ul,
#app .v-main .contents li > ol {
  margin: 0.35em 0 0;
}

#app .v-main .contents ul:not(.tabset-tabs):not(.contains-task-list):not(.links-list):not(.grid-list):not(.fw-nav-list):not(.fw-card-grid) > li::before {
  content: "";
  position: absolute;
  left: -1em;

  top: 0.74em;
  top: calc(0.5lh - 0.19em);
  width: 0.38em;
  height: 0.38em;
  background-color: var(--fw-text-secondary);
}

#app .v-main .contents li ul:not(.tabset-tabs):not(.contains-task-list):not(.links-list):not(.grid-list):not(.fw-nav-list):not(.fw-card-grid) > li::before {
  background-color: transparent;
  box-shadow: inset 0 0 0 1.5px var(--fw-text-secondary);
}

#app .v-main .contents ol:not(.fw-line-map) > li::marker {
  color: var(--fw-text-secondary);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

#app .v-main .contents b,
#app .v-main .contents strong {
  font-weight: 700;
}

#app .v-main .contents hr {
  height: 1px;
  border: 0;
  margin: 2.4em 0;
  background-color: var(--fw-border-subtle);
}

#app .v-main .contents h1,
#app .v-main .contents h2,
#app .v-main .contents h3,
#app .v-main .contents h4,
#app .v-main .contents h5,
#app .v-main .contents h6 {
  color: var(--fw-text-primary);
  font-family: var(--fw-font-sans);
  line-height: 1.45;
  letter-spacing: 0;
}

#app .v-main .contents h1::after,
#app .v-main .contents h2::after,
#app .v-main .contents h3::after,
#app .v-main .contents h4::after,
#app .v-main .contents h5::after,
#app .v-main .contents h6::after {
  content: none;
}

#app .v-main .contents h1 {

  font-size: clamp(1.5rem, 1.32rem + 0.75vw, 1.75rem);
  font-weight: 700;
  margin: 2.4em 0 0.75em;
  padding-top: 0.55em;
  padding-bottom: 0;
  border-top: 3px solid var(--fw-text-primary);
  border-bottom: 0;
}

#app .v-main .contents h2 {
  font-size: clamp(1.25rem, 1.16rem + 0.38vw, 1.375rem);
  font-weight: 700;
  margin: 2.4em 0 0.75em;
  padding-top: 0.55em;
  padding-bottom: 0;
  border-top: 2px solid var(--fw-text-primary);
  border-bottom: 0;
}

#app .v-main .contents .toc-header {
  scroll-margin-top: 5rem;
}

#app .v-main .contents > div > h1:first-child,
#app .v-main .contents > div > .fw-article-home-link:first-child + h1 {
  font-size: clamp(1.875rem, 1.45rem + 1.5vw, 2.5rem);
  line-height: 1.25;
  letter-spacing: -0.01em;

  margin-block: 0 0.45em;
  padding: 0;
  border: 0;
}

#app .v-main .contents > div > h1:first-child + .fw-sign-caption,
#app .v-main .contents > div > .fw-article-home-link:first-child + h1 + .fw-sign-caption {
  margin-top: -0.2em;
  font-size: 1.125rem;
}

#app .v-main .contents h3 {
  font-size: clamp(1.0625rem, 1.02rem + 0.19vw, 1.1875rem);
  font-weight: 700;
  margin: 1.9em 0 0.6em;
}

#app .v-main .contents h4 {
  font-size: 1.0625rem;
  font-weight: 700;
  margin: 1.6em 0 0.5em;
}

#app .v-main .contents h5,
#app .v-main .contents h6 {
  font-size: 1rem;
  font-weight: 700;
  color: var(--fw-text-secondary);
  margin: 1.4em 0 0.45em;
}

#app .v-main .contents > div > :first-child,
#app .v-main .contents > div > .fw-article-home-link:first-child + *,
#app .v-main .contents h1:first-child,
#app .v-main .contents h2:first-child,
#app .v-main .contents h3:first-child {
  margin-top: 0;
}

#app .page-header-section h1,
#app .page-header-section .headline {
  color: var(--fw-text-primary);
}

#app .page-header-section .subtitle-1,
#app .page-header-section .caption {
  color: var(--fw-text-secondary);
}

#app .v-main .contents a {
  color: var(--fw-link);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--fw-link-underline);
  text-underline-offset: 0.22em;
  transition: color var(--fw-duration) var(--fw-ease),
    text-decoration-color var(--fw-duration) var(--fw-ease),
    background-size 240ms var(--fw-ease);
}

#app .v-main .contents a:hover {
  color: var(--fw-link-hover);
  text-decoration-color: currentColor;
}

#app .v-main .contents a {
  background-image: linear-gradient(var(--fw-sweep), var(--fw-sweep));
  background-repeat: no-repeat;
  background-position: 0 0;
  background-size: 0 100%;
  padding: 0.05em 0.18em;
  margin: 0 -0.18em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

@media (hover: hover) and (pointer: fine) {
  #app .v-main .contents a:hover {
    background-size: 100% 100%;
  }
}

#app .v-main .contents a:focus-visible {
  background-size: 100% 100%;
}

#app .v-main .contents figure a,
#app .v-main .contents a.toc-anchor,
#app .v-main .contents .links-list a,
#app .v-main .contents .fw-card a {
  background-image: none;
  padding: 0;
  margin: 0;
}

#app .v-main .contents a:has(> img) {
  background-image: none;
  padding: 0;
  margin: 0;
}

#app .v-main .contents figure a,
#app .v-main .contents a.toc-anchor,
#app .v-main .contents .links-list a,
#app .v-main .contents .fw-card a,
#app .v-main .contents a.fw-link-arrow {
  text-decoration: none;
}

#app .v-main .contents a:has(> img) {
  text-decoration: none;
}

#app .v-main .contents a.toc-anchor {
  color: var(--fw-text-muted);
}

#app .v-main .contents a.is-external-link::after {
  color: var(--fw-text-muted);
}

#app .v-main .contents a.is-internal-link.is-invalid-page {
  color: var(--fw-danger);
  text-decoration-color: color-mix(in srgb, var(--fw-danger) 40%, transparent);
}

#app .v-main .contents img {

  border-radius: var(--fw-radius-window);
  max-width: 100%;
  height: auto;
}

#app .v-main .contents figure.image {
  margin: 1.6em 0;
}

#app .v-main .contents figure.image figcaption {
  color: var(--fw-text-secondary);
  background: none;
  font-size: 0.9375rem;
  padding: 0.5em 0 0;
}

#app .v-main .contents figure.table,
#app .v-main .contents .table-container {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  margin: 1.4em 0;
}

#app .v-main .contents figure.table > table,
#app .v-main .contents .table-container table {
  margin: 0;
}

#app .v-main .contents table {

  display: block;
  max-width: 100%;
  overflow-x: auto;
  width: 100%;
  margin: 1.4em 0;
  border: 1px solid var(--fw-border);
  border-radius: var(--fw-radius);
  border-collapse: separate;
  border-spacing: 0;
  font-size: 0.9375rem;
  background-color: var(--fw-bg-surface);
}

#app .v-main .contents table th {
  padding: 0.65rem 0.85rem;
  text-align: start;
  font-weight: 700;
  color: var(--fw-text-secondary);
  background-color: var(--fw-table-header-bg);
  border-bottom: 1px solid var(--fw-border);
  white-space: nowrap;
}

#app .v-main .contents table td {
  padding: 0.65rem 0.85rem;
  line-height: 1.75;
  vertical-align: top;
}

#app .v-main .contents table th,
#app .v-main .contents table td {

  min-width: 6rem;
  border-radius: 0;
}

#app .v-main .contents table tr td,
#app .v-main .contents table tr td:nth-child(2n),
#app .v-main .contents table tr:nth-child(2n) td:nth-child(2n) {
  background-color: transparent;
  border-right: none;
  border-bottom: 1px solid var(--fw-border-subtle);
}

#app .v-main .contents table tr:nth-child(2n) td {
  background-color: var(--fw-table-zebra-bg);
}

#app .v-main .contents table tr:last-child td {
  border-bottom: none;
}

#app .v-main .contents table td > p:last-child {
  margin-bottom: 0;
}

#app .v-main .contents figure.table > table {
  display: table;
  background-color: var(--fw-bg-surface);
  border: 1px solid var(--fw-border);
  border-radius: var(--fw-radius);
}

#app .v-main .contents .table-container > table {
  display: table;
}

#app .v-main .contents figure.table > table th,
#app .v-main .contents figure.table > table td {
  border: none;
  border-bottom: 1px solid var(--fw-border-subtle);
  box-shadow: none;
  padding: 0.65rem 0.85rem;
}

#app .v-main .contents figure.table > table th,
#app .v-main .contents figure.table > table tbody th {
  background-color: var(--fw-table-header-bg);
  color: var(--fw-text-secondary);
}

#app .v-main .contents code {
  background-color: var(--fw-code-bg);
  color: var(--fw-code-text);
  border: 1px solid var(--fw-border-subtle);
  border-radius: var(--fw-radius-sign);
  padding: 0.05em 0.35em;
  font-family: var(--fw-font-mono);
  font-size: 0.9em;
  font-weight: 400;
  box-shadow: none;
}

#app .v-main .contents .prismjs,
#app .v-main .contents pre:not(.prismjs) {
  background-color: var(--fw-code-block-bg);
  border: 1px solid var(--fw-border-subtle);
  border-radius: var(--fw-radius);
  margin: 1.4em 0;
  overflow-x: auto;
  font-family: var(--fw-font-mono);
  font-size: 0.875rem;
}

#app .v-main .contents pre:not(.prismjs) {
  padding: 1rem;
  color: var(--fw-code-block-text);
}

#app .v-main .contents pre:not(.prismjs) code {
  background-color: transparent;
  border: none;
  padding: 0;
  color: var(--fw-code-block-text);
}

#app .v-main .contents .prismjs > code {
  background-color: transparent;
  border: none;
  padding: 0;
  color: var(--fw-code-block-text);
  font-family: var(--fw-font-mono);
  font-size: 0.875rem;
  line-height: 1.7;
}

#app .v-main .contents kbd {
  background-color: var(--fw-bg-subtle);
  color: var(--fw-text-primary);
  border: 1px solid var(--fw-border);
  border-bottom-width: 2px;
  border-radius: var(--fw-radius-sign);
  padding: 0.1em 0.4em;
  font-family: var(--fw-font-mono);
  font-size: 0.85em;
}

#app .v-main .contents .mention {
  background-color: var(--fw-accent-soft);
  color: var(--fw-accent);
  border-radius: var(--fw-radius-sign);
}

#app .v-main .contents blockquote {
  background-color: var(--fw-callout-bg);
  border: 1px solid var(--fw-border-subtle);
  border-left: 3px solid var(--fw-text-secondary);
  border-radius: var(--fw-radius);
  color: var(--fw-text-primary);
  padding: 0.9rem 1.1rem 0.9rem 2.9rem;
  margin: 1.4em 0;
}

#app .v-main .contents blockquote::before {
  left: 0.95rem;
  margin-top: -11px;
  font-size: 21px;
  color: var(--fw-text-secondary);
}

#app .v-main .contents blockquote > p:last-child {
  margin-bottom: 0;
}

#app .v-main .contents blockquote.is-info,
#app .v-main .contents blockquote.is-warning,
#app .v-main .contents blockquote.is-danger,
#app .v-main .contents blockquote.is-success {
  background-color: var(--fw-callout-bg);
  border-color: var(--fw-border-subtle);
  color: var(--fw-text-primary);
  box-shadow: none;
}

#app .v-main .contents blockquote.is-info { border-left-color: var(--fw-info); }
#app .v-main .contents blockquote.is-warning { border-left-color: var(--fw-warning); }
#app .v-main .contents blockquote.is-danger { border-left-color: var(--fw-danger); }
#app .v-main .contents blockquote.is-success { border-left-color: var(--fw-ok); }

#app .v-main .contents blockquote.is-info::before { color: var(--fw-info); }
#app .v-main .contents blockquote.is-warning::before { color: var(--fw-warning); }
#app .v-main .contents blockquote.is-danger::before { color: var(--fw-danger); }
#app .v-main .contents blockquote.is-success::before { color: var(--fw-ok); }

#app .v-main .contents blockquote code:not([class^="language-"]),
#app .v-main .contents blockquote.is-info code:not([class^="language-"]),
#app .v-main .contents blockquote.is-warning code:not([class^="language-"]),
#app .v-main .contents blockquote.is-danger code:not([class^="language-"]),
#app .v-main .contents blockquote.is-success code:not([class^="language-"]) {
  background-color: var(--fw-code-bg);
  color: var(--fw-code-text);
}

#app .v-main .contents details {
  background-color: var(--fw-bg-surface);
  border: 1px solid var(--fw-border-subtle);
  border-radius: var(--fw-radius);
  color: var(--fw-text-primary);
  margin: 1.4em 0;
}

#app .v-main .contents details > summary {
  background-color: var(--fw-bg-subtle);
  color: var(--fw-text-primary);
  cursor: pointer;
}

@media (max-width: 960px) {

  #app .v-main .contents {
    line-height: 1.8;
  }

  #app .v-main .contents table {
    font-size: 0.875rem;
  }

  #app .v-main .contents table th,
  #app .v-main .contents table td,
  #app .v-main .contents figure.table > table th,
  #app .v-main .contents figure.table > table td {
    padding: 0.5rem 0.6rem;
  }

  #app .v-main .contents table th {
    white-space: normal;
  }

  #app .v-main .contents blockquote {
    padding: 0.8rem 0.9rem 0.8rem 2.6rem;
  }

  #app .v-main .contents .prismjs {
    padding-left: 1rem;
  }
}

/* ===== components.css ==================================================== */
#app .v-main .contents .fw-hero {
  margin: 0 0 2.6em;
}

#app .v-main .contents .fw-hero > h1,
#app .v-main .contents .fw-hero-title {
  font-size: clamp(1.625rem, 1.25rem + 1.6vw, 2.25rem);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
  margin: 0 0 0.6rem;
  padding: 0;
  border: 0;
  color: var(--fw-text-primary);
}

#app .v-main .contents .fw-hero > p,
#app .v-main .contents .fw-hero-lead {
  max-width: var(--fw-measure);
  font-size: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  line-height: 1.8;
  color: var(--fw-text-secondary);
  margin: 0;
}

#app .v-main .contents .fw-hero > p + p {
  margin-top: 0.6rem;
}

#app .v-main .contents h2.fw-section-label,
#app .v-main .contents .fw-section-label {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin: 2.8em 0 1.1em;
  padding-top: 1.5rem;

  border-top: 1px solid var(--fw-border);
  font-size: 0.9375rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--fw-text-primary);
}

#app .v-main .contents h2.fw-section-label {

  border-bottom: 0;
  padding-bottom: 0;
}

#app .v-main .contents .fw-section-label::before {
  content: "";
  flex: none;
  width: 0.85em;
  height: 0.85em;
  background-color: var(--fw-text-primary);
}

#app .v-main .contents .fw-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: 1rem;
  margin: 1.4em 0 2em;
  padding: 0;
  list-style: none;
}

#app .v-main .contents .fw-card-grid > li {
  margin: 0;
  list-style: none;
}

#app .v-main .contents .fw-card-grid > li::before {
  content: none;
  display: none;
}

#app .v-main .contents .fw-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  height: 100%;
  min-width: 0;
  background-color: var(--fw-bg-surface);
  border: 1px solid var(--fw-border);
  border-radius: var(--fw-radius);
  padding: 1.05rem 1.15rem 1.15rem;
  color: inherit;
  text-decoration: none;
  transition:
    background-color var(--fw-duration) var(--fw-ease),
    border-color var(--fw-duration) var(--fw-ease);
}

#app .v-main .contents .fw-card > h3,
#app .v-main .contents .fw-card > h4,
#app .v-main .contents .fw-card-title {
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.5;
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--fw-text-primary);
  overflow-wrap: anywhere;
}

#app .v-main .contents .fw-card > p,
#app .v-main .contents .fw-card-text {
  font-size: 0.9375rem;
  line-height: 1.75;
  color: var(--fw-text-secondary);
  margin: 0;
  overflow-wrap: anywhere;
}

#app .v-main .contents .fw-card > h3 a:not(.toc-anchor),
#app .v-main .contents .fw-card > h4 a:not(.toc-anchor) {
  color: var(--fw-link);
  text-decoration: underline;
  text-decoration-color: var(--fw-link-underline);
  text-underline-offset: 0.18em;
}

#app .v-main .contents .fw-card > h3 a:not(.toc-anchor)::after,
#app .v-main .contents .fw-card > h4 a:not(.toc-anchor)::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}

#app .v-main .contents a.fw-card:hover {
  background-color: var(--fw-bg-raised);
  border-color: var(--fw-text-secondary);
}

#app .v-main .contents .fw-card:has(a:hover) {
  background-color: var(--fw-bg-raised);
  border-color: var(--fw-text-secondary);
}

#app .v-main .contents a.fw-card:hover .fw-card-title {
  color: var(--fw-link-hover);
}

#app .v-main .contents .fw-card:has(a:hover) > h3 a {
  color: var(--fw-link-hover);
}

#app .v-main .contents .fw-card:has(a:focus-visible) {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: 2px;
}

#app .v-main .contents .fw-card > h3 a:not(.toc-anchor):focus-visible,
#app .v-main .contents .fw-card > h4 a:not(.toc-anchor):focus-visible {
  outline: none;
}

#app .v-main .contents .fw-link-arrow {
  display: inline-flex;
  align-items: baseline;
  gap: 0.4em;
  font-weight: 700;
  color: var(--fw-link);
}

#app .v-main .contents .fw-link-arrow::after {
  content: "";
  width: 0.85em;
  height: 0.85em;
  background-color: currentColor;
  -webkit-mask: var(--fw-arrow) center / contain no-repeat;
  mask: var(--fw-arrow) center / contain no-repeat;
  align-self: center;
  transition: translate var(--fw-duration) var(--fw-ease);
}

@media (hover: hover) and (pointer: fine) {
  #app .v-main .contents .fw-link-arrow:hover {
    color: var(--fw-link-hover);
  }

  #app .v-main .contents .fw-link-arrow:hover::after {
    translate: 0.2em 0;
  }
}

#app .v-main .contents .fw-route-badge,
#app .v-main .contents a[href*="铁路#"] {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.9375em;
  font-weight: 700;
  line-height: 1.6;
  white-space: nowrap;
  vertical-align: baseline;
  color: var(--fw-text-primary);
}

#app .v-main .contents .fw-route-badge::before,
#app .v-main .contents a[href*="铁路#"]::before {
  content: "";
  flex: none;
  width: 0.85em;
  height: 0.85em;
  background-color: var(--fw-route-color, var(--fw-text-secondary));
  box-shadow: inset 0 0 0 1px var(--fw-chip-edge);
}

#app .v-main .contents a[href*="铁路#"] {
  text-decoration: none;
  background-image: none;
  padding: 0;
  margin: 0;
}

#app .v-main .contents a[href*="铁路#"]:hover {
  color: var(--fw-link-hover);
}

#app .v-main .contents .fw-line-bar {
  max-width: var(--fw-measure);
  margin: 1.2em 0 1.6em;
  padding: 0;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--fw-text-secondary);
}

#app .v-main .contents .fw-line-bar::before {
  content: "";
  display: block;
  height: 0.5rem;
  margin-bottom: 0.6rem;
  background-color: var(--fw-route-color, var(--fw-border));
  box-shadow: inset 0 0 0 1px var(--fw-chip-edge);
}

#app .v-main .contents .is-line-fta-sl,
#app .v-main .contents a[href*="铁路#"][href$="#sl"],
#app .v-main .contents tr#sl > td:first-child { --fw-route-color: var(--fw-line-fta-sl); }

#app .v-main .contents .is-line-surn-main,
#app .v-main .contents a[href*="铁路#"][href$="#main"],
#app .v-main .contents tr#main > td:first-child { --fw-route-color: var(--fw-line-surn-main); }

#app .v-main .contents .is-line-surn-bs,
#app .v-main .contents a[href*="铁路#"][href$="#bs"],
#app .v-main .contents tr#bs > td:first-child { --fw-route-color: var(--fw-line-surn-bs); }

#app .v-main .contents .is-line-surn-lt,
#app .v-main .contents a[href*="铁路#"][href$="#lt"],
#app .v-main .contents tr#lt > td:first-child { --fw-route-color: var(--fw-line-surn-lt); }

#app .v-main .contents .is-line-surn-frn,
#app .v-main .contents a[href*="铁路#"][href$="#frn"],
#app .v-main .contents tr#frn > td:first-child { --fw-route-color: var(--fw-line-surn-frn); }

#app .v-main .contents .is-line-surn-pn,
#app .v-main .contents a[href*="铁路#"][href$="#pn"],
#app .v-main .contents tr#pn > td:first-child { --fw-route-color: var(--fw-line-surn-pn); }

#app .v-main .contents .is-line-surc-ws,
#app .v-main .contents a[href*="铁路#"][href$="#ws"],
#app .v-main .contents tr#ws > td:first-child { --fw-route-color: var(--fw-line-surc-ws); }

#app .v-main .contents .is-line-surc-ds,
#app .v-main .contents a[href*="铁路#"][href$="#ds"],
#app .v-main .contents tr#ds > td:first-child { --fw-route-color: var(--fw-line-surc-ds); }

#app .v-main .contents .is-line-surc-mt,
#app .v-main .contents a[href*="铁路#"][href$="#mt"],
#app .v-main .contents tr#mt > td:first-child { --fw-route-color: var(--fw-line-surc-mt); }

#app .v-main .contents .is-line-krtk-l,
#app .v-main .contents a[href*="铁路#"][href$="#l"],
#app .v-main .contents tr#l > td:first-child { --fw-route-color: var(--fw-line-krtk-l); }

#app .v-main .contents table.fw-lines td:first-child {
  display: flex;
  align-items: center;
  gap: 0.5em;
}

#app .v-main .contents table.fw-lines td:first-child::before {
  content: "";
  flex: none;
  width: 0.9em;
  height: 0.9em;
  background-color: var(--fw-route-color, var(--fw-text-secondary));
  box-shadow: inset 0 0 0 1px var(--fw-chip-edge);
}

#app .v-main .contents .fw-station-code {
  display: inline-block;
  padding: 0.05em 0.4em;
  border: 1px solid var(--fw-border);
  border-radius: var(--fw-radius-sign);
  background-color: var(--fw-bg-subtle);
  color: var(--fw-text-primary);
  font-size: 0.875em;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

#app .v-main .contents .fw-status {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  font-size: 0.9375em;
  font-weight: 700;
  color: var(--fw-text-primary);
  white-space: nowrap;
}

#app .v-main .contents .fw-status::before {
  content: "";
  flex: none;
  width: 0.7em;
  height: 0.7em;
  background-color: var(--fw-text-muted);
}

#app .v-main .contents .fw-status.is-ok::before { background-color: var(--fw-ok); }
#app .v-main .contents .fw-status.is-warning::before { background-color: var(--fw-warning); }
#app .v-main .contents .fw-status.is-danger::before { background-color: var(--fw-danger); }
#app .v-main .contents .fw-status.is-info::before { background-color: var(--fw-info); }

#app .v-main .contents .fw-line-identity {
  display: grid;
  grid-template-columns: minmax(6rem, auto) minmax(0, 1fr);
  width: 100%;
  max-width: var(--fw-measure);
  margin-inline: auto;
  border-block: 1px solid var(--fw-border);
  background-color: var(--fw-bg-surface);
}

#app .v-main .contents .fw-wide > .fw-line-identity,
#app .v-main .contents .fw-full-width > .fw-line-identity {
  max-width: none;
}

#app .v-main .contents .fw-line-identity__code {
  display: grid;
  place-items: center;
  min-width: 6rem;
  min-height: 5.5rem;
  padding: 0.8rem 1rem;
  border-inline-start: 0.55rem solid var(--fw-route-color, var(--fw-border));
  border-inline-end: 1px solid var(--fw-border);
  color: var(--fw-text-primary);
  font-family: var(--fw-font-mono);
  font-size: clamp(1.65rem, 1.3rem + 1vw, 2.25rem);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}

#app .v-main .contents .fw-line-identity__name {
  align-self: center;
  min-width: 0;
  padding: 0.9rem clamp(1rem, 2vw, 1.5rem);
}

#app .v-main .contents .fw-line-identity__name > strong {
  display: block;
  font-size: clamp(1.25rem, 1.08rem + 0.55vw, 1.65rem);
  line-height: 1.35;
}

#app .v-main .contents .fw-line-identity__name > span {
  display: block;
  margin-top: 0.15rem;
  color: var(--fw-text-secondary);
  font-style: italic;
  font-weight: 650;
  line-height: 1.35;
}

#app .v-main .contents .fw-line-identity__meta {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 0.15rem clamp(1.25rem, 3vw, 2.5rem);
  margin: 0;
  padding: 0.7rem 1rem 0.8rem;
  border-top: 1px solid var(--fw-border-subtle);
  color: var(--fw-text-secondary);
  font-size: 0.875rem;
}

#app .v-main .contents .fw-line-identity__meta > span {
  white-space: nowrap;
}

#app .v-main .contents .fw-line-identity__meta strong {
  color: var(--fw-text-primary);
}

#app .v-main .contents .fw-line-map {
  display: grid;
  grid-auto-rows: minmax(3.4rem, auto);
  margin: 0;
  padding: 0;
  list-style: none;
}

#app .v-main .contents .fw-line-map__label {
  max-width: none;
  margin: 0 0 0.45rem;
  padding: 0 0 0.55rem;
  border-bottom: 1px solid var(--fw-border-subtle);
  color: var(--fw-text-secondary);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: 0.04em;
}

#app .v-main .contents details.fw-line-map-window {
  display: block;
  width: 100%;
  max-width: min(100%, 56rem);
  height: auto;
  margin: 1.6em auto 2.2em;
  padding: 0;
  border: 1px solid var(--fw-border);
  background-color: transparent;
}

#app .v-main .contents .fw-wide > details.fw-line-map-window,
#app .v-main .contents .fw-full-width > details.fw-line-map-window {
  max-width: 100%;
}

#app .v-main .contents details.fw-line-map-window[open] {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  height: clamp(25rem, 64dvh, 40rem);
  overflow: hidden;
}

#app .v-main .contents details.fw-line-map-window > summary {
  display: flex;
  box-sizing: border-box;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  min-width: 0;
  gap: 1rem;
  min-height: 3rem;
  margin: 0;
  padding: 0.6rem 0.85rem;
  border: 0;
  border-bottom: 1px solid transparent;
  background-color: var(--fw-bg-subtle);
  color: var(--fw-text-primary);
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 700;
  list-style: none;
}

#app .v-main .contents details.fw-line-map-window > summary::-webkit-details-marker {
  display: none;
}

#app .v-main .contents details.fw-line-map-window > summary::after {
  content: "展开";
  color: var(--fw-text-secondary);
  font-size: 0.8125rem;
  font-weight: 500;
}

#app .v-main .contents details.fw-line-map-window[open] > summary {
  border-bottom-color: var(--fw-border-subtle);
}

#app .v-main .contents details.fw-line-map-window[open] > summary::after {
  content: "收起";
}

#app .v-main .contents details.fw-line-map-window > .fw-line-map-scroll {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  max-height: 100%;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding: 0.35rem 1rem 0.75rem 0.5rem;
}

#app .v-main .contents details.fw-line-map-window .fw-line-map__label {
  margin: 0.8rem 0 0.25rem 2.5rem;
  padding-bottom: 0.35rem;
}

#app .v-main .contents .fw-station {
  --fw-track-main: 1rem;
  --fw-track-branch: 3.35rem;
  display: grid;
  grid-template-columns: 4.25rem minmax(0, 1fr);
  min-height: 3.4rem;
}

#app .v-main .contents .fw-line-map > .fw-station + .fw-station {
  margin-top: 0;
}

#app .v-main .contents .fw-track {
  position: relative;
  min-height: 100%;
}

#app .v-main .contents .fw-track::before {
  content: "";
  position: absolute;
  inset-block: 0;
  inset-inline-start: calc(var(--fw-track-main) - 0.1rem);
  width: 0.2rem;
  background-color: var(--fw-route-color, var(--fw-border));
}

#app .v-main .contents .fw-station:first-of-type .fw-track::before {
  inset-block-start: 50%;
}

#app .v-main .contents .fw-station:last-child .fw-track::before {
  inset-block-end: 50%;
}

#app .v-main .contents .fw-node {
  position: absolute;
  z-index: 1;
  inset-block-start: 50%;
  inset-inline-start: var(--fw-track-main);
  width: 0.8rem;
  height: 0.22rem;
  translate: -50% -50%;
  border: 0;
  background-color: var(--fw-route-color, var(--fw-border));
}

#app .v-main .contents .fw-station--interchange .fw-node {
  width: 0.78rem;
  height: 0.78rem;
  border: 0.18rem solid var(--fw-route-color, var(--fw-border));
  border-radius: 50%;
  background-color: var(--fw-bg-canvas);
}

#app .v-main .contents .fw-station--terminus .fw-node {
  width: 0.78rem;
  height: 0.78rem;
  border: 0.18rem solid var(--fw-route-color, var(--fw-border));
  border-radius: 50%;
  background-color: var(--fw-bg-canvas);
  box-shadow: 0 0 0 0.18rem var(--fw-bg-canvas),
    0 0 0 0.3rem var(--fw-route-color, var(--fw-border));
}

#app .v-main .contents .fw-station--former:not(.fw-station--branch) .fw-track::before {
  background: repeating-linear-gradient(
    to bottom,
    var(--fw-text-muted) 0 0.45rem,
    transparent 0.45rem 0.8rem
  );
  box-shadow: none;
}

#app .v-main .contents .fw-station--former .fw-node {
  width: 0.68rem;
  height: 0.68rem;
  border: 0.16rem solid var(--fw-text-muted);
  border-color: var(--fw-text-muted);
  border-radius: 0;
  background-color: var(--fw-bg-canvas);
  rotate: 45deg;
}

#app .v-main .contents .fw-branch-line {
  position: absolute;
  z-index: 0;
  pointer-events: none;
}

#app .v-main .contents .fw-station--branch .fw-branch-line {
  inset-block-start: calc(50% - 0.08rem);
  inset-inline-start: var(--fw-track-main);
  width: calc(var(--fw-track-branch) - var(--fw-track-main));
  border-top: 0.16rem dashed var(--fw-text-muted);
}

#app .v-main .contents .fw-station--branch .fw-node {
  inset-inline-start: var(--fw-track-branch);
}

#app .v-main .contents .fw-station--through-in .fw-branch-line {
  inset-block-start: 0;
  inset-inline-start: var(--fw-track-main);
  width: calc(var(--fw-track-branch) - var(--fw-track-main));
  height: 50%;
  border-inline-end: 0.16rem solid var(--fw-text-muted);
  border-bottom: 0.16rem solid var(--fw-text-muted);
  border-end-end-radius: 0.8rem;
}

#app .v-main .contents .fw-station--new .fw-station-state::before {
  content: "+ ";
  font-family: var(--fw-font-mono);
}

#app .v-main .contents .fw-station-info {
  display: grid;
  grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
  align-items: center;
  gap: 0.25rem 1.25rem;
  min-width: 0;
  padding: 0.4rem 0;
}

#app .v-main .contents .fw-station-heading {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.1rem 0.65rem;
  line-height: 1.45;
}

#app .v-main .contents .fw-station-heading > strong {
  font-size: 1rem;
}

#app .v-main .contents .fw-station-name-en {
  color: var(--fw-text-secondary);
  font-size: 0.875rem;
  font-style: italic;
}

#app .v-main .contents .fw-station-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-start;
  gap: 0.2rem 0.75rem;
  margin: 0;
  color: var(--fw-text-muted);
  font-size: 0.875rem;
  line-height: 1.6;
}

#app .v-main .contents .fw-station-state {
  font-weight: 700;
  color: var(--fw-text-secondary);
}

#app .v-main .contents .fw-line-map .fw-station-code {
  padding: 0;
  border: 0;
  background: none;
  color: var(--fw-text-primary);
  font-size: 0.8125rem;
}

@media (max-width: 760px) {
  #app .v-main .contents .fw-station-info {
    grid-template-columns: minmax(0, 1fr);
    gap: 0.1rem;
    padding-block: 0.5rem;
  }

  #app .v-main .contents .fw-station-meta {
    justify-content: flex-start;
  }
}

@media (max-width: 540px) {
  #app .v-main .contents .fw-line-identity {
    grid-template-columns: 5rem minmax(0, 1fr);
  }

  #app .v-main .contents .fw-line-identity__code {
    min-width: 5rem;
    min-height: 4.75rem;
  }

  #app .v-main .contents .fw-line-identity__meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #app .v-main .contents .fw-line-identity__meta > span {
    white-space: normal;
  }

  #app .v-main .contents .fw-station {
    --fw-track-main: 0.75rem;
    --fw-track-branch: 2.4rem;
    grid-template-columns: 3.1rem minmax(0, 1fr);
  }

  #app .v-main .contents details.fw-line-map-window[open] {
    height: min(70dvh, 34rem);
  }

  #app .v-main .contents details.fw-line-map-window > .fw-line-map-scroll {
    padding-inline: 0.25rem 0.65rem;
  }
}

#app .v-main .contents .fw-sign-caption {
  margin: -0.35em auto 1.1em;
  font-style: italic;
  font-weight: 650;
  font-size: 1.0625rem;
  line-height: 1.25;
  color: var(--fw-text-secondary);
}

#app .v-main .contents .fw-hero .fw-sign-caption {
  margin-top: 0.1em;
  font-size: 1.25rem;
}

#app .v-main .contents .fw-feature-image {
  max-width: min(100%, calc(var(--fw-measure) + 8rem));
  margin: 1.6em 0 2.4em;
}

#app .v-main .contents .fw-feature-image img {
  display: block;
  width: 100%;
  height: auto;

  border-radius: var(--fw-radius-window);
}

#app .v-main .contents .fw-feature-image figcaption {
  margin-top: 0.9rem;
  font-size: 0.9375rem;
  color: var(--fw-text-secondary);
  background: none;
  padding: 0;
}

#app .v-main .contents table.fw-meta {
  width: auto;
  min-width: min(100%, 22rem);
  max-width: var(--fw-measure);
  margin-inline: auto;
  font-size: 0.9375rem;
}

#app .v-main .contents table.fw-meta th {
  width: 1%;
  white-space: nowrap;
  vertical-align: top;
  background-color: var(--fw-bg-subtle);
  color: var(--fw-text-secondary);
  text-align: start;
}

#app .v-main .contents table.fw-meta td {
  color: var(--fw-text-primary);
}

@media (max-width: 540px) {

  #app .v-main .contents table.fw-meta,
  #app .v-main .contents table.fw-meta tbody,
  #app .v-main .contents table.fw-meta tr,
  #app .v-main .contents table.fw-meta th,
  #app .v-main .contents table.fw-meta td {
    display: block;
    width: auto;
  }

  #app .v-main .contents table.fw-meta th {
    border-bottom: 0;
    padding-bottom: 0.15rem;
  }

  #app .v-main .contents table.fw-meta tr + tr th {
    border-top: 1px solid var(--fw-border-subtle);
    padding-top: 0.65rem;
  }
}

@media (max-width: 600px) {
  #app .v-main .contents .fw-card {
    padding: 0.95rem 1rem 1.05rem;
  }
}

#app .v-main .contents .fw-portal {
  container-type: inline-size;
  min-width: 0;
  max-width: none;
}

#app .v-main .contents .fw-portal .fw-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.5rem, 3vw, 3rem);
  margin: 0 0 var(--fw-section-space);
}

#app .v-main .contents .fw-hero > div {
  min-width: 0;
}

#app .v-main .contents .fw-hero > div > h1 {
  font-size: clamp(2rem, 1.4rem + 1.6vw, 3rem);
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -0.02em;
  margin: 0 0 1rem;
  padding: 0;
  border: 0;
}

#app .v-main .contents .fw-hero > div > p {
  color: var(--fw-text-secondary);
  line-height: 1.85;
  margin-bottom: 1rem;
}

#app .v-main .contents .fw-portal .fw-feature-image {
  max-width: 100%;
}

#app .v-main .contents .fw-hero > .fw-feature-image {
  margin: 0;
  min-width: 0;
}

#app .v-main .contents .fw-portal .fw-feature-image img {
  object-fit: contain;
}

#app .v-main .contents .fw-section {
  margin-block: var(--fw-section-space);
}

#app .v-main .contents .fw-section > .fw-section-label {
  margin-top: 0;
}

#app .v-main .contents .fw-section > div {
  min-width: 0;
  max-width: var(--fw-measure);
}

#app .v-main .contents .fw-section > div > :last-child {
  margin-bottom: 0;
}

#app .v-main .contents .fw-portal > p,
#app .v-main .contents .fw-portal > ul,
#app .v-main .contents .fw-portal > blockquote,
#app .v-main .contents .fw-portal > .table-container,
#app .v-main .contents .fw-portal > table {
  max-width: var(--fw-measure);
}

#app .v-main .contents .fw-nav-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  gap: 0 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

#app .v-main .contents .fw-nav-list > li {
  margin: 0;
  padding-block: 0.6rem;
  border-bottom: 1px solid var(--fw-border-subtle);
  min-width: 0;
}

#app .v-main .contents .fw-nav-list a,
#app .v-main .contents .fw-hero nav a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding-block: 0.35rem;
  font-weight: 700;
}

#app .v-main .contents .fw-nav-list p {
  margin: 0 0 0.5rem;
  font-size: 0.9375rem;
  color: var(--fw-text-secondary);
}

#app .v-main .contents .fw-hero nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 1.25rem;
  margin-top: 1rem;
}

@container (min-width: 48rem) {
  #app .v-main .contents .fw-hero:has(> .fw-feature-image) {
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  }

  #app .v-main .contents .fw-section {
    display: grid;
    grid-template-columns: minmax(10rem, 0.3fr) minmax(0, 1fr);
    gap: 2rem;
    border-top: 1px solid var(--fw-border);
    padding-top: 1.5rem;
  }

  #app .v-main .contents .fw-section > .fw-section-label {
    padding-top: 0;
    border-top: 0;
    align-self: start;
  }
}

#app .v-main .contents .fw-card > p a {
  position: relative;
  z-index: 1;
}

#app .v-main .contents .fw-nav-list > li::before {
  content: none;
}

#app .v-main .contents ul.fw-nav-list {
  padding: 0;
}

#app .v-main .contents ul.fw-nav-list > li + li {
  margin-top: 0;
}

#app .v-main .contents ul.fw-nav-list > li > p {
  display: block;
}

#app .v-main .contents .fw-portal > .fw-section,
#app .v-main .contents .fw-portal > .fw-section-label,
#app .v-main .contents .fw-portal > hr {
  width: 100%;
  max-width: none;
  margin-inline: auto;
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h1 {
  font-size: clamp(1.75rem, 1.4rem + 1.6vw, 2.5rem);
  line-height: 1.25;
  letter-spacing: -0.015em;
  border: 0;
  margin: 0 0 0.6rem;
  padding: 0;
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h1 + p {
  font-size: clamp(1.0625rem, 1rem + 0.4vw, 1.25rem);
  line-height: 1.75;
  color: var(--fw-text-secondary);
  max-width: var(--fw-measure);
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h2 {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  margin: 3em 0 1.1em;
  padding: 1.5rem 0 0;
  border-top: 1px solid var(--fw-border);
  border-bottom: 0;
  font-size: 0.9375rem;
  letter-spacing: 0.02em;
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h2::before {
  content: "";
  flex: none;
  width: 0.85em;
  height: 0.85em;
  background-color: var(--fw-text-primary);
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h3 {
  margin: 0;
  padding: 1.15rem 0 0.15rem;
  border-top: 1px solid var(--fw-border-subtle);
  font-size: 1.125rem;
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a {
  color: inherit;
  text-decoration: none;
  background-image: none;
  padding: 0;
  margin: 0;
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a::after {
  content: "";
  display: inline-block;
  width: 0.8em;
  height: 0.8em;
  margin-left: 0.4em;
  vertical-align: -0.02em;
  background-color: var(--fw-link);
  -webkit-mask: var(--fw-arrow) center / contain no-repeat;
  mask: var(--fw-arrow) center / contain no-repeat;
  transition: translate var(--fw-duration) var(--fw-ease);
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a[href^="http"]::after,
html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a[href^="//"]::after,
html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a.is-external-link::after {
  rotate: -45deg;
}

@media (hover: hover) and (pointer: fine) {
  html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a:hover {
    color: var(--fw-link-hover);
  }

  html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a:hover::after {
    background-color: var(--fw-link-hover);
    translate: 0.2em 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  html[data-fw-layout="portal"] #app .v-main .contents > div > h3 a::after {
    transition: none;
  }
}

html[data-fw-layout="portal"] #app .v-main .contents > div > :where(h3 + p ~ p) {
  margin: 0.35rem 0 1.2rem;
  color: var(--fw-text-secondary);
  font-weight: 400;
  max-width: var(--fw-measure);
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h2 + p {
  margin: 0 0 1.4rem;
  color: var(--fw-text-primary);
  font-weight: 400;
  max-width: var(--fw-measure);
}

html[data-fw-layout="portal"] #app .v-main .contents > div > h3 + p {
  margin: 0.25rem 0 0;
  color: var(--fw-text-primary);
  font-weight: 700;
  max-width: var(--fw-measure);
}

html[data-fw-layout="portal"] #app .v-main .contents figure.image,
html[data-fw-layout="portal"] #app .v-main .contents .fw-feature-image {
  max-width: min(100%, calc(var(--fw-measure) + 8rem));
  margin: 1.8em 0 0.6em;
}

html[data-fw-layout="portal"] #app .v-main .contents figure.image figcaption {
  margin-top: 0.9rem;
  font-size: 0.9375rem;
  color: var(--fw-text-secondary);
  background: none;
  padding: 0;
  text-align: start;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div {

  --fw-log-gutter: 2.25rem;
  --fw-log-x: 0.75rem;
  --fw-log-node: 0.875rem;
  --fw-log-stroke: 2px;
  padding-inline-start: var(--fw-log-gutter);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > :not(h2, h2 ~ *, .fw-article-home-link) {
  margin-inline-start: calc(-1 * var(--fw-log-gutter));
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h2 {
  position: relative;
  margin: 2.8em 0 0.2em;
  padding: 0;
  border: 0;
  font-variant-numeric: tabular-nums;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h2:first-of-type {
  margin-top: 1.6em;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h2::before {
  content: "";
  position: absolute;
  z-index: 1;
  top: 0.725em;
  top: 0.5lh;
  left: calc(var(--fw-log-x) - var(--fw-log-gutter));
  box-sizing: border-box;
  width: var(--fw-log-node);
  height: var(--fw-log-node);
  translate: -50% -50%;
  border: var(--fw-log-stroke) solid var(--fw-text-primary);

  border-radius: 50%;
  background-color: var(--fw-bg-canvas);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h2:first-of-type::before {
  box-shadow: 0 0 0 var(--fw-log-stroke) var(--fw-bg-canvas),
    0 0 0 calc(var(--fw-log-stroke) * 2) var(--fw-text-primary);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h2 + p {
  margin: 0 0 0.9em;
  color: var(--fw-text-secondary);
  font-size: 0.9375rem;
}

@supports (overflow: clip) {
  html[data-fw-layout="changelog"] #app .v-main .contents > div {
    overflow-x: visible;
    overflow-y: clip;
  }

  html[data-fw-layout="changelog"] #app .v-main .contents > div > h2::after {
    content: "";
    position: absolute;
    top: 0.725em;
    top: 0.5lh;
    left: calc(var(--fw-log-x) - var(--fw-log-gutter) - var(--fw-log-stroke) / 2);
    width: var(--fw-log-stroke);

    height: 1000rem;

    background: var(--fw-text-primary);
  }

  html[data-fw-layout="changelog"] #app .v-main .contents > div:has(> h2)::after {
    content: "";
    display: block;
    width: var(--fw-log-node);
    height: var(--fw-log-stroke);
    margin-inline-start: calc(var(--fw-log-x) - var(--fw-log-gutter) - var(--fw-log-node) / 2);
    background-color: var(--fw-text-primary);
  }
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3 {
  margin: 1.4em 0 0.5em;
  font-size: 0.9375rem;
  letter-spacing: 0.02em;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3::before {
  content: "";
  display: inline-block;
  width: 0.7em;
  height: 0.7em;
  margin-inline-end: 0.35em;
  vertical-align: 0.02em;
  background-color: var(--fw-log-kind, var(--fw-text-primary));
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3[id^="新增"] {
  --fw-log-kind: var(--fw-ok);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3:is([id^="调整"], [id^="变更"]) {
  --fw-log-kind: var(--fw-warning);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3:is([id^="修复"], [id^="优化"]) {
  --fw-log-kind: var(--fw-info);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > h3:is([id^="移除"], [id^="删除"]) {
  --fw-log-kind: var(--fw-danger);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li:has(> p) + li,
html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li + li:has(> p) {
  margin-top: 0.9em;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li > p {
  margin: 0 0 0.35em;
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li > p:not(:first-child),
html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li > :is(ul, ol) {
  color: var(--fw-text-secondary);
}

html[data-fw-layout="changelog"] #app .v-main .contents > div > ul > li > :last-child {
  margin-bottom: 0;
}

#app .v-main .contents img[data-fw-zoom] {
  cursor: zoom-in;
}

#app .v-main .contents img[data-fw-zoom]:focus-visible {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: 3px;
}

html[data-fw-viewer="open"] {
  overflow: hidden !important;
}

.fw-viewer {
  box-sizing: border-box;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: clamp(1rem, 3vw, 2.5rem);
  padding-top: max(4rem, env(safe-area-inset-top));
  border: 0;
  background-color: var(--fw-viewer-scrim);
  color: var(--fw-viewer-text);
  font-family: var(--fw-font-sans);
  overflow: hidden;
  cursor: zoom-out;
}

.fw-viewer::backdrop {
  background: transparent;
}

.fw-viewer[open] {
  display: grid;
  place-items: center;
}

.fw-viewer__figure {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  justify-items: center;
  align-items: center;
  gap: 0.9rem;
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
}

.fw-viewer__image {
  display: block;
  max-width: 100%;
  max-height: 100%;
  min-height: 0;
  width: auto;
  height: auto;
  object-fit: contain;

  border-radius: var(--fw-radius-window);
  user-select: none;
  -webkit-user-select: none;
}

.fw-viewer__caption {
  max-width: var(--fw-measure);
  color: var(--fw-viewer-text-soft);
  font-size: 0.9375rem;
  line-height: 1.6;
  text-align: center;
}

.fw-viewer__caption[hidden] {
  display: none;
}

.fw-viewer__close {
  position: fixed;
  top: max(0.75rem, env(safe-area-inset-top));
  right: max(0.75rem, env(safe-area-inset-right));
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  padding: 0;
  border: 1px solid var(--fw-viewer-edge);
  border-radius: 0;
  background-color: transparent;
  color: var(--fw-viewer-text);
  cursor: pointer;
}

.fw-viewer__close > span {
  width: 20px;
  height: 20px;
  background-color: currentColor;
  -webkit-mask: var(--fw-icon-close) center / contain no-repeat;
  mask: var(--fw-icon-close) center / contain no-repeat;
}

.fw-viewer__close:focus-visible {
  outline: 3px solid var(--fw-viewer-text);
  outline-offset: 2px;
}

@media (hover: hover) and (pointer: fine) {
  .fw-viewer__close:hover {
    background-color: var(--fw-viewer-hover);
  }
}

@media (prefers-reduced-motion: no-preference) {
  .fw-viewer[open] {
    animation: fw-viewer-in var(--fw-duration-overlay) var(--fw-ease);
  }

  .fw-viewer[open] .fw-viewer__image {
    animation: fw-viewer-image-in var(--fw-duration-overlay-content) var(--fw-ease);
  }
}

@keyframes fw-viewer-in {
  from {
    opacity: 0;
  }
}

@keyframes fw-viewer-image-in {
  from {
    opacity: 0;
    scale: 0.96;
  }
}

/* ===== wikijs-overrides.css ============================================== */
#root #app .nav-header,
#root #app .nav-header-inner {
  background-color: var(--fw-header-bg) !important;
  border-color: var(--fw-header-border) !important;
  color: var(--fw-header-text);
}

#root #app .nav-header {
  border-bottom-style: solid;
  border-bottom-width: 1px;
  box-shadow: none;
}

#app .nav-header .v-toolbar__title {
  font-weight: 700;
  letter-spacing: 0;
  color: var(--fw-header-text);
}

#root #app .nav-header .fw-home-link {
  display: inline-flex;
  align-items: center;
  min-width: 0;
  min-height: 48px;
  color: var(--fw-header-text) !important;
  text-decoration: none;
}

#root #app .nav-header .fw-home-link:hover .v-toolbar__title {
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.25em;
}

#root #app .nav-header .v-icon,
#root #app .nav-header .v-btn,
#root #app .nav-header a,
#root #app .nav-header .v-toolbar__content {
  color: var(--fw-header-text) !important;
}

#root #app .nav-header .v-input,
#root #app .nav-header input {
  color: var(--fw-header-text) !important;
}

#app .nav-header .v-input__slot,
#app .nav-header .search-field .v-input__slot {
  background-color: var(--fw-header-field-bg) !important;
}

#root #app .nav-header .v-text-field--rounded > .v-input__control > .v-input__slot {
  border-radius: 0;
}

#app .nav-header input::placeholder {
  color: var(--fw-header-text-soft) !important;
  opacity: 1;
}

#root #app .nav-header .fw-theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  min-width: 48px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fw-header-text);
  cursor: pointer;
}

#root #app .nav-header .fw-theme-toggle .v-icon {
  color: var(--fw-header-text) !important;
  font-size: 24px;
}

#app .nav-header .fw-theme-toggle:focus-visible {
  outline: 3px solid var(--fw-header-text);
  outline-offset: -3px;
}

#root #app .v-navigation-drawer {
  background-color: var(--fw-bg-surface) !important;
  border-right: 1px solid var(--fw-border-subtle) !important;
}

#root #app .v-navigation-drawer .v-sheet,
#root #app .v-navigation-drawer .v-list {
  background-color: transparent !important;
}

#root #app .v-navigation-drawer .v-list-item,
#root #app .v-navigation-drawer .v-list-item__title,
#root #app .v-navigation-drawer .v-list-item__subtitle {
  color: var(--fw-text-primary) !important;
}

#app .v-navigation-drawer .v-icon {
  color: var(--fw-text-secondary);
}

#app .v-navigation-drawer .v-subheader,
#app .v-navigation-drawer .caption {
  color: var(--fw-text-muted);
  letter-spacing: 0.02em;
}

#app .v-navigation-drawer .v-divider {
  border-color: var(--fw-border-subtle);
}

#app .v-navigation-drawer .v-list-item--link:hover::before {
  opacity: 0;
}

#app .v-navigation-drawer .v-list-item--link:hover {
  background-color: color-mix(in srgb, var(--fw-text-primary) 6%, transparent);
}

#root #app .v-navigation-drawer .v-list-item.v-list-item--active,
#root #app .v-navigation-drawer .v-list-item.v-list-item--active .v-list-item__title {
  color: var(--fw-accent) !important;
  font-weight: 700;
}

#app .v-navigation-drawer .v-list-item--active {
  background-color: var(--fw-accent-soft);
  box-shadow: inset 3px 0 0 0 var(--fw-accent);
}

#app .v-navigation-drawer .v-list-item--active .v-icon {
  color: var(--fw-accent);
}

#root #app .page-toc-card,
#root #app .page-tags-card,
#root #app .page-author-card,
#root #app .page-shortcuts-card {
  background-color: transparent !important;
  border: 0;
  border-top: 1px solid var(--fw-border);
  border-radius: 0;
  box-shadow: none;
  margin-bottom: 1.25rem !important;
  padding-top: 0.85rem;
}

#root #app .page-toc-card {
  border-top: 2px solid var(--fw-text-primary);
}

#root #app .page-toc-card > .overline,
#root #app .page-tags-card > .pa-5,
#root #app .page-author-card > .pa-5 {
  padding: 0 !important;
}

#root #app .page-toc-card .overline,
#root #app .page-tags-card .overline,
#root #app .page-author-card .overline {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.4rem;
  color: var(--fw-text-primary) !important;
  font-size: 0.75rem !important;
  font-weight: 700;
  letter-spacing: 0.04em !important;
  line-height: 1.6;
  text-transform: none;
}

#root #app .page-toc-card .overline::before,
#root #app .page-tags-card .overline::before,
#root #app .page-author-card .overline > span:first-child::before {
  content: "";
  flex: none;
  width: 0.6rem;
  height: 0.6rem;
  background-color: var(--fw-text-primary);
}

#root #app .page-author-card .overline > span:first-child {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

#root #app .page-toc-card .v-list,
#root #app .page-tags-card .v-list {
  background-color: transparent !important;
}

#app .v-navigation-drawer .v-treeview-node__label {
  color: var(--fw-text-secondary) !important;
}

#root #app .page-tags-card .v-chip {
  height: 1.875rem;
  padding: 0 0.6rem;
  border: 1px solid var(--fw-border);

  border-color: var(--fw-border) !important;
  border-radius: 0 !important;
  background-color: var(--fw-bg-surface) !important;
  font-size: 0.8125rem;
  font-weight: 650;
}

#root #app .page-tags-card .v-chip .v-chip__content > span {
  color: var(--fw-text-primary) !important;
}

#root #app .page-tags-card .v-chip .v-icon {
  color: var(--fw-text-secondary) !important;
}

#root #app .page-tags-card .v-chip::before {
  opacity: 0 !important;
}

@media (hover: hover) and (pointer: fine) {
  #root #app .page-tags-card .v-chip:hover {
    border-color: var(--fw-text-primary) !important;
  }
}

#root #app .page-author-card-name {
  color: var(--fw-text-primary) !important;
  font-weight: 650;
}

#root #app .page-author-card-date {
  color: var(--fw-text-secondary) !important;
  font-variant-numeric: tabular-nums;
}

#root #app .page-shortcuts-card .v-toolbar {
  background-color: transparent !important;
  height: auto !important;
}

#root #app .page-shortcuts-card .v-toolbar__content {
  height: auto !important;
  padding: 0;
  gap: 0.25rem;
}

#root #app .page-shortcuts-card .spacer {
  display: none;
}

#root #app .page-shortcuts-card .v-btn {
  border-radius: 0;
}

#root #app .page-shortcuts-card .v-btn .v-icon {
  color: var(--fw-text-secondary) !important;
}

#root #app .page-toc-card {

  --fw-toc-x: 0.75rem;

  --fw-toc-text: 1.875rem;
}

#root #app .page-toc-card .v-list {
  padding: 0.15rem 0 0 !important;
}

#root #app .page-toc-card .v-list-item {
  min-height: 2.25rem;

  margin: 0 !important;
  padding: 0.3rem 0.5rem 0.3rem var(--fw-toc-text);
  border-radius: 0;
}

#root #app .page-toc-card .v-list-item > .v-icon {
  display: none;
}

#root #app .page-toc-card .v-list-item__title {
  padding: 0 !important;
  color: var(--fw-text-secondary) !important;
  font-size: 0.8125rem !important;
  font-weight: 400;
  line-height: 1.5 !important;
}

#root #app .page-toc-card .v-list-item__title:not(.caption) {
  color: var(--fw-text-primary) !important;
  font-weight: 700;
}

#root #app .page-toc-card .v-list-item__title::before {
  content: "";
  position: absolute;
  inset-block: 0;
  inset-inline-start: calc(var(--fw-toc-x) - 1px);
  width: 2px;
  background-color: var(--fw-border);
}

#root #app .page-toc-card .v-list-item:first-child .v-list-item__title::before {
  inset-block-start: 50%;
}

#root #app .page-toc-card .v-list-item:last-child .v-list-item__title::before {
  inset-block-end: 50%;
}

#root #app .page-toc-card .v-list-item:only-child .v-list-item__title::before {
  content: none;
}

#root #app .page-toc-card .v-list-item__title::after {
  content: "";
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: var(--fw-toc-x);
  width: 0.6rem;
  height: 2px;
  translate: -50% -50%;
  background-color: var(--fw-border);
}

#root #app .page-toc-card .v-list-item__title:not(.caption)::after {
  width: 0.7rem;
  height: 0.7rem;
  border: 2px solid var(--fw-text-primary);

  border-radius: 50%;
  background-color: var(--fw-bg-canvas);
}

#root #app .page-toc-card .v-list-item[data-fw-toc="passed"] .v-list-item__title::before,
#root #app .page-toc-card .v-list-item[data-fw-toc="passed"] .v-list-item__title.caption::after {
  background-color: var(--fw-text-primary);
}

#root #app .page-toc-card .v-list-item[data-fw-toc="current"] .v-list-item__title::before {
  background-image: linear-gradient(
    to bottom,
    var(--fw-text-primary) 50%,
    var(--fw-border) 50%
  );
}

#root #app .page-toc-card .v-list-item[data-fw-toc="current"]:first-child .v-list-item__title::before {
  background-image: none;
}

#root #app .page-toc-card .v-list-item[data-fw-toc="current"] .v-list-item__title::after {
  width: 0.7rem;
  height: 0.7rem;
  border: 0;
  border-radius: 0;
  background-color: var(--fw-accent);

  box-shadow: 0 0 0 2px var(--fw-bg-canvas);
}

#root #app .page-toc-card .v-list-item[data-fw-toc="current"] .v-list-item__title {
  color: var(--fw-text-primary) !important;
  font-weight: 700;
}

#root #app .page-toc-card .fw-toc-top {
  --fw-toc-mark: 1.25rem;
  display: flex;
  align-items: center;
  gap: calc(var(--fw-toc-text) - var(--fw-toc-x) - var(--fw-toc-mark) / 2);
  width: 100%;
  min-height: 2.5rem;
  margin-top: 0.4rem;
  padding: 0 0.5rem 0 0;
  border: 0;
  background: transparent;
  color: var(--fw-text-secondary);
  cursor: pointer;
  font: inherit;
  font-size: 0.8125rem;
  font-weight: 700;
  line-height: 1.5;
  text-align: start;
}

#root #app .page-toc-card .fw-toc-top[hidden] {
  display: none;
}

#root #app .page-toc-card .fw-toc-top__mark {
  display: grid;
  flex: none;
  place-items: center;
  box-sizing: border-box;
  width: var(--fw-toc-mark);
  height: var(--fw-toc-mark);

  margin-inline-start: calc(var(--fw-toc-x) - var(--fw-toc-mark) / 2);
  border: 1.5px solid currentColor;
}

#root #app .page-toc-card .fw-toc-top__mark::before {
  content: "";
  width: 0.8125rem;
  height: 0.8125rem;
  background-color: currentColor;
  -webkit-mask: var(--fw-arrow) center / contain no-repeat;
  mask: var(--fw-arrow) center / contain no-repeat;
  rotate: -90deg;
}

@media (hover: hover) and (pointer: fine) {
  #root #app .page-toc-card .fw-toc-top:hover {
    color: var(--fw-text-primary);
  }
}

#root #app .page-toc-card .fw-toc-top:focus-visible {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: -3px;
}

#app .v-main .page-col-content {
  padding-top: 4px;
}

#root #app .v-footer {
  background-color: var(--fw-bg-canvas) !important;
  color: var(--fw-text-secondary);
  border-top: 1px solid var(--fw-border-subtle);
}

#app .v-footer a {
  color: var(--fw-text-secondary);
}

#app .v-footer a:hover {
  color: var(--fw-link-hover);
}

#app .v-main__wrap:has(.contents) {
  --fw-page-width: var(--fw-measure);
  --fw-sidebar-width: 0rem;
}

#app .v-main__wrap:has(.contents .fw-portal) {
  --fw-page-width: var(--fw-portal-width);
}

#app .v-main__wrap:has(.contents .fw-wide),
#app .v-main__wrap:has(.contents .fw-full-width) {
  --fw-page-width: var(--fw-wide-width);
}

#app .v-main .contents:has(.fw-portal) {
  max-width: var(--fw-portal-width);
}

#app .v-main .contents:has(.fw-wide),
#app .v-main .contents:has(.fw-full-width) {
  max-width: var(--fw-wide-width);
}

#app .v-main__wrap > .container:has(> .layout > .page-col-content .contents),
#app .v-main .page-header-section {
  width: 100%;
  max-width: calc(var(--fw-page-width) + var(--fw-sidebar-width) + 2 * var(--fw-gutter));
  margin-inline: auto;
  padding-inline: var(--fw-gutter) !important;
}

#app .v-main .container > .layout:has(> .page-col-content .contents) {
  margin-inline: 0;
}

#app .v-main .layout > .page-col-content:has(.contents) {
  flex: 1 1 0;
  min-width: 0;
  max-width: 100%;
  padding-inline: 0;
}

#app .v-main .page-header-section .is-page-header {
  min-width: 0;
  padding-inline: 0 !important;
  margin-inline-start: var(--fw-sidebar-width);
}

#app .v-main__wrap:has(.contents .fw-wide) .page-header-headings,
#app .v-main__wrap:has(.contents .fw-full-width) .page-header-headings {
  max-width: var(--fw-measure);
  margin-inline-start: max(0px, (100% - var(--fw-measure)) / 2);
}

#app .v-main .contents > div {
  position: relative;
}

#app .v-main .contents {
  container: fw-article / inline-size;
}

#app .v-main .contents .fw-article-home-link {
  display: none;
}

@container fw-article (min-width: 65rem) {
  #app .v-main .contents:has(.fw-wide) > div > .fw-article-home-link,
  #app .v-main .contents:has(.fw-full-width) > div > .fw-article-home-link {
    position: absolute;
    inset-block-start: 0.15rem;
    inset-inline-start: 0;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    max-width: calc((100% - var(--fw-measure)) / 2 - 1.5rem);
    min-height: 2.5rem;
    padding: 0.45rem 0.65rem;
    border: 1px solid var(--fw-border);
    background-color: var(--fw-bg-surface);
    color: var(--fw-text-secondary);
    font-size: 0.875rem;
    font-weight: 650;
    line-height: 1.3;
    text-decoration: none;
    white-space: nowrap;
  }

  #app .v-main .contents .fw-article-home-link:hover {
    border-color: var(--fw-link);
    color: var(--fw-link-hover);
  }
}

@media (min-width: 1264px) {
  #app .v-main__wrap:has(.contents):has(.page-col-sd) {
    --fw-sidebar-width: 15rem;
  }

  #app .v-main .layout:has(> .page-col-content .contents) > .page-col-sd {
    flex: 0 0 var(--fw-sidebar-width);
    max-width: var(--fw-sidebar-width);
    min-width: 0;
    padding-inline: 0 1.5rem;
  }

  #root #app .v-main .layout > .page-col-sd {
    margin-top: 0;
    top: calc(64px + 0.75rem);
    max-height: calc(100vh - 64px - 2.25rem);
  }
}

#root #app .v-toolbar:has(> .v-toolbar__content > .breadcrumbs-nav) {
  background-color: var(--fw-bg-canvas) !important;
}

#root #app .v-main__wrap > .v-divider {
  border-color: var(--fw-border-subtle) !important;
}

#root #app .v-main__wrap > .container:has(.page-header-section) + .v-divider {
  display: none;
}

#root #app .breadcrumbs-nav .v-btn {
  min-width: 0;
  height: 1.75rem;
  padding: 0 0.3rem;
  border-radius: 0;
  color: var(--fw-text-secondary) !important;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
}

#root #app .breadcrumbs-nav > a:last-child {
  color: var(--fw-text-primary) !important;
  font-weight: 700;
}

@media (hover: hover) and (pointer: fine) {
  #root #app .breadcrumbs-nav .v-btn:hover {
    color: var(--fw-text-primary) !important;
  }
}

#root #app .breadcrumbs-nav .v-breadcrumbs__divider {
  padding: 0 0.15rem;
  color: var(--fw-border);
}

#root #app .breadcrumbs-nav > .v-icon {
  color: var(--fw-text-secondary);
}

#app .v-main .page-header-section {
  height: auto !important;
  min-height: 0;
  padding-block: 1.5rem 1rem;
}

#app .v-main .page-header-section .is-page-header {
  display: flex;
  align-items: center;
  gap: 0.5rem 1rem;
  min-width: 0;
  margin-block: 0 !important;
  padding-inline: 0 !important;
  margin-inline-start: var(--fw-sidebar-width);
}

#app .v-main .page-header-headings {
  display: flex;
  flex: 1 1 auto;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.15rem 0.75rem;
  min-width: 0;
}

#root #app .v-main .page-header-headings .headline {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--fw-text-primary) !important;
  font-size: 0.875rem !important;
  font-weight: 700;
  letter-spacing: 0.02em !important;
  line-height: 1.6 !important;
}

#root #app .v-main .page-header-headings .headline::before {
  content: "";
  flex: none;
  width: 0.6rem;
  height: 0.6rem;
  background-color: var(--fw-text-primary);
}

#root #app .v-main .page-header-headings .caption {
  color: var(--fw-text-secondary) !important;
  font-size: 0.875rem !important;
  letter-spacing: 0 !important;
  line-height: 1.6 !important;
}

#app .v-main .page-header-headings .headline,
#app .v-main .page-header-headings .caption {
  overflow-wrap: anywhere;
  white-space: normal;
}

#app .v-main .page-header-headings .caption:empty {
  display: none;
}

html[data-fw-page-title="repeated"] #root #app .v-main .page-header-headings .headline {
  display: none;
}

#root #app .v-main .page-edit-shortcuts {
  position: static;
  flex: none;
  margin-inline-start: auto;
}

#root #app .v-main .page-edit-shortcuts .v-btn {
  height: 2rem;
  padding: 0 0.75rem;
  border: 1px solid var(--fw-border) !important;
  border-radius: 0;
  background-color: var(--fw-bg-surface) !important;
  box-shadow: none !important;
  color: var(--fw-text-secondary) !important;
  font-weight: 650;
}

#root #app .v-main .page-edit-shortcuts .v-btn .v-icon {
  color: currentColor !important;
}

@media (hover: hover) and (pointer: fine) {
  #root #app .v-main .page-edit-shortcuts .v-btn:hover {
    border-color: var(--fw-text-primary) !important;
    color: var(--fw-text-primary) !important;
  }
}

#root #app .v-btn--fab.v-btn--fixed {
  left: auto !important;
  right: max(1rem, env(safe-area-inset-right)) !important;
  bottom: max(1.5rem, env(safe-area-inset-bottom)) !important;
  width: 44px !important;
  height: 44px !important;
  border: 1px solid var(--fw-fab-border) !important;
  border-radius: 0;
  background-color: var(--fw-fab-bg) !important;

  box-shadow: inset 0 -3px 0 var(--fw-fab-track) !important;
  color: var(--fw-fab-text) !important;
}

#root #app .v-btn--fab.v-btn--fixed .v-icon {
  color: var(--fw-fab-text) !important;
}

#root #app .v-btn--fab.v-btn--fixed::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 3px;
  background-color: var(--fw-fab-progress);
  transform: scaleX(var(--fw-read-progress, 0));
  transform-origin: left center;
  opacity: 1;
  border-radius: 0;
  pointer-events: none;
}

@media (min-width: 1264px) {
  html[data-fw-toc-top]:not([data-fw-focus="true"]) #root #app .v-btn--fab.v-btn--fixed {
    display: none !important;
  }
}

#root #app .v-btn--fab.v-btn--fixed:focus-visible {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: 2px;
}

html[data-fw-focus="true"] #app .v-navigation-drawer,
html[data-fw-focus="true"] #app .page-col-sd {
  display: none !important;
}

html[data-fw-focus="true"] #app .v-main {
  padding-inline-start: 0 !important;
}

html[data-fw-focus="true"] #app .v-main__wrap:has(.contents) {
  --fw-page-width: calc(100vw - 2 * var(--fw-gutter));
  --fw-sidebar-width: 0rem;
}

html[data-fw-focus="true"] #app .v-main .contents:has(.fw-wide),
html[data-fw-focus="true"] #app .v-main .contents:has(.fw-full-width),
html[data-fw-focus="true"] #app .v-main .contents .fw-wide,
html[data-fw-focus="true"] #app .v-main .contents .fw-full-width {
  max-width: none;
}

#root #app .nav-header .fw-focus-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  min-width: 48px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--fw-header-text);
  cursor: pointer;
}

#root #app .nav-header .fw-focus-toggle .v-icon {
  color: var(--fw-header-text) !important;
  font-size: 24px;
}

#app .nav-header .fw-focus-toggle:focus-visible {
  outline: 3px solid var(--fw-header-text);
  outline-offset: -3px;
}

@media (max-width: 600px) {
  html:not([data-fw-focus="true"]) #root #app .nav-header .fw-focus-toggle {
    display: none;
  }
}

#app .page-toc-card .v-list-item__title {
  white-space: normal;
  overflow-wrap: anywhere;
}

#app .page-toc-card .v-list-item:focus-visible,
#app .page-shortcuts-card .v-btn:focus-visible,
#app .page-edit-shortcuts .v-btn:focus-visible {
  outline: 3px solid var(--fw-focus-ring);
  outline-offset: -3px;
}

@media (max-width: 1263px) {
  #app .v-main .layout:has(> .page-col-content .contents) > .page-col-sd {
    display: none;
  }
}

#root #app .nav-header .v-toolbar__extension > .v-toolbar {
  background-color: var(--fw-header-bg) !important;
}

#root #app .nav-header .v-label {
  color: var(--fw-header-text-soft) !important;
}

#root #app .v-main:has(.contents) {
  background-color: var(--fw-bg-canvas) !important;
}

@media (max-width: 600px) {
  #app .nav-header .v-toolbar__title {
    font-size: 1rem;
  }
}

