ltcai 4.6.1 → 4.7.2

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 (34) hide show
  1. package/README.md +74 -40
  2. package/docs/CHANGELOG.md +141 -0
  3. package/docs/PRODUCT_DIRECTION_REVIEW.md +88 -0
  4. package/docs/V4_7_0_ADMIN_SEPARATION_REPORT.md +42 -0
  5. package/docs/V4_7_1_ADMIN_OPERATIONS_REPORT.md +49 -0
  6. package/docs/V4_7_2_INTUITIVE_BRAIN_UX_REPORT.md +62 -0
  7. package/docs/V4_DIGITAL_BRAIN_RECOVERY.md +22 -19
  8. package/frontend/src/App.tsx +627 -8
  9. package/frontend/src/api/client.ts +11 -1
  10. package/frontend/src/components/ProductFlow.tsx +106 -51
  11. package/frontend/src/pages/System.tsx +1 -1
  12. package/frontend/src/styles.css +905 -81
  13. package/lattice_brain/__init__.py +1 -1
  14. package/lattice_brain/archive.py +86 -13
  15. package/lattice_brain/portability.py +82 -14
  16. package/lattice_brain/runtime/multi_agent.py +1 -1
  17. package/latticeai/__init__.py +1 -1
  18. package/latticeai/api/admin.py +141 -6
  19. package/latticeai/api/chat.py +35 -13
  20. package/latticeai/app_factory.py +8 -4
  21. package/latticeai/core/audit.py +3 -2
  22. package/latticeai/core/marketplace.py +1 -1
  23. package/latticeai/core/workspace_os.py +1 -1
  24. package/package.json +2 -1
  25. package/src-tauri/Cargo.lock +1 -1
  26. package/src-tauri/Cargo.toml +1 -1
  27. package/src-tauri/tauri.conf.json +1 -1
  28. package/static/app/asset-manifest.json +5 -5
  29. package/static/app/assets/index-DdAB4yfa.js +16 -0
  30. package/static/app/assets/index-DdAB4yfa.js.map +1 -0
  31. package/static/app/assets/{index-7U86v70r.css → index-KlQ04wVv.css} +1 -1
  32. package/static/app/index.html +2 -2
  33. package/static/app/assets/index-D1jAPQws.js +0 -16
  34. package/static/app/assets/index-D1jAPQws.js.map +0 -1
@@ -1238,6 +1238,7 @@ body {
1238
1238
  display: flex;
1239
1239
  align-items: center;
1240
1240
  justify-content: space-between;
1241
+ gap: 0.75rem;
1241
1242
  padding-bottom: 0.65rem;
1242
1243
  color: hsl(var(--fg-muted));
1243
1244
  font-size: 0.75rem;
@@ -1245,6 +1246,50 @@ body {
1245
1246
  text-transform: uppercase;
1246
1247
  }
1247
1248
 
1249
+ .brain-ownership-strip {
1250
+ display: flex;
1251
+ flex: 1 1 auto;
1252
+ justify-content: center;
1253
+ gap: 0.45rem;
1254
+ min-width: 0;
1255
+ }
1256
+
1257
+ .brain-ownership-strip span {
1258
+ border: 1px solid hsl(var(--border) / 0.58);
1259
+ border-radius: 999px;
1260
+ background: hsl(var(--surface-glass));
1261
+ padding: 0.28rem 0.58rem;
1262
+ color: hsl(var(--fg-muted));
1263
+ font-size: 0.62rem;
1264
+ font-weight: 780;
1265
+ white-space: nowrap;
1266
+ }
1267
+
1268
+ .brain-admin-link {
1269
+ display: inline-flex;
1270
+ min-height: 2rem;
1271
+ align-items: center;
1272
+ gap: 0.35rem;
1273
+ border: 1px solid hsl(var(--border) / 0.58);
1274
+ border-radius: 999px;
1275
+ background: hsl(var(--surface-glass));
1276
+ color: hsl(var(--fg-muted));
1277
+ padding: 0 0.62rem;
1278
+ font-size: 0.68rem;
1279
+ font-weight: 820;
1280
+ letter-spacing: 0;
1281
+ text-transform: none;
1282
+ transition: border-color 150ms ease, color 150ms ease, background 150ms ease;
1283
+ }
1284
+
1285
+ .brain-admin-link:hover,
1286
+ .brain-admin-link:focus-visible {
1287
+ border-color: hsl(var(--brain-core) / 0.72);
1288
+ background: hsl(var(--brain-core) / 0.08);
1289
+ color: hsl(var(--fg));
1290
+ outline: none;
1291
+ }
1292
+
1248
1293
  .brain-stream {
1249
1294
  flex: 1 1 auto;
1250
1295
  overflow-y: auto;
@@ -1253,6 +1298,107 @@ body {
1253
1298
  mask-image: linear-gradient(transparent, black 6%, black 92%, transparent);
1254
1299
  }
1255
1300
 
1301
+ .brain-overview-panel {
1302
+ margin: 0 0 1rem;
1303
+ border: 1px solid hsl(var(--border) / 0.58);
1304
+ border-radius: 8px;
1305
+ background: hsl(var(--surface-glass));
1306
+ padding: 0.8rem;
1307
+ box-shadow: 0 14px 34px hsl(200 30% 3% / 0.16);
1308
+ backdrop-filter: blur(18px);
1309
+ }
1310
+
1311
+ .brain-overview-head {
1312
+ display: flex;
1313
+ align-items: center;
1314
+ justify-content: space-between;
1315
+ gap: 0.8rem;
1316
+ margin-bottom: 0.72rem;
1317
+ }
1318
+
1319
+ .brain-overview-head span {
1320
+ display: block;
1321
+ color: hsl(var(--fg-muted));
1322
+ font-size: 0.68rem;
1323
+ font-weight: 820;
1324
+ }
1325
+
1326
+ .brain-overview-head strong {
1327
+ display: block;
1328
+ margin-top: 0.14rem;
1329
+ font-size: 0.94rem;
1330
+ }
1331
+
1332
+ .brain-overview-head button {
1333
+ min-height: 2rem;
1334
+ border: 1px solid hsl(var(--brain-core) / 0.38);
1335
+ border-radius: 999px;
1336
+ background: hsl(var(--brain-core) / 0.08);
1337
+ color: hsl(var(--fg));
1338
+ padding: 0 0.75rem;
1339
+ font-size: 0.78rem;
1340
+ font-weight: 760;
1341
+ }
1342
+
1343
+ .brain-overview-grid {
1344
+ display: grid;
1345
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1346
+ gap: 0.62rem;
1347
+ }
1348
+
1349
+ .brain-overview-column {
1350
+ display: grid;
1351
+ min-height: 6.4rem;
1352
+ align-content: start;
1353
+ gap: 0.34rem;
1354
+ border: 1px solid hsl(var(--border) / 0.5);
1355
+ border-radius: 8px;
1356
+ background: hsl(var(--bg) / 0.38);
1357
+ color: hsl(var(--fg));
1358
+ padding: 0.66rem;
1359
+ text-align: left;
1360
+ transition: border-color 150ms ease, background 150ms ease;
1361
+ }
1362
+
1363
+ .brain-overview-column:hover,
1364
+ .brain-overview-column:focus-visible {
1365
+ border-color: hsl(var(--brain-core) / 0.65);
1366
+ background: hsl(var(--brain-core) / 0.07);
1367
+ outline: none;
1368
+ }
1369
+
1370
+ .brain-overview-column span {
1371
+ color: hsl(var(--fg-muted));
1372
+ font-size: 0.68rem;
1373
+ font-weight: 820;
1374
+ }
1375
+
1376
+ .brain-overview-column strong {
1377
+ display: block;
1378
+ overflow: hidden;
1379
+ text-overflow: ellipsis;
1380
+ white-space: nowrap;
1381
+ font-size: 0.8rem;
1382
+ line-height: 1.2;
1383
+ }
1384
+
1385
+ .brain-overview-column em {
1386
+ color: hsl(var(--fg-muted));
1387
+ font-size: 0.8rem;
1388
+ font-style: normal;
1389
+ line-height: 1.35;
1390
+ }
1391
+
1392
+ .brain-save-feedback {
1393
+ border: 1px solid hsl(var(--memory) / 0.38);
1394
+ border-radius: 8px;
1395
+ background: hsl(var(--memory) / 0.08);
1396
+ color: hsl(var(--fg));
1397
+ padding: 0.58rem 0.72rem;
1398
+ font-size: 0.84rem;
1399
+ font-weight: 720;
1400
+ }
1401
+
1256
1402
  .brain-message {
1257
1403
  max-width: 78%;
1258
1404
  margin-bottom: 1.1rem;
@@ -1696,6 +1842,43 @@ body {
1696
1842
  line-height: 1.05;
1697
1843
  }
1698
1844
 
1845
+ .brain-depth-actions {
1846
+ position: absolute;
1847
+ left: 50%;
1848
+ bottom: 4.15rem;
1849
+ z-index: 6;
1850
+ display: flex;
1851
+ max-width: min(94vw, 31rem);
1852
+ transform: translateX(-50%);
1853
+ gap: 0.35rem;
1854
+ border: 1px solid hsl(var(--border) / 0.52);
1855
+ border-radius: 999px;
1856
+ background: hsl(var(--surface-glass));
1857
+ padding: 0.32rem;
1858
+ box-shadow: 0 14px 38px hsl(200 30% 3% / 0.22);
1859
+ backdrop-filter: blur(18px);
1860
+ }
1861
+
1862
+ .brain-depth-actions button {
1863
+ min-height: 2rem;
1864
+ border: 0;
1865
+ border-radius: 999px;
1866
+ background: transparent;
1867
+ color: hsl(var(--fg-muted));
1868
+ padding: 0 0.68rem;
1869
+ font-size: 0.78rem;
1870
+ font-weight: 760;
1871
+ white-space: nowrap;
1872
+ }
1873
+
1874
+ .brain-depth-actions button:hover,
1875
+ .brain-depth-actions button:focus-visible,
1876
+ .brain-depth-actions button.is-active {
1877
+ background: hsl(var(--brain-core) / 0.12);
1878
+ color: hsl(var(--fg));
1879
+ outline: none;
1880
+ }
1881
+
1699
1882
  .memory-fragment,
1700
1883
  .concept-signal,
1701
1884
  .graph-node {
@@ -1934,122 +2117,730 @@ body {
1934
2117
  margin-top: 0.2rem;
1935
2118
  }
1936
2119
 
1937
- .brain-image-input {
1938
- display: inline-flex;
1939
- cursor: pointer;
1940
- align-items: center;
1941
- gap: 0.4rem;
1942
- border: 1px solid hsl(var(--border) / 0.68);
1943
- border-radius: 999px;
1944
- padding: 0.42rem 0.78rem;
1945
- color: hsl(var(--fg-muted));
1946
- font-size: 0.78rem;
2120
+ .brain-care-panel {
2121
+ display: grid;
2122
+ border: 1px solid hsl(var(--border) / 0.64);
2123
+ border-radius: 8px;
2124
+ background:
2125
+ linear-gradient(135deg, hsl(var(--surface-glass)), hsl(var(--bg) / 0.68)),
2126
+ linear-gradient(90deg, hsl(var(--memory) / 0.08), transparent 45%, hsl(var(--brain-core) / 0.08));
2127
+ overflow: hidden;
2128
+ box-shadow: 0 14px 36px hsl(200 30% 3% / 0.2);
2129
+ backdrop-filter: blur(18px);
1947
2130
  }
1948
2131
 
1949
- .mind-empty-kicker {
1950
- margin-bottom: 0.4rem;
1951
- font-size: 0.72rem;
1952
- font-weight: 800;
1953
- letter-spacing: 1.5px;
1954
- text-transform: uppercase;
1955
- opacity: 0.52;
2132
+ .brain-care-summary {
2133
+ display: flex;
2134
+ width: 100%;
2135
+ align-items: center;
2136
+ justify-content: space-between;
2137
+ gap: 0.75rem;
2138
+ border: 0;
2139
+ background: transparent;
2140
+ color: inherit;
2141
+ padding: 0.72rem 0.82rem;
2142
+ text-align: left;
1956
2143
  }
1957
2144
 
1958
- @keyframes relationship-flow {
1959
- from {
1960
- stroke-dashoffset: 24;
1961
- }
1962
- to {
1963
- stroke-dashoffset: 0;
1964
- }
2145
+ .brain-care-summary:hover,
2146
+ .brain-care-summary:focus-visible {
2147
+ background: hsl(var(--memory) / 0.07);
2148
+ outline: none;
1965
2149
  }
1966
2150
 
1967
- /* Product flow — now a quiet ritual, not a wizard */
1968
- .product-flow-shell {
1969
- min-height: 100vh;
2151
+ .brain-care-summary-main {
1970
2152
  display: grid;
1971
- place-items: center;
1972
- padding: 2.5rem 1.25rem;
1973
- background: radial-gradient(100% 70% at 50% 15%, hsl(var(--bg-elevated)), hsl(var(--bg)));
2153
+ min-width: 0;
2154
+ gap: 0.16rem;
1974
2155
  }
1975
2156
 
1976
- .product-flow-shell .living-brain { transform: scale(0.82); }
1977
-
1978
- .flow-ritual {
1979
- width: min(100%, 620px);
1980
- text-align: center;
2157
+ .brain-care-summary-main span,
2158
+ .brain-care-proof span,
2159
+ .brain-care-button small,
2160
+ .brain-care-note,
2161
+ .brain-care-result {
2162
+ color: hsl(var(--fg-muted));
2163
+ font-size: 0.72rem;
1981
2164
  }
1982
2165
 
1983
- .flow-ritual h1 {
1984
- font-size: clamp(2.1rem, 5.2vw, 3.1rem);
1985
- font-weight: 700;
1986
- line-height: 1.0;
1987
- margin: 1.1rem 0 0.6rem;
2166
+ .brain-care-summary-main span {
2167
+ display: inline-flex;
2168
+ align-items: center;
2169
+ gap: 0.36rem;
2170
+ font-weight: 800;
2171
+ text-transform: uppercase;
1988
2172
  }
1989
2173
 
1990
- .flow-ritual p {
1991
- color: hsl(var(--fg-muted));
1992
- font-size: 1.01rem;
1993
- max-width: 42ch;
1994
- margin: 0 auto;
2174
+ .brain-care-summary-main strong {
2175
+ display: block;
2176
+ overflow: hidden;
2177
+ color: hsl(var(--fg));
2178
+ font-size: 0.94rem;
2179
+ line-height: 1.16;
2180
+ text-overflow: ellipsis;
2181
+ white-space: nowrap;
1995
2182
  }
1996
2183
 
1997
- .ritual-brain {
1998
- margin: 1.4rem auto 1.6rem;
2184
+ .brain-care-proof {
2185
+ display: flex;
2186
+ flex-wrap: wrap;
2187
+ justify-content: flex-end;
2188
+ gap: 0.35rem;
1999
2189
  }
2000
2190
 
2001
- /* Make old chrome and dock very quiet or hidden in main brain experience */
2002
- .app-chrome, .primary-dock, .ambient-brain {
2003
- display: none !important;
2191
+ .brain-care-proof span {
2192
+ border: 1px solid hsl(var(--border) / 0.58);
2193
+ border-radius: 999px;
2194
+ background: hsl(var(--bg) / 0.42);
2195
+ padding: 0.25rem 0.48rem;
2196
+ white-space: nowrap;
2004
2197
  }
2005
2198
 
2006
- .page-shell {
2007
- padding: 0;
2008
- max-width: none;
2009
- width: 100%;
2199
+ .brain-care-toggle {
2200
+ flex: 0 0 auto;
2201
+ color: hsl(var(--fg-muted));
2202
+ transition: transform 150ms ease;
2010
2203
  }
2011
2204
 
2012
- /* Gentle empty / loading for the mind */
2013
- .mind-empty {
2014
- text-align: center;
2015
- padding: 3rem 1rem;
2016
- color: hsl(var(--fg-muted));
2205
+ .brain-care-panel.is-expanded .brain-care-toggle {
2206
+ transform: rotate(180deg);
2017
2207
  }
2018
2208
 
2019
- .mind-empty .icon {
2020
- opacity: 0.5;
2021
- margin-bottom: 0.8rem;
2209
+ .brain-care-details {
2210
+ display: grid;
2211
+ gap: 0.75rem;
2212
+ border-top: 1px solid hsl(var(--border) / 0.5);
2213
+ padding: 0.82rem;
2022
2214
  }
2023
2215
 
2024
- /* Loading as thinking */
2025
- .thinking {
2026
- animation: thinking-subtle 1.6s ease-in-out infinite;
2216
+ .brain-care-actions,
2217
+ .brain-care-archive,
2218
+ .brain-care-archive-actions {
2219
+ display: flex;
2220
+ gap: 0.5rem;
2027
2221
  }
2028
2222
 
2029
- @keyframes thinking-subtle {
2030
- 0%,100% { opacity: 0.6; }
2031
- 50% { opacity: 1; }
2223
+ .brain-care-actions {
2224
+ flex-wrap: wrap;
2032
2225
  }
2033
2226
 
2034
- /* Success is quiet */
2035
- .brain-quiet-success {
2036
- font-size: 0.78rem;
2037
- color: hsl(var(--memory));
2227
+ .brain-care-button {
2038
2228
  display: inline-flex;
2229
+ min-width: 7.2rem;
2230
+ flex: 1 1 7.2rem;
2039
2231
  align-items: center;
2040
- gap: 0.35rem;
2232
+ gap: 0.52rem;
2233
+ border: 1px solid hsl(var(--border) / 0.68);
2234
+ border-radius: 8px;
2235
+ background: hsl(var(--bg) / 0.42);
2236
+ padding: 0.58rem 0.62rem;
2237
+ color: hsl(var(--fg));
2238
+ text-align: left;
2239
+ transition: border-color 150ms ease, background 150ms ease, transform 150ms ease;
2041
2240
  }
2042
2241
 
2043
- /* Responsive care */
2044
- @media (max-width: 720px) {
2045
- .brain-presence { padding-top: 1.4rem; }
2046
- .brain-organism { width: 200px; height: 200px; }
2047
- .brain-conversation { padding-bottom: 5.5rem; }
2048
- .depths { bottom: 0.9rem; }
2242
+ .brain-care-button:hover:not(:disabled),
2243
+ .brain-care-button:focus-visible {
2244
+ border-color: hsl(var(--memory) / 0.72);
2245
+ background: hsl(var(--memory) / 0.08);
2246
+ outline: none;
2247
+ transform: translateY(-1px);
2049
2248
  }
2050
2249
 
2051
- /* Ritual / Onboarding flow — uses the same living language as the Brain experience */
2052
- .ritual-shell {
2250
+ .brain-care-button:disabled {
2251
+ cursor: not-allowed;
2252
+ opacity: 0.52;
2253
+ }
2254
+
2255
+ .brain-care-button svg {
2256
+ flex: 0 0 auto;
2257
+ color: hsl(var(--memory));
2258
+ }
2259
+
2260
+ .brain-care-button span {
2261
+ display: grid;
2262
+ min-width: 0;
2263
+ gap: 0.08rem;
2264
+ }
2265
+
2266
+ .brain-care-button strong {
2267
+ overflow: hidden;
2268
+ font-size: 0.82rem;
2269
+ line-height: 1.12;
2270
+ text-overflow: ellipsis;
2271
+ white-space: nowrap;
2272
+ }
2273
+
2274
+ .brain-care-button small {
2275
+ overflow: hidden;
2276
+ line-height: 1.1;
2277
+ text-overflow: ellipsis;
2278
+ white-space: nowrap;
2279
+ }
2280
+
2281
+ .brain-care-archive {
2282
+ flex-wrap: wrap;
2283
+ }
2284
+
2285
+ .brain-care-archive input {
2286
+ min-width: 0;
2287
+ min-height: 2.2rem;
2288
+ flex: 1 1 12rem;
2289
+ border: 1px solid hsl(var(--border) / 0.68);
2290
+ border-radius: 8px;
2291
+ background: hsl(var(--bg) / 0.5);
2292
+ color: hsl(var(--fg));
2293
+ outline: none;
2294
+ padding: 0 0.68rem;
2295
+ font-size: 0.82rem;
2296
+ }
2297
+
2298
+ .brain-care-archive input:focus {
2299
+ border-color: hsl(var(--brain-core) / 0.68);
2300
+ box-shadow: 0 0 0 3px hsl(var(--brain-core) / 0.1);
2301
+ }
2302
+
2303
+ .brain-care-archive-actions {
2304
+ flex: 1 1 14rem;
2305
+ flex-wrap: wrap;
2306
+ }
2307
+
2308
+ .brain-care-archive-actions button {
2309
+ flex: 1 1 6.6rem;
2310
+ min-height: 2.2rem;
2311
+ border-radius: 8px;
2312
+ }
2313
+
2314
+ .brain-care-note,
2315
+ .brain-care-result {
2316
+ margin: 0;
2317
+ line-height: 1.35;
2318
+ }
2319
+
2320
+ .brain-care-result {
2321
+ border: 1px solid hsl(var(--border) / 0.58);
2322
+ border-radius: 8px;
2323
+ background: hsl(var(--bg) / 0.38);
2324
+ padding: 0.48rem 0.58rem;
2325
+ }
2326
+
2327
+ .brain-care-result.is-ok {
2328
+ border-color: hsl(var(--memory) / 0.46);
2329
+ color: hsl(var(--memory));
2330
+ }
2331
+
2332
+ .brain-care-result.is-error {
2333
+ border-color: hsl(var(--destructive) / 0.46);
2334
+ color: hsl(var(--destructive));
2335
+ }
2336
+
2337
+ .admin-console {
2338
+ position: relative;
2339
+ z-index: 2;
2340
+ width: min(1180px, calc(100vw - 2rem));
2341
+ margin: 0 auto;
2342
+ padding: clamp(1rem, 3vw, 2.25rem) 0 3rem;
2343
+ }
2344
+
2345
+ .admin-console-header {
2346
+ display: flex;
2347
+ align-items: flex-start;
2348
+ gap: 1rem;
2349
+ margin-bottom: 1rem;
2350
+ border-bottom: 1px solid hsl(var(--border) / 0.55);
2351
+ padding-bottom: 1rem;
2352
+ }
2353
+
2354
+ .admin-console-header h1,
2355
+ .admin-panel-head h2 {
2356
+ margin: 0;
2357
+ color: hsl(var(--fg));
2358
+ letter-spacing: 0;
2359
+ }
2360
+
2361
+ .admin-console-header h1 {
2362
+ font-size: clamp(1.75rem, 4vw, 3rem);
2363
+ line-height: 1;
2364
+ }
2365
+
2366
+ .admin-console-header span,
2367
+ .admin-panel-head span,
2368
+ .admin-metric span,
2369
+ .admin-list-row span,
2370
+ .admin-empty,
2371
+ .admin-operation span,
2372
+ .admin-metric small {
2373
+ color: hsl(var(--fg-muted));
2374
+ }
2375
+
2376
+ .admin-console-header > div > span,
2377
+ .admin-panel-head span,
2378
+ .admin-metric span {
2379
+ font-size: 0.72rem;
2380
+ font-weight: 850;
2381
+ text-transform: uppercase;
2382
+ }
2383
+
2384
+ .admin-console-header p {
2385
+ max-width: 44rem;
2386
+ margin: 0.5rem 0 0;
2387
+ color: hsl(var(--fg-muted));
2388
+ line-height: 1.45;
2389
+ }
2390
+
2391
+ .admin-back-button {
2392
+ display: inline-flex;
2393
+ flex: 0 0 auto;
2394
+ min-height: 2.4rem;
2395
+ align-items: center;
2396
+ gap: 0.45rem;
2397
+ border: 1px solid hsl(var(--border) / 0.7);
2398
+ border-radius: 999px;
2399
+ background: hsl(var(--surface-glass));
2400
+ color: hsl(var(--fg));
2401
+ padding: 0 0.85rem;
2402
+ }
2403
+
2404
+ .admin-back-button:hover,
2405
+ .admin-back-button:focus-visible {
2406
+ border-color: hsl(var(--brain-core) / 0.72);
2407
+ outline: none;
2408
+ }
2409
+
2410
+ .admin-metrics,
2411
+ .admin-grid {
2412
+ display: grid;
2413
+ gap: 0.85rem;
2414
+ }
2415
+
2416
+ .admin-metrics {
2417
+ grid-template-columns: repeat(4, minmax(0, 1fr));
2418
+ margin-bottom: 0.85rem;
2419
+ }
2420
+
2421
+ .admin-metric,
2422
+ .admin-panel {
2423
+ border: 1px solid hsl(var(--border) / 0.68);
2424
+ border-radius: 8px;
2425
+ background:
2426
+ linear-gradient(180deg, hsl(var(--surface-glass)), hsl(var(--bg) / 0.68)),
2427
+ linear-gradient(90deg, hsl(var(--memory) / 0.06), transparent 42%, hsl(var(--knowledge) / 0.06));
2428
+ box-shadow: 0 18px 46px hsl(200 30% 3% / 0.22);
2429
+ backdrop-filter: blur(18px);
2430
+ }
2431
+
2432
+ .admin-metric {
2433
+ display: grid;
2434
+ gap: 0.18rem;
2435
+ min-height: 8.2rem;
2436
+ padding: 0.9rem;
2437
+ }
2438
+
2439
+ .admin-metric > div {
2440
+ display: grid;
2441
+ width: 2.1rem;
2442
+ height: 2.1rem;
2443
+ place-items: center;
2444
+ border-radius: 8px;
2445
+ background: hsl(var(--brain-core) / 0.12);
2446
+ color: hsl(var(--brain-core));
2447
+ }
2448
+
2449
+ .admin-metric strong {
2450
+ overflow: hidden;
2451
+ font-size: 1.45rem;
2452
+ line-height: 1.05;
2453
+ text-overflow: ellipsis;
2454
+ white-space: nowrap;
2455
+ }
2456
+
2457
+ .admin-metric small {
2458
+ overflow: hidden;
2459
+ font-size: 0.74rem;
2460
+ text-overflow: ellipsis;
2461
+ white-space: nowrap;
2462
+ }
2463
+
2464
+ .admin-grid {
2465
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2466
+ }
2467
+
2468
+ .admin-panel {
2469
+ display: grid;
2470
+ align-content: start;
2471
+ gap: 0.8rem;
2472
+ min-height: 20rem;
2473
+ padding: 0.95rem;
2474
+ }
2475
+
2476
+ .admin-panel-head {
2477
+ display: grid;
2478
+ gap: 0.14rem;
2479
+ }
2480
+
2481
+ .admin-panel-head h2 {
2482
+ font-size: 1.1rem;
2483
+ }
2484
+
2485
+ .admin-list {
2486
+ display: grid;
2487
+ gap: 0.45rem;
2488
+ }
2489
+
2490
+ .admin-log-filters {
2491
+ display: grid;
2492
+ grid-template-columns: minmax(0, 1fr) minmax(8.5rem, 0.65fr) auto;
2493
+ gap: 0.45rem;
2494
+ align-items: center;
2495
+ }
2496
+
2497
+ .admin-log-filters label {
2498
+ display: flex;
2499
+ min-width: 0;
2500
+ align-items: center;
2501
+ gap: 0.4rem;
2502
+ border: 1px solid hsl(var(--border) / 0.54);
2503
+ border-radius: 8px;
2504
+ background: hsl(var(--bg) / 0.34);
2505
+ padding: 0.44rem 0.52rem;
2506
+ color: hsl(var(--fg-muted));
2507
+ }
2508
+
2509
+ .admin-log-filters input,
2510
+ .admin-log-filters select {
2511
+ min-width: 0;
2512
+ width: 100%;
2513
+ border: 0;
2514
+ outline: 0;
2515
+ background: transparent;
2516
+ color: hsl(var(--fg));
2517
+ font: inherit;
2518
+ font-size: 0.78rem;
2519
+ }
2520
+
2521
+ .admin-log-filters span,
2522
+ .admin-retention span {
2523
+ color: hsl(var(--fg-muted));
2524
+ font-size: 0.76rem;
2525
+ }
2526
+
2527
+ .admin-list-row {
2528
+ display: flex;
2529
+ min-height: 3.15rem;
2530
+ align-items: center;
2531
+ justify-content: space-between;
2532
+ gap: 0.75rem;
2533
+ border: 1px solid hsl(var(--border) / 0.48);
2534
+ border-radius: 8px;
2535
+ background: hsl(var(--bg) / 0.35);
2536
+ padding: 0.58rem 0.65rem;
2537
+ }
2538
+
2539
+ .admin-list-row strong,
2540
+ .admin-list-row span {
2541
+ overflow: hidden;
2542
+ text-overflow: ellipsis;
2543
+ white-space: nowrap;
2544
+ }
2545
+
2546
+ .admin-list-row strong {
2547
+ min-width: 0;
2548
+ font-size: 0.88rem;
2549
+ }
2550
+
2551
+ .admin-list-row span {
2552
+ flex: 0 1 45%;
2553
+ text-align: right;
2554
+ font-size: 0.74rem;
2555
+ }
2556
+
2557
+ .admin-empty {
2558
+ display: grid;
2559
+ min-height: 11rem;
2560
+ place-items: center;
2561
+ border: 1px dashed hsl(var(--border) / 0.6);
2562
+ border-radius: 8px;
2563
+ background: hsl(var(--bg) / 0.28);
2564
+ font-size: 0.86rem;
2565
+ text-align: center;
2566
+ }
2567
+
2568
+ .admin-operation {
2569
+ display: flex;
2570
+ align-items: center;
2571
+ justify-content: space-between;
2572
+ gap: 0.85rem;
2573
+ border: 1px solid hsl(var(--border) / 0.48);
2574
+ border-radius: 8px;
2575
+ background: hsl(var(--bg) / 0.35);
2576
+ padding: 0.78rem;
2577
+ }
2578
+
2579
+ .admin-operation > div {
2580
+ display: grid;
2581
+ min-width: 0;
2582
+ gap: 0.16rem;
2583
+ }
2584
+
2585
+ .admin-operation span {
2586
+ font-size: 0.8rem;
2587
+ line-height: 1.35;
2588
+ }
2589
+
2590
+ .admin-policy-strip {
2591
+ display: flex;
2592
+ flex-wrap: wrap;
2593
+ gap: 0.45rem;
2594
+ }
2595
+
2596
+ .admin-policy-strip span {
2597
+ border: 1px solid hsl(var(--border) / 0.58);
2598
+ border-radius: 999px;
2599
+ background: hsl(var(--bg) / 0.42);
2600
+ color: hsl(var(--fg-muted));
2601
+ padding: 0.32rem 0.56rem;
2602
+ font-size: 0.74rem;
2603
+ }
2604
+
2605
+ .admin-retention {
2606
+ display: grid;
2607
+ gap: 0.18rem;
2608
+ border: 1px solid hsl(var(--border) / 0.48);
2609
+ border-radius: 8px;
2610
+ background: hsl(var(--bg) / 0.35);
2611
+ padding: 0.68rem;
2612
+ }
2613
+
2614
+ .admin-retention strong {
2615
+ color: hsl(var(--fg));
2616
+ font-size: 0.88rem;
2617
+ }
2618
+
2619
+ .brain-image-input {
2620
+ display: inline-flex;
2621
+ cursor: pointer;
2622
+ align-items: center;
2623
+ gap: 0.4rem;
2624
+ border: 1px solid hsl(var(--border) / 0.68);
2625
+ border-radius: 999px;
2626
+ padding: 0.42rem 0.78rem;
2627
+ color: hsl(var(--fg-muted));
2628
+ font-size: 0.78rem;
2629
+ }
2630
+
2631
+ .mind-empty-kicker {
2632
+ margin-bottom: 0.4rem;
2633
+ font-size: 0.72rem;
2634
+ font-weight: 800;
2635
+ letter-spacing: 1.5px;
2636
+ text-transform: uppercase;
2637
+ opacity: 0.52;
2638
+ }
2639
+
2640
+ @keyframes relationship-flow {
2641
+ from {
2642
+ stroke-dashoffset: 24;
2643
+ }
2644
+ to {
2645
+ stroke-dashoffset: 0;
2646
+ }
2647
+ }
2648
+
2649
+ /* Product flow — now a quiet ritual, not a wizard */
2650
+ .product-flow-shell {
2651
+ min-height: 100vh;
2652
+ display: grid;
2653
+ place-items: center;
2654
+ padding: 2.5rem 1.25rem;
2655
+ background: radial-gradient(100% 70% at 50% 15%, hsl(var(--bg-elevated)), hsl(var(--bg)));
2656
+ }
2657
+
2658
+ .product-flow-shell .living-brain { transform: scale(0.82); }
2659
+
2660
+ .flow-ritual {
2661
+ width: min(100%, 620px);
2662
+ text-align: center;
2663
+ }
2664
+
2665
+ .flow-ritual h1 {
2666
+ font-size: clamp(2.1rem, 5.2vw, 3.1rem);
2667
+ font-weight: 700;
2668
+ line-height: 1.0;
2669
+ margin: 1.1rem 0 0.6rem;
2670
+ }
2671
+
2672
+ .flow-ritual p {
2673
+ color: hsl(var(--fg-muted));
2674
+ font-size: 1.01rem;
2675
+ max-width: 42ch;
2676
+ margin: 0 auto;
2677
+ }
2678
+
2679
+ .ritual-brain {
2680
+ margin: 1.4rem auto 1.6rem;
2681
+ }
2682
+
2683
+ /* Make old chrome and dock very quiet or hidden in main brain experience */
2684
+ .app-chrome, .primary-dock, .ambient-brain {
2685
+ display: none !important;
2686
+ }
2687
+
2688
+ .page-shell {
2689
+ padding: 0;
2690
+ max-width: none;
2691
+ width: 100%;
2692
+ }
2693
+
2694
+ /* Gentle empty / loading for the mind */
2695
+ .mind-empty {
2696
+ text-align: center;
2697
+ padding: 2.4rem 1rem;
2698
+ color: hsl(var(--fg-muted));
2699
+ }
2700
+
2701
+ .mind-empty-title {
2702
+ max-width: 34rem;
2703
+ margin: 0 auto 0.5rem;
2704
+ color: hsl(var(--fg));
2705
+ font-size: 1.1rem;
2706
+ font-weight: 650;
2707
+ line-height: 1.2;
2708
+ }
2709
+
2710
+ .mind-empty p {
2711
+ max-width: 39rem;
2712
+ margin: 0 auto;
2713
+ font-size: 0.9rem;
2714
+ line-height: 1.45;
2715
+ }
2716
+
2717
+ .mind-empty-prompts {
2718
+ display: flex;
2719
+ flex-wrap: wrap;
2720
+ justify-content: center;
2721
+ gap: 0.48rem;
2722
+ margin-top: 1rem;
2723
+ }
2724
+
2725
+ .mind-empty-prompts button {
2726
+ max-width: 100%;
2727
+ border: 1px solid hsl(var(--border) / 0.62);
2728
+ border-radius: 999px;
2729
+ background: hsl(var(--bg) / 0.46);
2730
+ color: hsl(var(--fg));
2731
+ padding: 0.46rem 0.7rem;
2732
+ font-size: 0.78rem;
2733
+ line-height: 1.15;
2734
+ transition: border-color 150ms ease, background 150ms ease, transform 150ms ease;
2735
+ }
2736
+
2737
+ .mind-empty-prompts button:hover,
2738
+ .mind-empty-prompts button:focus-visible {
2739
+ border-color: hsl(var(--memory) / 0.7);
2740
+ background: hsl(var(--memory) / 0.08);
2741
+ outline: none;
2742
+ transform: translateY(-1px);
2743
+ }
2744
+
2745
+ .mind-empty .icon {
2746
+ opacity: 0.5;
2747
+ margin-bottom: 0.8rem;
2748
+ }
2749
+
2750
+ /* Loading as thinking */
2751
+ .thinking {
2752
+ animation: thinking-subtle 1.6s ease-in-out infinite;
2753
+ }
2754
+
2755
+ @keyframes thinking-subtle {
2756
+ 0%,100% { opacity: 0.6; }
2757
+ 50% { opacity: 1; }
2758
+ }
2759
+
2760
+ /* Success is quiet */
2761
+ .brain-quiet-success {
2762
+ font-size: 0.78rem;
2763
+ color: hsl(var(--memory));
2764
+ display: inline-flex;
2765
+ align-items: center;
2766
+ gap: 0.35rem;
2767
+ }
2768
+
2769
+ /* Responsive care */
2770
+ @media (max-width: 720px) {
2771
+ .brain-presence { padding-top: 1.4rem; }
2772
+ .brain-organism { width: 200px; height: 200px; }
2773
+ .brain-conversation { padding-bottom: 5.5rem; }
2774
+ .brain-conversation-header { flex-wrap: wrap; }
2775
+ .brain-depth-actions {
2776
+ bottom: 3.55rem;
2777
+ width: min(100vw - 1rem, 24rem);
2778
+ overflow-x: auto;
2779
+ justify-content: flex-start;
2780
+ }
2781
+ .brain-depth-actions button {
2782
+ flex: 0 0 auto;
2783
+ }
2784
+ .brain-overview-grid {
2785
+ grid-template-columns: 1fr;
2786
+ }
2787
+ .brain-overview-head {
2788
+ align-items: flex-start;
2789
+ flex-direction: column;
2790
+ }
2791
+ .brain-care-summary {
2792
+ display: grid;
2793
+ }
2794
+ .brain-care-proof {
2795
+ justify-content: flex-start;
2796
+ }
2797
+ .brain-care-button,
2798
+ .brain-care-archive input,
2799
+ .brain-care-archive-actions {
2800
+ flex-basis: 100%;
2801
+ }
2802
+ .brain-care-archive-actions button {
2803
+ flex-basis: calc(50% - 0.25rem);
2804
+ }
2805
+ .admin-console {
2806
+ width: min(100% - 1rem, 1180px);
2807
+ }
2808
+ .admin-console-header {
2809
+ display: grid;
2810
+ }
2811
+ .admin-metrics,
2812
+ .admin-grid {
2813
+ grid-template-columns: 1fr;
2814
+ }
2815
+ .admin-list-row,
2816
+ .admin-operation {
2817
+ align-items: flex-start;
2818
+ flex-direction: column;
2819
+ }
2820
+ .admin-list-row span {
2821
+ flex-basis: auto;
2822
+ max-width: 100%;
2823
+ text-align: left;
2824
+ }
2825
+ .mind-empty {
2826
+ padding-inline: 0.4rem;
2827
+ }
2828
+ .mind-empty-prompts {
2829
+ display: grid;
2830
+ }
2831
+ .mind-empty-prompts button {
2832
+ width: 100%;
2833
+ text-align: left;
2834
+ }
2835
+ .ritual-promise {
2836
+ grid-template-columns: 1fr;
2837
+ }
2838
+ .brain-ownership-strip { order: 3; flex-basis: 100%; justify-content: flex-start; overflow-x: auto; }
2839
+ .depths { bottom: 0.9rem; }
2840
+ }
2841
+
2842
+ /* Ritual / Onboarding flow — uses the same living language as the Brain experience */
2843
+ .ritual-shell {
2053
2844
  min-height: 100vh;
2054
2845
  display: flex;
2055
2846
  align-items: center;
@@ -2082,6 +2873,39 @@ body {
2082
2873
  margin: 0 auto 1.5rem;
2083
2874
  }
2084
2875
 
2876
+ .ritual-promise {
2877
+ display: grid;
2878
+ grid-template-columns: repeat(3, minmax(0, 1fr));
2879
+ gap: 0.65rem;
2880
+ margin: 0 auto 1.15rem;
2881
+ max-width: 680px;
2882
+ }
2883
+
2884
+ .ritual-promise div {
2885
+ border: 1px solid hsl(var(--border) / 0.54);
2886
+ border-radius: 8px;
2887
+ background: hsl(var(--bg) / 0.42);
2888
+ padding: 0.72rem 0.78rem;
2889
+ text-align: left;
2890
+ }
2891
+
2892
+ .ritual-promise span {
2893
+ display: block;
2894
+ color: hsl(var(--fg-muted));
2895
+ font-size: 0.68rem;
2896
+ font-weight: 800;
2897
+ text-transform: uppercase;
2898
+ }
2899
+
2900
+ .ritual-promise strong {
2901
+ display: block;
2902
+ margin-top: 0.18rem;
2903
+ color: hsl(var(--fg));
2904
+ font-size: 0.84rem;
2905
+ font-weight: 620;
2906
+ line-height: 1.25;
2907
+ }
2908
+
2085
2909
  .ritual-card {
2086
2910
  background: hsl(var(--surface-glass));
2087
2911
  border: 1px solid hsl(var(--border) / 0.65);