XcodeAddy commited on
Commit
4f640fa
·
1 Parent(s): 4797955

Refine SENTINEL visual system and mode layouts

Browse files
Files changed (1) hide show
  1. static/index.html +447 -12
static/index.html CHANGED
@@ -1247,6 +1247,404 @@
1247
  background: var(--magenta-soft);
1248
  }
1249
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1250
  @media (max-width: 1180px) {
1251
  .console {
1252
  grid-template-columns: 1fr;
@@ -1266,6 +1664,39 @@
1266
  "themes";
1267
  }
1268
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1269
  header {
1270
  grid-template-columns: 1fr;
1271
  }
@@ -1404,7 +1835,7 @@
1404
  </div>
1405
  </div>
1406
 
1407
- <main class="console">
1408
  <section class="hero">
1409
  <div class="section-head">
1410
  <h2>System Overview</h2>
@@ -1915,6 +2346,7 @@
1915
  };
1916
 
1917
  const el = {
 
1918
  taskSelect: document.getElementById("taskSelect"),
1919
  seedInput: document.getElementById("seedInput"),
1920
  resetBtn: document.getElementById("resetBtn"),
@@ -1981,10 +2413,10 @@
1981
  };
1982
 
1983
  function trustColor(value) {
1984
- if (value >= 0.72) return "#27e0a1";
1985
- if (value >= 0.48) return "#73a7ff";
1986
- if (value >= 0.30) return "#f5ba41";
1987
- return "#ff5f45";
1988
  }
1989
 
1990
  function trustStatus(value) {
@@ -2029,15 +2461,15 @@
2029
  const sectionViews = {
2030
  hero: ["overview", "judge"],
2031
  theater: ["playground", "judge"],
2032
- command: ["playground", "judge"],
2033
  mission: ["playground", "judge"],
2034
- trust: ["playground", "judge"],
2035
- playground: ["playground", "judge"],
2036
  story: ["overview", "judge"],
2037
  judge: ["judge"],
2038
  readiness: ["overview"],
2039
  proof: ["overview", "judge"],
2040
- events: ["playground", "judge"],
2041
  flow: ["overview"],
2042
  themes: ["overview"]
2043
  };
@@ -2051,11 +2483,14 @@
2051
  el.viewOverviewBtn.classList.toggle("active", view === "overview");
2052
  el.viewPlaygroundBtn.classList.toggle("active", view === "playground");
2053
  el.viewJudgeBtn.classList.toggle("active", view === "judge");
 
 
 
2054
 
2055
  const copy = {
2056
- overview: "Overview turns the environment into a judge-readable system story: the problem, the learning signal, and the live failure mode it fixes.",
2057
- playground: "Playground is the backend-visible mode: every reset() and step() payload is shown so you can understand exactly what the environment returns.",
2058
- judge: "Judge Demo is the fast pitch mode: show baseline failure, show heuristic recovery, then swap profiles to prove the agent learned a skill instead of an identity."
2059
  };
2060
  if (el.viewCopy) {
2061
  el.viewCopy.textContent = copy[view] || copy.overview;
 
1247
  background: var(--magenta-soft);
1248
  }
1249
 
1250
+ /* Phase 4 visual system rebuild: calmer glass surfaces, cleaner hierarchy,
1251
+ and per-mode layouts so the page feels like a product instead of one giant board. */
1252
+ :root {
1253
+ --bg: #060912;
1254
+ --panel: rgba(15, 19, 30, 0.72);
1255
+ --panel-2: rgba(20, 25, 39, 0.68);
1256
+ --panel-3: rgba(26, 31, 47, 0.66);
1257
+ --ink: #f4f7ff;
1258
+ --muted: #a4aec4;
1259
+ --faint: #71809f;
1260
+ --line: rgba(255, 255, 255, 0.1);
1261
+ --jade: #63dfc0;
1262
+ --jade-soft: rgba(99, 223, 192, 0.14);
1263
+ --amber: #ffbf7d;
1264
+ --amber-soft: rgba(255, 191, 125, 0.14);
1265
+ --flame: #ff8d93;
1266
+ --flame-soft: rgba(255, 141, 147, 0.14);
1267
+ --blue: #8eb5ff;
1268
+ --blue-soft: rgba(142, 181, 255, 0.14);
1269
+ --magenta: #c5a3ff;
1270
+ --magenta-soft: rgba(197, 163, 255, 0.14);
1271
+ --cream: #f7f9ff;
1272
+ --shadow: 0 24px 60px rgba(3, 8, 20, 0.36);
1273
+ }
1274
+
1275
+ html {
1276
+ background: var(--bg);
1277
+ }
1278
+
1279
+ body {
1280
+ background:
1281
+ radial-gradient(circle at 12% 0%, rgba(142, 181, 255, 0.18), transparent 24%),
1282
+ radial-gradient(circle at 88% 8%, rgba(197, 163, 255, 0.14), transparent 22%),
1283
+ radial-gradient(circle at 60% 100%, rgba(99, 223, 192, 0.08), transparent 22%),
1284
+ linear-gradient(180deg, #05070d 0%, #0a0d15 46%, #070a12 100%);
1285
+ background-attachment: fixed;
1286
+ color: var(--ink);
1287
+ }
1288
+
1289
+ body::before {
1290
+ content: "";
1291
+ position: fixed;
1292
+ inset: 0;
1293
+ pointer-events: none;
1294
+ background:
1295
+ linear-gradient(rgba(255, 255, 255, 0.022) 1px, transparent 1px),
1296
+ linear-gradient(90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px);
1297
+ background-size: 42px 42px;
1298
+ mask-image: radial-gradient(circle at center, black 35%, transparent 82%);
1299
+ opacity: 0.34;
1300
+ }
1301
+
1302
+ header,
1303
+ .modebar {
1304
+ background: rgba(8, 11, 19, 0.72);
1305
+ border-color: rgba(255, 255, 255, 0.08);
1306
+ backdrop-filter: blur(24px) saturate(1.3);
1307
+ }
1308
+
1309
+ .brand {
1310
+ gap: 16px;
1311
+ }
1312
+
1313
+ .mark {
1314
+ border-color: rgba(255, 255, 255, 0.12);
1315
+ background:
1316
+ radial-gradient(circle at 30% 28%, rgba(142, 181, 255, 0.45), transparent 58%),
1317
+ linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)),
1318
+ rgba(17, 22, 34, 0.82);
1319
+ color: #eef4ff;
1320
+ box-shadow:
1321
+ inset 0 1px 0 rgba(255, 255, 255, 0.18),
1322
+ 0 12px 34px rgba(5, 10, 22, 0.34);
1323
+ }
1324
+
1325
+ h1 {
1326
+ font-size: 22px;
1327
+ color: #f7faff;
1328
+ }
1329
+
1330
+ .subhead,
1331
+ .view-copy,
1332
+ .muted,
1333
+ .label,
1334
+ .node-copy,
1335
+ .playground-card span,
1336
+ .theme-card span,
1337
+ .readiness-item span,
1338
+ .flow-step span {
1339
+ color: var(--muted);
1340
+ }
1341
+
1342
+ button,
1343
+ select,
1344
+ input,
1345
+ .view-tab {
1346
+ border-color: rgba(255, 255, 255, 0.1);
1347
+ background: rgba(255, 255, 255, 0.045);
1348
+ color: var(--ink);
1349
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
1350
+ }
1351
+
1352
+ button:hover,
1353
+ .view-tab:hover {
1354
+ border-color: rgba(255, 255, 255, 0.16);
1355
+ background: rgba(255, 255, 255, 0.08);
1356
+ }
1357
+
1358
+ button.primary,
1359
+ .view-tab.active {
1360
+ border-color: rgba(142, 181, 255, 0.38);
1361
+ background:
1362
+ linear-gradient(180deg, rgba(142, 181, 255, 0.22), rgba(142, 181, 255, 0.1)),
1363
+ rgba(255, 255, 255, 0.05);
1364
+ color: #f3f8ff;
1365
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
1366
+ }
1367
+
1368
+ button.warn {
1369
+ border-color: rgba(255, 191, 125, 0.32);
1370
+ background:
1371
+ linear-gradient(180deg, rgba(255, 191, 125, 0.2), rgba(255, 191, 125, 0.08)),
1372
+ rgba(255, 255, 255, 0.04);
1373
+ color: #fff1e0;
1374
+ }
1375
+
1376
+ button.danger {
1377
+ border-color: rgba(255, 141, 147, 0.3);
1378
+ background:
1379
+ linear-gradient(180deg, rgba(255, 141, 147, 0.2), rgba(255, 141, 147, 0.08)),
1380
+ rgba(255, 255, 255, 0.04);
1381
+ color: #ffe9eb;
1382
+ }
1383
+
1384
+ .console {
1385
+ width: min(1480px, 100%);
1386
+ gap: 16px;
1387
+ }
1388
+
1389
+ .console[data-view="overview"] {
1390
+ grid-template-columns: minmax(420px, 1.02fr) minmax(360px, 0.98fr);
1391
+ grid-template-areas:
1392
+ "hero hero"
1393
+ "story proof"
1394
+ "flow themes"
1395
+ "readiness readiness";
1396
+ }
1397
+
1398
+ .console[data-view="playground"] {
1399
+ grid-template-columns: minmax(520px, 1.24fr) minmax(360px, 0.76fr);
1400
+ grid-template-areas:
1401
+ "theater command"
1402
+ "mission playground"
1403
+ "trust playground"
1404
+ "events playground";
1405
+ }
1406
+
1407
+ .console[data-view="judge"] {
1408
+ grid-template-columns: minmax(500px, 1.05fr) minmax(360px, 0.95fr);
1409
+ grid-template-areas:
1410
+ "hero hero"
1411
+ "story proof"
1412
+ "theater judge"
1413
+ "mission judge";
1414
+ }
1415
+
1416
+ section,
1417
+ .hero-panel,
1418
+ .decision-card,
1419
+ .stat,
1420
+ .playground-card,
1421
+ .json-panel,
1422
+ .story-lane,
1423
+ .judge-card,
1424
+ .readiness-item,
1425
+ .event,
1426
+ .flow-step,
1427
+ .theme-card,
1428
+ .node,
1429
+ .outcome,
1430
+ .stage-label {
1431
+ background:
1432
+ linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)),
1433
+ var(--panel);
1434
+ border-color: rgba(255, 255, 255, 0.1);
1435
+ box-shadow:
1436
+ inset 0 1px 0 rgba(255, 255, 255, 0.05),
1437
+ 0 18px 50px rgba(3, 8, 20, 0.22);
1438
+ backdrop-filter: blur(22px) saturate(1.3);
1439
+ }
1440
+
1441
+ .section-head,
1442
+ .json-head {
1443
+ background: rgba(255, 255, 255, 0.025);
1444
+ border-bottom-color: rgba(255, 255, 255, 0.07);
1445
+ }
1446
+
1447
+ h2 {
1448
+ color: rgba(247, 249, 255, 0.84);
1449
+ letter-spacing: 0.08em;
1450
+ }
1451
+
1452
+ .chip {
1453
+ border-color: rgba(255, 255, 255, 0.1);
1454
+ background: rgba(255, 255, 255, 0.055);
1455
+ color: #dde5f6;
1456
+ }
1457
+
1458
+ .chip.live {
1459
+ border-color: rgba(142, 181, 255, 0.24);
1460
+ color: #dbe8ff;
1461
+ background: rgba(142, 181, 255, 0.12);
1462
+ }
1463
+
1464
+ .chip.warn {
1465
+ border-color: rgba(255, 191, 125, 0.22);
1466
+ color: #ffe7c8;
1467
+ background: rgba(255, 191, 125, 0.12);
1468
+ }
1469
+
1470
+ .chip.fail {
1471
+ border-color: rgba(255, 141, 147, 0.22);
1472
+ color: #ffd7da;
1473
+ background: rgba(255, 141, 147, 0.12);
1474
+ }
1475
+
1476
+ .stage {
1477
+ border-color: rgba(255, 255, 255, 0.11);
1478
+ background:
1479
+ radial-gradient(circle at 50% 12%, rgba(142, 181, 255, 0.22), transparent 18%),
1480
+ radial-gradient(circle at 82% 82%, rgba(197, 163, 255, 0.18), transparent 18%),
1481
+ linear-gradient(rgba(255, 255, 255, 0.018) 1px, transparent 1px),
1482
+ linear-gradient(90deg, rgba(255, 255, 255, 0.016) 1px, transparent 1px),
1483
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01)),
1484
+ rgba(9, 13, 23, 0.72);
1485
+ background-size: auto, auto, 32px 32px, 32px 32px, auto, auto;
1486
+ box-shadow:
1487
+ inset 0 1px 0 rgba(255, 255, 255, 0.05),
1488
+ 0 24px 60px rgba(3, 8, 20, 0.28);
1489
+ }
1490
+
1491
+ .stage::after {
1492
+ border-color: rgba(255, 255, 255, 0.06);
1493
+ }
1494
+
1495
+ .brain-card {
1496
+ border-color: rgba(142, 181, 255, 0.28);
1497
+ background:
1498
+ radial-gradient(circle at 20% 20%, rgba(142, 181, 255, 0.22), transparent 42%),
1499
+ linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)),
1500
+ rgba(18, 23, 35, 0.72);
1501
+ box-shadow:
1502
+ inset 0 1px 0 rgba(255, 255, 255, 0.08),
1503
+ 0 22px 48px rgba(3, 8, 20, 0.32);
1504
+ }
1505
+
1506
+ .signal-line {
1507
+ background: linear-gradient(180deg, rgba(142, 181, 255, 0.72), rgba(197, 163, 255, 0.56), rgba(99, 223, 192, 0.46));
1508
+ }
1509
+
1510
+ .node.active {
1511
+ border-color: rgba(142, 181, 255, 0.34);
1512
+ box-shadow:
1513
+ inset 0 1px 0 rgba(255, 255, 255, 0.06),
1514
+ 0 0 0 1px rgba(142, 181, 255, 0.16);
1515
+ }
1516
+
1517
+ .node.watch {
1518
+ border-color: rgba(255, 191, 125, 0.34);
1519
+ }
1520
+
1521
+ .node.quarantine {
1522
+ border-color: rgba(255, 141, 147, 0.38);
1523
+ }
1524
+
1525
+ .node-id,
1526
+ .node-title,
1527
+ .outcome strong,
1528
+ .hero-panel h3,
1529
+ .judge-card h3,
1530
+ .story-title strong,
1531
+ .decision-title strong,
1532
+ .theme-card strong,
1533
+ .flow-step strong,
1534
+ .readiness-item strong,
1535
+ .playground-card strong {
1536
+ color: #f7f9ff;
1537
+ }
1538
+
1539
+ .trust-rail,
1540
+ .bar,
1541
+ .progress,
1542
+ .risk-track,
1543
+ .mini-bar {
1544
+ background: rgba(255, 255, 255, 0.08);
1545
+ }
1546
+
1547
+ .progress span {
1548
+ background: linear-gradient(90deg, #ff9e8c, #c5a3ff, #8eb5ff);
1549
+ }
1550
+
1551
+ .risk-track span {
1552
+ background: linear-gradient(90deg, #63dfc0, #8eb5ff, #ffbf7d);
1553
+ }
1554
+
1555
+ .recommendation-output {
1556
+ border-color: rgba(142, 181, 255, 0.2);
1557
+ background: rgba(142, 181, 255, 0.1);
1558
+ color: #e6efff;
1559
+ }
1560
+
1561
+ .story-lane.before,
1562
+ .judge-card.bad {
1563
+ background:
1564
+ linear-gradient(180deg, rgba(255, 141, 147, 0.14), rgba(255, 141, 147, 0.05)),
1565
+ rgba(18, 22, 34, 0.7);
1566
+ border-color: rgba(255, 141, 147, 0.2);
1567
+ }
1568
+
1569
+ .story-lane.after,
1570
+ .judge-card.good {
1571
+ background:
1572
+ linear-gradient(180deg, rgba(142, 181, 255, 0.14), rgba(99, 223, 192, 0.06)),
1573
+ rgba(18, 22, 34, 0.7);
1574
+ border-color: rgba(142, 181, 255, 0.2);
1575
+ }
1576
+
1577
+ .judge-card.warn,
1578
+ .readiness-item.pending {
1579
+ background:
1580
+ linear-gradient(180deg, rgba(255, 191, 125, 0.14), rgba(255, 191, 125, 0.05)),
1581
+ rgba(18, 22, 34, 0.7);
1582
+ border-color: rgba(255, 191, 125, 0.2);
1583
+ }
1584
+
1585
+ .story-score {
1586
+ color: #f4f7ff;
1587
+ background: rgba(255, 255, 255, 0.08);
1588
+ border: 1px solid rgba(255, 255, 255, 0.1);
1589
+ }
1590
+
1591
+ .chart-frame {
1592
+ background:
1593
+ linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.04)),
1594
+ rgba(246, 248, 253, 0.96);
1595
+ border-color: rgba(255, 255, 255, 0.2);
1596
+ }
1597
+
1598
+ .hero-panel.primary {
1599
+ border-color: rgba(142, 181, 255, 0.18);
1600
+ background:
1601
+ radial-gradient(circle at 82% 12%, rgba(99, 223, 192, 0.12), transparent 22%),
1602
+ radial-gradient(circle at 18% 0%, rgba(142, 181, 255, 0.18), transparent 24%),
1603
+ linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)),
1604
+ rgba(18, 22, 34, 0.72);
1605
+ }
1606
+
1607
+ .hero-callout,
1608
+ .hero-step,
1609
+ .judge-step,
1610
+ .story-step,
1611
+ .story-note,
1612
+ .hero-stat {
1613
+ background:
1614
+ linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.015)),
1615
+ rgba(11, 15, 24, 0.56);
1616
+ border-color: rgba(255, 255, 255, 0.08);
1617
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
1618
+ }
1619
+
1620
+ .hero-stat .value,
1621
+ .judge-card .value,
1622
+ .value {
1623
+ color: #f7f9ff;
1624
+ }
1625
+
1626
+ .json-block {
1627
+ color: #dce8ff;
1628
+ }
1629
+
1630
+ .event .reward {
1631
+ color: #9bd0ff;
1632
+ }
1633
+
1634
+ ::-webkit-scrollbar {
1635
+ width: 10px;
1636
+ height: 10px;
1637
+ }
1638
+
1639
+ ::-webkit-scrollbar-thumb {
1640
+ background: rgba(255, 255, 255, 0.14);
1641
+ border-radius: 999px;
1642
+ }
1643
+
1644
+ ::-webkit-scrollbar-track {
1645
+ background: rgba(255, 255, 255, 0.04);
1646
+ }
1647
+
1648
  @media (max-width: 1180px) {
1649
  .console {
1650
  grid-template-columns: 1fr;
 
1664
  "themes";
1665
  }
1666
 
1667
+ .console[data-view="overview"] {
1668
+ grid-template-columns: 1fr;
1669
+ grid-template-areas:
1670
+ "hero"
1671
+ "story"
1672
+ "proof"
1673
+ "flow"
1674
+ "themes"
1675
+ "readiness";
1676
+ }
1677
+
1678
+ .console[data-view="playground"] {
1679
+ grid-template-columns: 1fr;
1680
+ grid-template-areas:
1681
+ "theater"
1682
+ "command"
1683
+ "mission"
1684
+ "trust"
1685
+ "playground"
1686
+ "events";
1687
+ }
1688
+
1689
+ .console[data-view="judge"] {
1690
+ grid-template-columns: 1fr;
1691
+ grid-template-areas:
1692
+ "hero"
1693
+ "story"
1694
+ "proof"
1695
+ "theater"
1696
+ "mission"
1697
+ "judge";
1698
+ }
1699
+
1700
  header {
1701
  grid-template-columns: 1fr;
1702
  }
 
1835
  </div>
1836
  </div>
1837
 
1838
+ <main id="console" class="console">
1839
  <section class="hero">
1840
  <div class="section-head">
1841
  <h2>System Overview</h2>
 
2346
  };
2347
 
2348
  const el = {
2349
+ console: document.getElementById("console"),
2350
  taskSelect: document.getElementById("taskSelect"),
2351
  seedInput: document.getElementById("seedInput"),
2352
  resetBtn: document.getElementById("resetBtn"),
 
2413
  };
2414
 
2415
  function trustColor(value) {
2416
+ if (value >= 0.72) return "#63dfc0";
2417
+ if (value >= 0.48) return "#8eb5ff";
2418
+ if (value >= 0.30) return "#ffbf7d";
2419
+ return "#ff8d93";
2420
  }
2421
 
2422
  function trustStatus(value) {
 
2461
  const sectionViews = {
2462
  hero: ["overview", "judge"],
2463
  theater: ["playground", "judge"],
2464
+ command: ["playground"],
2465
  mission: ["playground", "judge"],
2466
+ trust: ["playground"],
2467
+ playground: ["playground"],
2468
  story: ["overview", "judge"],
2469
  judge: ["judge"],
2470
  readiness: ["overview"],
2471
  proof: ["overview", "judge"],
2472
+ events: ["playground"],
2473
  flow: ["overview"],
2474
  themes: ["overview"]
2475
  };
 
2483
  el.viewOverviewBtn.classList.toggle("active", view === "overview");
2484
  el.viewPlaygroundBtn.classList.toggle("active", view === "playground");
2485
  el.viewJudgeBtn.classList.toggle("active", view === "judge");
2486
+ if (el.console) {
2487
+ el.console.dataset.view = view;
2488
+ }
2489
 
2490
  const copy = {
2491
+ overview: "Overview is the clean narrative surface: what SENTINEL solves, how reward proves learning, and why trust calibration matters for real multi-agent systems.",
2492
+ playground: "Playground is the engineering surface: live trust state, action routing, backend request and response payloads, and flight-recorder events.",
2493
+ judge: "Judge Demo is the pitch surface: baseline failure, heuristic recovery, then profile swap to show the orchestrator learned a transferable trust skill."
2494
  };
2495
  if (el.viewCopy) {
2496
  el.viewCopy.textContent = copy[view] || copy.overview;