api-ix commited on
Commit
930f85d
·
verified ·
1 Parent(s): f18fb72

Update port.html

Browse files
Files changed (1) hide show
  1. port.html +154 -137
port.html CHANGED
@@ -13,10 +13,11 @@
13
  :root {
14
  --bg-color: #0a0a0a;
15
  --text-main: #e0e0e0;
16
- --text-muted: #666;
17
- --accent-red: #cf0000; /* Japanese Stamp Red */
18
  --font-code: 'JetBrains Mono', monospace;
19
  --font-serif: 'Noto Serif JP', serif;
 
20
  }
21
 
22
  * { margin: 0; padding: 0; box-sizing: border-box; }
@@ -33,16 +34,17 @@
33
  .container {
34
  max-width: 1200px;
35
  margin: 0 auto;
36
- padding: 0 2rem;
37
  }
38
 
39
  .japanese-label {
40
  font-family: var(--font-serif);
41
  color: var(--accent-red);
42
- font-size: 0.9rem;
43
  letter-spacing: 0.1rem;
44
  margin-bottom: 0.5rem;
45
  display: block;
 
46
  }
47
 
48
  /* --- BACKGROUND GRID --- */
@@ -62,49 +64,59 @@
62
  display: flex;
63
  justify-content: space-between;
64
  align-items: center;
65
- padding: 2rem;
 
66
  position: fixed;
67
  width: 100%;
68
  top: 0;
69
  z-index: 100;
70
- background: rgba(10, 10, 10, 0.9);
71
- backdrop-filter: blur(5px);
 
72
  }
73
 
74
  .logo {
75
  font-weight: 700;
76
- letter-spacing: -1px;
77
- font-size: 1.5rem;
78
  border: 1px solid var(--text-main);
79
- padding: 5px 10px;
 
80
  }
81
 
 
 
82
  .nav-links a {
83
  color: var(--text-muted);
84
  text-decoration: none;
85
- margin-left: 2rem;
86
- font-size: 0.9rem;
87
  transition: color 0.3s;
88
  }
89
-
90
  .nav-links a:hover { color: var(--accent-red); }
91
 
 
 
 
 
 
 
 
 
 
92
  /* --- HERO SECTION --- */
93
  .hero {
94
- height: 100vh;
95
  display: flex;
96
  align-items: center;
97
- position: relative;
98
  }
99
 
100
  .hero-content {
101
  display: grid;
102
- grid-template-columns: 1fr 2fr;
103
  gap: 4rem;
104
  align-items: center;
105
  }
106
 
107
- /* Vertical Text Name */
108
  .name-vertical {
109
  font-family: var(--font-serif);
110
  font-size: 5rem;
@@ -115,30 +127,34 @@
115
  border-right: 1px solid var(--accent-red);
116
  padding-right: 2rem;
117
  letter-spacing: 0.5rem;
 
118
  }
119
 
120
  .hero-text h2 {
121
- font-size: 2rem;
122
  font-weight: 100;
123
  margin-bottom: 1rem;
 
124
  }
125
 
126
  .hero-text p {
127
  color: var(--text-muted);
128
  max-width: 500px;
129
  margin-bottom: 2rem;
 
130
  }
131
 
132
  .btn {
133
  background: transparent;
134
  border: 1px solid var(--accent-red);
135
  color: var(--accent-red);
136
- padding: 10px 30px;
137
  cursor: pointer;
138
  font-family: var(--font-code);
139
  transition: 0.3s;
140
  text-decoration: none;
141
  display: inline-block;
 
142
  }
143
 
144
  .btn:hover {
@@ -148,119 +164,127 @@
148
 
149
  /* --- SECTIONS --- */
150
  section {
151
- padding: 6rem 0;
152
  border-bottom: 1px solid rgba(255,255,255,0.05);
153
  }
154
 
155
  .section-title {
156
- font-size: 2.5rem;
157
- margin-bottom: 4rem;
158
  font-weight: 100;
159
  }
160
 
161
  /* --- SKILLS GRID --- */
162
  .skills-grid {
163
  display: grid;
164
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
165
- gap: 2rem;
166
  }
167
 
168
  .skill-card {
 
169
  border: 1px solid rgba(255,255,255,0.1);
170
- padding: 2rem;
171
- transition: 0.3s;
172
- position: relative;
173
- overflow: hidden;
174
- }
175
-
176
- .skill-card:hover {
177
- border-color: var(--accent-red);
178
- transform: translateY(-5px);
179
- }
180
-
181
- .skill-card::before {
182
- content: '';
183
- position: absolute;
184
- top: 0; left: 0; width: 3px; height: 100%;
185
- background: var(--accent-red);
186
- opacity: 0;
187
  transition: 0.3s;
188
  }
189
 
190
- .skill-card:hover::before { opacity: 1; }
191
-
192
- .skill-card h3 { margin-bottom: 1rem; font-size: 1.2rem; }
193
- .skill-card ul { list-style: none; color: var(--text-muted); }
194
- .skill-card li { margin-bottom: 0.5rem; font-size: 0.9rem; }
195
- .skill-card li::before { content: '> '; color: var(--accent-red); }
196
 
197
- /* --- PROJECT DIAGRAM STYLE --- */
198
  .project-item {
199
  display: grid;
200
  grid-template-columns: 1fr 1fr;
201
- gap: 4rem;
202
- margin-bottom: 6rem;
203
  align-items: center;
204
  }
205
 
206
  .project-diagram {
207
- background: #111;
208
- border: 1px solid #333;
209
- height: 300px;
 
210
  display: flex;
211
  justify-content: center;
212
  align-items: center;
213
- position: relative;
214
- }
215
-
216
- /* Abstract Node Representation */
217
- .node {
218
- width: 15px;
219
- height: 15px;
220
- background: var(--accent-red);
221
- position: absolute;
222
- border-radius: 50%;
223
- }
224
- .line {
225
- position: absolute;
226
- height: 1px;
227
- background: #333;
228
  }
229
 
230
  /* --- FOOTER --- */
231
  footer {
232
- padding: 4rem 0;
233
  text-align: center;
234
  border-top: 1px solid var(--accent-red);
235
- margin-top: 4rem;
236
  }
237
 
238
  .stamp {
239
- width: 60px;
240
- height: 60px;
241
  border: 2px solid var(--accent-red);
242
  border-radius: 50%;
243
  color: var(--accent-red);
244
  display: flex;
245
  justify-content: center;
246
  align-items: center;
247
- margin: 0 auto 2rem auto;
248
  font-family: var(--font-serif);
249
  font-weight: 900;
250
  }
251
 
252
- /* --- RESPONSIVE --- */
253
  @media (max-width: 768px) {
254
- .hero-content { grid-template-columns: 1fr; text-align: center; }
255
- .name-vertical {
256
- writing-mode: horizontal-tb;
257
- border-right: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  border-bottom: 1px solid var(--accent-red);
259
  padding-bottom: 1rem;
260
- margin-bottom: 2rem;
261
  font-size: 3rem;
 
 
 
 
 
 
 
 
 
 
262
  }
263
- .project-item { grid-template-columns: 1fr; }
 
 
 
264
  }
265
  </style>
266
  </head>
@@ -268,13 +292,14 @@
268
 
269
  <div class="grid-bg"></div>
270
 
271
- <nav class="container">
272
  <div class="logo">ARCANE</div>
273
- <div class="nav-links">
274
- <a href="#about">01. LOGIC</a>
275
- <a href="#skills">02. SYSTEM</a>
276
- <a href="#projects">03. ARCHITECTURE</a>
277
- <a href="#contact">04. CONTACT</a>
 
278
  </div>
279
  </nav>
280
 
@@ -282,53 +307,40 @@
282
  <div class="hero-content">
283
  <h1 class="name-vertical">アーケイン</h1>
284
  <div class="hero-text">
285
- <span class="japanese-label">BACKEND SPECIALIST</span>
286
- <h2>Architecting the Invisible.</h2>
287
- <p>I design high-availability servers, optimize database logic, and craft algorithms that run in the dark. Silence is efficient.</p>
288
- <a href="#contact" class="btn">INITIATE CONTACT</a>
289
  </div>
290
  </div>
291
  </header>
292
 
293
  <section id="skills" class="container">
294
  <span class="japanese-label">ARSENAL</span>
295
- <h2 class="section-title">Technical Specifications</h2>
296
-
297
  <div class="skills-grid">
298
  <div class="skill-card">
299
- <h3>Server & Core</h3>
300
  <ul>
301
- <li>Python (FastAPI / Django)</li>
302
  <li>Go (Golang)</li>
303
- <li>Rust</li>
304
- <li>Node.js</li>
305
  </ul>
306
  </div>
307
  <div class="skill-card">
308
- <h3>Data Persistence</h3>
309
  <ul>
310
- <li>PostgreSQL (Advanced)</li>
311
- <li>Redis / Caching Strategies</li>
312
- <li>MongoDB / NoSQL</li>
313
- <li>ElasticSearch</li>
314
  </ul>
315
  </div>
316
  <div class="skill-card">
317
- <h3>DevOps & Infra</h3>
318
  <ul>
319
- <li>Docker / Kubernetes</li>
320
- <li>AWS / GCP</li>
321
- <li>CI/CD Pipelines</li>
322
- <li>Nginx / Apache</li>
323
- </ul>
324
- </div>
325
- <div class="skill-card">
326
- <h3>Algorithm Strategy</h3>
327
- <ul>
328
- <li>System Design</li>
329
- <li>Big O Optimization</li>
330
- <li>Data Structures</li>
331
- <li>Distributed Systems</li>
332
  </ul>
333
  </div>
334
  </div>
@@ -336,38 +348,38 @@
336
 
337
  <section id="projects" class="container">
338
  <span class="japanese-label">CASE STUDIES</span>
339
- <h2 class="section-title">System Architecture</h2>
340
 
341
  <div class="project-item">
342
  <div class="project-info">
343
- <h3>Project: KITSUNE</h3>
344
- <p style="color:var(--accent-red); margin-bottom: 1rem;">Algorithmic Trading Bot</p>
345
- <p style="color:var(--text-muted);">
346
- Engineered a low-latency trading engine capable of processing 500 requests per second. Implemented a custom sharding strategy for the database to handle historical tick data efficiently.
 
347
  </p>
348
  </div>
349
  <div class="project-diagram">
350
- <div class="line" style="width: 80%; top: 50%; left: 10%;"></div>
351
- <div class="node" style="left: 20%; top: 48%;"></div>
352
- <div class="node" style="left: 50%; top: 48%; background: #fff;"></div>
353
- <div class="node" style="left: 80%; top: 48%;"></div>
354
- <div style="position:absolute; bottom: 10px; right: 10px; font-size: 0.7rem; color: #444;">FIG 1.0</div>
355
  </div>
356
  </div>
357
 
358
  <div class="project-item">
359
  <div class="project-info">
360
- <h3>Project: RONIN API</h3>
361
- <p style="color:var(--accent-red); margin-bottom: 1rem;">Distributed Payment Gateway</p>
362
- <p style="color:var(--text-muted);">
363
- Designed a fault-tolerant microservices architecture using Go and gRPC. Reduced server response time by 40% through aggressive caching layers and asynchronous processing.
 
364
  </p>
365
  </div>
366
  <div class="project-diagram">
367
- <div class="line" style="width: 1px; height: 60%; top: 20%; left: 50%;"></div>
368
- <div class="node" style="left: 48%; top: 20%;"></div>
369
- <div class="node" style="left: 48%; top: 80%;"></div>
370
- <div style="position:absolute; bottom: 10px; right: 10px; font-size: 0.7rem; color: #444;">FIG 1.1</div>
371
  </div>
372
  </div>
373
  </section>
@@ -375,12 +387,17 @@
375
  <footer id="contact">
376
  <div class="stamp">秘</div>
377
  <h3>TRANSMISSION LINK</h3>
378
- <p style="color: var(--text-muted); margin: 1rem 0;">arcane.dev@example.com</p>
379
- <p style="font-size: 0.8rem; opacity: 0.5;">© 2024 ARCANE SYSTEMS</p>
380
  </footer>
381
 
382
  <script>
383
- // Simple Reveal Animation on Scroll
 
 
 
 
 
 
384
  const observer = new IntersectionObserver((entries) => {
385
  entries.forEach(entry => {
386
  if (entry.isIntersecting) {
@@ -392,7 +409,7 @@
392
 
393
  document.querySelectorAll('.skill-card, .project-item').forEach((el) => {
394
  el.style.opacity = 0;
395
- el.style.transform = 'translateY(20px)';
396
  el.style.transition = 'all 0.6s ease-out';
397
  observer.observe(el);
398
  });
 
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; }
 
34
  .container {
35
  max-width: 1200px;
36
  margin: 0 auto;
37
+ padding: 0 1.5rem; /* Reduced padding for mobile */
38
  }
39
 
40
  .japanese-label {
41
  font-family: var(--font-serif);
42
  color: var(--accent-red);
43
+ font-size: 0.8rem;
44
  letter-spacing: 0.1rem;
45
  margin-bottom: 0.5rem;
46
  display: block;
47
+ text-transform: uppercase;
48
  }
49
 
50
  /* --- BACKGROUND GRID --- */
 
64
  display: flex;
65
  justify-content: space-between;
66
  align-items: center;
67
+ height: var(--nav-height);
68
+ padding: 0 1.5rem;
69
  position: fixed;
70
  width: 100%;
71
  top: 0;
72
  z-index: 100;
73
+ background: rgba(10, 10, 10, 0.95);
74
+ backdrop-filter: blur(10px);
75
+ border-bottom: 1px solid rgba(255,255,255,0.05);
76
  }
77
 
78
  .logo {
79
  font-weight: 700;
80
+ font-size: 1.2rem;
 
81
  border: 1px solid var(--text-main);
82
+ padding: 4px 10px;
83
+ z-index: 101;
84
  }
85
 
86
+ /* Desktop Menu */
87
+ .nav-links { display: flex; gap: 2rem; }
88
  .nav-links a {
89
  color: var(--text-muted);
90
  text-decoration: none;
91
+ font-size: 0.85rem;
 
92
  transition: color 0.3s;
93
  }
 
94
  .nav-links a:hover { color: var(--accent-red); }
95
 
96
+ /* Mobile Menu Toggle (Hidden on Desktop) */
97
+ .menu-toggle {
98
+ display: none;
99
+ cursor: pointer;
100
+ z-index: 101;
101
+ font-size: 1.5rem;
102
+ color: var(--text-main);
103
+ }
104
+
105
  /* --- HERO SECTION --- */
106
  .hero {
107
+ min-height: 100vh;
108
  display: flex;
109
  align-items: center;
110
+ padding-top: var(--nav-height);
111
  }
112
 
113
  .hero-content {
114
  display: grid;
115
+ grid-template-columns: auto 1fr;
116
  gap: 4rem;
117
  align-items: center;
118
  }
119
 
 
120
  .name-vertical {
121
  font-family: var(--font-serif);
122
  font-size: 5rem;
 
127
  border-right: 1px solid var(--accent-red);
128
  padding-right: 2rem;
129
  letter-spacing: 0.5rem;
130
+ white-space: nowrap;
131
  }
132
 
133
  .hero-text h2 {
134
+ font-size: 2.5rem;
135
  font-weight: 100;
136
  margin-bottom: 1rem;
137
+ line-height: 1.2;
138
  }
139
 
140
  .hero-text p {
141
  color: var(--text-muted);
142
  max-width: 500px;
143
  margin-bottom: 2rem;
144
+ font-size: 1rem;
145
  }
146
 
147
  .btn {
148
  background: transparent;
149
  border: 1px solid var(--accent-red);
150
  color: var(--accent-red);
151
+ padding: 12px 35px;
152
  cursor: pointer;
153
  font-family: var(--font-code);
154
  transition: 0.3s;
155
  text-decoration: none;
156
  display: inline-block;
157
+ font-size: 0.9rem;
158
  }
159
 
160
  .btn:hover {
 
164
 
165
  /* --- SECTIONS --- */
166
  section {
167
+ padding: 5rem 0;
168
  border-bottom: 1px solid rgba(255,255,255,0.05);
169
  }
170
 
171
  .section-title {
172
+ font-size: 2rem;
173
+ margin-bottom: 3rem;
174
  font-weight: 100;
175
  }
176
 
177
  /* --- SKILLS GRID --- */
178
  .skills-grid {
179
  display: grid;
180
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
181
+ gap: 1.5rem;
182
  }
183
 
184
  .skill-card {
185
+ background: rgba(255,255,255,0.02);
186
  border: 1px solid rgba(255,255,255,0.1);
187
+ padding: 1.5rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  transition: 0.3s;
189
  }
190
 
191
+ .skill-card h3 { margin-bottom: 1rem; font-size: 1.1rem; color: #fff; }
192
+ .skill-card li { margin-bottom: 0.5rem; font-size: 0.9rem; color: var(--text-muted); }
193
+ .skill-card li::before { content: ':: '; color: var(--accent-red); }
 
 
 
194
 
195
+ /* --- PROJECTS --- */
196
  .project-item {
197
  display: grid;
198
  grid-template-columns: 1fr 1fr;
199
+ gap: 3rem;
200
+ margin-bottom: 5rem;
201
  align-items: center;
202
  }
203
 
204
  .project-diagram {
205
+ background: #0f0f0f;
206
+ border: 1px solid #222;
207
+ height: 250px;
208
+ position: relative;
209
  display: flex;
210
  justify-content: center;
211
  align-items: center;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  }
213
 
214
  /* --- FOOTER --- */
215
  footer {
216
+ padding: 4rem 0 6rem 0; /* Extra bottom padding for mobile browsers */
217
  text-align: center;
218
  border-top: 1px solid var(--accent-red);
219
+ margin-top: 2rem;
220
  }
221
 
222
  .stamp {
223
+ width: 50px;
224
+ height: 50px;
225
  border: 2px solid var(--accent-red);
226
  border-radius: 50%;
227
  color: var(--accent-red);
228
  display: flex;
229
  justify-content: center;
230
  align-items: center;
231
+ margin: 0 auto 1.5rem auto;
232
  font-family: var(--font-serif);
233
  font-weight: 900;
234
  }
235
 
236
+ /* --- MOBILE MEDIA QUERIES --- */
237
  @media (max-width: 768px) {
238
+
239
+ /* Nav Mobile Overlay */
240
+ .menu-toggle { display: block; }
241
+
242
+ .nav-links {
243
+ position: fixed;
244
+ top: 0; right: -100%;
245
+ width: 70%;
246
+ height: 100vh;
247
+ background: #111;
248
+ flex-direction: column;
249
+ justify-content: center;
250
+ align-items: center;
251
+ gap: 3rem;
252
+ transition: 0.4s ease;
253
+ border-left: 1px solid var(--accent-red);
254
+ }
255
+
256
+ .nav-links.active { right: 0; }
257
+ .nav-links a { font-size: 1.2rem; }
258
+
259
+ /* Hero Mobile */
260
+ .hero-content {
261
+ grid-template-columns: 1fr;
262
+ text-align: center;
263
+ gap: 2rem;
264
+ }
265
+
266
+ .name-vertical {
267
+ writing-mode: horizontal-tb;
268
+ border-right: none;
269
  border-bottom: 1px solid var(--accent-red);
270
  padding-bottom: 1rem;
271
+ padding-right: 0;
272
  font-size: 3rem;
273
+ width: 100%;
274
+ }
275
+
276
+ .hero-text h2 { font-size: 1.8rem; }
277
+
278
+ /* Projects Mobile */
279
+ .project-item {
280
+ grid-template-columns: 1fr;
281
+ gap: 2rem;
282
+ margin-bottom: 4rem;
283
  }
284
+
285
+ /* Order: Diagram first on mobile? Optional. keeping text first is standard. */
286
+
287
+ .container { padding: 0 1.2rem; }
288
  }
289
  </style>
290
  </head>
 
292
 
293
  <div class="grid-bg"></div>
294
 
295
+ <nav>
296
  <div class="logo">ARCANE</div>
297
+ <div class="menu-toggle" onclick="toggleMenu()">☰</div>
298
+ <div class="nav-links" id="navLinks">
299
+ <a href="#about" onclick="toggleMenu()">01. LOGIC</a>
300
+ <a href="#skills" onclick="toggleMenu()">02. SYSTEM</a>
301
+ <a href="#projects" onclick="toggleMenu()">03. ARCHITECTURE</a>
302
+ <a href="#contact" onclick="toggleMenu()">04. CONTACT</a>
303
  </div>
304
  </nav>
305
 
 
307
  <div class="hero-content">
308
  <h1 class="name-vertical">アーケイン</h1>
309
  <div class="hero-text">
310
+ <span class="japanese-label">BACKEND ARCHITECT</span>
311
+ <h2>Logic in the<br>Shadows.</h2>
312
+ <p>Specialized in high-load server environments, distributed database management, and algorithmic efficiency.</p>
313
+ <a href="#contact" class="btn">INITIATE_CONTACT()</a>
314
  </div>
315
  </div>
316
  </header>
317
 
318
  <section id="skills" class="container">
319
  <span class="japanese-label">ARSENAL</span>
320
+ <h2 class="section-title">Tech Stack</h2>
 
321
  <div class="skills-grid">
322
  <div class="skill-card">
323
+ <h3>Core Languages</h3>
324
  <ul>
325
+ <li>Python (FastAPI)</li>
326
  <li>Go (Golang)</li>
327
+ <li>Rust (Systems)</li>
 
328
  </ul>
329
  </div>
330
  <div class="skill-card">
331
+ <h3>Data & Storage</h3>
332
  <ul>
333
+ <li>PostgreSQL (Tuning)</li>
334
+ <li>Redis Cluster</li>
335
+ <li>Kafka / RabbitMQ</li>
 
336
  </ul>
337
  </div>
338
  <div class="skill-card">
339
+ <h3>Infrastructure</h3>
340
  <ul>
341
+ <li>Docker & K8s</li>
342
+ <li>AWS (EC2, Lambda)</li>
343
+ <li>Terraform</li>
 
 
 
 
 
 
 
 
 
 
344
  </ul>
345
  </div>
346
  </div>
 
348
 
349
  <section id="projects" class="container">
350
  <span class="japanese-label">CASE STUDIES</span>
351
+ <h2 class="section-title">Selected Works</h2>
352
 
353
  <div class="project-item">
354
  <div class="project-info">
355
+ <h3>KITSUNE | Trading Bot</h3>
356
+ <p style="color:var(--text-muted); font-size: 0.95rem; margin-top: 1rem;">
357
+ A high-frequency trading algorithm handling 500 req/s.
358
+ <br><br>
359
+ <span style="color:var(--accent-red)">> Strategy:</span> Database sharding & in-memory caching reduced latency by 90%.
360
  </p>
361
  </div>
362
  <div class="project-diagram">
363
+ <div style="width: 10px; height: 10px; background: #fff; border-radius: 50%; position: absolute; left: 20%;"></div>
364
+ <div style="width: 60%; height: 1px; background: #333; position: absolute;"></div>
365
+ <div style="width: 10px; height: 10px; background: var(--accent-red); border-radius: 50%; position: absolute; right: 20%;"></div>
366
+ <div style="position:absolute; bottom:10px; right:10px; font-size:0.7rem; color:#555;">FIG 1.0</div>
 
367
  </div>
368
  </div>
369
 
370
  <div class="project-item">
371
  <div class="project-info">
372
+ <h3>RONIN | Payment Gateway</h3>
373
+ <p style="color:var(--text-muted); font-size: 0.95rem; margin-top: 1rem;">
374
+ Fault-tolerant microservices architecture.
375
+ <br><br>
376
+ <span style="color:var(--accent-red)">> Strategy:</span> Implemented idempotency keys and eventual consistency models.
377
  </p>
378
  </div>
379
  <div class="project-diagram">
380
+ <div style="border: 1px dashed #444; width: 40%; height: 60%; position: absolute;"></div>
381
+ <div style="width: 10px; height: 10px; background: var(--accent-red); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"></div>
382
+ <div style="position:absolute; bottom:10px; right:10px; font-size:0.7rem; color:#555;">FIG 1.1</div>
 
383
  </div>
384
  </div>
385
  </section>
 
387
  <footer id="contact">
388
  <div class="stamp">秘</div>
389
  <h3>TRANSMISSION LINK</h3>
390
+ <p style="color: var(--text-muted); margin: 1rem 0;">arcane@dev.system</p>
 
391
  </footer>
392
 
393
  <script>
394
+ // Toggle Mobile Menu
395
+ function toggleMenu() {
396
+ const nav = document.getElementById('navLinks');
397
+ nav.classList.toggle('active');
398
+ }
399
+
400
+ // Scroll Animation
401
  const observer = new IntersectionObserver((entries) => {
402
  entries.forEach(entry => {
403
  if (entry.isIntersecting) {
 
409
 
410
  document.querySelectorAll('.skill-card, .project-item').forEach((el) => {
411
  el.style.opacity = 0;
412
+ el.style.transform = 'translateY(30px)';
413
  el.style.transition = 'all 0.6s ease-out';
414
  observer.observe(el);
415
  });