@howssatoshi/quantumcss 1.7.5 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@
33
33
  <div class="star" style="top: 90%; left: 90%; --duration: 4s;"></div>
34
34
  </div>
35
35
  <button class="theme-toggle" onclick="toggleTheme()" title="Toggle Theme">
36
- <svg class="sun-icon hidden" fill="currentColor" viewBox="0 0 20 20"><path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"></path></svg>
36
+ <svg class="sun-icon" fill="currentColor" viewBox="0 0 20 20"><path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"></path></svg>
37
37
  <svg class="moon-icon" fill="currentColor" viewBox="0 0 20 20"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"></path></svg>
38
38
  </button>
39
39
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  <header class="hero container">
84
84
  <div class="pt-8 pb-12 text-center">
85
- <span class="text-[10px] font-black tracking-[0.3em] text-starlight uppercase mb-6 block">QuantumCSS v1.7.5</span>
85
+ <span class="text-[10px] font-black tracking-[0.3em] text-starlight uppercase mb-6 block">QuantumCSS v1.7.9</span>
86
86
  <h1 class="text-7xl md:text-8xl text-gradient-starlight font-black uppercase italic tracking-tighter mb-8">Starlight Design</h1>
87
87
  <p class="text-xl text-slate-400 max-w-3xl mx-auto mb-12 font-medium leading-relaxed">
88
88
  A standardized, high-performance UI library.
@@ -100,7 +100,7 @@
100
100
  <h2 class="text-3xl font-black uppercase tracking-tighter mb-8 text-center">Template Gallery</h2>
101
101
  <div class="grid-3">
102
102
  <a href="blog-template.html" class="starlight-card">
103
- <div class="h-40 bg-gradient-to-br from-blue-500_20 to-purple-500_20 rounded-xl mb-4 flex items-center justify-center">
103
+ <div class="h-40 bg-gradient-to-br from-blue-500_60 to-purple-500_60 rounded-xl mb-4 flex items-center justify-center">
104
104
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
105
105
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"></path>
106
106
  </svg>
@@ -110,7 +110,7 @@
110
110
  </a>
111
111
 
112
112
  <a href="email-template.html" class="starlight-card">
113
- <div class="h-40 bg-gradient-to-br from-starlight_20 to-blue-500_20 rounded-xl mb-4 flex items-center justify-center">
113
+ <div class="h-40 bg-gradient-to-br from-starlight_60 to-blue-500_60 rounded-xl mb-4 flex items-center justify-center">
114
114
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
115
115
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path>
116
116
  </svg>
@@ -120,7 +120,7 @@
120
120
  </a>
121
121
 
122
122
  <a href="gaming-template.html" class="starlight-card">
123
- <div class="h-40 bg-gradient-to-br from-purple-500_20 to-pink-500_20 rounded-xl mb-4 flex items-center justify-center">
123
+ <div class="h-40 bg-gradient-to-br from-purple-500_60 to-pink-500_60 rounded-xl mb-4 flex items-center justify-center">
124
124
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
125
125
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"></path>
126
126
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
@@ -131,7 +131,7 @@
131
131
  </a>
132
132
 
133
133
  <a href="news-template.html" class="starlight-card">
134
- <div class="h-40 bg-gradient-to-br from-orange-500_20 to-red-500_20 rounded-xl mb-4 flex items-center justify-center">
134
+ <div class="h-40 bg-gradient-to-br from-orange-500_60 to-red-500_60 rounded-xl mb-4 flex items-center justify-center">
135
135
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
136
136
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"></path>
137
137
  </svg>
@@ -141,7 +141,7 @@
141
141
  </a>
142
142
 
143
143
  <a href="shopping/index.html" class="starlight-card">
144
- <div class="h-40 bg-gradient-to-br from-green-500_20 to-teal-500_20 rounded-xl mb-4 flex items-center justify-center">
144
+ <div class="h-40 bg-gradient-to-br from-green-500_60 to-teal-500_60 rounded-xl mb-4 flex items-center justify-center">
145
145
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
146
146
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16 11V7a4 4 0 00-8 0v4M5 9h14l1 12H4L5 9z"></path>
147
147
  </svg>
@@ -151,7 +151,7 @@
151
151
  </a>
152
152
 
153
153
  <a href="travel/index.html" class="starlight-card">
154
- <div class="h-40 bg-gradient-to-br from-cyan-500_20 to-blue-500_20 rounded-xl mb-4 flex items-center justify-center">
154
+ <div class="h-40 bg-gradient-to-br from-cyan-500_60 to-blue-500_60 rounded-xl mb-4 flex items-center justify-center">
155
155
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
156
156
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
157
157
  </svg>
@@ -161,7 +161,7 @@
161
161
  </a>
162
162
 
163
163
  <a href="analytics-dashboard.html" class="starlight-card">
164
- <div class="h-40 bg-gradient-to-br from-indigo-500_20 to-purple-500_20 rounded-xl mb-4 flex items-center justify-center">
164
+ <div class="h-40 bg-gradient-to-br from-indigo-500_60 to-purple-500_60 rounded-xl mb-4 flex items-center justify-center">
165
165
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
166
166
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path>
167
167
  </svg>
@@ -171,7 +171,7 @@
171
171
  </a>
172
172
 
173
173
  <a href="admin-panel.html" class="starlight-card">
174
- <div class="h-40 bg-gradient-to-br from-rose-500_20 to-orange-500_20 rounded-xl mb-4 flex items-center justify-center">
174
+ <div class="h-40 bg-gradient-to-br from-rose-500_60 to-orange-500_60 rounded-xl mb-4 flex items-center justify-center">
175
175
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
176
176
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4"></path>
177
177
  </svg>
@@ -181,7 +181,7 @@
181
181
  </a>
182
182
 
183
183
  <a href="music-streaming.html" class="starlight-card">
184
- <div class="h-40 bg-gradient-to-br from-pink-500_20 to-rose-500_20 rounded-xl mb-4 flex items-center justify-center">
184
+ <div class="h-40 bg-gradient-to-br from-pink-500_60 to-rose-500_60 rounded-xl mb-4 flex items-center justify-center">
185
185
  <svg class="w-16 h-16 text-starlight" fill="currentColor" viewBox="0 0 24 24">
186
186
  <path d="M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z"/>
187
187
  </svg>
@@ -191,7 +191,7 @@
191
191
  </a>
192
192
 
193
193
  <a href="chat-messaging.html" class="starlight-card">
194
- <div class="h-40 bg-gradient-to-br from-blue-500_20 to-cyan-500_20 rounded-xl mb-4 flex items-center justify-center">
194
+ <div class="h-40 bg-gradient-to-br from-blue-500_60 to-cyan-500_60 rounded-xl mb-4 flex items-center justify-center">
195
195
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
196
196
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
197
197
  </svg>
@@ -201,7 +201,7 @@
201
201
  </a>
202
202
 
203
203
  <a href="portfolio-resume.html" class="starlight-card">
204
- <div class="h-40 bg-gradient-to-br from-violet-500_20 to-purple-500_20 rounded-xl mb-4 flex items-center justify-center">
204
+ <div class="h-40 bg-gradient-to-br from-violet-500_60 to-purple-500_60 rounded-xl mb-4 flex items-center justify-center">
205
205
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
206
206
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"></path>
207
207
  </svg>
@@ -211,7 +211,7 @@
211
211
  </a>
212
212
 
213
213
  <a href="video-streaming.html" class="starlight-card">
214
- <div class="h-40 bg-gradient-to-br from-red-500_20 to-orange-500_20 rounded-xl mb-4 flex items-center justify-center">
214
+ <div class="h-40 bg-gradient-to-br from-red-500_60 to-orange-500_60 rounded-xl mb-4 flex items-center justify-center">
215
215
  <svg class="w-16 h-16 text-starlight" fill="none" stroke="currentColor" viewBox="0 0 24 24">
216
216
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z"></path>
217
217
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
@@ -254,7 +254,7 @@
254
254
  Asset Actions <span>&darr;</span>
255
255
  </button>
256
256
  <div id="demo-dropdown" class="dropdown-menu w-full">
257
- <button class="dropdown-item">View Analytics</button>
257
+ <a href="kitchen-sink.html" class="dropdown-item">Kitchen Sink</a>
258
258
  <button class="dropdown-item">Security Audit</button>
259
259
  <div style="border-top: 1px solid rgba(255,255,255,0.05); margin: 0.5rem 0;"></div>
260
260
  <button class="dropdown-item" style="color: #ff7e5f;">Decommission</button>
@@ -12,13 +12,13 @@
12
12
  .spacing-bar { height: 1rem; background: var(--q-color-starlight-blue, #3b82f6); border-radius: 0.25rem; }
13
13
  section { margin-bottom: 4rem; }
14
14
  h2 { font-size: 1.5rem; font-weight: bold; margin-bottom: 1.5rem; border-bottom: 2px solid rgba(255, 255, 255, 0.1); padding-bottom: 0.5rem; }
15
- body.light-mode h2 { border-bottom-color: rgba(0, 0, 0, 0.1); }
15
+ html[data-theme="light"] h2 { border-bottom-color: rgba(0, 0, 0, 0.1); }
16
16
  .token-name { font-family: monospace; font-size: 0.875rem; opacity: 0.7; }
17
17
  .token-value { font-size: 0.75rem; opacity: 0.5; }
18
18
  .ani-card { background: #0f172a; color: white; transition: all 0.3s; }
19
- body.light-mode .ani-card { background: #f1f5f9; color: #0f172a; }
19
+ html[data-theme="light"] .ani-card { background: #f1f5f9; color: #0f172a; }
20
20
  .ani-orbit-star { background-color: white; }
21
- body.light-mode .ani-orbit-star { background-color: var(--q-color-starlight-blue, #2563eb); }
21
+ html[data-theme="light"] .ani-orbit-star { background-color: var(--q-color-starlight-blue, #2563eb); }
22
22
  .theme-toggle {
23
23
  position: fixed; top: 2rem; right: 2rem; z-index: 100; cursor: pointer;
24
24
  width: 3rem; height: 3rem; border-radius: 50%;
@@ -27,11 +27,11 @@
27
27
  color: white; transition: all 0.3s ease; backdrop-filter: blur(10px);
28
28
  }
29
29
  .theme-toggle:hover { background: rgba(255,255,255,0.15); transform: scale(1.1); }
30
- body.light-mode .theme-toggle { background: rgba(0, 0, 0, 0.02); border-color: rgba(0, 0, 0, 0.1); color: #0f172a; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
31
- body.light-mode .theme-toggle:hover { background: #f8fafc; }
30
+ html[data-theme="light"] .theme-toggle { background: rgba(0, 0, 0, 0.02); border-color: rgba(0, 0, 0, 0.1); color: #0f172a; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); }
31
+ html[data-theme="light"] .theme-toggle:hover { background: #f8fafc; }
32
32
  .sun-icon { display: none; }
33
- body.light-mode .sun-icon { display: block; }
34
- body.light-mode .moon-icon { display: none; }
33
+ html[data-theme="light"] .sun-icon { display: block; }
34
+ html[data-theme="light"] .moon-icon { display: none; }
35
35
 
36
36
  /* Theme Designer Panel */
37
37
  .designer-panel {
@@ -61,8 +61,9 @@
61
61
  .designer-btn:hover { filter: brightness(1.1); transform: scale(1.02); }
62
62
  .designer-btn:active { transform: scale(0.98); }
63
63
 
64
- body.light-mode .designer-panel { background: rgba(255, 255, 255, 0.9); border-color: rgba(0, 0, 0, 0.1); color: #000; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); }
65
- body.light-mode .designer-slider { background: rgba(0, 0, 0, 0.1); }
64
+ html[data-theme="light"] .designer-panel { background: rgba(255, 255, 255, 0.9); border-color: rgba(0, 0, 0, 0.1); color: #000; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); }
65
+ html[data-theme="light"] .designer-slider { background: rgba(0, 0, 0, 0.1); }
66
+ html[data-theme="light"] .theme-glass { background: rgba(0, 0, 0, 0.03) !important; border-color: rgba(0, 0, 0, 0.1) !important; }
66
67
  </style>
67
68
  </head>
68
69
  <body class="p-8">
@@ -908,7 +909,7 @@
908
909
  <!-- Components Section -->
909
910
  <section>
910
911
  <h2>Component Utilities</h2>
911
- <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
912
+ <div class="grid grid-cols-1 md__grid-cols-2 gap-8">
912
913
  <div class="starlight-card p-6">
913
914
  <div class="mb-4 token-name">btn-base</div>
914
915
  <div class="flex items-center justify-center p-8 bg-black_20 rounded-xl">
@@ -1011,7 +1012,7 @@
1011
1012
  </ul>
1012
1013
  </div>
1013
1014
  </nav>
1014
- <div class="p-12 text-center opacity-50 italic text-sm border-t border-white_5 light:bg-slate-300">Horizontal layout (standard)</div>
1015
+ <div class="p-12 text-center opacity-50 italic text-sm border-t border-white_5 light__bg-slate-300">Horizontal layout (standard)</div>
1015
1016
  </div>
1016
1017
  </div>
1017
1018
 
@@ -1038,7 +1039,7 @@
1038
1039
  </ul>
1039
1040
  </div>
1040
1041
  </nav>
1041
- <div class="flex-1 p-8 opacity-50 italic text-sm overflow-y-auto light:bg-slate-300">Dashboard content area...</div>
1042
+ <div class="flex-1 p-8 opacity-50 italic text-sm overflow-y-auto light__bg-slate-300">Dashboard content area...</div>
1042
1043
  </div>
1043
1044
  </div>
1044
1045
 
@@ -1145,7 +1146,7 @@
1145
1146
  <div class="p-4 border-b border-white_5 bg-white_5 text-[10px] uppercase font-bold tracking-widest opacity-50">Dialog Window (.starlight-dialog)</div>
1146
1147
  <div class="p-8">
1147
1148
  <!-- Inline Preview -->
1148
- <div class="dialog-base theme-glass-dark relative mx-auto mb-8 shadow-none border-white_10" style="max-width: 500px;">
1149
+ <div class="dialog-base theme-glass relative mx-auto mb-8 shadow-none border-white_10" style="max-width: 500px;">
1149
1150
  <h3 class="text-xl font-bold mb-4 text-gradient-starlight">System Preview</h3>
1150
1151
  <p class="mb-6 opacity-70 text-sm">This is an inline preview of the dialog component. It scales to fit its container.</p>
1151
1152
  <div class="flex gap-4">
@@ -1225,7 +1226,7 @@
1225
1226
  </section>
1226
1227
 
1227
1228
  <footer class="mt-20 opacity-50 text-sm">
1228
- Generated by Quantum CSS Dynamic Docs · 3/1/2026
1229
+ Generated by Quantum CSS Dynamic Docs · 3/2/2026
1229
1230
  </footer>
1230
1231
  </div>
1231
1232
 
@@ -1332,18 +1333,6 @@
1332
1333
  setTimeout(() => btn.innerText = oldText, 2000);
1333
1334
  }
1334
1335
 
1335
- // Theme Toggle
1336
- function toggleTheme() {
1337
- const body = document.body;
1338
- if (body.classList.contains('light-mode')) {
1339
- body.classList.remove('light-mode');
1340
- document.documentElement.setAttribute('data-theme', 'dark');
1341
- } else {
1342
- body.classList.add('light-mode');
1343
- document.documentElement.setAttribute('data-theme', 'light');
1344
- }
1345
- }
1346
-
1347
1336
  // Dialog Toggle
1348
1337
  function toggleDialog(show) {
1349
1338
  const dialog = document.getElementById('systemDialog');
@@ -59,7 +59,7 @@
59
59
  gap: 0.75rem;
60
60
  padding: 0.875rem 1rem;
61
61
  background: linear-gradient(135deg, rgba(0, 212, 255, 0.15), rgba(59, 130, 246, 0.15));
62
- border: 1px solid rgba(0, 212, 255, 0.2);
62
+ border: 1px solid rgba(0, 212, 255, 0.6);
63
63
  border-radius: 0.75rem;
64
64
  color: var(--color-starlight, #00d4ff);
65
65
  font-size: 0.875rem;
@@ -635,45 +635,45 @@
635
635
  }
636
636
 
637
637
  .sun-icon { display: none; }
638
- body.light-mode .sun-icon { display: inline; }
639
- body.light-mode .moon-icon { display: none; }
638
+ html[data-theme="light"] .sun-icon { display: inline; }
639
+ html[data-theme="light"] .moon-icon { display: none; }
640
640
 
641
641
  /* Light Mode */
642
- body.light-mode {
642
+ html[data-theme="light"] {
643
643
  --bg-primary: #f8fafc;
644
644
  --text-primary: #0f172a;
645
645
  --text-secondary: #475569;
646
646
  --text-muted: #64748b;
647
647
  }
648
648
 
649
- body.light-mode .music-sidebar {
649
+ html[data-theme="light"] .music-sidebar {
650
650
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
651
651
  border-right-color: #e2e8f0;
652
652
  }
653
653
 
654
- body.light-mode .player-bar {
654
+ html[data-theme="light"] .player-bar {
655
655
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
656
656
  border-top-color: #e2e8f0;
657
657
  }
658
658
 
659
- body.light-mode .track-row:hover {
659
+ html[data-theme="light"] .track-row:hover {
660
660
  background: rgba(0, 0, 0, 0.03);
661
661
  }
662
662
 
663
- body.light-mode .track-row.active {
663
+ html[data-theme="light"] .track-row.active {
664
664
  background: rgba(0, 212, 255, 0.08);
665
665
  }
666
666
 
667
- body.light-mode .nav-arrow {
667
+ html[data-theme="light"] .nav-arrow {
668
668
  background: rgba(0, 0, 0, 0.1);
669
669
  }
670
670
 
671
- body.light-mode .upgrade-btn {
671
+ html[data-theme="light"] .upgrade-btn {
672
672
  border-color: rgba(0, 0, 0, 0.2);
673
673
  color: var(--text-primary);
674
674
  }
675
675
 
676
- body.light-mode .control-btn.play {
676
+ html[data-theme="light"] .control-btn.play {
677
677
  background: var(--text-primary);
678
678
  color: white;
679
679
  }
@@ -696,7 +696,7 @@
696
696
  background: rgba(255, 255, 255, 0.2);
697
697
  }
698
698
 
699
- body.light-mode ::-webkit-scrollbar-thumb {
699
+ html[data-theme="light"] ::-webkit-scrollbar-thumb {
700
700
  background: #cbd5e1;
701
701
  }
702
702
 
@@ -1142,29 +1142,29 @@
1142
1142
  <!-- Player Controls -->
1143
1143
  <div class="player-controls">
1144
1144
  <div class="control-buttons">
1145
- <button class="control-btn">
1146
- <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
1147
- <path d="M7 6v12l10-6z"/>
1145
+ <button class="control-btn" title="Shuffle">
1146
+ <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24">
1147
+ <path d="M10.59 9.17L5.41 4 4 5.41l5.17 5.17 1.42-1.41zM14.5 4l2.04 2.04L4 18.59 5.41 20 17.96 7.45 20 9.5V4h-5.5zm.33 9.41l-1.41 1.41 3.13 3.13L14.5 20H20v-5.5l-2.04 2.04-3.13-3.13z"/>
1148
1148
  </svg>
1149
1149
  </button>
1150
- <button class="control-btn">
1150
+ <button class="control-btn" title="Previous">
1151
1151
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
1152
1152
  <path d="M6 6h2v12H6zm3.5 6l8.5 6V6z"/>
1153
1153
  </svg>
1154
1154
  </button>
1155
- <button class="control-btn play">
1155
+ <button class="control-btn play" title="Play/Pause">
1156
1156
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
1157
1157
  <path d="M6 19h4V5H6v14zm8-14v14h4V5h-4z"/>
1158
1158
  </svg>
1159
1159
  </button>
1160
- <button class="control-btn">
1160
+ <button class="control-btn" title="Next">
1161
1161
  <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
1162
1162
  <path d="M6 18l8.5-6L6 6v12zM16 6v12h2V6h-2z"/>
1163
1163
  </svg>
1164
1164
  </button>
1165
- <button class="control-btn">
1166
- <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
1167
- <path d="M7 6v12l10-6z"/>
1165
+ <button class="control-btn" title="Repeat">
1166
+ <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24">
1167
+ <path d="M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z"/>
1168
1168
  </svg>
1169
1169
  </button>
1170
1170
  </div>
@@ -1206,15 +1206,7 @@
1206
1206
  </div>
1207
1207
 
1208
1208
  <script>
1209
- function toggleTheme() {
1210
- document.body.classList.toggle('light-mode');
1211
- localStorage.setItem('theme', document.body.classList.contains('light-mode') ? 'light' : 'dark');
1212
- }
1213
1209
 
1214
- const savedTheme = localStorage.getItem('theme');
1215
- if (savedTheme === 'light') {
1216
- document.body.classList.add('light-mode');
1217
- }
1218
1210
 
1219
1211
  // Track row click handler
1220
1212
  document.querySelectorAll('.track-row').forEach(row => {
@@ -81,43 +81,43 @@
81
81
  }
82
82
 
83
83
  /* Light Mode Overrides */
84
- body.light-mode {
84
+ html[data-theme="light"] {
85
85
  background-color: #ffffff;
86
86
  color: #0f172a;
87
87
  }
88
88
 
89
- body.light-mode .bg-white {
89
+ html[data-theme="light"] .bg-white {
90
90
  background-color: #ffffff !important;
91
91
  color: #0f172a !important;
92
92
  }
93
93
 
94
- body.light-mode .bg-slate-50 {
94
+ html[data-theme="light"] .bg-slate-50 {
95
95
  background-color: #f8fafc !important;
96
96
  }
97
97
 
98
- body.light-mode .bg-slate-900 {
98
+ html[data-theme="light"] .bg-slate-900 {
99
99
  background-color: #0f172a !important;
100
100
  color: #ffffff !important;
101
101
  }
102
102
 
103
- body.light-mode .border-slate-100 {
103
+ html[data-theme="light"] .border-slate-100 {
104
104
  border-color: #f1f5f9 !important;
105
105
  }
106
106
 
107
- body.light-mode .text-slate-900 { color: #0f172a !important; }
108
- body.light-mode .text-slate-500 { color: #64748b !important; }
109
- body.light-mode .text-blue-600 { color: #2563eb !important; }
107
+ html[data-theme="light"] .text-slate-900 { color: #0f172a !important; }
108
+ html[data-theme="light"] .text-slate-500 { color: #64748b !important; }
109
+ html[data-theme="light"] .text-blue-600 { color: #2563eb !important; }
110
110
 
111
- body.light-mode nav {
111
+ html[data-theme="light"] nav {
112
112
  background-color: #ffffff !important;
113
113
  ottom-color: #0f172a !important;
114
114
  }
115
115
 
116
- body.light-mode .theme-toggle {
116
+ html[data-theme="light"] .theme-toggle {
117
117
  color: #0f172a;
118
118
  }
119
119
 
120
- body.light-mode .theme-toggle:hover {
120
+ html[data-theme="light"] .theme-toggle:hover {
121
121
  background: rgba(0, 0, 0, 0.05);
122
122
  }
123
123
 
@@ -126,7 +126,7 @@
126
126
  color: rgba(255, 255, 255, 0.2) !important;
127
127
  }
128
128
 
129
- body.light-mode .text-slate-100 {
129
+ html[data-theme="light"] .text-slate-100 {
130
130
  color: #cbd5e1 !important;
131
131
  }
132
132
 
@@ -136,13 +136,13 @@
136
136
  backdrop-filter: blur(4px);
137
137
  }
138
138
 
139
- body.light-mode .hover\:glass-light="hover" {
139
+ html[data-theme="light"] .hover\:glass-light="hover" {
140
140
  background-color: rgba(0, 0, 0, 0.05) !important;
141
141
  backdrop-filter: blur(4px);
142
142
  }
143
143
 
144
144
  footer a:hover { color: #60a5fa !important; }
145
- body.light-mode footer a:hover { color: #2563eb !important; }
145
+ html[data-theme="light"] footer a:hover { color: #2563eb !important; }
146
146
  </style>
147
147
  </head>
148
148
  <body class="font-sans antialiased">
@@ -87,7 +87,7 @@
87
87
  gap: 0.5rem;
88
88
  padding: 0.5rem 1rem;
89
89
  background: rgba(0, 212, 255, 0.1);
90
- border: 1px solid rgba(0, 212, 255, 0.2);
90
+ border: 1px solid rgba(0, 212, 255, 0.6);
91
91
  border-radius: 9999px;
92
92
  font-size: 0.875rem;
93
93
  color: var(--color-starlight, #00d4ff);
@@ -174,12 +174,12 @@
174
174
  .skill-card:hover {
175
175
  background: rgba(255, 255, 255, 0.05);
176
176
  transform: translateY(-5px);
177
- border-color: rgba(0, 212, 255, 0.2);
177
+ border-color: rgba(0, 212, 255, 0.6);
178
178
  }
179
179
  .skill-icon {
180
180
  width: 60px;
181
181
  height: 60px;
182
- background: linear-gradient(135deg, rgba(0, 212, 255, 0.2), rgba(59, 130, 246, 0.2));
182
+ background: linear-gradient(135deg, rgba(0, 212, 255, 0.6), rgba(59, 130, 246, 0.2));
183
183
  border-radius: 1rem;
184
184
  display: flex;
185
185
  align-items: center;
@@ -385,20 +385,20 @@
385
385
  footer p { color: var(--text-muted, #64748b); font-size: 0.9375rem; }
386
386
 
387
387
  /* Light Mode */
388
- body.light-mode {
388
+ html[data-theme="light"] {
389
389
  --bg-primary: #f8fafc;
390
390
  --text-primary: #0f172a;
391
391
  --text-secondary: #475569;
392
392
  --text-muted: #64748b;
393
393
  }
394
- body.light-mode nav { background: rgba(248, 250, 252, 0.9); border-bottom-color: #e2e8f0; }
395
- body.light-mode .skill-card, body.light-mode .project-card, body.light-mode .timeline-content,
396
- body.light-mode .testimonial-card, body.light-mode .contact-item {
394
+ html[data-theme="light"] nav { background: rgba(248, 250, 252, 0.9); border-bottom-color: #e2e8f0; }
395
+ html[data-theme="light"] .skill-card, html[data-theme="light"] .project-card, html[data-theme="light"] .timeline-content,
396
+ html[data-theme="light"] .testimonial-card, html[data-theme="light"] .contact-item {
397
397
  background: #ffffff;
398
398
  border-color: #e2e8f0;
399
399
  }
400
- body.light-mode .timeline::before { background: linear-gradient(180deg, #3b82f6, transparent); }
401
- body.light-mode .timeline-dot { border-color: #f8fafc; }
400
+ html[data-theme="light"] .timeline::before { background: linear-gradient(180deg, #3b82f6, transparent); }
401
+ html[data-theme="light"] .timeline-dot { border-color: #f8fafc; }
402
402
 
403
403
  @media (max-width: 768px) {
404
404
  .nav-links { display: none; }
@@ -422,7 +422,7 @@
422
422
  <li><a href="#contact">Contact</a></li>
423
423
  </ul>
424
424
  <button class="btn btn-secondary" onclick="toggleTheme()" style="padding: 0.5rem 1rem;">
425
- <svg class="sun-icon hidden" width="20" height="20" fill="currentColor" viewBox="0 0 20 20"><path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"/></svg>
425
+ <svg class="sun-icon" width="20" height="20" fill="currentColor" viewBox="0 0 20 20"><path d="M10 2a1 1 0 011 1v1a1 1 0 11-2 0V3a1 1 0 011-1zm4 8a4 4 0 11-8 0 4 4 0 018 0zm-.464 4.95l.707.707a1 1 0 001.414-1.414l-.707-.707a1 1 0 00-1.414 1.414zm2.12-10.607a1 1 0 010 1.414l-.706.707a1 1 0 11-1.414-1.414l.707-.707a1 1 0 011.414 0zM17 11a1 1 0 100-2h-1a1 1 0 100 2h1zm-7 4a1 1 0 011 1v1a1 1 0 11-2 0v-1a1 1 0 011-1zM5.05 6.464A1 1 0 106.465 5.05l-.708-.707a1 1 0 00-1.414 1.414l.707.707zm1.414 8.486l-.707.707a1 1 0 01-1.414-1.414l.707-.707a1 1 0 011.414 1.414zM4 11a1 1 0 100-2H3a1 1 0 000 2h1z"/></svg>
426
426
  <svg class="moon-icon" width="20" height="20" fill="currentColor" viewBox="0 0 20 20"><path d="M17.293 13.293A8 8 0 016.707 2.707a8.001 8.001 0 1010.586 10.586z"/></svg>
427
427
  </button>
428
428
  </div>
@@ -637,32 +637,11 @@
637
637
  </footer>
638
638
 
639
639
  <script>
640
- function toggleTheme() {
641
- const isLight = document.body.classList.toggle('light-mode');
642
- const theme = isLight ? 'light' : 'dark';
643
- document.documentElement.setAttribute('data-theme', theme);
644
- localStorage.setItem('theme', theme);
645
- updateIcons(isLight);
646
- }
647
-
648
- function updateIcons(isLight) {
649
- const sun = document.querySelector('.sun-icon');
650
- const moon = document.querySelector('.moon-icon');
651
- if (isLight) {
652
- sun.classList.remove('hidden');
653
- moon.classList.add('hidden');
654
- } else {
655
- sun.classList.add('hidden');
656
- moon.classList.remove('hidden');
640
+ document.addEventListener('DOMContentLoaded', () => {
641
+ if (typeof Starlight !== 'undefined') {
642
+ Starlight.initStars();
657
643
  }
658
- }
659
-
660
- const savedTheme = localStorage.getItem('theme');
661
- if (savedTheme === 'light') {
662
- document.body.classList.add('light-mode');
663
- document.documentElement.setAttribute('data-theme', 'light');
664
- updateIcons(true);
665
- }
644
+ });
666
645
  </script>
667
646
  </body>
668
647
  </html>