LukasBe commited on
Commit
6713668
·
verified ·
1 Parent(s): 8b5687f

Add 1 files

Browse files
Files changed (1) hide show
  1. index.html +266 -1178
index.html CHANGED
@@ -8,159 +8,73 @@
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
  <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/vanilla-tilt@1.7.0/dist/vanilla-tilt.min.js"></script>
11
- <script>
12
- tailwind.config = {
13
- theme: {
14
- extend: {
15
- colors: {
16
- cyber: {
17
- primary: '#00f0ff',
18
- secondary: '#ff00f0',
19
- dark: '#0a0a1a',
20
- panel: '#1a1a3a',
21
- accent: '#ffcc00',
22
- neon: '#ff2a6d',
23
- matrix: '#00ff41'
24
- }
25
- },
26
- fontFamily: {
27
- 'cyber': ['"Rajdhani"', 'sans-serif'],
28
- 'digital': ['"Orbitron"', 'sans-serif'],
29
- 'neu': ['"Bebas Neue"', 'sans-serif']
30
- },
31
- animation: {
32
- 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
33
- 'float': 'float 6s ease-in-out infinite',
34
- 'neon-flicker': 'neon-flicker 1.5s infinite alternate',
35
- 'neon-flicker-fast': 'neon-flicker 0.8s infinite alternate',
36
- 'scanline': 'scanline 8s linear infinite',
37
- 'glow': 'glow 2s ease-in-out infinite alternate'
38
- },
39
- keyframes: {
40
- float: {
41
- '0%, 100%': { transform: 'translateY(0)' },
42
- '50%': { transform: 'translateY(-10px)' }
43
- },
44
- 'neon-flicker': {
45
- '0%, 19%, 21%, 23%, 25%, 54%, 56%, 100%': {
46
- 'text-shadow': '0 0 5px #00f0ff, 0 0 10px #00f0ff, 0 0 20px #00f0ff, 0 0 40px #00f0ff',
47
- 'box-shadow': '0 0 5px rgba(0, 240, 255, 0.3), 0 0 10px rgba(0, 240, 255, 0.3), 0 0 20px rgba(0, 240, 255, 0.3), 0 0 40px rgba(0, 240, 255, 0.3)'
48
- },
49
- '20%, 24%, 55%': {
50
- 'text-shadow': 'none',
51
- 'box-shadow': 'none'
52
- }
53
- },
54
- scanline: {
55
- '0%': { transform: 'translateY(-100%)' },
56
- '100%': { transform: 'translateY(100%)' }
57
- },
58
- glow: {
59
- '0%': { opacity: 0.7 },
60
- '100%': { opacity: 1 }
61
- }
62
- }
63
- }
64
- }
65
- }
66
- </script>
67
  <style>
68
  @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Orbitron:wght@400;700&family=Rajdhani:wght@400;500;700&display=swap');
69
 
70
  body {
71
- background-color: #0a0a1a;
72
- color: #e0e0ff;
 
73
  font-family: 'Rajdhani', sans-serif;
74
- overflow-x: hidden;
75
- perspective: 1000px;
76
  }
77
 
78
- .cyber-border {
79
- border: 1px solid rgba(0, 240, 255, 0.3);
80
- box-shadow: 0 0 20px rgba(0, 240, 255, 0.2),
81
- inset 0 0 15px rgba(0, 240, 255, 0.1);
82
  }
83
 
84
- .cyber-glow {
85
- box-shadow: 0 0 25px rgba(0, 240, 255, 0.9);
86
- transition: all 0.3s ease;
 
 
87
  }
88
 
89
- .cyber-panel {
90
- background: linear-gradient(145deg, #1a1a3a 0%, #0a0a2a 100%);
91
- border: 1px solid rgba(0, 240, 255, 0.2);
92
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.6),
93
- inset 0 0 20px rgba(0, 240, 255, 0.1);
94
- transform-style: preserve-3d;
95
- transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
96
  }
97
 
98
- .cyber-panel:hover {
99
- transform: translateY(-5px) rotateX(5deg);
100
- box-shadow: 0 15px 35px rgba(0, 0, 0, 0.8),
101
- inset 0 0 25px rgba(0, 240, 255, 0.2);
102
  }
103
 
104
- .cyber-header {
105
- background: linear-gradient(90deg, rgba(0,0,0,0.8) 0%, rgba(10,10,26,0.9) 50%, rgba(0,0,0,0.8) 100%);
106
- border-bottom: 1px solid #00f0ff;
107
- box-shadow: 0 0 40px rgba(0, 240, 255, 0.5);
108
  backdrop-filter: blur(10px);
 
 
109
  }
110
 
111
  .cyber-button {
112
- background: linear-gradient(145deg, #1a1a3a 0%, #0a0a2a 100%);
113
  border: 1px solid #00f0ff;
114
  color: #00f0ff;
115
  transition: all 0.3s ease;
116
- transform-style: preserve-3d;
117
  }
118
 
119
  .cyber-button:hover {
120
- background: linear-gradient(145deg, #00f0ff 0%, #0066ff 100%);
121
- color: #0a0a1a;
122
- box-shadow: 0 0 25px rgba(0, 240, 255, 0.9);
123
- transform: translateY(-3px) rotateX(5deg);
124
- }
125
-
126
- .glitch {
127
- position: relative;
128
- }
129
-
130
- .glitch::before, .glitch::after {
131
- content: attr(data-text);
132
- position: absolute;
133
- top: 0;
134
- left: 0;
135
- width: 100%;
136
- height: 100%;
137
- opacity: 0.8;
138
  }
139
 
140
- .glitch::before {
141
- color: #ff00f0;
142
- z-index: -1;
143
- animation: glitch-effect 3s infinite;
144
  }
145
 
146
- .glitch::after {
147
- color: #00f0ff;
148
- z-index: -2;
149
- animation: glitch-effect 2s infinite reverse;
150
- }
151
-
152
- @keyframes glitch-effect {
153
- 0% { transform: translate(0); }
154
- 20% { transform: translate(-3px, 3px); }
155
- 40% { transform: translate(-3px, -3px); }
156
- 60% { transform: translate(3px, 3px); }
157
- 80% { transform: translate(3px, -3px); }
158
- 100% { transform: translate(0); }
159
  }
160
 
161
  .scanlines {
162
  position: relative;
163
- overflow: hidden;
164
  }
165
 
166
  .scanlines::before {
@@ -178,1027 +92,315 @@
178
  background-size: 100% 4px;
179
  pointer-events: none;
180
  z-index: 100;
181
- animation: scanline 8s linear infinite;
182
- }
183
-
184
- .pulse {
185
- animation: pulse 2s infinite;
186
- }
187
-
188
- @keyframes pulse {
189
- 0% { opacity: 0.7; }
190
- 50% { opacity: 1; }
191
- 100% { opacity: 0.7; }
192
- }
193
-
194
- .holographic {
195
- background: linear-gradient(135deg, rgba(0, 240, 255, 0.1) 0%, rgba(255, 0, 240, 0.1) 100%);
196
- backdrop-filter: blur(5px);
197
- border: 1px solid rgba(0, 240, 255, 0.3);
198
- transform-style: preserve-3d;
199
- transition: all 0.4s ease;
200
- }
201
-
202
- .holographic:hover {
203
- transform: translateY(-5px) rotateX(5deg);
204
- box-shadow: 0 10px 25px rgba(0, 240, 255, 0.4);
205
- }
206
-
207
- .cyber-input {
208
- background-color: rgba(10, 10, 26, 0.7);
209
- border: 1px solid #00f0ff;
210
- color: #00f0ff;
211
- padding: 0.5rem 1rem;
212
- transition: all 0.3s ease;
213
- }
214
-
215
- .cyber-input:focus {
216
- outline: none;
217
- box-shadow: 0 0 15px rgba(0, 240, 255, 0.7);
218
- }
219
-
220
- .cyber-tab {
221
- border-bottom: 2px solid transparent;
222
- transition: all 0.3s ease;
223
- transform-style: preserve-3d;
224
- }
225
-
226
- .cyber-tab:hover {
227
- border-bottom: 2px solid #00f0ff;
228
- color: #00f0ff;
229
- transform: translateY(-2px);
230
- }
231
-
232
- .cyber-tab.active {
233
- border-bottom: 2px solid #00f0ff;
234
- color: #00f0ff;
235
- text-shadow: 0 0 5px #00f0ff;
236
- }
237
-
238
- .neon-text {
239
- text-shadow: 0 0 5px #00f0ff, 0 0 10px #00f0ff, 0 0 20px #00f0ff;
240
- animation: neon-flicker 1.5s infinite alternate;
241
- }
242
-
243
- .neon-box {
244
- box-shadow: 0 0 5px rgba(0, 240, 255, 0.3), 0 0 10px rgba(0, 240, 255, 0.3), 0 0 20px rgba(0, 240, 255, 0.3);
245
- animation: neon-flicker 1.5s infinite alternate;
246
- }
247
-
248
- .neon-accent {
249
- text-shadow: 0 0 5px #ff2a6d, 0 0 10px #ff2a6d, 0 0 20px #ff2a6d;
250
- animation: neon-flicker-fast 0.8s infinite alternate;
251
- }
252
-
253
- .matrix-bg {
254
- position: fixed;
255
- top: 0;
256
- left: 0;
257
- width: 100%;
258
- height: 100%;
259
- z-index: -100;
260
- opacity: 0.15;
261
- pointer-events: none;
262
- }
263
-
264
- .floating {
265
- animation: float 6s ease-in-out infinite;
266
- }
267
-
268
- .parallax-layer {
269
- transition: transform 0.1s ease-out;
270
- }
271
-
272
- .cyber-card {
273
- transform-style: preserve-3d;
274
- transform: perspective(1000px) rotateX(0deg) rotateY(0deg);
275
- transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
276
- }
277
-
278
- .cyber-card:hover {
279
- transform: perspective(1000px) rotateX(5deg) rotateY(5deg) translateZ(20px);
280
- }
281
-
282
- .cyber-grid {
283
- display: grid;
284
- grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
285
- gap: 1.5rem;
286
- }
287
-
288
- .cyber-ring {
289
- position: absolute;
290
- border: 2px solid rgba(0, 240, 255, 0.5);
291
- border-radius: 50%;
292
- pointer-events: none;
293
- animation: pulse 3s infinite;
294
- }
295
-
296
- .cyber-ring:nth-child(1) {
297
- width: 100%;
298
- height: 100%;
299
- animation-delay: 0s;
300
- }
301
-
302
- .cyber-ring:nth-child(2) {
303
- width: 80%;
304
- height: 80%;
305
- animation-delay: 0.5s;
306
- }
307
-
308
- .cyber-ring:nth-child(3) {
309
- width: 60%;
310
- height: 60%;
311
- animation-delay: 1s;
312
- }
313
-
314
- .cyber-ring:nth-child(4) {
315
- width: 40%;
316
- height: 40%;
317
- animation-delay: 1.5s;
318
- }
319
-
320
- .cyber-sphere {
321
- position: relative;
322
- width: 100px;
323
- height: 100px;
324
- border-radius: 50%;
325
- background: radial-gradient(circle at 30% 30%, #00f0ff, #0066ff);
326
- box-shadow: 0 0 30px #00f0ff;
327
- animation: float 6s ease-in-out infinite;
328
- }
329
-
330
- .cyber-sphere::before {
331
- content: '';
332
- position: absolute;
333
- top: 10%;
334
- left: 10%;
335
- width: 20%;
336
- height: 20%;
337
- border-radius: 50%;
338
- background: rgba(255, 255, 255, 0.8);
339
- filter: blur(2px);
340
- }
341
-
342
- .cyber-sphere::after {
343
- content: '';
344
- position: absolute;
345
- top: 20%;
346
- left: 20%;
347
- width: 10%;
348
- height: 10%;
349
- border-radius: 50%;
350
- background: rgba(255, 255, 255, 0.6);
351
- filter: blur(1px);
352
- }
353
-
354
- .cyber-connector {
355
- position: absolute;
356
- background: linear-gradient(90deg, transparent, #00f0ff, transparent);
357
- height: 2px;
358
- transform-origin: left center;
359
- z-index: -1;
360
- }
361
-
362
- .cyber-connector::before {
363
- content: '';
364
- position: absolute;
365
- width: 10px;
366
- height: 10px;
367
- border-radius: 50%;
368
- background: #00f0ff;
369
- top: -4px;
370
- left: 0;
371
- box-shadow: 0 0 10px #00f0ff;
372
- }
373
-
374
- .cyber-connector::after {
375
- content: '';
376
- position: absolute;
377
- width: 10px;
378
- height: 10px;
379
- border-radius: 50%;
380
- background: #00f0ff;
381
- top: -4px;
382
- right: 0;
383
- box-shadow: 0 0 10px #00f0ff;
384
- }
385
-
386
- .cyber-dot {
387
- width: 8px;
388
- height: 8px;
389
- border-radius: 50%;
390
- background: #00f0ff;
391
- box-shadow: 0 0 10px #00f0ff;
392
- position: absolute;
393
- }
394
-
395
- .cyber-line {
396
- position: absolute;
397
- height: 2px;
398
- background: linear-gradient(90deg, transparent, #00f0ff, transparent);
399
- transform-origin: left center;
400
- }
401
-
402
- .cyber-grid-overlay {
403
- position: absolute;
404
- top: 0;
405
- left: 0;
406
- width: 100%;
407
- height: 100%;
408
- background-image:
409
- linear-gradient(rgba(0, 240, 255, 0.05) 1px, transparent 1px),
410
- linear-gradient(90deg, rgba(0, 240, 255, 0.05) 1px, transparent 1px);
411
- background-size: 20px 20px;
412
- pointer-events: none;
413
- }
414
-
415
- .cyber-panel-inner {
416
- position: relative;
417
- z-index: 2;
418
- }
419
-
420
- .cyber-panel::before {
421
- content: '';
422
- position: absolute;
423
- top: -2px;
424
- left: -2px;
425
- right: -2px;
426
- bottom: -2px;
427
- background: linear-gradient(45deg, #00f0ff, #ff00f0, #00f0ff);
428
- z-index: -1;
429
- opacity: 0;
430
- transition: opacity 0.3s ease;
431
- border-radius: inherit;
432
- }
433
-
434
- .cyber-panel:hover::before {
435
- opacity: 0.3;
436
- }
437
-
438
- .cyber-panel::after {
439
- content: '';
440
- position: absolute;
441
- top: 0;
442
- left: 0;
443
- right: 0;
444
- bottom: 0;
445
- background: linear-gradient(135deg, rgba(0, 240, 255, 0.1) 0%, rgba(255, 0, 240, 0.1) 100%);
446
- z-index: -1;
447
- border-radius: inherit;
448
- }
449
-
450
- .cyber-tooltip {
451
- position: relative;
452
- }
453
-
454
- .cyber-tooltip:hover::after {
455
- content: attr(data-tooltip);
456
- position: absolute;
457
- bottom: 100%;
458
- left: 50%;
459
- transform: translateX(-50%);
460
- background: rgba(10, 10, 26, 0.9);
461
- color: #00f0ff;
462
- padding: 5px 10px;
463
- border-radius: 4px;
464
- font-size: 12px;
465
- white-space: nowrap;
466
- border: 1px solid #00f0ff;
467
- box-shadow: 0 0 10px rgba(0, 240, 255, 0.5);
468
- z-index: 10;
469
  }
470
  </style>
471
  </head>
472
- <body class="scanlines">
473
- <!-- 3D Background Scene -->
474
- <div id="scene3d" class="matrix-bg"></div>
475
-
476
- <!-- Floating Cyber Elements -->
477
- <div class="fixed top-1/4 left-1/4 w-32 h-32 opacity-20">
478
- <div class="cyber-sphere"></div>
479
- </div>
480
-
481
- <div class="fixed bottom-1/3 right-1/4 w-24 h-24 opacity-15">
482
- <div class="cyber-sphere"></div>
483
- </div>
484
-
485
- <!-- Header -->
486
- <header class="cyber-header py-4 px-6 sticky top-0 z-50">
487
- <div class="container mx-auto flex justify-between items-center">
488
  <div class="flex items-center space-x-4">
489
- <div class="relative">
490
- <div class="cyber-glow w-12 h-12 rounded-full bg-gradient-to-br from-cyber-primary to-cyber-secondary flex items-center justify-center shadow-lg">
491
- <i class="fas fa-bolt text-cyber-dark text-2xl"></i>
492
- </div>
493
- <div class="absolute -inset-2 rounded-full border-2 border-cyber-primary/30 pointer-events-none animate-spin-slow" style="border-top-color: transparent;"></div>
494
- </div>
495
- <h1 class="text-3xl font-bold font-neu tracking-wider neon-text glitch" data-text="SOLAREDGE NEXUS">SOLAREDGE NEXUS</h1>
496
- <div class="text-xs bg-cyber-primary text-cyber-dark px-2 py-1 rounded-full font-bold neon-box">
497
- v4.2.0
498
  </div>
 
499
  </div>
500
-
501
- <div class="flex items-center space-x-6">
502
- <div class="relative group">
503
- <button class="cyber-button px-5 py-2.5 rounded-full flex items-center space-x-3">
504
- <i class="fas fa-satellite-dish pulse"></i>
505
- <span class="font-bold">SYNC NETWORK</span>
506
- <span class="w-2 h-2 rounded-full bg-green-500 pulse"></span>
507
- </button>
508
- <div class="absolute right-0 mt-2 w-64 bg-cyber-panel text-white rounded-lg shadow-2xl z-10 hidden group-hover:block cyber-border transform -translate-y-2">
509
- <div class="p-4 border-b border-cyber-primary/20">
510
- <h3 class="font-bold text-cyber-primary flex items-center">
511
- <i class="fas fa-network-wired mr-2"></i> NETWORK STATUS
512
- </h3>
513
- </div>
514
- <div class="p-4 space-y-3">
515
- <div class="flex justify-between items-center">
516
- <span class="text-sm">UPLINK</span>
517
- <span class="text-sm font-digital text-green-500">ACTIVE</span>
518
- </div>
519
- <div class="flex justify-between items-center">
520
- <span class="text-sm">BANDWIDTH</span>
521
- <span class="text-sm font-digital text-cyber-primary">42.5 Mbps</span>
522
- </div>
523
- <div class="flex justify-between items-center">
524
- <span class="text-sm">LATENCY</span>
525
- <span class="text-sm font-digital text-cyber-primary">28 ms</span>
526
- </div>
527
- </div>
528
- </div>
529
- </div>
530
-
531
- <div class="relative group">
532
- <button class="flex items-center space-x-3">
533
- <div class="relative">
534
- <div class="absolute -inset-1 rounded-full bg-cyber-primary blur opacity-70 group-hover:opacity-100 transition-all duration-300"></div>
535
- <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="User" class="h-10 w-10 rounded-full border-2 border-cyber-primary relative">
536
- <div class="absolute bottom-0 right-0 w-3 h-3 bg-green-500 rounded-full border border-cyber-dark pulse"></div>
537
- </div>
538
- <span class="font-bold">ADMIN</span>
539
- <i class="fas fa-chevron-down text-xs transition-transform group-hover:rotate-180"></i>
540
- </button>
541
- <div class="absolute right-0 mt-2 w-56 bg-cyber-panel text-white rounded-lg shadow-xl z-10 hidden group-hover:block cyber-border transform -translate-y-2">
542
- <a href="#" class="block px-4 py-3 hover:bg-cyber-primary hover:text-cyber-dark border-b border-cyber-secondary/20 transition-all flex items-center">
543
- <i class="fas fa-user-astronaut mr-2"></i> PROFILE
544
- </a>
545
- <a href="#" class="block px-4 py-3 hover:bg-cyber-primary hover:text-cyber-dark border-b border-cyber-secondary/20 transition-all flex items-center">
546
- <i class="fas fa-cog mr-2"></i> SETTINGS
547
- </a>
548
- <a href="#" class="block px-4 py-3 hover:bg-cyber-primary hover:text-cyber-dark transition-all flex items-center">
549
- <i class="fas fa-power-off mr-2"></i> LOGOUT
550
- </a>
551
- </div>
552
  </div>
553
  </div>
554
  </div>
555
- </header>
556
-
557
- <!-- Main Content -->
558
- <div class="container mx-auto px-4 py-8 relative z-10">
559
- <div class="flex flex-col lg:flex-row gap-8">
560
  <!-- Sidebar -->
561
- <aside class="w-full lg:w-72 cyber-panel rounded-xl p-5 h-fit transform hover:rotate-x-2">
562
- <nav>
563
- <ul class="space-y-2">
564
- <li>
565
- <a href="#" class="flex items-center space-x-4 p-4 bg-gradient-to-r from-cyber-primary/20 to-transparent text-cyber-primary rounded-lg font-bold border border-cyber-primary/30 hover:border-cyber-primary transition-all">
566
- <i class="fas fa-tachometer-alt text-xl"></i>
567
- <span>DASHBOARD</span>
568
- <i class="fas fa-chevron-right ml-auto text-sm"></i>
569
- </a>
570
- </li>
571
- <li>
572
- <a href="#" class="flex items-center space-x-4 p-4 hover:bg-cyber-primary/10 hover:text-cyber-primary rounded-lg border border-transparent hover:border-cyber-primary/30 transition-all">
573
- <i class="fas fa-chart-network text-xl"></i>
574
- <span>ENERGY GRID</span>
575
- </a>
576
- </li>
577
- <li>
578
- <a href="#" class="flex items-center space-x-4 p-4 hover:bg-cyber-primary/10 hover:text-cyber-primary rounded-lg border border-transparent hover:border-cyber-primary/30 transition-all">
579
- <i class="fas fa-solar-panel text-xl"></i>
580
- <span>ARRAY SCAN</span>
581
- </a>
582
- </li>
583
- <li>
584
- <a href="#" class="flex items-center space-x-4 p-4 hover:bg-cyber-primary/10 hover:text-cyber-primary rounded-lg border border-transparent hover:border-cyber-primary/30 transition-all">
585
- <i class="fas fa-bolt text-xl"></i>
586
- <span>INVERTERS</span>
587
- </a>
588
- </li>
589
- <li>
590
- <a href="#" class="flex items-center space-x-4 p-4 hover:bg-cyber-primary/10 hover:text-cyber-primary rounded-lg border border-transparent hover:border-cyber-primary/30 transition-all">
591
- <i class="fas fa-exclamation-triangle text-xl"></i>
592
- <span>ALERTS</span>
593
- </a>
594
- </li>
595
- <li>
596
- <a href="#" class="flex items-center space-x-4 p-4 hover:bg-cyber-primary/10 hover:text-cyber-primary rounded-lg border border-transparent hover:border-cyber-primary/30 transition-all">
597
- <i class="fas fa-terminal text-xl"></i>
598
- <span>SYSTEM LOG</span>
599
- </a>
600
- </li>
601
- </ul>
602
  </nav>
603
-
604
- <div class="mt-8 p-5 bg-cyber-dark/50 rounded-xl cyber-border transform hover:-translate-y-1">
605
- <h3 class="font-bold text-lg text-cyber-primary mb-5 flex items-center">
606
- <i class="fas fa-shield-alt mr-3"></i> SYSTEM STATUS
607
- </h3>
608
- <div class="space-y-4">
609
- <div class="flex items-center justify-between">
610
- <div class="flex items-center space-x-2">
611
- <i class="fas fa-bolt text-cyber-primary"></i>
612
- <span class="text-sm">POWER OUTPUT</span>
613
- </div>
614
- <span class="text-sm font-bold text-green-500 flex items-center">
615
- <span class="w-2 h-2 rounded-full bg-green-500 mr-2 pulse"></span>
616
- ACTIVE
617
- </span>
618
- </div>
619
- <div class="flex items-center justify-between">
620
- <div class="flex items-center space-x-2">
621
- <i class="fas fa-wifi text-cyber-primary"></i>
622
- <span class="text-sm">NETWORK</span>
623
- </div>
624
- <span class="text-sm font-bold text-green-500 flex items-center">
625
- <span class="w-2 h-2 rounded-full bg-green-500 mr-2 pulse"></span>
626
- ONLINE
627
- </span>
628
  </div>
629
- <div class="flex items-center justify-between">
630
- <div class="flex items-center space-x-2">
631
- <i class="fas fa-clock text-cyber-primary"></i>
632
- <span class="text-sm">LAST SYNC</span>
633
- </div>
634
- <span class="text-sm font-bold font-digital text-cyber-primary">02:34:21</span>
635
  </div>
636
- <div class="flex items-center justify-between">
637
- <div class="flex items-center space-x-2">
638
- <i class="fas fa-lock text-cyber-primary"></i>
639
- <span class="text-sm">SECURITY</span>
640
- </div>
641
- <span class="text-sm font-bold text-green-500 flex items-center">
642
- <i class="fas fa-lock mr-2"></i>
643
- ENCRYPTED
644
- </span>
645
- </div>
646
- </div>
647
-
648
- <div class="mt-6 pt-4 border-t border-cyber-primary/20">
649
- <div class="flex justify-between items-center">
650
- <span class="text-xs text-cyber-primary/60">SYSTEM UPTIME</span>
651
- <span class="text-xs font-digital text-cyber-primary">14D 6H 22M</span>
652
- </div>
653
- <div class="w-full bg-cyber-dark h-1.5 rounded-full mt-2">
654
- <div class="bg-gradient-to-r from-green-500 to-cyber-primary h-1.5 rounded-full" style="width: 92%"></div>
655
  </div>
656
  </div>
657
  </div>
658
-
659
- <div class="mt-6 p-4 bg-gradient-to-r from-cyber-primary/10 to-cyber-secondary/10 rounded-lg cyber-border text-center">
660
- <h4 class="text-sm font-bold text-cyber-primary mb-2">NEURAL NETWORK ACTIVE</h4>
661
- <div class="flex justify-center">
662
- <div class="relative">
663
- <div class="w-16 h-16 rounded-full border-2 border-cyber-primary flex items-center justify-center">
664
- <div class="w-12 h-12 rounded-full bg-cyber-primary/20 flex items-center justify-center">
665
- <i class="fas fa-brain text-cyber-primary text-xl"></i>
666
- </div>
667
- </div>
668
- <div class="absolute -inset-2 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
669
- </div>
670
- </div>
671
- <p class="text-xs mt-3 text-cyber-primary/80">AI OPTIMIZATION: 87%</p>
672
- </div>
673
- </aside>
674
-
675
- <!-- Main Dashboard -->
676
- <main class="flex-1">
677
- <!-- Summary Cards -->
678
- <div class="cyber-grid gap-6 mb-8">
679
- <div class="cyber-panel rounded-xl p-6 holographic cyber-card">
680
- <div class="cyber-panel-inner">
681
- <div class="flex items-center justify-between">
682
- <div>
683
- <p class="text-cyber-primary/80">CURRENT OUTPUT</p>
684
- <h2 class="text-4xl font-bold font-digital text-cyber-primary glitch" data-text="42.5">42.5 <span class="text-xl">kW</span></h2>
685
- </div>
686
- <div class="p-3 rounded-full bg-cyber-primary/10 text-cyber-primary border border-cyber-primary/30 neon-box">
687
- <i class="fas fa-bolt text-2xl"></i>
688
- </div>
689
- </div>
690
- <div class="mt-4 flex items-center">
691
- <span class="text-green-500 mr-2 font-digital"><i class="fas fa-arrow-up"></i> +12%</span>
692
- <span class="text-xs text-cyber-primary/60">PEAK EFFICIENCY</span>
693
  </div>
694
- <div class="mt-3">
695
- <div class="w-full bg-cyber-dark/50 h-1.5 rounded-full">
696
- <div class="bg-gradient-to-r from-green-500 to-cyber-primary h-1.5 rounded-full" style="width: 82%"></div>
697
- </div>
698
  </div>
699
  </div>
700
- <div class="cyber-grid-overlay"></div>
701
  </div>
702
-
703
- <div class="cyber-panel rounded-xl p-6 holographic cyber-card">
704
- <div class="cyber-panel-inner">
705
- <div class="flex items-center justify-between">
706
- <div>
707
- <p class="text-cyber-primary/80">TODAY'S YIELD</p>
708
- <h2 class="text-4xl font-bold font-digital text-cyber-primary glitch" data-text="1280">1,280 <span class="text-xl">kWh</span></h2>
709
- </div>
710
- <div class="p-3 rounded-full bg-cyber-primary/10 text-cyber-primary border border-cyber-primary/30 neon-box">
711
- <i class="fas fa-sun text-2xl"></i>
712
- </div>
713
  </div>
714
- <div class="mt-4 flex items-center">
715
- <span class="text-green-500 mr-2 font-digital"><i class="fas fa-arrow-up"></i> +8%</span>
716
- <span class="text-xs text-cyber-primary/60">VS YESTERDAY</span>
717
- </div>
718
- <div class="mt-3">
719
- <div class="w-full bg-cyber-dark/50 h-1.5 rounded-full">
720
- <div class="bg-gradient-to-r from-cyber-accent to-cyber-primary h-1.5 rounded-full" style="width: 76%"></div>
721
- </div>
722
  </div>
723
  </div>
724
- <div class="cyber-grid-overlay"></div>
725
  </div>
726
-
727
- <div class="cyber-panel rounded-xl p-6 holographic cyber-card">
728
- <div class="cyber-panel-inner">
729
- <div class="flex items-center justify-between">
730
- <div>
731
- <p class="text-cyber-primary/80">TOTAL ENERGY</p>
732
- <h2 class="text-4xl font-bold font-digital text-cyber-primary glitch" data-text="28.4">28.4 <span class="text-xl">MWh</span></h2>
733
- </div>
734
- <div class="p-3 rounded-full bg-cyber-primary/10 text-cyber-primary border border-cyber-primary/30 neon-box">
735
- <i class="fas fa-database text-2xl"></i>
736
- </div>
737
- </div>
738
- <div class="mt-4 flex items-center">
739
- <span class="text-cyber-accent mr-2 font-digital"><i class="fas fa-leaf"></i></span>
740
- <span class="text-xs text-cyber-primary/60">CO₂ SAVED: 15.2t</span>
741
  </div>
742
- <div class="mt-3">
743
- <div class="w-full bg-cyber-dark/50 h-1.5 rounded-full">
744
- <div class="bg-gradient-to-r from-cyber-secondary to-cyber-primary h-1.5 rounded-full" style="width: 94%"></div>
745
- </div>
746
  </div>
747
  </div>
748
- <div class="cyber-grid-overlay"></div>
749
  </div>
750
-
751
- <div class="cyber-panel rounded-xl p-6 holographic cyber-card">
752
- <div class="cyber-panel-inner">
753
- <div class="flex items-center justify-between">
754
- <div>
755
- <p class="text-cyber-primary/80">SYSTEM HEALTH</p>
756
- <h2 class="text-4xl font-bold font-digital text-cyber-primary glitch" data-text="98">98<span class="text-xl">%</span></h2>
757
- </div>
758
- <div class="p-3 rounded-full bg-cyber-primary/10 text-cyber-primary border border-cyber-primary/30 neon-box">
759
- <i class="fas fa-heartbeat text-2xl"></i>
760
- </div>
761
- </div>
762
- <div class="mt-4">
763
- <div class="w-full bg-cyber-dark/50 h-1.5 rounded-full">
764
- <div class="bg-gradient-to-r from-green-500 to-cyber-primary h-1.5 rounded-full" style="width: 98%"></div>
765
- </div>
766
  </div>
767
- <div class="mt-3 text-right">
768
- <span class="text-xs text-cyber-primary/60">2 ISSUES DETECTED</span>
769
  </div>
770
  </div>
771
- <div class="cyber-grid-overlay"></div>
772
  </div>
773
  </div>
774
-
775
- <!-- Energy Production Chart -->
776
- <div class="cyber-panel rounded-xl p-6 mb-8 cyber-card">
777
- <div class="cyber-panel-inner">
778
- <div class="flex justify-between items-center mb-6">
779
- <h2 class="text-xl font-bold text-cyber-primary flex items-center">
780
- <i class="fas fa-chart-line mr-3"></i> POWER FLOW MONITOR
781
- </h2>
782
- <div class="flex space-x-2">
783
- <button class="cyber-tab active px-4 py-1.5 text-sm">24H</button>
784
- <button class="cyber-tab px-4 py-1.5 text-sm">7D</button>
785
- <button class="cyber-tab px-4 py-1.5 text-sm">30D</button>
786
- <button class="cyber-tab px-4 py-1.5 text-sm">1Y</button>
787
- </div>
788
- </div>
789
- <div class="h-80">
790
- <canvas id="energyChart"></canvas>
791
- </div>
792
- </div>
793
- <div class="cyber-grid-overlay"></div>
794
  </div>
795
-
796
- <!-- System Overview -->
797
- <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
798
- <!-- Inverter Status -->
799
- <div class="cyber-panel rounded-xl p-6 cyber-card">
800
- <div class="cyber-panel-inner">
801
- <h2 class="text-xl font-bold text-cyber-primary mb-6 flex items-center">
802
- <i class="fas fa-microchip mr-3"></i> INVERTER STATUS
803
- </h2>
804
- <div class="space-y-4">
805
- <div class="p-4 bg-cyber-dark/50 rounded-xl cyber-border flex items-center justify-between transform hover:-translate-y-1 transition-all">
806
- <div class="flex items-center space-x-4">
807
- <div class="relative">
808
- <div class="p-2.5 bg-green-500/20 text-green-500 rounded-full border border-green-500/30 neon-box">
809
- <i class="fas fa-check-circle"></i>
810
- </div>
811
- <div class="absolute -inset-1 rounded-full border-2 border-green-500/30 animate-ping-slow pointer-events-none"></div>
812
- </div>
813
- <div>
814
- <h3 class="font-bold">INVERTER_01</h3>
815
- <p class="text-xs text-cyber-primary/60">SE5000H // SN:SD4821X</p>
816
- </div>
817
- </div>
818
- <div class="text-right">
819
- <p class="font-digital text-2xl text-cyber-primary">3.8 kW</p>
820
- <p class="text-xs text-green-500 font-bold">OPTIMAL</p>
821
- </div>
822
- </div>
823
- <div class="p-4 bg-cyber-dark/50 rounded-xl cyber-border flex items-center justify-between transform hover:-translate-y-1 transition-all">
824
- <div class="flex items-center space-x-4">
825
- <div class="relative">
826
- <div class="p-2.5 bg-yellow-500/20 text-yellow-500 rounded-full border border-yellow-500/30 neon-box">
827
- <i class="fas fa-exclamation-circle"></i>
828
- </div>
829
- <div class="absolute -inset-1 rounded-full border-2 border-yellow-500/30 animate-ping-slow pointer-events-none"></div>
830
- </div>
831
- <div>
832
- <h3 class="font-bold">INVERTER_02</h3>
833
- <p class="text-xs text-cyber-primary/60">SE3000H // SN:SD3719Y</p>
834
- </div>
835
- </div>
836
- <div class="text-right">
837
- <p class="font-digital text-2xl text-cyber-primary">2.1 kW</p>
838
- <p class="text-xs text-yellow-500 font-bold">DEGRADED</p>
839
- </div>
840
- </div>
841
- <div class="p-4 bg-cyber-dark/50 rounded-xl cyber-border flex items-center justify-between transform hover:-translate-y-1 transition-all">
842
- <div class="flex items-center space-x-4">
843
- <div class="relative">
844
- <div class="p-2.5 bg-green-500/20 text-green-500 rounded-full border border-green-500/30 neon-box">
845
- <i class="fas fa-check-circle"></i>
846
- </div>
847
- <div class="absolute -inset-1 rounded-full border-2 border-green-500/30 animate-ping-slow pointer-events-none"></div>
848
- </div>
849
- <div>
850
- <h3 class="font-bold">INVERTER_03</h3>
851
- <p class="text-xs text-cyber-primary/60">SE5000H // SN:SD4923Z</p>
852
- </div>
853
- </div>
854
- <div class="text-right">
855
- <p class="font-digital text-2xl text-cyber-primary">3.5 kW</p>
856
- <p class="text-xs text-green-500 font-bold">OPTIMAL</p>
857
- </div>
858
  </div>
 
859
  </div>
860
- </div>
861
- <div class="cyber-grid-overlay"></div>
862
- </div>
863
-
864
- <!-- Solar Array Visualization -->
865
- <div class="cyber-panel rounded-xl p-6 cyber-card">
866
- <div class="cyber-panel-inner">
867
- <h2 class="text-xl font-bold text-cyber-primary mb-6 flex items-center">
868
- <i class="fas fa-solar-panel mr-3"></i> ARRAY VISUALIZATION
869
- </h2>
870
- <div class="grid grid-cols-3 gap-4">
871
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
872
- <div class="relative mx-auto w-12 h-12 mb-2">
873
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
874
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
875
- </div>
876
- <p class="font-bold text-sm">PANEL_01</p>
877
- <p class="text-xs font-digital text-cyber-primary">280W</p>
878
- </div>
879
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
880
- <div class="relative mx-auto w-12 h-12 mb-2">
881
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
882
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
883
- </div>
884
- <p class="font-bold text-sm">PANEL_02</p>
885
- <p class="text-xs font-digital text-cyber-primary">280W</p>
886
- </div>
887
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
888
- <div class="relative mx-auto w-12 h-12 mb-2">
889
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
890
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
891
- </div>
892
- <p class="font-bold text-sm">PANEL_03</p>
893
- <p class="text-xs font-digital text-cyber-primary">280W</p>
894
- </div>
895
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
896
- <div class="relative mx-auto w-12 h-12 mb-2">
897
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
898
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
899
- </div>
900
- <p class="font-bold text-sm">PANEL_04</p>
901
- <p class="text-xs font-digital text-cyber-primary">280W</p>
902
- </div>
903
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
904
- <div class="relative mx-auto w-12 h-12 mb-2">
905
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
906
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
907
- </div>
908
- <p class="font-bold text-sm">PANEL_05</p>
909
- <p class="text-xs font-digital text-cyber-primary">280W</p>
910
- </div>
911
- <div class="holographic rounded-xl p-4 text-center cyber-border hover:cyber-glow transition-all duration-300 transform hover:scale-105">
912
- <div class="relative mx-auto w-12 h-12 mb-2">
913
- <i class="fas fa-solar-panel text-3xl text-cyber-primary"></i>
914
- <div class="absolute -inset-1 rounded-full border-2 border-cyber-primary/30 animate-ping-slow pointer-events-none"></div>
915
- </div>
916
- <p class="font-bold text-sm">PANEL_06</p>
917
- <p class="text-xs font-digital text-cyber-primary">280W</p>
918
  </div>
 
919
  </div>
920
- <div class="mt-6 bg-cyber-dark/50 rounded-xl p-5 cyber-border transform hover:-translate-y-1 transition-all">
921
- <div class="flex justify-between items-center">
922
- <div>
923
- <p class="text-xs text-cyber-primary/60">TOTAL CAPACITY</p>
924
- <p class="font-bold font-digital text-2xl text-cyber-primary">5.04 kW</p>
925
- </div>
926
- <button class="flex items-center text-cyber-primary font-bold text-sm neon-text">
927
- <span>DETAILED SCAN</span>
928
- <i class="fas fa-chevron-right ml-2"></i>
929
- </button>
930
  </div>
 
931
  </div>
932
  </div>
933
- <div class="cyber-grid-overlay"></div>
934
  </div>
935
- </div>
936
-
937
- <!-- Environmental Impact -->
938
- <div class="cyber-panel rounded-xl p-6 mb-8 cyber-card">
939
- <div class="cyber-panel-inner">
940
- <h2 class="text-xl font-bold text-cyber-primary mb-6 flex items-center">
941
- <i class="fas fa-globe-americas mr-3"></i> ENVIRONMENTAL IMPACT
942
- </h2>
943
- <div class="grid grid-cols-1 md:grid-cols-3 gap-5">
944
- <div class="bg-cyber-dark/50 rounded-xl p-5 flex items-center cyber-border transform hover:-translate-y-1 transition-all">
945
- <div class="mr-4 text-green-500 neon-text">
946
- <i class="fas fa-tree text-4xl"></i>
947
- </div>
948
- <div>
949
- <p class="text-xs text-cyber-primary/60">CO₂ OFFSET</p>
950
- <p class="text-2xl font-bold font-digital text-green-500">15.2 TONS</p>
951
- <p class="text-xs text-cyber-primary/60">EQUIVALENT TO 34 TREES</p>
952
- </div>
953
  </div>
954
- <div class="bg-cyber-dark/50 rounded-xl p-5 flex items-center cyber-border transform hover:-translate-y-1 transition-all">
955
- <div class="mr-4 text-cyber-accent neon-accent">
956
- <i class="fas fa-gas-pump text-4xl"></i>
957
- </div>
958
- <div>
959
- <p class="text-xs text-cyber-primary/60">GASOLINE SAVED</p>
960
- <p class="text-2xl font-bold font-digital text-cyber-accent">1,642 GAL</p>
961
- <p class="text-xs text-cyber-primary/60">EQUIVALENT TO 36K MILES</p>
962
- </div>
963
  </div>
964
- <div class="bg-cyber-dark/50 rounded-xl p-5 flex items-center cyber-border transform hover:-translate-y-1 transition-all">
965
- <div class="mr-4 text-cyber-secondary neon-text">
966
- <i class="fas fa-home text-4xl"></i>
967
- </div>
968
- <div>
969
- <p class="text-xs text-cyber-primary/60">HOMES POWERED</p>
970
- <p class="text-2xl font-bold font-digital text-cyber-secondary">2.4 HOMES</p>
971
- <p class="text-xs text-cyber-primary/60">FOR ONE YEAR</p>
972
- </div>
973
  </div>
974
- </div>
975
- </div>
976
- <div class="cyber-grid-overlay"></div>
977
- </div>
978
-
979
- <!-- 3D Network Visualization -->
980
- <div class="cyber-panel rounded-xl p-6 mb-8 cyber-card">
981
- <div class="cyber-panel-inner">
982
- <h2 class="text-xl font-bold text-cyber-primary mb-6 flex items-center">
983
- <i class="fas fa-project-diagram mr-3"></i> NETWORK TOPOLOGY
984
- </h2>
985
- <div class="h-80 relative">
986
- <div id="network3d" class="w-full h-full"></div>
987
- <div class="absolute bottom-4 right-4 flex space-x-3">
988
- <button class="cyber-button px-3 py-1 text-sm rounded-full">
989
- <i class="fas fa-expand"></i>
990
- </button>
991
- <button class="cyber-button px-3 py-1 text-sm rounded-full">
992
- <i class="fas fa-sync-alt"></i>
993
- </button>
994
  </div>
995
  </div>
996
  </div>
997
- <div class="cyber-grid-overlay"></div>
998
- </div>
999
- </main>
1000
- </div>
1001
- </div>
1002
-
1003
- <!-- Footer -->
1004
- <footer class="bg-cyber-dark border-t border-cyber-primary/20 py-8 relative z-10">
1005
- <div class="container mx-auto px-4">
1006
- <div class="flex flex-col md:flex-row justify-between items-center mb-6">
1007
- <div class="mb-4 md:mb-0">
1008
- <div class="flex items-center space-x-3">
1009
- <div class="w-8 h-8 rounded-full bg-cyber-primary flex items-center justify-center neon-box">
1010
- <i class="fas fa-bolt text-cyber-dark text-sm"></i>
1011
- </div>
1012
- <span class="font-bold text-lg">SOLAREDGE // NEXUS CONTROL v4.2.0</span>
1013
- </div>
1014
- <p class="text-xs text-cyber-primary/60 mt-2">NEURAL NETWORK POWERED ANALYTICS</p>
1015
- </div>
1016
- <div class="flex space-x-5">
1017
- <a href="#" class="text-cyber-primary/60 hover:text-cyber-primary transition-all text-xl">
1018
- <i class="fab fa-github"></i>
1019
- </a>
1020
- <a href="#" class="text-cyber-primary/60 hover:text-cyber-primary transition-all text-xl">
1021
- <i class="fab fa-twitter"></i>
1022
- </a>
1023
- <a href="#" class="text-cyber-primary/60 hover:text-cyber-primary transition-all text-xl">
1024
- <i class="fab fa-linkedin"></i>
1025
- </a>
1026
- <a href="#" class="text-cyber-primary/60 hover:text-cyber-primary transition-all text-xl">
1027
- <i class="fab fa-discord"></i>
1028
- </a>
1029
- </div>
1030
- </div>
1031
- <div class="border-t border-cyber-primary/10 pt-6 text-xs text-cyber-primary/60">
1032
- <div class="flex flex-col md:flex-row justify-between">
1033
- <div class="mb-4 md:mb-0">
1034
- <p>© 2077 SOLAREDGE TECHNOLOGIES. ALL RIGHTS RESERVED.</p>
1035
- </div>
1036
- <div class="flex flex-col md:flex-row md:space-x-6 space-y-2 md:space-y-0">
1037
- <a href="#" class="hover:text-cyber-primary transition-all">SECURITY PROTOCOLS</a>
1038
- <a href="#" class="hover:text-cyber-primary transition-all">DATA PRIVACY</a>
1039
- <a href="#" class="hover:text-cyber-primary transition-all">TERMS OF SERVICE</a>
1040
- <a href="#" class="hover:text-cyber-primary transition-all">CONTACT SUPPORT</a>
1041
- </div>
1042
  </div>
1043
  </div>
1044
  </div>
1045
- </footer>
1046
 
1047
- <!-- Chart.js -->
1048
- <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
1049
  <script>
1050
- // 3D Background Scene
1051
- const scene3d = document.getElementById('scene3d');
1052
-
1053
- // Initialize Three.js scene
1054
  const scene = new THREE.Scene();
1055
  const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
1056
- const renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
1057
  renderer.setSize(window.innerWidth, window.innerHeight);
1058
- renderer.setClearColor(0x000000, 0);
1059
- scene3d.appendChild(renderer.domElement);
1060
 
1061
- // Add floating elements
1062
- const geometry = new THREE.IcosahedronGeometry(1, 0);
1063
- const material = new THREE.MeshBasicMaterial({
 
 
 
 
 
 
 
1064
  color: 0x00f0ff,
1065
  wireframe: true,
1066
  transparent: true,
1067
- opacity: 0.05
1068
  });
1069
 
1070
- const icosahedrons = [];
1071
  for (let i = 0; i < 8; i++) {
1072
- const icosahedron = new THREE.Mesh(geometry, material);
1073
- icosahedron.position.x = Math.random() * 20 - 10;
1074
- icosahedron.position.y = Math.random() * 20 - 10;
1075
- icosahedron.position.z = Math.random() * 10 - 20;
1076
- icosahedron.scale.setScalar(Math.random() * 2 + 1);
1077
- scene.add(icosahedron);
1078
- icosahedrons.push(icosahedron);
1079
  }
1080
 
1081
- // Add grid helper
1082
- const gridHelper = new THREE.GridHelper(20, 20, 0x00f0ff, 0x00f0ff);
1083
- gridHelper.material.opacity = 0.05;
1084
- gridHelper.material.transparent = true;
1085
- gridHelper.position.z = -10;
1086
- scene.add(gridHelper);
1087
-
1088
- camera.position.z = 5;
1089
 
1090
- // Animation loop
1091
- function animate() {
1092
- requestAnimationFrame(animate);
1093
-
1094
- icosahedrons.forEach(ico => {
1095
- ico.rotation.x += 0.001;
1096
- ico.rotation.y += 0.002;
1097
- ico.position.y += 0.001;
1098
- if (ico.position.y > 10) ico.position.y = -10;
1099
- });
1100
-
1101
- renderer.render(scene, camera);
 
 
 
 
 
 
 
 
1102
  }
1103
 
1104
- animate();
1105
-
1106
- // Network 3D Visualization
1107
- const networkScene = new THREE.Scene();
1108
- const networkCamera = new THREE.PerspectiveCamera(75, document.getElementById('network3d').clientWidth / document.getElementById('network3d').clientHeight, 0.1, 1000);
1109
- const networkRenderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
1110
- networkRenderer.setSize(document.getElementById('network3d').clientWidth, document.getElementById('network3d').clientHeight);
1111
- document.getElementById('network3d').appendChild(networkRenderer.domElement);
1112
-
1113
- // Create nodes
1114
- const nodeGeometry = new THREE.SphereGeometry(0.5, 16, 16);
1115
- const nodeMaterial = new THREE.MeshBasicMaterial({
1116
  color: 0x00f0ff,
 
1117
  transparent: true,
1118
- opacity: 0.8
1119
  });
 
 
1120
 
1121
- const nodes = [];
1122
- const positions = [
1123
- { x: -3, y: 0, z: 0 },
1124
- { x: 0, y: 3, z: 0 },
1125
- { x: 3, y: 0, z: 0 },
1126
- { x: 0, y: -3, z: 0 },
1127
- { x: 0, y: 0, z: 3 },
1128
- { x: 0, y: 0, z: -3 }
1129
- ];
1130
-
1131
- positions.forEach(pos => {
1132
- const node = new THREE.Mesh(nodeGeometry, nodeMaterial);
1133
- node.position.set(pos.x, pos.y, pos.z);
1134
- networkScene.add(node);
1135
- nodes.push(node);
1136
- });
1137
 
1138
- // Create connections
1139
- const lines = [];
1140
- const connections = [
1141
- [0, 1], [1, 2], [2, 3], [3, 0],
1142
- [0, 4], [1, 4], [2, 4], [3, 4],
1143
- [0, 5], [1, 5], [2, 5], [3, 5]
1144
- ];
1145
 
1146
- connections.forEach(conn => {
1147
- const lineGeometry = new THREE.BufferGeometry().setFromPoints([
1148
- new THREE.Vector3(
1149
- nodes[conn[0]].position.x,
1150
- nodes[conn[0]].position.y,
1151
- nodes[conn[0]].position.z
1152
- ),
1153
- new THREE.Vector3(
1154
- nodes[conn[1]].position.x,
1155
- nodes[conn[1]].position.y,
1156
- nodes[conn[1]].position.z
1157
- )
1158
- ]);
1159
- const lineMaterial = new THREE.LineBasicMaterial({
1160
- color: 0x00f0ff,
1161
- transparent: true,
1162
- opacity: 0.3
1163
- });
1164
- const line = new THREE.Line(lineGeometry, lineMaterial);
1165
- networkScene.add(line);
1166
- lines.push(line);
1167
  });
 
 
1168
 
1169
- // Add central node
1170
- const centralNode = new THREE.Mesh(nodeGeometry, nodeMaterial);
1171
- centralNode.scale.setScalar(1.5);
1172
- networkScene.add(centralNode);
1173
 
1174
- networkCamera.position.z = 10;
1175
-
1176
- // Animation loop for network
1177
- function animateNetwork() {
1178
- requestAnimationFrame(animateNetwork);
1179
 
1180
- nodes.forEach((node, i) => {
1181
- node.rotation.x += 0.01;
1182
- node.rotation.y += 0.01;
1183
-
1184
- // Pulsing effect
1185
- const scale = 0.5 + Math.abs(Math.sin(Date.now() * 0.001 + i) * 0.3);
1186
- node.scale.set(scale, scale, scale);
1187
  });
1188
 
1189
- centralNode.rotation.x += 0.005;
1190
- centralNode.rotation.y += 0.01;
 
1191
 
1192
- // Pulsing effect for central node
1193
- const centralScale = 1.2 + Math.sin(Date.now() * 0.001) * 0.3;
1194
- centralNode.scale.set(centralScale, centralScale, centralScale);
1195
 
1196
- networkRenderer.render(networkScene, networkCamera);
1197
  }
1198
 
1199
- animateNetwork();
 
 
 
 
 
 
 
1200
 
1201
- // Energy Production Chart
1202
  const energyCtx = document.getElementById('energyChart').getContext('2d');
1203
  const energyChart = new Chart(energyCtx, {
1204
  type: 'line',
@@ -1209,14 +411,9 @@
1209
  data: [0, 1.2, 3.8, 4.2, 3.9, 1.5, 0.2],
1210
  borderColor: '#00f0ff',
1211
  backgroundColor: 'rgba(0, 240, 255, 0.1)',
1212
- borderWidth: 3,
1213
  tension: 0.4,
1214
- fill: true,
1215
- pointBackgroundColor: '#00f0ff',
1216
- pointBorderColor: '#0a0a1a',
1217
- pointBorderWidth: 2,
1218
- pointRadius: 5,
1219
- pointHoverRadius: 8
1220
  }]
1221
  },
1222
  options: {
@@ -1225,34 +422,15 @@
1225
  plugins: {
1226
  legend: {
1227
  display: false
1228
- },
1229
- tooltip: {
1230
- backgroundColor: '#1a1a3a',
1231
- titleColor: '#00f0ff',
1232
- bodyColor: '#e0e0ff',
1233
- borderColor: '#00f0ff',
1234
- borderWidth: 1,
1235
- displayColors: false,
1236
- padding: 15,
1237
- callbacks: {
1238
- label: function(context) {
1239
- return 'POWER: ' + context.parsed.y + ' kW';
1240
- }
1241
- }
1242
  }
1243
  },
1244
  scales: {
1245
  y: {
1246
- beginAtZero: true,
1247
  grid: {
1248
  color: 'rgba(0, 240, 255, 0.1)'
1249
  },
1250
  ticks: {
1251
- color: '#00f0ff',
1252
- font: {
1253
- family: 'Orbitron',
1254
- size: 12
1255
- }
1256
  }
1257
  },
1258
  x: {
@@ -1260,111 +438,21 @@
1260
  display: false
1261
  },
1262
  ticks: {
1263
- color: '#00f0ff',
1264
- font: {
1265
- family: 'Orbitron',
1266
- size: 12
1267
- }
1268
  }
1269
  }
1270
  }
1271
  }
1272
  });
1273
-
1274
- // Add tilt effect to cyber cards
1275
- const cyberCards = document.querySelectorAll('.cyber-card');
1276
- cyberCards.forEach(card => {
1277
- VanillaTilt.init(card, {
1278
- max: 5,
1279
- speed: 500,
1280
- glare: true,
1281
- "max-glare": 0.2,
1282
- gyroscope: true
1283
- });
1284
- });
1285
-
1286
- // Random panel glow effect
1287
- function updatePanelGlow() {
1288
- const panels = document.querySelectorAll('.holographic');
1289
- const randomIndex = Math.floor(Math.random() * panels.length);
1290
-
1291
- // Remove all glow effects first
1292
- panels.forEach(panel => {
1293
- panel.classList.remove('cyber-glow');
1294
- });
1295
-
1296
- // Add glow to random panel
1297
- panels[randomIndex].classList.add('cyber-glow');
1298
- }
1299
-
1300
- // Update panel glow every 2-5 seconds
1301
- setInterval(updatePanelGlow, Math.random() * 3000 + 2000);
1302
-
1303
- // Add random glitch effects to headers
1304
- function triggerRandomGlitch() {
1305
- const glitchElements = document.querySelectorAll('.glitch');
1306
- glitchElements.forEach(el => {
1307
- if (Math.random() > 0.7) { // 30% chance to glitch
1308
- el.style.animation = 'glitch-effect 0.5s';
1309
- setTimeout(() => {
1310
- el.style.animation = '';
1311
- }, 500);
1312
- }
1313
- });
1314
- }
1315
-
1316
- // Trigger random glitches every 3-8 seconds
1317
- setInterval(triggerRandomGlitch, Math.random() * 5000 + 3000);
1318
-
1319
- // Tab functionality
1320
- const tabs = document.querySelectorAll('.cyber-tab');
1321
- tabs.forEach(tab => {
1322
- tab.addEventListener('click', () => {
1323
- tabs.forEach(t => t.classList.remove('active'));
1324
- tab.classList.add('active');
1325
-
1326
- // Update chart data based on selected tab
1327
- const timeRanges = {
1328
- '24H': [0, 1.2, 3.8, 4.2, 3.9, 1.5, 0.2],
1329
- '7D': [2.1, 2.8, 3.5, 4.0, 3.8, 3.2, 2.5],
1330
- '30D': [3.0, 3.2, 3.5, 3.8, 3.9, 3.7, 3.5],
1331
- '1Y': [2.5, 2.8, 3.2, 3.8, 4.0, 3.5, 3.0]
1332
- };
1333
-
1334
- energyChart.data.datasets[0].data = timeRanges[tab.textContent];
1335
- energyChart.update();
1336
- });
1337
- });
1338
-
1339
- // Window resize handlers
1340
- window.addEventListener('resize', () => {
1341
- // Resize main 3D background
1342
- camera.aspect = window.innerWidth / window.innerHeight;
1343
- camera.updateProjectionMatrix();
1344
- renderer.setSize(window.innerWidth, window.innerHeight);
1345
-
1346
- // Resize network visualization
1347
- networkCamera.aspect = document.getElementById('network3d').clientWidth / document.getElementById('network3d').clientHeight;
1348
- networkCamera.updateProjectionMatrix();
1349
- networkRenderer.setSize(document.getElementById('network3d').clientWidth, document.getElementById('network3d').clientHeight);
1350
- });
1351
-
1352
  // Parallax effect
1353
  document.addEventListener('mousemove', (e) => {
1354
  const x = e.clientX / window.innerWidth;
1355
  const y = e.clientY / window.innerHeight;
1356
 
1357
- // Move background elements slightly
1358
- icosahedrons.forEach((ico, i) => {
1359
- ico.position.x = (x * 2 - 1) * 2;
1360
- ico.position.y = -(y * 2 - 1) * 2;
1361
- });
1362
-
1363
- // Move network visualization
1364
- nodes.forEach((node, i) => {
1365
- node.position.x = positions[i].x + (x * 2 - 1);
1366
- node.position.y = positions[i].y + (y * 2 - 1);
1367
- });
1368
  });
1369
  </script>
1370
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=LukasBe/fun" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
 
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
  <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
10
  <script src="https://cdn.jsdelivr.net/npm/vanilla-tilt@1.7.0/dist/vanilla-tilt.min.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  <style>
13
  @import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Orbitron:wght@400;700&family=Rajdhani:wght@400;500;700&display=swap');
14
 
15
  body {
16
+ margin: 0;
17
+ padding: 0;
18
+ overflow: hidden;
19
  font-family: 'Rajdhani', sans-serif;
20
+ color: #e0e0ff;
 
21
  }
22
 
23
+ #container {
24
+ position: absolute;
25
+ width: 100%;
26
+ height: 100%;
27
  }
28
 
29
+ #ui-container {
30
+ position: absolute;
31
+ width: 100%;
32
+ height: 100%;
33
+ pointer-events: none;
34
  }
35
 
36
+ .ui-element {
37
+ pointer-events: auto;
 
 
 
 
 
38
  }
39
 
40
+ .cyber-text {
41
+ text-shadow: 0 0 5px #00f0ff, 0 0 10px #00f0ff;
 
 
42
  }
43
 
44
+ .cyber-panel {
45
+ background: rgba(10, 10, 26, 0.7);
 
 
46
  backdrop-filter: blur(10px);
47
+ border: 1px solid rgba(0, 240, 255, 0.3);
48
+ box-shadow: 0 0 20px rgba(0, 240, 255, 0.2);
49
  }
50
 
51
  .cyber-button {
52
+ background: rgba(26, 26, 58, 0.7);
53
  border: 1px solid #00f0ff;
54
  color: #00f0ff;
55
  transition: all 0.3s ease;
 
56
  }
57
 
58
  .cyber-button:hover {
59
+ background: rgba(0, 240, 255, 0.3);
60
+ box-shadow: 0 0 15px rgba(0, 240, 255, 0.5);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
62
 
63
+ .glow {
64
+ animation: glow 2s ease-in-out infinite alternate;
 
 
65
  }
66
 
67
+ @keyframes glow {
68
+ from {
69
+ box-shadow: 0 0 5px rgba(0, 240, 255, 0.5);
70
+ }
71
+ to {
72
+ box-shadow: 0 0 20px rgba(0, 240, 255, 0.8);
73
+ }
 
 
 
 
 
 
74
  }
75
 
76
  .scanlines {
77
  position: relative;
 
78
  }
79
 
80
  .scanlines::before {
 
92
  background-size: 100% 4px;
93
  pointer-events: none;
94
  z-index: 100;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  }
96
  </style>
97
  </head>
98
+ <body>
99
+ <div id="container"></div>
100
+ <div id="ui-container" class="scanlines">
101
+ <!-- Header -->
102
+ <div class="absolute top-0 left-0 right-0 p-4 flex justify-between items-center cyber-panel z-50 ui-element">
 
 
 
 
 
 
 
 
 
 
 
103
  <div class="flex items-center space-x-4">
104
+ <div class="w-10 h-10 rounded-full bg-gradient-to-br from-cyan-400 to-blue-500 flex items-center justify-center shadow-lg">
105
+ <i class="fas fa-bolt text-gray-900"></i>
 
 
 
 
 
 
 
106
  </div>
107
+ <h1 class="text-2xl font-bold cyber-text">SOLAREDGE NEXUS</h1>
108
  </div>
109
+ <div class="flex items-center space-x-4">
110
+ <button class="cyber-button px-4 py-2 rounded-full flex items-center space-x-2">
111
+ <i class="fas fa-satellite-dish"></i>
112
+ <span>SYNC NETWORK</span>
113
+ </button>
114
+ <div class="flex items-center space-x-2">
115
+ <div class="w-8 h-8 rounded-full bg-gray-700 border border-cyan-400"></div>
116
+ <span>ADMIN</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  </div>
118
  </div>
119
  </div>
120
+
121
+ <!-- Main Dashboard -->
122
+ <div class="absolute top-20 left-0 right-0 bottom-0 flex">
 
 
123
  <!-- Sidebar -->
124
+ <div class="w-64 h-full p-4 cyber-panel mr-4 ui-element">
125
+ <nav class="space-y-2">
126
+ <a href="#" class="block p-3 hover:bg-cyan-900/30 rounded-lg flex items-center space-x-3">
127
+ <i class="fas fa-tachometer-alt"></i>
128
+ <span>DASHBOARD</span>
129
+ </a>
130
+ <a href="#" class="block p-3 hover:bg-cyan-900/30 rounded-lg flex items-center space-x-3">
131
+ <i class="fas fa-chart-network"></i>
132
+ <span>ENERGY GRID</span>
133
+ </a>
134
+ <a href="#" class="block p-3 hover:bg-cyan-900/30 rounded-lg flex items-center space-x-3">
135
+ <i class="fas fa-solar-panel"></i>
136
+ <span>ARRAY SCAN</span>
137
+ </a>
138
+ <a href="#" class="block p-3 hover:bg-cyan-900/30 rounded-lg flex items-center space-x-3">
139
+ <i class="fas fa-bolt"></i>
140
+ <span>INVERTERS</span>
141
+ </a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  </nav>
143
+
144
+ <div class="mt-8 p-4 cyber-panel rounded-lg">
145
+ <h3 class="font-bold text-lg cyber-text mb-4">SYSTEM STATUS</h3>
146
+ <div class="space-y-3">
147
+ <div class="flex justify-between">
148
+ <span>POWER OUTPUT</span>
149
+ <span class="text-green-400">ACTIVE</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  </div>
151
+ <div class="flex justify-between">
152
+ <span>NETWORK</span>
153
+ <span class="text-green-400">ONLINE</span>
 
 
 
154
  </div>
155
+ <div class="flex justify-between">
156
+ <span>SECURITY</span>
157
+ <span class="text-green-400">ENCRYPTED</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  </div>
159
  </div>
160
  </div>
161
+ </div>
162
+
163
+ <!-- Content -->
164
+ <div class="flex-1 p-4 overflow-y-auto ui-element">
165
+ <!-- Stats Cards -->
166
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 mb-6">
167
+ <div class="cyber-panel p-4 rounded-lg">
168
+ <div class="flex justify-between items-center">
169
+ <div>
170
+ <p class="text-sm opacity-70">CURRENT OUTPUT</p>
171
+ <h2 class="text-3xl font-bold cyber-text">42.5 kW</h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  </div>
173
+ <div class="w-12 h-12 rounded-full bg-cyan-900/30 flex items-center justify-center">
174
+ <i class="fas fa-bolt text-xl text-cyan-400"></i>
 
 
175
  </div>
176
  </div>
 
177
  </div>
178
+
179
+ <div class="cyber-panel p-4 rounded-lg">
180
+ <div class="flex justify-between items-center">
181
+ <div>
182
+ <p class="text-sm opacity-70">TODAY'S YIELD</p>
183
+ <h2 class="text-3xl font-bold cyber-text">1,280 kWh</h2>
 
 
 
 
 
184
  </div>
185
+ <div class="w-12 h-12 rounded-full bg-cyan-900/30 flex items-center justify-center">
186
+ <i class="fas fa-sun text-xl text-cyan-400"></i>
 
 
 
 
 
 
187
  </div>
188
  </div>
 
189
  </div>
190
+
191
+ <div class="cyber-panel p-4 rounded-lg">
192
+ <div class="flex justify-between items-center">
193
+ <div>
194
+ <p class="text-sm opacity-70">TOTAL ENERGY</p>
195
+ <h2 class="text-3xl font-bold cyber-text">28.4 MWh</h2>
 
 
 
 
 
 
 
 
 
196
  </div>
197
+ <div class="w-12 h-12 rounded-full bg-cyan-900/30 flex items-center justify-center">
198
+ <i class="fas fa-database text-xl text-cyan-400"></i>
 
 
199
  </div>
200
  </div>
 
201
  </div>
202
+
203
+ <div class="cyber-panel p-4 rounded-lg glow">
204
+ <div class="flex justify-between items-center">
205
+ <div>
206
+ <p class="text-sm opacity-70">SYSTEM HEALTH</p>
207
+ <h2 class="text-3xl font-bold cyber-text">98%</h2>
 
 
 
 
 
 
 
 
 
 
208
  </div>
209
+ <div class="w-12 h-12 rounded-full bg-cyan-900/30 flex items-center justify-center">
210
+ <i class="fas fa-heartbeat text-xl text-cyan-400"></i>
211
  </div>
212
  </div>
 
213
  </div>
214
  </div>
215
+
216
+ <!-- Energy Chart -->
217
+ <div class="cyber-panel p-4 rounded-lg mb-6" style="height: 300px;">
218
+ <canvas id="energyChart"></canvas>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
219
  </div>
220
+
221
+ <!-- Inverter Status -->
222
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-4">
223
+ <div class="cyber-panel p-4 rounded-lg">
224
+ <h3 class="text-lg font-bold cyber-text mb-4">INVERTER STATUS</h3>
225
+ <div class="space-y-3">
226
+ <div class="flex justify-between items-center p-3 hover:bg-cyan-900/20 rounded-lg">
227
+ <div class="flex items-center space-x-3">
228
+ <div class="w-3 h-3 rounded-full bg-green-500"></div>
229
+ <span>INVERTER_01</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
230
  </div>
231
+ <span class="font-mono text-cyan-400">3.8 kW</span>
232
  </div>
233
+ <div class="flex justify-between items-center p-3 hover:bg-cyan-900/20 rounded-lg">
234
+ <div class="flex items-center space-x-3">
235
+ <div class="w-3 h-3 rounded-full bg-yellow-500"></div>
236
+ <span>INVERTER_02</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
237
  </div>
238
+ <span class="font-mono text-cyan-400">2.1 kW</span>
239
  </div>
240
+ <div class="flex justify-between items-center p-3 hover:bg-cyan-900/20 rounded-lg">
241
+ <div class="flex items-center space-x-3">
242
+ <div class="w-3 h-3 rounded-full bg-green-500"></div>
243
+ <span>INVERTER_03</span>
 
 
 
 
 
 
244
  </div>
245
+ <span class="font-mono text-cyan-400">3.5 kW</span>
246
  </div>
247
  </div>
 
248
  </div>
249
+
250
+ <!-- Solar Array -->
251
+ <div class="cyber-panel p-4 rounded-lg">
252
+ <h3 class="text-lg font-bold cyber-text mb-4">SOLAR ARRAY</h3>
253
+ <div class="grid grid-cols-3 gap-3">
254
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
255
+ <i class="fas fa-solar-panel text-cyan-400"></i>
 
 
 
 
 
 
 
 
 
 
 
256
  </div>
257
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
258
+ <i class="fas fa-solar-panel text-cyan-400"></i>
 
 
 
 
 
 
 
259
  </div>
260
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
261
+ <i class="fas fa-solar-panel text-cyan-400"></i>
 
 
 
 
 
 
 
262
  </div>
263
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
264
+ <i class="fas fa-solar-panel text-cyan-400"></i>
265
+ </div>
266
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
267
+ <i class="fas fa-solar-panel text-cyan-400"></i>
268
+ </div>
269
+ <div class="aspect-square bg-cyan-900/20 rounded-lg flex items-center justify-center border border-cyan-400/30">
270
+ <i class="fas fa-solar-panel text-cyan-400"></i>
 
 
 
 
 
 
 
 
 
 
 
 
271
  </div>
272
  </div>
273
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
274
  </div>
275
  </div>
276
  </div>
277
+ </div>
278
 
 
 
279
  <script>
280
+ // Three.js Scene Setup
 
 
 
281
  const scene = new THREE.Scene();
282
  const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
283
+ const renderer = new THREE.WebGLRenderer({ antialias: true });
284
  renderer.setSize(window.innerWidth, window.innerHeight);
285
+ renderer.setPixelRatio(window.devicePixelRatio);
286
+ document.getElementById('container').appendChild(renderer.domElement);
287
 
288
+ // Add floating grid
289
+ const gridHelper = new THREE.GridHelper(100, 100, 0x00f0ff, 0x00f0ff);
290
+ gridHelper.material.opacity = 0.1;
291
+ gridHelper.material.transparent = true;
292
+ scene.add(gridHelper);
293
+
294
+ // Add floating orbs
295
+ const orbs = [];
296
+ const orbGeometry = new THREE.SphereGeometry(2, 32, 32);
297
+ const orbMaterial = new THREE.MeshBasicMaterial({
298
  color: 0x00f0ff,
299
  wireframe: true,
300
  transparent: true,
301
+ opacity: 0.2
302
  });
303
 
 
304
  for (let i = 0; i < 8; i++) {
305
+ const orb = new THREE.Mesh(orbGeometry, orbMaterial);
306
+ orb.position.x = Math.random() * 60 - 30;
307
+ orb.position.y = Math.random() * 40 - 20;
308
+ orb.position.z = Math.random() * 40 - 20;
309
+ orb.scale.setScalar(Math.random() * 2 + 1);
310
+ scene.add(orb);
311
+ orbs.push(orb);
312
  }
313
 
314
+ // Add connecting lines
315
+ const lineMaterial = new THREE.LineBasicMaterial({ color: 0x00f0ff, transparent: true, opacity: 0.1 });
316
+ const lines = [];
 
 
 
 
 
317
 
318
+ for (let i = 0; i < orbs.length; i++) {
319
+ for (let j = i + 1; j < orbs.length; j++) {
320
+ if (Math.random() > 0.7) {
321
+ const lineGeometry = new THREE.BufferGeometry().setFromPoints([
322
+ new THREE.Vector3(
323
+ orbs[i].position.x,
324
+ orbs[i].position.y,
325
+ orbs[i].position.z
326
+ ),
327
+ new THREE.Vector3(
328
+ orbs[j].position.x,
329
+ orbs[j].position.y,
330
+ orbs[j].position.z
331
+ )
332
+ ]);
333
+ const line = new THREE.Line(lineGeometry, lineMaterial);
334
+ scene.add(line);
335
+ lines.push(line);
336
+ }
337
+ }
338
  }
339
 
340
+ // Add central data sphere
341
+ const centerGeometry = new THREE.SphereGeometry(5, 64, 64);
342
+ const centerMaterial = new THREE.MeshBasicMaterial({
 
 
 
 
 
 
 
 
 
343
  color: 0x00f0ff,
344
+ wireframe: true,
345
  transparent: true,
346
+ opacity: 0.3
347
  });
348
+ const centerSphere = new THREE.Mesh(centerGeometry, centerMaterial);
349
+ scene.add(centerSphere);
350
 
351
+ // Add floating particles
352
+ const particlesGeometry = new THREE.BufferGeometry();
353
+ const particlesCount = 1000;
354
+ const posArray = new Float32Array(particlesCount * 3);
 
 
 
 
 
 
 
 
 
 
 
 
355
 
356
+ for (let i = 0; i < particlesCount * 3; i++) {
357
+ posArray[i] = (Math.random() - 0.5) * 100;
358
+ }
 
 
 
 
359
 
360
+ particlesGeometry.setAttribute('position', new THREE.BufferAttribute(posArray, 3));
361
+ const particlesMaterial = new THREE.PointsMaterial({
362
+ color: 0x00f0ff,
363
+ size: 0.1,
364
+ transparent: true,
365
+ opacity: 0.5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  });
367
+ const particlesMesh = new THREE.Points(particlesGeometry, particlesMaterial);
368
+ scene.add(particlesMesh);
369
 
370
+ // Camera position
371
+ camera.position.z = 30;
372
+ camera.position.y = 10;
 
373
 
374
+ // Animation loop
375
+ function animate() {
376
+ requestAnimationFrame(animate);
 
 
377
 
378
+ // Rotate orbs
379
+ orbs.forEach(orb => {
380
+ orb.rotation.x += 0.005;
381
+ orb.rotation.y += 0.01;
 
 
 
382
  });
383
 
384
+ // Rotate center sphere
385
+ centerSphere.rotation.x += 0.002;
386
+ centerSphere.rotation.y += 0.005;
387
 
388
+ // Move particles
389
+ particlesMesh.rotation.y += 0.001;
 
390
 
391
+ renderer.render(scene, camera);
392
  }
393
 
394
+ animate();
395
+
396
+ // Handle window resize
397
+ window.addEventListener('resize', () => {
398
+ camera.aspect = window.innerWidth / window.innerHeight;
399
+ camera.updateProjectionMatrix();
400
+ renderer.setSize(window.innerWidth, window.innerHeight);
401
+ });
402
 
403
+ // Energy Chart
404
  const energyCtx = document.getElementById('energyChart').getContext('2d');
405
  const energyChart = new Chart(energyCtx, {
406
  type: 'line',
 
411
  data: [0, 1.2, 3.8, 4.2, 3.9, 1.5, 0.2],
412
  borderColor: '#00f0ff',
413
  backgroundColor: 'rgba(0, 240, 255, 0.1)',
414
+ borderWidth: 2,
415
  tension: 0.4,
416
+ fill: true
 
 
 
 
 
417
  }]
418
  },
419
  options: {
 
422
  plugins: {
423
  legend: {
424
  display: false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  }
426
  },
427
  scales: {
428
  y: {
 
429
  grid: {
430
  color: 'rgba(0, 240, 255, 0.1)'
431
  },
432
  ticks: {
433
+ color: '#00f0ff'
 
 
 
 
434
  }
435
  },
436
  x: {
 
438
  display: false
439
  },
440
  ticks: {
441
+ color: '#00f0ff'
 
 
 
 
442
  }
443
  }
444
  }
445
  }
446
  });
447
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  // Parallax effect
449
  document.addEventListener('mousemove', (e) => {
450
  const x = e.clientX / window.innerWidth;
451
  const y = e.clientY / window.innerHeight;
452
 
453
+ camera.position.x = (x - 0.5) * 10;
454
+ camera.position.y = -(y - 0.5) * 10 + 10;
455
+ camera.lookAt(0, 0, 0);
 
 
 
 
 
 
 
 
456
  });
457
  </script>
458
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=LukasBe/fun" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>