From 7145add64d14ef15063d109828e4f837ec032d96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Fri, 27 Mar 2026 15:39:49 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0.gitignore=E5=B9=B6?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=95=8F=E6=84=9F=E6=96=87=E4=BB=B6=E5=92=8C?= =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加.auth目录和备份文件到.gitignore 删除已存在的敏感认证文件和CSS备份文件 --- .auth/admin.json | 55 --- .gitignore | 7 + src/app/globals.css.backup | 681 ------------------------------------- 3 files changed, 7 insertions(+), 736 deletions(-) delete mode 100644 .auth/admin.json delete mode 100644 src/app/globals.css.backup diff --git a/.auth/admin.json b/.auth/admin.json deleted file mode 100644 index 7c99002..0000000 --- a/.auth/admin.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "cookies": [ - { - "name": "authjs.csrf-token", - "value": "2940c862b3fcc58543ae12377761900f7c74eb4a910054b9d7a082e08ac7eec7%7Cd3df7b4b17680c02c9105d10e6df7cb22ccb7656cf7f384a7272b6d6a28287a6", - "domain": "localhost", - "path": "/", - "expires": -1, - "httpOnly": true, - "secure": false, - "sameSite": "Lax" - }, - { - "name": "_ga", - "value": "GA1.1.883952371.1773396051", - "domain": "localhost", - "path": "/", - "expires": 1807956050.784813, - "httpOnly": false, - "secure": false, - "sameSite": "Lax" - }, - { - "name": "_ga_LGTLCR15KM", - "value": "GS2.1.s1773396050$o1$g0$t1773396053$j57$l0$h0", - "domain": "localhost", - "path": "/", - "expires": 1807956053.726289, - "httpOnly": false, - "secure": false, - "sameSite": "Lax" - }, - { - "name": "authjs.callback-url", - "value": "http%3A%2F%2Flocalhost%3A3000%2Fadmin%2Flogin", - "domain": "localhost", - "path": "/", - "expires": -1, - "httpOnly": true, - "secure": false, - "sameSite": "Lax" - }, - { - "name": "authjs.session-token", - "value": "eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwia2lkIjoiUkJOSmVSR3M5QlFaQnhQbkVHMG9MSy1ZaHY0YmVqM3JuZjJ4eHN1NzNLaHhhVlJQamVtVU1RT2M1WlJPY085ckZPbG1KbFk5MTRNUV9pV3BGVzV1VWcifQ..8ahF3Wx9hRRJJ8NNTHBagQ.Yk7DHEdEHhV36PTvzZEW8d3r6NfBkRQzqCY4ADGKTpdkTAIMT93JKYq2x90oyFqIH9O2dM9CxBkywgbKRdtm3jrxMQuh_9sg7KwIGRnhjkOBRNNRY6ov0y64WGFYy7b0Nf-CevQIva56GIEqIUMyfGcMRfNe-hJNUXdQ40xNJ_TYTenNYWxUhRYVoM4zSCIABVJHk2nY1lGdxaGNq48S2FqjCFzsTEC2DXZ_KFjGks_modve2K7Y1PUzUg0KYZERL209JIJHfMqimgewuxGI0w.xf03-8g2fEU4v0aoCuu5Q0caDatzWoxtxctL7vL8hCU", - "domain": "localhost", - "path": "/", - "expires": 1775988053.888913, - "httpOnly": true, - "secure": false, - "sameSite": "Lax" - } - ], - "origins": [] -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 71e9a61..f4fd9c8 100644 --- a/.gitignore +++ b/.gitignore @@ -222,6 +222,13 @@ $RECYCLE.BIN/ *.cert *.crt +# Auth files (contains sensitive session data) +.auth/ + +# Backup files +*.backup +*.bak + # Runtime data pids/ *.pid diff --git a/src/app/globals.css.backup b/src/app/globals.css.backup deleted file mode 100644 index b21c643..0000000 --- a/src/app/globals.css.backup +++ /dev/null @@ -1,681 +0,0 @@ -@import "tailwindcss"; - -@theme inline { - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); - --font-chinese: var(--font-noto-sans-sc); -} - -:root { - --color-bg-primary: #FFFFFF; - --color-bg-secondary: #FAFAFA; - --color-bg-tertiary: #F5F5F5; - --color-bg-hover: #F0F0F0; - - --color-text-primary: #171717; - --color-text-secondary: #525252; - --color-text-tertiary: #737373; - --color-text-muted: #A3A3A3; - - --color-border-primary: #E5E5E5; - --color-border-secondary: #F0F0F0; - --color-border-accent: #D4D4D4; - - --color-accent: #171717; - --color-accent-hover: #262626; - --color-accent-light: #404040; - - --color-link: #525252; - --color-link-hover: #171717; - - --color-brand-primary: #C41E3A; - --color-brand-primary-hover: #A01830; - --color-brand-primary-light: #D4244A; - --color-brand-primary-lighter: #E04A68; - --color-brand-primary-bg: #FEF2F4; - - --color-tech-blue: #00D9FF; - --color-tech-purple: #A855F7; - --color-tech-cyan: #06B6D4; - - --color-success: #16A34A; - --color-success-bg: #F0FDF4; - --color-warning: #D97706; - --color-warning-bg: #FFFBEB; - --color-info: #0284C7; - --color-info-bg: #F0F9FF; - --color-error: #DC2626; - --color-error-bg: #FEF2F2; - - --font-size-xs: 0.75rem; - --font-size-sm: 0.875rem; - --font-size-base: 1rem; - --font-size-lg: 1.125rem; - --font-size-xl: 1.25rem; - --font-size-2xl: 1.5rem; - --font-size-3xl: 1.875rem; - --font-size-4xl: 2.25rem; - --font-size-5xl: 3rem; - --font-size-6xl: 3.75rem; - - --line-height-tight: 1.1; - --line-height-snug: 1.25; - --line-height-normal: 1.5; - --line-height-relaxed: 1.625; - - --letter-spacing-tight: -0.025em; - --letter-spacing-normal: 0; - --letter-spacing-wide: 0.025em; - - --spacing-xs: 0.25rem; - --spacing-sm: 0.5rem; - --spacing-md: 1rem; - --spacing-lg: 1.5rem; - --spacing-xl: 2rem; - --spacing-2xl: 3rem; - --spacing-3xl: 4rem; - --spacing-4xl: 6rem; - --spacing-5xl: 8rem; - - --border-width-thin: 0.5px; - --border-width-normal: 1px; - - --transition-fast: 150ms; - --transition-normal: 200ms; - --transition-slow: 300ms; - - --ease-out: cubic-bezier(0.16, 1, 0.3, 1); - --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1); -} - -.dark { - --color-bg-primary: #0A0A0A; - --color-bg-secondary: #171717; - --color-bg-tertiary: #262626; - --color-bg-hover: #333333; - - --color-text-primary: #FAFAFA; - --color-text-secondary: #D4D4D4; - --color-text-tertiary: #A3A3A3; - --color-text-muted: #737373; - - --color-border-primary: #333333; - --color-border-secondary: #262626; - --color-border-accent: #404040; - - --color-accent: #FAFAFA; - --color-accent-hover: #E5E5E5; - --color-accent-light: #D4D4D4; - - --color-link: #D4D4D4; - --color-link-hover: #FAFAFA; - - --color-brand-primary: #E04A68; - --color-brand-primary-hover: #D4244A; - --color-brand-primary-light: #E86B85; - --color-brand-primary-lighter: #F08C9F; - --color-brand-primary-bg: #1A0F11; - - --color-tech-blue: #00D9FF; - --color-tech-purple: #A855F7; - --color-tech-cyan: #06B6D4; - - --color-success: #22C55E; - --color-success-bg: #052E16; - --color-warning: #F59E0B; - --color-warning-bg: #1C1917; - --color-info: #0EA5E9; - --color-info-bg: #0C2D48; - --color-error: #EF4444; - --color-error-bg: #1C1917; -} - -@layer base { - * { - @apply antialiased; - border-color: var(--color-border-primary); - } - - html { - scroll-behavior: smooth; - font-size: 16px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-rendering: optimizeLegibility; - } - - body { - background-color: var(--color-bg-secondary); - color: var(--color-text-primary); - font-family: var(--font-chinese), var(--font-sans), -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; - line-height: var(--line-height-normal); - letter-spacing: var(--letter-spacing-normal); - position: relative; - } - - body::before { - content: ''; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: - radial-gradient(ellipse at 15% 20%, rgba(196, 30, 58, 0.02) 0%, transparent 50%), - radial-gradient(ellipse at 85% 80%, rgba(23, 23, 23, 0.015) 0%, transparent 50%), - radial-gradient(ellipse at 50% 50%, rgba(196, 30, 58, 0.01) 0%, transparent 70%); - pointer-events: none; - z-index: -1; - } - - h1, h2, h3, h4, h5, h6 { - font-weight: 600; - line-height: var(--line-height-tight); - letter-spacing: var(--letter-spacing-tight); - color: var(--color-text-primary); - } - - h1 { - font-size: var(--font-size-5xl); - } - - h2 { - font-size: var(--font-size-4xl); - } - - h3 { - font-size: var(--font-size-2xl); - } - - h4 { - font-size: var(--font-size-xl); - } - - p { - color: var(--color-text-secondary); - line-height: var(--line-height-relaxed); - } - - a { - color: var(--color-link); - text-decoration: none; - transition: color var(--transition-fast) var(--ease-out); - } - - a:hover { - color: var(--color-link-hover); - } - - button { - font-family: inherit; - cursor: pointer; - } - - input, textarea { - font-family: inherit; - outline: none; - } - - input:focus, textarea:focus { - outline: none; - } - - ::selection { - background-color: var(--color-text-primary); - color: var(--color-bg-primary); - } -} - -@layer utilities { - .container-narrow { - width: 100%; - max-width: 640px; - margin-left: auto; - margin-right: auto; - padding-left: var(--spacing-lg); - padding-right: var(--spacing-lg); - } - - .container-wide { - width: 100%; - max-width: 1200px; - margin-left: auto; - margin-right: auto; - padding-left: var(--spacing-lg); - padding-right: var(--spacing-lg); - } - - .container-full { - width: 100%; - padding-left: var(--spacing-lg); - padding-right: var(--spacing-lg); - } - - .section-padding { - padding-top: var(--spacing-5xl); - padding-bottom: var(--spacing-5xl); - } - - .section-padding-sm { - padding-top: var(--spacing-3xl); - padding-bottom: var(--spacing-3xl); - } - - .text-balance { - text-wrap: balance; - } - - .text-pretty { - text-wrap: pretty; - } - - .border-thin { - border-width: var(--border-width-thin); - } - - .transition-smooth { - transition: all var(--transition-normal) var(--ease-out); - } - - .transition-fast { - transition: all var(--transition-fast) var(--ease-out); - } -} - -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(8px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(16px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes slideIn { - from { - opacity: 0; - transform: translateX(-8px); - } - to { - opacity: 1; - transform: translateX(0); - } -} - -@keyframes scaleIn { - from { - opacity: 0; - transform: scale(0.98); - } - to { - opacity: 1; - transform: scale(1); - } -} - -@keyframes drawLine { - from { - transform: scaleX(0); - } - to { - transform: scaleX(1); - } -} - -@keyframes stampIn { - 0% { - opacity: 0; - transform: scale(1.5) rotate(-15deg); - } - 50% { - opacity: 0.8; - transform: scale(0.95) rotate(0deg); - } - 70% { - transform: scale(1.02) rotate(0deg); - } - 100% { - opacity: 1; - transform: scale(1) rotate(0deg); - } -} - -@keyframes inkSpread { - 0% { - opacity: 0; - transform: scale(0.8); - filter: blur(4px); - } - 100% { - opacity: 0.03; - transform: scale(1); - filter: blur(0); - } -} - -@keyframes inkFlow { - 0%, 100% { - background-position: 0% 0%; - } - 50% { - background-position: 100% 100%; - } -} - -@keyframes numberCount { - from { - opacity: 0; - transform: translateY(10px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes sectionReveal { - from { - opacity: 0; - transform: translateY(40px); - } - to { - opacity: 1; - transform: translateY(0); - } -} - -@keyframes cornerFadeIn { - from { - opacity: 0; - transform: scale(0); - } - to { - opacity: 1; - transform: scale(1); - } -} - -.animate-fade-in { - animation: fadeIn 0.5s var(--ease-out) forwards; -} - -.animate-fade-in-up { - animation: fadeInUp 0.6s var(--ease-out) forwards; -} - -.animate-slide-in { - animation: slideIn 0.4s var(--ease-out) forwards; -} - -.animate-scale-in { - animation: scaleIn 0.3s var(--ease-out) forwards; -} - -.animate-draw-line { - animation: drawLine 0.4s var(--ease-out) forwards; - transform-origin: left; -} - -.animate-stamp-in { - animation: stampIn 0.6s var(--ease-out) forwards; -} - -.animate-ink-spread { - animation: inkSpread 1s var(--ease-out) forwards; -} - -.animate-section-reveal { - animation: sectionReveal 0.8s var(--ease-out) forwards; -} - -.animate-number-count { - animation: numberCount 0.5s var(--ease-out) forwards; -} - -.stagger-1 { animation-delay: 0.1s; } -.stagger-2 { animation-delay: 0.2s; } -.stagger-3 { animation-delay: 0.3s; } -.stagger-4 { animation-delay: 0.4s; } -.stagger-5 { animation-delay: 0.5s; } -.stagger-6 { animation-delay: 0.6s; } - -.geometric-card { - border: 1px solid rgba(196, 30, 58, 0.08); - position: relative; - background: rgba(255, 255, 255, 0.8); - backdrop-filter: blur(8px); - transition: all 0.3s var(--ease-out); -} - -.geometric-card::before, -.geometric-card::after { - content: ''; - position: absolute; - width: 12px; - height: 12px; - border: 1px solid rgba(196, 30, 58, 0.15); - opacity: 0; - transition: all 0.3s var(--ease-out); -} - -.geometric-card::before { - top: -1px; - left: -1px; - border-right: none; - border-bottom: none; - border-radius: 4px 0 0 0; -} - -.geometric-card::after { - bottom: -1px; - right: -1px; - border-left: none; - border-top: none; - border-radius: 0 0 4px 0; -} - -.geometric-card:hover { - border-color: rgba(196, 30, 58, 0.2); - transform: translateY(-4px); - box-shadow: 0 12px 40px -12px rgba(196, 30, 58, 0.15); -} - -.geometric-card:hover::before, -.geometric-card:hover::after { - opacity: 1; -} - -.geometric-card:hover::before { - animation: cornerFadeIn 0.3s var(--ease-out) forwards; -} - -.geometric-card:hover::after { - animation: cornerFadeIn 0.3s var(--ease-out) 0.1s forwards; -} - -.ink-divider { - height: 1px; - background: linear-gradient(90deg, transparent, rgba(196, 30, 58, 0.2), transparent); - position: relative; -} - -.ink-divider::before { - content: ''; - position: absolute; - left: 50%; - top: -3px; - width: 6px; - height: 6px; - background: var(--color-brand-primary); - border-radius: 50%; - transform: translateX(-50%); - opacity: 0.3; -} - -.chapter-title { - position: relative; - display: inline-block; -} - -.chapter-title::after { - content: ''; - position: absolute; - bottom: -8px; - left: 0; - width: 40px; - height: 3px; - background: var(--color-brand-primary); - border-radius: 2px; -} - -.scroll-reveal { - opacity: 0; - transform: translateY(30px); - transition: all 0.8s var(--ease-out); -} - -.scroll-reveal.revealed { - opacity: 1; - transform: translateY(0); -} - -.ink-texture { - position: relative; -} - -.ink-texture::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E"); - opacity: 0.015; - pointer-events: none; -} - -::-webkit-scrollbar { - width: 6px; - height: 6px; -} - -::-webkit-scrollbar-track { - background: transparent; -} - -::-webkit-scrollbar-thumb { - background: var(--color-border-accent); - border-radius: 3px; -} - -::-webkit-scrollbar-thumb:hover { - background: var(--color-text-tertiary); -} - -@media (prefers-reduced-motion: reduce) { - *, - *::before, - *::after { - animation-duration: 0.01ms !important; - animation-iteration-count: 1 !important; - transition-duration: 0.01ms !important; - } - - html { - scroll-behavior: auto; - } -} - -@media (max-width: 768px) { - :root { - --font-size-5xl: 2.25rem; - --font-size-4xl: 1.875rem; - --font-size-3xl: 1.5rem; - --font-size-2xl: 1.25rem; - } - - .section-padding { - padding-top: var(--spacing-3xl); - padding-bottom: var(--spacing-3xl); - } -} - -@keyframes glow { - 0%, 100% { - box-shadow: 0 0 20px rgba(0, 217, 255, 0.3); - } - 50% { - box-shadow: 0 0 40px rgba(0, 217, 255, 0.6); - } -} - -@keyframes float { - 0%, 100% { - transform: translateY(0px); - } - 50% { - transform: translateY(-10px); - } -} - -@keyframes pulse-glow { - 0%, 100% { - opacity: 0.2; - } - 50% { - opacity: 0.4; - } -} - -.animate-glow { - animation: glow 2s ease-in-out infinite; -} - -.animate-float { - animation: float 3s ease-in-out infinite; -} - -.animate-pulse-glow { - animation: pulse-glow 2s ease-in-out infinite; -} - -.tech-gradient { - background: linear-gradient(135deg, var(--color-tech-blue) 0%, var(--color-tech-purple) 100%); -} - -.tech-gradient-text { - background: linear-gradient(135deg, var(--color-tech-blue) 0%, var(--color-tech-purple) 100%); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; -} - -.tech-glow { - box-shadow: 0 0 20px rgba(0, 217, 255, 0.3); -} - -.tech-glow-hover:hover { - box-shadow: 0 0 30px rgba(0, 217, 255, 0.5); -} - -.tech-border { - border: 1px solid rgba(0, 217, 255, 0.3); -} - -.tech-border-hover:hover { - border-color: rgba(0, 217, 255, 0.6); -}