noah33565 commited on
Commit
038ead3
·
verified ·
1 Parent(s): c984683

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +1406 -18
index.html CHANGED
@@ -1,19 +1,1407 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="de">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>German RP (GNRP) Server</title>
7
+ <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;600&display=swap" rel="stylesheet">
8
+ <style>
9
+ :root {
10
+ --bg: #050508;
11
+ --bg2: #0a0a12;
12
+ --accent: #e8a020;
13
+ --accent2: #ff6a00;
14
+ --accent3: #c47d0a;
15
+ --text: #f0e8d8;
16
+ --dim: #6a5840;
17
+ --owner: #ffd700;
18
+ --admin: #ff6a00;
19
+ --mod: #e8a020;
20
+ --supporter: #c47d0a;
21
+ }
22
+
23
+ * { margin: 0; padding: 0; box-sizing: border-box; }
24
+
25
+ body {
26
+ background: var(--bg);
27
+ color: var(--text);
28
+ font-family: 'Rajdhani', sans-serif;
29
+ font-size: 16px;
30
+ overflow-x: hidden;
31
+ cursor: default;
32
+ }
33
+
34
+ /* Hero background image */
35
+ #heroBg {
36
+ position: fixed;
37
+ inset: 0;
38
+ background-image: url('https://i.imgur.com/placeholder.jpg');
39
+ background-size: cover;
40
+ background-position: center;
41
+ opacity: 0.18;
42
+ z-index: 0;
43
+ pointer-events: none;
44
+ transition: background-image 0.5s;
45
+ }
46
+
47
+ /* Animated bg grid */
48
+ body::before {
49
+ content: '';
50
+ position: fixed;
51
+ inset: 0;
52
+ background-image:
53
+ linear-gradient(rgba(232,160,32,0.03) 1px, transparent 1px),
54
+ linear-gradient(90deg, rgba(232,160,32,0.03) 1px, transparent 1px);
55
+ background-size: 60px 60px;
56
+ animation: gridMove 20s linear infinite;
57
+ pointer-events: none;
58
+ z-index: 0;
59
+ }
60
+
61
+ @keyframes gridMove {
62
+ 0% { background-position: 0 0; }
63
+ 100% { background-position: 60px 60px; }
64
+ }
65
+
66
+ body::after {
67
+ content: '';
68
+ position: fixed;
69
+ inset: 0;
70
+ background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.08) 2px, rgba(0,0,0,0.08) 4px);
71
+ pointer-events: none;
72
+ z-index: 999;
73
+ }
74
+
75
+ nav {
76
+ position: fixed;
77
+ top: 0;
78
+ width: 100%;
79
+ z-index: 100;
80
+ padding: 0 40px;
81
+ height: 64px;
82
+ display: flex;
83
+ align-items: center;
84
+ justify-content: space-between;
85
+ background: rgba(5,5,8,0.9);
86
+ border-bottom: 1px solid rgba(232,160,32,0.2);
87
+ backdrop-filter: blur(10px);
88
+ }
89
+
90
+ .logo {
91
+ font-family: 'Orbitron', monospace;
92
+ font-size: 22px;
93
+ font-weight: 900;
94
+ letter-spacing: 4px;
95
+ color: var(--accent);
96
+ text-shadow: 0 0 20px var(--accent), 0 0 40px rgba(232,160,32,0.4);
97
+ text-decoration: none;
98
+ }
99
+
100
+ .logo span { color: var(--accent2); }
101
+
102
+ .nav-links {
103
+ display: flex;
104
+ gap: 32px;
105
+ list-style: none;
106
+ }
107
+
108
+ .nav-links a {
109
+ font-family: 'Orbitron', monospace;
110
+ font-size: 11px;
111
+ letter-spacing: 2px;
112
+ color: var(--dim);
113
+ text-decoration: none;
114
+ transition: color 0.2s, text-shadow 0.2s;
115
+ text-transform: uppercase;
116
+ }
117
+
118
+ .nav-links a:hover {
119
+ color: var(--accent);
120
+ text-shadow: 0 0 10px var(--accent);
121
+ }
122
+
123
+ .hero {
124
+ position: relative;
125
+ z-index: 1;
126
+ min-height: 100vh;
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ text-align: center;
131
+ padding: 80px 20px 60px;
132
+ overflow: hidden;
133
+ }
134
+
135
+ .hero-glow {
136
+ position: absolute;
137
+ width: 600px;
138
+ height: 600px;
139
+ border-radius: 50%;
140
+ background: radial-gradient(circle, rgba(232,160,32,0.1) 0%, transparent 70%);
141
+ top: 50%;
142
+ left: 50%;
143
+ transform: translate(-50%, -50%);
144
+ animation: pulse 4s ease-in-out infinite;
145
+ }
146
+
147
+ .hero-glow2 {
148
+ position: absolute;
149
+ width: 400px;
150
+ height: 400px;
151
+ border-radius: 50%;
152
+ background: radial-gradient(circle, rgba(255,106,0,0.1) 0%, transparent 70%);
153
+ top: 30%;
154
+ right: 10%;
155
+ animation: pulse 6s ease-in-out infinite reverse;
156
+ }
157
+
158
+ @keyframes pulse {
159
+ 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.7; }
160
+ 50% { transform: translate(-50%, -50%) scale(1.2); opacity: 1; }
161
+ }
162
+
163
+ .hero-content { position: relative; z-index: 2; }
164
+
165
+ .hero-tag {
166
+ font-family: 'Orbitron', monospace;
167
+ font-size: 11px;
168
+ letter-spacing: 6px;
169
+ color: var(--accent);
170
+ text-transform: uppercase;
171
+ margin-bottom: 24px;
172
+ opacity: 0;
173
+ animation: fadeUp 0.8s 0.3s forwards;
174
+ }
175
+
176
+ .hero-title {
177
+ font-family: 'Orbitron', monospace;
178
+ font-size: clamp(52px, 10vw, 100px);
179
+ font-weight: 900;
180
+ line-height: 0.9;
181
+ letter-spacing: -2px;
182
+ margin-bottom: 30px;
183
+ opacity: 0;
184
+ animation: fadeUp 0.8s 0.5s forwards;
185
+ }
186
+
187
+ .hero-title .line1 {
188
+ display: block;
189
+ color: var(--text);
190
+ text-shadow: 0 0 60px rgba(255,255,255,0.1);
191
+ }
192
+
193
+ .hero-title .line2 {
194
+ display: block;
195
+ background: linear-gradient(90deg, var(--accent), var(--accent2));
196
+ -webkit-background-clip: text;
197
+ -webkit-text-fill-color: transparent;
198
+ text-shadow: none;
199
+ filter: drop-shadow(0 0 30px rgba(232,160,32,0.6));
200
+ }
201
+
202
+ .hero-sub {
203
+ font-size: 18px;
204
+ color: var(--dim);
205
+ letter-spacing: 1px;
206
+ margin-bottom: 50px;
207
+ max-width: 500px;
208
+ margin-left: auto;
209
+ margin-right: auto;
210
+ opacity: 0;
211
+ animation: fadeUp 0.8s 0.7s forwards;
212
+ }
213
+
214
+ /* Server code badge */
215
+ .server-code-badge {
216
+ display: inline-flex;
217
+ align-items: center;
218
+ gap: 10px;
219
+ background: rgba(232,160,32,0.08);
220
+ border: 1px solid rgba(232,160,32,0.3);
221
+ padding: 10px 22px;
222
+ font-family: 'Orbitron', monospace;
223
+ font-size: 13px;
224
+ letter-spacing: 3px;
225
+ color: var(--accent);
226
+ margin-bottom: 28px;
227
+ clip-path: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
228
+ cursor: pointer;
229
+ transition: all 0.2s;
230
+ opacity: 0;
231
+ animation: fadeUp 0.8s 0.65s forwards;
232
+ user-select: all;
233
+ }
234
+
235
+ .server-code-badge:hover {
236
+ background: rgba(232,160,32,0.15);
237
+ box-shadow: 0 0 20px rgba(232,160,32,0.2);
238
+ }
239
+
240
+ .server-code-badge .code-label {
241
+ font-size: 9px;
242
+ color: var(--dim);
243
+ letter-spacing: 2px;
244
+ }
245
+
246
+ .copy-hint {
247
+ font-size: 9px;
248
+ color: var(--dim);
249
+ letter-spacing: 1px;
250
+ margin-bottom: 20px;
251
+ opacity: 0;
252
+ animation: fadeUp 0.8s 0.68s forwards;
253
+ }
254
+
255
+ .hero-buttons {
256
+ display: flex;
257
+ gap: 16px;
258
+ justify-content: center;
259
+ flex-wrap: wrap;
260
+ opacity: 0;
261
+ animation: fadeUp 0.8s 0.9s forwards;
262
+ }
263
+
264
+ @keyframes fadeUp {
265
+ from { opacity: 0; transform: translateY(20px); }
266
+ to { opacity: 1; transform: translateY(0); }
267
+ }
268
+
269
+ .btn {
270
+ font-family: 'Orbitron', monospace;
271
+ font-size: 12px;
272
+ letter-spacing: 2px;
273
+ text-transform: uppercase;
274
+ padding: 14px 32px;
275
+ border: none;
276
+ cursor: pointer;
277
+ text-decoration: none;
278
+ display: inline-flex;
279
+ align-items: center;
280
+ gap: 10px;
281
+ transition: all 0.3s;
282
+ clip-path: polygon(8px 0%, 100% 0%, calc(100% - 8px) 100%, 0% 100%);
283
+ }
284
+
285
+ .btn-primary {
286
+ background: var(--accent);
287
+ color: var(--bg);
288
+ font-weight: 700;
289
+ }
290
+
291
+ .btn-primary:hover {
292
+ background: #fff;
293
+ box-shadow: 0 0 30px var(--accent), 0 0 60px rgba(232,160,32,0.4);
294
+ transform: translateY(-2px);
295
+ }
296
+
297
+ .btn-discord {
298
+ background: #5865F2;
299
+ color: #fff;
300
+ font-weight: 700;
301
+ }
302
+
303
+ .btn-discord:hover {
304
+ background: #7289da;
305
+ box-shadow: 0 0 30px rgba(88,101,242,0.7);
306
+ transform: translateY(-2px);
307
+ }
308
+
309
+ .btn-outline {
310
+ background: transparent;
311
+ color: var(--accent);
312
+ border: 1px solid rgba(232,160,32,0.4);
313
+ }
314
+
315
+ .btn-outline:hover {
316
+ background: rgba(232,160,32,0.08);
317
+ border-color: var(--accent);
318
+ box-shadow: 0 0 20px rgba(232,160,32,0.2);
319
+ transform: translateY(-2px);
320
+ }
321
+
322
+ .stats-bar {
323
+ position: relative;
324
+ z-index: 1;
325
+ background: rgba(10,10,18,0.8);
326
+ border-top: 1px solid rgba(232,160,32,0.1);
327
+ border-bottom: 1px solid rgba(232,160,32,0.1);
328
+ padding: 30px 0;
329
+ display: flex;
330
+ justify-content: center;
331
+ gap: 80px;
332
+ flex-wrap: wrap;
333
+ }
334
+
335
+ .stat { text-align: center; }
336
+
337
+ .stat-num {
338
+ font-family: 'Orbitron', monospace;
339
+ font-size: 32px;
340
+ font-weight: 900;
341
+ color: var(--accent);
342
+ text-shadow: 0 0 20px var(--accent);
343
+ display: block;
344
+ }
345
+
346
+ .stat-label {
347
+ font-size: 12px;
348
+ letter-spacing: 3px;
349
+ color: var(--dim);
350
+ text-transform: uppercase;
351
+ }
352
+
353
+ .section {
354
+ position: relative;
355
+ z-index: 1;
356
+ padding: 100px 40px;
357
+ max-width: 1200px;
358
+ margin: 0 auto;
359
+ }
360
+
361
+ .section-header {
362
+ text-align: center;
363
+ margin-bottom: 60px;
364
+ }
365
+
366
+ .section-tag {
367
+ font-family: 'Orbitron', monospace;
368
+ font-size: 10px;
369
+ letter-spacing: 5px;
370
+ color: var(--accent3);
371
+ text-transform: uppercase;
372
+ margin-bottom: 12px;
373
+ }
374
+
375
+ .section-title {
376
+ font-family: 'Orbitron', monospace;
377
+ font-size: 36px;
378
+ font-weight: 900;
379
+ letter-spacing: 2px;
380
+ }
381
+
382
+ .section-title span {
383
+ color: var(--accent);
384
+ text-shadow: 0 0 20px var(--accent);
385
+ }
386
+
387
+ .rank-group { margin-bottom: 60px; }
388
+
389
+ .rank-header {
390
+ display: flex;
391
+ align-items: center;
392
+ gap: 16px;
393
+ margin-bottom: 24px;
394
+ padding-bottom: 12px;
395
+ border-bottom: 1px solid rgba(255,255,255,0.05);
396
+ }
397
+
398
+ .rank-badge {
399
+ font-family: 'Orbitron', monospace;
400
+ font-size: 11px;
401
+ letter-spacing: 2px;
402
+ padding: 6px 16px;
403
+ clip-path: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
404
+ font-weight: 700;
405
+ }
406
+
407
+ .rank-owner .rank-badge { background: var(--owner); color: #000; }
408
+ .rank-admin .rank-badge { background: var(--admin); color: #fff; }
409
+ .rank-mod .rank-badge { background: var(--mod); color: #000; }
410
+ .rank-supporter .rank-badge { background: var(--supporter); color: #fff; }
411
+
412
+ .rank-count { font-size: 13px; color: var(--dim); letter-spacing: 1px; }
413
+
414
+ .team-grid {
415
+ display: grid;
416
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
417
+ gap: 16px;
418
+ }
419
+
420
+ .member-card {
421
+ background: rgba(255,255,255,0.02);
422
+ border: 1px solid rgba(255,255,255,0.06);
423
+ padding: 20px;
424
+ transition: all 0.3s;
425
+ clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 16px, 100% 100%, 16px 100%, 0 calc(100% - 16px));
426
+ position: relative;
427
+ }
428
+
429
+ .member-card::before {
430
+ content: '';
431
+ position: absolute;
432
+ top: 0; right: 16px;
433
+ width: 16px; height: 1px;
434
+ background: var(--rank-color, var(--accent));
435
+ transform-origin: right;
436
+ transform: rotate(45deg) translate(8px, 8px);
437
+ transition: all 0.3s;
438
+ }
439
+
440
+ .rank-owner .member-card { --rank-color: var(--owner); }
441
+ .rank-admin .member-card { --rank-color: var(--admin); }
442
+ .rank-mod .member-card { --rank-color: var(--mod); }
443
+ .rank-supporter .member-card { --rank-color: var(--supporter); }
444
+
445
+ .member-card:hover {
446
+ background: rgba(255,255,255,0.05);
447
+ border-color: var(--rank-color, var(--accent));
448
+ box-shadow: 0 0 20px rgba(0,0,0,0.5), inset 0 0 20px rgba(0,0,0,0.2);
449
+ transform: translateY(-3px);
450
+ }
451
+
452
+ .member-avatar {
453
+ width: 48px;
454
+ height: 48px;
455
+ border-radius: 50%;
456
+ background: linear-gradient(135deg, var(--rank-color, var(--accent)), var(--bg2));
457
+ display: flex;
458
+ align-items: center;
459
+ justify-content: center;
460
+ font-family: 'Orbitron', monospace;
461
+ font-size: 18px;
462
+ font-weight: 900;
463
+ color: #000;
464
+ margin-bottom: 12px;
465
+ border: 2px solid var(--rank-color, var(--accent));
466
+ box-shadow: 0 0 12px var(--rank-color, var(--accent));
467
+ }
468
+
469
+ .member-name {
470
+ font-family: 'Orbitron', monospace;
471
+ font-size: 13px;
472
+ font-weight: 700;
473
+ letter-spacing: 1px;
474
+ color: var(--text);
475
+ margin-bottom: 4px;
476
+ }
477
+
478
+ .member-role {
479
+ font-size: 11px;
480
+ letter-spacing: 2px;
481
+ color: var(--dim);
482
+ text-transform: uppercase;
483
+ }
484
+
485
+ footer {
486
+ position: relative;
487
+ z-index: 1;
488
+ background: rgba(5,5,8,0.95);
489
+ border-top: 1px solid rgba(232,160,32,0.1);
490
+ padding: 40px;
491
+ text-align: center;
492
+ }
493
+
494
+ .footer-logo {
495
+ font-family: 'Orbitron', monospace;
496
+ font-size: 20px;
497
+ font-weight: 900;
498
+ color: var(--accent);
499
+ text-shadow: 0 0 20px var(--accent);
500
+ margin-bottom: 12px;
501
+ }
502
+
503
+ .footer-text { font-size: 13px; color: var(--dim); letter-spacing: 1px; }
504
+
505
+ /* LOGIN */
506
+ .login-page {
507
+ display: none;
508
+ position: fixed;
509
+ inset: 0;
510
+ background: var(--bg);
511
+ z-index: 500;
512
+ align-items: center;
513
+ justify-content: center;
514
+ flex-direction: column;
515
+ }
516
+
517
+ .login-page.active { display: flex; }
518
+
519
+ .login-box {
520
+ background: rgba(10,10,20,0.95);
521
+ border: 1px solid rgba(232,160,32,0.25);
522
+ padding: 50px;
523
+ min-width: 380px;
524
+ clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
525
+ box-shadow: 0 0 60px rgba(232,160,32,0.06);
526
+ position: relative;
527
+ }
528
+
529
+ .login-title {
530
+ font-family: 'Orbitron', monospace;
531
+ font-size: 18px;
532
+ font-weight: 900;
533
+ letter-spacing: 3px;
534
+ color: var(--accent);
535
+ text-shadow: 0 0 15px var(--accent);
536
+ margin-bottom: 8px;
537
+ text-align: center;
538
+ }
539
+
540
+ .login-sub {
541
+ font-size: 12px;
542
+ color: var(--dim);
543
+ text-align: center;
544
+ letter-spacing: 2px;
545
+ margin-bottom: 32px;
546
+ text-transform: uppercase;
547
+ }
548
+
549
+ .input-group { margin-bottom: 20px; }
550
+
551
+ .input-group label {
552
+ display: block;
553
+ font-size: 11px;
554
+ letter-spacing: 2px;
555
+ color: var(--dim);
556
+ text-transform: uppercase;
557
+ margin-bottom: 8px;
558
+ }
559
+
560
+ .input-group input {
561
+ width: 100%;
562
+ background: rgba(232,160,32,0.04);
563
+ border: 1px solid rgba(232,160,32,0.15);
564
+ color: var(--text);
565
+ padding: 12px 16px;
566
+ font-family: 'Rajdhani', sans-serif;
567
+ font-size: 16px;
568
+ outline: none;
569
+ transition: border-color 0.3s, box-shadow 0.3s;
570
+ }
571
+
572
+ .input-group input:focus {
573
+ border-color: var(--accent);
574
+ box-shadow: 0 0 15px rgba(232,160,32,0.1);
575
+ }
576
+
577
+ .login-error {
578
+ color: var(--accent2);
579
+ font-size: 12px;
580
+ text-align: center;
581
+ margin-bottom: 12px;
582
+ letter-spacing: 1px;
583
+ min-height: 16px;
584
+ }
585
+
586
+ .btn-login {
587
+ width: 100%;
588
+ background: var(--accent);
589
+ color: var(--bg);
590
+ border: none;
591
+ padding: 14px;
592
+ font-family: 'Orbitron', monospace;
593
+ font-size: 12px;
594
+ letter-spacing: 3px;
595
+ font-weight: 700;
596
+ cursor: pointer;
597
+ text-transform: uppercase;
598
+ transition: all 0.3s;
599
+ clip-path: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
600
+ }
601
+
602
+ .btn-login:hover { background: #fff; box-shadow: 0 0 30px var(--accent); }
603
+
604
+ .login-back {
605
+ margin-top: 16px;
606
+ text-align: center;
607
+ font-size: 12px;
608
+ color: var(--dim);
609
+ cursor: pointer;
610
+ letter-spacing: 1px;
611
+ transition: color 0.2s;
612
+ }
613
+
614
+ .login-back:hover { color: var(--accent); }
615
+
616
+ /* ADMIN PANEL */
617
+ .admin-panel {
618
+ display: none;
619
+ position: fixed;
620
+ inset: 0;
621
+ background: var(--bg);
622
+ z-index: 500;
623
+ overflow-y: auto;
624
+ padding: 40px;
625
+ }
626
+
627
+ .admin-panel.active { display: block; }
628
+
629
+ .admin-header {
630
+ display: flex;
631
+ align-items: center;
632
+ justify-content: space-between;
633
+ margin-bottom: 40px;
634
+ padding-bottom: 20px;
635
+ border-bottom: 1px solid rgba(232,160,32,0.15);
636
+ flex-wrap: wrap;
637
+ gap: 12px;
638
+ }
639
+
640
+ .admin-title {
641
+ font-family: 'Orbitron', monospace;
642
+ font-size: 20px;
643
+ font-weight: 900;
644
+ color: var(--accent);
645
+ text-shadow: 0 0 15px var(--accent);
646
+ letter-spacing: 3px;
647
+ }
648
+
649
+ .admin-section { margin-bottom: 40px; }
650
+
651
+ .admin-section-title {
652
+ font-family: 'Orbitron', monospace;
653
+ font-size: 13px;
654
+ font-weight: 700;
655
+ letter-spacing: 2px;
656
+ margin-bottom: 16px;
657
+ padding: 8px 16px;
658
+ background: rgba(232,160,32,0.06);
659
+ border-left: 3px solid var(--accent);
660
+ color: var(--accent);
661
+ text-transform: uppercase;
662
+ }
663
+
664
+ .member-list-admin {
665
+ display: flex;
666
+ flex-direction: column;
667
+ gap: 8px;
668
+ margin-bottom: 16px;
669
+ max-height: 240px;
670
+ overflow-y: auto;
671
+ padding-right: 4px;
672
+ }
673
+
674
+ .member-list-admin::-webkit-scrollbar { width: 4px; }
675
+ .member-list-admin::-webkit-scrollbar-track { background: rgba(255,255,255,0.02); }
676
+ .member-list-admin::-webkit-scrollbar-thumb { background: rgba(232,160,32,0.3); }
677
+
678
+ .admin-member-item {
679
+ display: flex;
680
+ align-items: center;
681
+ justify-content: space-between;
682
+ padding: 10px 14px;
683
+ background: rgba(255,255,255,0.02);
684
+ border: 1px solid rgba(255,255,255,0.06);
685
+ gap: 12px;
686
+ }
687
+
688
+ .admin-member-name {
689
+ flex: 1;
690
+ font-family: 'Orbitron', monospace;
691
+ font-size: 13px;
692
+ color: var(--text);
693
+ }
694
+
695
+ .btn-remove {
696
+ background: rgba(255,0,60,0.15);
697
+ border: 1px solid rgba(255,0,60,0.3);
698
+ color: #ff003c;
699
+ padding: 6px 14px;
700
+ font-family: 'Orbitron', monospace;
701
+ font-size: 10px;
702
+ letter-spacing: 1px;
703
+ cursor: pointer;
704
+ transition: all 0.2s;
705
+ }
706
+
707
+ .btn-remove:hover {
708
+ background: rgba(255,0,60,0.3);
709
+ box-shadow: 0 0 10px rgba(255,0,60,0.3);
710
+ }
711
+
712
+ .add-member-row { display: flex; gap: 12px; }
713
+
714
+ .add-member-row input {
715
+ flex: 1;
716
+ background: rgba(232,160,32,0.04);
717
+ border: 1px solid rgba(232,160,32,0.15);
718
+ color: var(--text);
719
+ padding: 10px 14px;
720
+ font-family: 'Rajdhani', sans-serif;
721
+ font-size: 15px;
722
+ outline: none;
723
+ }
724
+
725
+ .add-member-row input:focus { border-color: var(--accent); }
726
+
727
+ .btn-add {
728
+ background: var(--accent);
729
+ color: var(--bg);
730
+ border: none;
731
+ padding: 10px 20px;
732
+ font-family: 'Orbitron', monospace;
733
+ font-size: 11px;
734
+ letter-spacing: 1px;
735
+ cursor: pointer;
736
+ font-weight: 700;
737
+ transition: all 0.2s;
738
+ clip-path: polygon(4px 0%, 100% 0%, calc(100% - 4px) 100%, 0% 100%);
739
+ }
740
+
741
+ .btn-add:hover { background: #fff; box-shadow: 0 0 15px var(--accent); }
742
+
743
+ /* Server code & link admin */
744
+ .admin-text-row {
745
+ display: flex;
746
+ gap: 12px;
747
+ align-items: center;
748
+ margin-bottom: 16px;
749
+ }
750
+
751
+ .admin-text-row input {
752
+ flex: 1;
753
+ background: rgba(232,160,32,0.04);
754
+ border: 1px solid rgba(232,160,32,0.2);
755
+ color: var(--text);
756
+ padding: 10px 14px;
757
+ font-family: 'Rajdhani', sans-serif;
758
+ font-size: 15px;
759
+ outline: none;
760
+ }
761
+
762
+ .admin-text-row input:focus { border-color: var(--accent); }
763
+
764
+ /* BG image admin */
765
+ .admin-bg-row {
766
+ display: flex;
767
+ gap: 12px;
768
+ align-items: center;
769
+ flex-wrap: wrap;
770
+ }
771
+
772
+ .admin-bg-row input {
773
+ flex: 1;
774
+ min-width: 200px;
775
+ background: rgba(232,160,32,0.04);
776
+ border: 1px solid rgba(232,160,32,0.2);
777
+ color: var(--text);
778
+ padding: 10px 14px;
779
+ font-family: 'Rajdhani', sans-serif;
780
+ font-size: 14px;
781
+ outline: none;
782
+ }
783
+
784
+ .admin-bg-row input:focus { border-color: var(--accent); }
785
+
786
+ .admin-bg-preview {
787
+ width: 80px;
788
+ height: 50px;
789
+ object-fit: cover;
790
+ border: 1px solid rgba(232,160,32,0.3);
791
+ display: none;
792
+ }
793
+
794
+ .particles {
795
+ position: absolute;
796
+ inset: 0;
797
+ overflow: hidden;
798
+ pointer-events: none;
799
+ }
800
+
801
+ .particle {
802
+ position: absolute;
803
+ width: 2px;
804
+ height: 2px;
805
+ background: var(--accent);
806
+ border-radius: 50%;
807
+ animation: float linear infinite;
808
+ opacity: 0;
809
+ }
810
+
811
+ @keyframes float {
812
+ 0% { transform: translateY(100vh) translateX(0); opacity: 0; }
813
+ 10% { opacity: 0.6; }
814
+ 90% { opacity: 0.6; }
815
+ 100% { transform: translateY(-20px) translateX(var(--drift)); opacity: 0; }
816
+ }
817
+
818
+ .divider {
819
+ position: relative;
820
+ z-index: 1;
821
+ height: 1px;
822
+ background: linear-gradient(90deg, transparent, rgba(232,160,32,0.3), transparent);
823
+ }
824
+
825
+ .partner-section {
826
+ position: relative;
827
+ z-index: 1;
828
+ padding: 100px 40px;
829
+ max-width: 1200px;
830
+ margin: 0 auto;
831
+ }
832
+
833
+ .partner-grid {
834
+ display: grid;
835
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
836
+ gap: 20px;
837
+ }
838
+
839
+ .partner-card {
840
+ background: rgba(255,255,255,0.02);
841
+ border: 1px solid rgba(255,255,255,0.08);
842
+ padding: 32px 28px;
843
+ transition: all 0.3s;
844
+ clip-path: polygon(0 0, calc(100% - 20px) 0, 100% 20px, 100% 100%, 20px 100%, 0 calc(100% - 20px));
845
+ text-decoration: none;
846
+ display: block;
847
+ position: relative;
848
+ overflow: hidden;
849
+ }
850
+
851
+ .partner-card::before {
852
+ content: '';
853
+ position: absolute;
854
+ inset: 0;
855
+ background: linear-gradient(135deg, rgba(232,160,32,0.04) 0%, transparent 60%);
856
+ opacity: 0;
857
+ transition: opacity 0.3s;
858
+ }
859
+
860
+ .partner-card:hover::before { opacity: 1; }
861
+
862
+ .partner-card:hover {
863
+ border-color: rgba(232,160,32,0.4);
864
+ box-shadow: 0 0 30px rgba(232,160,32,0.06), 0 8px 40px rgba(0,0,0,0.4);
865
+ transform: translateY(-4px);
866
+ }
867
+
868
+ .partner-icon { font-size: 32px; margin-bottom: 14px; display: block; }
869
+
870
+ .partner-name {
871
+ font-family: 'Orbitron', monospace;
872
+ font-size: 14px;
873
+ font-weight: 700;
874
+ letter-spacing: 2px;
875
+ color: var(--accent);
876
+ margin-bottom: 8px;
877
+ text-shadow: 0 0 10px rgba(232,160,32,0.4);
878
+ }
879
+
880
+ .partner-desc { font-size: 14px; color: var(--dim); line-height: 1.5; margin-bottom: 20px; }
881
+
882
+ .partner-btn {
883
+ display: inline-flex;
884
+ align-items: center;
885
+ gap: 8px;
886
+ font-family: 'Orbitron', monospace;
887
+ font-size: 10px;
888
+ letter-spacing: 2px;
889
+ color: var(--accent);
890
+ border: 1px solid rgba(232,160,32,0.3);
891
+ padding: 8px 18px;
892
+ clip-path: polygon(4px 0%, 100% 0%, calc(100% - 4px) 100%, 0% 100%);
893
+ transition: all 0.3s;
894
+ background: transparent;
895
+ text-transform: uppercase;
896
+ }
897
+
898
+ .partner-card:hover .partner-btn {
899
+ background: rgba(232,160,32,0.1);
900
+ border-color: var(--accent);
901
+ box-shadow: 0 0 15px rgba(232,160,32,0.2);
902
+ }
903
+
904
+ .partner-btn svg { transition: transform 0.3s; }
905
+ .partner-card:hover .partner-btn svg { transform: translateX(3px); }
906
+
907
+ .saved-notice {
908
+ position: fixed;
909
+ bottom: 30px;
910
+ right: 30px;
911
+ background: rgba(232,160,32,0.1);
912
+ border: 1px solid var(--accent);
913
+ color: var(--accent);
914
+ padding: 12px 24px;
915
+ font-family: 'Orbitron', monospace;
916
+ font-size: 11px;
917
+ letter-spacing: 2px;
918
+ z-index: 1000;
919
+ opacity: 0;
920
+ transform: translateY(10px);
921
+ transition: all 0.3s;
922
+ clip-path: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
923
+ }
924
+ .saved-notice.show { opacity: 1; transform: translateY(0); }
925
+
926
+ .copy-toast {
927
+ position: fixed;
928
+ bottom: 70px;
929
+ left: 50%;
930
+ transform: translateX(-50%) translateY(10px);
931
+ background: rgba(232,160,32,0.15);
932
+ border: 1px solid var(--accent);
933
+ color: var(--accent);
934
+ padding: 10px 22px;
935
+ font-family: 'Orbitron', monospace;
936
+ font-size: 11px;
937
+ letter-spacing: 2px;
938
+ z-index: 1000;
939
+ opacity: 0;
940
+ transition: all 0.3s;
941
+ clip-path: polygon(6px 0%, 100% 0%, calc(100% - 6px) 100%, 0% 100%);
942
+ pointer-events: none;
943
+ }
944
+ .copy-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
945
+
946
+ @media (max-width: 600px) {
947
+ nav { padding: 0 20px; }
948
+ .nav-links { gap: 16px; }
949
+ .section { padding: 60px 20px; }
950
+ .stats-bar { gap: 40px; }
951
+ .login-box { min-width: unset; width: 90vw; padding: 36px 28px; }
952
+ .add-member-row { flex-direction: column; }
953
+ .admin-panel { padding: 20px; }
954
+ .admin-text-row { flex-direction: column; }
955
+ }
956
+ </style>
957
+ </head>
958
+ <body>
959
+
960
+ <!-- Fixed background image layer -->
961
+ <div id="heroBg"></div>
962
+
963
+ <!-- NAV -->
964
+ <nav>
965
+ <a href="#" class="logo" onclick="showMain()">GNRP<span>.</span></a>
966
+ <ul class="nav-links">
967
+ <li><a href="#" onclick="showMain(); scrollToTeam()">Team</a></li>
968
+ <li><a href="#" onclick="scrollToPartner()">Partner</a></li>
969
+ <li><a href="#" id="discordNavLink" target="_blank">Discord</a></li>
970
+ <li><a href="#" onclick="event.preventDefault(); showLogin()">Admin</a></li>
971
+ </ul>
972
+ </nav>
973
+
974
+ <!-- MAIN PAGE -->
975
+ <div id="mainPage">
976
+ <section class="hero">
977
+ <div class="particles" id="particles"></div>
978
+ <div class="hero-glow"></div>
979
+ <div class="hero-glow2"></div>
980
+ <div class="hero-content">
981
+ <div class="hero-tag">// Willkommen beim</div>
982
+ <h1 class="hero-title">
983
+ <span class="line1">German RP</span>
984
+ <span class="line2">GNRP</span>
985
+ </h1>
986
+ <p class="hero-sub">Kompetitiv. Präzise. Unaufhaltsam.</p>
987
+
988
+ <!-- Server Code Badge -->
989
+ <div class="server-code-badge" onclick="copyServerCode()" title="Klicken zum Kopieren">
990
+ <span class="code-label">SERVER CODE</span>
991
+ <span id="serverCodeDisplay">—</span>
992
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="4" width="8" height="8" rx="1"/><path d="M4 4V3a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1h-1"/></svg>
993
+ </div>
994
+ <div class="copy-hint">↑ Klicken zum Kopieren</div>
995
+
996
+ <div class="hero-buttons">
997
+ <a href="#" id="discordHeroBtn" target="_blank" class="btn btn-discord">
998
+ <svg width="18" height="14" viewBox="0 0 18 14" fill="currentColor"><path d="M15.25 1.5a14.89 14.89 0 00-3.68-1.14.05.05 0 00-.06.03 10.36 10.36 0 00-.46.94 13.77 13.77 0 00-4.13 0A9.8 9.8 0 006.68.39a.06.06 0 00-.06-.03A14.86 14.86 0 002.94 1.5a.06.06 0 00-.02.02C.43 5.08-.26 8.55.08 11.97c0 .02.01.03.03.04a14.96 14.96 0 004.5 2.27.06.06 0 00.06-.02 10.66 10.66 0 00.92-1.5.06.06 0 00-.03-.08 9.86 9.86 0 01-1.41-.67.06.06 0 010-.1l.28-.22a.06.06 0 01.06-.01c2.96 1.35 6.16 1.35 9.08 0a.06.06 0 01.06.01l.28.22a.06.06 0 010 .1c-.45.26-.92.49-1.41.67a.06.06 0 00-.03.08c.27.52.58 1.02.92 1.5a.06.06 0 00.06.02 14.91 14.91 0 004.51-2.27.06.06 0 00.03-.04c.41-4.01-.69-7.49-2.9-10.45a.05.05 0 00-.02-.02zM6.01 9.83c-.89 0-1.62-.82-1.62-1.82 0-1 .72-1.82 1.62-1.82.9 0 1.63.83 1.62 1.82 0 1-.72 1.82-1.62 1.82zm5.99 0c-.89 0-1.62-.82-1.62-1.82 0-1 .72-1.82 1.62-1.82.9 0 1.63.83 1.62 1.82 0 1-.71 1.82-1.62 1.82z"/></svg>
999
+ Discord beitreten
1000
+ </a>
1001
+ <a href="#team" class="btn btn-outline" onclick="scrollToTeam()">Team ansehen</a>
1002
+ </div>
1003
+ </div>
1004
+ </section>
1005
+
1006
+ <div class="divider"></div>
1007
+
1008
+ <div class="stats-bar">
1009
+ <div class="stat">
1010
+ <span class="stat-num" id="statMembers">—</span>
1011
+ <span class="stat-label">Teammitglieder</span>
1012
+ </div>
1013
+ <div class="stat">
1014
+ <span class="stat-num">24/7</span>
1015
+ <span class="stat-label">Online</span>
1016
+ </div>
1017
+ <div class="stat">
1018
+ <span class="stat-num">4</span>
1019
+ <span class="stat-label">Ränge</span>
1020
+ </div>
1021
+ <div class="stat">
1022
+ <span class="stat-num">1+</span>
1023
+ <span class="stat-label">Partner</span>
1024
+ </div>
1025
+ </div>
1026
+
1027
+ <div class="divider"></div>
1028
+
1029
+ <section class="section" id="team">
1030
+ <div class="section-header">
1031
+ <div class="section-tag">// Unser</div>
1032
+ <h2 class="section-title">TEAM<span>.</span></h2>
1033
+ </div>
1034
+ <div id="teamContainer"></div>
1035
+ </section>
1036
+
1037
+ <div class="divider"></div>
1038
+
1039
+ <section class="partner-section" id="partner">
1040
+ <div class="section-header">
1041
+ <div class="section-tag">// Unsere</div>
1042
+ <h2 class="section-title">PARTNER<span>.</span></h2>
1043
+ </div>
1044
+ <div class="partner-grid">
1045
+ <a class="partner-card" href="https://noah33565-noahsapp.static.hf.space/" target="_blank" rel="noopener">
1046
+ <span class="partner-icon">🚀</span>
1047
+ <div class="partner-name">Noah's App</div>
1048
+ <div class="partner-desc">Offizieller Partner — Besuche Noah's App und entdecke spannende Projekte.</div>
1049
+ <span class="partner-btn">
1050
+ Besuchen
1051
+ <svg width="14" height="14" viewBox="0 0 14 14" fill="none" stroke="currentColor" stroke-width="2"><path d="M2 7h10M7 2l5 5-5 5"/></svg>
1052
+ </span>
1053
+ </a>
1054
+ </div>
1055
+ </section>
1056
+
1057
+ <div class="divider"></div>
1058
+
1059
+ <footer>
1060
+ <div class="footer-logo">German RP <span style="color:var(--accent2)">GNRP</span></div>
1061
+ <p class="footer-text">© 2025 German RP (GNRP) — Alle Rechte vorbehalten</p>
1062
+ </footer>
1063
+ </div>
1064
+
1065
+ <!-- LOGIN PAGE -->
1066
+ <div class="login-page" id="loginPage">
1067
+ <div class="login-box">
1068
+ <div class="login-title">// ADMIN</div>
1069
+ <div class="login-sub">Team-Verwaltung</div>
1070
+ <div class="input-group">
1071
+ <label>Passwort</label>
1072
+ <input type="password" id="passwordInput" placeholder="••••••••" onkeydown="if(event.key==='Enter')doLogin()">
1073
+ </div>
1074
+ <div class="login-error" id="loginError"></div>
1075
+ <button class="btn-login" onclick="doLogin()">Einloggen</button>
1076
+ <div class="login-back" onclick="showMain()">← Zurück zur Startseite</div>
1077
+ </div>
1078
+ </div>
1079
+
1080
+ <!-- ADMIN PANEL -->
1081
+ <div class="admin-panel" id="adminPanel">
1082
+ <div class="admin-header">
1083
+ <div class="admin-title">// GNRP VERWALTUNG</div>
1084
+ <button style="font-family:'Orbitron',monospace;font-size:11px;letter-spacing:2px;padding:10px 20px;border:1px solid rgba(232,160,32,0.4);background:transparent;color:var(--accent);cursor:pointer;" onclick="logout()">Logout</button>
1085
+ </div>
1086
+
1087
+ <!-- Server Code & Discord Link -->
1088
+ <div class="admin-section">
1089
+ <div class="admin-section-title">Server-Einstellungen</div>
1090
+
1091
+ <div style="margin-bottom:12px;font-size:11px;letter-spacing:1px;color:var(--dim);text-transform:uppercase;">Server Code</div>
1092
+ <div class="admin-text-row">
1093
+ <input type="text" id="adminServerCode" placeholder="z.B. GNRP-2024">
1094
+ <button class="btn-add" onclick="saveServerCode()">Speichern</button>
1095
+ </div>
1096
+
1097
+ <div style="margin-bottom:12px;margin-top:20px;font-size:11px;letter-spacing:1px;color:var(--dim);text-transform:uppercase;">Discord-Link</div>
1098
+ <div class="admin-text-row">
1099
+ <input type="text" id="adminDiscordLink" placeholder="https://discord.gg/...">
1100
+ <button class="btn-add" onclick="saveDiscordLink()">Speichern</button>
1101
+ </div>
1102
+
1103
+ <div style="margin-bottom:12px;margin-top:20px;font-size:11px;letter-spacing:1px;color:var(--dim);text-transform:uppercase;">Hintergrundbild (URL)</div>
1104
+ <div class="admin-bg-row">
1105
+ <input type="text" id="adminBgUrl" placeholder="https://example.com/bild.jpg">
1106
+ <button class="btn-add" onclick="saveBgUrl()">Anwenden</button>
1107
+ <button class="btn-remove" onclick="removeBgUrl()">Entfernen</button>
1108
+ </div>
1109
+ <div style="margin-top:10px;font-size:11px;color:var(--dim);">Aktuell: <span id="currentBgDisplay" style="color:var(--accent);">—</span></div>
1110
+ </div>
1111
+
1112
+ <!-- Team Ranks -->
1113
+ <div id="adminRanks"></div>
1114
+ </div>
1115
+
1116
+ <div class="saved-notice" id="savedNotice">✓ GESPEICHERT</div>
1117
+ <div class="copy-toast" id="copyToast">✓ SERVER CODE KOPIERT</div>
1118
+
1119
+ <script>
1120
+ const ADMIN_PW = 'okcool1234_';
1121
+
1122
+ const defaultTeam = {
1123
+ Owner: ["ShadowX"],
1124
+ Admin: ["Nova", "Blaze"],
1125
+ Mod: ["Frost", "Viper"],
1126
+ Supporter: ["Echo", "Drift", "Zara"]
1127
+ };
1128
+
1129
+ const rankColors = {
1130
+ Owner: "#ffd700",
1131
+ Admin: "#ff6a00",
1132
+ Mod: "#e8a020",
1133
+ Supporter: "#c47d0a"
1134
+ };
1135
+
1136
+ const rankClasses = {
1137
+ Owner: "rank-owner",
1138
+ Admin: "rank-admin",
1139
+ Mod: "rank-mod",
1140
+ Supporter: "rank-supporter"
1141
+ };
1142
+
1143
+ function loadTeam() {
1144
+ const stored = localStorage.getItem('gnrp_team');
1145
+ if (stored) return JSON.parse(stored);
1146
+ return JSON.parse(JSON.stringify(defaultTeam));
1147
+ }
1148
+
1149
+ function saveTeam(team) {
1150
+ localStorage.setItem('gnrp_team', JSON.stringify(team));
1151
+ }
1152
+
1153
+ function loadSettings() {
1154
+ const stored = localStorage.getItem('gnrp_settings');
1155
+ if (stored) return JSON.parse(stored);
1156
+ return {
1157
+ serverCode: 'GNRP-2025',
1158
+ discordLink: 'https://discord.gg/85953svv',
1159
+ bgUrl: ''
1160
+ };
1161
+ }
1162
+
1163
+ function saveSettings(settings) {
1164
+ localStorage.setItem('gnrp_settings', JSON.stringify(settings));
1165
+ }
1166
+
1167
+ let team = loadTeam();
1168
+ let settings = loadSettings();
1169
+
1170
+ function applySettings() {
1171
+ // Server code
1172
+ const codeEl = document.getElementById('serverCodeDisplay');
1173
+ if (codeEl) codeEl.textContent = settings.serverCode || '—';
1174
+
1175
+ // Discord links
1176
+ const heroBtn = document.getElementById('discordHeroBtn');
1177
+ const navLink = document.getElementById('discordNavLink');
1178
+ const link = settings.discordLink || 'https://discord.gg/85953svv';
1179
+ if (heroBtn) heroBtn.href = link;
1180
+ if (navLink) navLink.href = link;
1181
+
1182
+ // Background
1183
+ const bg = document.getElementById('heroBg');
1184
+ if (bg) {
1185
+ if (settings.bgUrl) {
1186
+ bg.style.backgroundImage = `url('${settings.bgUrl}')`;
1187
+ } else {
1188
+ bg.style.backgroundImage = 'none';
1189
+ }
1190
+ }
1191
+ }
1192
+
1193
+ function copyServerCode() {
1194
+ const code = settings.serverCode || '';
1195
+ if (!code) return;
1196
+ navigator.clipboard.writeText(code).catch(() => {
1197
+ const ta = document.createElement('textarea');
1198
+ ta.value = code;
1199
+ document.body.appendChild(ta);
1200
+ ta.select();
1201
+ document.execCommand('copy');
1202
+ document.body.removeChild(ta);
1203
+ });
1204
+ const toast = document.getElementById('copyToast');
1205
+ toast.classList.add('show');
1206
+ setTimeout(() => toast.classList.remove('show'), 2000);
1207
+ }
1208
+
1209
+ function renderTeam() {
1210
+ const container = document.getElementById('teamContainer');
1211
+ container.innerHTML = '';
1212
+ let total = 0;
1213
+
1214
+ for (const [rank, members] of Object.entries(team)) {
1215
+ total += members.length;
1216
+ const group = document.createElement('div');
1217
+ group.className = `rank-group ${rankClasses[rank]}`;
1218
+ group.innerHTML = `
1219
+ <div class="rank-header">
1220
+ <span class="rank-badge">${rank.toUpperCase()}</span>
1221
+ <span class="rank-count">${members.length} Mitglied${members.length !== 1 ? 'er' : ''}</span>
1222
+ </div>
1223
+ <div class="team-grid">
1224
+ ${members.map(m => `
1225
+ <div class="member-card">
1226
+ <div class="member-avatar">${m[0].toUpperCase()}</div>
1227
+ <div class="member-name">${m}</div>
1228
+ <div class="member-role">${rank}</div>
1229
+ </div>
1230
+ `).join('')}
1231
+ </div>
1232
+ `;
1233
+ container.appendChild(group);
1234
+ }
1235
+ document.getElementById('statMembers').textContent = total;
1236
+ }
1237
+
1238
+ function renderAdmin() {
1239
+ // Populate settings fields
1240
+ document.getElementById('adminServerCode').value = settings.serverCode || '';
1241
+ document.getElementById('adminDiscordLink').value = settings.discordLink || '';
1242
+ document.getElementById('adminBgUrl').value = settings.bgUrl || '';
1243
+ document.getElementById('currentBgDisplay').textContent = settings.bgUrl || '(kein Bild)';
1244
+
1245
+ const container = document.getElementById('adminRanks');
1246
+ container.innerHTML = '';
1247
+
1248
+ for (const [rank, members] of Object.entries(team)) {
1249
+ const sec = document.createElement('div');
1250
+ sec.className = 'admin-section';
1251
+ sec.innerHTML = `
1252
+ <div class="admin-section-title" style="border-left-color: ${rankColors[rank]}">${rank}</div>
1253
+ <div class="member-list-admin" id="list_${rank}">
1254
+ ${members.map((m, i) => `
1255
+ <div class="admin-member-item">
1256
+ <span class="admin-member-name">${m}</span>
1257
+ <button class="btn-remove" onclick="removeMember('${rank}', ${i})">Entfernen</button>
1258
+ </div>
1259
+ `).join('')}
1260
+ </div>
1261
+ <div class="add-member-row">
1262
+ <input type="text" id="input_${rank}" placeholder="${rank} hinzufügen..." onkeydown="if(event.key==='Enter')addMember('${rank}')">
1263
+ <button class="btn-add" onclick="addMember('${rank}')">+ Hinzufügen</button>
1264
+ </div>
1265
+ `;
1266
+ container.appendChild(sec);
1267
+ }
1268
+ }
1269
+
1270
+ function saveServerCode() {
1271
+ const val = document.getElementById('adminServerCode').value.trim();
1272
+ if (!val) return;
1273
+ settings.serverCode = val;
1274
+ saveSettings(settings);
1275
+ applySettings();
1276
+ showSaved();
1277
+ }
1278
+
1279
+ function saveDiscordLink() {
1280
+ const val = document.getElementById('adminDiscordLink').value.trim();
1281
+ if (!val) return;
1282
+ settings.discordLink = val;
1283
+ saveSettings(settings);
1284
+ applySettings();
1285
+ showSaved();
1286
+ }
1287
+
1288
+ function saveBgUrl() {
1289
+ const val = document.getElementById('adminBgUrl').value.trim();
1290
+ settings.bgUrl = val;
1291
+ saveSettings(settings);
1292
+ applySettings();
1293
+ document.getElementById('currentBgDisplay').textContent = val || '(kein Bild)';
1294
+ showSaved();
1295
+ }
1296
+
1297
+ function removeBgUrl() {
1298
+ settings.bgUrl = '';
1299
+ document.getElementById('adminBgUrl').value = '';
1300
+ saveSettings(settings);
1301
+ applySettings();
1302
+ document.getElementById('currentBgDisplay').textContent = '(kein Bild)';
1303
+ showSaved();
1304
+ }
1305
+
1306
+ function removeMember(rank, idx) {
1307
+ team[rank].splice(idx, 1);
1308
+ saveTeam(team);
1309
+ renderAdmin();
1310
+ renderTeam();
1311
+ showSaved();
1312
+ }
1313
+
1314
+ function addMember(rank) {
1315
+ const input = document.getElementById(`input_${rank}`);
1316
+ const name = input.value.trim();
1317
+ if (!name) return;
1318
+ team[rank].push(name);
1319
+ input.value = '';
1320
+ saveTeam(team);
1321
+ renderAdmin();
1322
+ renderTeam();
1323
+ showSaved();
1324
+ }
1325
+
1326
+ function showSaved() {
1327
+ const n = document.getElementById('savedNotice');
1328
+ n.classList.add('show');
1329
+ setTimeout(() => n.classList.remove('show'), 2000);
1330
+ }
1331
+
1332
+ function showLogin() {
1333
+ document.getElementById('mainPage').style.display = 'none';
1334
+ document.getElementById('loginPage').classList.add('active');
1335
+ document.getElementById('adminPanel').classList.remove('active');
1336
+ document.getElementById('loginError').textContent = '';
1337
+ document.getElementById('passwordInput').value = '';
1338
+ setTimeout(() => document.getElementById('passwordInput').focus(), 100);
1339
+ }
1340
+
1341
+ function showMain() {
1342
+ document.getElementById('mainPage').style.display = 'block';
1343
+ document.getElementById('loginPage').classList.remove('active');
1344
+ document.getElementById('adminPanel').classList.remove('active');
1345
+ }
1346
+
1347
+ function showAdmin() {
1348
+ document.getElementById('mainPage').style.display = 'none';
1349
+ document.getElementById('loginPage').classList.remove('active');
1350
+ document.getElementById('adminPanel').classList.add('active');
1351
+ renderAdmin();
1352
+ }
1353
+
1354
+ function doLogin() {
1355
+ const pw = document.getElementById('passwordInput').value;
1356
+ const err = document.getElementById('loginError');
1357
+ if (pw === ADMIN_PW) {
1358
+ err.textContent = '';
1359
+ showAdmin();
1360
+ } else {
1361
+ err.textContent = 'Falsches Passwort';
1362
+ document.getElementById('passwordInput').value = '';
1363
+ document.getElementById('passwordInput').focus();
1364
+ }
1365
+ }
1366
+
1367
+ function logout() { showMain(); }
1368
+
1369
+ function scrollToPartner() {
1370
+ showMain();
1371
+ setTimeout(() => {
1372
+ const el = document.getElementById('partner');
1373
+ if (el) el.scrollIntoView({ behavior: 'smooth' });
1374
+ }, 150);
1375
+ }
1376
+
1377
+ function scrollToTeam() {
1378
+ setTimeout(() => {
1379
+ const el = document.getElementById('team');
1380
+ if (el) el.scrollIntoView({ behavior: 'smooth' });
1381
+ }, 100);
1382
+ }
1383
+
1384
+ function spawnParticles() {
1385
+ const container = document.getElementById('particles');
1386
+ for (let i = 0; i < 30; i++) {
1387
+ const p = document.createElement('div');
1388
+ p.className = 'particle';
1389
+ p.style.left = Math.random() * 100 + '%';
1390
+ p.style.animationDuration = (8 + Math.random() * 12) + 's';
1391
+ p.style.animationDelay = (-Math.random() * 20) + 's';
1392
+ p.style.setProperty('--drift', (Math.random() * 100 - 50) + 'px');
1393
+ p.style.width = (1 + Math.random() * 2) + 'px';
1394
+ p.style.height = p.style.width;
1395
+ if (Math.random() > 0.6) p.style.background = '#ff6a00';
1396
+ if (Math.random() > 0.8) p.style.background = '#ffd700';
1397
+ container.appendChild(p);
1398
+ }
1399
+ }
1400
+
1401
+ // Init
1402
+ renderTeam();
1403
+ applySettings();
1404
+ spawnParticles();
1405
+ </script>
1406
+ </body>
1407
  </html>