-
+
+
@@ -312,39 +189,51 @@ onUnmounted(() => {
display: flex;
flex-direction: column;
position: relative;
- overflow: hidden;
}
-/* 页面背景氛围光 */
+.home__body {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ visibility: hidden;
+}
+
+.home__body--visible {
+ visibility: visible;
+ animation: home-fade-in 0.35s ease-out both;
+}
+
+@keyframes home-fade-in {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .home__body--visible {
+ animation: none;
+ opacity: 1;
+ }
+}
+
+/* 页面背景氛围光 — 纯渐变,无 blur 滤镜 */
.home::before {
content: "";
position: absolute;
- top: -20%;
- left: 50%;
- transform: translateX(-50%);
- width: 80vw;
- height: 50vh;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 480px;
background: radial-gradient(
- ellipse at center,
- rgba(34, 197, 94, 0.15) 0%,
- rgba(59, 130, 246, 0.05) 40%,
+ ellipse 70% 60% at 50% 0%,
+ rgba(34, 197, 94, 0.07) 0%,
transparent 70%
);
- filter: blur(60px);
pointer-events: none;
z-index: 0;
- animation: bg-pulse 8s ease-in-out infinite alternate;
-}
-
-@keyframes bg-pulse {
- 0% {
- opacity: 0.5;
- transform: translateX(-50%) scale(1);
- }
- 100% {
- opacity: 1;
- transform: translateX(-50%) scale(1.1);
- }
}
.container {
@@ -361,9 +250,7 @@ onUnmounted(() => {
position: sticky;
top: 0;
z-index: 100;
- background: rgba(2, 6, 23, 0.7);
- backdrop-filter: blur(20px);
- -webkit-backdrop-filter: blur(20px);
+ background: rgba(2, 6, 23, 0.85);
border-bottom: 1px solid var(--border);
}
@@ -390,7 +277,6 @@ onUnmounted(() => {
align-items: center;
justify-content: center;
color: var(--accent);
- box-shadow: 0 0 15px var(--accent-glow);
}
.logo-text {
@@ -431,7 +317,6 @@ onUnmounted(() => {
margin-bottom: 24px;
letter-spacing: 0.05em;
text-transform: uppercase;
- box-shadow: 0 0 20px var(--accent-glow);
}
.hero__title {
@@ -439,14 +324,13 @@ onUnmounted(() => {
font-size: clamp(36px, 5vw, 64px);
font-weight: 700;
line-height: 1.1;
+ min-height: calc(clamp(36px, 5vw, 64px) * 1.1);
color: var(--text-primary);
margin-bottom: 16px;
letter-spacing: -0.03em;
}
.hero__title--accent {
- color: var(--accent);
- text-shadow: 0 0 40px var(--accent-glow);
display: inline-block;
background: linear-gradient(135deg, #22c55e, #10b981);
-webkit-background-clip: text;
@@ -467,11 +351,6 @@ onUnmounted(() => {
position: relative;
max-width: 520px;
margin: 0 auto;
- transition: transform var(--transition);
-}
-
-.search-wrap:focus-within {
- transform: translateY(-2px);
}
.search-icon {
@@ -491,16 +370,14 @@ onUnmounted(() => {
.search-input {
width: 100%;
height: 56px;
- background: rgba(30, 41, 59, 0.6);
- backdrop-filter: blur(10px);
+ background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 0 48px;
font-size: 16px;
color: var(--text-primary);
outline: none;
- transition: all var(--transition);
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
+ transition: border-color var(--transition), box-shadow var(--transition);
}
.search-input::placeholder {
@@ -508,11 +385,8 @@ onUnmounted(() => {
}
.search-input:focus {
- background: var(--bg-card);
border-color: var(--accent);
- box-shadow:
- 0 8px 32px var(--accent-glow),
- inset 0 0 0 1px var(--accent);
+ box-shadow: 0 0 0 1px var(--accent);
}
.search-kbd {
@@ -574,14 +448,12 @@ onUnmounted(() => {
font-size: 14px;
font-weight: 500;
color: var(--text-secondary);
- background: rgba(30, 41, 59, 0.5);
- backdrop-filter: blur(10px);
+ background: var(--bg-card);
border: 1px solid var(--border);
white-space: nowrap;
cursor: pointer;
- transition: all var(--transition);
+ transition: color var(--transition), border-color var(--transition), background var(--transition);
position: relative;
- overflow: hidden;
}
.category-btn__inner {
@@ -595,66 +467,12 @@ onUnmounted(() => {
.category-btn:hover {
color: var(--text-primary);
border-color: var(--border-hover);
- background: var(--bg-card);
- transform: translateY(-1px);
}
.category-btn.active {
color: var(--accent);
- background: var(--bg-card);
- border-color: transparent;
- animation: active-border-solid 0.6s linear forwards;
-}
-
-.category-btn.active::before {
- content: "";
- position: absolute;
- top: 50%;
- left: 50%;
- width: 150%;
- height: 300%;
- background: conic-gradient(from 0deg, transparent 70%, var(--accent) 100%);
- transform: translate(-50%, -50%);
- animation: spin-once 0.6s linear forwards;
- z-index: 0;
-}
-
-.category-btn.active::after {
- content: "";
- position: absolute;
- inset: 1px;
background: color-mix(in srgb, var(--accent) 10%, var(--bg-card));
- border-radius: 99px;
- z-index: 1;
-}
-
-@keyframes spin-once {
- 0% {
- transform: translate(-50%, -50%) rotate(0deg);
- opacity: 1;
- }
- 99% {
- transform: translate(-50%, -50%) rotate(360deg);
- opacity: 1;
- }
- 100% {
- transform: translate(-50%, -50%) rotate(360deg);
- opacity: 0;
- }
-}
-
-@keyframes active-border-solid {
- 0%,
- 99% {
- box-shadow:
- 0 4px 16px var(--accent-glow),
- inset 0 0 0 0 transparent;
- }
- 100% {
- box-shadow:
- 0 4px 16px var(--accent-glow),
- inset 0 0 0 1px var(--accent);
- }
+ border-color: var(--accent);
}
.category-btn__count {
@@ -722,12 +540,11 @@ onUnmounted(() => {
background: var(--accent-dim);
border: 1px solid rgba(34, 197, 94, 0.25);
cursor: pointer;
- transition: all var(--transition);
+ transition: background var(--transition);
}
.empty__reset:hover {
background: rgba(34, 197, 94, 0.2);
- box-shadow: 0 0 12px var(--accent-glow);
}
/* Footer */
@@ -760,8 +577,7 @@ onUnmounted(() => {
height: 6px;
border-radius: 50%;
background: var(--accent);
- opacity: 0.4;
- transform: scale(0.85);
+ opacity: 0.5;
}
/* Responsive */