AIencoder commited on
Commit
43ed820
·
verified ·
1 Parent(s): b0179f3

Update style.css

Browse files
Files changed (1) hide show
  1. style.css +88 -27
style.css CHANGED
@@ -1,15 +1,42 @@
1
  /* ===== RESET & BASE ===== */
2
  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
3
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
4
- body{font-family:'Outfit',system-ui,sans-serif;background:#0a0a0f;color:#e5e5e5;min-height:100vh;overflow-x:hidden;line-height:1.6}
5
  a{color:inherit;text-decoration:none}
6
  img{max-width:100%;display:block}
7
  button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
8
  .mono{font-family:'JetBrains Mono',monospace}
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  /* ===== BACKGROUNDS ===== */
11
- .mesh-bg{position:fixed;inset:0;z-index:-2;background:radial-gradient(ellipse 80% 60% at 10% 20%,rgba(168,85,247,.08) 0%,transparent 50%),radial-gradient(ellipse 60% 80% at 80% 80%,rgba(245,158,11,.06) 0%,transparent 50%),radial-gradient(ellipse 50% 50% at 50% 50%,rgba(236,72,153,.04) 0%,transparent 60%),#0a0a0f}
12
- .grid-bg{position:fixed;inset:0;z-index:-1;background-image:linear-gradient(rgba(255,255,255,.015) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);background-size:60px 60px}
 
 
 
 
 
13
 
14
  /* ===== UTILITIES ===== */
15
  .container{max-width:1200px;margin:0 auto;padding:0 1.5rem}
@@ -25,17 +52,17 @@ button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
25
  .grid-4{grid-template-columns:repeat(4,1fr)}
26
  .hidden{display:none!important}
27
  .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
28
- .sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
29
 
30
  @media(max-width:768px){
31
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr 1fr}
32
- .md-grid-1{grid-template-columns:1fr}
33
  .md-hide{display:none!important}
34
  .md-show{display:flex!important}
35
  .hero-title{font-size:3rem!important}
36
  .hero-sub{font-size:2.5rem!important}
37
  .profile-wrap{flex-direction:column!important}
38
  .profile-stats{width:100%}
 
 
39
  }
40
  @media(max-width:480px){
41
  .grid-2,.grid-3{grid-template-columns:1fr}
@@ -47,28 +74,35 @@ button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
47
  .gradient-text{background:linear-gradient(135deg,#a855f7 0%,#ec4899 50%,#f59e0b 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
48
 
49
  /* ===== GLASS & CARDS ===== */
50
- .glass{background:rgba(255,255,255,.03);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
51
- .card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:1.25rem;transition:all .4s cubic-bezier(.22,1,.36,1)}
52
- .card:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(0,0,0,.2)}
53
  .card-amber{border-color:rgba(245,158,11,.1)}.card-amber:hover{border-color:rgba(245,158,11,.3)}
54
  .card-purple:hover{border-color:rgba(168,85,247,.3)}
 
 
55
  .glow-card{position:relative;overflow:hidden}
56
- .glow-card::before{content:'';position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(135deg,rgba(168,85,247,.2),transparent 40%,transparent 60%,rgba(245,158,11,.2));opacity:0;transition:opacity .4s;z-index:0}
57
  .glow-card:hover::before{opacity:1}
58
  .glow-card>*{position:relative;z-index:1}
59
 
60
  /* ===== NAV ===== */
61
- .nav{position:fixed;top:0;width:100%;z-index:50;background:rgba(10,10,15,.8);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.06)}
62
  .nav-inner{height:64px}
63
- .nav-link{padding:.5rem 1rem;border-radius:8px;font-size:.875rem;color:#9ca3af;transition:all .2s}
64
- .nav-link:hover{color:#fff;background:rgba(255,255,255,.05)}
 
 
 
 
65
 
66
  /* ===== BUTTONS ===== */
67
  .btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;border-radius:9999px;font-weight:600;font-size:.875rem;transition:all .3s}
68
  .btn-amber{background:linear-gradient(to right,#f59e0b,#f97316);color:#fff}
69
  .btn-amber:hover{box-shadow:0 8px 24px rgba(245,158,11,.2);transform:translateY(-2px)}
70
- .btn-ghost{border:1px solid rgba(255,255,255,.1);color:#fff}
71
- .btn-ghost:hover{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.05);transform:translateY(-2px)}
 
72
 
73
  /* ===== ICONS ===== */
74
  .icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@@ -78,17 +112,18 @@ button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
78
  .stat{text-align:center;padding:1.25rem}
79
  .stat-icon{margin:0 auto .5rem;font-size:1.5rem}
80
  .stat-num{font-size:1.5rem;font-weight:700}
81
- .stat-label{font-size:.7rem;color:#6b7280;margin-top:.125rem}
82
 
83
  /* ===== CODE BLOCK ===== */
84
- .code-win{background:#12121a;border:1px solid rgba(255,255,255,.06);border-radius:16px;overflow:hidden}
85
- .code-head{background:#1a1a25;padding:.875rem 1.125rem;display:flex;gap:8px;align-items:center;border-bottom:1px solid rgba(255,255,255,.04)}
86
  .code-dot{width:12px;height:12px;border-radius:50%}
87
  .code-body{padding:1.5rem;font-family:'JetBrains Mono',monospace;font-size:.8125rem;line-height:1.8;overflow-x:auto}
88
- .c-purple{color:#c084fc}.c-amber{color:#fbbf24}.c-blue{color:#60a5fa}.c-orange{color:#fdba74}.c-green{color:#34d399}.c-gray{color:#4b5563}.c-gray2{color:#6b7280}.c-white{color:#d1d5db}
89
 
90
  /* ===== SECTION ===== */
91
  .section{padding:6rem 0}
 
92
  .section-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem}
93
  .section-title{font-size:clamp(1.75rem,4vw,2.25rem);font-weight:700}
94
  .section-subtitle{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:1.25rem}
@@ -100,17 +135,43 @@ button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
100
  .profile-avatar-fallback{display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:800;color:white}
101
  .profile-avatar-fallback.gh{background:linear-gradient(135deg,#7c3aed,#a855f7)}
102
  .profile-avatar-fallback.hf{background:linear-gradient(135deg,#f59e0b,#f97316)}
103
- .profile-stat{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.04);border-radius:12px;padding:1rem;min-width:72px;text-align:center}
104
  .profile-stat.amber{border-color:rgba(245,158,11,.1)}
105
  .profile-stat-num{font-size:1.25rem;font-weight:700}
106
- .profile-stat-label{font-size:.625rem;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;margin-top:.125rem}
107
 
108
  /* ===== REPO / MODEL CARDS ===== */
109
- .repo-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.75rem;color:#6b7280;line-height:1.6;margin-bottom:1rem}
110
  .lang-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  /* ===== TECH PILLS ===== */
113
- .pill{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:9999px;font-size:.875rem;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);transition:border-color .3s;cursor:default}
 
 
 
 
 
 
 
 
114
 
115
  /* ===== ANIMATIONS ===== */
116
  @keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@@ -122,10 +183,10 @@ button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
122
 
123
  /* ===== SCROLLBAR ===== */
124
  ::-webkit-scrollbar{width:6px}
125
- ::-webkit-scrollbar-track{background:#0a0a0f}
126
- ::-webkit-scrollbar-thumb{background:rgba(168,85,247,.3);border-radius:3px}
127
 
128
  /* ===== MOBILE MENU ===== */
129
- .mobile-menu{border-top:1px solid rgba(255,255,255,.06);padding:1rem}
130
- .mobile-menu a{display:block;padding:.5rem 1rem;border-radius:8px;font-size:.875rem;color:#9ca3af}
131
- .mobile-menu a:hover{color:#fff;background:rgba(255,255,255,.05)}
 
1
  /* ===== RESET & BASE ===== */
2
  *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
3
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
4
+ body{font-family:'Outfit',system-ui,sans-serif;min-height:100vh;overflow-x:hidden;line-height:1.6;transition:background .4s,color .4s}
5
  a{color:inherit;text-decoration:none}
6
  img{max-width:100%;display:block}
7
  button{border:none;background:none;cursor:pointer;color:inherit;font:inherit}
8
  .mono{font-family:'JetBrains Mono',monospace}
9
 
10
+ /* ===== THEME: DARK (default) ===== */
11
+ :root{
12
+ --bg:#0a0a0f;--bg-card:rgba(255,255,255,.03);--bg-card-hover:rgba(255,255,255,.06);
13
+ --border:rgba(255,255,255,.06);--border-hover:rgba(255,255,255,.12);
14
+ --text:#e5e5e5;--text-muted:#9ca3af;--text-dim:#6b7280;--text-faint:#4b5563;
15
+ --nav-bg:rgba(10,10,15,.8);--section-alt:rgba(255,255,255,.01);
16
+ --mesh1:rgba(168,85,247,.08);--mesh2:rgba(245,158,11,.06);--mesh3:rgba(236,72,153,.04);
17
+ --grid-line:rgba(255,255,255,.015);--code-bg:#12121a;--code-head:#1a1a25;
18
+ --scrollbar:rgba(168,85,247,.3);--glow1:rgba(168,85,247,.2);--glow2:rgba(245,158,11,.2);
19
+ }
20
+ /* ===== THEME: LIGHT ===== */
21
+ [data-theme="light"]{
22
+ --bg:#f8f9fc;--bg-card:rgba(0,0,0,.02);--bg-card-hover:rgba(0,0,0,.05);
23
+ --border:rgba(0,0,0,.08);--border-hover:rgba(0,0,0,.15);
24
+ --text:#1a1a2e;--text-muted:#555;--text-dim:#777;--text-faint:#aaa;
25
+ --nav-bg:rgba(248,249,252,.85);--section-alt:rgba(0,0,0,.02);
26
+ --mesh1:rgba(168,85,247,.06);--mesh2:rgba(245,158,11,.04);--mesh3:rgba(236,72,153,.03);
27
+ --grid-line:rgba(0,0,0,.03);--code-bg:#f1f3f8;--code-head:#e5e8f0;
28
+ --scrollbar:rgba(168,85,247,.2);--glow1:rgba(168,85,247,.1);--glow2:rgba(245,158,11,.1);
29
+ }
30
+ body{background:var(--bg);color:var(--text)}
31
+
32
  /* ===== BACKGROUNDS ===== */
33
+ .mesh-bg{position:fixed;inset:0;z-index:-2;background:radial-gradient(ellipse 80% 60% at 10% 20%,var(--mesh1) 0%,transparent 50%),radial-gradient(ellipse 60% 80% at 80% 80%,var(--mesh2) 0%,transparent 50%),radial-gradient(ellipse 50% 50% at 50% 50%,var(--mesh3) 0%,transparent 60%),var(--bg);transition:background .4s}
34
+ .grid-bg{position:fixed;inset:0;z-index:-1;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:60px 60px}
35
+
36
+ /* ===== FLOATING PARTICLES ===== */
37
+ .particles{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
38
+ .particle{position:absolute;border-radius:50%;opacity:.3;animation:floatParticle linear infinite}
39
+ @keyframes floatParticle{0%{transform:translateY(100vh) rotate(0deg)}100%{transform:translateY(-10vh) rotate(360deg)}}
40
 
41
  /* ===== UTILITIES ===== */
42
  .container{max-width:1200px;margin:0 auto;padding:0 1.5rem}
 
52
  .grid-4{grid-template-columns:repeat(4,1fr)}
53
  .hidden{display:none!important}
54
  .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 
55
 
56
  @media(max-width:768px){
57
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr 1fr}
 
58
  .md-hide{display:none!important}
59
  .md-show{display:flex!important}
60
  .hero-title{font-size:3rem!important}
61
  .hero-sub{font-size:2.5rem!important}
62
  .profile-wrap{flex-direction:column!important}
63
  .profile-stats{width:100%}
64
+ .project-card-inner{flex-direction:column!important}
65
+ .project-img{width:100%!important;height:180px!important}
66
  }
67
  @media(max-width:480px){
68
  .grid-2,.grid-3{grid-template-columns:1fr}
 
74
  .gradient-text{background:linear-gradient(135deg,#a855f7 0%,#ec4899 50%,#f59e0b 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
75
 
76
  /* ===== GLASS & CARDS ===== */
77
+ .glass{background:var(--bg-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
78
+ .card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.25rem;transition:all .4s cubic-bezier(.22,1,.36,1)}
79
+ .card:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(0,0,0,.15)}
80
  .card-amber{border-color:rgba(245,158,11,.1)}.card-amber:hover{border-color:rgba(245,158,11,.3)}
81
  .card-purple:hover{border-color:rgba(168,85,247,.3)}
82
+ .card-green{border-color:rgba(52,211,153,.1)}.card-green:hover{border-color:rgba(52,211,153,.3)}
83
+ .card-blue{border-color:rgba(96,165,250,.1)}.card-blue:hover{border-color:rgba(96,165,250,.3)}
84
  .glow-card{position:relative;overflow:hidden}
85
+ .glow-card::before{content:'';position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(135deg,var(--glow1),transparent 40%,transparent 60%,var(--glow2));opacity:0;transition:opacity .4s;z-index:0}
86
  .glow-card:hover::before{opacity:1}
87
  .glow-card>*{position:relative;z-index:1}
88
 
89
  /* ===== NAV ===== */
90
+ .nav{position:fixed;top:0;width:100%;z-index:50;background:var(--nav-bg);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:background .4s}
91
  .nav-inner{height:64px}
92
+ .nav-link{padding:.5rem 1rem;border-radius:8px;font-size:.875rem;color:var(--text-muted);transition:all .2s}
93
+ .nav-link:hover{color:var(--text);background:var(--bg-card-hover)}
94
+
95
+ /* ===== THEME TOGGLE ===== */
96
+ .theme-toggle{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;transition:all .3s;color:var(--text-muted);border:1px solid var(--border)}
97
+ .theme-toggle:hover{color:#f59e0b;border-color:rgba(245,158,11,.3);background:rgba(245,158,11,.05)}
98
 
99
  /* ===== BUTTONS ===== */
100
  .btn{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 2rem;border-radius:9999px;font-weight:600;font-size:.875rem;transition:all .3s}
101
  .btn-amber{background:linear-gradient(to right,#f59e0b,#f97316);color:#fff}
102
  .btn-amber:hover{box-shadow:0 8px 24px rgba(245,158,11,.2);transform:translateY(-2px)}
103
+ .btn-ghost{border:1px solid var(--border);color:var(--text)}
104
+ .btn-ghost:hover{border-color:var(--border-hover);background:var(--bg-card-hover);transform:translateY(-2px)}
105
+ .btn-sm{padding:.5rem 1.25rem;font-size:.75rem;border-radius:9999px}
106
 
107
  /* ===== ICONS ===== */
108
  .icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
 
112
  .stat{text-align:center;padding:1.25rem}
113
  .stat-icon{margin:0 auto .5rem;font-size:1.5rem}
114
  .stat-num{font-size:1.5rem;font-weight:700}
115
+ .stat-label{font-size:.7rem;color:var(--text-dim);margin-top:.125rem}
116
 
117
  /* ===== CODE BLOCK ===== */
118
+ .code-win{background:var(--code-bg);border:1px solid var(--border);border-radius:16px;overflow:hidden;transition:background .4s}
119
+ .code-head{background:var(--code-head);padding:.875rem 1.125rem;display:flex;gap:8px;align-items:center;border-bottom:1px solid var(--border);transition:background .4s}
120
  .code-dot{width:12px;height:12px;border-radius:50%}
121
  .code-body{padding:1.5rem;font-family:'JetBrains Mono',monospace;font-size:.8125rem;line-height:1.8;overflow-x:auto}
122
+ .c-purple{color:#c084fc}.c-amber{color:#fbbf24}.c-blue{color:#60a5fa}.c-orange{color:#fdba74}.c-green{color:#34d399}.c-gray{color:var(--text-faint)}.c-gray2{color:var(--text-dim)}.c-white{color:var(--text-muted)}
123
 
124
  /* ===== SECTION ===== */
125
  .section{padding:6rem 0}
126
+ .section-alt{background:var(--section-alt)}
127
  .section-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem}
128
  .section-title{font-size:clamp(1.75rem,4vw,2.25rem);font-weight:700}
129
  .section-subtitle{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:1.25rem}
 
135
  .profile-avatar-fallback{display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:800;color:white}
136
  .profile-avatar-fallback.gh{background:linear-gradient(135deg,#7c3aed,#a855f7)}
137
  .profile-avatar-fallback.hf{background:linear-gradient(135deg,#f59e0b,#f97316)}
138
+ .profile-stat{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem;min-width:72px;text-align:center}
139
  .profile-stat.amber{border-color:rgba(245,158,11,.1)}
140
  .profile-stat-num{font-size:1.25rem;font-weight:700}
141
+ .profile-stat-label{font-size:.625rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;margin-top:.125rem}
142
 
143
  /* ===== REPO / MODEL CARDS ===== */
144
+ .repo-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.75rem;color:var(--text-dim);line-height:1.6;margin-bottom:1rem}
145
  .lang-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
146
 
147
+ /* ===== PROJECT CARDS ===== */
148
+ .project-card{border-radius:20px;overflow:hidden;background:var(--bg-card);border:1px solid var(--border);transition:all .4s cubic-bezier(.22,1,.36,1)}
149
+ .project-card:hover{transform:translateY(-6px);box-shadow:0 24px 48px rgba(0,0,0,.2)}
150
+ .project-card-inner{display:flex;gap:0}
151
+ .project-img{width:280px;min-height:220px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:3.5rem;position:relative;overflow:hidden}
152
+ .project-img::after{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent,rgba(0,0,0,.2))}
153
+ .project-body{padding:2rem;flex:1;display:flex;flex-direction:column;justify-content:center}
154
+ .project-tag{display:inline-flex;padding:.25rem .75rem;border-radius:9999px;font-size:.625rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
155
+ .project-featured{position:absolute;top:1rem;left:1rem;z-index:1;padding:.25rem .75rem;border-radius:9999px;font-size:.625rem;font-weight:700;background:linear-gradient(to right,#f59e0b,#f97316);color:#fff;text-transform:uppercase;letter-spacing:.05em}
156
+
157
+ /* ===== BLOG CARDS ===== */
158
+ .blog-card{border-radius:16px;overflow:hidden;background:var(--bg-card);border:1px solid var(--border);transition:all .4s cubic-bezier(.22,1,.36,1)}
159
+ .blog-card:hover{transform:translateY(-4px);box-shadow:0 16px 32px rgba(0,0,0,.15)}
160
+ .blog-header{height:140px;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
161
+ .blog-body{padding:1.5rem}
162
+ .blog-meta{display:flex;align-items:center;gap:.75rem;font-size:.75rem;color:var(--text-dim);margin-bottom:.75rem}
163
+ .blog-dot{width:4px;height:4px;background:var(--text-faint);border-radius:50%}
164
+
165
  /* ===== TECH PILLS ===== */
166
+ .pill{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;border-radius:9999px;font-size:.875rem;background:var(--bg-card);border:1px solid var(--border);transition:border-color .3s;cursor:default}
167
+
168
+ /* ===== VISITOR COUNTER ===== */
169
+ .visitor-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem 1rem;border-radius:9999px;font-size:.75rem;color:var(--text-dim);background:var(--bg-card);border:1px solid var(--border)}
170
+ .visitor-dot{width:6px;height:6px;background:#4ade80;border-radius:50%;animation:pulse 2s ease-in-out infinite}
171
+
172
+ /* ===== SCROLL ANIMATIONS ===== */
173
+ .reveal{opacity:0;transform:translateY(30px);transition:all .8s cubic-bezier(.22,1,.36,1)}
174
+ .reveal.visible{opacity:1;transform:translateY(0)}
175
 
176
  /* ===== ANIMATIONS ===== */
177
  @keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
 
183
 
184
  /* ===== SCROLLBAR ===== */
185
  ::-webkit-scrollbar{width:6px}
186
+ ::-webkit-scrollbar-track{background:var(--bg)}
187
+ ::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:3px}
188
 
189
  /* ===== MOBILE MENU ===== */
190
+ .mobile-menu{border-top:1px solid var(--border);padding:1rem}
191
+ .mobile-menu a{display:block;padding:.5rem 1rem;border-radius:8px;font-size:.875rem;color:var(--text-muted)}
192
+ .mobile-menu a:hover{color:var(--text);background:var(--bg-card-hover)}