Skip to content

Commit f3d869d

Browse files
devakoneclaude
andcommitted
feat: replace Montoya slash with vibe echo effect
Cards now show vibration echoes on hover — two offset ghost borders (violet and indigo) that shift in opposite directions, creating a visual resonance effect. Buttons get a smaller single-echo variant. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 8ceda78 commit f3d869d

3 files changed

Lines changed: 48 additions & 21 deletions

File tree

apps/web/src/app/globals.css

Lines changed: 46 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -132,31 +132,58 @@ body {
132132
}
133133
}
134134

135-
/* Montoya slashsignature diagonal accent */
136-
.montoya-slash {
135+
/* Vibe echocards that look like they're vibrating */
136+
.vibe-echo {
137137
position: relative;
138-
overflow: hidden;
139138
}
140139

141-
.montoya-slash::after {
140+
.vibe-echo::before,
141+
.vibe-echo::after {
142142
content: "";
143143
position: absolute;
144-
top: 0;
145-
right: 0;
146-
width: 48px;
147-
height: 48px;
148-
background: linear-gradient(
149-
225deg,
150-
transparent calc(50% - 2px),
151-
#6366f1 calc(50% - 2px),
152-
#4f46e5 calc(50% + 2px),
153-
transparent calc(50% + 2px)
154-
);
144+
inset: 0;
145+
border-radius: inherit;
146+
border: 1px solid;
155147
pointer-events: none;
156-
opacity: 0.35;
157-
transition: opacity 0.3s;
148+
opacity: 0;
149+
transition: opacity 0.4s, transform 0.4s;
158150
}
159151

160-
.montoya-slash:hover::after {
161-
opacity: 0.7;
152+
.vibe-echo::before {
153+
border-color: #7c3aed;
154+
}
155+
156+
.vibe-echo::after {
157+
border-color: #6366f1;
158+
}
159+
160+
.vibe-echo:hover::before {
161+
opacity: 0.25;
162+
transform: translate(-3px, -2px);
163+
}
164+
165+
.vibe-echo:hover::after {
166+
opacity: 0.15;
167+
transform: translate(3px, 2px);
168+
}
169+
170+
/* Smaller echo for buttons */
171+
.vibe-echo-sm {
172+
position: relative;
173+
}
174+
175+
.vibe-echo-sm::after {
176+
content: "";
177+
position: absolute;
178+
inset: 0;
179+
border-radius: inherit;
180+
border: 1px solid #6366f1;
181+
pointer-events: none;
182+
opacity: 0;
183+
transition: opacity 0.3s, transform 0.3s;
184+
}
185+
186+
.vibe-echo-sm:hover::after {
187+
opacity: 0.3;
188+
transform: translate(2px, 1px);
162189
}

apps/web/src/app/login/LoginButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ export default function LoginButton({ provider = "github" }: LoginButtonProps) {
7878
<div className="flex flex-col gap-3">
7979
<button
8080
type="button"
81-
className="montoya-slash flex items-center justify-center gap-2 rounded-md bg-black px-4 py-2 text-white disabled:opacity-60"
81+
className="vibe-echo-sm flex items-center justify-center gap-2 rounded-md bg-black px-4 py-2 text-white disabled:opacity-60"
8282
onClick={signIn}
8383
disabled={isLoading}
8484
>

apps/web/src/lib/theme.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const wrappedTheme = {
5252
},
5353
container: "mx-auto max-w-6xl px-6 sm:px-10 lg:px-20",
5454
pageY: "py-12",
55-
card: "montoya-slash rounded-3xl border border-black/5 bg-white shadow-[0_25px_80px_rgba(30,27,75,0.06)]",
55+
card: "vibe-echo rounded-3xl border border-black/5 bg-white shadow-[0_25px_80px_rgba(30,27,75,0.06)]",
5656
cardInner: "rounded-2xl border border-black/5 bg-white",
5757
// Unified gradient text
5858
gradientText:

0 commit comments

Comments
 (0)