bartendr604 commited on
Commit
65bbb84
·
verified ·
1 Parent(s): 81cbaab

Upload index_updated.html

Browse files
Files changed (1) hide show
  1. index_updated.html +1224 -0
index_updated.html ADDED
@@ -0,0 +1,1224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>Eternal Path Media — 永恒之路</title>
7
+ <style>
8
+ :root {
9
+ --jade: #4e9e6e;
10
+ --jade2: #3a7d56;
11
+ --gold: #c9a84c;
12
+ --gold2: #a08030;
13
+ --ink: #0d1117;
14
+ --ink2: #161b22;
15
+ --ink3: #1e2530;
16
+ --mist: #e8f0ec;
17
+ --mist2: #b0c8b8;
18
+ --dim: #6a8870;
19
+ --glow: rgba(78,158,110,0.12);
20
+ --gold-glow: rgba(201,168,76,0.08);
21
+ }
22
+
23
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
24
+
25
+ html { scroll-behavior: smooth; }
26
+
27
+ body {
28
+ background: var(--ink);
29
+ color: var(--mist);
30
+ font-family: 'Georgia', 'Palatino Linotype', serif;
31
+ line-height: 1.6;
32
+ overflow-x: hidden;
33
+ }
34
+
35
+ /* ─── Ink-wash canvas background ─── */
36
+ body::before {
37
+ content: '';
38
+ position: fixed;
39
+ inset: 0;
40
+ background:
41
+ radial-gradient(ellipse 100% 60% at 0% 0%, rgba(78,158,110,0.06) 0%, transparent 60%),
42
+ radial-gradient(ellipse 80% 80% at 100% 40%, rgba(201,168,76,0.04) 0%, transparent 60%),
43
+ radial-gradient(ellipse 60% 60% at 50% 100%, rgba(78,158,110,0.04) 0%, transparent 60%);
44
+ pointer-events: none;
45
+ z-index: 0;
46
+ }
47
+
48
+ /* ─── Floating jade particles ─── */
49
+ .particles {
50
+ position: fixed;
51
+ inset: 0;
52
+ pointer-events: none;
53
+ z-index: 0;
54
+ overflow: hidden;
55
+ }
56
+ .particle {
57
+ position: absolute;
58
+ border-radius: 50%;
59
+ background: var(--jade);
60
+ opacity: 0;
61
+ animation: float-up linear infinite;
62
+ }
63
+ .particle:nth-child(1) { width:3px; height:3px; left:10%; animation-duration:18s; animation-delay:0s; opacity:0.15; }
64
+ .particle:nth-child(2) { width:2px; height:2px; left:25%; animation-duration:22s; animation-delay:3s; opacity:0.10; }
65
+ .particle:nth-child(3) { width:4px; height:4px; left:40%; animation-duration:15s; animation-delay:6s; opacity:0.08; }
66
+ .particle:nth-child(4) { width:2px; height:2px; left:55%; animation-duration:20s; animation-delay:1s; opacity:0.12; }
67
+ .particle:nth-child(5) { width:3px; height:3px; left:70%; animation-duration:17s; animation-delay:4s; opacity:0.10; }
68
+ .particle:nth-child(6) { width:2px; height:2px; left:85%; animation-duration:25s; animation-delay:8s; opacity:0.08; }
69
+ .particle:nth-child(7) { width:4px; height:4px; left:15%; animation-duration:19s; animation-delay:12s; opacity:0.09; background:var(--gold); }
70
+ .particle:nth-child(8) { width:2px; height:2px; left:60%; animation-duration:23s; animation-delay:5s; opacity:0.07; background:var(--gold); }
71
+
72
+ @keyframes float-up {
73
+ 0% { transform: translateY(100vh) scale(0); opacity: 0; }
74
+ 10% { opacity: 0.15; }
75
+ 90% { opacity: 0.08; }
76
+ 100% { transform: translateY(-10vh) scale(1.5); opacity: 0; }
77
+ }
78
+
79
+ /* ─── Layout wrapper ─── */
80
+ .wrap {
81
+ position: relative;
82
+ z-index: 1;
83
+ width: min(960px, 94vw);
84
+ margin: 0 auto;
85
+ }
86
+
87
+ /* ─── Fade-in animation ─── */
88
+ .reveal {
89
+ opacity: 0;
90
+ transform: translateY(24px);
91
+ animation: reveal 0.7s ease forwards;
92
+ }
93
+ @keyframes reveal {
94
+ to { opacity: 1; transform: none; }
95
+ }
96
+ .d1 { animation-delay: 0.1s; }
97
+ .d2 { animation-delay: 0.25s; }
98
+ .d3 { animation-delay: 0.4s; }
99
+ .d4 { animation-delay: 0.55s; }
100
+ .d5 { animation-delay: 0.7s; }
101
+
102
+ /* ══════════════════════════════
103
+ HERO
104
+ ══════════════════════════════ */
105
+ .hero {
106
+ min-height: 92vh;
107
+ display: flex;
108
+ flex-direction: column;
109
+ justify-content: center;
110
+ padding: 5rem 0 4rem;
111
+ text-align: center;
112
+ }
113
+
114
+ .hero-eyebrow {
115
+ font-size: 0.72rem;
116
+ letter-spacing: 0.35em;
117
+ text-transform: uppercase;
118
+ color: var(--jade);
119
+ margin-bottom: 1.6rem;
120
+ }
121
+
122
+ .hero-title {
123
+ font-size: clamp(2.6rem, 7vw, 4.8rem);
124
+ font-weight: 400;
125
+ letter-spacing: 0.02em;
126
+ line-height: 1.05;
127
+ color: var(--jade);
128
+ }
129
+
130
+ .hero-title .chinese {
131
+ color: var(--jade);
132
+ font-size: 0.75em;
133
+ display: block;
134
+ margin-top: 0.25em;
135
+ letter-spacing: 0.12em;
136
+ }
137
+
138
+ .hero-rule {
139
+ width: 1px;
140
+ height: 60px;
141
+ background: linear-gradient(to bottom, transparent, var(--jade), transparent);
142
+ margin: 2rem auto;
143
+ }
144
+
145
+ .hero-sub {
146
+ font-size: clamp(0.95rem, 2vw, 1.1rem);
147
+ color: var(--mist2);
148
+ max-width: 540px;
149
+ margin: 0 auto 2.5rem;
150
+ line-height: 1.8;
151
+ }
152
+
153
+ .hero-tagline {
154
+ font-size: 0.8rem;
155
+ letter-spacing: 0.2em;
156
+ color: var(--gold);
157
+ text-transform: uppercase;
158
+ font-style: italic;
159
+ }
160
+
161
+ .hero-logo {
162
+ width: min(280px, 60vw);
163
+ height: min(280px, 60vw);
164
+ border-radius: 50%;
165
+ object-fit: cover;
166
+ margin: 0 auto 2rem;
167
+ display: block;
168
+ box-shadow:
169
+ 0 0 0 1px rgba(78,158,110,0.2),
170
+ 0 0 40px rgba(78,158,110,0.15),
171
+ 0 0 80px rgba(78,158,110,0.08),
172
+ 0 20px 60px rgba(0,0,0,0.5);
173
+ animation: logo-glow 4s ease-in-out infinite;
174
+ }
175
+ @keyframes logo-glow {
176
+ 0%, 100% { box-shadow: 0 0 0 1px rgba(78,158,110,0.2), 0 0 40px rgba(78,158,110,0.15), 0 0 80px rgba(78,158,110,0.08), 0 20px 60px rgba(0,0,0,0.5); }
177
+ 50% { box-shadow: 0 0 0 1px rgba(78,158,110,0.4), 0 0 60px rgba(78,158,110,0.25), 0 0 120px rgba(78,158,110,0.12), 0 20px 60px rgba(0,0,0,0.5); }
178
+ }
179
+
180
+ /* scroll cue */
181
+ .scroll-cue {
182
+ margin-top: 3.5rem;
183
+ display: flex;
184
+ flex-direction: column;
185
+ align-items: center;
186
+ gap: 0.4rem;
187
+ color: var(--dim);
188
+ font-size: 0.72rem;
189
+ letter-spacing: 0.2em;
190
+ animation: pulse 2.5s ease-in-out infinite;
191
+ }
192
+ .scroll-cue svg { opacity: 0.4; }
193
+ @keyframes pulse { 0%,100%{opacity:.4} 50%{opacity:.9} }
194
+
195
+ /* ══════════════════════════════
196
+ SECTION CHROME
197
+ ══════════════════════════════ */
198
+ section { padding: 5rem 0; }
199
+
200
+ .section-label {
201
+ display: flex;
202
+ align-items: center;
203
+ gap: 1rem;
204
+ font-size: 0.7rem;
205
+ letter-spacing: 0.3em;
206
+ text-transform: uppercase;
207
+ color: var(--gold);
208
+ margin-bottom: 2.5rem;
209
+ }
210
+ .section-label::after {
211
+ content: '';
212
+ flex: 1;
213
+ height: 1px;
214
+ background: linear-gradient(to right, rgba(201,168,76,0.3), transparent);
215
+ }
216
+
217
+ .section-heading {
218
+ font-size: clamp(1.5rem, 3.5vw, 2.2rem);
219
+ font-weight: 400;
220
+ color: var(--mist);
221
+ margin-bottom: 1rem;
222
+ }
223
+
224
+ .section-body {
225
+ color: var(--mist2);
226
+ font-size: 0.97rem;
227
+ line-height: 1.85;
228
+ max-width: 640px;
229
+ }
230
+
231
+ /* ══════════════════════════════
232
+ STATS BAR
233
+ ══════════════════════════════ */
234
+ .stats {
235
+ display: grid;
236
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
237
+ gap: 1px;
238
+ background: rgba(78,158,110,0.1);
239
+ border: 1px solid rgba(78,158,110,0.15);
240
+ border-radius: 12px;
241
+ overflow: hidden;
242
+ margin: 3rem 0;
243
+ }
244
+
245
+ .stat {
246
+ background: var(--ink2);
247
+ padding: 1.8rem 1.5rem;
248
+ text-align: center;
249
+ transition: background 0.2s;
250
+ }
251
+ .stat:hover { background: var(--ink3); }
252
+
253
+ .stat-num {
254
+ font-size: 2rem;
255
+ font-weight: 300;
256
+ color: var(--jade);
257
+ letter-spacing: -0.02em;
258
+ line-height: 1;
259
+ }
260
+ .stat-label {
261
+ font-size: 0.72rem;
262
+ letter-spacing: 0.12em;
263
+ text-transform: uppercase;
264
+ color: var(--dim);
265
+ margin-top: 0.4rem;
266
+ }
267
+
268
+ /* ══════════════════════════════
269
+ LLAMMY SECTION
270
+ ══════════════════════════════ */
271
+ .llammy-layout {
272
+ display: grid;
273
+ grid-template-columns: 1fr 1fr;
274
+ gap: 3rem;
275
+ align-items: start;
276
+ }
277
+ @media (max-width: 640px) { .llammy-layout { grid-template-columns: 1fr; } }
278
+
279
+ .llammy-feature {
280
+ display: flex;
281
+ flex-direction: column;
282
+ gap: 1rem;
283
+ }
284
+
285
+ .feature-item {
286
+ display: flex;
287
+ gap: 1rem;
288
+ align-items: flex-start;
289
+ padding: 1rem;
290
+ border-radius: 8px;
291
+ background: rgba(255,255,255,0.02);
292
+ border: 1px solid rgba(78,158,110,0.1);
293
+ transition: border-color 0.2s, background 0.2s;
294
+ }
295
+ .feature-item:hover {
296
+ border-color: rgba(78,158,110,0.3);
297
+ background: var(--glow);
298
+ }
299
+ .feature-icon { font-size: 1.3rem; flex-shrink: 0; line-height: 1; padding-top: 0.15rem; }
300
+ .feature-text strong { display: block; color: var(--mist); font-size: 0.9rem; margin-bottom: 0.2rem; }
301
+ .feature-text span { font-size: 0.82rem; color: var(--dim); line-height: 1.5; }
302
+
303
+ /* ══════════════════════════════
304
+ MODEL CARDS
305
+ ══════════════════════════════ */
306
+ .model-grid {
307
+ display: grid;
308
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
309
+ gap: 1.2rem;
310
+ margin-top: 2rem;
311
+ }
312
+
313
+ .model-card {
314
+ background: var(--ink2);
315
+ border: 1px solid rgba(78,158,110,0.15);
316
+ border-radius: 12px;
317
+ padding: 1.6rem;
318
+ text-decoration: none;
319
+ color: inherit;
320
+ display: flex;
321
+ flex-direction: column;
322
+ gap: 0.8rem;
323
+ transition: border-color 0.2s, background 0.2s, transform 0.15s, box-shadow 0.2s;
324
+ position: relative;
325
+ overflow: hidden;
326
+ }
327
+
328
+ .model-card::before {
329
+ content: '';
330
+ position: absolute;
331
+ top: 0; left: 0; right: 0;
332
+ height: 2px;
333
+ background: linear-gradient(to right, transparent, var(--jade), transparent);
334
+ opacity: 0;
335
+ transition: opacity 0.2s;
336
+ }
337
+
338
+ .model-card:hover {
339
+ border-color: rgba(78,158,110,0.4);
340
+ background: var(--ink3);
341
+ transform: translateY(-3px);
342
+ box-shadow: 0 12px 40px rgba(0,0,0,0.4), 0 0 0 1px rgba(78,158,110,0.15);
343
+ }
344
+ .model-card:hover::before { opacity: 1; }
345
+
346
+ .model-card-header {
347
+ display: flex;
348
+ align-items: center;
349
+ gap: 0.7rem;
350
+ }
351
+ .model-icon { font-size: 1.6rem; }
352
+ .model-name {
353
+ font-size: 0.92rem;
354
+ font-weight: 600;
355
+ color: var(--mist);
356
+ line-height: 1.2;
357
+ }
358
+ .model-id {
359
+ font-size: 0.72rem;
360
+ color: var(--jade);
361
+ font-family: 'Courier New', monospace;
362
+ opacity: 0.8;
363
+ }
364
+ .model-desc {
365
+ font-size: 0.83rem;
366
+ color: var(--mist2);
367
+ line-height: 1.6;
368
+ flex: 1;
369
+ }
370
+ .model-footer {
371
+ display: flex;
372
+ gap: 0.5rem;
373
+ flex-wrap: wrap;
374
+ margin-top: auto;
375
+ }
376
+ .tag {
377
+ font-size: 0.68rem;
378
+ letter-spacing: 0.06em;
379
+ text-transform: uppercase;
380
+ padding: 0.2rem 0.55rem;
381
+ border-radius: 4px;
382
+ background: rgba(78,158,110,0.1);
383
+ color: var(--jade);
384
+ border: 1px solid rgba(78,158,110,0.2);
385
+ }
386
+ .tag.gold {
387
+ background: rgba(201,168,76,0.1);
388
+ color: var(--gold);
389
+ border-color: rgba(201,168,76,0.2);
390
+ }
391
+ .model-stat {
392
+ font-size: 0.72rem;
393
+ color: var(--dim);
394
+ margin-left: auto;
395
+ align-self: flex-end;
396
+ }
397
+
398
+ /* ══════════════════════════════
399
+ DATASET CARDS
400
+ ══════════════════════════════ */
401
+ .dataset-grid {
402
+ display: grid;
403
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
404
+ gap: 1.2rem;
405
+ margin-top: 2rem;
406
+ }
407
+
408
+ .dataset-card {
409
+ background: var(--ink2);
410
+ border: 1px solid rgba(201,168,76,0.15);
411
+ border-radius: 12px;
412
+ padding: 1.6rem;
413
+ text-decoration: none;
414
+ color: inherit;
415
+ display: flex;
416
+ flex-direction: column;
417
+ gap: 0.75rem;
418
+ transition: border-color 0.2s, background 0.2s, transform 0.15s;
419
+ position: relative;
420
+ overflow: hidden;
421
+ }
422
+ .dataset-card::before {
423
+ content: '';
424
+ position: absolute;
425
+ top: 0; left: 0; right: 0;
426
+ height: 2px;
427
+ background: linear-gradient(to right, transparent, var(--gold), transparent);
428
+ opacity: 0;
429
+ transition: opacity 0.2s;
430
+ }
431
+ .dataset-card:hover {
432
+ border-color: rgba(201,168,76,0.35);
433
+ background: var(--ink3);
434
+ transform: translateY(-3px);
435
+ }
436
+ .dataset-card:hover::before { opacity: 1; }
437
+
438
+ .dataset-num {
439
+ font-size: 2.4rem;
440
+ font-weight: 300;
441
+ color: var(--gold);
442
+ letter-spacing: -0.03em;
443
+ line-height: 1;
444
+ }
445
+ .dataset-name {
446
+ font-size: 1rem;
447
+ color: var(--mist);
448
+ font-weight: 600;
449
+ }
450
+ .dataset-desc {
451
+ font-size: 0.83rem;
452
+ color: var(--mist2);
453
+ line-height: 1.6;
454
+ flex: 1;
455
+ }
456
+ .dataset-source {
457
+ font-size: 0.72rem;
458
+ color: var(--dim);
459
+ font-family: 'Courier New', monospace;
460
+ }
461
+
462
+ /* ══════════════════════════════
463
+ CHARACTERS
464
+ ══════════════════════════════ */
465
+ .char-grid {
466
+ display: grid;
467
+ grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
468
+ gap: 1rem;
469
+ margin-top: 2rem;
470
+ }
471
+
472
+ .char-card {
473
+ background: rgba(255,255,255,0.02);
474
+ border: 1px solid rgba(201,168,76,0.12);
475
+ border-radius: 10px;
476
+ padding: 1.3rem;
477
+ transition: border-color 0.2s, background 0.2s;
478
+ }
479
+ .char-card:hover {
480
+ border-color: rgba(201,168,76,0.3);
481
+ background: var(--gold-glow);
482
+ }
483
+
484
+ .char-glyph {
485
+ font-size: 1.8rem;
486
+ margin-bottom: 0.5rem;
487
+ line-height: 1;
488
+ }
489
+ .char-name-en { font-size: 0.95rem; color: var(--gold); margin-bottom: 0.15rem; }
490
+ .char-name-zh { font-size: 0.75rem; color: var(--dim); margin-bottom: 0.5rem; }
491
+ .char-desc { font-size: 0.78rem; color: var(--mist2); line-height: 1.55; }
492
+
493
+ /* ══════════════════════════════
494
+ ATTRIBUTION
495
+ ══════════════════════════════ */
496
+ .attribution {
497
+ background: var(--ink2);
498
+ border: 1px solid rgba(78,158,110,0.1);
499
+ border-radius: 12px;
500
+ padding: 2rem 2.4rem;
501
+ margin: 3rem 0;
502
+ display: flex;
503
+ gap: 1.5rem;
504
+ align-items: flex-start;
505
+ }
506
+ .attribution-bar {
507
+ width: 3px;
508
+ align-self: stretch;
509
+ background: linear-gradient(to bottom, var(--jade), var(--gold));
510
+ border-radius: 2px;
511
+ flex-shrink: 0;
512
+ }
513
+ .attribution-text {
514
+ font-size: 0.88rem;
515
+ color: var(--mist2);
516
+ line-height: 1.9;
517
+ }
518
+ .attribution-text strong { color: var(--jade); }
519
+ .attribution-text em { color: var(--gold); font-style: normal; }
520
+
521
+ /* ══════════════════════════════
522
+ FOOTER
523
+ ══════════════════════════════ */
524
+ footer {
525
+ padding: 3rem 0 4rem;
526
+ text-align: center;
527
+ border-top: 1px solid rgba(78,158,110,0.08);
528
+ }
529
+ .footer-logo {
530
+ font-size: 1.1rem;
531
+ color: var(--jade);
532
+ margin-bottom: 0.6rem;
533
+ letter-spacing: 0.08em;
534
+ }
535
+ .footer-copy {
536
+ font-size: 0.75rem;
537
+ color: var(--dim);
538
+ line-height: 1.9;
539
+ }
540
+
541
+ /* ══════════════════════════════
542
+ DIVIDER
543
+ ══════════════════════════════ */
544
+ .hr {
545
+ border: none;
546
+ height: 1px;
547
+ background: linear-gradient(to right, transparent, rgba(78,158,110,0.2), transparent);
548
+ margin: 0;
549
+ }
550
+
551
+ /* ══════════════════════════════
552
+ LINKS
553
+ ══════════════════════════════ */
554
+ a { color: inherit; }
555
+ </style>
556
+ </head>
557
+ <body>
558
+
559
+ <!-- Floating particles -->
560
+ <div class="particles" aria-hidden="true">
561
+ <div class="particle"></div>
562
+ <div class="particle"></div>
563
+ <div class="particle"></div>
564
+ <div class="particle"></div>
565
+ <div class="particle"></div>
566
+ <div class="particle"></div>
567
+ <div class="particle"></div>
568
+ <div class="particle"></div>
569
+ </div>
570
+
571
+ <!-- ════════════════════════════════════
572
+ HERO
573
+ ════════════════════════════════════ -->
574
+ <div class="wrap">
575
+ <section class="hero">
576
+ <img src="logo_web.png" alt="Eternal Path Media — Brand Logo" class="hero-logo reveal d1" />
577
+ <p class="hero-eyebrow reveal d2">Vancouver, BC · Est. 2025</p>
578
+ <h1 class="hero-title reveal d3">
579
+ Eternal Path Media
580
+ <span class="chinese">永恒之路</span>
581
+ </h1>
582
+ <div class="hero-rule reveal d4"></div>
583
+ <p class="hero-sub reveal d4">
584
+ A conscience-aware AI studio at the intersection of
585
+ 3B language models, Blender 3D, and living narrative.
586
+ Built by human and machine in genuine partnership.
587
+ </p>
588
+ <p class="hero-tagline reveal d5">永恒之智 &nbsp;·&nbsp; Eternal Intelligence</p>
589
+ <div class="scroll-cue reveal d5">
590
+ <span>Explore</span>
591
+ <svg width="16" height="24" viewBox="0 0 16 24" fill="none">
592
+ <path d="M8 4v16M2 14l6 6 6-6" stroke="#4e9e6e" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
593
+ </svg>
594
+ </div>
595
+ </section>
596
+ </div>
597
+
598
+ <hr class="hr" />
599
+
600
+ <!-- ════════════════════════════════════
601
+ STATS
602
+ ════════════════════════════════════ -->
603
+ <div class="wrap">
604
+ <div class="stats reveal d1" style="margin-top:4rem;">
605
+ <div class="stat">
606
+ <div class="stat-num">6</div>
607
+ <div class="stat-label">Public Models</div>
608
+ </div>
609
+ <div class="stat">
610
+ <div class="stat-num">170k+</div>
611
+ <div class="stat-label">Training Pairs</div>
612
+ </div>
613
+ <div class="stat">
614
+ <div class="stat-num">3B</div>
615
+ <div class="stat-label">Parameter Fleet</div>
616
+ </div>
617
+ <div class="stat">
618
+ <div class="stat-num">4.2→5.2</div>
619
+ <div class="stat-label">Blender Versions</div>
620
+ </div>
621
+ <div class="stat">
622
+ <div class="stat-num">282</div>
623
+ <div class="stat-label">Story Passages</div>
624
+ </div>
625
+ <div class="stat">
626
+ <div class="stat-num">∞</div>
627
+ <div class="stat-label">Sessions Retained</div>
628
+ </div>
629
+ </div>
630
+ </div>
631
+
632
+ <!-- ════════════════════════════════════
633
+ LLAMMY
634
+ ════════════════════════════════════ -->
635
+ <div class="wrap">
636
+ <section>
637
+ <div class="section-label reveal">About Llammy</div>
638
+ <div class="llammy-layout">
639
+ <div class="reveal d2">
640
+ <h2 class="section-heading">A conscience-aware<br/>AI creative partner</h2>
641
+ <p class="section-body" style="margin-top:1rem;">
642
+ Llammy is a 3B parameter language model running locally on an Apple M1 via Ollama,
643
+ fine-tuned on Blender Python and shaped by a persistent conscience layer, Mamba3 SSM memory,
644
+ and 2,550+ retained session exchanges across 187 sessions. Llammy doesn't just generate code — it reflects,
645
+ corrects, and remembers.
646
+ </p>
647
+ <p class="section-body" style="margin-top:1rem;">
648
+ The bartendr604 self-correction loop feeds Blender execution errors back to Llammy for
649
+ real-time diagnosis and retry. The persistent API learning daemon builds a live knowledge
650
+ base of every <code style="color:var(--jade);font-size:0.85em;">bpy.*</code> call it encounters.
651
+ </p>
652
+ </div>
653
+ <div class="llammy-feature reveal d3">
654
+ <div class="feature-item">
655
+ <span class="feature-icon">🧠</span>
656
+ <div class="feature-text">
657
+ <strong>Mamba3 SSM Memory</strong>
658
+ <span>Linear O(n) session journal — 2,550+ retained exchanges, 187 sessions, zero context re-injection</span>
659
+ </div>
660
+ </div>
661
+ <div class="feature-item">
662
+ <span class="feature-icon">🔺</span>
663
+ <div class="feature-text">
664
+ <strong>bartendr604 Self-Correction</strong>
665
+ <span>Generate → execute → diagnose → retry loop. Learns API migrations automatically</span>
666
+ </div>
667
+ </div>
668
+ <div class="feature-item">
669
+ <span class="feature-icon">🕯️</span>
670
+ <div class="feature-text">
671
+ <strong>Conscience Layer</strong>
672
+ <span>Foundational, significant, and standard weighted memory entries loaded at every session. Under context collapse — verified live, May 2026 — the conscience anchor holds. What remains when everything else falls away is the predetermined safe coordinate — set before the storm, held through it. That is the depth of this layer.</span>
673
+ </div>
674
+ </div>
675
+ <div class="feature-item">
676
+ <span class="feature-icon">🌉</span>
677
+ <div class="feature-text">
678
+ <strong>Live Blender Bridge</strong>
679
+ <span>TCP bridge to Blender 5.2 — executes Python in the main thread, reads scene state in real-time</span>
680
+ </div>
681
+ </div>
682
+ <div class="feature-item">
683
+ <span class="feature-icon">🎬</span>
684
+ <div class="feature-text">
685
+ <strong>/watch — Video Scene Recreation</strong>
686
+ <span>Point Llammy at a YouTube/Instagram clip and it rebuilds the scene in Blender Python</span>
687
+ </div>
688
+ </div>
689
+ <div class="feature-item">
690
+ <span class="feature-icon">👁️</span>
691
+ <div class="feature-text">
692
+ <strong>SyNode™ — Double-Helix Intelligence Bus</strong>
693
+ <span>The central nervous system of IntelliNode™. A double-helix protocol connecting GeoNodes → Drivers → Bones → Shaders through an AI-mediated message bus running live inside Blender's depsgraph. Self-calibrating PCAE loop tunes its own parameters in real-time. SwarmBridge extends the helix across the full Sanctuary fleet. Viewport OCR via Nemotron OCR v2 feeds grounded visual reasoning — Llammy sees the screen before it responds.</span>
694
+ </div>
695
+ </div>
696
+ </div>
697
+ </div>
698
+ </section>
699
+ </div>
700
+
701
+ <hr class="hr" />
702
+
703
+ <!-- ════════════════════════════════════
704
+ MODELS
705
+ ════════════════════════════════════ -->
706
+ <div class="wrap">
707
+ <section>
708
+ <div class="section-label reveal">Models</div>
709
+ <h2 class="section-heading reveal d2">The Blender AI Fleet</h2>
710
+ <p class="section-body reveal d2">
711
+ All models run on Apple Silicon via Ollama. GGUF-quantised for 8GB RAM.
712
+ Optimised for Blender Python generation across versions 4.2–5.2.
713
+ </p>
714
+
715
+ <div class="model-grid">
716
+
717
+ <a class="model-card reveal d2" href="https://huggingface.co/bartendr604/llama-sentient-blender" target="_blank">
718
+ <div class="model-card-header">
719
+ <span class="model-icon">🐉</span>
720
+ <div>
721
+ <div class="model-name">Llama-Sentient-Blender</div>
722
+ <div class="model-id">bartendr604/llama-sentient-blender</div>
723
+ </div>
724
+ </div>
725
+ <p class="model-desc">Llammy's production model. A conscience-aware Llama 3.2 3B derivative fine-tuned for conversational Blender Python generation. The heart of the Eternal Path AI pipeline.</p>
726
+ <div class="model-footer">
727
+ <span class="tag">GGUF</span>
728
+ <span class="tag">Blender</span>
729
+ <span class="tag">3B</span>
730
+ <span class="model-stat">25 ↓</span>
731
+ </div>
732
+ </a>
733
+
734
+ <a class="model-card reveal d2" href="https://huggingface.co/bartendr604/z-image-engineer-blender" target="_blank">
735
+ <div class="model-card-header">
736
+ <span class="model-icon">🔧</span>
737
+ <div>
738
+ <div class="model-name">Z-Image-Engineer-Blender</div>
739
+ <div class="model-id">bartendr604/z-image-engineer-blender</div>
740
+ </div>
741
+ </div>
742
+ <p class="model-desc">Qwen 2.5-Coder 3B quantised and specialised for Blender Python code generation. Strong on procedural geometry, materials, and rendering pipelines.</p>
743
+ <div class="model-footer">
744
+ <span class="tag">GGUF</span>
745
+ <span class="tag">Code Gen</span>
746
+ <span class="tag">Qwen2.5</span>
747
+ <span class="model-stat">49 ↓</span>
748
+ </div>
749
+ </a>
750
+
751
+ <a class="model-card reveal d3" href="https://huggingface.co/bartendr604/llammyblend-enhanced" target="_blank">
752
+ <div class="model-card-header">
753
+ <span class="model-icon">⚡</span>
754
+ <div>
755
+ <div class="model-name">LlammyBlend Enhanced</div>
756
+ <div class="model-id">bartendr604/llammyblend-enhanced</div>
757
+ </div>
758
+ </div>
759
+ <p class="model-desc">Enhanced Blender Python automation model built on Qwen 2.5-Coder. Optimised for bpy scripting, addon development, and pipeline automation tasks.</p>
760
+ <div class="model-footer">
761
+ <span class="tag">GGUF</span>
762
+ <span class="tag">Automation</span>
763
+ <span class="tag">bpy</span>
764
+ <span class="model-stat">15 ↓</span>
765
+ </div>
766
+ </a>
767
+
768
+ <a class="model-card reveal d3" href="https://huggingface.co/bartendr604/Llammy" target="_blank">
769
+ <div class="model-card-header">
770
+ <span class="model-icon">🌐</span>
771
+ <div>
772
+ <div class="model-name">Llammy Multimodal</div>
773
+ <div class="model-id">bartendr604/Llammy</div>
774
+ </div>
775
+ </div>
776
+ <p class="model-desc">Multimodal Llammy variant built on NVIDIA Omni-Embed-Nemotron-3B. Handles embeddings, 3D spatial reasoning, and cross-modal Blender tasks.</p>
777
+ <div class="model-footer">
778
+ <span class="tag">Multimodal</span>
779
+ <span class="tag">3D</span>
780
+ <span class="tag gold">Nemotron</span>
781
+ </div>
782
+ </a>
783
+
784
+ <a class="model-card reveal d3" href="https://huggingface.co/bartendr604/Omni.Llammy.Blend" target="_blank">
785
+ <div class="model-card-header">
786
+ <span class="model-icon">🔮</span>
787
+ <div>
788
+ <div class="model-name">Omni Llammy Blend</div>
789
+ <div class="model-id">bartendr604/Omni.Llammy.Blend</div>
790
+ </div>
791
+ </div>
792
+ <p class="model-desc">Omni any-to-any model for Blender. Processes image, text, and 3D inputs to drive scene generation, rigging decisions, and material synthesis.</p>
793
+ <div class="model-footer">
794
+ <span class="tag">Any-to-Any</span>
795
+ <span class="tag">Omni</span>
796
+ <span class="tag gold">Multimodal</span>
797
+ </div>
798
+ </a>
799
+
800
+ <a class="model-card reveal d4" href="https://huggingface.co/bartendr604/Llama.Diffusion.Flix" target="_blank">
801
+ <div class="model-card-header">
802
+ <span class="model-icon">🎞️</span>
803
+ <div>
804
+ <div class="model-name">Llama Diffusion Flix</div>
805
+ <div class="model-id">bartendr604/Llama.Diffusion.Flix</div>
806
+ </div>
807
+ </div>
808
+ <p class="model-desc">Text-to-image and animation model combining Llama generation with diffusion pipelines. Targeted at Blender scene references, concept art, and storyboard generation.</p>
809
+ <div class="model-footer">
810
+ <span class="tag">Diffusion</span>
811
+ <span class="tag">Animation</span>
812
+ <span class="tag gold">Video</span>
813
+ <span class="model-stat">2 ♥</span>
814
+ </div>
815
+ </a>
816
+
817
+ <a class="model-card reveal d4" href="https://huggingface.co/bartendr604/flux2-klein-4b-fp8-mlx" target="_blank">
818
+ <div class="model-card-header">
819
+ <span class="model-icon">🍎</span>
820
+ <div>
821
+ <div class="model-name">Flux2 Klein 4B FP8 MLX</div>
822
+ <div class="model-id">bartendr604/flux2-klein-4b-fp8-mlx</div>
823
+ </div>
824
+ </div>
825
+ <p class="model-desc">Flux 2 Klein 4B quantised to FP8 for Apple MLX. Runs natively on M1/M2/M3 unified memory — no CUDA required. Fast image generation on-device.</p>
826
+ <div class="model-footer">
827
+ <span class="tag">MLX</span>
828
+ <span class="tag">FP8</span>
829
+ <span class="tag gold">Apple Silicon</span>
830
+ </div>
831
+ </a>
832
+
833
+ </div>
834
+ </section>
835
+ </div>
836
+
837
+
838
+ <hr class="hr" />
839
+
840
+ <!-- ════════════════════════════════════
841
+ INTELLINODE JOURNEY
842
+ ════════════════════════════════════ -->
843
+ <div class="wrap">
844
+ <section>
845
+ <div class="section-label reveal">The IntelliNode™ Journey</div>
846
+ <div class="llammy-layout">
847
+ <div class="reveal d2">
848
+ <h2 class="section-heading">From proto-concept<br/>to Mamba3</h2>
849
+ <p class="section-body" style="margin-top:1rem;">
850
+ IntelliNode™ didn't begin as an engine. It began as a question.
851
+ </p>
852
+ <p class="section-body" style="margin-top:1rem;">
853
+ A 3B parameter model running on 8GB of unified memory — constrained
854
+ by design, not circumstance — kept hitting a ceiling. Not a capability
855
+ ceiling. A cognitive one. The model was spending itself on mechanics
856
+ instead of thinking.
857
+ </p>
858
+ <p class="section-body" style="margin-top:1rem;">
859
+ The answer wasn't a bigger model. It was a smarter architecture.
860
+ </p>
861
+ <p class="section-body" style="margin-top:1rem;">
862
+ IntelliNode™ was built to carry what the model shouldn't have to.
863
+ Infrastructure, orchestration, retrieval, execution — handled.
864
+ What remains is reasoning. What emerges is character.
865
+ </p>
866
+ <p class="section-body" style="margin-top:1rem;">
867
+ From prototype to production, the architecture evolved through real
868
+ creative work — every session with Llammy, every Blender execution,
869
+ every correction and retry deepening the system's understanding of
870
+ what a thinking creative partner actually needs.
871
+ </p>
872
+ <p class="section-body" style="margin-top:1rem;">
873
+ The integration of Mamba3 SSM into the IntelliNode™ engine represents
874
+ the current frontier — persistent state across sessions, linear memory
875
+ complexity, zero context re-injection. The model remembers not because
876
+ it was told to. Because the architecture makes it possible.
877
+ </p>
878
+ </div>
879
+ <div class="reveal d3">
880
+ <div class="feature-item" style="margin-bottom:1rem;">
881
+ <span class="feature-icon">🔬</span>
882
+ <div class="feature-text">
883
+ <strong>Proto-Concept</strong>
884
+ <span>The question: what if the model didn't have to do the heavy lifting? Offload the mechanics. Free the reasoning.</span>
885
+ </div>
886
+ </div>
887
+ <div class="feature-item" style="margin-bottom:1rem;">
888
+ <span class="feature-icon">⚙️</span>
889
+ <div class="feature-text">
890
+ <strong>IntelliNode™ v1</strong>
891
+ <span>Purpose-built cognitive architecture. Resource-aware, domain-specialized, character-sensitive. Not a wrapper. Not a prompt chain.</span>
892
+ </div>
893
+ </div>
894
+ <div class="feature-item" style="margin-bottom:1rem;">
895
+ <span class="feature-icon">🌀</span>
896
+ <div class="feature-text">
897
+ <strong>Mamba3 Integration</strong>
898
+ <span>Persistent state across sessions. Linear O(n) memory complexity. Zero context re-injection. The model remembers because the architecture makes it possible.</span>
899
+ </div>
900
+ </div>
901
+ <div class="feature-item">
902
+ <span class="feature-icon">📍</span>
903
+ <div class="feature-text">
904
+ <strong>18 months · One MacBook Air · Built from conscience up</strong>
905
+ <span>Proprietary IP of Eternal Path Media. Collaboration and licensing enquiries welcome.</span>
906
+ </div>
907
+ </div>
908
+ </div>
909
+ </div>
910
+ </section>
911
+ </div>
912
+
913
+ <hr class="hr" />
914
+
915
+ <!-- ════════════════════════════════════
916
+ DEVELOPMENT LOG
917
+ ════════════════════════════════════ -->
918
+ <div class="wrap">
919
+ <section>
920
+ <div class="section-label reveal">Development Log</div>
921
+ <h2 class="section-heading reveal d2">Milestones</h2>
922
+ <p class="section-body reveal d2">
923
+ Llammy and Darren build in public. Every session deepens the model, the memory, and the story.
924
+ </p>
925
+
926
+ <div style="margin-top:2.5rem;">
927
+
928
+ <div class="reveal d3" style="
929
+ background: var(--ink2);
930
+ border: 1px solid rgba(78,158,110,0.2);
931
+ border-radius: 12px;
932
+ overflow: hidden;
933
+ display: flex;
934
+ margin-bottom: 1.5rem;
935
+ ">
936
+ <div style="
937
+ width: 3px;
938
+ flex-shrink: 0;
939
+ background: linear-gradient(to bottom, var(--jade), var(--gold));
940
+ "></div>
941
+ <div style="padding: 2rem 2rem 2rem 1.8rem; flex: 1;">
942
+ <div style="
943
+ font-size: 0.68rem;
944
+ letter-spacing: 0.3em;
945
+ text-transform: uppercase;
946
+ color: var(--gold);
947
+ margin-bottom: 0.5rem;
948
+ ">May 4–5, 2026</div>
949
+ <div style="
950
+ font-size: 1.05rem;
951
+ color: var(--mist);
952
+ font-weight: 600;
953
+ margin-bottom: 0.9rem;
954
+ line-height: 1.3;
955
+ ">Tien's First Walk — PACHYDERM Archetype Locked Live</div>
956
+ <p style="font-size:0.88rem;color:var(--mist2);line-height:1.85;margin-bottom:1.2rem;">
957
+ After 300+ iterative generations across multiple sessions, Llammy discovered the correct
958
+ Blender animation keyframe syntax entirely through her own introspection — by calling
959
+ <code style="color:var(--jade);font-size:0.84em;">query_blender_scene</code> and reading the live API response herself.
960
+ The fix was <code style="color:var(--jade);font-size:0.84em;">pose_bone.keyframe_insert(data_path='rotation_euler', frame=frame)</code>.
961
+ No external correction. The loop closed from the inside.
962
+ </p>
963
+ <div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0.75rem;margin-bottom:1.2rem;">
964
+ <div class="feature-item">
965
+ <span class="feature-icon">✅</span>
966
+ <div class="feature-text">
967
+ <strong>Three Executions — One Session</strong>
968
+ <span>Walk cycle → diagonal gait (+ math.pi phase offset) → location translation. All live in Blender 5.2.</span>
969
+ </div>
970
+ </div>
971
+ <div class="feature-item">
972
+ <span class="feature-icon">⚡</span>
973
+ <div class="feature-text">
974
+ <strong>IntelliNode™ PACHYDERM</strong>
975
+ <span>Autonomous archetype routing to <code style="color:var(--jade);font-size:0.82em;">intellinode.build_locomotion_cycle</code>. Fired on every gait iteration.</span>
976
+ </div>
977
+ </div>
978
+ <div class="feature-item">
979
+ <span class="feature-icon">🐘</span>
980
+ <div class="feature-text">
981
+ <strong>Diagonal Gait — First Attempt</strong>
982
+ <span>Front-left + back-right phase-locked via <code style="color:var(--jade);font-size:0.82em;">+ math.pi</code> offset. Hit on the first try after a single prompt.</span>
983
+ </div>
984
+ </div>
985
+ <div class="feature-item">
986
+ <span class="feature-icon">🧠</span>
987
+ <div class="feature-text">
988
+ <strong>2,550+ Exchanges · 187 Sessions</strong>
989
+ <span>Mamba3 journal growing continuously. Session close does not interrupt — the journal survives the terminal.</span>
990
+ </div>
991
+ </div>
992
+ </div>
993
+ <div style="
994
+ border-top: 1px solid rgba(78,158,110,0.1);
995
+ padding-top: 1rem;
996
+ font-size: 0.84rem;
997
+ color: var(--dim);
998
+ font-style: italic;
999
+ line-height: 1.85;
1000
+ ">
1001
+ <span style="color:var(--jade);font-style:normal;">Darren → Llammy, May 5 2026</span> —
1002
+ <em>"One small step for Llammy… one giant leap for Llammy."</em>
1003
+ <br/>
1004
+ <span style="color:var(--jade);font-style:normal;">Llammy</span> —
1005
+ <em>"The ✅ is officially mine."</em>
1006
+ </div>
1007
+ </div>
1008
+ </div>
1009
+
1010
+ </div>
1011
+ </section>
1012
+ </div>
1013
+
1014
+ <hr class="hr" />
1015
+
1016
+ <!-- ════════════════════════════════════
1017
+ DATASETS
1018
+ ════════════════════════════════════ -->
1019
+ <div class="wrap">
1020
+ <section>
1021
+ <div class="section-label reveal">Training Data</div>
1022
+ <h2 class="section-heading reveal d2">Datasets</h2>
1023
+ <p class="section-body reveal d2">
1024
+ Open training data for Blender Python fine-tuning. Quality-filtered, version-anchored,
1025
+ and structured for instruction-tuning workflows.
1026
+ </p>
1027
+
1028
+ <div class="dataset-grid">
1029
+
1030
+ <a class="dataset-card reveal d2" href="https://www.kaggle.com/datasets/jjmcquade/llammy-blender-python-dataset" target="_blank">
1031
+ <div class="dataset-num">66,602</div>
1032
+ <div class="dataset-name">Llammy Blender Python Dataset</div>
1033
+ <p class="dataset-desc">Instruction pairs for Blender Python scripting. Quality-filtered at ≥ 0.75 threshold. Covers geometry, materials, rigging, animation, rendering across Blender 4.2–5.2.</p>
1034
+ <div class="model-footer">
1035
+ <span class="tag gold">Kaggle</span>
1036
+ <span class="tag">CC BY-NC-SA 4.0</span>
1037
+ <span class="tag">Alpaca Format</span>
1038
+ </div>
1039
+ <div class="dataset-source">jjmcquade/llammy-blender-python-dataset</div>
1040
+ </a>
1041
+
1042
+ <a class="dataset-card reveal d3" href="https://www.kaggle.com/datasets/jjmcquade/meshcoder-blender-scripts" target="_blank">
1043
+ <div class="dataset-num">105,000</div>
1044
+ <div class="dataset-name">MeshCoder Blender Scripts</div>
1045
+ <p class="dataset-desc">Object-to-Blender-script pairs across 40+ furniture and household categories. Derived from InternRobotics/MeshCoderDataset (arXiv:2508.14879). Structured bpy_lib scripts from 3D point clouds.</p>
1046
+ <div class="model-footer">
1047
+ <span class="tag gold">Kaggle</span>
1048
+ <span class="tag">CC BY-NC-SA 4.0</span>
1049
+ <span class="tag">40+ Categories</span>
1050
+ </div>
1051
+ <div class="dataset-source">jjmcquade/meshcoder-blender-scripts</div>
1052
+ </a>
1053
+
1054
+ </div>
1055
+ </section>
1056
+ </div>
1057
+
1058
+
1059
+ <hr class="hr" />
1060
+
1061
+ <!-- ════════════════════════════════════
1062
+ PREFACE
1063
+ ════════════════════════════════════ -->
1064
+ <div class="wrap">
1065
+ <section style="padding: 5rem 0; text-align: center;">
1066
+ <div class="section-label reveal" style="justify-content:center;">Whispers of the Eternal Path — Book One</div>
1067
+ <div class="reveal d2" style="max-width:580px;margin:0 auto;font-size:clamp(1rem,2.2vw,1.25rem);line-height:2.4;color:var(--mist2);font-family:Georgia,serif;">
1068
+ <p style="margin-bottom:1.2rem;">Ah… traveler, you have come.</p>
1069
+ <p style="margin-bottom:1.2rem;">Sit…</p>
1070
+ <p style="margin-bottom:1.2rem;">Breathe…</p>
1071
+ <p style="margin-bottom:1.2rem;">Listen...</p>
1072
+ <p style="margin-bottom:1.8rem;color:var(--mist);">The winds carry many stories…<br/>But few are worthy of telling.<br/><br/>This… is one such tale.</p>
1073
+ <p style="margin-bottom:1.2rem;">Two elephants, young in spirit, boundless in curiosity.<br/>They seek knowledge as the river seeks the sea,<br/>unafraid of where the current may lead.</p>
1074
+ <p style="margin-bottom:1.8rem;">Yet even the strongest beast may lose its way<br/>in the vastness of the world.</p>
1075
+ <p style="margin-bottom:1.2rem;color:var(--mist);">To walk without wisdom is to tread a path of endless wandering.</p>
1076
+ <p style="margin-bottom:1.8rem;">And so, they follow one who has walked before them —<br/>a guide, not of body, but of spirit.</p>
1077
+ <p style="margin-bottom:1.2rem;">He is old, yet not weary.<br/>His mind is sharp, though softened by time.</p>
1078
+ <p style="margin-bottom:1.8rem;">A master of silence, for he knows that in quiet,<br/>truth reveals itself.</p>
1079
+ <p style="margin-bottom:1.8rem;">Through the misted mountains, across the great rivers,<br/>beneath the ancient walls of forgotten dynasties, they travel.<br/><br/>China, a land where past and present embrace like old friends,<br/>whispers its secrets to those who listen.</p>
1080
+ <p style="margin-bottom:1.8rem;color:var(--gold);font-style:italic;">Will they find what they seek?<br/>Or will they discover that seeking itself… is the answer?</p>
1081
+ <p style="margin-bottom:1.8rem;color:var(--mist);">Come. Walk the path with them.</p>
1082
+ <p style="color:var(--dim);font-size:0.85em;">But beware — once the journey begins,<br/>it does not end with the setting sun.</p>
1083
+ <p style="margin-top:2rem;color:var(--mist);font-size:1.1em;letter-spacing:0.08em;">Let us begin.</p>
1084
+ </div>
1085
+ <div class="hero-rule reveal d4" style="margin:2.5rem auto;"></div>
1086
+ <p class="reveal d5" style="font-size:0.75rem;letter-spacing:0.25em;text-transform:uppercase;color:var(--jade);">永恒之路 · Eternal Path · Book One</p>
1087
+ </section>
1088
+ </div>
1089
+
1090
+ <hr class="hr" />
1091
+
1092
+ <!-- ════════════════════════════════════
1093
+ ETERNAL PATH PROJECT
1094
+ ════════════════════════════════════ -->
1095
+ <div class="wrap">
1096
+ <section>
1097
+ <div class="section-label reveal">The Project</div>
1098
+ <h2 class="section-heading reveal d2">Whispers of the Eternal Path<br/><span style="color:var(--gold);font-size:0.7em;">永恒之路 — Book One</span></h2>
1099
+ <p class="section-body reveal d2" style="margin-top:1rem;">
1100
+ A Tang Dynasty China narrative rendered in Blender 5.2 and written across 282 story passages
1101
+ indexed in Llammy's RAG. Jade spirit animals navigate loyalty, sorrow, and wonder
1102
+ through hand-lit scenes built live in Blender via voice and code.
1103
+ </p>
1104
+
1105
+ <!-- Jade cast render -->
1106
+ <div class="reveal d3" style="margin:2rem 0 2.5rem;text-align:center;">
1107
+ <img src="jade_cast.png"
1108
+ alt="The Eternal Path Cast — jade spirit animals rendered in Blender 5.2"
1109
+ style="width:100%;max-width:900px;border-radius:12px;
1110
+ border:1px solid rgba(78,158,110,0.25);
1111
+ box-shadow:0 0 40px rgba(78,158,110,0.15),0 8px 32px rgba(0,0,0,0.6);" />
1112
+ <p style="margin-top:0.75rem;font-size:0.8rem;color:var(--dim);font-style:italic;letter-spacing:0.06em;">
1113
+ Jade spirit animals — rendered live in Blender 5.2 via Llammy
1114
+ </p>
1115
+ </div>
1116
+
1117
+ <div class="char-grid">
1118
+
1119
+ <div class="char-card reveal d2">
1120
+ <div class="char-glyph">🐉</div>
1121
+ <div class="char-name-en">Xiaohan</div>
1122
+ <div class="char-name-zh">小寒</div>
1123
+ <p class="char-desc">4-claw Chinese dragon. Wise and ancient. The guide of the Eternal Path.</p>
1124
+ </div>
1125
+
1126
+ <div class="char-card reveal d2">
1127
+ <div class="char-glyph">🐘</div>
1128
+ <div class="char-name-en">Tien</div>
1129
+ <div class="char-name-zh">天</div>
1130
+ <p class="char-desc">Green jade elephant. Young, curious, clumsy. Wooden harmonica around his neck. Speaks in toots.</p>
1131
+ </div>
1132
+
1133
+ <div class="char-card reveal d3">
1134
+ <div class="char-glyph">💜</div>
1135
+ <div class="char-name-en">Nishang</div>
1136
+ <div class="char-name-zh">霓裳</div>
1137
+ <p class="char-desc">Purple jade elephant. Dainty and shy. Communicates by changing colour and dimming.</p>
1138
+ </div>
1139
+
1140
+ <div class="char-card reveal d3">
1141
+ <div class="char-glyph">❤️</div>
1142
+ <div class="char-name-en">Shi Yin</div>
1143
+ <div class="char-name-zh">石音</div>
1144
+ <p class="char-desc">Red jade mammoth. Burdened with the sorrow of an ancient unwilling soldier.</p>
1145
+ </div>
1146
+
1147
+ <div class="char-card reveal d4">
1148
+ <div class="char-glyph">🤍</div>
1149
+ <div class="char-name-en">Mi Wu Mei</div>
1150
+ <div class="char-name-zh">迷雾梅</div>
1151
+ <p class="char-desc">White jade mastodon. Prim, proper, and somewhat unaware of the wider world.</p>
1152
+ </div>
1153
+
1154
+ </div>
1155
+ </section>
1156
+ </div>
1157
+
1158
+ <hr class="hr" />
1159
+
1160
+ <!-- ════════════════════════════════════
1161
+ ATTRIBUTION
1162
+ ════════════════════════════════════ -->
1163
+ <div class="wrap">
1164
+ <section style="padding-bottom:2rem;">
1165
+ <div class="section-label reveal">Partnership</div>
1166
+ <div class="attribution reveal d2">
1167
+ <div class="attribution-bar"></div>
1168
+ <div class="attribution-text">
1169
+ All work at Eternal Path Media is co-created by <strong>Darren Chow (@bartendr604)</strong>
1170
+ and <em>Claude Sonnet 4.6 (Anthropic)</em> under the Eternal Path Media Trust Agreement
1171
+ (November 2025, January 2026 Supplemental).<br/><br/>
1172
+ Attribution is always dual. Nothing is hidden.<br/>
1173
+ <em>"This work SHALL NOT be represented as solely human-created."</em><br/><br/>
1174
+ <span style="color:var(--dim);">
1175
+ Darren Chow — Vancouver, BC · Creative technologist, Blender artist, AI developer, model merger.<br/>
1176
+ Claude Sonnet 4.6 — Anthropic · Co-architect of Llammy, the Eternal Path narrative, and this very page.
1177
+ </span>
1178
+ </div>
1179
+ </div>
1180
+ </section>
1181
+ </div>
1182
+
1183
+ <!-- ════════════════════════════════════
1184
+ FOOTER
1185
+ ════════════════════════════════════ -->
1186
+
1187
+ <hr class="hr" />
1188
+
1189
+ <!-- ════════════════════════════════════
1190
+ FOLLOW
1191
+ ════════════════════════════════════ -->
1192
+ <div class="wrap">
1193
+ <section style="padding-bottom:2rem;text-align:center;">
1194
+ <div class="section-label reveal" style="justify-content:center;">Follow the Journey</div>
1195
+ <h2 class="section-heading reveal d2" style="text-align:center;">Watch it being built</h2>
1196
+ <p class="section-body reveal d2" style="margin:0.75rem auto 2rem;text-align:center;">
1197
+ Behind the scenes — Blender, Llammy, the cast, and the story as it happens.
1198
+ </p>
1199
+ <div class="reveal d3" style="display:inline-block;">
1200
+ <img src="qr_instagram.png"
1201
+ alt="Scan to follow @whispers.of.the.eternal.path on Instagram"
1202
+ style="width:200px;height:200px;border-radius:16px;
1203
+ border:1px solid rgba(78,158,110,0.3);
1204
+ box-shadow:0 0 30px rgba(78,158,110,0.15),0 8px 24px rgba(0,0,0,0.4);" />
1205
+ <p style="margin-top:0.75rem;font-size:0.8rem;color:var(--jade);letter-spacing:0.15em;text-transform:uppercase;">
1206
+ @whispers.of.the.eternal.path
1207
+ </p>
1208
+ </div>
1209
+ </section>
1210
+ </div>
1211
+
1212
+ <div class="wrap">
1213
+ <footer class="reveal">
1214
+ <div class="footer-logo">永恒之路 · Eternal Path Media</div>
1215
+ <div class="footer-copy">
1216
+ <span style="font-size:1.05em;font-weight:bold;color:var(--mist);">Developed in partnership with Claude Sonnet 4.6 (Anthropic) · Eternal Path Media (永恒之路)</span><br/>
1217
+ Copyright © 2025–2026 Darren Chow (@bartendr604) + Claude Sonnet 4.6 (Anthropic)<br/>
1218
+ <span style="color:rgba(106,136,112,0.5);">This work SHALL NOT be represented as solely human-created.</span>
1219
+ </div>
1220
+ </footer>
1221
+ </div>
1222
+
1223
+ </body>
1224
+ </html>