From f2b840416dcc5fbbd8fc674d31758c27adda0ba2 Mon Sep 17 00:00:00 2001 From: "diana.dolgolyova" Date: Tue, 10 Mar 2026 19:55:09 +0300 Subject: [PATCH] feat: glitter border on team/class cards, mobile-friendly class selector - Animated gold border glitter effect on active team card and class image - Classes selector: 2-column grid on mobile (no scroll), list on desktop - Selector appears above detail on mobile (flex-col-reverse) - Compact selector items on mobile (icon + name only) Co-Authored-By: Claude Opus 4.6 --- src/app/styles/animations.css | 45 ++++++++++++++++++++++++++++ src/components/sections/Classes.tsx | 10 +++---- src/components/sections/Team.tsx | 8 +++-- src/components/ui/ShowcaseLayout.tsx | 6 ++-- 4 files changed, 58 insertions(+), 11 deletions(-) diff --git a/src/app/styles/animations.css b/src/app/styles/animations.css index 7c962a8..94f66c2 100644 --- a/src/app/styles/animations.css +++ b/src/app/styles/animations.css @@ -283,6 +283,47 @@ } } +/* ===== Team Card Glitter ===== */ + +@keyframes glitter-move { + 0% { + background-position: 0% 0%; + } + 100% { + background-position: 200% 200%; + } +} + +.team-card-glitter { + position: relative; +} + +/* Animated gold border glow */ +.team-card-glitter::before { + content: ""; + position: absolute; + inset: -1px; + border-radius: inherit; + padding: 2px; + background: linear-gradient( + 135deg, + transparent 20%, + rgba(201, 169, 110, 0.6) 30%, + rgba(212, 184, 122, 1) 35%, + transparent 45%, + transparent 55%, + rgba(201, 169, 110, 0.5) 65%, + rgba(212, 184, 122, 0.9) 70%, + transparent 80% + ); + background-size: 200% 200%; + animation: glitter-move 3s linear infinite; + mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); + mask-composite: exclude; + pointer-events: none; + z-index: 1; +} + /* ===== Section Divider ===== */ .section-divider { @@ -331,4 +372,8 @@ .glow-hover:hover { transform: none; } + + .team-card-glitter::before { + animation: none !important; + } } diff --git a/src/components/sections/Classes.tsx b/src/components/sections/Classes.tsx index e692764..6fd1a51 100644 --- a/src/components/sections/Classes.tsx +++ b/src/components/sections/Classes.tsx @@ -44,7 +44,7 @@ export function Classes() {
{/* Hero image */} {item.images && item.images[0] && ( -
+
{item.name} )} renderSelectorItem={(item, _i, isActive) => ( -
+
{/* Icon */}

{item.name}

-

+

{item.description}

diff --git a/src/components/sections/Team.tsx b/src/components/sections/Team.tsx index 42ae310..f3b5ace 100644 --- a/src/components/sections/Team.tsx +++ b/src/components/sections/Team.tsx @@ -213,7 +213,7 @@ export function Team() { return (
diff --git a/src/components/ui/ShowcaseLayout.tsx b/src/components/ui/ShowcaseLayout.tsx index 5275e7d..08dd080 100644 --- a/src/components/ui/ShowcaseLayout.tsx +++ b/src/components/ui/ShowcaseLayout.tsx @@ -97,7 +97,7 @@ export function ShowcaseLayout({ return (
@@ -131,14 +131,14 @@ export function ShowcaseLayout({
{items.map((item, i) => (