six-degrees 0.6.0 → 0.8.0

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 (609) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +4 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +42 -14
  5. package/.next/standalone/.next/routes-manifest.json +24 -0
  6. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  12. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  15. package/.next/standalone/.next/server/app/_not-found.rsc +26 -18
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +26 -18
  17. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +25 -16
  18. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  19. package/.next/standalone/.next/server/app/api/admin-delete/route.js +2 -2
  20. package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
  21. package/.next/standalone/.next/server/app/api/admin-update/route.js +2 -2
  22. package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/api/bridges/route.js +2 -2
  24. package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
  25. package/.next/standalone/.next/server/app/api/bulk-import/route.js +2 -2
  26. package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js +3 -3
  28. package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/company-scores/route.js +3 -3
  30. package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/connections/route.js +2 -2
  32. package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/data/backup/route/app-paths-manifest.json +3 -0
  34. package/.next/standalone/.next/server/app/api/data/backup/route/build-manifest.json +12 -0
  35. package/.next/standalone/.next/server/app/api/data/backup/route/server-reference-manifest.json +4 -0
  36. package/.next/standalone/.next/server/app/api/data/backup/route.js +7 -0
  37. package/.next/standalone/.next/server/app/api/data/backup/route.js.map +5 -0
  38. package/.next/standalone/.next/server/app/api/data/backup/route.js.nft.json +1 -0
  39. package/.next/standalone/.next/server/app/api/data/backup/route_client-reference-manifest.js +3 -0
  40. package/.next/standalone/.next/server/app/api/data/csv/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/.next/server/app/api/data/csv/route/build-manifest.json +12 -0
  42. package/.next/standalone/.next/server/app/api/data/csv/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/.next/server/app/api/data/csv/route.js +8 -0
  44. package/.next/standalone/.next/server/app/api/data/csv/route.js.map +5 -0
  45. package/.next/standalone/.next/server/app/api/data/csv/route.js.nft.json +1 -0
  46. package/.next/standalone/.next/server/app/api/data/csv/route_client-reference-manifest.js +3 -0
  47. package/.next/standalone/.next/server/app/api/data/export/route.js +1 -1
  48. package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/data/import/route.js +1 -1
  50. package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/data/restart/route.js +1 -1
  52. package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/api/data/restore/route/app-paths-manifest.json +3 -0
  54. package/.next/standalone/.next/server/app/api/data/restore/route/build-manifest.json +12 -0
  55. package/.next/standalone/.next/server/app/api/data/restore/route/server-reference-manifest.json +4 -0
  56. package/.next/standalone/.next/server/app/api/data/restore/route.js +7 -0
  57. package/.next/standalone/.next/server/app/api/data/restore/route.js.map +5 -0
  58. package/.next/standalone/.next/server/app/api/data/restore/route.js.nft.json +1 -0
  59. package/.next/standalone/.next/server/app/api/data/restore/route_client-reference-manifest.js +3 -0
  60. package/.next/standalone/.next/server/app/api/data/reveal/route.js +1 -1
  61. package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
  62. package/.next/standalone/.next/server/app/api/data/route.js +1 -1
  63. package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
  64. package/.next/standalone/.next/server/app/api/delete-cluster/route.js +2 -2
  65. package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
  66. package/.next/standalone/.next/server/app/api/ingest/route.js +2 -2
  67. package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
  68. package/.next/standalone/.next/server/app/api/network/route.js +2 -2
  69. package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/app/api/notifications/route.js +2 -2
  71. package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
  72. package/.next/standalone/.next/server/app/api/outreach/route.js +3 -3
  73. package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
  74. package/.next/standalone/.next/server/app/api/queue/route.js +2 -2
  75. package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/api/scraper/route.js +5 -3
  77. package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/app/api/settings/route.js +3 -3
  79. package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
  80. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js +3 -3
  81. package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
  82. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js +3 -3
  83. package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/app/api/setup-profile/route.js +2 -2
  85. package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
  86. package/.next/standalone/.next/server/app/api/social/crm/route.js +1 -1
  87. package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/app/api/social/messages/route.js +1 -1
  89. package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
  90. package/.next/standalone/.next/server/app/api/social/route.js +2 -2
  91. package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
  92. package/.next/standalone/.next/server/app/api/unlock/route.js +2 -2
  93. package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
  95. package/.next/standalone/.next/server/app/api/update-images/route.js +2 -2
  96. package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
  97. package/.next/standalone/.next/server/app/api/users/route.js +2 -2
  98. package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
  99. package/.next/standalone/.next/server/app/avatars/[file]/route.js +1 -1
  100. package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
  101. package/.next/standalone/.next/server/app/import/page.js +1 -1
  102. package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
  103. package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/import.html +1 -1
  105. package/.next/standalone/.next/server/app/import.rsc +32 -24
  106. package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +32 -24
  107. package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
  108. package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +23 -18
  109. package/.next/standalone/.next/server/app/index.html +1 -1
  110. package/.next/standalone/.next/server/app/index.rsc +29 -22
  111. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +20 -15
  112. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +29 -22
  113. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  114. package/.next/standalone/.next/server/app/insights/page/app-paths-manifest.json +3 -0
  115. package/.next/standalone/.next/server/app/insights/page/build-manifest.json +20 -0
  116. package/.next/standalone/.next/server/app/insights/page/next-font-manifest.json +11 -0
  117. package/.next/standalone/.next/server/app/insights/page/react-loadable-manifest.json +1 -0
  118. package/.next/standalone/.next/server/app/insights/page/server-reference-manifest.json +4 -0
  119. package/.next/standalone/.next/server/app/insights/page.js +13 -0
  120. package/.next/standalone/.next/server/app/insights/page.js.map +5 -0
  121. package/.next/standalone/.next/server/app/insights/page.js.nft.json +1 -0
  122. package/.next/standalone/.next/server/app/insights/page_client-reference-manifest.js +3 -0
  123. package/.next/standalone/.next/server/app/insights.html +1 -0
  124. package/.next/standalone/.next/server/app/insights.meta +26 -0
  125. package/.next/standalone/.next/server/app/insights.rsc +35 -0
  126. package/.next/standalone/.next/server/app/insights.segments/_full.segment.rsc +35 -0
  127. package/.next/standalone/.next/server/app/insights.segments/_tree.segment.rsc +4 -0
  128. package/.next/standalone/.next/server/app/insights.segments/insights/__PAGE__.segment.rsc +33 -0
  129. package/.next/standalone/.next/server/app/launch/page.js +1 -1
  130. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  131. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/launch.html +2 -2
  133. package/.next/standalone/.next/server/app/launch.rsc +32 -24
  134. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +32 -24
  135. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  136. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +23 -18
  137. package/.next/standalone/.next/server/app/page.js +1 -1
  138. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  139. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  141. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  142. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/paths.html +1 -1
  144. package/.next/standalone/.next/server/app/paths.rsc +32 -24
  145. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +32 -24
  146. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  147. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +21 -18
  148. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  149. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/profile.html +1 -1
  152. package/.next/standalone/.next/server/app/profile.rsc +32 -24
  153. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +32 -24
  154. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  155. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +23 -18
  156. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  157. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/queue.html +1 -1
  160. package/.next/standalone/.next/server/app/queue.rsc +32 -24
  161. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +32 -24
  162. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  163. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +21 -18
  164. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  165. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  166. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/scores.html +1 -1
  168. package/.next/standalone/.next/server/app/scores.rsc +32 -24
  169. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +32 -24
  170. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  171. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +23 -18
  172. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  173. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  174. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/settings.html +1 -1
  176. package/.next/standalone/.next/server/app/settings.rsc +32 -24
  177. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +32 -24
  178. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  179. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -18
  180. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  181. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/setup.html +1 -1
  184. package/.next/standalone/.next/server/app/setup.rsc +32 -24
  185. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +32 -24
  186. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  187. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +21 -18
  188. package/.next/standalone/.next/server/app/social/page.js +1 -1
  189. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  190. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/social.html +1 -1
  192. package/.next/standalone/.next/server/app/social.rsc +32 -24
  193. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +32 -24
  194. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  195. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +23 -18
  196. package/.next/standalone/.next/server/app-paths-manifest.json +4 -0
  197. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  198. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__066rab1._.js +7 -0
  200. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  203. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fooke1._.js +7 -0
  204. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  206. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__15wc9e-._.js → [root-of-the-server]__0r-0t-9._.js} +2 -2
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ra6xyg._.js +15 -0
  209. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__20rwfdw._.js → [root-of-the-server]__0rcpjad._.js} +6 -3
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t6y79e._.js +7 -0
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x29muh._.js +7 -0
  214. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  215. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  217. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  218. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a_6x37._.js +8 -0
  219. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an_8pa._.js +7 -0
  220. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +1 -1
  221. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ducpz2._.js +3 -0
  222. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  223. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  224. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  225. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +1 -1
  226. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  227. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xhyinn._.js +3 -0
  228. package/.next/standalone/.next/server/chunks/_072jl0y._.js +1 -1
  229. package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +1 -1
  230. package/.next/standalone/.next/server/chunks/_0sqqpzb._.js +3 -0
  231. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  232. package/.next/standalone/.next/server/chunks/_1fn30_l._.js +1 -1
  233. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  234. package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
  235. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_backup_route_actions_0zoj04p.js +3 -0
  236. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_csv_route_actions_0l6m7lg.js +3 -0
  237. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restore_route_actions_0-b05bv.js +3 -0
  238. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +4 -0
  239. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +4 -0
  240. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +4 -0
  241. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +174 -0
  242. package/.next/standalone/.next/server/chunks/lib_linkedin-export_12imqxg.js +1 -1
  243. package/.next/standalone/.next/server/chunks/lib_rpc_00nndai.js +3 -0
  244. package/.next/standalone/.next/server/chunks/lib_rpc_03ibb-x.js +3 -0
  245. package/.next/standalone/.next/server/chunks/lib_rpc_03ri3ji.js +3 -0
  246. package/.next/standalone/.next/server/chunks/lib_rpc_078ce48.js +3 -0
  247. package/.next/standalone/.next/server/chunks/lib_rpc_0a69mgr.js +3 -0
  248. package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
  249. package/.next/standalone/.next/server/chunks/lib_rpc_0cej3t8.js +3 -0
  250. package/.next/standalone/.next/server/chunks/lib_rpc_0cmh4g6.js +3 -0
  251. package/.next/standalone/.next/server/chunks/lib_rpc_0nx2_pc.js +3 -0
  252. package/.next/standalone/.next/server/chunks/lib_rpc_0r79-w1.js +3 -0
  253. package/.next/standalone/.next/server/chunks/lib_rpc_0t552z6.js +3 -0
  254. package/.next/standalone/.next/server/chunks/lib_rpc_0yx8ynd.js +3 -0
  255. package/.next/standalone/.next/server/chunks/lib_rpc_12p-o9-.js +3 -0
  256. package/.next/standalone/.next/server/chunks/lib_rpc_1466dnb.js +3 -0
  257. package/.next/standalone/.next/server/chunks/lib_rpc_1sryxv6.js +3 -0
  258. package/.next/standalone/.next/server/chunks/lib_rpc_1trn-x5.js +3 -0
  259. package/.next/standalone/.next/server/chunks/lib_rpc_1ygu_mv.js +3 -0
  260. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0egamyq._.js +3 -0
  261. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qd8pzm._.js +3 -0
  262. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qdeuyo._.js → [root-of-the-server]__1-012q1._.js} +2 -2
  263. package/.next/standalone/.next/server/chunks/ssr/_04am_h8._.js +3 -0
  264. package/.next/standalone/.next/server/chunks/ssr/_06rgzfh._.js +3 -0
  265. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +3 -0
  266. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +3 -0
  267. package/.next/standalone/.next/server/chunks/ssr/_0gds903._.js +3 -0
  268. package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
  269. package/.next/standalone/.next/server/chunks/ssr/_0klqt9z._.js +3 -0
  270. package/.next/standalone/.next/server/chunks/ssr/_14jak5s._.js +7 -0
  271. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
  272. package/.next/standalone/.next/server/chunks/ssr/_1cj2yog._.js +3 -0
  273. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
  274. package/.next/standalone/.next/server/chunks/ssr/_1hdqw0-._.js +7 -0
  275. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
  276. package/.next/standalone/.next/server/chunks/ssr/_1r62six._.js +7 -0
  277. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_insights_page_actions_0-0tf75.js +3 -0
  278. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  279. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +25 -2
  280. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +25 -2
  281. package/.next/standalone/.next/server/chunks/ssr/app_components_CompanyScores_1g0mytz.js +1 -1
  282. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
  283. package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +3 -0
  284. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  285. package/.next/standalone/.next/server/chunks/ssr/app_insights_page_1d_chja.js +3 -0
  286. package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +1 -1
  287. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +26 -14
  288. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  289. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  290. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +11 -11
  291. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  292. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +12 -13
  293. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  294. package/.next/standalone/.next/server/chunks/ssr/{lib_1c4ieuw._.js → lib_csv_1ttiu_h.js} +2 -2
  295. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  296. package/.next/standalone/.next/server/chunks/ssr/lib_separation_1305zsx.js +3 -0
  297. package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +1 -1
  298. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  299. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  300. package/.next/standalone/.next/server/next-font-manifest.js +1 -1
  301. package/.next/standalone/.next/server/next-font-manifest.json +4 -0
  302. package/.next/standalone/.next/server/pages/404.html +1 -1
  303. package/.next/standalone/.next/server/pages/500.html +1 -1
  304. package/.next/standalone/.next/server/prefetch-hints.json +14 -0
  305. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  306. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  307. package/.next/standalone/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  308. package/.next/standalone/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  309. package/.next/standalone/.next/static/chunks/03-demj2iy-0p.js +44 -0
  310. package/.next/standalone/.next/static/chunks/0838_s6w-i_ik.js +1 -0
  311. package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  312. package/.next/standalone/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
  313. package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  314. package/.next/standalone/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  315. package/.next/standalone/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  316. package/.next/standalone/.next/static/chunks/112mv-com-mqa.js +21 -0
  317. package/.next/standalone/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
  318. package/.next/standalone/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  319. package/.next/standalone/.next/static/chunks/1d8yv3k_atka7.js +1 -0
  320. package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  321. package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  322. package/.next/standalone/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  323. package/.next/standalone/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  324. package/.next/standalone/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
  325. package/.next/standalone/.next/static/chunks/2w-y83mjlpnse.js +1 -0
  326. package/.next/standalone/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  327. package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  328. package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
  329. package/.next/standalone/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  330. package/.next/standalone/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  331. package/.next/standalone/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  332. package/.next/standalone/.next/static/chunks/3y40z6of3r9py.js +1 -0
  333. package/.next/standalone/.next/static/chunks/403dpflln8ah5.js +1 -0
  334. package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
  335. package/.next/standalone/CHANGELOG.md +203 -0
  336. package/.next/standalone/README.md +96 -50
  337. package/.next/standalone/SECURITY.md +25 -11
  338. package/.next/standalone/app/api/data/backup/route.js +25 -0
  339. package/.next/standalone/app/api/data/csv/route.js +74 -0
  340. package/.next/standalone/app/api/data/export/route.js +1 -1
  341. package/.next/standalone/app/api/data/restore/route.js +48 -0
  342. package/.next/standalone/app/api/data/reveal/route.js +19 -6
  343. package/.next/standalone/app/api/data/route.js +15 -4
  344. package/.next/standalone/app/api/ingest/route.js +1 -1
  345. package/.next/standalone/app/api/outreach/route.js +13 -73
  346. package/.next/standalone/app/api/queue/route.js +1 -1
  347. package/.next/standalone/app/api/scraper/route.js +217 -36
  348. package/.next/standalone/app/api/social/crm/route.js +2 -1
  349. package/.next/standalone/app/components/AppHeader.js +41 -21
  350. package/.next/standalone/app/components/AppTabs.js +12 -8
  351. package/.next/standalone/app/components/AutoConnect.js +286 -0
  352. package/.next/standalone/app/components/AutoScanButton.js +2 -2
  353. package/.next/standalone/app/components/Avatar.js +1 -1
  354. package/.next/standalone/app/components/ChainView.js +258 -113
  355. package/.next/standalone/app/components/CirclePanel.js +16 -16
  356. package/.next/standalone/app/components/ClusterSpinner.js +64 -0
  357. package/.next/standalone/app/components/CompanyScores.js +20 -20
  358. package/.next/standalone/app/components/EmptyState.js +39 -18
  359. package/.next/standalone/app/components/FieldStep.js +15 -13
  360. package/.next/standalone/app/components/FilterPanel.js +25 -18
  361. package/.next/standalone/app/components/ForceGraph.js +49 -14
  362. package/.next/standalone/app/components/GalaxyLab.js +33 -33
  363. package/.next/standalone/app/components/GridView.js +18 -18
  364. package/.next/standalone/app/components/LegacyScoresCard.js +10 -11
  365. package/.next/standalone/app/components/LinkedInLimits.js +57 -27
  366. package/.next/standalone/app/components/LiquidGlass.js +99 -0
  367. package/.next/standalone/app/components/ListView.js +20 -20
  368. package/.next/standalone/app/components/MapControls.js +5 -5
  369. package/.next/standalone/app/components/MappingProgress.js +16 -16
  370. package/.next/standalone/app/components/NoteDetail.js +13 -13
  371. package/.next/standalone/app/components/OnboardingGate.js +4 -4
  372. package/.next/standalone/app/components/OutlinkQuest.js +56 -35
  373. package/.next/standalone/app/components/PathsAnalyzer.js +37 -36
  374. package/.next/standalone/app/components/PeopleMap.js +21 -21
  375. package/.next/standalone/app/components/RingsView.js +11 -11
  376. package/.next/standalone/app/components/ScanRadar.js +84 -39
  377. package/.next/standalone/app/components/ScanStatusBar.js +40 -21
  378. package/.next/standalone/app/components/ScanTrail.js +21 -8
  379. package/.next/standalone/app/components/SeparationView.js +172 -124
  380. package/.next/standalone/app/components/Sidebar.js +308 -199
  381. package/.next/standalone/app/components/StaleServerBanner.js +4 -4
  382. package/.next/standalone/app/components/TheirCircle.js +26 -26
  383. package/.next/standalone/app/components/ThemeDefs.js +42 -0
  384. package/.next/standalone/app/components/ThemeLoader.js +20 -1
  385. package/.next/standalone/app/components/UpdatePanel.js +22 -22
  386. package/.next/standalone/app/components/UserProvider.js +22 -15
  387. package/.next/standalone/app/components/insights/Boards.js +275 -0
  388. package/.next/standalone/app/components/insights/PeopleView.js +266 -0
  389. package/.next/standalone/app/components/insights/Rail.js +156 -0
  390. package/.next/standalone/app/components/insights/Report.js +382 -0
  391. package/.next/standalone/app/components/insights/parts.js +239 -0
  392. package/.next/standalone/app/components/settings/AppearanceSection.js +47 -24
  393. package/.next/standalone/app/components/settings/DataSection.js +276 -109
  394. package/.next/standalone/app/components/settings/NetworkHealthSection.js +13 -13
  395. package/.next/standalone/app/components/settings/SectorPicker.js +12 -12
  396. package/.next/standalone/app/components/settings/SectorSection.js +13 -14
  397. package/.next/standalone/app/components/settings/TierSection.js +9 -9
  398. package/.next/standalone/app/components/settings/TitleSection.js +11 -11
  399. package/.next/standalone/app/components/settings/UsageSection.js +360 -0
  400. package/.next/standalone/app/components/ui.js +8 -8
  401. package/.next/standalone/app/globals.css +161 -5
  402. package/.next/standalone/app/import/page.js +94 -38
  403. package/.next/standalone/app/insights/page.js +220 -0
  404. package/.next/standalone/app/launch/page.js +5 -5
  405. package/.next/standalone/app/layout.js +6 -2
  406. package/.next/standalone/app/page.js +53 -53
  407. package/.next/standalone/app/paths/page.js +63 -63
  408. package/.next/standalone/app/profile/page.js +58 -58
  409. package/.next/standalone/app/queue/page.js +84 -72
  410. package/.next/standalone/app/scores/page.js +2 -2
  411. package/.next/standalone/app/settings/page.js +16 -13
  412. package/.next/standalone/app/setup/page.js +236 -133
  413. package/.next/standalone/app/social/Crm.js +63 -62
  414. package/.next/standalone/app/social/SocialHub.js +22 -22
  415. package/.next/standalone/app/social/Thread.js +7 -7
  416. package/.next/standalone/app/social/page.js +2 -2
  417. package/.next/standalone/lib/auto-connect.js +145 -0
  418. package/.next/standalone/lib/backups.js +458 -0
  419. package/.next/standalone/lib/chain-layout.js +32 -0
  420. package/.next/standalone/lib/companies.js +1 -1
  421. package/.next/standalone/lib/csv-store.js +131 -0
  422. package/.next/standalone/lib/csv.js +137 -39
  423. package/.next/standalone/lib/data-folder.js +19 -3
  424. package/.next/standalone/lib/data-import.js +5 -2
  425. package/.next/standalone/lib/db-client.js +78 -20
  426. package/.next/standalone/lib/demo.js +5 -4
  427. package/.next/standalone/lib/galaxy-export.js +9 -2
  428. package/.next/standalone/lib/galaxy-lab.js +19 -5
  429. package/.next/standalone/lib/galaxy-layouts.js +43 -0
  430. package/.next/standalone/lib/gate.js +10 -4
  431. package/.next/standalone/lib/in-progress.js +46 -0
  432. package/.next/standalone/lib/ingest.js +1 -1
  433. package/.next/standalone/lib/insights-board.js +613 -0
  434. package/.next/standalone/lib/linkedin-limits.js +240 -14
  435. package/.next/standalone/lib/liquid-glass.js +59 -0
  436. package/.next/standalone/lib/notifications.js +13 -0
  437. package/.next/standalone/lib/requests-client.js +10 -0
  438. package/.next/standalone/lib/requests.js +124 -0
  439. package/.next/standalone/lib/scan-pace.js +11 -0
  440. package/.next/standalone/lib/scan-progress.js +20 -0
  441. package/.next/standalone/lib/scan-risk.js +44 -0
  442. package/.next/standalone/lib/scan-state.js +1 -0
  443. package/.next/standalone/lib/scanner-setup.js +97 -15
  444. package/.next/standalone/lib/scraper-client.js +35 -8
  445. package/.next/standalone/lib/search-risk.js +7 -3
  446. package/.next/standalone/lib/settings-client.js +5 -3
  447. package/.next/standalone/lib/settings.js +13 -0
  448. package/.next/standalone/lib/social-store.js +3 -2
  449. package/.next/standalone/lib/synced-setting.js +46 -0
  450. package/.next/standalone/lib/theme-store.js +42 -10
  451. package/.next/standalone/lib/themes.js +111 -21
  452. package/.next/standalone/lib/usage.js +200 -0
  453. package/.next/standalone/package-lock.json +2 -2
  454. package/.next/standalone/package.json +1 -1
  455. package/.next/standalone/scripts/scrape.py +595 -11
  456. package/.next/static/chunks/02wnf8dkxegxg.js +34 -0
  457. package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  458. package/.next/static/chunks/03-demj2iy-0p.js +44 -0
  459. package/.next/static/chunks/0838_s6w-i_ik.js +1 -0
  460. package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  461. package/.next/static/chunks/0ka4prpk3w9wn.js +34 -0
  462. package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  463. package/.next/static/chunks/0s_xxwp7z88vv.js +1 -0
  464. package/.next/static/chunks/1-nnl8amfm4yh.js +57 -0
  465. package/.next/static/chunks/112mv-com-mqa.js +21 -0
  466. package/.next/static/chunks/1bkt_hhjzvbh8.js +1 -0
  467. package/.next/static/chunks/1cmphb3kh2ers.css +3 -0
  468. package/.next/static/chunks/1d8yv3k_atka7.js +1 -0
  469. package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  470. package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  471. package/.next/static/chunks/23hc51oa4vkhc.js +5 -0
  472. package/.next/static/chunks/27n8k9wxlz5-7.js +1 -0
  473. package/.next/static/chunks/2q9i7pcxcnph1.js +7 -0
  474. package/.next/static/chunks/2w-y83mjlpnse.js +1 -0
  475. package/.next/static/chunks/2ws1xf293j-tm.js +5 -0
  476. package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  477. package/.next/static/chunks/34g73qhayuevu.js +1 -0
  478. package/.next/static/chunks/3cqn-r-y5rrw1.js +5 -0
  479. package/.next/static/chunks/3opgg1efrx8q6.js +1 -0
  480. package/.next/static/chunks/3p51fpxxi4d5y.js +34 -0
  481. package/.next/static/chunks/3y40z6of3r9py.js +1 -0
  482. package/.next/static/chunks/403dpflln8ah5.js +1 -0
  483. package/.next/static/chunks/43pg2sursiypz.js +1 -0
  484. package/CHANGELOG.md +203 -0
  485. package/README.md +96 -50
  486. package/SECURITY.md +25 -11
  487. package/lib/auto-connect.js +145 -0
  488. package/lib/backups.js +458 -0
  489. package/lib/chain-layout.js +32 -0
  490. package/lib/companies.js +1 -1
  491. package/lib/csv-store.js +131 -0
  492. package/lib/csv.js +137 -39
  493. package/lib/data-folder.js +19 -3
  494. package/lib/data-import.js +5 -2
  495. package/lib/db-client.js +78 -20
  496. package/lib/demo.js +5 -4
  497. package/lib/galaxy-export.js +9 -2
  498. package/lib/galaxy-lab.js +19 -5
  499. package/lib/galaxy-layouts.js +43 -0
  500. package/lib/gate.js +10 -4
  501. package/lib/in-progress.js +46 -0
  502. package/lib/ingest.js +1 -1
  503. package/lib/insights-board.js +613 -0
  504. package/lib/linkedin-limits.js +240 -14
  505. package/lib/liquid-glass.js +59 -0
  506. package/lib/notifications.js +13 -0
  507. package/lib/requests-client.js +10 -0
  508. package/lib/requests.js +124 -0
  509. package/lib/scan-pace.js +11 -0
  510. package/lib/scan-progress.js +20 -0
  511. package/lib/scan-risk.js +44 -0
  512. package/lib/scan-state.js +1 -0
  513. package/lib/scanner-setup.js +97 -15
  514. package/lib/scraper-client.js +35 -8
  515. package/lib/search-risk.js +7 -3
  516. package/lib/settings-client.js +5 -3
  517. package/lib/settings.js +13 -0
  518. package/lib/social-store.js +3 -2
  519. package/lib/synced-setting.js +46 -0
  520. package/lib/theme-store.js +42 -10
  521. package/lib/themes.js +111 -21
  522. package/lib/usage.js +200 -0
  523. package/package.json +1 -1
  524. package/scripts/scrape.py +595 -11
  525. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +0 -3
  526. package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +0 -8
  527. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +0 -3
  528. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +0 -3
  529. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +0 -3
  530. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +0 -3
  531. package/.next/standalone/.next/server/chunks/_02twlca._.js +0 -10
  532. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +0 -8
  533. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +0 -8
  534. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +0 -8
  535. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +0 -174
  536. package/.next/standalone/.next/server/chunks/lib_rpc_04s8mzr.js +0 -3
  537. package/.next/standalone/.next/server/chunks/lib_rpc_053z7as.js +0 -3
  538. package/.next/standalone/.next/server/chunks/lib_rpc_0b_-2te.js +0 -3
  539. package/.next/standalone/.next/server/chunks/lib_rpc_0dhbxdm.js +0 -3
  540. package/.next/standalone/.next/server/chunks/lib_rpc_0dxlk31.js +0 -3
  541. package/.next/standalone/.next/server/chunks/lib_rpc_0f8b-qc.js +0 -3
  542. package/.next/standalone/.next/server/chunks/lib_rpc_0pzie7_.js +0 -3
  543. package/.next/standalone/.next/server/chunks/lib_rpc_0r76fq_.js +0 -3
  544. package/.next/standalone/.next/server/chunks/lib_rpc_0ut7pjp.js +0 -3
  545. package/.next/standalone/.next/server/chunks/lib_rpc_15zyqaz.js +0 -3
  546. package/.next/standalone/.next/server/chunks/lib_rpc_18zpjtq.js +0 -3
  547. package/.next/standalone/.next/server/chunks/lib_rpc_1a8xkiz.js +0 -3
  548. package/.next/standalone/.next/server/chunks/lib_rpc_1e_55xo.js +0 -3
  549. package/.next/standalone/.next/server/chunks/lib_rpc_1oxfd1_.js +0 -3
  550. package/.next/standalone/.next/server/chunks/lib_rpc_1s0lod0.js +0 -3
  551. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +0 -3
  552. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +0 -3
  553. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +0 -3
  554. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +0 -3
  555. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +0 -3
  556. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +0 -3
  557. package/.next/standalone/.next/server/chunks/ssr/_1-658fq._.js +0 -3
  558. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +0 -3
  559. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +0 -3
  560. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
  561. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +0 -3
  562. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  563. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  564. package/.next/standalone/.next/static/chunks/0i02yxppzds1o.js +0 -1
  565. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  566. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +0 -1
  567. package/.next/standalone/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  568. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  569. package/.next/standalone/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  570. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +0 -34
  571. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  572. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  573. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  574. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +0 -45
  575. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  576. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +0 -11
  577. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  578. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  579. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  580. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  581. package/.next/standalone/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  582. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  583. package/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  584. package/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  585. package/.next/static/chunks/0i02yxppzds1o.js +0 -1
  586. package/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  587. package/.next/static/chunks/0oyslj62jkubd.js +0 -1
  588. package/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  589. package/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  590. package/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  591. package/.next/static/chunks/172e10mi-tpo_.js +0 -34
  592. package/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  593. package/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  594. package/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  595. package/.next/static/chunks/1m3017gp790pw.js +0 -45
  596. package/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  597. package/.next/static/chunks/2-ch9rm27eril.js +0 -11
  598. package/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  599. package/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  600. package/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  601. package/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  602. package/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  603. package/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  604. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
  605. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
  606. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
  607. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_buildManifest.js +0 -0
  608. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_clientMiddlewareManifest.js +0 -0
  609. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → 3NCyJyAPDCEYsYTwF1Ieu}/_ssgManifest.js +0 -0
@@ -7,10 +7,12 @@
7
7
  // files the scanner writes.
8
8
 
9
9
  import { useState } from 'react';
10
+ import Link from 'next/link';
10
11
  import { limitQuestion, limitNote, SAFE_LIMITS } from '../../lib/search-risk';
11
12
  import { TIER_COLORS as THEME_TIERS } from '../../lib/themes';
13
+ import { inProgressSummary } from '../../lib/in-progress';
12
14
 
13
- const LINE = '1px solid rgba(255,255,255,0.1)';
15
+ const LINE = '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)';
14
16
  const TIER = THEME_TIERS; // the theme's dot colours (lib/themes.js)
15
17
  const DAILY = [25, 50, 100, 200, 500];
16
18
  const MONTHLY = [100, 250, 500, 1000, 0];
@@ -25,7 +27,7 @@ export function CooldownBanner({ cooldown, onLift, disabled }) {
25
27
  return (
26
28
  <div role="status" style={{
27
29
  padding: '12px 14px', borderRadius: 8, fontSize: 13, lineHeight: 1.6,
28
- background: 'rgba(255,80,80,0.08)', border: '1px solid rgba(255,80,80,0.35)', color: '#f3c9c9',
30
+ background: 'rgba(255,80,80,0.08)', border: '1px solid rgba(255,80,80,0.35)', color: 'var(--sd-fg-2, #f3c9c9)',
29
31
  }}>
30
32
  <b style={{ color: '#ff8080' }}>Scanning is paused until {when(cooldown.until)}.</b>{' '}
31
33
  {cooldown.reason}. Nothing that searches LinkedIn will run until then, so the account can recover.
@@ -49,7 +51,7 @@ const pct = (used, cap) => (cap ? Math.min(100, Math.round((used / cap) * 100))
49
51
  function Bar({ used, cap }) {
50
52
  const p = pct(used, cap);
51
53
  return (
52
- <div style={{ height: 5, borderRadius: 3, background: 'rgba(255,255,255,0.07)', overflow: 'hidden', marginTop: 4 }}>
54
+ <div style={{ height: 5, borderRadius: 3, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.07)', overflow: 'hidden', marginTop: 4 }}>
53
55
  <div style={{ height: '100%', width: `${p}%`, background: p >= 100 ? '#ff6b6b' : p >= 75 ? '#FFD700' : '#3498DB' }} />
54
56
  </div>
55
57
  );
@@ -69,18 +71,18 @@ export function BudgetBox({ li, onSetLimits, disabled }) {
69
71
  };
70
72
  const note = limitNote(limits);
71
73
  return (
72
- <div style={{ padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)', fontSize: 12.5, color: '#b8c4c4' }}>
74
+ <div style={{ padding: '12px 14px', borderRadius: 8, border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.03)', fontSize: 12.5, color: 'var(--sd-fg-2, #b8c4c4)' }}>
73
75
  <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(210px, 1fr))', gap: 14 }}>
74
76
  <div>
75
- <div><b style={{ color: '#fff' }}>{today}</b> of {limits.daily || 'no limit'} searches in the last 24 hours</div>
77
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{today}</b> of {limits.daily || 'no limit'} searches in the last 24 hours</div>
76
78
  <Bar used={li.searchesToday || 0} cap={limits.daily} />
77
79
  </div>
78
80
  <div>
79
- <div><b style={{ color: '#fff' }}>{li.searchesMonth}</b> of {limits.monthly || 'no limit'} this month · resets {day(li.monthResets)}</div>
81
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{li.searchesMonth}</b> of {limits.monthly || 'no limit'} this month · resets {day(li.monthResets)}</div>
80
82
  <Bar used={li.searchesMonth} cap={limits.monthly} />
81
83
  </div>
82
84
  <div>
83
- <div><b style={{ color: '#fff' }}>{views}</b> of {limits.profiles} profile views today</div>
85
+ <div><b style={{ color: 'var(--sd-fg-1, #fff)' }}>{views}</b> of {limits.profiles} profile views in the last 24 hours</div>
84
86
  <Bar used={li.unreadable ? limits.profiles : li.profilesToday} cap={limits.profiles} />
85
87
  </div>
86
88
  </div>
@@ -96,57 +98,85 @@ export function BudgetBox({ li, onSetLimits, disabled }) {
96
98
  {PROFILES.map((n) => <option key={n} value={n}>{n} profile views a day</option>)}
97
99
  </select>
98
100
  </div>
99
- <div style={{ marginTop: 8, color: '#778', lineHeight: 1.6 }}>
101
+ <div style={{ marginTop: 8, color: 'var(--sd-fg-4, #778)', lineHeight: 1.6 }}>
100
102
  Every page of someone&rsquo;s connections is one search. LinkedIn limits a free account&rsquo;s people
101
103
  searches by the month (it doesn&rsquo;t say how many; reports put it around 250–350), resetting on the 1st.
102
104
  When a budget is used, a scan saves what it read and stops; the next one carries on from the same page.
103
105
  </div>
104
106
  {note && (
105
- <div style={{ marginTop: 8, display: 'flex', gap: 10, alignItems: 'center', flexWrap: 'wrap', color: '#FFD700', lineHeight: 1.6 }}>
107
+ <div style={{ marginTop: 8, display: 'flex', gap: 10, alignItems: 'center', flexWrap: 'wrap', color: 'var(--sd-gold, #FFD700)', lineHeight: 1.6 }}>
106
108
  <b style={{ flex: 1, minWidth: 200 }}>{note}</b>
107
109
  <button
108
110
  onClick={() => set(SAFE_LIMITS)}
109
111
  disabled={disabled}
110
- style={{ ...sel, cursor: disabled ? 'not-allowed' : 'pointer', color: '#FFD700', borderColor: 'rgba(255,215,0,0.4)' }}
112
+ style={{ ...sel, cursor: disabled ? 'not-allowed' : 'pointer', color: 'var(--sd-gold, #FFD700)', borderColor: 'rgba(255,215,0,0.4)' }}
111
113
  >Back to {SAFE_LIMITS.daily} a day, {SAFE_LIMITS.monthly} a month</button>
112
114
  </div>
113
115
  )}
114
- <div style={{ marginTop: 6, color: '#778', lineHeight: 1.6 }}>
116
+ <div style={{ marginTop: 6, color: 'var(--sd-fg-4, #778)', lineHeight: 1.6 }}>
115
117
  Each circle scan opens the person&rsquo;s profile once, which is one profile view. Profile views are what
116
118
  LinkedIn restricted an account for, after about 20 in an hour. The scanner opens at most one a minute, and
117
119
  once today&rsquo;s are used, a scan stops before the next profile and tries that person next time.
118
120
  </div>
121
+ {/* The whole picture (the last hour, the last 7 days, when the next one frees, the last pushback) is in Settings. */}
122
+ <Link href="/settings#usage" style={{ display: 'inline-block', marginTop: 8, color: 'var(--sd-blue, #3498DB)', textDecoration: 'none', fontWeight: 600 }}>
123
+ See all your LinkedIn usage &rarr;
124
+ </Link>
119
125
  </div>
120
126
  );
121
127
  }
122
128
 
129
+ /**
130
+ * Everyone whose list was only partly read: the Scan page's In progress card,
131
+ * with Resume for each and Resume all. Blake, 2026-10-03: "we need to have some
132
+ * sort of in progress ones in the scanner as well to see all the ones they
133
+ * stopped and would like to resume". It used to be folded away in Fine-tune the
134
+ * scanner, where nobody who had just stopped a scan would look; now it stands
135
+ * on its own right after step 4, and only while someone is stopped partway.
136
+ * Each name opens their circle on the map (/?chain=<id>, the link Watch it fill
137
+ * in uses), to see how far it got.
138
+ */
123
139
  export function PausedList({ paused = [], onResume, onResumeAll, disabled }) {
124
140
  const [showAll, setShowAll] = useState(false);
125
141
  if (!paused.length) return null;
126
- const legacy = paused.filter((p) => p.legacy).length;
127
142
  const shown = showAll ? paused : paused.slice(0, 8);
128
143
  return (
129
- <div style={{ borderRadius: 8, border: LINE, background: 'rgba(255,255,255,0.03)' }}>
130
- <div style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '10px 14px', borderBottom: LINE, flexWrap: 'wrap' }}>
131
- <div style={{ flex: 1, minWidth: 200 }}>
132
- <b style={{ fontSize: 13.5 }}>Paused — {paused.length} {paused.length === 1 ? 'list' : 'lists'} with more to read</b>
133
- <div style={{ fontSize: 12, color: '#8b9a9a', marginTop: 2 }}>
134
- Each carries on from the page it stopped at{legacy ? `; ${legacy} were read to page 10 before whole lists were read` : ''}.
144
+ <section aria-labelledby="in-progress-title" style={{
145
+ margin: '20px 0 4px', borderRadius: 14, overflow: 'hidden',
146
+ border: '1px solid rgba(255,215,0,0.3)', background: 'rgba(255,215,0,0.035)',
147
+ }}>
148
+ <div style={{ display: 'flex', alignItems: 'center', gap: 12, padding: '16px 18px 14px', borderBottom: LINE, flexWrap: 'wrap' }}>
149
+ <div style={{ flex: 1, minWidth: 220 }}>
150
+ <h2 id="in-progress-title" style={{ fontSize: 17, fontWeight: 800, margin: 0, display: 'flex', alignItems: 'center', gap: 9 }}>
151
+ {/* The pause sign the person card shows by a name that stopped partway (Sidebar.js StoppedPartway). */}
152
+ <span aria-hidden="true" style={{ display: 'inline-flex', gap: 2 }}>
153
+ <span style={{ width: 3, height: 12, borderRadius: 1, background: 'var(--sd-gold, #FFD700)' }} />
154
+ <span style={{ width: 3, height: 12, borderRadius: 1, background: 'var(--sd-gold, #FFD700)' }} />
155
+ </span>
156
+ In progress
157
+ </h2>
158
+ <div style={{ fontSize: 13, color: 'var(--sd-fg-3, #8b9a9a)', marginTop: 4, lineHeight: 1.5 }}>
159
+ {inProgressSummary(paused)}
135
160
  </div>
136
161
  </div>
137
- <button onClick={onResumeAll} disabled={disabled} style={{ ...btn, opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', background: disabled ? 'rgba(255,255,255,0.06)' : 'linear-gradient(135deg, #3498DB, #9B59B6)' }}>
162
+ <button onClick={onResumeAll} disabled={disabled} style={{ ...btn, opacity: disabled ? 0.4 : 1, cursor: disabled ? 'not-allowed' : 'pointer', background: disabled ? 'rgba(var(--sd-ink, 255, 255, 255), 0.06)' : 'linear-gradient(135deg, #3498DB, #9B59B6)', ...(disabled ? {} : { color: '#fff' }) }}>
138
163
  Resume all
139
164
  </button>
140
165
  </div>
141
166
  <div>
142
167
  {shown.map((p) => (
143
- <div key={p.id} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '8px 14px', borderBottom: '1px solid rgba(255,255,255,0.04)' }}>
168
+ <div key={p.id} style={{ display: 'flex', alignItems: 'center', gap: 10, padding: '9px 18px', borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)' }}>
144
169
  <span style={{ width: 8, height: 8, borderRadius: '50%', background: TIER[p.tier] || '#667', flexShrink: 0 }} />
145
170
  <div style={{ flex: 1, minWidth: 0 }}>
146
- <div style={{ fontSize: 13, fontWeight: 600, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.name}</div>
147
- <div style={{ fontSize: 11.5, color: '#8b9a9a' }}>
171
+ <div style={{ fontSize: 13, fontWeight: 600, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
172
+ <Link href={`/?chain=${encodeURIComponent(p.id)}`} title={`See ${p.name}’s circle on the map`} style={{
173
+ color: 'var(--sd-fg-1, #fff)', textDecoration: 'underline', textDecorationColor: 'rgba(var(--sd-ink, 255, 255, 255), 0.35)', textUnderlineOffset: 3,
174
+ }}>{p.name}</Link>
175
+ </div>
176
+ <div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)' }}>
148
177
  Read to page {p.pagesRead} · carries on at {p.nextPage}
149
- {p.at ? ` · ${day(p.at)}` : ''}
178
+ {/* Kept whole: on a phone "Oct" and "3" landed on two lines. */}
179
+ {p.at ? <> <span style={{ whiteSpace: 'nowrap' }}>· {day(p.at)}</span></> : ''}
150
180
  {p.unclear >= 2 ? ' · came back unclear twice, so it waits at the back of Resume all' : ''}
151
181
  </div>
152
182
  </div>
@@ -157,20 +187,20 @@ export function PausedList({ paused = [], onResume, onResumeAll, disabled }) {
157
187
  ))}
158
188
  </div>
159
189
  {paused.length > 8 && (
160
- <button onClick={() => setShowAll(!showAll)} style={{ ...linkBtn, padding: '10px 14px' }}>
190
+ <button onClick={() => setShowAll(!showAll)} style={{ ...linkBtn, padding: '10px 18px' }}>
161
191
  {showAll ? 'Show fewer' : `Show all ${paused.length}`}
162
192
  </button>
163
193
  )}
164
- </div>
194
+ </section>
165
195
  );
166
196
  }
167
197
 
168
198
  const btn = {
169
199
  padding: '8px 14px', borderRadius: 7, fontSize: 13, fontWeight: 700, cursor: 'pointer',
170
- border: LINE, background: 'rgba(255,255,255,0.08)', color: '#fff',
200
+ border: LINE, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', color: 'var(--sd-fg-1, #fff)',
171
201
  };
172
202
  const linkBtn = { background: 'none', border: 'none', color: '#8fb8d6', cursor: 'pointer', fontSize: 12.5, fontWeight: 600, padding: 0 };
173
203
  const sel = {
174
204
  padding: '6px 8px', borderRadius: 6, fontSize: 12.5, fontWeight: 600,
175
- background: 'rgba(255,255,255,0.08)', color: '#fff', border: LINE,
205
+ background: 'rgba(var(--sd-ink, 255, 255, 255), 0.08)', color: 'var(--sd-fg-1, #fff)', border: LINE,
176
206
  };
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+
3
+ // Lensing for the Glass look's panels (lib/liquid-glass.js): while a look draws
4
+ // its controls as glass (html[data-buttons="frosted"]), every [data-glass-panel]
5
+ // on the page gets an SVG filter made for its size, which its backdrop-filter
6
+ // runs after the blur (app/globals.css reads it from --lg-lens). Panels that
7
+ // open later are picked up, a panel that changes size gets a new map, and with
8
+ // Reduce Transparency on there's none at all. Renders nothing itself.
9
+
10
+ import { useEffect } from 'react';
11
+ import { lensMap } from '../../lib/liquid-glass';
12
+
13
+ const SVG_NS = 'http://www.w3.org/2000/svg';
14
+ // How much each kind of panel bends: a tall side panel a lot, the slim tab bar a little.
15
+ const KINDS = {
16
+ side: { r: 2, bezel: 26, scale: 56 },
17
+ bar: { r: 20, bezel: 12, scale: 22 },
18
+ };
19
+
20
+ export default function LiquidGlass() {
21
+ useEffect(() => {
22
+ const root = document.documentElement;
23
+ const reduce = window.matchMedia?.('(prefers-reduced-transparency: reduce)');
24
+ let defs = null;
25
+ const made = new Map(); // panel → { id, w, h }
26
+ let n = 0;
27
+ let timer = null;
28
+
29
+ const ensureDefs = () => {
30
+ if (defs) return defs;
31
+ const svg = document.createElementNS(SVG_NS, 'svg');
32
+ svg.setAttribute('width', '0');
33
+ svg.setAttribute('height', '0');
34
+ svg.setAttribute('aria-hidden', 'true');
35
+ svg.style.position = 'absolute';
36
+ svg.style.pointerEvents = 'none';
37
+ defs = document.createElementNS(SVG_NS, 'defs');
38
+ svg.appendChild(defs);
39
+ document.body.appendChild(svg);
40
+ return defs;
41
+ };
42
+
43
+ const update = () => {
44
+ const on = root.dataset.buttons === 'frosted' && !reduce?.matches;
45
+ const panels = on ? [...document.querySelectorAll('[data-glass-panel]')] : [];
46
+ for (const [el, f] of made) {
47
+ if (panels.includes(el)) continue;
48
+ el.style.removeProperty('--lg-lens');
49
+ document.getElementById(f.id)?.remove();
50
+ made.delete(el);
51
+ }
52
+ for (const el of panels) {
53
+ const w = Math.round(el.offsetWidth);
54
+ const h = Math.round(el.offsetHeight);
55
+ if (w < 20 || h < 20) continue;
56
+ const had = made.get(el);
57
+ if (had && had.w === w && had.h === h) continue;
58
+ const kind = KINDS[el.dataset.glassPanel] || KINDS.side;
59
+ const id = had?.id || `lg-lens-${++n}`;
60
+ document.getElementById(id)?.remove();
61
+ const filter = document.createElementNS(SVG_NS, 'filter');
62
+ filter.setAttribute('id', id);
63
+ for (const [k, v] of Object.entries({ x: '0', y: '0', width: '100%', height: '100%', 'color-interpolation-filters': 'sRGB' })) filter.setAttribute(k, v);
64
+ const image = document.createElementNS(SVG_NS, 'feImage');
65
+ for (const [k, v] of Object.entries({ x: '0', y: '0', width: String(w), height: String(h), preserveAspectRatio: 'none', result: 'map' })) image.setAttribute(k, v);
66
+ image.setAttribute('href', lensMap(w, h, Math.min(kind.r, Math.floor(Math.min(w, h) / 2)), kind.bezel));
67
+ const shift = document.createElementNS(SVG_NS, 'feDisplacementMap');
68
+ for (const [k, v] of Object.entries({ in: 'SourceGraphic', in2: 'map', scale: String(kind.scale), xChannelSelector: 'R', yChannelSelector: 'G' })) shift.setAttribute(k, v);
69
+ filter.append(image, shift);
70
+ ensureDefs().appendChild(filter);
71
+ el.style.setProperty('--lg-lens', `url(#${id})`);
72
+ made.set(el, { id, w, h });
73
+ }
74
+ };
75
+ const schedule = () => { clearTimeout(timer); timer = setTimeout(update, 150); };
76
+
77
+ update();
78
+ const ro = new ResizeObserver(schedule);
79
+ const watchSizes = () => { ro.disconnect(); document.querySelectorAll('[data-glass-panel]').forEach((el) => ro.observe(el)); };
80
+ watchSizes();
81
+ // Panels open and close; the look changes.
82
+ const mo = new MutationObserver((records) => {
83
+ if (records.some((r) => r.type === 'attributes' || [...r.addedNodes, ...r.removedNodes].some((x) => x.nodeType === 1 && (x.matches?.('[data-glass-panel]') || x.querySelector?.('[data-glass-panel]'))))) {
84
+ watchSizes();
85
+ schedule();
86
+ }
87
+ });
88
+ mo.observe(document.body, { childList: true, subtree: true });
89
+ mo.observe(root, { attributes: true, attributeFilter: ['data-buttons'] });
90
+ reduce?.addEventListener?.('change', schedule);
91
+ return () => {
92
+ clearTimeout(timer);
93
+ ro.disconnect();
94
+ mo.disconnect();
95
+ reduce?.removeEventListener?.('change', schedule);
96
+ };
97
+ }, []);
98
+ return null;
99
+ }
@@ -31,8 +31,8 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
31
31
  {/* Table header */}
32
32
  <div style={{
33
33
  display: 'grid', gridTemplateColumns: '40px 1fr 50px 50px 50px 80px',
34
- gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: '#555',
35
- borderBottom: '1px solid rgba(255,255,255,0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
34
+ gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: 'var(--sd-fg-5, #555)',
35
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
36
36
  }}>
37
37
  <span>#</span><span>Bridge</span><span>S</span><span>A</span><span>Total</span><span>Value</span>
38
38
  </div>
@@ -41,13 +41,13 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
41
41
  style={{
42
42
  display: 'grid', gridTemplateColumns: '40px 1fr 50px 50px 50px 80px',
43
43
  gap: 8, padding: '10px 12px', alignItems: 'center', cursor: 'pointer',
44
- borderBottom: '1px solid rgba(255,255,255,0.04)',
44
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)',
45
45
  transition: 'background 0.1s',
46
46
  }}
47
- onMouseEnter={e => e.currentTarget.style.background = 'rgba(255,255,255,0.04)'}
47
+ onMouseEnter={e => e.currentTarget.style.background = 'rgba(var(--sd-ink, 255, 255, 255), 0.04)'}
48
48
  onMouseLeave={e => e.currentTarget.style.background = 'transparent'}
49
49
  >
50
- <span style={{ fontSize: 12, fontWeight: 700, color: '#444' }}>{i + 1}</span>
50
+ <span style={{ fontSize: 12, fontWeight: 700, color: 'var(--sd-fg-5, #444)' }}>{i + 1}</span>
51
51
  <div style={{ display: 'flex', alignItems: 'center', gap: 8, minWidth: 0 }}>
52
52
  {localPhoto(cl.bridge.profile_image_url) ? (
53
53
  <img src={localPhoto(cl.bridge.profile_image_url)} alt="" style={{
@@ -62,17 +62,17 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
62
62
  }}>{cl.bridge.name?.charAt(0)}</div>
63
63
  )}
64
64
  <div style={{ minWidth: 0 }}>
65
- <div style={{ fontSize: 12, fontWeight: 600, color: '#fff', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
65
+ <div style={{ fontSize: 12, fontWeight: 600, color: 'var(--sd-fg-1, #fff)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
66
66
  {cl.bridge.name}
67
67
  </div>
68
68
  <div style={{ fontSize: 9, color: TIER_COLORS[cl.bridge.tier], fontWeight: 600 }}>{cl.bridge.tier}-Tier</div>
69
69
  </div>
70
70
  </div>
71
- <span style={{ fontSize: 13, fontWeight: 800, color: '#FFD700' }}>{cl.sCount}</span>
72
- <span style={{ fontSize: 13, fontWeight: 700, color: '#9B59B6' }}>{cl.aCount}</span>
73
- <span style={{ fontSize: 12, color: '#888' }}>{cl.total}</span>
71
+ <span style={{ fontSize: 13, fontWeight: 800, color: 'var(--sd-gold, #FFD700)' }}>{cl.sCount}</span>
72
+ <span style={{ fontSize: 13, fontWeight: 700, color: 'var(--sd-purple, #9B59B6)' }}>{cl.aCount}</span>
73
+ <span style={{ fontSize: 12, color: 'var(--sd-fg-3, #888)' }}>{cl.total}</span>
74
74
  <div>
75
- <div style={{ height: 6, background: 'rgba(255,255,255,0.06)', borderRadius: 3 }}>
75
+ <div style={{ height: 6, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', borderRadius: 3 }}>
76
76
  <div style={{
77
77
  height: '100%', borderRadius: 3,
78
78
  background: `linear-gradient(90deg, ${TIER_COLORS[cl.bridge.tier]}, #FF6B35)`,
@@ -97,8 +97,8 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
97
97
  {/* Table header */}
98
98
  <div style={{
99
99
  display: 'grid', gridTemplateColumns: '40px 36px 1fr 60px 120px',
100
- gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: '#555',
101
- borderBottom: '1px solid rgba(255,255,255,0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
100
+ gap: 8, padding: '8px 12px', fontSize: 9, fontWeight: 700, color: 'var(--sd-fg-5, #555)',
101
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', textTransform: 'uppercase', letterSpacing: 0.5,
102
102
  }}>
103
103
  <span>#</span><span></span><span>Name</span><span>Score</span><span>Power</span>
104
104
  </div>
@@ -107,14 +107,14 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
107
107
  style={{
108
108
  display: 'grid', gridTemplateColumns: '40px 36px 1fr 60px 120px',
109
109
  gap: 8, padding: '8px 12px', alignItems: 'center', cursor: 'pointer',
110
- borderBottom: '1px solid rgba(255,255,255,0.04)',
110
+ borderBottom: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.04)',
111
111
  background: i < 3 ? `${TIER_COLORS[c.tier]}08` : 'transparent',
112
112
  transition: 'background 0.1s',
113
113
  }}
114
- onMouseEnter={e => e.currentTarget.style.background = 'rgba(255,255,255,0.04)'}
114
+ onMouseEnter={e => e.currentTarget.style.background = 'rgba(var(--sd-ink, 255, 255, 255), 0.04)'}
115
115
  onMouseLeave={e => e.currentTarget.style.background = i < 3 ? `${TIER_COLORS[c.tier]}08` : 'transparent'}
116
116
  >
117
- <span style={{ fontSize: 12, fontWeight: 700, color: i < 3 ? TIER_COLORS[c.tier] : '#444' }}>{i + 1}</span>
117
+ <span style={{ fontSize: 12, fontWeight: 700, color: i < 3 ? TIER_COLORS[c.tier] : 'var(--sd-fg-5, #444)' }}>{i + 1}</span>
118
118
  {localPhoto(c.profile_image_url) ? (
119
119
  <img src={localPhoto(c.profile_image_url)} alt="" style={{
120
120
  width: 28, height: 28, borderRadius: '50%', objectFit: 'cover',
@@ -123,19 +123,19 @@ export default function ListView({ connections, degree2 = [], onSelect, mode })
123
123
  ) : (
124
124
  <div style={{
125
125
  width: 28, height: 28, borderRadius: '50%', fontSize: 10, fontWeight: 700,
126
- background: TIER_COLORS[c.tier], color: c.tier === 'S' ? '#000' : '#fff',
126
+ background: TIER_COLORS[c.tier], color: c.tier === 'S' ? '#000' : 'var(--sd-fg-1, #fff)',
127
127
  display: 'flex', alignItems: 'center', justifyContent: 'center',
128
128
  }}>{c.name?.charAt(0)}</div>
129
129
  )}
130
130
  <div style={{ minWidth: 0 }}>
131
- <div style={{ fontSize: 12, fontWeight: 600, color: '#fff', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</div>
132
- <div style={{ fontSize: 9, color: '#666', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.headline?.substring(0, 45)}</div>
131
+ <div style={{ fontSize: 12, fontWeight: 600, color: 'var(--sd-fg-1, #fff)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.name}</div>
132
+ <div style={{ fontSize: 9, color: 'var(--sd-fg-4, #666)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{c.headline?.substring(0, 45)}</div>
133
133
  </div>
134
134
  <div style={{ textAlign: 'center' }}>
135
135
  <span style={{ fontSize: 13, fontWeight: 800, color: TIER_COLORS[c.tier] }}>{parseFloat(c.power_score || 0).toFixed(1)}</span>
136
- <div style={{ fontSize: 8, color: '#555' }}>{c.tier}</div>
136
+ <div style={{ fontSize: 8, color: 'var(--sd-fg-5, #555)' }}>{c.tier}</div>
137
137
  </div>
138
- <div style={{ height: 6, background: 'rgba(255,255,255,0.06)', borderRadius: 3 }}>
138
+ <div style={{ height: 6, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)', borderRadius: 3 }}>
139
139
  <div style={{
140
140
  height: '100%', borderRadius: 3,
141
141
  background: TIER_COLORS[c.tier],
@@ -14,7 +14,7 @@ import { Seg, panelHeading } from './PathsAnalyzer';
14
14
 
15
15
  export const PHYSICS_OFF = Object.freeze({ live: false, spread: 1, pull: 1, links: 1 });
16
16
 
17
- const hint = { fontSize: 10.5, color: '#667', lineHeight: 1.45, marginTop: 6 };
17
+ const hint = { fontSize: 10.5, color: 'var(--sd-fg-4, #667)', lineHeight: 1.45, marginTop: 6 };
18
18
  const SLIDERS = [
19
19
  { key: 'spread', label: 'Spread', min: 0.2, max: 4, step: 0.05, tip: 'How hard bubbles push each other apart.' },
20
20
  { key: 'pull', label: 'Pull to their group', min: 0, max: 4, step: 0.05, tip: 'How hard each bubble keeps to its sector. At 0 they find their own shape.' },
@@ -35,19 +35,19 @@ export function MapLook({ colourBy, onColourBy, physics, onPhysics, heatHint })
35
35
  <div style={{ marginTop: 8 }}>
36
36
  {SLIDERS.map((s) => (
37
37
  <label key={s.key} title={s.tip} style={{ display: 'block', marginBottom: 6 }}>
38
- <div style={{ display: 'flex', justifyContent: 'space-between', fontSize: 11, color: '#aab' }}>
38
+ <div style={{ display: 'flex', justifyContent: 'space-between', fontSize: 11, color: 'var(--sd-fg-3, #aab)' }}>
39
39
  <span>{s.label}</span>
40
- <span style={{ color: physics[s.key] === PHYSICS_OFF[s.key] ? '#556' : '#cfe6f7', fontVariantNumeric: 'tabular-nums' }}>{physics[s.key].toFixed(2)}×</span>
40
+ <span style={{ color: physics[s.key] === PHYSICS_OFF[s.key] ? 'var(--sd-fg-5, #556)' : 'var(--sd-fg-1, #cfe6f7)', fontVariantNumeric: 'tabular-nums' }}>{physics[s.key].toFixed(2)}×</span>
41
41
  </div>
42
42
  <input type="range" min={s.min} max={s.max} step={s.step} value={physics[s.key]}
43
43
  onChange={(e) => onPhysics({ ...physics, [s.key]: Number(e.target.value) })}
44
- style={{ width: '100%', accentColor: '#3498DB' }} />
44
+ style={{ width: '100%', accentColor: 'var(--sd-accent, #3498DB)' }} />
45
45
  </label>
46
46
  ))}
47
47
  <div style={hint}>Drag a bubble and the ones joined to it follow. Click still opens it.</div>
48
48
  <button type="button" onClick={() => onPhysics({ ...PHYSICS_OFF, live: true })} style={{
49
49
  marginTop: 6, padding: '4px 10px', borderRadius: 6, fontSize: 10.5, cursor: 'pointer',
50
- border: '1px solid rgba(255,255,255,0.1)', background: 'rgba(255,255,255,0.04)', color: '#aab',
50
+ border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.1)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.04)', color: 'var(--sd-fg-3, #aab)',
51
51
  }}>Reset the forces</button>
52
52
  </div>
53
53
  ) : (
@@ -62,36 +62,36 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
62
62
  return (
63
63
  <div style={CARD}>
64
64
  <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 10 }}>
65
- <h3 style={{ fontSize: 14, fontWeight: 700, margin: 0, color: '#3498DB' }}>
65
+ <h3 style={{ fontSize: 14, fontWeight: 700, margin: 0, color: 'var(--sd-blue, #3498DB)' }}>
66
66
  2nd-degree mapping
67
67
  </h3>
68
- <span style={{ fontSize: 12, color: done ? '#00ff88' : '#8b9a9a', fontWeight: 600 }}>
68
+ <span style={{ fontSize: 12, color: done ? 'var(--sd-green, #00ff88)' : 'var(--sd-fg-3, #8b9a9a)', fontWeight: 600 }}>
69
69
  {done ? 'Everything reachable is mapped' : `${m.percent}%`}
70
70
  </span>
71
71
  </div>
72
72
 
73
- <div style={{ ...BAR, display: 'flex', overflow: 'hidden', background: 'rgba(255,255,255,0.06)' }}>
73
+ <div style={{ ...BAR, display: 'flex', overflow: 'hidden', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)' }}>
74
74
  <div style={{ width: `${pct(m.mapped)}%`, background: '#00ff88' }} />
75
- <div style={{ width: `${pct(m.hidden)}%`, background: 'rgba(255,255,255,0.22)' }} />
75
+ <div style={{ width: `${pct(m.hidden)}%`, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.22)' }} />
76
76
  </div>
77
77
 
78
78
  <div style={{ display: 'flex', gap: 16, marginTop: 10, fontSize: 12, flexWrap: 'wrap' }}>
79
79
  <Key color="#00ff88" label="mapped" value={m.mapped} />
80
- <Key color="rgba(255,255,255,0.35)" label="hidden" value={m.hidden} />
81
- <Key color="rgba(255,255,255,0.12)" label="to go" value={m.todo} />
82
- <span style={{ color: '#667', marginLeft: 'auto' }}>of {m.total}</span>
80
+ <Key color="rgba(var(--sd-ink, 255, 255, 255), 0.35)" label="hidden" value={m.hidden} />
81
+ <Key color="rgba(var(--sd-ink, 255, 255, 255), 0.12)" label="to go" value={m.todo} />
82
+ <span style={{ color: 'var(--sd-fg-4, #667)', marginLeft: 'auto' }}>of {m.total}</span>
83
83
  </div>
84
84
 
85
85
  {m.hidden > 0 && (
86
- <p style={{ fontSize: 11.5, color: '#667', margin: '10px 0 0', lineHeight: 1.6 }}>
87
- Hidden means they keep their connections private — that will not change, and it
86
+ <p style={{ fontSize: 11.5, color: 'var(--sd-fg-4, #667)', margin: '10px 0 0', lineHeight: 1.6 }}>
87
+ Hidden means they keep their connections private. That will not change, and it
88
88
  does not count against you.
89
89
  </p>
90
90
  )}
91
91
 
92
92
  {!done && (
93
- <p style={{ fontSize: 11.5, color: '#8b9a9a', margin: '10px 0 0', lineHeight: 1.6 }}>
94
- {m.todo} left — about <b>{m.batches} {m.batches === 1 ? 'batch' : 'batches'}</b> of {BATCH}.
93
+ <p style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #8b9a9a)', margin: '10px 0 0', lineHeight: 1.6 }}>
94
+ {m.todo} left, about <b>{m.batches} {m.batches === 1 ? 'batch' : 'batches'}</b> of {BATCH}.
95
95
  Run one, leave it a while, run another. Long unbroken runs are what gets an
96
96
  account restricted.
97
97
  </p>
@@ -107,12 +107,12 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
107
107
  <span style={{ width: 14, color: TIER_COLORS[t], fontWeight: 700 }}>{t}</span>
108
108
  <div style={{
109
109
  flex: 1, height: 5, borderRadius: 3, display: 'flex',
110
- overflow: 'hidden', background: 'rgba(255,255,255,0.06)',
110
+ overflow: 'hidden', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.06)',
111
111
  }}>
112
112
  <div style={{ width: `${(row.mapped / row.total) * 100}%`, background: TIER_COLORS[t] }} />
113
- <div style={{ width: `${(row.hidden / row.total) * 100}%`, background: 'rgba(255,255,255,0.22)' }} />
113
+ <div style={{ width: `${(row.hidden / row.total) * 100}%`, background: 'rgba(var(--sd-ink, 255, 255, 255), 0.22)' }} />
114
114
  </div>
115
- <span style={{ color: '#667', width: 62, textAlign: 'right' }}>
115
+ <span style={{ color: 'var(--sd-fg-4, #667)', width: 62, textAlign: 'right' }}>
116
116
  {row.mapped}/{row.total}
117
117
  </span>
118
118
  </div>
@@ -125,9 +125,9 @@ export default function MappingProgress({ degree1 = [], degree2 = [], skips = []
125
125
 
126
126
  function Key({ color, label, value }) {
127
127
  return (
128
- <span style={{ display: 'flex', alignItems: 'center', gap: 6, color: '#8b9a9a' }}>
128
+ <span style={{ display: 'flex', alignItems: 'center', gap: 6, color: 'var(--sd-fg-3, #8b9a9a)' }}>
129
129
  <span style={{ width: 8, height: 8, borderRadius: 2, background: color }} />
130
- <b style={{ color: '#e2e8f0' }}>{value}</b> {label}
130
+ <b style={{ color: 'var(--sd-fg-1, #e2e8f0)' }}>{value}</b> {label}
131
131
  </span>
132
132
  );
133
133
  }
@@ -27,7 +27,7 @@ const ago = (when) => {
27
27
  };
28
28
  const btn = {
29
29
  padding: '8px 12px', borderRadius: 8, fontSize: 12, fontWeight: 700, cursor: 'pointer', textAlign: 'left',
30
- border: '1px solid rgba(255,255,255,0.12)', background: 'rgba(255,255,255,0.05)', color: '#ddd',
30
+ border: '1px solid rgba(var(--sd-ink, 255, 255, 255), 0.12)', background: 'rgba(var(--sd-ink, 255, 255, 255), 0.05)', color: 'var(--sd-fg-1, #ddd)',
31
31
  };
32
32
 
33
33
  export default function NoteDetail({ note, connections = [], degree2 = [], onBack, onSelect, onOpenCircle, onShowInSeparation }) {
@@ -40,14 +40,14 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
40
40
 
41
41
  return (
42
42
  <div>
43
- <button type="button" onClick={onBack} style={{ background: 'none', border: 'none', color: '#aaa', cursor: 'pointer', fontSize: 12, padding: 0, marginBottom: 12 }}>
43
+ <button type="button" onClick={onBack} style={{ background: 'none', border: 'none', color: 'var(--sd-fg-3, #aaa)', cursor: 'pointer', fontSize: 12, padding: 0, marginBottom: 12 }}>
44
44
  ← Back
45
45
  </button>
46
46
  <div style={{ display: 'flex', gap: 10, alignItems: 'flex-start' }}>
47
47
  <span style={{ fontSize: 22 }}>{note?.icon || '📌'}</span>
48
48
  <div style={{ minWidth: 0 }}>
49
- <div style={{ fontSize: 15, fontWeight: 800, color: '#fff', lineHeight: 1.35 }}>{note?.title}</div>
50
- <div style={{ fontSize: 11, color: '#777', marginTop: 3 }}>{ago(note?.created_at)}</div>
49
+ <div style={{ fontSize: 15, fontWeight: 800, color: 'var(--sd-fg-1, #fff)', lineHeight: 1.35 }}>{note?.title}</div>
50
+ <div style={{ fontSize: 11, color: 'var(--sd-fg-4, #777)', marginTop: 3 }}>{ago(note?.created_at)}</div>
51
51
  </div>
52
52
  </div>
53
53
 
@@ -57,26 +57,26 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
57
57
  <Avatar person={person} size={44} />
58
58
  <div style={{ minWidth: 0 }}>
59
59
  <div style={{ fontSize: 15, fontWeight: 800 }}>{person.name}</div>
60
- <div style={{ fontSize: 11.5, color: '#aab', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{person.headline || person.company || ''}</div>
60
+ <div style={{ fontSize: 11.5, color: 'var(--sd-fg-3, #aab)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{person.headline || person.company || ''}</div>
61
61
  <div style={{ fontSize: 11.5, fontWeight: 800, color: TIER[tier] || '#aaa', marginTop: 2 }}>
62
62
  {tier ? `${tier}-tier` : 'Not scored yet'}{Number.isFinite(score) ? ` · ${score.toFixed(1)}` : ''}
63
63
  </div>
64
64
  </div>
65
65
  </div>
66
66
  {addedBack && (
67
- <div style={{ marginTop: 12, fontSize: 12.5, color: '#ddd', lineHeight: 1.5 }}>
67
+ <div style={{ marginTop: 12, fontSize: 12.5, color: 'var(--sd-fg-1, #ddd)', lineHeight: 1.5 }}>
68
68
  <b>{person.name.split(' ')[0]}</b> added you back
69
69
  {via ? <>. You met through <b style={{ color: TIER[via.tier] || '#fff' }}>{via.name}</b>.</> : '.'}
70
70
  </div>
71
71
  )}
72
72
  {!addedBack && via && (
73
- <div style={{ marginTop: 12, fontSize: 12.5, color: '#ddd' }}>
73
+ <div style={{ marginTop: 12, fontSize: 12.5, color: 'var(--sd-fg-1, #ddd)' }}>
74
74
  {person.degree === 2 ? 'In the circle of ' : 'You met through '}<b>{via.name}</b>.
75
75
  </div>
76
76
  )}
77
77
  {VALUE[tier] && <div style={{ marginTop: 8, fontSize: 12.5, fontWeight: 700, color: TIER[tier] }}>{VALUE[tier]}</div>}
78
78
  {prestige >= 8 && (
79
- <div style={{ marginTop: 6, fontSize: 12, color: '#cfd3e6' }}>Works at a top company{person.company ? `, ${person.company}` : ''} (its score: {prestige}).</div>
79
+ <div style={{ marginTop: 6, fontSize: 12, color: 'var(--sd-fg-2, #cfd3e6)' }}>Works at a top company{person.company ? `, ${person.company}` : ''} (its score: {prestige}).</div>
80
80
  )}
81
81
  <div style={{ display: 'flex', flexDirection: 'column', gap: 6, marginTop: 14 }}>
82
82
  <button type="button" style={btn} onClick={() => onSelect?.(person)}>Open {person.name.split(' ')[0]}’s card →</button>
@@ -94,13 +94,13 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
94
94
 
95
95
  {people.length > 1 && (
96
96
  <div style={{ marginTop: 16 }}>
97
- <div style={{ fontSize: 10, fontWeight: 800, letterSpacing: 1, color: '#6b7090', textTransform: 'uppercase', marginBottom: 8 }}>Who</div>
97
+ <div style={{ fontSize: 10, fontWeight: 800, letterSpacing: 1, color: 'var(--sd-fg-4, #6b7090)', textTransform: 'uppercase', marginBottom: 8 }}>Who</div>
98
98
  {people.slice(0, 12).map((p) => (
99
99
  <button key={p.id} type="button" onClick={() => onSelect?.(p)} style={{ ...btn, display: 'flex', gap: 10, alignItems: 'center', width: '100%', marginBottom: 6, fontWeight: 600 }}>
100
100
  <Avatar person={p} size={26} />
101
101
  <span style={{ minWidth: 0, flex: 1 }}>
102
- <span style={{ display: 'block', color: '#fff' }}>{p.name}</span>
103
- <span style={{ display: 'block', fontSize: 10.5, color: '#8a8fa8', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.company || p.headline || ''}</span>
102
+ <span style={{ display: 'block', color: 'var(--sd-fg-1, #fff)' }}>{p.name}</span>
103
+ <span style={{ display: 'block', fontSize: 10.5, color: 'var(--sd-fg-3, #8a8fa8)', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>{p.company || p.headline || ''}</span>
104
104
  </span>
105
105
  <span style={{ fontSize: 11, fontWeight: 800, color: TIER[p.tier] || '#aaa' }}>{p.tier}</span>
106
106
  </button>
@@ -109,10 +109,10 @@ export default function NoteDetail({ note, connections = [], degree2 = [], onBac
109
109
  )}
110
110
 
111
111
  {note?.message && (
112
- <div style={{ marginTop: 14, fontSize: 12, color: '#999', lineHeight: 1.55 }}>{note.message}</div>
112
+ <div style={{ marginTop: 14, fontSize: 12, color: 'var(--sd-fg-3, #999)', lineHeight: 1.55 }}>{note.message}</div>
113
113
  )}
114
114
  {!person && !people.length && (
115
- <div style={{ marginTop: 10, fontSize: 11.5, color: '#667' }}>Nothing more on file about this one.</div>
115
+ <div style={{ marginTop: 10, fontSize: 11.5, color: 'var(--sd-fg-4, #667)' }}>Nothing more on file about this one.</div>
116
116
  )}
117
117
  </div>
118
118
  );
@@ -16,7 +16,7 @@ export default function OnboardingGate({ children }) {
16
16
  return (
17
17
  <div style={{
18
18
  minHeight: '100vh', display: 'flex', alignItems: 'center', justifyContent: 'center',
19
- background: 'var(--sd-page)', color: '#fff', padding: 24, textAlign: 'center',
19
+ background: 'var(--sd-page)', color: 'var(--sd-fg-1, #fff)', padding: 24, textAlign: 'center',
20
20
  fontFamily: 'var(--sd-font)',
21
21
  }}>
22
22
  {!ready ? (
@@ -26,9 +26,9 @@ export default function OnboardingGate({ children }) {
26
26
  <div style={{ fontSize: 18, fontWeight: 700, marginBottom: 8 }}>
27
27
  Can’t reach Six Degrees’ local server
28
28
  </div>
29
- <div style={{ color: '#888', fontSize: 14, lineHeight: 1.6 }}>
30
- The page loaded but the app behind it is not answering. If you started it
31
- from a terminal, check that window for an error, then reload this page.
29
+ <div style={{ color: 'var(--sd-fg-3, #888)', fontSize: 14, lineHeight: 1.6 }}>
30
+ The page loaded, but the app behind it isn’t answering. Quit Six Degrees and
31
+ open it again.
32
32
  </div>
33
33
  </div>
34
34
  )}