@font-face {
  font-family: "XinYiGuanHeiTi";
  src: url("../fonts/XinYiGuanHeiTi.ttf") format("truetype");
  font-weight: normal;
  font-style: normal;
}

.navbar-brand .logo__title {
  font-family: "XinYiGuanHeiTi", sans-serif !important;
}

.navbar-brand .logo__image {
  height: 1.75rem;
  width: auto;
  margin-right: 0.5rem;
  vertical-align: middle;
}

.bd-header {
  border-bottom: 1px solid var(--pst-color-border, #dee2e6);
}

.bd-header .bd-header__inner {
  justify-content: center;
}

.bd-header .navbar-header-items__start {
  margin-right: 0;
}

html,
body {
  overflow-x: hidden;
}

.banner {
  position: relative;
  width: 100vw;
  max-width: 100%;
  left: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
  height: 100vh;
  min-height: 360px;
  overflow: hidden;
  box-sizing: border-box;
}

.banner__bg {
  position: absolute;
  inset: 0;
  background: url("https://www.liuwei.pub/pic/2023/02/04/63de7388614d4.jpg") center/cover no-repeat;
  background-color: #1a1a1a;
}

.banner__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
}

.banner__logo {
  width: 200px;
  height: auto;
  margin-bottom: 0.75rem;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .4));
}

.banner__title {
  font-family: "XinYiGuanHeiTi", sans-serif;
  font-size: clamp(1.75rem, 5vw, 3rem);
  font-weight: 400;
  margin: 0 0 0.5rem;
}

.banner__tagline {
  font-size: clamp(0.875rem, 2vw, 1.125rem);
  margin: 0;
  opacity: 0.95;
}

.bd-links__title {
  font-size: 0;
}

.bd-links__title::after {
  content: "本节导航";
  font-size: 1.25rem;
}

.project-hero {
  width: 100%;
  margin: 2rem 0 2.5rem;
  padding: 2rem 1.5rem;
  background: transparent;
  border-radius: 0.5rem;
  border: 1px solid var(--pst-color-border, #e9ecef);
  box-sizing: border-box;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: start;
}

.project-hero__media,
.project-hero__media .project-hero__image {
  background: transparent !important;
}

@media (min-width: 576px) {
  .project-hero {
    grid-template-columns: auto 1fr;
    gap: 2.5rem;
    align-items: stretch;
  }
}

.project-hero__media {
  grid-column: 1;
  grid-row: 1;
  padding: 1.25rem;
  box-sizing: border-box;
  display: flex;
  align-items: flex-start;
}

.project-hero__body {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  align-self: stretch;
  padding-top: 1.25rem;
  padding-bottom: 1.25rem;
  box-sizing: border-box;
}

.project-hero__media .project-hero__image {
  max-width: 520px;
  width: 100%;
  height: auto;
  display: block;
  background: transparent !important;
}

.project-hero__title {
  display: block !important;
  font-size: 1.75rem;
  font-weight: 600;
  margin: 0 0 0.25rem;
  color: var(--pst-color-text-base, #212529);
  line-height: 1.3;
}

.project-hero__tagline {
  font-size: 1.2rem;
  line-height: 1.65;
  color: var(--pst-color-text-muted, #6c757d);
  margin: 0;
}

.project-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1rem;
  align-items: center;
  justify-content: flex-start;
  margin: 0;
  margin-top: auto;
  padding-top: 0.25rem;
}

.project-hero__btn {
  display: inline-block;
  padding: 0.6rem 1.5rem;
  border-radius: 0.4rem;
  text-decoration: none;
  font-weight: 500;
  font-size: 0.95rem;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}

.project-hero__btn--primary {
  background: var(--pst-color-primary, #2c7bb6);
  color: #fff !important;
  border: 1px solid transparent;
}

.project-hero__btn--primary:hover {
  background: var(--pst-color-link-hover, #1a5a8a);
  color: #fff !important;
}

.project-hero__btn--secondary {
  background: transparent;
  border: 1px solid var(--pst-color-border, #ced4da);
  color: var(--pst-color-text-base, #212529) !important;
}

.project-hero__btn--secondary:hover {
  border-color: var(--pst-color-primary, #2c7bb6);
  background: rgba(44, 123, 182, 0.08);
  color: var(--pst-color-primary, #2c7bb6) !important;
}

.video-embed-wrapper {
  margin: 1rem 0;
}

.video-embed-wrapper .video-embed {
  max-width: 100%;
}

.gallery-grid.sd-grid {
  max-width: 64rem;
  margin-left: auto;
  margin-right: auto;
}

.bd-content .sd-card {
  border-radius: 0.35rem;
}

.gallery-grid .sd-card {
  border: 1px solid var(--pst-color-border, #dee2e6);
  border-radius: 0.5rem;
  box-shadow: none;
  overflow: hidden;
  transition: transform 0.2s ease, border-color 0.2s ease;
}

@media (hover: hover) {
  .gallery-grid .sd-card:hover {
    transform: translateY(-4px);
    border-color: var(--pst-color-primary, #2c7bb6);
  }
}

.feature-card .sd-card-body {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto;
  gap: 0.25rem 0.5rem;
  align-items: start;
}

.feature-card .sd-card-body>.feature-card__icon {
  grid-column: 1;
  grid-row: 1;
  font-size: 1.25rem;
  color: var(--pst-color-primary, #2c7bb6);
  display: flex;
  align-items: center;
  min-height: 1.5em;
}

.feature-card .sd-card-body>.sd-card-title {
  grid-column: 2;
  grid-row: 1;
  margin: 0;
  font-weight: 600;
  display: flex;
  align-items: center;
  min-height: 1.5em;
  line-height: 1.3;
}

.feature-card .sd-card-body>.sd-card-text {
  grid-column: 1 / -1;
  grid-row: 2;
  margin: 0.25rem 0 0;
}

.feature-card .sd-card-body>.sd-card-text:first-of-type {
  margin-top: 0;
}

body.bd-project-home .bd-sidebar-primary,
body.bd-project-home .bd-sidebar-secondary {
  display: none !important;
}

body.bd-project-home .bd-breadcrumbs {
  display: none !important;
}

body.bd-project-home .bd-article .bd-content>section>h1:first-of-type {
  display: none !important;
}

body.bd-project-home .bd-main {
  flex: 1 1 100% !important;
  max-width: 100% !important;
}

body.bd-project-home .bd-content {
  max-width: 100% !important;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  box-sizing: border-box;
}

body.bd-project-home .bd-article-container {
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box;
}

body.bd-project-home .bd-article-container .bd-article {
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box;
}

body.bd-project-home .project-hero__media .project-hero__image {
  max-width: 560px;
}

body.bd-project-home .project-hero__title {
  font-size: 2rem;
}

body.bd-project-home .project-hero__tagline {
  font-size: 1.25rem;
  line-height: 1.65;
}

body.bd-project-home .sd-grid {
  max-width: 64rem;
  margin-left: auto;
  margin-right: auto;
}

body.bd-project-home .gallery-grid {
  width: 100% !important;
  max-width: 100% !important;
  padding-left: 0;
  padding-right: 0;
}

body.bd-project-home .gallery-grid .sd-row {
  width: 100% !important;
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

body.bd-project-home h1 {
  margin-bottom: 0.5rem;
}

body.bd-project-home .bd-content .section>h2 {
  margin-top: 2.5rem;
  margin-bottom: 1.25rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--pst-color-border, #dee2e6);
}

body.bd-project-home .bd-content .toctree-wrapper {
  margin-top: 2rem;
  padding: 1.25rem;
  background: var(--pst-color-surface, #f8f9fa);
  border-radius: 0.35rem;
}

body.bd-project-home .bd-content .toctree-wrapper ul {
  margin-bottom: 0;
}

body.bd-resume-page {
  background: var(--pst-color-surface, #f8f9fa);
}

body.bd-resume-page .bd-sidebar-primary,
body.bd-resume-page .bd-sidebar-secondary {
  display: none !important;
}

body.bd-resume-page .bd-breadcrumbs {
  display: none !important;
}

body.bd-resume-page .bd-main {
  flex: 1 1 100% !important;
  max-width: 100% !important;
}

body.bd-resume-page .bd-content {
  max-width: 100% !important;
  width: 100%;
  margin-left: 0;
  margin-right: 0;
  padding-left: 1.5rem;
  padding-right: 1.5rem;
  box-sizing: border-box;
}

body.bd-resume-page .bd-article-container {
  max-width: 100% !important;
  width: 100% !important;
  box-sizing: border-box;
}

body.bd-resume-page .bd-article-container .bd-article {
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 0 2rem;
  box-sizing: border-box;
}

body.bd-resume-page .bd-article .admonition {
  border-radius: 0.5rem;
  border: 1px solid var(--pst-color-border, #dee2e6);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  margin-bottom: 1.25rem;
  overflow: hidden;
}

body.bd-resume-page .bd-article .admonition-title {
  font-weight: 600;
  font-size: 1.1rem;
  padding: 0.75rem 1rem 0.75rem 2.5rem;
  background: var(--pst-color-surface, #fff);
  border-bottom: 1px solid var(--pst-color-border, #dee2e6);
}

body.bd-resume-page .bd-article .admonition>.admonition-content {
  padding: 1rem 1rem 1.25rem;
  background: var(--pst-color-background, #fff);
}

body.bd-resume-page .bd-article .admonition p.last,
body.bd-resume-page .bd-article .admonition .last {
  margin-bottom: 0.5rem;
}

body.bd-resume-page .bd-article .admonition ul.simple {
  margin-bottom: 0.5rem;
}

body.bd-resume-page .bd-article .admonition ul.simple li {
  margin-bottom: 0.2rem;
}

body.bd-resume-page .bd-article .admonition strong {
  display: block;
  margin-top: 0.75rem;
  margin-bottom: 0.25rem;
  font-size: 1rem;
}

body.bd-resume-page .bd-article .admonition .table,
body.bd-resume-page .bd-article .admonition table {
  width: auto;
  min-width: 16rem;
  max-width: 100%;
  margin: 0.5rem 0;
  border-collapse: collapse;
  font-size: 0.95rem;
}

body.bd-resume-page .bd-article .admonition .table th,
body.bd-resume-page .bd-article .admonition .table td,
body.bd-resume-page .bd-article .admonition table th,
body.bd-resume-page .bd-article .admonition table td {
  padding: 0.4rem 0.75rem;
  border: 1px solid var(--pst-color-border, #dee2e6);
  text-align: left;
}

body.bd-resume-page .bd-article .admonition .table thead th,
body.bd-resume-page .bd-article .admonition table thead th {
  background: var(--pst-color-surface, #f8f9fa);
  font-weight: 600;
}

.highlight {
  position: relative;
}

.copybtn {
  position: absolute;
  top: 0.35rem;
  right: 0.35rem;
  padding: 0.2rem 0.4rem;
  border: none;
  border-radius: 0.2rem;
  background: var(--pst-color-surface, #f0f0f0);
  color: var(--pst-color-text-muted, #555);
  cursor: pointer;
  font-size: 0.85rem;
}

.copybtn:hover {
  background: var(--pst-color-border, #ddd);
  color: var(--pst-color-text-base, #333);
}