oomi-ai 0.2.39 → 0.2.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +5 -3
  2. package/lib/personaRuntimeManager.js +21 -17
  3. package/lib/personaRuntimeProcess.js +392 -49
  4. package/lib/scaffold.js +14 -14
  5. package/openclaw.plugin.json +1 -1
  6. package/package.json +10 -8
  7. package/templates/persona-app/package.json +6 -4
  8. package/templates/persona-app/src/App.css +564 -79
  9. package/templates/persona-app/src/App.tsx +2 -2
  10. package/templates/persona-app/src/main.tsx +13 -0
  11. package/templates/persona-app/src/pages/HomePage.tsx +120 -39
  12. package/templates/persona-app/src/pages/ScenePage.tsx +2 -15
  13. package/templates/persona-app/src/persona/notes.ts +3 -1
  14. package/templates/persona-app/src/spatial.ts +82 -0
  15. package/templates/persona-app/template.json +1 -1
  16. package/templates/persona-app/vendor/webspatial/FORK.md +6 -0
  17. package/templates/persona-app/vendor/webspatial/core-sdk/LICENSE +21 -0
  18. package/templates/persona-app/vendor/webspatial/core-sdk/dist/iife/index.d.ts +906 -0
  19. package/templates/persona-app/vendor/webspatial/core-sdk/dist/iife/index.global.js +75 -0
  20. package/templates/persona-app/vendor/webspatial/core-sdk/dist/iife/index.global.js.map +1 -0
  21. package/templates/persona-app/vendor/webspatial/core-sdk/dist/index.d.ts +906 -0
  22. package/templates/persona-app/vendor/webspatial/core-sdk/dist/index.js +3131 -0
  23. package/templates/persona-app/vendor/webspatial/core-sdk/dist/index.js.map +1 -0
  24. package/templates/persona-app/vendor/webspatial/core-sdk/package.json +45 -0
  25. package/templates/persona-app/vendor/webspatial/react-sdk/LICENSE +21 -0
  26. package/templates/persona-app/vendor/webspatial/react-sdk/dist/default/index.d.ts +365 -0
  27. package/templates/persona-app/vendor/webspatial/react-sdk/dist/default/index.js +4296 -0
  28. package/templates/persona-app/vendor/webspatial/react-sdk/dist/default/index.js.map +1 -0
  29. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.d.ts +82 -0
  30. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.js +66 -0
  31. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.js.map +1 -0
  32. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.web.d.ts +2 -0
  33. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.web.js +18 -0
  34. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-dev-runtime.web.js.map +1 -0
  35. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.d.ts +5 -0
  36. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.js +66 -0
  37. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.js.map +1 -0
  38. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.web.d.ts +1 -0
  39. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.web.js +18 -0
  40. package/templates/persona-app/vendor/webspatial/react-sdk/dist/jsx/jsx-runtime.web.js.map +1 -0
  41. package/templates/persona-app/vendor/webspatial/react-sdk/dist/web/index.d.ts +365 -0
  42. package/templates/persona-app/vendor/webspatial/react-sdk/dist/web/index.js +4336 -0
  43. package/templates/persona-app/vendor/webspatial/react-sdk/dist/web/index.js.map +1 -0
  44. package/templates/persona-app/vendor/webspatial/react-sdk/package.json +94 -0
  45. package/templates/persona-app/vite.config.ts +13 -0
@@ -1,30 +1,157 @@
1
+ :root {
2
+ color: #f4f7ff;
3
+ font-family: "Avenir Next", "Segoe UI", sans-serif;
4
+ line-height: 1.5;
5
+ font-weight: 400;
6
+ background:
7
+ radial-gradient(circle at top left, rgba(255, 255, 255, 0.55), transparent 38%),
8
+ linear-gradient(180deg, #dfe8ff 0%, #d1dbf6 42%, #d7cab8 78%, #b58c77 100%);
9
+ --surface-ink: #101528;
10
+ --surface-panel: rgba(20, 27, 52, 0.88);
11
+ --surface-panel-strong: rgba(16, 22, 40, 0.96);
12
+ --surface-panel-soft: rgba(243, 248, 255, 0.12);
13
+ --surface-border: rgba(137, 160, 220, 0.22);
14
+ --surface-shadow: 0 36px 120px rgba(6, 10, 22, 0.24);
15
+ --surface-muted: #b7c3e3;
16
+ --surface-copy: #e8eeff;
17
+ --surface-accent: #7ff0bb;
18
+ }
19
+
20
+ * {
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ html,
25
+ body,
26
+ #root {
27
+ min-height: 100%;
28
+ }
29
+
30
+ body {
31
+ margin: 0;
32
+ min-height: 100vh;
33
+ color: var(--surface-copy);
34
+ background:
35
+ radial-gradient(circle at top left, rgba(255, 255, 255, 0.45), transparent 34%),
36
+ radial-gradient(circle at top right, rgba(161, 183, 255, 0.45), transparent 28%),
37
+ linear-gradient(180deg, #dce6ff 0%, #c8d4f2 44%, #cfbea6 76%, #a57361 100%);
38
+ position: relative;
39
+ overflow-x: hidden;
40
+ }
41
+
42
+ body::before,
43
+ body::after {
44
+ content: "";
45
+ position: fixed;
46
+ inset: auto;
47
+ pointer-events: none;
48
+ z-index: -1;
49
+ }
50
+
51
+ body::before {
52
+ left: -12%;
53
+ right: -12%;
54
+ bottom: -2%;
55
+ height: 30vh;
56
+ background:
57
+ radial-gradient(circle at 18% 20%, rgba(146, 89, 72, 0.75), transparent 26%),
58
+ radial-gradient(circle at 52% 32%, rgba(176, 130, 110, 0.72), transparent 24%),
59
+ radial-gradient(circle at 84% 38%, rgba(125, 92, 79, 0.68), transparent 24%);
60
+ }
61
+
62
+ body::after {
63
+ right: 8%;
64
+ top: 12%;
65
+ width: 420px;
66
+ height: 420px;
67
+ background: radial-gradient(circle, rgba(255, 255, 255, 0.34), transparent 60%);
68
+ }
69
+
70
+ a {
71
+ color: inherit;
72
+ text-decoration: none;
73
+ }
74
+
75
+ button,
76
+ input,
77
+ textarea,
78
+ select {
79
+ font: inherit;
80
+ }
81
+
82
+ code {
83
+ font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
84
+ background: rgba(179, 197, 233, 0.16);
85
+ color: #eef4ff;
86
+ padding: 0.12rem 0.45rem;
87
+ border-radius: 999px;
88
+ font-size: 0.9em;
89
+ }
90
+
1
91
  #root {
2
92
  width: 100%;
3
93
  }
4
94
 
5
- .persona-shell {
6
- width: min(1120px, calc(100% - 48px));
95
+ [enable-xr] {
96
+ position: relative;
97
+ }
98
+
99
+ .persona-shell,
100
+ .scene-shell {
101
+ width: min(1280px, calc(100% - 48px));
7
102
  margin: 0 auto;
8
- padding: 32px 0 48px;
103
+ padding: 32px 0 56px;
104
+ display: grid;
105
+ gap: 24px;
9
106
  }
10
107
 
11
- .persona-header {
108
+ .persona-header,
109
+ .persona-grid,
110
+ .scene-interaction-grid,
111
+ .scene-content-grid,
112
+ .scene-hero,
113
+ .scene-depth-grid {
12
114
  display: grid;
13
- grid-template-columns: 1.4fr 0.8fr;
14
115
  gap: 20px;
116
+ }
117
+
118
+ .persona-header {
119
+ grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.7fr);
15
120
  align-items: start;
16
121
  }
17
122
 
123
+ .persona-grid {
124
+ grid-template-columns: repeat(3, minmax(0, 1fr));
125
+ }
126
+
127
+ .persona-panel,
128
+ .scene-board,
129
+ .persona-preview-card,
130
+ .scene-depth-card,
131
+ .scene-debug-card,
132
+ .scene-interaction-card,
133
+ .scene-proof-card,
134
+ .scene-material-chip,
135
+ .scene-nested-shell,
136
+ .scene-nested-panel,
137
+ .scene-ops-card {
138
+ border: 1px solid var(--surface-border);
139
+ box-shadow: var(--surface-shadow);
140
+ backdrop-filter: blur(24px);
141
+ }
142
+
18
143
  .persona-panel {
19
- border: 1px solid rgba(117, 94, 59, 0.2);
20
- background: rgba(255, 250, 242, 0.88);
21
- backdrop-filter: blur(20px);
22
- border-radius: 28px;
23
- box-shadow: 0 24px 80px rgba(63, 48, 23, 0.1);
144
+ border-radius: 30px;
145
+ background: linear-gradient(180deg, rgba(17, 23, 43, 0.9), rgba(25, 33, 59, 0.82));
24
146
  }
25
147
 
26
148
  .persona-hero {
27
- padding: 28px;
149
+ padding: 32px;
150
+ display: grid;
151
+ gap: 24px;
152
+ background:
153
+ radial-gradient(circle at top right, rgba(144, 190, 255, 0.28), transparent 34%),
154
+ linear-gradient(180deg, rgba(15, 22, 44, 0.96), rgba(22, 31, 58, 0.9));
28
155
  }
29
156
 
30
157
  .persona-eyebrow {
@@ -32,112 +159,430 @@
32
159
  font-size: 11px;
33
160
  letter-spacing: 0.28em;
34
161
  text-transform: uppercase;
35
- color: #6d6256;
162
+ color: var(--surface-accent);
36
163
  }
37
164
 
38
165
  .persona-title {
39
166
  margin: 14px 0 0;
40
- font-size: clamp(2.6rem, 5vw, 4.6rem);
41
- line-height: 0.94;
42
- letter-spacing: -0.04em;
167
+ font-size: clamp(2.7rem, 5vw, 4.8rem);
168
+ line-height: 0.92;
169
+ letter-spacing: -0.05em;
170
+ }
171
+
172
+ .persona-description,
173
+ .scene-copy,
174
+ .scene-section-copy,
175
+ .persona-card p,
176
+ .persona-card li,
177
+ .scene-depth-card p,
178
+ .scene-ops-card p {
179
+ color: var(--surface-muted);
43
180
  }
44
181
 
45
182
  .persona-description {
46
183
  margin: 16px 0 0;
47
- max-width: 52rem;
48
- color: #4f463b;
49
- font-size: 1rem;
184
+ max-width: 56rem;
185
+ font-size: 1.02rem;
50
186
  line-height: 1.8;
51
187
  }
52
188
 
53
- .persona-runtime {
54
- padding: 24px;
189
+ .persona-actions {
190
+ display: flex;
191
+ flex-wrap: wrap;
192
+ gap: 12px;
55
193
  }
56
194
 
57
- .runtime-list {
58
- display: grid;
59
- gap: 10px;
60
- margin-top: 14px;
61
- color: #4f463b;
62
- font-size: 0.96rem;
195
+ .persona-button,
196
+ .persona-link {
197
+ display: inline-flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ min-height: 48px;
201
+ padding: 0 20px;
202
+ border-radius: 16px;
203
+ border: 1px solid rgba(170, 192, 244, 0.28);
204
+ background: rgba(255, 255, 255, 0.08);
205
+ color: #f5f8ff;
206
+ font-weight: 700;
207
+ letter-spacing: 0.01em;
208
+ transition:
209
+ transform 180ms ease,
210
+ border-color 180ms ease,
211
+ background 180ms ease;
63
212
  }
64
213
 
65
- .persona-grid {
214
+ .persona-button:hover,
215
+ .persona-link:hover {
216
+ transform: translateY(-1px);
217
+ border-color: rgba(170, 192, 244, 0.5);
218
+ background: rgba(255, 255, 255, 0.12);
219
+ }
220
+
221
+ .persona-preview-strip {
66
222
  display: grid;
67
- grid-template-columns: 1.2fr 0.8fr;
68
- gap: 20px;
69
- margin-top: 20px;
223
+ grid-template-columns: repeat(3, minmax(0, 1fr));
224
+ gap: 14px;
225
+ }
226
+
227
+ .persona-preview-card {
228
+ min-height: 176px;
229
+ padding: 22px;
230
+ border-radius: 26px;
231
+ }
232
+
233
+ .persona-preview-card h3,
234
+ .scene-depth-card h2,
235
+ .scene-ops-card h3,
236
+ .scene-nested-panel h3,
237
+ .scene-section-title {
238
+ margin: 10px 0 0;
239
+ color: #ffffff;
240
+ }
241
+
242
+ .persona-preview-card p {
243
+ margin: 12px 0 0;
244
+ color: #d4def6;
245
+ line-height: 1.7;
246
+ }
247
+
248
+ .persona-preview-card[data-tone="ocean"],
249
+ .scene-depth-card[data-tone="ocean"] {
250
+ background: linear-gradient(180deg, rgba(18, 59, 107, 0.92), rgba(15, 36, 76, 0.86));
251
+ }
252
+
253
+ .persona-preview-card[data-tone="coral"],
254
+ .scene-depth-card[data-tone="coral"] {
255
+ background: linear-gradient(180deg, rgba(234, 72, 107, 0.92), rgba(189, 52, 89, 0.86));
256
+ }
257
+
258
+ .persona-preview-card[data-tone="violet"],
259
+ .scene-depth-card[data-tone="violet"] {
260
+ background: linear-gradient(180deg, rgba(97, 61, 152, 0.94), rgba(64, 38, 122, 0.9));
70
261
  }
71
262
 
263
+ .persona-runtime,
72
264
  .persona-card {
73
- padding: 24px;
265
+ padding: 26px;
266
+ }
267
+
268
+ .runtime-list {
269
+ display: grid;
270
+ gap: 14px;
271
+ margin-top: 18px;
272
+ }
273
+
274
+ .runtime-row {
275
+ display: flex;
276
+ justify-content: space-between;
277
+ gap: 16px;
278
+ padding-bottom: 12px;
279
+ border-bottom: 1px solid rgba(170, 192, 244, 0.12);
280
+ }
281
+
282
+ .runtime-row:last-child {
283
+ padding-bottom: 0;
284
+ border-bottom: 0;
285
+ }
286
+
287
+ .runtime-label {
288
+ color: var(--surface-muted);
289
+ }
290
+
291
+ .runtime-value {
292
+ text-align: right;
293
+ color: #ffffff;
294
+ font-weight: 700;
74
295
  }
75
296
 
76
297
  .persona-card h2 {
77
298
  margin: 0;
78
- font-size: 1rem;
299
+ font-size: 0.95rem;
300
+ letter-spacing: 0.22em;
79
301
  text-transform: uppercase;
80
- letter-spacing: 0.2em;
81
- color: #6d6256;
302
+ color: #d8e4ff;
82
303
  }
83
304
 
84
305
  .persona-card p,
85
306
  .persona-card li {
86
- color: #51483d;
87
307
  line-height: 1.8;
88
308
  }
89
309
 
90
- .persona-actions {
310
+ .persona-note-list,
311
+ .scene-list {
312
+ margin: 16px 0 0;
313
+ padding-left: 18px;
314
+ display: grid;
315
+ gap: 10px;
316
+ }
317
+
318
+ .persona-scene-card {
319
+ min-height: 240px;
320
+ }
321
+
322
+ .scene-board {
323
+ position: relative;
324
+ overflow: hidden;
325
+ padding: 32px;
326
+ border-radius: 42px;
327
+ background:
328
+ radial-gradient(circle at top right, rgba(102, 139, 255, 0.22), transparent 26%),
329
+ linear-gradient(180deg, rgba(13, 18, 35, 0.98), rgba(24, 31, 56, 0.96));
330
+ }
331
+
332
+ .scene-board::before {
333
+ content: "";
334
+ position: absolute;
335
+ left: 26%;
336
+ right: -10%;
337
+ bottom: -14%;
338
+ height: 280px;
339
+ background:
340
+ radial-gradient(circle at 14% 12%, rgba(196, 102, 83, 0.7), transparent 26%),
341
+ radial-gradient(circle at 52% 28%, rgba(155, 96, 81, 0.64), transparent 28%),
342
+ radial-gradient(circle at 78% 40%, rgba(102, 81, 96, 0.6), transparent 30%);
343
+ opacity: 0.56;
344
+ pointer-events: none;
345
+ }
346
+
347
+ .scene-board > * {
348
+ position: relative;
349
+ z-index: 1;
350
+ }
351
+
352
+ .scene-hero {
353
+ grid-template-columns: minmax(0, 1fr) 260px;
354
+ align-items: start;
355
+ }
356
+
357
+ .scene-hero h1 {
358
+ margin: 10px 0 0;
359
+ font-size: clamp(2.4rem, 4vw, 4rem);
360
+ line-height: 0.96;
361
+ letter-spacing: -0.04em;
362
+ }
363
+
364
+ .scene-copy,
365
+ .scene-section-copy {
366
+ max-width: 48rem;
367
+ line-height: 1.8;
368
+ }
369
+
370
+ .scene-chip-row,
371
+ .scene-material-row {
372
+ display: flex;
373
+ flex-wrap: wrap;
374
+ gap: 12px;
375
+ }
376
+
377
+ .scene-chip {
378
+ display: inline-flex;
379
+ align-items: center;
380
+ min-height: 40px;
381
+ padding: 0 16px;
382
+ border-radius: 999px;
383
+ border: 1px solid rgba(166, 194, 244, 0.18);
384
+ background: rgba(255, 255, 255, 0.08);
385
+ color: #e8eeff;
386
+ font-weight: 700;
387
+ font-size: 0.92rem;
388
+ }
389
+
390
+ .scene-debug-card {
391
+ padding: 14px 16px;
392
+ border-radius: 18px;
393
+ background: rgba(3, 7, 18, 0.88);
394
+ color: #7af6b4;
395
+ font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
396
+ font-size: 12px;
397
+ line-height: 1.6;
398
+ }
399
+
400
+ .scene-debug-title {
401
+ margin-bottom: 8px;
402
+ color: #67cfff;
403
+ font-weight: 700;
404
+ }
405
+
406
+ .scene-depth-grid {
407
+ grid-template-columns: repeat(3, minmax(0, 1fr));
408
+ margin-top: 30px;
409
+ }
410
+
411
+ .scene-interaction-grid {
412
+ grid-template-columns: minmax(0, 1.2fr) minmax(260px, 0.8fr);
413
+ align-items: start;
414
+ margin-top: 30px;
415
+ }
416
+
417
+ .scene-interaction-card,
418
+ .scene-proof-card {
419
+ border-radius: 30px;
420
+ padding: 24px;
421
+ }
422
+
423
+ .scene-interaction-card {
424
+ display: grid;
425
+ gap: 18px;
426
+ background:
427
+ radial-gradient(circle at top right, rgba(122, 196, 255, 0.18), transparent 24%),
428
+ linear-gradient(180deg, rgba(13, 25, 52, 0.92), rgba(22, 31, 58, 0.88));
429
+ border-color: rgba(112, 255, 165, 0.38);
430
+ }
431
+
432
+ .scene-proof-card {
433
+ background: rgba(4, 9, 20, 0.76);
434
+ }
435
+
436
+ .scene-metric-grid {
437
+ margin: 0;
438
+ display: grid;
439
+ grid-template-columns: repeat(4, minmax(0, 1fr));
440
+ gap: 14px;
441
+ }
442
+
443
+ .scene-metric {
444
+ margin: 0;
445
+ padding: 16px;
446
+ border-radius: 20px;
447
+ background: rgba(255, 255, 255, 0.07);
448
+ border: 1px solid rgba(153, 181, 238, 0.12);
449
+ }
450
+
451
+ .scene-metric dt {
452
+ color: var(--surface-muted);
453
+ font-size: 0.82rem;
454
+ text-transform: uppercase;
455
+ letter-spacing: 0.08em;
456
+ }
457
+
458
+ .scene-metric dd {
459
+ margin: 10px 0 0;
460
+ color: #ffffff;
461
+ font-size: 1.7rem;
462
+ font-weight: 700;
463
+ letter-spacing: -0.03em;
464
+ }
465
+
466
+ .scene-proof-strip {
91
467
  display: flex;
92
468
  flex-wrap: wrap;
93
469
  gap: 12px;
470
+ }
471
+
472
+ .scene-proof-strip span {
473
+ display: inline-flex;
474
+ align-items: center;
475
+ min-height: 38px;
476
+ padding: 0 14px;
477
+ border-radius: 999px;
478
+ background: rgba(255, 255, 255, 0.08);
479
+ border: 1px solid rgba(166, 194, 244, 0.16);
480
+ color: #edf4ff;
481
+ font-size: 0.92rem;
482
+ }
483
+
484
+ .scene-depth-card {
485
+ min-height: 210px;
486
+ padding: 24px;
487
+ border-radius: 30px;
488
+ border-color: rgba(112, 255, 165, 0.44);
489
+ display: grid;
490
+ align-content: start;
491
+ }
492
+
493
+ .scene-depth-card p {
494
+ margin-top: 12px;
495
+ line-height: 1.75;
496
+ }
497
+
498
+ .scene-depth-meta {
499
+ display: inline-flex;
500
+ width: fit-content;
94
501
  margin-top: 18px;
502
+ padding: 6px 10px;
503
+ border-radius: 999px;
504
+ background: rgba(6, 11, 26, 0.22);
505
+ color: #eff6ff;
506
+ font-size: 0.78rem;
507
+ font-weight: 700;
508
+ letter-spacing: 0.04em;
509
+ text-transform: uppercase;
95
510
  }
96
511
 
97
- .persona-button,
98
- .persona-link {
512
+ .scene-material-section {
513
+ display: grid;
514
+ gap: 16px;
515
+ margin-top: 30px;
516
+ }
517
+
518
+ .scene-section-title {
519
+ font-size: 2rem;
520
+ line-height: 1;
521
+ }
522
+
523
+ .scene-material-chip {
99
524
  display: inline-flex;
100
525
  align-items: center;
101
526
  justify-content: center;
102
- min-height: 48px;
103
- padding: 0 18px;
104
- border-radius: 14px;
105
- border: 1px solid rgba(117, 94, 59, 0.22);
106
- background: rgba(250, 242, 228, 0.96);
107
- color: #2f291f;
108
- text-decoration: none;
109
- font-weight: 600;
527
+ min-height: 52px;
528
+ padding: 0 20px;
529
+ border-radius: 999px;
530
+ background: rgba(255, 255, 255, 0.12);
531
+ color: #ffffff;
532
+ font-weight: 700;
533
+ letter-spacing: 0.02em;
110
534
  }
111
535
 
112
- .persona-button:hover,
113
- .persona-link:hover {
114
- border-color: rgba(117, 94, 59, 0.42);
536
+ .scene-content-grid {
537
+ grid-template-columns: minmax(0, 1.3fr) minmax(260px, 0.7fr);
538
+ align-items: start;
539
+ margin-top: 30px;
115
540
  }
116
541
 
117
- .persona-scene-card {
118
- min-height: 240px;
542
+ .scene-nested-shell {
543
+ min-height: 340px;
544
+ padding: 28px;
545
+ border-radius: 34px;
546
+ background:
547
+ linear-gradient(180deg, rgba(20, 31, 62, 0.9), rgba(12, 19, 40, 0.82));
548
+ display: grid;
549
+ gap: 18px;
119
550
  }
120
551
 
121
- .scene-shell {
552
+ .scene-nested-panel {
553
+ width: min(580px, 100%);
554
+ padding: 24px;
555
+ border-radius: 28px;
556
+ background: linear-gradient(180deg, rgba(16, 50, 96, 0.88), rgba(17, 27, 60, 0.84));
557
+ }
558
+
559
+ .scene-ops-grid {
122
560
  display: grid;
123
- place-items: center;
124
- min-height: 100vh;
125
- padding: 32px;
561
+ gap: 16px;
126
562
  }
127
563
 
128
- .scene-panel {
129
- width: min(720px, 100%);
130
- padding: 28px;
564
+ .scene-ops-card {
565
+ padding: 22px;
566
+ border-radius: 26px;
567
+ background: rgba(255, 255, 255, 0.1);
131
568
  }
132
569
 
133
- .scene-panel h1 {
134
- margin: 0;
135
- font-size: clamp(2rem, 4vw, 3.2rem);
570
+ .scene-footer {
571
+ display: flex;
572
+ flex-wrap: wrap;
573
+ justify-content: space-between;
574
+ align-items: center;
575
+ gap: 16px;
576
+ margin-top: 28px;
136
577
  }
137
578
 
138
- .scene-panel p {
139
- color: #51483d;
140
- line-height: 1.8;
579
+ .scene-footer-copy {
580
+ color: #c8d6fa;
581
+ font-size: 0.9rem;
582
+ }
583
+
584
+ .scene-back-link {
585
+ width: auto;
141
586
  }
142
587
 
143
588
  html.is-spatial {
@@ -145,36 +590,76 @@ html.is-spatial {
145
590
  --xr-background-material: transparent;
146
591
  }
147
592
 
148
- html.is-spatial .persona-panel {
149
- --xr-background-material: thick;
593
+ html.is-spatial body {
594
+ background: transparent;
595
+ }
596
+
597
+ html.is-spatial .persona-button,
598
+ html.is-spatial .persona-link,
599
+ html.is-spatial .scene-chip,
600
+ html.is-spatial .scene-material-chip {
601
+ --xr-background-material: regular;
150
602
  }
151
603
 
152
604
  html.is-spatial .persona-runtime {
153
- --xr-background-material: translucent;
154
- --xr-back: 60;
155
- transform: translateZ(18px) rotateX(12deg);
605
+ transform: translateZ(20px) rotateX(10deg);
156
606
  transform-origin: top right;
157
607
  }
158
608
 
159
- html.is-spatial .persona-scene-card {
609
+ html.is-spatial .persona-card,
610
+ html.is-spatial .scene-ops-card,
611
+ html.is-spatial .scene-interaction-card,
612
+ html.is-spatial .scene-proof-card,
613
+ html.is-spatial .scene-nested-shell,
614
+ html.is-spatial .scene-nested-panel {
160
615
  --xr-background-material: thin;
161
- --xr-back: 36;
162
- transform: translateZ(24px) rotateX(14deg);
163
616
  }
164
617
 
165
- html.is-spatial .persona-link,
166
- html.is-spatial .persona-button {
167
- --xr-background-material: thick;
618
+ html.is-spatial .scene-debug-card {
619
+ --xr-background-material: transparent;
168
620
  }
169
621
 
170
- @media (max-width: 900px) {
171
- .persona-shell {
622
+ html.is-spatial .scene-nested-shell {
623
+ transform: translateZ(16px) rotateX(6deg);
624
+ transform-origin: top left;
625
+ }
626
+
627
+ @media (max-width: 1080px) {
628
+ .persona-grid {
629
+ grid-template-columns: repeat(2, minmax(0, 1fr));
630
+ }
631
+
632
+ .scene-interaction-grid,
633
+ .scene-hero,
634
+ .scene-content-grid {
635
+ grid-template-columns: 1fr;
636
+ }
637
+ }
638
+
639
+ @media (max-width: 820px) {
640
+ .persona-shell,
641
+ .scene-shell {
172
642
  width: min(100%, calc(100% - 28px));
173
- padding-top: 18px;
643
+ padding-top: 20px;
174
644
  }
175
645
 
176
646
  .persona-header,
177
- .persona-grid {
647
+ .persona-grid,
648
+ .persona-preview-strip,
649
+ .scene-interaction-grid,
650
+ .scene-depth-grid {
178
651
  grid-template-columns: 1fr;
179
652
  }
653
+
654
+ .scene-metric-grid {
655
+ grid-template-columns: repeat(2, minmax(0, 1fr));
656
+ }
657
+
658
+ .scene-board {
659
+ padding: 24px;
660
+ }
661
+
662
+ .scene-section-title {
663
+ font-size: 1.6rem;
664
+ }
180
665
  }