@property --mask-r {
  syntax: "<percentage>";
  initial-value: 150%;
  inherits: false;
}
*,
*:before,
*:after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-tap-highlight-color: transparent;
}
:root {
  --theme-primary: #5b8fc9;
  --theme-primary-rgb: 91, 143, 201;
  --theme-accent: #7baae0;
  --theme-bg-deep: #0a1628;
  --theme-bg-deep-rgb: 10, 22, 40;
  --theme-bg-panel: #0f1f36;
  --theme-bg-surface: #0b1926;
  --theme-text: #d6e4f0;
  --theme-text-secondary: #97b6d4;
  --theme-border: rgba(91, 143, 201, 0.2);
  --theme-glow: rgba(91, 143, 201, 0.25);
  font-family: PingFang SC, Microsoft YaHei, system-ui, -apple-system,
    sans-serif;
  line-height: 1.5;
  font-weight: 400;
  color: var(--theme-text);
  background-color: var(--theme-bg-deep);
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-user-select: none;
  user-select: none;
}
body {
  margin: 0;
  min-height: 100vh;
  overflow: hidden;
}
img {
  -webkit-user-drag: none;
  user-drag: none;
  pointer-events: none;
}
button img,
.clickable img {
  pointer-events: auto;
}
#app {
  width: 100%;
  height: 100%;
}
button {
  font-family: inherit;
}
::-webkit-scrollbar {
  width: 4px;
  height: 4px;
}
::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  background: rgba(var(--theme-primary-rgb), 0.25);
  border-radius: 4px;
  transition: background 0.3s ease;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(var(--theme-primary-rgb), 0.45);
}
::-webkit-scrollbar-corner {
  background: transparent;
}
* {
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--theme-primary-rgb), 0.25) transparent;
}
button,
a,
.contact-item,
.chapter-item,
.choice-btn,
.script-tab {
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
button:active {
  transform: scale(0.96);
}
@keyframes fadeSlideIn {
  0% {
    opacity: 0;
    transform: translateY(-12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes fadeSlideOut {
  0% {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-12px);
  }
}
@keyframes fadeScaleIn {
  0% {
    opacity: 0;
    transform: scale(0.95);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes slideDown {
  0% {
    opacity: 0;
    transform: translateY(-8px);
    max-height: 0;
  }
  to {
    opacity: 1;
    transform: translateY(0);
    max-height: 300px;
  }
}
@keyframes slideUp {
  0% {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes gentlePulse {
  0%,
  to {
    opacity: 0.6;
  }
  50% {
    opacity: 1;
  }
}
@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  to {
    background-position: 200% 0;
  }
}
