@font-face { font-family: 'M PLUS 1p'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/m-plus-1p/MPLUS1p-Regular.woff2') format('woff2'); } @font-face { font-family: 'M PLUS 1p'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/m-plus-1p/MPLUS1p-Medium.woff2') format('woff2'); } @font-face { font-family: 'M PLUS 1p'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/m-plus-1p/MPLUS1p-Bold.woff2') format('woff2'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/roboto/Roboto-Regular.woff2') format('woff2'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/roboto/Roboto-Medium.woff2') format('woff2'); } @font-face { font-family: 'Roboto'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/roboto/Roboto-Bold.woff2') format('woff2'); } :root { /* 颜色变量 */ --color-primary: #3b82f6; --color-secondary: #10b981; --color-accent: #22d3ee; --color-danger: #ef4444; --color-success: #10b981; --color-warning: #f59e0b; --color-info: #3b82f6; --color-dark: #111827; --color-light: #f3f4f6; --color-bg: #05080B; --color-text: #fff; --color-text-light: #6b7280; --color-border: #e5e7eb; } ::selection { background-color: var(--color-accent) !important; color: var(--color-bg) !important; } body { /* 设置默认字体栈 */ font-family: 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'; color: var(--color-text); background-color: var(--color-bg); /* 其他基础样式 */ font-size: 16px; line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-feature-settings: "palt"; letter-spacing: 0.02em; font-weight: 400; font-style: normal; } /* 仅在日语环境下应用日文字体 */ html[lang="ja"] body { font-family: 'M PLUS 1p', sans-serif !important; } /* Markdown 内容样式 */ .prose { color: rgba(255, 255, 255, 0.6); line-height: 1.625; blockquote { border-left-color: var(--color-primary); p { margin: 0; } } } .prose h1 { font-size: 1.5rem; font-weight: 700; color: white; margin-bottom: 1.5rem; margin-top: 2rem; } .prose h2 { font-size: 1.25rem; font-weight: 600; color: white; margin-bottom: 1rem; margin-top: 1.5rem; } .prose h3 { font-size: 1.125rem; font-weight: 500; color: white; margin-bottom: 0.75rem; margin-top: 1.25rem; } .prose h4 { font-size: 1rem; font-weight: 500; color: white; margin-bottom: 0.5rem; margin-top: 1rem; } .prose p { margin-bottom: 1rem; line-height: 1.75; } .prose a { text-decoration: none; text-decoration-thickness: 1px; text-underline-offset: 2px; transition: color 0.2s; color: var(--color-primary); } .prose a:hover { color: rgb(147 197 253); } .prose h1 a, .prose h2 a, .prose h3 a, .prose h4 a, .prose h5 a, .prose h6 a { color: var(--color-text); pointer-events: none; } .prose ul, .prose ol { margin: 1rem 0; margin-left: 0rem; } .prose ul { list-style-type: disc; } .prose ol { list-style-type: decimal; } .prose li { margin-bottom: 0.5rem; } .prose blockquote { border-left: 4px solid rgb(59 130 246); padding-left: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; margin: 1rem 0; background-color: rgba(39, 39, 42, 0.5); border-top-right-radius: 0.5rem; border-bottom-right-radius: 0.5rem; } .prose blockquote p { color: rgb(214 211 209); font-style: italic; margin-bottom: 0; } .prose code { background-color: rgba(0, 0, 0, 0.5); padding: 0.125rem 0.375rem; border-radius: 0.25rem; font-size: 0.875rem; color: var(--color-text); } .prose pre { background-color: rgb(39, 39, 42); padding: 1rem; border-radius: 0.5rem; overflow-x: auto; margin: 1rem 0; } .prose pre code { background-color: transparent; padding: 0; font-size: 0.875rem; color: rgb(214 211 209); } .prose img { border-radius: 0.5rem; margin: 1.5rem 0; box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1); } .prose table { width: 100%; margin: 1.5rem 0; border-collapse: collapse; table-layout: fixed; } .prose th { background-color: rgb(39, 39, 42); color: white; font-weight: 500; padding: 0.5rem 1rem; text-align: left; border: 1px solid rgb(63, 63, 70); } .prose td { padding: 0.5rem 1rem; border: 1px solid rgb(63, 63, 70); } .prose tr:nth-child(even) { background-color: rgba(39, 39, 42, 0.3); } .prose hr { margin: 2rem 0; border-color: rgb(63, 63, 70); } .prose strong { font-weight: 600; color: white; } .prose em { font-style: italic; color: rgb(214 211 209); } .prose kbd { background-color: rgb(39, 39, 42); padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.875rem; font-family: ui-monospace, monospace; border: 1px solid rgb(63, 63, 70); } .prose details { margin: 1rem 0; } .prose summary { cursor: pointer; font-weight: 500; color: white; } .prose details[open] summary { margin-bottom: 0.5rem; } /* 页面过渡动画 */ .page-enter-active, .page-leave-active { transition: all 0.3s; } .page-enter-from, .page-leave-to { opacity: 0; transform: translateY(10px); } /* 加载指示器样式 */ .route-loader { position: fixed; top: 0; left: 0; height: 3px; background-color: var(--color-accent); z-index: 9999; transition: width 0.2s ease; } .route-loader-enter-active, .route-loader-leave-active { transition: opacity 0.3s; } .route-loader-enter-from, .route-loader-leave-to { opacity: 0; }