diff --git a/src/components/detail/detail-case-study.tsx b/src/components/detail/detail-case-study.tsx
index 5eed5c1..700df5e 100644
--- a/src/components/detail/detail-case-study.tsx
+++ b/src/components/detail/detail-case-study.tsx
@@ -14,7 +14,7 @@ export function CaseStudyCard({ study, index }: CaseStudyCardProps) {
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-50px' }}
- transition={{ duration: 0.5, delay: index * 0.1 }}
+ transition={{ duration: 0.3, delay: index * 0.1 }}
className="rounded-xl border border-gray-200 bg-white p-6 shadow-sm transition-shadow hover:shadow-md"
>
diff --git a/src/components/detail/detail-cta-section.tsx b/src/components/detail/detail-cta-section.tsx
index df1aa56..6d2bd38 100644
--- a/src/components/detail/detail-cta-section.tsx
+++ b/src/components/detail/detail-cta-section.tsx
@@ -37,7 +37,7 @@ export function DetailCTASection({
initial={{ opacity: 0, y: 32 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-100px' }}
- transition={{ duration: 0.7, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }}
className="max-w-3xl"
>
{/* 标签 */}
@@ -77,7 +77,7 @@ export function DetailCTASection({
initial={{ opacity: 0 }}
whileInView={{ opacity: 1 }}
viewport={{ once: true }}
- transition={{ delay: 0.5, duration: 0.6 }}
+ transition={{ delay: 0.5, duration: 0.3 }}
className="mt-10 text-sm text-white/50"
>
平均响应时间 < 2小时 · 7×24小时技术支持 · 无需预付费用
diff --git a/src/components/detail/detail-hero.tsx b/src/components/detail/detail-hero.tsx
index 8576f7a..c1cc531 100644
--- a/src/components/detail/detail-hero.tsx
+++ b/src/components/detail/detail-hero.tsx
@@ -69,7 +69,7 @@ export function DetailHero({
scale: 1,
filter: 'blur(0px)',
transition: {
- duration: 0.7,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1] as const,
},
},
@@ -136,7 +136,7 @@ export function DetailHero({
opacity: 1,
y: 0,
transition: {
- duration: 0.65,
+ duration: 0.3,
delay: 0.4,
ease: [0.22, 1, 0.36, 1] as const,
},
@@ -156,7 +156,7 @@ export function DetailHero({
opacity: 1,
y: 0,
transition: {
- duration: 0.6,
+ duration: 0.3,
delay: 0.55,
ease: [0.22, 1, 0.36, 1] as const,
},
diff --git a/src/components/detail/detail-product-value.tsx b/src/components/detail/detail-product-value.tsx
index 871370e..aaf62e4 100644
--- a/src/components/detail/detail-product-value.tsx
+++ b/src/components/detail/detail-product-value.tsx
@@ -147,7 +147,7 @@ export function ProductValueSection({ product }: ProductValueSectionProps) {
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{
- duration: 0.5,
+ duration: 0.3,
delay: index * 0.06,
ease: [0.22, 1, 0.36, 1],
}}
@@ -188,7 +188,7 @@ export function ProductValueSection({ product }: ProductValueSectionProps) {
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true }}
transition={{
- duration: 0.4,
+ duration: 0.3,
delay: index * 0.06,
ease: [0.22, 1, 0.36, 1],
}}
@@ -223,7 +223,7 @@ export function ProductValueSection({ product }: ProductValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: 0.3 + index * 0.05,
- duration: 0.35,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="flex items-start gap-3 text-sm text-text-secondary"
diff --git a/src/components/detail/detail-trust-section.tsx b/src/components/detail/detail-trust-section.tsx
index ea706e3..e2c2f35 100644
--- a/src/components/detail/detail-trust-section.tsx
+++ b/src/components/detail/detail-trust-section.tsx
@@ -78,7 +78,7 @@ export function DetailTrustSection({
initial={{ opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.7, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }}
className="mb-12"
>
@@ -102,7 +102,7 @@ export function DetailTrustSection({
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-60px' }}
transition={{
- duration: 0.5,
+ duration: 0.3,
delay: index * 0.08,
ease: [0.22, 1, 0.36, 1],
}}
@@ -123,7 +123,7 @@ export function DetailTrustSection({
initial={{ opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.7, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }}
className="mb-12"
>
@@ -139,7 +139,7 @@ export function DetailTrustSection({
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-60px' }}
transition={{
- duration: 0.5,
+ duration: 0.3,
delay: index * 0.08,
ease: [0.22, 1, 0.36, 1],
}}
@@ -156,7 +156,7 @@ export function DetailTrustSection({
initial={{ opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.7, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }}
className="text-center"
>
资质认证
diff --git a/src/components/detail/list-page-hero.tsx b/src/components/detail/list-page-hero.tsx
index 1994aff..11ac108 100644
--- a/src/components/detail/list-page-hero.tsx
+++ b/src/components/detail/list-page-hero.tsx
@@ -77,7 +77,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ duration: 0.6, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="max-w-4xl mx-auto text-center"
>
{/* Dynamic Badge */}
@@ -86,7 +86,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, scale: 0.95, y: 8 }}
whileInView={{ opacity: 1, scale: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ delay: 0.1, duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.1, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full text-sm font-medium mb-6 backdrop-blur-sm"
style={{ backgroundColor: badgeStyle.bg, color: badgeStyle.text, border: `1px solid ${badgeStyle.border}` }}
>
@@ -100,7 +100,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ delay: 0.15, duration: 0.7, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.15, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-4xl md:text-5xl lg:text-6xl font-bold tracking-tight mb-6 text-[var(--color-text-primary)]"
>
{title}
@@ -111,7 +111,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ delay: 0.25, duration: 0.65, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.25, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-lg md:text-xl max-w-2xl mx-auto leading-relaxed mb-4 text-[var(--color-text-secondary)]"
>
{subtitle}
@@ -123,7 +123,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 18 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ delay: 0.35, duration: 0.6, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.35, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-base max-w-xl mx-auto mb-10 text-[var(--color-text-muted)]"
>
{description}
@@ -136,7 +136,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ delay: 0.4, duration: 0.7, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.4, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="flex flex-wrap justify-center gap-8 md:gap-12 mt-12 pt-12 border-t border-[var(--color-border-primary)]"
>
{stats.map((stat, index) => (
@@ -145,7 +145,7 @@ export function ListPageHero({
initial={shouldReduceMotion ? {} : { opacity: 0, scale: 0.95 }}
whileInView={{ opacity: 1, scale: 1 }}
viewport={{ once: true }}
- transition={{ delay: 0.5 + index * 0.08, duration: 0.45, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ delay: 0.5 + index * 0.08, duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-center min-w-[100px]"
>
diff --git a/src/components/detail/product-card.tsx b/src/components/detail/product-card.tsx
index 28483ae..54cdd02 100644
--- a/src/components/detail/product-card.tsx
+++ b/src/components/detail/product-card.tsx
@@ -24,7 +24,7 @@ export function ProductCard({ product }: ProductCardProps) {
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{
- duration: 0.65,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1] as const,
}}
className="group"
@@ -37,7 +37,7 @@ export function ProductCard({ product }: ProductCardProps) {
alt={product.title}
fill
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
- className="object-cover group-hover:scale-105 transition-transform duration-500"
+ className="object-cover group-hover:scale-105 transition-transform duration-150"
/>
diff --git a/src/components/detail/service-value.tsx b/src/components/detail/service-value.tsx
index 8caf89a..9492d22 100644
--- a/src/components/detail/service-value.tsx
+++ b/src/components/detail/service-value.tsx
@@ -63,7 +63,7 @@ export function ServiceValueSection({ service }: ServiceValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: index * 0.06,
- duration: 0.5,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="bain-card p-6"
@@ -105,7 +105,7 @@ export function ServiceValueSection({ service }: ServiceValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: index * 0.06,
- duration: 0.4,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="bain-card p-5 flex items-start gap-3"
@@ -135,7 +135,7 @@ export function ServiceValueSection({ service }: ServiceValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: index * 0.08,
- duration: 0.45,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="bain-card p-5"
diff --git a/src/components/detail/solution-service-card.tsx b/src/components/detail/solution-service-card.tsx
index dafb866..be4afda 100644
--- a/src/components/detail/solution-service-card.tsx
+++ b/src/components/detail/solution-service-card.tsx
@@ -37,7 +37,7 @@ export function SolutionCard({ solution }: SolutionCardProps) {
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{
- duration: 0.65,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1] as const,
}}
className="group"
@@ -50,7 +50,7 @@ export function SolutionCard({ solution }: SolutionCardProps) {
src={solution.image}
alt={solution.title}
fill
- className="object-cover group-hover:scale-105 transition-transform duration-500"
+ className="object-cover group-hover:scale-105 transition-transform duration-150"
/>
) : (
@@ -117,7 +117,7 @@ export function ServiceCard({ service }: ServiceCardProps) {
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{
- duration: 0.65,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1] as const,
}}
className="group"
diff --git a/src/components/detail/solution-value.tsx b/src/components/detail/solution-value.tsx
index 65f3168..512c08f 100644
--- a/src/components/detail/solution-value.tsx
+++ b/src/components/detail/solution-value.tsx
@@ -45,7 +45,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) {
initial={{ opacity: 0, x: -30 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.7, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, ease: [0.22, 1, 0.36, 1] }}
>
@@ -63,7 +63,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: index * 0.08,
- duration: 0.45,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="flex items-start gap-3 text-text-secondary"
@@ -81,7 +81,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) {
initial={{ opacity: 0, x: 30 }}
whileInView={{ opacity: 1, x: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.7, delay: 0.15, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, delay: 0.15, ease: [0.22, 1, 0.36, 1] }}
>
@@ -99,7 +99,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: 0.25 + index * 0.08,
- duration: 0.45,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="flex items-start gap-3 text-text-secondary"
@@ -142,7 +142,7 @@ export function SolutionValueSection({ solution }: SolutionValueSectionProps) {
viewport={{ once: true }}
transition={{
delay: index * 0.08,
- duration: 0.5,
+ duration: 0.3,
ease: [0.22, 1, 0.36, 1],
}}
className="bain-card p-7"
diff --git a/src/components/sections/case-card.tsx b/src/components/sections/case-card.tsx
index 41d1aab..754c9b4 100644
--- a/src/components/sections/case-card.tsx
+++ b/src/components/sections/case-card.tsx
@@ -44,14 +44,14 @@ export function CaseCard({
return (
{/* Background image */}
{image && (
)}
diff --git a/src/components/sections/case-detail-page.tsx b/src/components/sections/case-detail-page.tsx
index 7bc5dcc..76bdf99 100644
--- a/src/components/sections/case-detail-page.tsx
+++ b/src/components/sections/case-detail-page.tsx
@@ -63,7 +63,7 @@ function CaseDetailHero({ data }: CaseDetailHeroProps) {
className="flex flex-wrap items-center gap-3 mb-8"
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
- transition={{ duration: 0.6, ease: EASE }}
+ transition={{ duration: 0.3, ease: EASE }}
>
{m.highlight && (
@@ -416,7 +416,7 @@ function ResultsSection({ data }: { data: CaseDetailData }) {
核心指标
)}
-
+
{isNumeric && inView && !shouldReduceMotion ? (
diff --git a/src/components/sections/cta-section.tsx b/src/components/sections/cta-section.tsx
index 55ffd8c..e6e94ab 100644
--- a/src/components/sections/cta-section.tsx
+++ b/src/components/sections/cta-section.tsx
@@ -40,7 +40,7 @@ export function CTASection({
initial={shouldReduceMotion ? {} : { opacity: 0, scale: 0.96, y: 16 }}
whileInView={{ opacity: 1, scale: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.6, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-center max-w-3xl mx-auto relative"
>
@@ -50,7 +50,7 @@ export function CTASection({
initial={shouldReduceMotion ? {} : { opacity: 0, y: -8 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
- transition={{ duration: 0.4, delay: 0.15 }}
+ transition={{ duration: 0.3, delay: 0.15 }}
className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-[var(--color-brand-soft)] border border-[var(--color-border-primary)] mb-8"
>
diff --git a/src/components/sections/hero-section-v2.tsx b/src/components/sections/hero-section-v2.tsx
index c1202eb..476d484 100644
--- a/src/components/sections/hero-section-v2.tsx
+++ b/src/components/sections/hero-section-v2.tsx
@@ -43,7 +43,7 @@ export function HeroSectionV2() {
const fadeUp = (delay: number) => ({
initial: shouldReduceMotion ? {} : { opacity: 0, y: 24 },
animate: { opacity: 1, y: 0 },
- transition: { duration: 0.5, delay, ease: EASE },
+ transition: { duration: 0.3, delay, ease: EASE },
});
return (
@@ -106,7 +106,7 @@ export function HeroSectionV2() {
setIsCardHovered(false)}
>
-
-
+
+
{item.name}
-
diff --git a/src/components/sections/insight-card.tsx b/src/components/sections/insight-card.tsx
index 0e1de2e..17a3989 100644
--- a/src/components/sections/insight-card.tsx
+++ b/src/components/sections/insight-card.tsx
@@ -41,7 +41,7 @@ export function InsightCard({
)}
@@ -67,7 +67,7 @@ export function InsightCard({
return (
diff --git a/src/components/sections/methodology-section.tsx b/src/components/sections/methodology-section.tsx
index 5d79993..52e2933 100644
--- a/src/components/sections/methodology-section.tsx
+++ b/src/components/sections/methodology-section.tsx
@@ -19,7 +19,7 @@ export function MethodologySection() {
diff --git a/src/components/sections/product-card.tsx b/src/components/sections/product-card.tsx
index 862e98c..03a6318 100644
--- a/src/components/sections/product-card.tsx
+++ b/src/components/sections/product-card.tsx
@@ -29,12 +29,12 @@ export function ProductCard({
return (
{/* Left accent bar — visible on hover */}
{
e.currentTarget.style.transform = 'scaleY(1)';
@@ -44,7 +44,7 @@ export function ProductCard({
{/* Content */}
{/* Icon: 装饰性图标,对屏幕阅读器隐藏 */}
-
+
{icon}
@@ -73,9 +73,9 @@ export function ProductCard({
{/* Hover background lift */}
-
+
{ e.currentTarget.style.opacity = '1'; }}
/>
diff --git a/src/components/sections/product-matrix-section.tsx b/src/components/sections/product-matrix-section.tsx
index d98948e..a0e0c7f 100644
--- a/src/components/sections/product-matrix-section.tsx
+++ b/src/components/sections/product-matrix-section.tsx
@@ -17,7 +17,7 @@ export function ProductMatrixSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-100px' }}
- transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="flex flex-col md:flex-row md:items-end md:justify-between gap-4 mb-14"
>
diff --git a/src/components/sections/question-card.tsx b/src/components/sections/question-card.tsx
index 9bf85cc..c4bc064 100644
--- a/src/components/sections/question-card.tsx
+++ b/src/components/sections/question-card.tsx
@@ -27,7 +27,7 @@ export function QuestionCard({
className={`group md:grid md:grid-cols-2 border-b border-[var(--color-border-primary)] relative overflow-hidden ${className}`}
>
{/* Left accent bar — visible on hover */}
-
{ e.currentTarget.style.transform = 'scaleY(1)'; }}
/>
diff --git a/src/components/sections/section-header.tsx b/src/components/sections/section-header.tsx
index 4f3d826..750afb8 100644
--- a/src/components/sections/section-header.tsx
+++ b/src/components/sections/section-header.tsx
@@ -35,7 +35,7 @@ export function SectionHeader({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-40px' }}
- transition={{ duration: 0.6, ease: EASE }}
+ transition={{ duration: 0.3, ease: EASE }}
>
{/* Eyebrow label with brand accent bar */}
@@ -51,7 +51,7 @@ export function SectionHeader({
initial={shouldReduceMotion ? {} : { scaleY: 0 }}
whileInView={{ scaleY: 1 }}
viewport={{ once: true, margin: '-40px' }}
- transition={{ duration: 0.4, delay: 0.1, ease: EASE }}
+ transition={{ duration: 0.3, delay: 0.1, ease: EASE }}
/>
{label}
diff --git a/src/components/sections/service-card.tsx b/src/components/sections/service-card.tsx
index 425af1f..896dc07 100644
--- a/src/components/sections/service-card.tsx
+++ b/src/components/sections/service-card.tsx
@@ -34,7 +34,7 @@ export function ServiceCard({
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-40px' }}
- transition={{ duration: 0.6, delay, ease: [0.22, 1, 0.36, 1] }}
+ transition={{ duration: 0.3, delay, ease: [0.22, 1, 0.36, 1] }}
>
{/* Title */}
diff --git a/src/components/sections/social-proof-section.tsx b/src/components/sections/social-proof-section.tsx
index 405f340..6d54a8c 100644
--- a/src/components/sections/social-proof-section.tsx
+++ b/src/components/sections/social-proof-section.tsx
@@ -40,7 +40,7 @@ export function SocialProofSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-100px' }}
- transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-center max-w-3xl mx-auto mb-16"
>
@@ -56,7 +56,7 @@ export function SocialProofSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.6, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="grid grid-cols-2 lg:grid-cols-4 gap-6 md:gap-8 mb-16"
>
{METRICS.map((metric, idx) => {
@@ -67,7 +67,7 @@ export function SocialProofSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-60px' }}
- transition={{ duration: 0.5, delay: idx * 0.1, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, delay: idx * 0.1, ease: [0.16, 1, 0.3, 1] }}
className="text-center group"
>
@@ -95,7 +95,7 @@ export function SocialProofSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-60px' }}
- transition={{ duration: 0.5, delay: 0.2 + idx * 0.1, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, delay: 0.2 + idx * 0.1, ease: [0.16, 1, 0.3, 1] }}
className="relative p-6 md:p-8 rounded-2xl bg-[var(--color-bg-section)] border border-[var(--color-border-primary)] hover:border-[rgba(var(--color-brand-rgb),0.2)] transition-all duration-300"
>
diff --git a/src/components/sections/why-us-section.tsx b/src/components/sections/why-us-section.tsx
index 2eca59c..e22014b 100644
--- a/src/components/sections/why-us-section.tsx
+++ b/src/components/sections/why-us-section.tsx
@@ -59,7 +59,7 @@ export function WhyUsSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-100px' }}
- transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="mb-14"
>
@@ -83,7 +83,7 @@ export function WhyUsSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 24, scale: 0.96 }}
whileInView={{ opacity: 1, y: 0, scale: 1 }}
viewport={{ once: true, margin: '-60px' }}
- transition={{ duration: 0.5, delay: idx * 0.08, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, delay: idx * 0.08, ease: [0.16, 1, 0.3, 1] }}
className="relative group p-6 md:p-8 rounded-2xl bg-[var(--color-bg-primary)] border border-[var(--color-border-primary)] hover:border-[rgba(var(--color-brand-rgb),0.25)] transition-all duration-300"
>
@@ -134,7 +134,7 @@ export function WhyUsSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 16 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-80px' }}
- transition={{ duration: 0.5, delay: 0.3, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, delay: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="text-center"
>
想深入了解我们的团队能力?
@@ -151,7 +151,7 @@ export function WhyUsSection() {
initial={shouldReduceMotion ? {} : { opacity: 0, y: 16 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, margin: '-60px' }}
- transition={{ duration: 0.5, delay: 0.4, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, delay: 0.4, ease: [0.16, 1, 0.3, 1] }}
className="mt-16 pt-10 border-t border-[var(--color-border-primary)]"
>
技术伙伴 / 技术栈
diff --git a/src/components/ui/brand-visuals.tsx b/src/components/ui/brand-visuals.tsx
index 3ad43a1..7217482 100644
--- a/src/components/ui/brand-visuals.tsx
+++ b/src/components/ui/brand-visuals.tsx
@@ -92,7 +92,7 @@ export function BrandStamp({ children }: { children: React.ReactNode }) {
initial={shouldReduceMotion ? {} : { scale: 1.3, opacity: 0, rotate: -12 }}
whileInView={{ scale: 1, opacity: 1, rotate: -5 }}
viewport={{ once: true }}
- transition={{ duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
+ transition={{ duration: 0.3, ease: [0.16, 1, 0.3, 1] }}
className="inline-block px-3 py-1.5 border-2 border-[var(--color-brand)] rounded-sm"
style={{
transform: 'rotate(-5deg)',
diff --git a/src/components/ui/stats-showcase.tsx b/src/components/ui/stats-showcase.tsx
index 94faf2f..d39cc14 100644
--- a/src/components/ui/stats-showcase.tsx
+++ b/src/components/ui/stats-showcase.tsx
@@ -72,7 +72,7 @@ export function StatsShowcase({
@@ -131,7 +131,7 @@ export function StatsShowcase({
{item.accent && (
)}