@@ -104,34 +104,6 @@ main {
104104/* New Thematic Styles */
105105
106106/* For Game Engines */
107- .skill-cog {
108- @apply flex h-24 w-24 items-center justify-center rounded-full bg-ctp-surface0 font-mono text-lg font-bold text-ctp-text shadow-inner transition-all duration-300;
109- clip-path : polygon (
110- 50% 0% ,
111- 61% 35% ,
112- 98% 35% ,
113- 68% 57% ,
114- 79% 91% ,
115- 50% 70% ,
116- 21% 91% ,
117- 32% 57% ,
118- 2% 35% ,
119- 39% 35%
120- );
121- animation : spin 10s linear infinite reverse;
122- }
123- .skill-cog : hover {
124- @apply scale-110 -rotate-[30deg ] cursor-pointer bg-ctp-mauve text-ctp-base;
125- animation-play-state : paused;
126- }
127- @keyframes spin {
128- from {
129- transform : rotate (0deg );
130- }
131- to {
132- transform : rotate (360deg );
133- }
134- }
135107
136108/* For Programming Languages */
137109.blinking-cursor {
@@ -167,63 +139,109 @@ main {
167139 opacity : 1 ;
168140 transform : translateY (0 );
169141}
170-
142+ /* --- Glitch Effect --- */
171143.glitch {
172- animation : glitch 1.5s linear infinite;
144+ position : relative;
145+ /* Use Catppuccin colors for a cohesive theme */
146+ color : # cba6f7 ; /* Mauve */
147+ /* Animation: name duration timing-function delay iteration-count direction fill-mode */
148+ animation : glitch-skew 1s infinite linear alternate-reverse;
173149}
174150
175- @keyframes glitch {
176- 2% ,
177- 64% {
178- transform : translate (2px , 0 ) skew (0deg );
179- }
180- 4% ,
181- 60% {
182- transform : translate (-2px , 0 ) skew (0deg );
183- }
184- 62% {
185- transform : translate (0 , 0 ) skew (5deg );
186- }
187- }
188-
189- .glitch : before ,
190- .glitch : after {
151+ .glitch ::before ,
152+ .glitch ::after {
191153 content : attr (data-text);
192154 position : absolute;
193155 top : 0 ;
194156 left : 0 ;
195157 width : 100% ;
196158 height : 100% ;
159+ background : # 1e1e2e ; /* Base color to prevent transparency issues */
197160}
198161
199- .glitch : before {
162+ /* Red channel glitch */
163+ .glitch ::before {
200164 left : 2px ;
201- text-shadow : -2px 0 # ff00c1 ;
202- clip : rect ( 44 px , 450 px , 56 px , 0 );
203- animation : glitch-anim 5 s infinite linear alternate-reverse;
165+ text-shadow : -2px 0 # f38ba8 ; /* Red */
166+ clip-path : inset ( 50 % 0 51 % 0 );
167+ animation : glitch-anim-1 2 s infinite linear alternate-reverse;
204168}
205169
206- .glitch : after {
170+ /* Blue channel glitch */
171+ .glitch ::after {
207172 left : -2px ;
208- text-shadow :
209- -2px 0 # 00fff9,
210- 2px 2px # ff00c1 ;
211- clip : rect (85px , 450px , 90px , 0 );
212- animation : glitch-anim2 5s infinite linear alternate-reverse;
173+ text-shadow : -2px 0 # 89b4fa ; /* Blue */
174+ clip-path : inset (0% 0 95% 0 );
175+ animation : glitch-anim-2 3s infinite linear alternate-reverse;
176+ }
177+
178+ /* --- Keyframes --- */
179+
180+ /* Main element's skewing animation */
181+ @keyframes glitch-skew {
182+ 0% {
183+ transform : skew (0deg );
184+ }
185+ 5% {
186+ transform : skew (1deg );
187+ }
188+ 10% {
189+ transform : skew (1deg );
190+ }
191+ 15% {
192+ transform : skew (-1deg );
193+ }
194+ 20% {
195+ transform : skew (-1deg );
196+ }
197+ 25% {
198+ transform : skew (0deg );
199+ }
200+ 100% {
201+ transform : skew (0deg );
202+ }
213203}
214204
215- @keyframes glitch-anim {
205+ /* Animation for the red channel pseudo-element */
206+ @keyframes glitch-anim-1 {
216207 0% {
217- clip : rect (42px , 9999px , 44px , 0 );
218- transform : skew (0.3deg );
208+ clip-path : inset (50% 0 51% 0 );
209+ }
210+ 20% {
211+ clip-path : inset (10% 0 85% 0 );
212+ }
213+ 40% {
214+ clip-path : inset (80% 0 10% 0 );
215+ }
216+ 60% {
217+ clip-path : inset (40% 0 45% 0 );
218+ }
219+ 80% {
220+ clip-path : inset (90% 0 5% 0 );
221+ }
222+ 100% {
223+ clip-path : inset (25% 0 70% 0 );
219224 }
220- /* ... (keep the rest of the keyframes from the original) */
221225}
222226
223- @keyframes glitch-anim2 {
227+ /* Animation for the blue channel pseudo-element */
228+ @keyframes glitch-anim-2 {
224229 0% {
225- clip : rect (42px , 9999px , 44px , 0 );
226- transform : skew (0.3deg );
230+ clip-path : inset (0% 0 95% 0 );
231+ }
232+ 20% {
233+ clip-path : inset (60% 0 35% 0 );
234+ }
235+ 40% {
236+ clip-path : inset (20% 0 75% 0 );
237+ }
238+ 60% {
239+ clip-path : inset (95% 0 2% 0 );
240+ }
241+ 80% {
242+ clip-path : inset (15% 0 80% 0 );
243+ }
244+ 100% {
245+ clip-path : inset (70% 0 25% 0 );
227246 }
228- /* ... (keep the rest of the keyframes from the original) */
229247}
0 commit comments