Restrictated commited on
Commit
0e17f10
·
verified ·
1 Parent(s): 6b3270a

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +360 -173
index.html CHANGED
@@ -6,104 +6,93 @@
6
  <title>Cubic — AGI, AI, and Cybersecurity Research</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=IBM+Plex+Mono:wght@400;500;600;700&family=IBM+Plex+Sans:wght@400;500;600&display=swap" rel="stylesheet">
10
  <style>
11
  :root{
12
- --bg:#0b140f;
13
- --panel:#101d16;
14
- --panel-2:#132218;
15
- --line:#1c2e21;
16
- --line-bright:#2a4433;
17
- --solder:#c9a227;
18
- --copper:#a06a2e;
19
- --silk:#eee9d8;
20
- --text:#cfd6c8;
21
- --muted:#788675;
 
22
  --mx:50%;
23
- --my:30%;
24
  }
25
  [data-theme="light"]{
26
- --bg:#eee9da;
27
- --panel:#f8f4e8;
28
- --panel-2:#efe8d5;
29
- --line:#ddd2ac;
30
- --line-bright:#c3b382;
31
- --solder:#8a6415;
32
- --copper:#7a4a1f;
33
- --silk:#20241a;
34
- --text:#33362a;
35
- --muted:#6f664e;
 
36
  }
37
  *{box-sizing:border-box;}
38
  html{scroll-behavior:smooth;}
39
  body{
40
  margin:0;
41
- font-family:'IBM Plex Sans',ui-sans-serif,system-ui;
42
  color:var(--text);
43
  background:var(--bg);
44
  transition:background 0.25s ease, color 0.25s ease;
 
45
  }
46
- ::selection{background:var(--solder);color:#12160c;}
47
  a{color:inherit;}
48
- .circuit-bg{
 
 
49
  position:fixed;
50
  inset:0;
51
- width:100%;
52
- height:100%;
53
  z-index:0;
54
  pointer-events:none;
 
 
55
  }
56
- .circuit-bg path{
57
- fill:none;
58
- stroke:var(--line);
59
- stroke-width:1.4;
60
- }
61
- .circuit-bg circle{
62
- fill:var(--line-bright);
63
- }
64
- .pulse-layer{position:fixed;inset:0;z-index:0;pointer-events:none;}
65
- .pulse{
66
  position:absolute;
67
- top:0;left:0;
68
- width:4px;height:4px;
69
- margin:-2px;
70
- border-radius:50%;
71
- background:var(--solder);
72
- box-shadow:0 0 7px 1px var(--solder);
73
- animation:travel linear infinite;
74
- will-change:offset-distance;
75
  }
76
- @keyframes travel{ from{offset-distance:0%;} to{offset-distance:100%;} }
 
77
  .cursor-glow{
78
  position:fixed;
79
  inset:0;
80
  z-index:0;
81
  pointer-events:none;
82
- background:radial-gradient(480px circle at var(--mx) var(--my), rgba(201,162,39,0.10), transparent 72%);
83
- }
84
- body.paused .pulse{animation-play-state:paused;}
85
- @media (prefers-reduced-motion: reduce){
86
- .pulse{animation:none;display:none;}
87
- .cursor-glow{background:none;}
88
  }
 
89
  .wrap{position:relative;z-index:1;max-width:960px;margin:0 auto;padding:0 24px 90px;}
90
  header{
91
  display:flex;
92
  align-items:center;
93
  justify-content:space-between;
94
  padding:20px 0;
95
- border-bottom:1px solid var(--line-bright);
 
96
  margin-bottom:56px;
97
  }
98
  .brand{display:flex;align-items:center;gap:9px;}
99
  .chip{width:22px;height:22px;flex-shrink:0;}
100
- .chip rect{fill:none;stroke:var(--solder);stroke-width:1.4;}
101
- .chip circle{fill:var(--solder);}
102
- .chip line{stroke:var(--solder);stroke-width:1.2;}
103
  .brand-name{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:16px;letter-spacing:0.01em;color:var(--silk);}
104
  nav{display:flex;align-items:center;gap:16px;}
105
- nav a{text-decoration:none;color:var(--muted);font-size:13px;font-weight:500;border-bottom:1px solid transparent;}
106
- nav a:hover{color:var(--silk);border-color:var(--solder);}
107
  .theme-row{display:flex;align-items:center;gap:6px;margin-left:6px;}
108
  .switch-label{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);}
109
  #theme-toggle{
@@ -115,67 +104,72 @@
115
  cursor:pointer;
116
  padding:0;
117
  }
 
118
  #theme-toggle::after{
119
  content:"";
120
  position:absolute;
121
  top:1px;left:1px;
122
  width:13px;height:13px;
123
  border-radius:2px;
124
- background:var(--solder);
125
  transition:transform 0.16s ease;
126
  }
127
  [data-theme="light"] #theme-toggle::after{transform:translateX(15px);}
 
128
  .eyebrow{
129
  font-family:'IBM Plex Mono',monospace;
130
  font-size:11.5px;
131
- color:var(--solder);
132
  letter-spacing:0.09em;
133
  text-transform:uppercase;
134
  margin-bottom:16px;
135
  }
136
  h1{
137
- font-family:'IBM Plex Mono',monospace;
138
- font-size:34px;
139
- line-height:1.25;
140
  font-weight:600;
141
  color:var(--silk);
142
  margin:0 0 16px;
143
  max-width:620px;
144
- letter-spacing:-0.01em;
145
  }
146
- .tagline{color:var(--muted);font-size:15.5px;line-height:1.65;max-width:540px;margin:0 0 44px;}
147
  .pin1{
148
  display:inline-block;
149
  width:5px;height:5px;
150
  border-radius:50%;
151
- background:var(--solder);
152
  margin-right:7px;
153
- box-shadow:0 0 4px var(--solder);
154
  }
155
  .metrics{
156
  display:grid;
157
  grid-template-columns:repeat(5,1fr);
158
- border:1px solid var(--line-bright);
159
- border-radius:5px;
160
  overflow:hidden;
161
  margin-bottom:68px;
 
 
162
  }
163
  .metric{
164
- background:var(--panel);
165
- padding:18px 12px;
166
  text-align:center;
167
- border-right:1px solid var(--line-bright);
168
  }
169
  .metric:last-child{border-right:none;}
170
  .metric b{
171
  display:block;
172
  font-family:'IBM Plex Mono',monospace;
173
- font-size:21px;
174
  font-weight:600;
175
  color:var(--silk);
176
  margin-bottom:5px;
 
177
  }
178
- .metric span{font-size:11px;color:var(--muted);letter-spacing:0.01em;}
 
179
  section{margin-bottom:64px;}
180
  h2{
181
  font-family:'IBM Plex Mono',monospace;
@@ -189,50 +183,102 @@
189
  gap:10px;
190
  }
191
  h2::after{content:"";flex:1;height:1px;background:var(--line-bright);}
 
192
  .focus-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
193
  .card{
194
  position:relative;
195
- background:var(--panel);
196
- border:1px solid var(--line-bright);
197
- border-radius:5px;
198
- padding:17px;
199
- }
200
- .card::before,.card::after,.card .cr-tl,.card .cr-br{
201
- content:"";
202
- position:absolute;
203
- width:7px;height:7px;
204
- opacity:0.55;
205
  }
206
- .card::before{
207
- top:-1px;left:-1px;
208
- border-top:1px solid var(--solder);
209
- border-left:1px solid var(--solder);
 
 
 
 
210
  }
211
- .card::after{
212
- bottom:-1px;right:-1px;
213
- border-bottom:1px solid var(--solder);
214
- border-right:1px solid var(--solder);
215
  }
 
216
  .focus-card b{font-family:'IBM Plex Mono',monospace;font-size:14px;color:var(--silk);display:block;margin-bottom:7px;}
217
- .focus-card p{font-size:13px;color:var(--muted);margin:0;line-height:1.55;}
218
- .search-row{margin-bottom:14px;}
 
 
 
 
 
 
 
 
 
 
 
219
  .search-row input{
220
- width:100%;
221
  background:var(--panel);
222
- border:1px solid var(--line-bright);
223
  color:var(--text);
224
- border-radius:4px;
225
- padding:9px 13px;
226
  font-size:13.5px;
227
- font-family:'IBM Plex Sans',sans-serif;
228
  outline:none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
230
- .search-row input:focus{border-color:var(--solder);}
 
231
  .project-card{
232
  cursor:pointer;
233
- transition:border-color 0.15s ease, transform 0.15s ease;
 
 
 
 
 
234
  }
235
- .project-card:hover{border-color:var(--solder);transform:translateY(-1px);}
 
 
 
 
 
236
  .project-card h3{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--silk);margin:0 0 14px;font-weight:600;}
237
  .project-meta{
238
  display:grid;
@@ -240,18 +286,19 @@
240
  gap:12px;
241
  margin-bottom:14px;
242
  padding-bottom:14px;
243
- border-bottom:1px dashed var(--line-bright);
244
  }
245
  .project-meta div{font-size:12px;}
246
- .project-meta b{display:block;color:var(--solder);font-family:'IBM Plex Mono',monospace;font-size:12.5px;margin-bottom:3px;}
247
  .project-meta span{color:var(--muted);}
248
  .project-card p.hint{font-size:12px;color:var(--muted);margin:0;font-family:'IBM Plex Mono',monospace;}
 
249
  .team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
250
  .team-card{text-align:center;}
251
  .avatar{
252
  width:34px;height:34px;
253
  margin:0 auto 10px;
254
- border:1px solid var(--solder);
255
  border-radius:50%;
256
  position:relative;
257
  }
@@ -260,21 +307,23 @@
260
  position:absolute;
261
  inset:6px;
262
  border-radius:50%;
263
- background:var(--solder);
264
- opacity:0.35;
265
  }
266
  .team-card b{display:block;font-family:'IBM Plex Mono',monospace;font-size:13.5px;color:var(--silk);margin-bottom:4px;}
267
- .team-card span{font-size:11.5px;color:var(--muted);}
 
268
  .features{
269
  display:grid;
270
  grid-template-columns:repeat(2,1fr);
271
  gap:9px 22px;
272
- font-size:13px;
273
  margin:0;
274
  padding:0;
275
  }
276
  .features li{list-style:none;padding-left:16px;position:relative;color:var(--muted);}
277
- .features li::before{content:"—";position:absolute;left:0;color:var(--solder);}
 
278
  footer{
279
  display:flex;
280
  align-items:center;
@@ -286,47 +335,66 @@
286
  font-family:'IBM Plex Mono',monospace;
287
  }
288
  footer .flinks a{text-decoration:none;color:var(--text);margin-left:14px;}
289
- footer .flinks a:hover{color:var(--solder);}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  @media (max-width:720px){
291
  .metrics{grid-template-columns:repeat(2,1fr);}
292
  .metric{border-bottom:1px solid var(--line-bright);}
293
  .focus-grid,.team-grid{grid-template-columns:1fr;}
294
  .project-meta{grid-template-columns:repeat(2,1fr);}
295
- h1{font-size:27px;}
296
  }
297
  @media print{
298
- .circuit-bg,.pulse-layer,.cursor-glow,#theme-toggle,.theme-row,.search-row{display:none;}
299
  body{background:#fff;color:#000;}
300
  }
301
  </style>
302
  </head>
303
  <body>
304
 
305
- <svg class="circuit-bg" viewBox="0 0 1440 900" preserveAspectRatio="xMidYMid slice">
306
- <path d="M40,120 H320 V40 H660"/>
307
- <path d="M40,340 H220 V520 H520 V680"/>
308
- <path d="M960,50 V220 H1260 V50"/>
309
- <path d="M1120,420 H1400 V300"/>
310
- <path d="M60,760 H400 V860"/>
311
- <path d="M720,800 H1040 V620 H1340"/>
312
- <path d="M1380,700 V860 H1080"/>
313
- <path d="M840,90 V260 H620 V90"/>
314
- <circle cx="320" cy="120" r="3.2"/>
315
- <circle cx="660" cy="40" r="3.2"/>
316
- <circle cx="520" cy="520" r="3.2"/>
317
- <circle cx="1260" cy="220" r="3.2"/>
318
- <circle cx="1120" cy="420" r="3.2"/>
319
- <circle cx="400" cy="760" r="3.2"/>
320
- <circle cx="1040" cy="800" r="3.2"/>
321
- <circle cx="840" cy="260" r="3.2"/>
322
- </svg>
323
-
324
- <div class="pulse-layer" aria-hidden="true">
325
- <div class="pulse" style="offset-path:path('M40,120 H320 V40 H660');animation-duration:9s;animation-delay:-1s;"></div>
326
- <div class="pulse" style="offset-path:path('M40,340 H220 V520 H520 V680');animation-duration:11s;animation-delay:-4s;"></div>
327
- <div class="pulse" style="offset-path:path('M960,50 V220 H1260 V50');animation-duration:8s;animation-delay:-2.5s;"></div>
328
- <div class="pulse" style="offset-path:path('M720,800 H1040 V620 H1340');animation-duration:12s;animation-delay:-6s;"></div>
329
- <div class="pulse" style="offset-path:path('M840,90 V260 H620 V90');animation-duration:10s;animation-delay:-3s;"></div>
330
  </div>
331
 
332
  <div class="cursor-glow"></div>
@@ -345,11 +413,11 @@
345
  <span class="brand-name">CUBIC</span>
346
  </div>
347
  <nav>
348
- <a href="https://github.com/Cubic-Labs" target="_blank">GitHub</a>
349
- <a href="https://huggingface.co/Cubic" target="_blank">HuggingFace</a>
350
  <div class="theme-row">
351
  <span class="switch-label">0</span>
352
- <button id="theme-toggle" aria-label="Toggle theme"></button>
353
  <span class="switch-label">1</span>
354
  </div>
355
  </nav>
@@ -369,20 +437,33 @@
369
 
370
  <section>
371
  <h2>Research Focus</h2>
372
- <div class="focus-grid">
373
- <div class="card focus-card"><b>AGI Research</b><p>Advancing towards artificial general intelligence.</p></div>
374
- <div class="card focus-card"><b>AI Development</b><p>CPU-first architectures and open-source models.</p></div>
375
- <div class="card focus-card"><b>Cybersecurity</b><p>AI-powered security tools and threat detection.</p></div>
 
 
 
 
 
 
 
 
 
 
 
 
376
  </div>
377
  </section>
378
 
379
  <section>
380
  <h2>Projects</h2>
381
  <div class="search-row">
382
- <input id="search" type="text" placeholder="Search projects — press / to focus">
 
383
  </div>
384
  <div id="project-list">
385
- <div class="card project-card" data-name="axl cpu-first code generation">
386
  <h3>AXL — CPU-First Code Generation</h3>
387
  <div class="project-meta">
388
  <div><b>27</b><span>models, 566K–318M params</span></div>
@@ -393,13 +474,14 @@
393
  <p class="hint">&gt; click for the full AXL detail page</p>
394
  </div>
395
  </div>
 
396
  </section>
397
 
398
  <section>
399
  <h2>Team</h2>
400
  <div class="team-grid">
401
- <div class="card team-card"><div class="avatar"></div><b>Kennedy</b><span>CEO & Head of AI Research</span></div>
402
- <div class="card team-card"><div class="avatar"></div><b>Jasser</b><span>CTO & Head of Cybersecurity</span></div>
403
  <div class="card team-card"><div class="avatar"></div><b>Taem</b><span>Head of Marketing/Sales/Technical Assist</span></div>
404
  </div>
405
  </section>
@@ -410,7 +492,7 @@
410
  <li>Dark/Light theme toggle</li>
411
  <li>Category filtering on projects</li>
412
  <li>Search across projects</li>
413
- <li>Interactive circuit-trace background</li>
414
  <li>Keyboard shortcuts (/ to search, Esc to close)</li>
415
  <li>Print-friendly CSS</li>
416
  <li>Responsive design</li>
@@ -420,51 +502,152 @@
420
  <footer>
421
  <span>CPU-first AI for everyone.</span>
422
  <span class="flinks">
423
- <a href="https://github.com/Cubic-Labs" target="_blank">GitHub</a>
424
- <a href="https://huggingface.co/Cubic" target="_blank">HuggingFace</a>
425
  </span>
426
  </footer>
427
  </div>
428
 
 
 
429
  <script>
430
- const root = document.documentElement;
431
- const toggle = document.getElementById('theme-toggle');
432
- toggle.addEventListener('click', () => {
433
- const isLight = root.getAttribute('data-theme') === 'light';
434
- root.setAttribute('data-theme', isLight ? 'dark' : 'light');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
  });
436
 
437
- const search = document.getElementById('search');
438
- const cards = document.querySelectorAll('.project-card');
439
- search.addEventListener('input', () => {
440
- const q = search.value.toLowerCase();
441
- cards.forEach(c => { c.style.display = c.dataset.name.includes(q) ? '' : 'none'; });
442
  });
443
 
444
- document.addEventListener('keydown', e => {
445
- if (e.key === '/' && document.activeElement !== search) {
 
 
 
 
446
  e.preventDefault();
447
  search.focus();
448
  }
449
  if (e.key === 'Escape') {
450
- search.value = '';
451
- search.dispatchEvent(new Event('input'));
 
 
 
 
 
 
 
452
  search.blur();
453
  }
454
  });
455
 
456
- cards.forEach(c => {
457
- c.addEventListener('click', () => window.open('https://huggingface.co/Cubic', '_blank'));
 
 
 
 
 
 
 
 
 
 
 
 
458
  });
459
 
460
- const reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
 
461
  if (!reduceMotion) {
462
- let mx = window.innerWidth / 2, my = window.innerHeight / 3, ticking = false;
463
- window.addEventListener('mousemove', e => {
464
  mx = e.clientX; my = e.clientY;
465
  if (!ticking) {
466
  ticking = true;
467
- requestAnimationFrame(() => {
468
  root.style.setProperty('--mx', mx + 'px');
469
  root.style.setProperty('--my', my + 'px');
470
  ticking = false;
@@ -473,9 +656,13 @@
473
  }, { passive: true });
474
  }
475
 
476
- document.addEventListener('visibilitychange', () => {
477
  document.body.classList.toggle('paused', document.hidden);
478
  });
 
 
 
 
479
  </script>
480
  </body>
481
  </html>
 
6
  <title>Cubic — AGI, AI, and Cybersecurity Research</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=IBM+Plex+Mono:wght@400;500;600;700&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,600;8..60,700&display=swap" rel="stylesheet">
10
  <style>
11
  :root{
12
+ --bg:#0a0a0b;
13
+ --panel:#131316;
14
+ --panel-2:#18181c;
15
+ --line:#232328;
16
+ --line-bright:#33333a;
17
+ --accent:#c9c8c2;
18
+ --accent-dim:#8a8a87;
19
+ --silk:#f2f1ec;
20
+ --text:#b9b9bd;
21
+ --muted:#6f6f76;
22
+ --ok:#8fae6e;
23
  --mx:50%;
24
+ --my:26%;
25
  }
26
  [data-theme="light"]{
27
+ --bg:#f1efe9;
28
+ --panel:#fbfaf6;
29
+ --panel-2:#eeece4;
30
+ --line:#dcd9cf;
31
+ --line-bright:#b8b4a4;
32
+ --accent:#3c3c3e;
33
+ --accent-dim:#7a7a76;
34
+ --silk:#17171a;
35
+ --text:#3c3c3e;
36
+ --muted:#7a7a76;
37
+ --ok:#5c7a3e;
38
  }
39
  *{box-sizing:border-box;}
40
  html{scroll-behavior:smooth;}
41
  body{
42
  margin:0;
43
+ font-family:'Source Serif 4',Georgia,serif;
44
  color:var(--text);
45
  background:var(--bg);
46
  transition:background 0.25s ease, color 0.25s ease;
47
+ overflow-x:hidden;
48
  }
49
+ ::selection{background:var(--accent);color:#1a0f08;}
50
  a{color:inherit;}
51
+
52
+ /* ---------- starfield backdrop ---------- */
53
+ .star-stage{
54
  position:fixed;
55
  inset:0;
 
 
56
  z-index:0;
57
  pointer-events:none;
58
+ overflow:hidden;
59
+ background:radial-gradient(ellipse at 60% 0%, #0d0d10 0%, var(--bg) 55%);
60
  }
61
+ [data-theme="light"] .star-stage{background:var(--bg);}
62
+ .starfield{
 
 
 
 
 
 
 
 
63
  position:absolute;
64
+ inset:0;
65
+ opacity:0.55;
 
 
 
 
 
 
66
  }
67
+ [data-theme="light"] .starfield{opacity:0;}
68
+
69
  .cursor-glow{
70
  position:fixed;
71
  inset:0;
72
  z-index:0;
73
  pointer-events:none;
74
+ background:radial-gradient(420px circle at var(--mx) var(--my), rgba(242,161,83,0.07), transparent 72%);
 
 
 
 
 
75
  }
76
+
77
  .wrap{position:relative;z-index:1;max-width:960px;margin:0 auto;padding:0 24px 90px;}
78
  header{
79
  display:flex;
80
  align-items:center;
81
  justify-content:space-between;
82
  padding:20px 0;
83
+ border-bottom:1px solid var(--line);
84
+ background:linear-gradient(180deg, rgba(255,255,255,0.02), transparent);
85
  margin-bottom:56px;
86
  }
87
  .brand{display:flex;align-items:center;gap:9px;}
88
  .chip{width:22px;height:22px;flex-shrink:0;}
89
+ .chip rect{fill:none;stroke:var(--accent);stroke-width:1.4;}
90
+ .chip circle{fill:var(--accent);}
91
+ .chip line{stroke:var(--accent);stroke-width:1.2;}
92
  .brand-name{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:16px;letter-spacing:0.01em;color:var(--silk);}
93
  nav{display:flex;align-items:center;gap:16px;}
94
+ nav a{text-decoration:none;color:var(--muted);font-size:13px;font-weight:500;font-family:'IBM Plex Mono',monospace;border-bottom:1px solid transparent;}
95
+ nav a:hover{color:var(--silk);border-color:var(--accent);}
96
  .theme-row{display:flex;align-items:center;gap:6px;margin-left:6px;}
97
  .switch-label{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--muted);}
98
  #theme-toggle{
 
104
  cursor:pointer;
105
  padding:0;
106
  }
107
+ #theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
108
  #theme-toggle::after{
109
  content:"";
110
  position:absolute;
111
  top:1px;left:1px;
112
  width:13px;height:13px;
113
  border-radius:2px;
114
+ background:var(--accent);
115
  transition:transform 0.16s ease;
116
  }
117
  [data-theme="light"] #theme-toggle::after{transform:translateX(15px);}
118
+
119
  .eyebrow{
120
  font-family:'IBM Plex Mono',monospace;
121
  font-size:11.5px;
122
+ color:var(--accent);
123
  letter-spacing:0.09em;
124
  text-transform:uppercase;
125
  margin-bottom:16px;
126
  }
127
  h1{
128
+ font-family:'Source Serif 4',Georgia,serif;
129
+ font-size:38px;
130
+ line-height:1.22;
131
  font-weight:600;
132
  color:var(--silk);
133
  margin:0 0 16px;
134
  max-width:620px;
135
+ letter-spacing:-0.005em;
136
  }
137
+ .tagline{color:var(--muted);font-size:16px;line-height:1.65;max-width:540px;margin:0 0 44px;font-family:'Source Serif 4',serif;}
138
  .pin1{
139
  display:inline-block;
140
  width:5px;height:5px;
141
  border-radius:50%;
142
+ background:var(--accent);
143
  margin-right:7px;
144
+ box-shadow:0 0 4px var(--accent);
145
  }
146
  .metrics{
147
  display:grid;
148
  grid-template-columns:repeat(5,1fr);
149
+ border:1px solid var(--line);
150
+ border-radius:8px;
151
  overflow:hidden;
152
  margin-bottom:68px;
153
+ background:linear-gradient(180deg, var(--panel-2), var(--panel));
154
+ box-shadow:0 1px 0 rgba(255,255,255,0.03) inset, 0 12px 24px -16px rgba(0,0,0,0.5);
155
  }
156
  .metric{
157
+ padding:19px 12px;
 
158
  text-align:center;
159
+ border-right:1px solid var(--line);
160
  }
161
  .metric:last-child{border-right:none;}
162
  .metric b{
163
  display:block;
164
  font-family:'IBM Plex Mono',monospace;
165
+ font-size:22px;
166
  font-weight:600;
167
  color:var(--silk);
168
  margin-bottom:5px;
169
+ letter-spacing:-0.01em;
170
  }
171
+ .metric span{font-size:10.5px;color:var(--muted);letter-spacing:0.04em;text-transform:uppercase;font-family:'IBM Plex Mono',monospace;}
172
+
173
  section{margin-bottom:64px;}
174
  h2{
175
  font-family:'IBM Plex Mono',monospace;
 
183
  gap:10px;
184
  }
185
  h2::after{content:"";flex:1;height:1px;background:var(--line-bright);}
186
+
187
  .focus-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
188
  .card{
189
  position:relative;
190
+ background:linear-gradient(180deg, var(--panel-2), var(--panel));
191
+ border:1px solid var(--line);
192
+ border-radius:8px;
193
+ padding:18px;
194
+ box-shadow:0 1px 0 rgba(255,255,255,0.03) inset, 0 8px 20px -14px rgba(0,0,0,0.6);
195
+ transition:border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
 
 
 
 
196
  }
197
+
198
+ .focus-card{
199
+ cursor:pointer;
200
+ text-align:left;
201
+ width:100%;
202
+ font:inherit;
203
+ color:inherit;
204
+ transition:border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
205
  }
206
+ .focus-card:hover,.focus-card.active{
207
+ border-color:var(--line-bright);
208
+ transform:translateY(-1px);
209
+ box-shadow:0 1px 0 rgba(255,255,255,0.04) inset, 0 14px 28px -16px rgba(0,0,0,0.65);
210
  }
211
+ .focus-card.active{background:linear-gradient(180deg, var(--panel-2), var(--panel-2));}
212
  .focus-card b{font-family:'IBM Plex Mono',monospace;font-size:14px;color:var(--silk);display:block;margin-bottom:7px;}
213
+ .focus-card p{font-size:13.5px;color:var(--muted);margin:0;line-height:1.55;}
214
+ .focus-card em{
215
+ display:block;
216
+ margin-top:9px;
217
+ font-style:normal;
218
+ font-family:'IBM Plex Mono',monospace;
219
+ font-size:10.5px;
220
+ color:var(--accent);
221
+ letter-spacing:0.04em;
222
+ text-transform:uppercase;
223
+ }
224
+
225
+ .search-row{margin-bottom:14px;display:flex;gap:8px;align-items:center;}
226
  .search-row input{
227
+ flex:1;
228
  background:var(--panel);
229
+ border:1px solid var(--line);
230
  color:var(--text);
231
+ border-radius:6px;
232
+ padding:10px 14px;
233
  font-size:13.5px;
234
+ font-family:'Source Serif 4',serif;
235
  outline:none;
236
+ box-shadow:0 1px 2px rgba(0,0,0,0.3) inset;
237
+ transition:border-color 0.15s ease;
238
+ }
239
+ .search-row input:focus{border-color:var(--line-bright);}
240
+ .clear-filter{
241
+ display:none;
242
+ background:var(--panel);
243
+ border:1px solid var(--line);
244
+ color:var(--muted);
245
+ font-family:'IBM Plex Mono',monospace;
246
+ font-size:11px;
247
+ border-radius:6px;
248
+ padding:10px 12px;
249
+ cursor:pointer;
250
+ }
251
+ .clear-filter:hover{border-color:var(--line-bright);color:var(--silk);}
252
+ .clear-filter.show{display:inline-block;}
253
+
254
+ .empty-state{
255
+ display:none;
256
+ padding:22px;
257
+ text-align:center;
258
+ color:var(--muted);
259
+ font-family:'IBM Plex Mono',monospace;
260
+ font-size:12.5px;
261
+ border:1px solid var(--line);
262
+ border-radius:8px;
263
+ background:var(--panel);
264
  }
265
+ .empty-state.show{display:block;}
266
+
267
  .project-card{
268
  cursor:pointer;
269
+ transition:border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
270
+ display:block;
271
+ width:100%;
272
+ text-align:left;
273
+ font:inherit;
274
+ color:inherit;
275
  }
276
+ .project-card:hover,.project-card:focus-visible{
277
+ border-color:var(--line-bright);
278
+ transform:translateY(-1px);
279
+ box-shadow:0 1px 0 rgba(255,255,255,0.04) inset, 0 14px 28px -16px rgba(0,0,0,0.65);
280
+ }
281
+ .project-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
282
  .project-card h3{font-family:'IBM Plex Mono',monospace;font-size:16px;color:var(--silk);margin:0 0 14px;font-weight:600;}
283
  .project-meta{
284
  display:grid;
 
286
  gap:12px;
287
  margin-bottom:14px;
288
  padding-bottom:14px;
289
+ border-bottom:1px solid var(--line);
290
  }
291
  .project-meta div{font-size:12px;}
292
+ .project-meta b{display:block;color:var(--silk);font-family:'IBM Plex Mono',monospace;font-size:12.5px;margin-bottom:3px;}
293
  .project-meta span{color:var(--muted);}
294
  .project-card p.hint{font-size:12px;color:var(--muted);margin:0;font-family:'IBM Plex Mono',monospace;}
295
+
296
  .team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
297
  .team-card{text-align:center;}
298
  .avatar{
299
  width:34px;height:34px;
300
  margin:0 auto 10px;
301
+ border:1px solid var(--accent);
302
  border-radius:50%;
303
  position:relative;
304
  }
 
307
  position:absolute;
308
  inset:6px;
309
  border-radius:50%;
310
+ background:var(--accent);
311
+ opacity:0.4;
312
  }
313
  .team-card b{display:block;font-family:'IBM Plex Mono',monospace;font-size:13.5px;color:var(--silk);margin-bottom:4px;}
314
+ .team-card span{font-size:11.5px;color:var(--muted);font-family:'IBM Plex Mono',monospace;}
315
+
316
  .features{
317
  display:grid;
318
  grid-template-columns:repeat(2,1fr);
319
  gap:9px 22px;
320
+ font-size:13.5px;
321
  margin:0;
322
  padding:0;
323
  }
324
  .features li{list-style:none;padding-left:16px;position:relative;color:var(--muted);}
325
+ .features li::before{content:"—";position:absolute;left:0;color:var(--accent);}
326
+
327
  footer{
328
  display:flex;
329
  align-items:center;
 
335
  font-family:'IBM Plex Mono',monospace;
336
  }
337
  footer .flinks a{text-decoration:none;color:var(--text);margin-left:14px;}
338
+ footer .flinks a:hover{color:var(--accent);}
339
+
340
+ .toast{
341
+ position:fixed;
342
+ bottom:22px;
343
+ left:50%;
344
+ transform:translateX(-50%) translateY(12px);
345
+ background:linear-gradient(180deg, var(--panel-2), var(--panel));
346
+ border:1px solid var(--line-bright);
347
+ color:var(--silk);
348
+ font-family:'IBM Plex Mono',monospace;
349
+ font-size:12px;
350
+ padding:10px 16px;
351
+ border-radius:7px;
352
+ opacity:0;
353
+ pointer-events:none;
354
+ box-shadow:0 16px 32px -12px rgba(0,0,0,0.6);
355
+ transition:opacity 0.18s ease, transform 0.18s ease;
356
+ z-index:5;
357
+ }
358
+ .toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
359
+
360
  @media (max-width:720px){
361
  .metrics{grid-template-columns:repeat(2,1fr);}
362
  .metric{border-bottom:1px solid var(--line-bright);}
363
  .focus-grid,.team-grid{grid-template-columns:1fr;}
364
  .project-meta{grid-template-columns:repeat(2,1fr);}
365
+ h1{font-size:28px;}
366
  }
367
  @media print{
368
+ .star-stage,.cursor-glow,#theme-toggle,.theme-row,.search-row,.toast{display:none;}
369
  body{background:#fff;color:#000;}
370
  }
371
  </style>
372
  </head>
373
  <body>
374
 
375
+ <div class="star-stage" aria-hidden="true">
376
+ <svg class="starfield" viewBox="0 0 900 500" preserveAspectRatio="xMidYMid slice">
377
+ <circle cx="40" cy="60" r="1" fill="#fff" opacity="0.7"/>
378
+ <circle cx="120" cy="180" r="0.8" fill="#fff" opacity="0.5"/>
379
+ <circle cx="210" cy="40" r="1.1" fill="#fff" opacity="0.6"/>
380
+ <circle cx="300" cy="230" r="0.7" fill="#fff" opacity="0.4"/>
381
+ <circle cx="380" cy="90" r="1" fill="#fff" opacity="0.55"/>
382
+ <circle cx="460" cy="270" r="0.8" fill="#fff" opacity="0.5"/>
383
+ <circle cx="70" cy="330" r="0.9" fill="#fff" opacity="0.5"/>
384
+ <circle cx="160" cy="410" r="1" fill="#fff" opacity="0.6"/>
385
+ <circle cx="250" cy="130" r="0.7" fill="#fff" opacity="0.4"/>
386
+ <circle cx="520" cy="60" r="1" fill="#fff" opacity="0.55"/>
387
+ <circle cx="600" cy="200" r="0.8" fill="#fff" opacity="0.45"/>
388
+ <circle cx="670" cy="340" r="1.1" fill="#fff" opacity="0.6"/>
389
+ <circle cx="740" cy="120" r="0.7" fill="#fff" opacity="0.4"/>
390
+ <circle cx="820" cy="260" r="0.9" fill="#fff" opacity="0.5"/>
391
+ <circle cx="870" cy="70" r="1" fill="#fff" opacity="0.55"/>
392
+ <circle cx="30" cy="440" r="0.8" fill="#fff" opacity="0.45"/>
393
+ <circle cx="500" cy="400" r="0.7" fill="#fff" opacity="0.4"/>
394
+ <circle cx="780" cy="430" r="1" fill="#fff" opacity="0.5"/>
395
+ <circle cx="350" cy="330" r="0.6" fill="#fff" opacity="0.35"/>
396
+ <circle cx="630" cy="30" r="0.8" fill="#fff" opacity="0.45"/>
397
+ </svg>
 
 
398
  </div>
399
 
400
  <div class="cursor-glow"></div>
 
413
  <span class="brand-name">CUBIC</span>
414
  </div>
415
  <nav>
416
+ <a href="https://github.com/Cubic-Labs" target="_blank" rel="noopener">GitHub</a>
417
+ <a href="https://huggingface.co/Cubic" target="_blank" rel="noopener">HuggingFace</a>
418
  <div class="theme-row">
419
  <span class="switch-label">0</span>
420
+ <button id="theme-toggle" type="button" aria-label="Toggle light and dark theme" aria-pressed="false"></button>
421
  <span class="switch-label">1</span>
422
  </div>
423
  </nav>
 
437
 
438
  <section>
439
  <h2>Research Focus</h2>
440
+ <div class="focus-grid" id="focus-grid">
441
+ <button type="button" class="card focus-card" data-filter="agi">
442
+ <b>AGI Research</b>
443
+ <p>Advancing towards artificial general intelligence.</p>
444
+ <em>Filter projects →</em>
445
+ </button>
446
+ <button type="button" class="card focus-card" data-filter="cpu-first code">
447
+ <b>AI Development</b>
448
+ <p>CPU-first architectures and open-source models.</p>
449
+ <em>Filter projects →</em>
450
+ </button>
451
+ <button type="button" class="card focus-card" data-filter="security">
452
+ <b>Cybersecurity</b>
453
+ <p>AI-powered security tools and threat detection.</p>
454
+ <em>Filter projects →</em>
455
+ </button>
456
  </div>
457
  </section>
458
 
459
  <section>
460
  <h2>Projects</h2>
461
  <div class="search-row">
462
+ <input id="search" type="text" placeholder="Search projects — press / to focus" aria-label="Search projects">
463
+ <button type="button" class="clear-filter" id="clear-filter">clear filter ×</button>
464
  </div>
465
  <div id="project-list">
466
+ <div class="card project-card" data-name="axl cpu-first code generation" tabindex="0" role="button" aria-label="Open AXL project on HuggingFace">
467
  <h3>AXL — CPU-First Code Generation</h3>
468
  <div class="project-meta">
469
  <div><b>27</b><span>models, 566K–318M params</span></div>
 
474
  <p class="hint">&gt; click for the full AXL detail page</p>
475
  </div>
476
  </div>
477
+ <div class="empty-state" id="empty-state">No projects match that search. Press Esc to reset.</div>
478
  </section>
479
 
480
  <section>
481
  <h2>Team</h2>
482
  <div class="team-grid">
483
+ <div class="card team-card"><div class="avatar"></div><b>Kennedy</b><span>CEO &amp; Head of AI Research</span></div>
484
+ <div class="card team-card"><div class="avatar"></div><b>Jasser</b><span>CTO &amp; Head of Cybersecurity</span></div>
485
  <div class="card team-card"><div class="avatar"></div><b>Taem</b><span>Head of Marketing/Sales/Technical Assist</span></div>
486
  </div>
487
  </section>
 
492
  <li>Dark/Light theme toggle</li>
493
  <li>Category filtering on projects</li>
494
  <li>Search across projects</li>
495
+ <li>Layered 3D sun backdrop</li>
496
  <li>Keyboard shortcuts (/ to search, Esc to close)</li>
497
  <li>Print-friendly CSS</li>
498
  <li>Responsive design</li>
 
502
  <footer>
503
  <span>CPU-first AI for everyone.</span>
504
  <span class="flinks">
505
+ <a href="https://github.com/Cubic-Labs" target="_blank" rel="noopener">GitHub</a>
506
+ <a href="https://huggingface.co/Cubic" target="_blank" rel="noopener">HuggingFace</a>
507
  </span>
508
  </footer>
509
  </div>
510
 
511
+ <div class="toast" id="toast" role="status" aria-live="polite"></div>
512
+
513
  <script>
514
+ (function(){
515
+ 'use strict';
516
+
517
+ var root = document.documentElement;
518
+ var toast = document.getElementById('toast');
519
+ var toastTimer = null;
520
+
521
+ function showToast(msg){
522
+ toast.textContent = msg;
523
+ toast.classList.add('show');
524
+ clearTimeout(toastTimer);
525
+ toastTimer = setTimeout(function(){ toast.classList.remove('show'); }, 1800);
526
+ }
527
+
528
+ /* ---------- theme toggle ---------- */
529
+ var THEME_KEY = 'cubic-theme';
530
+ var toggle = document.getElementById('theme-toggle');
531
+
532
+ function applyTheme(mode){
533
+ root.setAttribute('data-theme', mode);
534
+ toggle.setAttribute('aria-pressed', mode === 'light' ? 'true' : 'false');
535
+ }
536
+
537
+ var storedTheme = null;
538
+ try { storedTheme = window.localStorage.getItem(THEME_KEY); } catch (e) { storedTheme = null; }
539
+ if (storedTheme === 'light' || storedTheme === 'dark') {
540
+ applyTheme(storedTheme);
541
+ } else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: light)').matches) {
542
+ applyTheme('light');
543
+ }
544
+
545
+ toggle.addEventListener('click', function(){
546
+ var next = root.getAttribute('data-theme') === 'light' ? 'dark' : 'light';
547
+ applyTheme(next);
548
+ try { window.localStorage.setItem(THEME_KEY, next); } catch (e) { /* storage unavailable, theme still applies for session */ }
549
+ });
550
+
551
+ /* ---------- search + category filter ---------- */
552
+ var search = document.getElementById('search');
553
+ var cards = Array.prototype.slice.call(document.querySelectorAll('.project-card'));
554
+ var emptyState = document.getElementById('empty-state');
555
+ var clearFilterBtn = document.getElementById('clear-filter');
556
+ var focusButtons = Array.prototype.slice.call(document.querySelectorAll('.focus-card'));
557
+ var activeCategory = '';
558
+
559
+ function runFilter(){
560
+ var q = search.value.trim().toLowerCase();
561
+ var visibleCount = 0;
562
+
563
+ cards.forEach(function(card){
564
+ var name = card.dataset.name || '';
565
+ var matchesText = name.indexOf(q) !== -1;
566
+ var matchesCategory = !activeCategory || name.indexOf(activeCategory) !== -1;
567
+ var visible = matchesText && matchesCategory;
568
+ card.style.display = visible ? '' : 'none';
569
+ if (visible) visibleCount++;
570
+ });
571
+
572
+ emptyState.classList.toggle('show', visibleCount === 0);
573
+ clearFilterBtn.classList.toggle('show', !!activeCategory);
574
+ }
575
+
576
+ search.addEventListener('input', runFilter);
577
+
578
+ focusButtons.forEach(function(btn){
579
+ btn.addEventListener('click', function(){
580
+ var filterValue = btn.dataset.filter || '';
581
+ var isSame = activeCategory === filterValue;
582
+ activeCategory = isSame ? '' : filterValue;
583
+
584
+ focusButtons.forEach(function(b){ b.classList.remove('active'); });
585
+ if (!isSame) btn.classList.add('active');
586
+
587
+ runFilter();
588
+ if (activeCategory) {
589
+ showToast('Filtered by ' + btn.querySelector('b').textContent);
590
+ } else {
591
+ showToast('Filter cleared');
592
+ }
593
+ });
594
  });
595
 
596
+ clearFilterBtn.addEventListener('click', function(){
597
+ activeCategory = '';
598
+ focusButtons.forEach(function(b){ b.classList.remove('active'); });
599
+ runFilter();
600
+ showToast('Filter cleared');
601
  });
602
 
603
+ /* ---------- keyboard shortcuts ---------- */
604
+ document.addEventListener('keydown', function(e){
605
+ var tag = document.activeElement ? document.activeElement.tagName : '';
606
+ var typing = tag === 'INPUT' || tag === 'TEXTAREA';
607
+
608
+ if (e.key === '/' && !typing) {
609
  e.preventDefault();
610
  search.focus();
611
  }
612
  if (e.key === 'Escape') {
613
+ if (search.value) {
614
+ search.value = '';
615
+ runFilter();
616
+ }
617
+ if (activeCategory) {
618
+ activeCategory = '';
619
+ focusButtons.forEach(function(b){ b.classList.remove('active'); });
620
+ runFilter();
621
+ }
622
  search.blur();
623
  }
624
  });
625
 
626
+ /* ---------- project card open (click + keyboard) ---------- */
627
+ function openProject(card){
628
+ var url = card.dataset.url || 'https://huggingface.co/Cubic';
629
+ window.open(url, '_blank', 'noopener');
630
+ }
631
+
632
+ cards.forEach(function(card){
633
+ card.addEventListener('click', function(){ openProject(card); });
634
+ card.addEventListener('keydown', function(e){
635
+ if (e.key === 'Enter' || e.key === ' ') {
636
+ e.preventDefault();
637
+ openProject(card);
638
+ }
639
+ });
640
  });
641
 
642
+ /* ---------- cursor glow (perf-guarded, respects reduced motion) ---------- */
643
+ var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
644
  if (!reduceMotion) {
645
+ var mx = window.innerWidth / 2, my = window.innerHeight / 3, ticking = false;
646
+ window.addEventListener('mousemove', function(e){
647
  mx = e.clientX; my = e.clientY;
648
  if (!ticking) {
649
  ticking = true;
650
+ requestAnimationFrame(function(){
651
  root.style.setProperty('--mx', mx + 'px');
652
  root.style.setProperty('--my', my + 'px');
653
  ticking = false;
 
656
  }, { passive: true });
657
  }
658
 
659
+ document.addEventListener('visibilitychange', function(){
660
  document.body.classList.toggle('paused', document.hidden);
661
  });
662
+
663
+ /* initial paint */
664
+ runFilter();
665
+ })();
666
  </script>
667
  </body>
668
  </html>