api-ix commited on
Commit
3e6f127
·
verified ·
1 Parent(s): 74de54d

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +397 -389
index.html CHANGED
@@ -3,496 +3,504 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>ARCANE | Backend Architect</title>
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
- <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100;400;700&family=Noto+Serif+JP:wght@200;600;900&display=swap" rel="stylesheet">
10
 
11
  <style>
12
- /* --- RESET & VARS --- */
13
  :root {
14
- --bg-color: #0a0a0a;
15
- --text-main: #e0e0e0;
16
- --text-muted: #888;
17
- --accent-red: #cf0000;
 
 
 
18
  --font-code: 'JetBrains Mono', monospace;
19
- --font-serif: 'Noto Serif JP', serif;
20
- --nav-height: 70px;
21
  }
22
 
23
- * { margin: 0; padding: 0; box-sizing: border-box; }
24
-
25
- html {
26
- /* 1. ENABLE SMOOTH SCROLLING GLOBALLY */
27
- scroll-behavior: smooth;
28
- }
29
 
30
  body {
31
- background-color: var(--bg-color);
32
- color: var(--text-main);
33
- font-family: var(--font-code);
34
  overflow-x: hidden;
35
- line-height: 1.6;
36
- }
37
-
38
- /* --- ANIMATIONS --- */
39
- @keyframes spin {
40
- 0% { transform: rotate(0deg); }
41
- 100% { transform: rotate(360deg); }
42
- }
43
-
44
- @keyframes glitch {
45
- 0% { transform: translate(0); }
46
- 20% { transform: translate(-2px, 2px); }
47
- 40% { transform: translate(-2px, -2px); }
48
- 60% { transform: translate(2px, 2px); }
49
- 80% { transform: translate(2px, -2px); }
50
- 100% { transform: translate(0); }
51
- }
52
-
53
- /* --- UTILITIES --- */
54
- .container {
55
- max-width: 1200px;
56
- margin: 0 auto;
57
- padding: 0 1.5rem;
58
- }
59
-
60
- .japanese-label {
61
- font-family: var(--font-serif);
62
- color: var(--accent-red);
63
- font-size: 0.8rem;
64
- letter-spacing: 0.1rem;
65
- margin-bottom: 0.5rem;
66
- display: block;
67
- text-transform: uppercase;
68
  }
69
 
70
- /* --- BACKGROUND GRID --- */
71
- .grid-bg {
72
  position: fixed;
73
  top: 0; left: 0; width: 100%; height: 100%;
74
- background-image:
75
- linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px),
76
- linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px);
77
- background-size: 40px 40px;
78
- z-index: -1;
79
  pointer-events: none;
 
80
  }
81
-
82
- /* --- NAV --- */
83
- nav {
84
- display: flex;
85
- justify-content: space-between;
86
- align-items: center;
87
- height: var(--nav-height);
88
- padding: 0 1.5rem;
89
  position: fixed;
90
- width: 100%;
91
- top: 0;
92
- z-index: 100;
93
- background: rgba(10, 10, 10, 0.95);
94
- backdrop-filter: blur(10px);
95
- border-bottom: 1px solid rgba(255,255,255,0.05);
96
  }
97
 
98
- .logo {
99
- font-weight: 700;
100
- font-size: 1.2rem;
101
- border: 1px solid var(--text-main);
102
- padding: 4px 10px;
103
- z-index: 101;
104
- transition: 0.3s;
 
105
  }
106
- .logo:hover { background: var(--text-main); color: var(--bg-color); }
107
 
108
- .nav-links { display: flex; gap: 2rem; }
109
- .nav-links a {
110
- color: var(--text-muted);
111
- text-decoration: none;
112
- font-size: 0.85rem;
113
- transition: color 0.3s;
 
 
 
114
  }
115
- .nav-links a:hover { color: var(--accent-red); }
116
 
117
- .menu-toggle {
118
- display: none;
119
- cursor: pointer;
120
- z-index: 101;
121
- font-size: 1.5rem;
122
- color: var(--text-main);
 
 
 
123
  }
124
 
125
- /* --- HERO SECTION --- */
126
- .hero {
127
- min-height: 100vh;
128
- display: flex;
129
- align-items: center;
130
- padding-top: var(--nav-height);
 
131
  }
 
132
 
133
- .hero-content {
134
- display: grid;
135
- grid-template-columns: auto 300px 1fr;
136
- gap: 3rem;
137
- align-items: center;
138
- width: 100%;
139
  }
140
 
141
- .name-vertical {
142
- font-family: var(--font-serif);
143
- font-size: 5rem;
144
- line-height: 1;
145
- writing-mode: vertical-rl;
146
- text-orientation: upright;
147
- color: var(--text-main);
148
- border-right: 1px solid var(--accent-red);
149
- padding-right: 2rem;
150
- letter-spacing: 0.5rem;
151
- white-space: nowrap;
152
- }
153
-
154
- .glitch-effect:hover {
155
- animation: glitch 0.3s cubic-bezier(.25, .46, .45, .94) both infinite;
156
- color: var(--accent-red);
157
  }
158
 
159
- /* --- PROFILE IMAGE --- */
160
- .hero-img-container {
161
  width: 100%;
162
- height: 400px;
 
163
  position: relative;
164
- border: 1px solid #333;
165
- overflow: hidden;
166
- background: #111;
167
- display: flex;
168
- justify-content: center;
169
- align-items: center;
170
  }
171
-
172
- .img-loader {
173
- width: 50px;
174
- height: 50px;
175
- border: 2px solid transparent;
176
- border-top: 2px solid var(--accent-red);
177
- border-radius: 50%;
178
- animation: spin 1s linear infinite;
179
- position: absolute;
180
- z-index: 1;
181
  }
182
-
183
- .hero-img {
184
- width: 100%;
185
- height: 100%;
186
- object-fit: cover;
187
- filter: grayscale(100%) contrast(120%);
188
- transition: filter 0.5s ease, transform 0.5s ease;
189
- opacity: 0;
190
- position: relative;
191
- z-index: 2;
192
  }
193
 
194
- .hero-img.loaded { opacity: 1; }
195
-
196
- .hero-img-container:hover .hero-img {
197
- filter: grayscale(0%) contrast(100%);
198
- transform: scale(1.05);
199
  }
200
-
201
- .hero-img-container::after {
202
- content: '';
203
- position: absolute;
204
- top: 0; left: 0; width: 100%; height: 100%;
205
- border: 1px solid transparent;
206
- background:
207
- linear-gradient(to right, var(--accent-red) 2px, transparent 2px) 0 0,
208
- linear-gradient(to bottom, var(--accent-red) 2px, transparent 2px) 0 0,
209
- linear-gradient(to left, var(--accent-red) 2px, transparent 2px) 100% 100%,
210
- linear-gradient(to top, var(--accent-red) 2px, transparent 2px) 100% 100%;
211
- background-repeat: no-repeat;
212
- background-size: 20px 20px;
213
- pointer-events: none;
214
- z-index: 3;
215
  }
216
 
217
- .hero-text h2 {
218
- font-size: 2.5rem;
219
- font-weight: 100;
 
220
  margin-bottom: 1rem;
221
- line-height: 1.2;
222
  }
223
-
224
- .hero-text p {
225
- color: var(--text-muted);
226
- max-width: 500px;
227
- margin-bottom: 2rem;
228
  font-size: 1rem;
 
 
 
 
229
  }
230
 
231
- .btn {
232
- background: transparent;
233
- border: 1px solid var(--accent-red);
234
- color: var(--accent-red);
235
- padding: 12px 35px;
236
- cursor: pointer;
237
  font-family: var(--font-code);
238
- transition: 0.3s;
239
- text-decoration: none;
240
- display: inline-block;
241
- font-size: 0.9rem;
242
- }
243
-
244
- .btn:hover {
245
- background: var(--accent-red);
246
- color: var(--bg-color);
247
- box-shadow: 0 0 15px var(--accent-red);
248
  }
249
 
250
- /* --- SECTIONS --- */
251
- section, footer {
252
- padding: 5rem 0;
253
- border-bottom: 1px solid rgba(255,255,255,0.05);
254
- /* 2. FIX SCROLL POSITION BEHIND HEADER */
255
- scroll-margin-top: 80px;
 
 
 
256
  }
257
-
258
- .section-title {
259
- font-size: 2rem;
260
- margin-bottom: 3rem;
261
- font-weight: 100;
262
  }
263
 
264
- /* --- SKILLS & PROJECTS --- */
265
- .skills-grid {
266
  display: grid;
267
- grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
268
- gap: 1.5rem;
 
269
  }
270
 
271
- .skill-card {
272
- background: rgba(255,255,255,0.02);
273
- border: 1px solid rgba(255,255,255,0.1);
274
  padding: 1.5rem;
275
- transition: 0.3s;
 
 
276
  }
277
- .skill-card:hover {
278
- border-color: var(--accent-red);
279
- transform: translateY(-5px);
 
280
  }
281
 
282
- .skill-card li { margin-bottom: 0.5rem; font-size: 0.9rem; color: var(--text-muted); }
283
- .skill-card li::before { content: ':: '; color: var(--accent-red); }
 
 
 
 
 
284
 
285
- .project-item {
286
- display: grid;
287
- grid-template-columns: 1fr 1fr;
288
- gap: 3rem;
289
- margin-bottom: 5rem;
290
- align-items: center;
291
  }
 
 
292
 
293
- .project-diagram {
294
- background: #0f0f0f;
295
- border: 1px solid #222;
296
- height: 250px;
 
 
 
 
 
 
 
297
  position: relative;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  display: flex;
299
  justify-content: center;
300
  align-items: center;
301
- transition: 0.3s;
 
 
302
  }
303
- .project-diagram:hover { border-color: var(--accent-red); }
304
-
305
- footer {
306
- padding: 4rem 0 6rem 0;
307
- text-align: center;
308
- border-top: 1px solid var(--accent-red);
309
- margin-top: 2rem;
310
- }
311
- .stamp {
312
- width: 50px; height: 50px;
313
- border: 2px solid var(--accent-red);
314
- border-radius: 50%;
315
- color: var(--accent-red);
316
- display: flex; justify-content: center; align-items: center;
317
- margin: 0 auto 1.5rem auto;
318
- font-family: var(--font-serif);
319
- font-weight: 900;
320
- cursor: pointer;
321
- transition: 0.3s;
322
  }
323
- .stamp:hover { background: var(--accent-red); color: #000; }
324
 
325
- /* --- MOBILE MEDIA QUERIES --- */
 
 
326
  @media (max-width: 900px) {
327
- .hero-content {
328
- grid-template-columns: 1fr;
329
- text-align: center;
330
- gap: 2rem;
331
- }
332
- .hero-img-container {
333
- width: 200px; height: 200px;
334
- margin: 0 auto;
335
- border-radius: 50%;
336
- }
337
- .name-vertical {
338
- writing-mode: horizontal-tb;
339
- border-right: none;
340
- border-bottom: 1px solid var(--accent-red);
341
- padding-bottom: 1rem;
342
- padding-right: 0;
343
- font-size: 3rem;
344
- width: 100%;
345
- }
346
- .menu-toggle { display: block; }
347
- .nav-links {
348
- position: fixed; top: 0; right: -100%; width: 70%; height: 100vh;
349
- background: #111; flex-direction: column; justify-content: center;
350
- align-items: center; gap: 3rem; transition: 0.4s ease;
351
- border-left: 1px solid var(--accent-red);
352
- }
353
- .nav-links.active { right: 0; }
354
- .project-item { grid-template-columns: 1fr; }
355
  }
356
  </style>
357
  </head>
358
  <body>
359
 
360
- <div class="grid-bg"></div>
361
 
362
- <nav>
363
- <div class="logo">ARCANE</div>
364
- <div class="menu-toggle" onclick="toggleMenu()">☰</div>
365
- <div class="nav-links" id="navLinks">
366
- <a href="#about" onclick="toggleMenu()">01. LOGIC</a>
367
- <a href="#skills" onclick="toggleMenu()">02. SYSTEM</a>
368
- <a href="#projects" onclick="toggleMenu()">03. ARCHITECTURE</a>
369
- <a href="#contact" onclick="toggleMenu()">04. CONTACT</a>
370
  </div>
371
- </nav>
372
-
373
- <header class="hero container">
374
- <div class="hero-content">
375
- <h1 class="name-vertical glitch-effect">アーケイン</h1>
376
-
377
- <div class="hero-img-container">
378
- <div class="img-loader" id="imgLoader"></div>
379
- <img src="./profile.jpg" alt="Arcane Profile" class="hero-img" onload="imageLoaded()">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
380
  </div>
381
 
382
- <div class="hero-text">
383
- <span class="japanese-label">BACKEND ARCHITECT</span>
384
- <h2>Logic in the<br>Shadows.</h2>
385
- <p>Specialized in high-load server environments, Node.js scalability, and algorithmic efficiency.</p>
386
- <a href="#contact" class="btn">INITIATE_CONTACT()</a>
387
  </div>
388
- </div>
389
- </header>
390
-
391
- <section id="skills" class="container">
392
- <span class="japanese-label">ARSENAL</span>
393
- <h2 class="section-title">Tech Stack</h2>
394
- <div class="skills-grid">
395
- <div class="skill-card">
396
- <h3>Core Languages</h3>
397
  <ul>
398
- <li>Node.js (Express/NestJS)</li>
399
- <li>Python (FastAPI)</li>
400
- <li>Go (Golang)</li>
401
- <li>Rust (Systems)</li>
402
  </ul>
403
  </div>
404
- <div class="skill-card">
405
- <h3>Data & Storage</h3>
406
  <ul>
407
- <li>PostgreSQL (Tuning)</li>
408
- <li>Redis Cluster</li>
409
- <li>Kafka / RabbitMQ</li>
410
- <li>MongoDB Aggregation</li>
411
  </ul>
412
  </div>
413
- <div class="skill-card">
414
- <h3>Infrastructure</h3>
415
  <ul>
416
- <li>Docker & Kubernetes</li>
417
- <li>AWS (EC2, Lambda)</li>
418
- <li>Terraform / Ansible</li>
419
- <li>Nginx Reverse Proxy</li>
420
  </ul>
421
  </div>
422
  </div>
423
- </section>
424
-
425
- <section id="projects" class="container">
426
- <span class="japanese-label">CASE STUDIES</span>
427
- <h2 class="section-title">Selected Works</h2>
428
-
429
- <div class="project-item">
430
- <div class="project-info">
431
- <h3>KITSUNE | Trading Bot</h3>
432
- <p style="color:var(--text-muted); font-size: 0.95rem; margin-top: 1rem;">
433
- A high-frequency trading algorithm handling 500 req/s.
434
- <br><br>
435
- <span style="color:var(--accent-red)">> Strategy:</span> Database sharding & in-memory caching reduced latency by 90%.
436
- </p>
437
- </div>
438
- <div class="project-diagram">
439
- <div style="width: 10px; height: 10px; background: #fff; border-radius: 50%; position: absolute; left: 20%;"></div>
440
- <div style="width: 60%; height: 1px; background: #333; position: absolute;"></div>
441
- <div style="width: 10px; height: 10px; background: var(--accent-red); border-radius: 50%; position: absolute; right: 20%;"></div>
442
- <div style="position:absolute; bottom:10px; right:10px; font-size:0.7rem; color:#555;">FIG 1.0</div>
443
- </div>
444
- </div>
445
 
446
- <div class="project-item">
447
- <div class="project-info">
448
- <h3>RONIN | Payment Gateway</h3>
449
- <p style="color:var(--text-muted); font-size: 0.95rem; margin-top: 1rem;">
450
- Fault-tolerant microservices architecture.
451
- <br><br>
452
- <span style="color:var(--accent-red)">> Strategy:</span> Implemented idempotency keys and eventual consistency models.
453
- </p>
 
 
454
  </div>
455
- <div class="project-diagram">
456
- <div style="border: 1px dashed #444; width: 40%; height: 60%; position: absolute;"></div>
457
- <div style="width: 10px; height: 10px; background: var(--accent-red); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"></div>
458
- <div style="position:absolute; bottom:10px; right:10px; font-size:0.7rem; color:#555;">FIG 1.1</div>
 
 
 
 
459
  </div>
460
  </div>
461
- </section>
 
 
 
 
462
 
463
- <footer id="contact">
464
- <div class="stamp">秘</div>
465
- <h3>TRANSMISSION LINK</h3>
466
- <p style="color: var(--text-muted); margin: 1rem 0;">arcane@dev.system</p>
467
- </footer>
468
 
469
  <script>
470
- function toggleMenu() {
471
- document.getElementById('navLinks').classList.toggle('active');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
472
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
 
474
- function imageLoaded() {
475
- const img = document.querySelector('.hero-img');
476
- const loader = document.getElementById('imgLoader');
477
- img.classList.add('loaded');
478
- loader.style.display = 'none';
479
- }
480
 
481
- const observer = new IntersectionObserver((entries) => {
482
- entries.forEach(entry => {
483
- if (entry.isIntersecting) {
484
- entry.target.style.opacity = 1;
485
- entry.target.style.transform = 'translateY(0)';
486
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  });
488
- }, { threshold: 0.1 });
489
-
490
- document.querySelectorAll('.skill-card, .project-item').forEach((el) => {
491
- el.style.opacity = 0;
492
- el.style.transform = 'translateY(30px)';
493
- el.style.transition = 'all 0.6s ease-out';
494
- observer.observe(el);
495
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
496
  </script>
497
  </body>
498
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>SYSTEM::ARCANE // ROOT_ACCESS</title>
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@100;400;800&family=Rajdhani:wght@300;500;700&display=swap" rel="stylesheet">
 
9
 
10
  <style>
 
11
  :root {
12
+ --bg: #050505;
13
+ --grid: #1a1a1a;
14
+ --primary: #ff003c; /* Cyberpunk Red */
15
+ --primary-dim: rgba(255, 0, 60, 0.2);
16
+ --text: #e0e0e0;
17
+ --text-dim: #666;
18
+ --font-main: 'Rajdhani', sans-serif;
19
  --font-code: 'JetBrains Mono', monospace;
 
 
20
  }
21
 
22
+ * { margin: 0; padding: 0; box-sizing: border-box; cursor: crosshair; }
 
 
 
 
 
23
 
24
  body {
25
+ background-color: var(--bg);
26
+ color: var(--text);
27
+ font-family: var(--font-main);
28
  overflow-x: hidden;
29
+ height: 100vh;
30
+ width: 100vw;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
+ /* --- CRT OVERLAY EFFECT --- */
34
+ .scanlines {
35
  position: fixed;
36
  top: 0; left: 0; width: 100%; height: 100%;
37
+ background: linear-gradient(to bottom, rgba(255,255,255,0), rgba(255,255,255,0) 50%, rgba(0,0,0,0.2) 50%, rgba(0,0,0,0.2));
38
+ background-size: 100% 4px;
39
+ z-index: 999;
 
 
40
  pointer-events: none;
41
+ opacity: 0.6;
42
  }
43
+
44
+ /* --- CANVAS BACKGROUND --- */
45
+ #network-canvas {
 
 
 
 
 
46
  position: fixed;
47
+ top: 0; left: 0;
48
+ z-index: 0;
49
+ opacity: 0.4;
 
 
 
50
  }
51
 
52
+ /* --- UI CONTAINER --- */
53
+ .ui-layer {
54
+ position: relative;
55
+ z-index: 10;
56
+ padding: 2rem;
57
+ height: 100%;
58
+ overflow-y: auto;
59
+ scrollbar-width: none; /* Firefox */
60
  }
61
+ .ui-layer::-webkit-scrollbar { display: none; }
62
 
63
+ /* --- HEADER / HUD --- */
64
+ header {
65
+ display: flex;
66
+ justify-content: space-between;
67
+ align-items: flex-end;
68
+ border-bottom: 1px solid var(--primary);
69
+ padding-bottom: 1rem;
70
+ margin-bottom: 4rem;
71
+ position: relative;
72
  }
 
73
 
74
+ header::after {
75
+ content: 'SYS.VER.4.0 // ONLINE';
76
+ position: absolute;
77
+ bottom: -20px; right: 0;
78
+ font-family: var(--font-code);
79
+ font-size: 0.7rem;
80
+ color: var(--primary);
81
+ background: var(--bg);
82
+ padding-left: 10px;
83
  }
84
 
85
+ .brand {
86
+ font-family: var(--font-code);
87
+ font-weight: 800;
88
+ font-size: 2.5rem;
89
+ letter-spacing: -2px;
90
+ color: var(--text);
91
+ text-transform: uppercase;
92
  }
93
+ .brand span { color: var(--primary); }
94
 
95
+ .status-block {
96
+ text-align: right;
97
+ font-family: var(--font-code);
98
+ font-size: 0.7rem;
99
+ color: var(--primary);
 
100
  }
101
 
102
+ /* --- HERO SECTION --- */
103
+ .hero-section {
104
+ display: grid;
105
+ grid-template-columns: 300px 1fr;
106
+ gap: 4rem;
107
+ align-items: start;
108
+ margin-bottom: 8rem;
 
 
 
 
 
 
 
 
 
109
  }
110
 
111
+ /* Profile Image: HUD Style */
112
+ .profile-frame {
113
  width: 100%;
114
+ height: 350px;
115
+ border: 1px solid var(--primary);
116
  position: relative;
117
+ padding: 5px;
118
+ background: rgba(255, 0, 60, 0.05);
 
 
 
 
119
  }
120
+
121
+ .profile-frame::before {
122
+ content: ''; position: absolute; top: -1px; left: -1px;
123
+ width: 20px; height: 20px;
124
+ border-top: 3px solid var(--primary);
125
+ border-left: 3px solid var(--primary);
 
 
 
 
126
  }
127
+ .profile-frame::after {
128
+ content: ''; position: absolute; bottom: -1px; right: -1px;
129
+ width: 20px; height: 20px;
130
+ border-bottom: 3px solid var(--primary);
131
+ border-right: 3px solid var(--primary);
 
 
 
 
 
132
  }
133
 
134
+ .profile-img {
135
+ width: 100%; height: 100%;
136
+ object-fit: cover;
137
+ filter: grayscale(100%) contrast(1.2) brightness(0.8);
138
+ transition: 0.3s;
139
  }
140
+ .profile-frame:hover .profile-img {
141
+ filter: grayscale(0%) sepia(50%) hue-rotate(-50deg) saturate(3);
 
 
 
 
 
 
 
 
 
 
 
 
 
142
  }
143
 
144
+ .hero-data h1 {
145
+ font-size: 5rem;
146
+ line-height: 0.9;
147
+ text-transform: uppercase;
148
  margin-bottom: 1rem;
149
+ position: relative;
150
  }
151
+
152
+ .hero-data h1::before {
153
+ content: 'TARGET_ID:';
154
+ font-family: var(--font-code);
 
155
  font-size: 1rem;
156
+ color: var(--primary);
157
+ display: block;
158
+ margin-bottom: 0.5rem;
159
+ letter-spacing: 2px;
160
  }
161
 
162
+ .bio-text {
 
 
 
 
 
163
  font-family: var(--font-code);
164
+ color: var(--text-dim);
165
+ max-width: 600px;
166
+ margin-bottom: 2rem;
167
+ border-left: 2px solid var(--primary);
168
+ padding-left: 1rem;
 
 
 
 
 
169
  }
170
 
171
+ /* --- SKILL MATRIX --- */
172
+ .section-header {
173
+ font-family: var(--font-code);
174
+ color: var(--primary);
175
+ font-size: 1.2rem;
176
+ margin-bottom: 2rem;
177
+ display: flex;
178
+ align-items: center;
179
+ gap: 1rem;
180
  }
181
+ .section-header::after {
182
+ content: ''; flex: 1; height: 1px; background: var(--primary-dim);
 
 
 
183
  }
184
 
185
+ .grid-container {
 
186
  display: grid;
187
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
188
+ gap: 1rem;
189
+ margin-bottom: 6rem;
190
  }
191
 
192
+ .data-card {
193
+ background: rgba(20,20,20,0.8);
194
+ border: 1px solid #333;
195
  padding: 1.5rem;
196
+ transition: 0.2s;
197
+ position: relative;
198
+ overflow: hidden;
199
  }
200
+
201
+ .data-card:hover {
202
+ border-color: var(--primary);
203
+ box-shadow: 0 0 15px var(--primary-dim);
204
  }
205
 
206
+ .data-card h3 {
207
+ font-family: var(--font-code);
208
+ font-size: 0.9rem;
209
+ color: var(--primary);
210
+ margin-bottom: 1rem;
211
+ text-transform: uppercase;
212
+ }
213
 
214
+ .data-card ul {
215
+ list-style: none;
216
+ font-family: var(--font-code);
217
+ font-size: 0.85rem;
218
+ color: var(--text-dim);
 
219
  }
220
+ .data-card li { margin-bottom: 5px; }
221
+ .data-card li::before { content: '> '; color: var(--primary); }
222
 
223
+ /* --- GLITCH BUTTON --- */
224
+ .cy-btn {
225
+ display: inline-block;
226
+ padding: 15px 40px;
227
+ background: var(--primary);
228
+ color: #000;
229
+ font-family: var(--font-code);
230
+ font-weight: 700;
231
+ text-decoration: none;
232
+ text-transform: uppercase;
233
+ letter-spacing: 2px;
234
  position: relative;
235
+ clip-path: polygon(10% 0, 100% 0, 100% 70%, 90% 100%, 0 100%, 0 30%);
236
+ transition: 0.2s;
237
+ }
238
+
239
+ .cy-btn:hover {
240
+ background: #fff;
241
+ color: var(--primary);
242
+ transform: translateX(5px);
243
+ }
244
+
245
+ /* --- BOOT ANIMATION OVERLAY --- */
246
+ #boot-screen {
247
+ position: fixed;
248
+ top: 0; left: 0; width: 100%; height: 100%;
249
+ background: #000;
250
+ z-index: 9999;
251
  display: flex;
252
  justify-content: center;
253
  align-items: center;
254
+ flex-direction: column;
255
+ font-family: var(--font-code);
256
+ color: var(--primary);
257
  }
258
+
259
+ .typing-line {
260
+ font-size: 0.9rem;
261
+ margin-bottom: 0.5rem;
262
+ opacity: 0;
263
+ animation: fadeIn 0.1s forwards;
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  }
 
265
 
266
+ @keyframes fadeIn { to { opacity: 1; } }
267
+
268
+ /* --- RESPONSIVE --- */
269
  @media (max-width: 900px) {
270
+ .hero-section { grid-template-columns: 1fr; }
271
+ .hero-data h1 { font-size: 3.5rem; }
272
+ .profile-frame { height: 250px; width: 250px; margin: 0 auto; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
273
  }
274
  </style>
275
  </head>
276
  <body>
277
 
278
+ <div class="scanlines"></div>
279
 
280
+ <div id="boot-screen">
 
 
 
 
 
 
 
281
  </div>
282
+
283
+ <canvas id="network-canvas"></canvas>
284
+
285
+ <div class="ui-layer" style="display: none;" id="main-interface">
286
+
287
+ <header>
288
+ <div class="brand">ARCANE<span>_SYS</span></div>
289
+ <div class="status-block">
290
+ <div>MEM: 64TB // OK</div>
291
+ <div>NET: SECURE</div>
292
+ <div>LOC: UNKNOWN</div>
293
+ </div>
294
+ </header>
295
+
296
+ <section class="hero-section">
297
+ <div class="hero-data">
298
+ <h1>Arcane<br><span style="color:transparent; -webkit-text-stroke: 1px var(--primary);">Developer</span></h1>
299
+
300
+ <div class="bio-text">
301
+ <p>> SPECIALIZATION: BACKEND ARCHITECTURE</p>
302
+ <p>> STATUS: AVAILABLE FOR DEPLOYMENT</p>
303
+ <br>
304
+ <p>My code runs where the light doesn't touch. I construct the invisible logic that powers global systems. If the server stays up, I did my job.</p>
305
+ </div>
306
+
307
+ <a href="mailto:arcane@system.dev" class="cy-btn">Initialize Link</a>
308
  </div>
309
 
310
+ <div class="profile-frame">
311
+ <img src="./profile.jpg" alt="User" class="profile-img">
312
+ <div style="position:absolute; bottom:10px; left:10px; font-size:0.6rem; color:var(--primary); font-family:var(--font-code);">IMG_REF_001</div>
 
 
313
  </div>
314
+ </section>
315
+
316
+ <h2 class="section-header">01 // SYSTEM MODULES</h2>
317
+ <div class="grid-container">
318
+ <div class="data-card">
319
+ <h3>// CORE_LOGIC</h3>
 
 
 
320
  <ul>
321
+ <li>Node.js (NestJS)</li>
322
+ <li>Rust [System Level]</li>
323
+ <li>Python [Algorithmic]</li>
 
324
  </ul>
325
  </div>
326
+ <div class="data-card">
327
+ <h3>// PERSISTENCE</h3>
328
  <ul>
329
+ <li>PostgreSQL Cluster</li>
330
+ <li>Redis In-Memory</li>
331
+ <li>Mongo Aggregations</li>
 
332
  </ul>
333
  </div>
334
+ <div class="data-card">
335
+ <h3>// DEPLOYMENT</h3>
336
  <ul>
337
+ <li>Docker / K8s</li>
338
+ <li>AWS Infrastructure</li>
339
+ <li>CI/CD Automation</li>
 
340
  </ul>
341
  </div>
342
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
 
344
+ <h2 class="section-header">02 // ARCHIVE_LOGS (PROJECTS)</h2>
345
+ <div class="grid-container">
346
+ <div class="data-card" style="border-left: 3px solid var(--primary);">
347
+ <h3>PROJECT: KITSUNE</h3>
348
+ <p style="font-size:0.8rem; color:#888; margin-bottom:1rem;">High-Frequency Trading Algorithm</p>
349
+ <div style="font-family:var(--font-code); font-size:0.7rem; color:var(--primary);">
350
+ > Latency: 4ms<br>
351
+ > Throughput: 10k/sec<br>
352
+ > Status: DEPLOYED
353
+ </div>
354
  </div>
355
+ <div class="data-card" style="border-left: 3px solid var(--primary);">
356
+ <h3>PROJECT: RONIN</h3>
357
+ <p style="font-size:0.8rem; color:#888; margin-bottom:1rem;">Distributed Payment Gateway</p>
358
+ <div style="font-family:var(--font-code); font-size:0.7rem; color:var(--primary);">
359
+ > Uptime: 99.999%<br>
360
+ > Architecture: Microservices<br>
361
+ > Status: ACTIVE
362
+ </div>
363
  </div>
364
  </div>
365
+
366
+ <footer style="margin-top: 5rem; border-top: 1px solid #333; padding-top: 1rem; font-family: var(--font-code); font-size: 0.7rem; color: #555; display: flex; justify-content: space-between;">
367
+ <div>SYSTEM ID: ARCANE-2025</div>
368
+ <div>END OF LINE_</div>
369
+ </footer>
370
 
371
+ </div>
 
 
 
 
372
 
373
  <script>
374
+ /* --- BOOT SEQUENCE SCRIPT --- */
375
+ const bootScreen = document.getElementById('boot-screen');
376
+ const mainInterface = document.getElementById('main-interface');
377
+ const bootLines = [
378
+ "INITIALIZING KERNEL...",
379
+ "LOADING MODULES: [NODE, RUST, PYTHON]...",
380
+ "CHECKING DATABASE INTEGRITY...",
381
+ "ESTABLISHING SECURE CONNECTION...",
382
+ "ACCESS GRANTED.",
383
+ "WELCOME, ARCANE."
384
+ ];
385
+
386
+ let lineIndex = 0;
387
+
388
+ function typeLine() {
389
+ if (lineIndex < bootLines.length) {
390
+ const p = document.createElement('div');
391
+ p.classList.add('typing-line');
392
+ p.textContent = "> " + bootLines[lineIndex];
393
+ bootScreen.appendChild(p);
394
+ lineIndex++;
395
+ setTimeout(typeLine, 300); // Speed of typing
396
+ } else {
397
+ setTimeout(() => {
398
+ bootScreen.style.display = 'none';
399
+ mainInterface.style.display = 'block';
400
+ initNetworkCanvas(); // Start background after boot
401
+ }, 800);
402
+ }
403
  }
404
+
405
+ // Start Boot
406
+ window.onload = typeLine;
407
+
408
+
409
+ /* --- CANVAS NETWORK ANIMATION (THE BACKEND VISUALIZER) --- */
410
+ function initNetworkCanvas() {
411
+ const canvas = document.getElementById('network-canvas');
412
+ const ctx = canvas.getContext('2d');
413
+ canvas.width = window.innerWidth;
414
+ canvas.height = window.innerHeight;
415
+
416
+ let particles = [];
417
+ const particleCount = 60; // Number of nodes
418
+
419
+ class Particle {
420
+ constructor() {
421
+ this.x = Math.random() * canvas.width;
422
+ this.y = Math.random() * canvas.height;
423
+ this.vx = (Math.random() - 0.5) * 0.5;
424
+ this.vy = (Math.random() - 0.5) * 0.5;
425
+ this.size = Math.random() * 2 + 1;
426
+ }
427
 
428
+ update() {
429
+ this.x += this.vx;
430
+ this.y += this.vy;
 
 
 
431
 
432
+ if (this.x < 0 || this.x > canvas.width) this.vx *= -1;
433
+ if (this.y < 0 || this.y > canvas.height) this.vy *= -1;
 
 
 
434
  }
435
+
436
+ draw() {
437
+ ctx.fillStyle = '#ff003c';
438
+ ctx.beginPath();
439
+ ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
440
+ ctx.fill();
441
+ }
442
+ }
443
+
444
+ // Create Particles
445
+ for (let i = 0; i < particleCount; i++) {
446
+ particles.push(new Particle());
447
+ }
448
+
449
+ // Mouse Interaction
450
+ let mouse = { x: null, y: null };
451
+ window.addEventListener('mousemove', (e) => {
452
+ mouse.x = e.x;
453
+ mouse.y = e.y;
454
  });
455
+
456
+ function animate() {
457
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
458
+
459
+ for (let i = 0; i < particles.length; i++) {
460
+ particles[i].update();
461
+ particles[i].draw();
462
+
463
+ // Draw connections
464
+ for (let j = i; j < particles.length; j++) {
465
+ const dx = particles[i].x - particles[j].x;
466
+ const dy = particles[i].y - particles[j].y;
467
+ const distance = Math.sqrt(dx * dx + dy * dy);
468
+
469
+ if (distance < 150) {
470
+ ctx.beginPath();
471
+ ctx.strokeStyle = `rgba(255, 0, 60, ${1 - distance / 150})`;
472
+ ctx.lineWidth = 0.5;
473
+ ctx.moveTo(particles[i].x, particles[i].y);
474
+ ctx.lineTo(particles[j].x, particles[j].y);
475
+ ctx.stroke();
476
+ }
477
+ }
478
+
479
+ // Connect to mouse
480
+ if (mouse.x != null) {
481
+ const dx = particles[i].x - mouse.x;
482
+ const dy = particles[i].y - mouse.y;
483
+ const distance = Math.sqrt(dx * dx + dy * dy);
484
+ if (distance < 200) {
485
+ ctx.beginPath();
486
+ ctx.strokeStyle = `rgba(255, 0, 60, ${1 - distance / 200})`;
487
+ ctx.lineWidth = 0.5;
488
+ ctx.moveTo(particles[i].x, particles[i].y);
489
+ ctx.lineTo(mouse.x, mouse.y);
490
+ ctx.stroke();
491
+ }
492
+ }
493
+ }
494
+ requestAnimationFrame(animate);
495
+ }
496
+ animate();
497
+
498
+ // Resize Handler
499
+ window.addEventListener('resize', () => {
500
+ canvas.width = window.innerWidth;
501
+ canvas.height = window.innerHeight;
502
+ });
503
+ }
504
  </script>
505
  </body>
506
  </html>