* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
:root {
  --text-color: #ffffff;
  --svg-hover-color: #4be79f;
}
body {
  font-family: rubik, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
  background: linear-gradient(135deg, #0c0c0c 0%, #1a1a2e 50%, #16213e 100%);
  min-height: 100vh;
  color: var(--text-color);
}
h3,
h4,
h5 {
  font-weight: 400;
}
.app-wrapper {
  background-image: var(--bg-image-url);
  background-position: top;
}
.app-wrapper .top-bar {
  background: var(--top-bar-bg-color);
  border-radius: 0px 0px 0px 0px;
}
.loading {
  text-align: center;
  padding: 60px 40px;
  color: #b0b0b0;
}
.svg-24 {
  height: 24px;
  width: 24px;
}
.spinner {
  border: 3px solid rgba(255, 255, 255, 0.1);
  border-top: 3px solid #7928ca;
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
  margin: 0 auto 20px;
}
@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.no-data {
  text-align: center;
  padding: 60px 40px;
  color: #888;
}
.no-data-icon {
  font-size: 4em;
  margin-bottom: 20px;
  opacity: 0.5;
}
.hidden {
  display: none;
}
/* 隐藏滚动条但保留滚动功能 */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-track {
  background: var(--bg-color);
}
::-webkit-scrollbar-thumb {
  background: var(--border-color);
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: var(--primary-color);
}
a {
  color: var(--link-text-color);
}
a:visited {
  color: var(--link-text-color);
}
a:hover {
  color: var(--link-text-color);
}
a:active {
  color: var(--link-text-color);
}
.hover-change-svg-color:hover path[stroke] {
  stroke: var(--svg-hover-color);
}
.hover-change-svg-color:hover path[fill] {
  fill: var(--svg-hover-color);
}
.hover-change-svg-color:hover rect[stroke] {
  stroke: var(--svg-hover-color);
}
.hover-change-svg-color:hover rect[fill] {
  fill: var(--svg-hover-color);
}
.svg-normal-color path[stroke] {
  stroke: var(--svg-normal-color);
}
.svg-normal-color path[fill] {
  fill: var(--svg-normal-color);
}
.svg-normal-color rect[stroke] {
  stroke: var(--svg-normal-color);
}
.svg-normal-color rect[fill] {
  fill: var(--svg-normal-color);
}
.svg-primary-color path[stroke] {
  stroke: var(--svg-primary-color);
}
.svg-primary-color path[fill] {
  fill: var(--svg-primary-color);
}
.svg-primary-color rect[stroke] {
  stroke: var(--svg-primary-color);
}
.svg-primary-color rect[fill] {
  fill: var(--svg-primary-color);
}
.svg-primary-color path[stroke] {
  stroke: var(--svg-primary-color);
}
.svg-primary-color path[fill] {
  fill: var(--svg-primary-color);
}
.svg-primary-color rect[stroke] {
  stroke: var(--svg-primary-color);
}
.svg-primary-color rect[fill] {
  fill: var(--svg-primary-color);
}
.svg-fail-color path[stroke] {
  stroke: var(--svg-fail-color);
}
.svg-fail-color path[fill] {
  fill: var(--svg-fail-color);
}
.svg-fail-color rect[stroke] {
  stroke: var(--svg-fail-color);
}
.svg-fail-color rect[fill] {
  fill: var(--svg-fail-color);
}
.svg-bottom-content-color path[stroke] {
  stroke: var(--bottom-content-icon-color);
}
.svg-bottom-content-color path[fill] {
  fill: var(--bottom-content-icon-color);
}
.svg-bottom-content-color rect[stroke] {
  stroke: var(--bottom-content-icon-color);
}
.svg-bottom-content-color rect[fill] {
  fill: var(--bottom-content-icon-color);
}
.svg-blog-detail-jump-page-color path[stroke] {
  stroke: var(--bottom-content-icon-color);
}
.svg-blog-detail-jump-page-color path[fill] {
  fill: var(--bottom-content-icon-color);
}
.svg-blog-detail-jump-page-color rect[stroke] {
  stroke: var(--bottom-content-icon-color);
}
.svg-blog-detail-jump-page-color rect[fill] {
  fill: var(--bottom-content-icon-color);
}
.svg-sub-color path[stroke] {
  stroke: var(--blog-item-subtitle-color);
}
.svg-sub-color path[fill] {
  fill: var(--blog-item-subtitle-color);
}
.svg-sub-color rect[stroke] {
  stroke: var(--blog-item-subtitle-color);
}
.svg-sub-color rect[fill] {
  fill: var(--blog-item-subtitle-color);
}
img {
  /* 当图片加载失败时，隐藏 alt 文本和裂纹图标 */
  font-size: 0;
  color: transparent;
}
/* 或者直接隐藏 */
img[src=''],
img:not([src]) {
  display: none;
}
.beian-bottom-info {
  text-align: center;
  margin-top: 20px;
  margin-bottom: 20px;
  color: var(--text-color);
}
.beian-bottom-info a {
  text-decoration: none;
}
