six-degrees 0.6.0 → 0.7.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 (557) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +3 -0
  3. package/.next/standalone/.next/build-manifest.json +3 -3
  4. package/.next/standalone/.next/prerender-manifest.json +14 -14
  5. package/.next/standalone/.next/routes-manifest.json +18 -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 +2 -2
  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 +4 -2
  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/launch/page.js +1 -1
  115. package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
  116. package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/launch.html +2 -2
  118. package/.next/standalone/.next/server/app/launch.rsc +32 -24
  119. package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +32 -24
  120. package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
  121. package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +23 -18
  122. package/.next/standalone/.next/server/app/page.js +1 -1
  123. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  124. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/paths/page.js +1 -1
  126. package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
  127. package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/paths.html +1 -1
  129. package/.next/standalone/.next/server/app/paths.rsc +32 -24
  130. package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +32 -24
  131. package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
  132. package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +21 -18
  133. package/.next/standalone/.next/server/app/profile/page.js +1 -1
  134. package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
  135. package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/profile.html +1 -1
  137. package/.next/standalone/.next/server/app/profile.rsc +32 -24
  138. package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +32 -24
  139. package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
  140. package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +23 -18
  141. package/.next/standalone/.next/server/app/queue/page.js +1 -1
  142. package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
  143. package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/queue.html +1 -1
  145. package/.next/standalone/.next/server/app/queue.rsc +32 -24
  146. package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +32 -24
  147. package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
  148. package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +20 -18
  149. package/.next/standalone/.next/server/app/scores/page.js +1 -1
  150. package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
  151. package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/scores.html +1 -1
  153. package/.next/standalone/.next/server/app/scores.rsc +32 -24
  154. package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +32 -24
  155. package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
  156. package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +23 -18
  157. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  158. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/settings.html +1 -1
  161. package/.next/standalone/.next/server/app/settings.rsc +32 -24
  162. package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +32 -24
  163. package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
  164. package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -18
  165. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  166. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/setup.html +1 -1
  169. package/.next/standalone/.next/server/app/setup.rsc +32 -24
  170. package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +32 -24
  171. package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
  172. package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +21 -18
  173. package/.next/standalone/.next/server/app/social/page.js +1 -1
  174. package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
  175. package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/social.html +1 -1
  177. package/.next/standalone/.next/server/app/social.rsc +32 -24
  178. package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +32 -24
  179. package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
  180. package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +23 -18
  181. package/.next/standalone/.next/server/app-paths-manifest.json +3 -0
  182. package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
  183. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
  184. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__15wc9e-._.js → [root-of-the-server]__063s0x7._.js} +2 -2
  185. package/.next/standalone/.next/server/chunks/[root-of-the-server]__066rab1._.js +7 -0
  186. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
  187. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__13dx4sd._.js → [root-of-the-server]__0_4y8z7._.js} +3 -3
  188. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
  189. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
  190. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0fooke1._.js +7 -0
  191. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
  192. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
  193. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
  194. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
  195. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t6y79e._.js +7 -0
  196. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
  197. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x29muh._.js +7 -0
  198. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
  199. package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
  200. package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
  201. package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
  202. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1a_6x37._.js +8 -0
  203. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1an_8pa._.js +7 -0
  204. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +1 -1
  205. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1ducpz2._.js +3 -0
  206. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
  207. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
  208. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
  209. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +1 -1
  210. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
  211. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1xhyinn._.js +3 -0
  212. package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +1 -1
  213. package/.next/standalone/.next/server/chunks/_02twlca._.js +1 -1
  214. package/.next/standalone/.next/server/chunks/_072jl0y._.js +1 -1
  215. package/.next/standalone/.next/server/chunks/_0lw8_i0._.js +1 -1
  216. package/.next/standalone/.next/server/chunks/_0sqqpzb._.js +3 -0
  217. package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
  218. package/.next/standalone/.next/server/chunks/_1fn30_l._.js +1 -1
  219. package/.next/standalone/.next/server/chunks/_1itd1o_._.js +1 -1
  220. package/.next/standalone/.next/server/chunks/_1iwkh8t._.js +1 -1
  221. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_backup_route_actions_0zoj04p.js +3 -0
  222. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_csv_route_actions_0l6m7lg.js +3 -0
  223. package/.next/standalone/.next/server/chunks/_next-internal_server_app_api_data_restore_route_actions_0-b05bv.js +3 -0
  224. package/.next/standalone/.next/server/chunks/lib_02iz_9q._.js +4 -0
  225. package/.next/standalone/.next/server/chunks/lib_05agvk3._.js +4 -0
  226. package/.next/standalone/.next/server/chunks/lib_0v84u66._.js +4 -0
  227. package/.next/standalone/.next/server/chunks/lib_db-client_0_dch35.js +174 -0
  228. package/.next/standalone/.next/server/chunks/lib_linkedin-export_12imqxg.js +1 -1
  229. package/.next/standalone/.next/server/chunks/lib_rpc_005abye.js +3 -0
  230. package/.next/standalone/.next/server/chunks/lib_rpc_0b17r6v.js +3 -0
  231. package/.next/standalone/.next/server/chunks/lib_rpc_0c9d9ti.js +7 -0
  232. package/.next/standalone/.next/server/chunks/lib_rpc_0doq0t-.js +3 -0
  233. package/.next/standalone/.next/server/chunks/lib_rpc_0fd2rlw.js +3 -0
  234. package/.next/standalone/.next/server/chunks/lib_rpc_0is4qoc.js +3 -0
  235. package/.next/standalone/.next/server/chunks/lib_rpc_0jnfp2e.js +3 -0
  236. package/.next/standalone/.next/server/chunks/lib_rpc_0nef_n7.js +3 -0
  237. package/.next/standalone/.next/server/chunks/lib_rpc_0plrzra.js +3 -0
  238. package/.next/standalone/.next/server/chunks/lib_rpc_13a4m0c.js +3 -0
  239. package/.next/standalone/.next/server/chunks/lib_rpc_1if17c-.js +3 -0
  240. package/.next/standalone/.next/server/chunks/lib_rpc_1j-zw7v.js +3 -0
  241. package/.next/standalone/.next/server/chunks/lib_rpc_1sngt-q.js +3 -0
  242. package/.next/standalone/.next/server/chunks/lib_rpc_1v2sgme.js +3 -0
  243. package/.next/standalone/.next/server/chunks/lib_rpc_1vh-tgx.js +3 -0
  244. package/.next/standalone/.next/server/chunks/lib_rpc_1zaubz7.js +3 -0
  245. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0qd8pzm._.js +3 -0
  246. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0qdeuyo._.js → [root-of-the-server]__1-012q1._.js} +2 -2
  247. package/.next/standalone/.next/server/chunks/ssr/_01o3i5y._.js +7 -0
  248. package/.next/standalone/.next/server/chunks/ssr/_02sband._.js +7 -0
  249. package/.next/standalone/.next/server/chunks/ssr/_06rgzfh._.js +3 -0
  250. package/.next/standalone/.next/server/chunks/ssr/_07zb7lu._.js +3 -0
  251. package/.next/standalone/.next/server/chunks/ssr/_0_79idq._.js +3 -0
  252. package/.next/standalone/.next/server/chunks/ssr/_0gy11ar._.js +3 -0
  253. package/.next/standalone/.next/server/chunks/ssr/_0hb-dhy._.js +3 -0
  254. package/.next/standalone/.next/server/chunks/ssr/_14nxd3q._.js +3 -0
  255. package/.next/standalone/.next/server/chunks/ssr/_189g8lg._.js +3 -0
  256. package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +1 -1
  257. package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +2 -2
  258. package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +2 -2
  259. package/.next/standalone/.next/server/chunks/ssr/_1k9qfsk._.js +3 -0
  260. package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
  261. package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +1 -1
  262. package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +25 -2
  263. package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +25 -2
  264. package/.next/standalone/.next/server/chunks/ssr/app_components_CompanyScores_1g0mytz.js +1 -1
  265. package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
  266. package/.next/standalone/.next/server/chunks/ssr/app_launch_page_19t0dyd.js +1 -1
  267. package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +25 -13
  268. package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
  269. package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
  270. package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +11 -11
  271. package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
  272. package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +12 -13
  273. package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
  274. package/.next/standalone/.next/server/chunks/ssr/{lib_1c4ieuw._.js → lib_csv_1ttiu_h.js} +2 -2
  275. package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
  276. package/.next/standalone/.next/server/chunks/ssr/lib_separation_1305zsx.js +3 -0
  277. package/.next/standalone/.next/server/edge/chunks/[root-of-the-server]__0pco7a6._.js +1 -1
  278. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  279. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  280. package/.next/standalone/.next/server/pages/404.html +1 -1
  281. package/.next/standalone/.next/server/pages/500.html +1 -1
  282. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  283. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  284. package/.next/standalone/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  285. package/.next/standalone/.next/static/chunks/03-demj2iy-0p.js +44 -0
  286. package/.next/standalone/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  287. package/.next/standalone/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
  288. package/.next/standalone/.next/static/chunks/0e3g0sil79cus.js +21 -0
  289. package/.next/standalone/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  290. package/.next/standalone/.next/static/chunks/0p3g5tfostsep.js +7 -0
  291. package/.next/standalone/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
  292. package/.next/standalone/.next/static/chunks/163b-20vwa06i.js +34 -0
  293. package/.next/standalone/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  294. package/.next/standalone/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
  295. package/.next/standalone/.next/static/chunks/1qbjermbf68xj.js +1 -0
  296. package/.next/standalone/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  297. package/.next/standalone/.next/static/chunks/23_1z47al92nz.js +57 -0
  298. package/.next/standalone/.next/static/chunks/260bomtr214m8.js +34 -0
  299. package/.next/standalone/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
  300. package/.next/standalone/.next/static/chunks/2xk2ra4piiuod.js +34 -0
  301. package/.next/standalone/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  302. package/.next/standalone/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
  303. package/.next/standalone/.next/static/chunks/34g73qhayuevu.js +1 -0
  304. package/.next/standalone/.next/static/chunks/3b0-14cxqsprt.js +1 -0
  305. package/.next/standalone/.next/static/chunks/3jarus1_38s2z.js +1 -0
  306. package/.next/standalone/.next/static/chunks/3ssu341hav_sq.css +3 -0
  307. package/.next/standalone/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
  308. package/.next/standalone/.next/static/chunks/43pg2sursiypz.js +1 -0
  309. package/.next/standalone/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
  310. package/.next/standalone/CHANGELOG.md +143 -0
  311. package/.next/standalone/README.md +71 -49
  312. package/.next/standalone/SECURITY.md +17 -11
  313. package/.next/standalone/app/api/data/backup/route.js +25 -0
  314. package/.next/standalone/app/api/data/csv/route.js +74 -0
  315. package/.next/standalone/app/api/data/export/route.js +1 -1
  316. package/.next/standalone/app/api/data/restore/route.js +48 -0
  317. package/.next/standalone/app/api/data/reveal/route.js +19 -6
  318. package/.next/standalone/app/api/data/route.js +15 -4
  319. package/.next/standalone/app/api/ingest/route.js +1 -1
  320. package/.next/standalone/app/api/queue/route.js +1 -1
  321. package/.next/standalone/app/api/scraper/route.js +120 -32
  322. package/.next/standalone/app/api/social/crm/route.js +2 -1
  323. package/.next/standalone/app/components/AppHeader.js +20 -16
  324. package/.next/standalone/app/components/AppTabs.js +8 -8
  325. package/.next/standalone/app/components/AutoScanButton.js +2 -2
  326. package/.next/standalone/app/components/Avatar.js +1 -1
  327. package/.next/standalone/app/components/ChainView.js +184 -112
  328. package/.next/standalone/app/components/CirclePanel.js +16 -16
  329. package/.next/standalone/app/components/ClusterSpinner.js +64 -0
  330. package/.next/standalone/app/components/CompanyScores.js +20 -20
  331. package/.next/standalone/app/components/EmptyState.js +39 -18
  332. package/.next/standalone/app/components/FieldStep.js +15 -13
  333. package/.next/standalone/app/components/FilterPanel.js +17 -17
  334. package/.next/standalone/app/components/ForceGraph.js +49 -14
  335. package/.next/standalone/app/components/GalaxyLab.js +33 -33
  336. package/.next/standalone/app/components/GridView.js +18 -18
  337. package/.next/standalone/app/components/LegacyScoresCard.js +10 -11
  338. package/.next/standalone/app/components/LinkedInLimits.js +24 -19
  339. package/.next/standalone/app/components/LiquidGlass.js +99 -0
  340. package/.next/standalone/app/components/ListView.js +20 -20
  341. package/.next/standalone/app/components/MapControls.js +5 -5
  342. package/.next/standalone/app/components/MappingProgress.js +16 -16
  343. package/.next/standalone/app/components/NoteDetail.js +13 -13
  344. package/.next/standalone/app/components/OnboardingGate.js +4 -4
  345. package/.next/standalone/app/components/OutlinkQuest.js +25 -25
  346. package/.next/standalone/app/components/PathsAnalyzer.js +37 -36
  347. package/.next/standalone/app/components/PeopleMap.js +21 -21
  348. package/.next/standalone/app/components/RingsView.js +11 -11
  349. package/.next/standalone/app/components/ScanRadar.js +84 -39
  350. package/.next/standalone/app/components/ScanStatusBar.js +22 -18
  351. package/.next/standalone/app/components/ScanTrail.js +8 -5
  352. package/.next/standalone/app/components/SeparationView.js +168 -104
  353. package/.next/standalone/app/components/Sidebar.js +161 -161
  354. package/.next/standalone/app/components/StaleServerBanner.js +4 -4
  355. package/.next/standalone/app/components/TheirCircle.js +26 -26
  356. package/.next/standalone/app/components/ThemeDefs.js +42 -0
  357. package/.next/standalone/app/components/ThemeLoader.js +20 -1
  358. package/.next/standalone/app/components/UpdatePanel.js +22 -22
  359. package/.next/standalone/app/components/UserProvider.js +22 -15
  360. package/.next/standalone/app/components/settings/AppearanceSection.js +47 -24
  361. package/.next/standalone/app/components/settings/DataSection.js +276 -109
  362. package/.next/standalone/app/components/settings/NetworkHealthSection.js +13 -13
  363. package/.next/standalone/app/components/settings/SectorPicker.js +12 -12
  364. package/.next/standalone/app/components/settings/SectorSection.js +13 -14
  365. package/.next/standalone/app/components/settings/TierSection.js +9 -9
  366. package/.next/standalone/app/components/settings/TitleSection.js +11 -11
  367. package/.next/standalone/app/components/settings/UsageSection.js +313 -0
  368. package/.next/standalone/app/components/ui.js +8 -8
  369. package/.next/standalone/app/globals.css +159 -2
  370. package/.next/standalone/app/import/page.js +94 -38
  371. package/.next/standalone/app/launch/page.js +5 -5
  372. package/.next/standalone/app/layout.js +6 -2
  373. package/.next/standalone/app/page.js +53 -37
  374. package/.next/standalone/app/paths/page.js +63 -63
  375. package/.next/standalone/app/profile/page.js +58 -58
  376. package/.next/standalone/app/queue/page.js +54 -54
  377. package/.next/standalone/app/scores/page.js +2 -2
  378. package/.next/standalone/app/settings/page.js +16 -13
  379. package/.next/standalone/app/setup/page.js +221 -125
  380. package/.next/standalone/app/social/Crm.js +63 -62
  381. package/.next/standalone/app/social/SocialHub.js +22 -22
  382. package/.next/standalone/app/social/Thread.js +7 -7
  383. package/.next/standalone/app/social/page.js +2 -2
  384. package/.next/standalone/lib/backups.js +458 -0
  385. package/.next/standalone/lib/chain-layout.js +32 -0
  386. package/.next/standalone/lib/csv-store.js +131 -0
  387. package/.next/standalone/lib/csv.js +137 -39
  388. package/.next/standalone/lib/data-folder.js +19 -3
  389. package/.next/standalone/lib/data-import.js +5 -2
  390. package/.next/standalone/lib/db-client.js +78 -20
  391. package/.next/standalone/lib/demo.js +5 -4
  392. package/.next/standalone/lib/galaxy-export.js +9 -2
  393. package/.next/standalone/lib/galaxy-lab.js +19 -5
  394. package/.next/standalone/lib/galaxy-layouts.js +43 -0
  395. package/.next/standalone/lib/gate.js +10 -4
  396. package/.next/standalone/lib/ingest.js +1 -1
  397. package/.next/standalone/lib/linkedin-limits.js +212 -11
  398. package/.next/standalone/lib/liquid-glass.js +59 -0
  399. package/.next/standalone/lib/notifications.js +13 -0
  400. package/.next/standalone/lib/scan-pace.js +11 -0
  401. package/.next/standalone/lib/scan-progress.js +20 -0
  402. package/.next/standalone/lib/scan-risk.js +44 -0
  403. package/.next/standalone/lib/scanner-setup.js +97 -15
  404. package/.next/standalone/lib/scraper-client.js +17 -3
  405. package/.next/standalone/lib/search-risk.js +7 -3
  406. package/.next/standalone/lib/settings-client.js +5 -3
  407. package/.next/standalone/lib/settings.js +10 -0
  408. package/.next/standalone/lib/social-store.js +3 -2
  409. package/.next/standalone/lib/synced-setting.js +46 -0
  410. package/.next/standalone/lib/theme-store.js +42 -10
  411. package/.next/standalone/lib/themes.js +111 -21
  412. package/.next/standalone/lib/usage.js +195 -0
  413. package/.next/standalone/package-lock.json +2 -2
  414. package/.next/standalone/package.json +1 -1
  415. package/.next/standalone/scripts/scrape.py +26 -2
  416. package/.next/static/chunks/03-_esd2x_yk6.js +1 -0
  417. package/.next/static/chunks/03-demj2iy-0p.js +44 -0
  418. package/.next/static/chunks/0_1r-3csplxnj.js +1 -0
  419. package/.next/static/chunks/0an_b6zi1r_qq.js +5 -0
  420. package/.next/static/chunks/0e3g0sil79cus.js +21 -0
  421. package/.next/static/chunks/0kscsqnvfq3-r.js +1 -0
  422. package/.next/static/chunks/0p3g5tfostsep.js +7 -0
  423. package/.next/static/chunks/0zd0t7e60bn4z.js +1 -0
  424. package/.next/static/chunks/163b-20vwa06i.js +34 -0
  425. package/.next/static/chunks/{0ws7zy0w57ufi.js → 1eyajb9ntzlrl.js} +1 -1
  426. package/.next/static/chunks/1pa-2v1ajvrko.js +1 -0
  427. package/.next/static/chunks/1qbjermbf68xj.js +1 -0
  428. package/.next/static/chunks/1z9lb-dbcg4aa.js +1 -0
  429. package/.next/static/chunks/23_1z47al92nz.js +57 -0
  430. package/.next/static/chunks/260bomtr214m8.js +34 -0
  431. package/.next/static/chunks/2eo9pqq9gay3r.js +34 -0
  432. package/.next/static/chunks/2xk2ra4piiuod.js +34 -0
  433. package/.next/static/chunks/2z1-q0_vunbql.js +2 -0
  434. package/.next/static/chunks/2zf4jmz9l3li2.js +1 -0
  435. package/.next/static/chunks/34g73qhayuevu.js +1 -0
  436. package/.next/static/chunks/3b0-14cxqsprt.js +1 -0
  437. package/.next/static/chunks/3jarus1_38s2z.js +1 -0
  438. package/.next/static/chunks/3ssu341hav_sq.css +3 -0
  439. package/.next/static/chunks/3v1qd3sqhqn0d.js +1 -0
  440. package/.next/static/chunks/43pg2sursiypz.js +1 -0
  441. package/.next/static/chunks/44yn0tcd9dfk3.js +1 -0
  442. package/CHANGELOG.md +143 -0
  443. package/README.md +71 -49
  444. package/SECURITY.md +17 -11
  445. package/lib/backups.js +458 -0
  446. package/lib/chain-layout.js +32 -0
  447. package/lib/csv-store.js +131 -0
  448. package/lib/csv.js +137 -39
  449. package/lib/data-folder.js +19 -3
  450. package/lib/data-import.js +5 -2
  451. package/lib/db-client.js +78 -20
  452. package/lib/demo.js +5 -4
  453. package/lib/galaxy-export.js +9 -2
  454. package/lib/galaxy-lab.js +19 -5
  455. package/lib/galaxy-layouts.js +43 -0
  456. package/lib/gate.js +10 -4
  457. package/lib/ingest.js +1 -1
  458. package/lib/linkedin-limits.js +212 -11
  459. package/lib/liquid-glass.js +59 -0
  460. package/lib/notifications.js +13 -0
  461. package/lib/scan-pace.js +11 -0
  462. package/lib/scan-progress.js +20 -0
  463. package/lib/scan-risk.js +44 -0
  464. package/lib/scanner-setup.js +97 -15
  465. package/lib/scraper-client.js +17 -3
  466. package/lib/search-risk.js +7 -3
  467. package/lib/settings-client.js +5 -3
  468. package/lib/settings.js +10 -0
  469. package/lib/social-store.js +3 -2
  470. package/lib/synced-setting.js +46 -0
  471. package/lib/theme-store.js +42 -10
  472. package/lib/themes.js +111 -21
  473. package/lib/usage.js +195 -0
  474. package/package.json +1 -1
  475. package/scripts/scrape.py +26 -2
  476. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +0 -3
  477. package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +0 -3
  478. package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +0 -3
  479. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +0 -3
  480. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +0 -3
  481. package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +0 -8
  482. package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +0 -8
  483. package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +0 -8
  484. package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +0 -174
  485. package/.next/standalone/.next/server/chunks/lib_rpc_04s8mzr.js +0 -3
  486. package/.next/standalone/.next/server/chunks/lib_rpc_053z7as.js +0 -3
  487. package/.next/standalone/.next/server/chunks/lib_rpc_0b_-2te.js +0 -3
  488. package/.next/standalone/.next/server/chunks/lib_rpc_0dhbxdm.js +0 -3
  489. package/.next/standalone/.next/server/chunks/lib_rpc_0dxlk31.js +0 -3
  490. package/.next/standalone/.next/server/chunks/lib_rpc_0f8b-qc.js +0 -3
  491. package/.next/standalone/.next/server/chunks/lib_rpc_0pzie7_.js +0 -3
  492. package/.next/standalone/.next/server/chunks/lib_rpc_0r76fq_.js +0 -3
  493. package/.next/standalone/.next/server/chunks/lib_rpc_0ut7pjp.js +0 -3
  494. package/.next/standalone/.next/server/chunks/lib_rpc_15zyqaz.js +0 -3
  495. package/.next/standalone/.next/server/chunks/lib_rpc_18zpjtq.js +0 -3
  496. package/.next/standalone/.next/server/chunks/lib_rpc_1a8xkiz.js +0 -3
  497. package/.next/standalone/.next/server/chunks/lib_rpc_1e_55xo.js +0 -3
  498. package/.next/standalone/.next/server/chunks/lib_rpc_1oxfd1_.js +0 -3
  499. package/.next/standalone/.next/server/chunks/lib_rpc_1s0lod0.js +0 -3
  500. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +0 -3
  501. package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +0 -3
  502. package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +0 -3
  503. package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +0 -3
  504. package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +0 -3
  505. package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +0 -3
  506. package/.next/standalone/.next/server/chunks/ssr/_1-658fq._.js +0 -3
  507. package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +0 -3
  508. package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +0 -3
  509. package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +0 -3
  510. package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  511. package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  512. package/.next/standalone/.next/static/chunks/0i02yxppzds1o.js +0 -1
  513. package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  514. package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +0 -1
  515. package/.next/standalone/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  516. package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  517. package/.next/standalone/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  518. package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +0 -34
  519. package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  520. package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  521. package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  522. package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +0 -45
  523. package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  524. package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +0 -11
  525. package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  526. package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  527. package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  528. package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  529. package/.next/standalone/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  530. package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  531. package/.next/static/chunks/02pq76u7y4v9-.js +0 -22
  532. package/.next/static/chunks/0cmq0exd4d0h9.js +0 -1
  533. package/.next/static/chunks/0i02yxppzds1o.js +0 -1
  534. package/.next/static/chunks/0m_p4k-q2qh--.js +0 -1
  535. package/.next/static/chunks/0oyslj62jkubd.js +0 -1
  536. package/.next/static/chunks/0vo-l8hxneba6.css +0 -3
  537. package/.next/static/chunks/0yh8z2tbrc5i_.js +0 -1
  538. package/.next/static/chunks/17-rhp8sg4m1b.js +0 -44
  539. package/.next/static/chunks/172e10mi-tpo_.js +0 -34
  540. package/.next/static/chunks/1ei5vbe2uw6fl.js +0 -1
  541. package/.next/static/chunks/1f7_pl_wq7lh3.js +0 -11
  542. package/.next/static/chunks/1jzbe7zdx9vbj.js +0 -2
  543. package/.next/static/chunks/1m3017gp790pw.js +0 -45
  544. package/.next/static/chunks/1t20e8u0st7ep.js +0 -1
  545. package/.next/static/chunks/2-ch9rm27eril.js +0 -11
  546. package/.next/static/chunks/2ldv-v3s9yaif.js +0 -1
  547. package/.next/static/chunks/3bp284gjf7dyq.js +0 -1
  548. package/.next/static/chunks/3k1f6clbn3gj3.js +0 -7
  549. package/.next/static/chunks/3l4t8je6iguzc.js +0 -1
  550. package/.next/static/chunks/3tplzuc9jk-tl.js +0 -1
  551. package/.next/static/chunks/42m0bqr8pbovz.js +0 -11
  552. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
  553. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
  554. /package/.next/standalone/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
  555. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_buildManifest.js +0 -0
  556. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_clientMiddlewareManifest.js +0 -0
  557. /package/.next/static/{dQUvvVSXqbkEFC3-CNcwT → ZVpLBK-2vpllv2HxOFs2d}/_ssgManifest.js +0 -0
@@ -0,0 +1,195 @@
1
+ // Settings → LinkedIn usage: how close this account is to the line, in one
2
+ // look, the way Claude's own usage page shows a plan's limits. No Node
3
+ // imports, so the page and the tests share it; the counting itself is in
4
+ // lib/linkedin-limits.js (linkedinUsage), from the files the scanner writes.
5
+ //
6
+ // Why it exists: on 2026-09-28 a real account was restricted after 373
7
+ // searches in 24 hours (TRAPS §16), and the only budget view was a box folded
8
+ // away on the Scan page. Every number here is either counted from the
9
+ // scanner's own record or is a rule with a stated source; nothing is a guess
10
+ // presented as a fact.
11
+
12
+ import { RESTRICTED_AT, RISKY_DAILY, SAFE_LIMITS, limitNote } from './search-risk.js';
13
+
14
+ const HOUR_MS = 3600 * 1000;
15
+ const DAY_MS = 24 * HOUR_MS;
16
+
17
+ // Auto scan's own ceilings (scripts/scrape.py AUTO_DAY_CAP, AUTO_WEEK_CAP,
18
+ // DRIP_HOURS, SESSION_PAGES, SESSION_REST, AUTO_PUSHBACK_REST). They hold
19
+ // however high the budget is set. tests/usage.test.mjs reads the scanner's
20
+ // numbers and checks these match, so the page can't describe rules the
21
+ // scanner doesn't keep.
22
+ export const AUTO = {
23
+ day: 40, // searches in any 24 hours
24
+ week: 200, // searches in any 7 days
25
+ hours: [9, 18], // searches only from 09:00 to 18:00, this computer's clock
26
+ sitting: 8, // searches in one sitting
27
+ sittingRest: 60 * 60, // seconds of rest after each sitting
28
+ pushbackRest: 2 * 24 * 3600, // seconds off after any check from LinkedIn (scrape.py AUTO_PUSHBACK_REST)
29
+ };
30
+
31
+ // About how many people one search finds. A page of LinkedIn's people search
32
+ // shows up to 10 (scripts/scrape.py, "10 results per page"); 9 allows for the
33
+ // last page of each list, which is usually short. An estimate, and the page
34
+ // says so (neo's handoff, 2026-10-03).
35
+ export const PEOPLE_PER_SEARCH = 9;
36
+
37
+ // Searches in 24 hours that count as too close: 60% of the 373 that got an
38
+ // account restricted. A margin on a number seen once, not a known safe line.
39
+ export const DANGER_AT = Math.ceil(0.6 * RESTRICTED_AT);
40
+
41
+ // LinkedIn doesn't publish a free account's monthly limit. People report
42
+ // somewhere around 250 to 350 searches (TRAPS §35); shown as a range people
43
+ // report, never as LinkedIn's number.
44
+ export const REPORTED_MONTH = [250, 350];
45
+
46
+ // A search within this long after a pushback is the same search that met it,
47
+ // not a new one: the evidence file's name is only to the second.
48
+ const PUSHBACK_GRACE_MS = 60 * 1000;
49
+
50
+ export const LEVELS = {
51
+ ok: { label: 'Well within', color: '#00ff88' },
52
+ 'above-default': { label: 'Above the default', color: '#FFD700' },
53
+ risky: { label: 'Risky', color: '#FF8C42' },
54
+ danger: { label: 'Too close', color: '#ff6b6b' },
55
+ paused: { label: 'Paused', color: '#ff6b6b' },
56
+ unknown: { label: 'Can’t tell', color: '#8b9a9a' },
57
+ };
58
+
59
+ /**
60
+ * Where this account stands, worst first:
61
+ * paused a cooldown is on: nothing searches until it ends
62
+ * danger 60% of 373 or more in 24 hours, or searching again within
63
+ * a day of LinkedIn pushing back
64
+ * risky over 100 in 24 hours (what the budget picker asks about)
65
+ * above-default over the default 50 in 24 hours
66
+ * ok within the default
67
+ * unknown the record can't be read (the scanner then counts the day as used)
68
+ */
69
+ export function usageLevel({ cooldown, searchesDay, lastPushback, searchesSincePushback, now = Date.now() } = {}) {
70
+ if (cooldown) return 'paused';
71
+ if (!Number.isFinite(searchesDay)) return 'unknown';
72
+ if (searchesDay >= DANGER_AT) return 'danger';
73
+ if (searchedAfterPushback({ lastPushback, searchesSincePushback, now })) return 'danger';
74
+ if (searchesDay > RISKY_DAILY) return 'risky';
75
+ if (searchesDay > SAFE_LIMITS.daily) return 'above-default';
76
+ return 'ok';
77
+ }
78
+
79
+ /** LinkedIn pushed back less than a day ago and searching has carried on since. */
80
+ export function searchedAfterPushback({ lastPushback, searchesSincePushback, now = Date.now() } = {}) {
81
+ const at = lastPushback?.at;
82
+ return Number.isFinite(at) && now - at < DAY_MS && now >= at && searchesSincePushback > 0;
83
+ }
84
+
85
+ /** Searches made after a pushback, from the record's times (epoch seconds). */
86
+ export function countAfter(times, atMs) {
87
+ if (!Number.isFinite(atMs) || !Array.isArray(times)) return 0;
88
+ const from = (atMs + PUSHBACK_GRACE_MS) / 1000;
89
+ return times.filter((t) => t > from).length;
90
+ }
91
+
92
+ /**
93
+ * What's left, as searches and about how many people they'd find: the daily
94
+ * or monthly budget, whichever runs out first (null for one with no cap).
95
+ * Nothing while scanning is paused. null when neither has a cap.
96
+ */
97
+ export function estimate({ leftDay, leftMonth, paused = false } = {}) {
98
+ const lefts = [leftDay, leftMonth].filter((n) => Number.isFinite(n));
99
+ if (!lefts.length) return null;
100
+ const searches = paused ? 0 : Math.max(0, Math.min(...lefts));
101
+ const by = leftDay != null && leftMonth != null ? (leftDay <= leftMonth ? 'day' : 'month') : leftDay != null ? 'day' : 'month';
102
+ return { searches, people: searches * PEOPLE_PER_SEARCH, by };
103
+ }
104
+
105
+ /** The plain-word warning for a level, or null when there's nothing to warn about. */
106
+ export function levelWarning(level, { searchesDay, cooldown, lastPushback, now = Date.now() } = {}) {
107
+ if (level === 'paused') {
108
+ // As the Scan page's banner says it (app/components/LinkedInLimits.js CooldownBanner).
109
+ const why = String(cooldown?.reason || 'LinkedIn pushed back');
110
+ return `Scanning is paused${cooldown?.until ? ` until ${whenText(cooldown.until)}` : ''}. `
111
+ + `${why.charAt(0).toUpperCase()}${why.slice(1)}. Nothing that searches LinkedIn runs until then, so the account can recover.`;
112
+ }
113
+ if (level === 'danger') {
114
+ if (searchesDay >= DANGER_AT) {
115
+ return `${searchesDay} searches in the last 24 hours. A real account was restricted after ${RESTRICTED_AT}. `
116
+ + 'Stop scanning until this comes down: each search stops counting 24 hours after it was made.';
117
+ }
118
+ return `LinkedIn pushed back ${agoText(lastPushback?.at, now)}, and searching has carried on since. `
119
+ + 'Carrying on after a warning is what LinkedIn says turns it into a restriction. Leave it at least a day.';
120
+ }
121
+ if (level === 'risky') {
122
+ return `More than ${RISKY_DAILY} searches in the last 24 hours. That is past what Six Degrees asks you to confirm, `
123
+ + `and a free account's whole month may be ${REPORTED_MONTH[0]} to ${REPORTED_MONTH[1]}.`;
124
+ }
125
+ if (level === 'above-default') {
126
+ return `More than the default ${SAFE_LIMITS.daily} searches in the last 24 hours. `
127
+ + 'The default leaves room under limits LinkedIn doesn’t publish.';
128
+ }
129
+ if (level === 'unknown') {
130
+ return 'The record of searches on this computer couldn’t be read, so the scanner counts today’s budget as used until it can.';
131
+ }
132
+ return null;
133
+ }
134
+
135
+ /**
136
+ * The warning box's paragraphs, in order: the level's warning, then the Scan
137
+ * page's note on a risky budget (lib/search-risk.js limitNote). The 373 is
138
+ * said once: when the level's warning names it, the note leaves its own 373
139
+ * sentence out. The Scan page's budget box still says the note whole.
140
+ */
141
+ export function warningParts(level, facts = {}, limits = {}) {
142
+ const warning = levelWarning(level, facts);
143
+ const namesRestriction = level === 'danger' && facts.searchesDay >= DANGER_AT;
144
+ const note = limitNote(limits, { restriction: !namesRestriction });
145
+ return [warning, note].filter(Boolean);
146
+ }
147
+
148
+ /** A bar's scale: past its last tick, and past what's been used. */
149
+ export function barMax(used, ticks = []) {
150
+ const top = Math.max(0, ...ticks.filter(Number.isFinite));
151
+ return Math.max(Math.ceil(top * 1.08), Math.ceil((Number(used) || 0) * 1.05), 1);
152
+ }
153
+
154
+ /** Midnight Pacific as LinkedIn's month turns over: "Nov 1, 12:00 AM Pacific". */
155
+ export function pacificText(ms) {
156
+ const s = new Intl.DateTimeFormat('en-US', {
157
+ timeZone: 'America/Los_Angeles', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit',
158
+ }).format(new Date(ms));
159
+ return `${s.replace(/ /g, ' ')} Pacific`;
160
+ }
161
+
162
+ /** A time on this computer's clock: "Sat, Oct 3, 3:12 PM". */
163
+ export function whenText(ms) {
164
+ return new Date(ms).toLocaleString(undefined, { weekday: 'short', month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' })
165
+ .replace(/ /g, ' ');
166
+ }
167
+
168
+ /** "in 3 h 12 min", "in 40 min", "in under a minute", or "now". */
169
+ export function untilText(ms, now = Date.now()) {
170
+ const left = ms - now;
171
+ if (!(left > 0)) return 'now';
172
+ if (left < 60 * 1000) return 'in under a minute';
173
+ const m = Math.round(left / 60000);
174
+ if (m < 60) return `in ${m} min`;
175
+ const h = Math.floor(m / 60);
176
+ if (h >= 48) return `in ${Math.round(h / 24)} days`;
177
+ return `in ${h} h${m % 60 ? ` ${m % 60} min` : ''}`;
178
+ }
179
+
180
+ /** "3 h ago", "40 min ago", "just now". */
181
+ export function agoText(ms, now = Date.now()) {
182
+ if (!Number.isFinite(ms)) return 'recently';
183
+ const m = Math.round((now - ms) / 60000);
184
+ if (m < 1) return 'just now';
185
+ if (m < 60) return `${m} min ago`;
186
+ const h = Math.round(m / 60);
187
+ if (h < 48) return `${h} h ago`;
188
+ return `${Math.round(h / 24)} days ago`;
189
+ }
190
+
191
+ /** "9 AM to 6 PM" from AUTO.hours. */
192
+ export function hoursText([from, to] = AUTO.hours) {
193
+ const h = (n) => `${n % 12 || 12} ${n < 12 ? 'AM' : 'PM'}`;
194
+ return `${h(from)} to ${h(to)}`;
195
+ }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "six-degrees",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "six-degrees",
9
- "version": "0.6.0",
9
+ "version": "0.7.0",
10
10
  "license": "MIT",
11
11
  "os": [
12
12
  "darwin",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "six-degrees",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Map your professional network as a galaxy — leverage tiers, bridges into new circles, and the shortest path to anyone. Runs locally on your own data.",
5
5
  "license": "MIT",
6
6
  "author": "Blake Burford",
@@ -227,6 +227,19 @@ MAX_SCROLL_ROUNDS = 400 # ~10 people load per round
227
227
  SCROLL_PAUSE_SECONDS = 0.9
228
228
  SCROLL_STALL_LIMIT = 10 # rounds with no new names before stopping
229
229
  LOGIN_POLL_SECONDS = 2
230
+ # The Scan page's "Signed in" (lib/scanner-setup.js SIGNED_IN_FILE, which a
231
+ # test keeps the same): true once the session is confirmed below, false while
232
+ # a sign-in is awaited. It went by Chrome's cookie file, which exists as soon
233
+ # as this window first opens, so closing it without signing in ticked the step.
234
+ SIGNED_IN_FILE = "signed-in.json"
235
+
236
+
237
+ def _note_signed_in(ok):
238
+ """Write down for the Scan page whether LinkedIn's session is confirmed. Only a note: never stops a run."""
239
+ try:
240
+ _write_json_atomic(_home() / SIGNED_IN_FILE, {"signedIn": bool(ok), "at": time.time()})
241
+ except Exception as exc:
242
+ print(f" (could not note the sign-in for the Scan page: {exc})")
230
243
 
231
244
 
232
245
  def _has_session_cookie(target):
@@ -345,8 +358,10 @@ def ensure_logged_in(page, timeout_s=LOGIN_WAIT_SECONDS, log_fn=None, stop_on_ch
345
358
  raise LinkedInPushedBack(0, reason)
346
359
 
347
360
  if _has_session_cookie(context) and not _looks_logged_out(page) and not wall:
361
+ _note_signed_in(True)
348
362
  return True
349
363
 
364
+ _note_signed_in(False)
350
365
  say = log_fn or (lambda m: None)
351
366
  if had_session and wall == "checkpoint":
352
367
  print()
@@ -356,7 +371,10 @@ def ensure_logged_in(page, timeout_s=LOGIN_WAIT_SECONDS, log_fn=None, stop_on_ch
356
371
  say("Waiting for you to finish LinkedIn's security check...")
357
372
  else:
358
373
  _print_sign_in_banner(say)
359
- return _wait_for_sign_in(page, context, timeout_s, say)
374
+ ok = _wait_for_sign_in(page, context, timeout_s, say)
375
+ if ok:
376
+ _note_signed_in(True)
377
+ return ok
360
378
 
361
379
 
362
380
  def _print_sign_in_banner(say):
@@ -1411,6 +1429,8 @@ def note_unclear(profile_url, clear=False):
1411
1429
  # scan-limits.json {"daily": 50, "monthly": 250, "profiles": 50}
1412
1430
  # 0 = no cap on searches; profile views always have one
1413
1431
  # linkedin-cooldown.json {"until": epoch s, "reason": "...", "set_at": ...}
1432
+ # lifted on the Scan page: "until" is when, plus
1433
+ # "lifted_at" and "was_until"; read here as ended
1414
1434
  # ---------------------------------------------------------------------------
1415
1435
  DEFAULT_DAILY_SEARCHES = 50
1416
1436
  DEFAULT_MONTHLY_SEARCHES = 250
@@ -3376,7 +3396,11 @@ def scrape_bridge(bridge_name, headless=False, max_pages=LINKEDIN_MAX_PAGES, dee
3376
3396
  raise SearchLimitReached(len(read))
3377
3397
  if reach.get("pushed_back"):
3378
3398
  why = reach.get("pushback_reason") or "a page that would not open"
3379
- set_cooldown(seconds=DAY_SECONDS, reason=f"LinkedIn pushed back: {why}")
3399
+ # Auto scan rests two days after any check from LinkedIn, as the Scan
3400
+ # page promises and AUTO_PUSHBACK_REST says; a pushback partway through
3401
+ # a list used to rest it one day, like a scan you start yourself.
3402
+ set_cooldown(seconds=AUTO_PUSHBACK_REST if EXPERIMENT["on"] else DAY_SECONDS,
3403
+ reason=f"LinkedIn pushed back: {why}")
3380
3404
  raise LinkedInPushedBack(len(read), why)
3381
3405
  if reach.get("budget"):
3382
3406
  raise BudgetReached(len(read), reach["budget"])
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,11678,e=>{e.v(t=>Promise.all(["static/chunks/34g73qhayuevu.js"].map(t=>e.l(t))).then(()=>t(39160)))},28298,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return l}});let n=e.r(71645);function l(e,t,r){let[l,u]=(0,n.useState)(()=>({tree:e,cacheNode:t,stateKey:r,next:null}));if(l.tree===e)return l;let a={tree:e,cacheNode:t,stateKey:r,next:null},o=1,s=l,d=a;for(;null!==s&&o<1;){if(s.stateKey===r){d.next=s.next;break}{o++;let e={tree:s.tree,cacheNode:s.cacheNode,stateKey:s.stateKey,next:null};d.next=e,d=e}s=s.next}return u(a),a}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return d}});let n=e.r(43476),l=e.r(8372),u=e.r(71645),a=e.r(33906),o=e.r(61994),s=e.r(15783);function d({Component:e,serverProvidedParams:t}){let r,i;if(null!==t)r=t.searchParams,i=t.params;else{let e=(0,u.use)(l.LayoutRouterContext);i=null!==e?e.parentParams:{},r=(0,a.urlSearchParamsToParsedUrlQuery)((0,u.use)(o.SearchParamsContext))}let c=(0,s.createClientSearchParams)(r),f=(0,s.createClientParams)(i);return(0,n.jsx)(e,{params:f,searchParams:c})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92825,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return o}});let n=e.r(43476),l=e.r(8372),u=e.r(71645),a=e.r(15783);function o({Component:e,slots:t,serverProvidedParams:r}){let s;if(null!==r)s=r.params;else{let e=(0,u.use)(l.LayoutRouterContext);s=null!==e?e.parentParams:{}}let d=(0,a.createClientParams)(s);return(0,n.jsx)(e,{...t,params:d})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68017,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return i}});let n=e.r(90809),l=e.r(43476),u=n._(e.r(71645)),a=e.r(90373),o=e.r(54394),s=e.r(8372);class d extends u.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,o.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,o.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:u}=this.state,a={[o.HTTPAccessErrorStatus.NOT_FOUND]:e,[o.HTTPAccessErrorStatus.FORBIDDEN]:t,[o.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(u){let s=u===o.HTTPAccessErrorStatus.NOT_FOUND&&e,d=u===o.HTTPAccessErrorStatus.FORBIDDEN&&t,i=u===o.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return s||d||i?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("meta",{name:"robots",content:"noindex"}),!1,a[u]]}):n}return n}}function i({notFound:e,forbidden:t,unauthorized:r,children:n}){let o=(0,a.useUntrackedPathname)(),c=(0,u.useContext)(s.MissingSlotContext);return e||t||r?(0,l.jsx)(d,{pathname:o,notFound:e,forbidden:t,unauthorized:r,missingSlots:c,children:n}):(0,l.jsx)(l.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22976,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return u},PlaceValidationBoundaryBelowThisLevel:function(){return a},RenderValidationBoundaryAtThisLevel:function(){return o},SlotMarker:function(){return s}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=null,a=null,o=null,s=null;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return u.InstantValidationBoundaryContext},PlaceValidationBoundaryBelowThisLevel:function(){return u.PlaceValidationBoundaryBelowThisLevel},RenderValidationBoundaryAtThisLevel:function(){return u.RenderValidationBoundaryAtThisLevel},SlotMarker:function(){return u.SlotMarker}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(22976);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={LoadingBoundaryProvider:function(){return C},default:function(){return T}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(55682),a=e.r(90809),o=e.r(43476),s=a._(e.r(71645)),d=u._(e.r(74080)),i=e.r(8372),c=e.r(1244),f=e.r(72383),p=e.r(91915),y=e.r(58442),m=e.r(68017);e.r(77694);let b=e.r(70725),h=e.r(28298);e.r(74180);let _=e.r(61994),P=e.r(33906),v=e.r(95871);d.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function g(e,t,r){let n=e.getClientRects();if(0===n.length)return 0;let l=1/0;for(let e=0;e<n.length;e++){let t=n[e];t.top<l&&(l=t.top)}return l>=r()&&l<=t?1:2}s.default.Component;let j=function(e){let t=s.default.useRef(null);return(0,s.useLayoutEffect)(()=>{let{focusAndScrollRef:r,cacheNode:n}=e,l=r.forceScroll?r.scrollRef:n.scrollRef;if(null===l||!l.current)return;let u=null,a=r.hashFragment;if(a){var o;if(null===(u="top"===(o=a)?document.body:document.getElementById(o)??document.getElementsByName(o)[0]??null)){l.current=!1,r.onlyHashChange=!1,r.hashFragment=null;return}}else u=t.current;if(null===u)return;let s=!1;(0,p.disableSmoothScrollDuringRouteTransition)(()=>{let e=document.documentElement,t=null,r=null,n=null,o=()=>{var r,l;let u,a;return null===n&&(r=e,l=t,n=!Number.isFinite(a=Number.parseFloat(u=getComputedStyle(r).scrollPaddingTop))||a<0?0:u.endsWith("px")?a:u.endsWith("%")?a/100*l:0),n};(a||(t=e.clientHeight,0!==(r=g(u,t,o))))&&((s=!0,l.current=!1,a)?u.scrollIntoView():1!==r&&(e.scrollTop=0,2===g(u,t,o)&&u.scrollIntoView()))},{dontForceLayout:!0,onlyHashChange:r.onlyHashChange}),s&&(r.onlyHashChange=!1,r.hashFragment=null)},void 0),(0,o.jsx)(s.Fragment,{ref:t,children:e.children})};function O({children:e,cacheNode:t}){let r=(0,s.useContext)(i.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,o.jsx)(j,{focusAndScrollRef:r.focusAndScrollRef,cacheNode:t,children:e})}function x({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:l,url:u,isActive:a}){let d,f=(0,s.useContext)(i.GlobalLayoutRouterContext);if((0,s.useContext)(_.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,s.use)(c.unresolvedThenable),y=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,m=(0,s.useDeferredValue)(p.rsc,y);if((0,v.isDeferredRsc)(m)){let e=(0,s.use)(m);null===e&&(0,s.use)(c.unresolvedThenable),d=e}else null===m&&(0,s.use)(c.unresolvedThenable),d=m;let b=d;return(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:l,parentLoadingData:null,debugNameContext:r,url:u,isActive:a},children:b})}function C({loading:e,children:t}){let r=(0,s.use)(i.LayoutRouterContext);return null===r?t:(0,o.jsx)(i.LayoutRouterContext.Provider,{value:{parentTree:r.parentTree,parentCacheNode:r.parentCacheNode,parentSegmentPath:r.parentSegmentPath,parentParams:r.parentParams,parentLoadingData:e,debugNameContext:r.debugNameContext,url:r.url,isActive:r.isActive},children:t})}function R({name:e,loading:t,children:r}){if(null!==t){let n=t[0],l=t[1],u=t[2];return(0,o.jsx)(s.Suspense,{name:e,fallback:(0,o.jsxs)(o.Fragment,{children:[l,u,n]}),children:r})}return(0,o.jsx)(o.Fragment,{children:r})}function T({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:l,templateScripts:u,template:a,notFound:d,forbidden:p,unauthorized:_,segmentViewBoundaries:v}){let g=(0,s.useContext)(i.LayoutRouterContext);if(!g)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:j,parentCacheNode:C,parentSegmentPath:S,parentParams:M,parentLoadingData:E,url:N,isActive:F,debugNameContext:A}=g,B=j[0],D=null===S?[e]:S.concat([B,e]),L=j[1][e],H=C.slots;(void 0===L||null===H)&&(0,s.use)(c.unresolvedThenable);let k=L[0],w=H[e]??null,U=(0,b.createRouterCacheKey)(k,!0),V=(0,h.useRouterBFCache)(L,w,U),I=[];do{let e=V.tree,s=V.cacheNode,c=V.stateKey,b=e[0],h=M;if(Array.isArray(b)){let e=b[0],t=b[1],r=b[2],n=(0,P.getParamValueFromCacheKey)(t,r);null!==n&&(h={...M,[e]:n})}let v=function(e){if("/"===e)return"/";if("string"==typeof e)if("(__SLOT__)"===e)return;else return e+"/";return e[1]+"/"}(b),g=v??A,j=void 0===v?void 0:A,C=(0,o.jsxs)(O,{cacheNode:s,children:[(0,o.jsx)(f.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,o.jsx)(R,{name:j,loading:E,children:(0,o.jsx)(m.HTTPAccessFallbackBoundary,{notFound:d,forbidden:p,unauthorized:_,children:(0,o.jsxs)(y.RedirectBoundary,{children:[(0,o.jsx)(x,{url:N,tree:e,params:h,cacheNode:s,segmentPath:D,debugNameContext:g,isActive:F&&c===U}),null]})})})}),null]}),T=(0,o.jsxs)(i.TemplateContext.Provider,{value:C,children:[l,u,a]},c);I.push(T),V=V.next}while(null!==V)return I}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return o}});let n=e.r(90809),l=e.r(43476),u=n._(e.r(71645)),a=e.r(8372);function o(){let e=(0,u.useContext)(a.TemplateContext);return(0,l.jsx)(l.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97689,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return l}});let n=new WeakMap;function l(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createClientParams:function(){return u.createRenderParamsFromClient},createClientSearchParams:function(){return a.createRenderSearchParamsFromClient}};for(var l in n)Object.defineProperty(r,l,{enumerable:!0,get:n[l]});let u=e.r(97689),a=e.r(66996);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},27201,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return l}});let n=e.r(43476),l=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let l=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=l}e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}})}]);
@@ -0,0 +1,44 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,10706,e=>{"use strict";var t=e.i(43476),i=e.i(71645),r=e.i(22016);function n(e={}){let t=(0,i.useRef)(null),[r,o]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{if(!t.current)return;let i=new IntersectionObserver(([e])=>{e.isIntersecting&&o(!0)},{threshold:.15,...e});return i.observe(t.current),()=>i.disconnect()},[]),[t,r]}let o={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},a="linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)";function l({end:e,duration:r=2e3,active:n}){let[o,a]=(0,i.useState)(0);return(0,i.useEffect)(()=>{if(!n)return;let t=0,i=e/(r/16),o=setInterval(()=>{(t+=i)>=e?(a(e),clearInterval(o)):a(Math.floor(t))},16);return()=>clearInterval(o)},[n,e]),(0,t.jsx)("span",{children:o.toLocaleString()})}function s(){let e=(0,i.useRef)(null),[n,l]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let t;setTimeout(()=>l(!0),300);let i=e.current;if(!i)return;let r=i.getContext("2d"),n=i.width=window.innerWidth,a=i.height=window.innerHeight,s=Array.from({length:120},()=>({x:Math.random()*n,y:Math.random()*a,vx:(Math.random()-.5)*.4,vy:(Math.random()-.5)*.4,r:2.5*Math.random()+1,color:[o.S,o.A,o.B,"#fff",o.S,o.A,o.B][Math.floor(7*Math.random())]}));!function e(){r.clearRect(0,0,n,a);for(let e=0;e<s.length;e++)for(let t=e+1;t<s.length;t++){let i=s[e].x-s[t].x,n=s[e].y-s[t].y,o=Math.sqrt(i*i+n*n);o<150&&(r.beginPath(),r.moveTo(s[e].x,s[e].y),r.lineTo(s[t].x,s[t].y),r.strokeStyle=`rgba(52,152,219,${.12*(1-o/150)})`,r.lineWidth=.5,r.stroke())}s.forEach(e=>{e.x+=e.vx,e.y+=e.vy,(e.x<0||e.x>n)&&(e.vx*=-1),(e.y<0||e.y>a)&&(e.vy*=-1),r.beginPath(),r.arc(e.x,e.y,e.r,0,2*Math.PI),r.fillStyle=e.color,r.globalAlpha=.6,r.fill(),r.globalAlpha=1}),t=requestAnimationFrame(e)}();let c=()=>{n=i.width=window.innerWidth,a=i.height=window.innerHeight};return window.addEventListener("resize",c),()=>{cancelAnimationFrame(t),window.removeEventListener("resize",c)}},[]),(0,t.jsxs)("section",{style:{position:"relative",height:"100vh",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden"},children:[(0,t.jsx)("canvas",{ref:e,style:{position:"absolute",inset:0,zIndex:0}}),(0,t.jsx)("div",{style:{position:"absolute",inset:0,background:"radial-gradient(circle at 50% 50%, transparent 30%, #0a0a1a 75%)",zIndex:1}}),(0,t.jsx)("div",{style:{position:"absolute",width:500,height:500,borderRadius:"50%",background:"radial-gradient(circle, rgba(52,152,219,0.08) 0%, transparent 70%)",top:"50%",left:"50%",transform:"translate(-50%,-50%)",zIndex:1}}),(0,t.jsxs)("div",{style:{position:"relative",zIndex:2,textAlign:"center",maxWidth:900,padding:"0 24px"},children:[(0,t.jsxs)("div",{style:{display:"inline-flex",alignItems:"center",gap:8,padding:"6px 16px",borderRadius:20,border:"1px solid rgba(52,152,219,0.3)",background:"rgba(52,152,219,0.08)",fontSize:13,color:"#3498DB",fontWeight:600,marginBottom:32,opacity:+!!n,transform:n?"translateY(0)":"translateY(20px)",transition:"all 0.8s cubic-bezier(0.16, 1, 0.3, 1)"},children:[(0,t.jsx)("span",{style:{width:8,height:8,borderRadius:"50%",background:"#3498DB",animation:"pulse-dot 2s infinite"}}),"Research Project by Blake Burford"]}),(0,t.jsxs)("h1",{style:{fontSize:"clamp(48px, 8vw, 96px)",fontWeight:800,lineHeight:1.05,margin:0,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",opacity:+!!n,transform:n?"translateY(0) scale(1)":"translateY(40px) scale(0.95)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.15s",letterSpacing:"-0.03em"},children:["Six Degrees of",(0,t.jsx)("br",{}),"Separation"]}),(0,t.jsx)("p",{style:{fontSize:"clamp(16px, 2.5vw, 22px)",color:"rgba(255,255,255,0.55)",maxWidth:600,margin:"24px auto 0",lineHeight:1.6,fontWeight:400,opacity:+!!n,transform:n?"translateY(0)":"translateY(30px)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.35s"},children:"Visualizing the hidden architecture of professional networks. Every connection is a degree. Every bridge is a path to power."}),(0,t.jsxs)("div",{style:{display:"flex",gap:16,justifyContent:"center",marginTop:48,flexWrap:"wrap",opacity:+!!n,transform:n?"translateY(0)":"translateY(30px)",transition:"all 1s cubic-bezier(0.16, 1, 0.3, 1) 0.55s"},children:[(0,t.jsx)(r.default,{href:"/",style:{padding:"14px 32px",borderRadius:12,border:"none",fontSize:16,fontWeight:700,background:a,color:"#000",cursor:"pointer",textDecoration:"none",boxShadow:"0 4px 24px rgba(255,215,0,0.3)"},children:"Open App"}),(0,t.jsx)("button",{onClick:()=>document.getElementById("features")?.scrollIntoView({behavior:"smooth"}),style:{padding:"14px 32px",borderRadius:12,border:"1px solid rgba(255,255,255,0.15)",fontSize:16,fontWeight:600,background:"rgba(255,255,255,0.05)",color:"#fff",cursor:"pointer",backdropFilter:"blur(12px)"},children:"See How It Works"})]}),(0,t.jsxs)("div",{style:{position:"absolute",bottom:-120,left:"50%",transform:"translateX(-50%)",display:"flex",flexDirection:"column",alignItems:"center",gap:8,opacity:.4*!!n,transition:"opacity 1.5s ease 1.2s"},children:[(0,t.jsx)("span",{style:{fontSize:11,color:"#555",letterSpacing:2,textTransform:"uppercase"},children:"Scroll"}),(0,t.jsx)("div",{style:{width:1,height:40,background:"linear-gradient(to bottom, rgba(255,255,255,0.3), transparent)",animation:"scroll-line 2s infinite"}})]})]})]})}function c(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"80px 24px",borderTop:"1px solid rgba(255,255,255,0.05)",borderBottom:"1px solid rgba(255,255,255,0.05)"},children:[(0,t.jsx)("div",{style:{maxWidth:1e3,margin:"0 auto",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:32},children:[{label:"Connections Mapped",value:873,color:"#3498DB"},{label:"Bridges Discovered",value:14,color:"#FFD700"},{label:"People Scored",value:748,color:"#9B59B6"},{label:"Companies",value:19,color:"#00ff88"}].map((e,r)=>(0,t.jsxs)("div",{style:{textAlign:"center",opacity:+!!i,transform:i?"translateY(0)":"translateY(30px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*r}s`},children:[(0,t.jsx)("div",{style:{fontSize:48,fontWeight:800,color:e.color,lineHeight:1},children:(0,t.jsx)(l,{end:e.value,active:i})}),(0,t.jsx)("div",{style:{fontSize:13,color:"#666",marginTop:8,fontWeight:500,letterSpacing:.5},children:e.label})]},r))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",margin:"32px auto 0",maxWidth:520},children:"Counted from the sample network that comes with the app. Every person in it is invented."})]})}function d(){let[e,i]=n(),r=[{tier:"S",color:o.S,r:55,count:10,label:"S-Tier",speed:60},{tier:"A",color:o.A,r:95,count:18,label:"A-Tier",speed:90},{tier:"B",color:o.B,r:135,count:30,label:"B-Tier",speed:120},{tier:"C",color:o.C,r:175,count:44,label:"C-Tier",speed:150},{tier:"D",color:o.D,r:210,count:56,label:"D-Tier",speed:180}];return(0,t.jsx)("section",{id:"features",ref:e,style:{padding:"100px 24px",position:"relative"},children:(0,t.jsxs)("div",{className:"galaxy-grid",style:{maxWidth:1100,margin:"0 auto",display:"grid",gridTemplateColumns:"1fr 1fr",gap:48,alignItems:"center"},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateX(0)":"translateX(-50px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:o.S,letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Network Circle"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15,margin:0,color:"#fff"},children:["Your Network,",(0,t.jsx)("br",{}),(0,t.jsx)("span",{style:{background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Visualized in Orbit"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.5)",lineHeight:1.7,marginTop:20,maxWidth:440},children:"Every connection orbits you by power tier. S-Tier innermost, D-Tier outermost. A living galaxy of influence. Zoom, filter, and explore your entire professional universe."}),(0,t.jsx)("div",{style:{display:"flex",gap:12,marginTop:32,flexWrap:"wrap"},children:Object.entries(o).map(([e,i])=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:6,padding:"6px 12px",borderRadius:8,background:`${i}15`,border:`1px solid ${i}30`},children:[(0,t.jsx)("div",{style:{width:8,height:8,borderRadius:"50%",background:i}}),(0,t.jsxs)("span",{style:{fontSize:12,fontWeight:600,color:i},children:[e,"-Tier"]})]},e))})]}),(0,t.jsxs)("div",{className:"galaxy-rings",style:{position:"relative",width:440,height:440,margin:"0 auto",opacity:+!!i,transform:i?"scale(1)":"scale(0.8)",transition:"all 1.2s cubic-bezier(0.16,1,0.3,1) 0.2s"},children:[(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",width:"60%",height:"60%",borderRadius:"50%",background:"radial-gradient(circle, rgba(52,152,219,0.12) 0%, transparent 70%)",transform:"translate(-50%,-50%)"}}),(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%,-50%)",width:40,height:40,borderRadius:"50%",background:"#fff",boxShadow:"0 0 30px rgba(255,255,255,0.4), 0 0 60px rgba(52,152,219,0.2)",zIndex:10,display:"flex",alignItems:"center",justifyContent:"center",fontSize:9,fontWeight:800,color:"#0a0a1a"},children:"YOU"}),r.map((e,r)=>(0,t.jsx)("div",{style:{position:"absolute",top:"50%",left:"50%",width:2*e.r,height:2*e.r,borderRadius:"50%",border:`1px solid ${e.color}15`,transform:"translate(-50%,-50%)",animation:i?`spin-ring ${e.speed}s linear infinite`:"none"},children:Array.from({length:e.count}).map((i,n)=>{let o=n/e.count*Math.PI*2,a=Math.round((Math.cos(o)*e.r+e.r)*100)/100,l=Math.round((Math.sin(o)*e.r+e.r)*100)/100;return(0,t.jsx)("div",{style:{position:"absolute",left:a-3,top:l-3,width:6,height:6,borderRadius:"50%",background:e.color,opacity:Number((.6+.4*y(r,n,1)).toFixed(3)),animation:`breathe ${(2+2*y(r,n,2)).toFixed(2)}s ease-in-out infinite ${(2*y(r,n,3)).toFixed(2)}s`}},n)})},r))]})]})})}function p(){let[e,i]=n(),r=[{d:1,label:"Your Connections",desc:"Direct network, scored & tiered",color:"#3498DB",count:150},{d:2,label:"Bridge Connections",desc:"Friends of your bridges",color:"#9B59B6",count:723},{d:3,label:"Extended Reach",desc:"Bridged from promoted D2s",color:"#FFD700",count:null},{d:4,label:"Industry Layer",desc:"Company & sector intelligence",color:"#FF6B35",count:null},{d:5,label:"Market Layer",desc:"Cross-industry connections",color:"#00ff88",count:null},{d:6,label:"Global Reach",desc:"Anyone in the world",color:"#ff5050",count:null}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",position:"relative"},children:(0,t.jsxs)("div",{style:{maxWidth:1e3,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:80,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#FF6B35",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Bridge Chains"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15,margin:0},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Six Degrees."})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #FF6B35, #FFD700)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Infinite Reach."})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",marginTop:16,maxWidth:560,margin:"16px auto 0"},children:"Every person on Earth is at most 6 connections away. Our chain system maps the exact path from you to anyone."})]}),(0,t.jsx)("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:0,flexWrap:"wrap"},children:r.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*n+.3}s`},children:[(0,t.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",width:120},children:[(0,t.jsxs)("div",{style:{width:64,height:64,borderRadius:"50%",background:`${e.color}20`,border:`2px solid ${e.color}`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:22,fontWeight:800,color:e.color,boxShadow:`0 0 24px ${e.color}30`,animation:i?`breathe 3s ease-in-out infinite ${.5*n}s`:"none",position:"relative"},children:["D",e.d,e.count&&(0,t.jsx)("span",{style:{position:"absolute",bottom:-8,fontSize:9,fontWeight:700,background:e.color,color:"#000",padding:"2px 6px",borderRadius:10},children:e.count.toLocaleString()})]}),(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:e.color,marginTop:16},children:e.label}),(0,t.jsx)("div",{style:{fontSize:10,color:"#555",marginTop:4,textAlign:"center"},children:e.desc})]}),n<5&&(0,t.jsx)("div",{style:{width:40,height:2,position:"relative",background:`linear-gradient(to right, ${e.color}60, ${r[n+1].color}60)`,opacity:+!!i,transition:`opacity 0.6s ease ${.1*n+.6}s`},children:(0,t.jsx)("div",{style:{position:"absolute",top:-2,width:6,height:6,borderRadius:"50%",background:e.color,animation:i?`travel-dot 2s ease-in-out infinite ${.3*n}s`:"none"}})})]},n))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",marginTop:40},children:"The counts are the sample network’s, whose people are all invented."})]})})}function g(){let[e,i]=n(),r=[{tier:"S",label:"Supreme",score:"7.5+",color:o.S,glow:"rgba(255,215,0,0.3)",people:"C-Suite, VPs, Founders",icon:"👑"},{tier:"A",label:"Ace",score:"5.5+",color:o.A,glow:"rgba(155,89,182,0.3)",people:"Directors, Senior Leaders",icon:"💎"},{tier:"B",label:"Builder",score:"4.0+",color:o.B,glow:"rgba(52,152,219,0.3)",people:"Managers, Senior ICs",icon:"🔷"},{tier:"C",label:"Connector",score:"2.5+",color:o.C,glow:"rgba(149,165,166,0.2)",people:"Associates, Specialists",icon:"🔸"},{tier:"D",label:"Developing",score:"<2.5",color:o.D,glow:"rgba(189,195,199,0.15)",people:"Entry Level, Students",icon:"🌱"}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",background:"linear-gradient(180deg, transparent, rgba(52,152,219,0.03), transparent)"},children:(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:64,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:o.A,letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Power Score"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800,lineHeight:1.15},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Every Connection,"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #FFD700, #9B59B6)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Ranked by Power"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",marginTop:16,maxWidth:500,margin:"16px auto 0"},children:"Seniority, company prestige, and circle proximity combine into one score."})]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:16},children:r.map((e,r)=>(0,t.jsxs)("div",{style:{padding:24,borderRadius:16,position:"relative",overflow:"hidden",background:"rgba(255,255,255,0.03)",border:`1px solid ${e.color}25`,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.08*r+.2}s`},children:[(0,t.jsx)("div",{style:{position:"absolute",top:-20,right:-20,width:100,height:100,borderRadius:"50%",background:`radial-gradient(circle, ${e.glow}, transparent)`,filter:"blur(20px)"}}),(0,t.jsx)("div",{style:{fontSize:28,marginBottom:8},children:e.icon}),(0,t.jsx)("div",{style:{fontSize:32,fontWeight:900,color:e.color,lineHeight:1,textShadow:`0 0 20px ${e.glow}`},children:e.tier}),(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff",marginTop:4},children:e.label}),(0,t.jsxs)("div",{style:{fontSize:11,color:"#555",marginTop:2},children:["Score: ",e.score]}),(0,t.jsx)("div",{style:{fontSize:10,color:"rgba(255,255,255,0.35)",marginTop:12,padding:"6px 10px",borderRadius:8,background:"rgba(255,255,255,0.04)"},children:e.people})]},r))}),(0,t.jsx)("p",{style:{textAlign:"center",fontSize:12,color:"#555",marginTop:24},children:"These are the fixed scale’s lines. By default tiers are graded on your own network’s curve: your top 3% are S, the next 12% A."})]})})}function x(){let[e,i]=n(),r=[{title:"Paths",subtitle:"Company Intelligence",desc:"Scan any company on LinkedIn and see every person mapped, scored, and organized by seniority.",color:"#00ff88",icon:"🏢",stat:"19 companies in the sample"},{title:"Outlink",subtitle:"Strategic Action Queue",desc:"Your curated list of high-value D2 connections to request. Grouped by bridge, filtered by tier, with batch-open for efficient networking.",color:"#FF6B35",icon:"🚀",stat:"474 recommendations in the sample"},{title:"XP System",subtitle:"Gamified Networking",desc:"Earn XP for every outreach sent and connection accepted. Higher tier connections = more points. Level up your networking game.",color:"#FFD700",icon:"⚡",stat:"S-Tier = 25 XP"},{title:"Bridge Clusters",subtitle:"Deep Network Mining",desc:"Select any D1 connection as a bridge. Automatically discover and score all their connections: your D2 layer.",color:"#9B59B6",icon:"🔗",stat:"14 bridges in the sample"}];return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px"},children:(0,t.jsxs)("div",{style:{maxWidth:1100,margin:"0 auto"},children:[(0,t.jsxs)("div",{style:{textAlign:"center",marginBottom:64,opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#00ff88",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"Full Arsenal"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Tools That"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #00ff88, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Make Moves"})]})]}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(260px, 1fr))",gap:20},children:r.map((e,r)=>(0,t.jsxs)("div",{style:{padding:28,borderRadius:20,position:"relative",overflow:"hidden",background:"rgba(255,255,255,0.02)",border:"1px solid rgba(255,255,255,0.06)",backdropFilter:"blur(12px)",opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.1*r+.2}s`},children:[(0,t.jsx)("div",{style:{position:"absolute",top:-30,left:-30,width:120,height:120,borderRadius:"50%",background:`radial-gradient(circle, ${e.color}10, transparent)`,filter:"blur(20px)"}}),(0,t.jsx)("div",{style:{fontSize:32,marginBottom:12},children:e.icon}),(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:e.color,letterSpacing:1,textTransform:"uppercase"},children:e.subtitle}),(0,t.jsx)("h3",{style:{fontSize:22,fontWeight:800,color:"#fff",margin:"6px 0 10px"},children:e.title}),(0,t.jsx)("p",{style:{fontSize:13,color:"rgba(255,255,255,0.4)",lineHeight:1.6,margin:0},children:e.desc}),(0,t.jsx)("div",{style:{marginTop:16,padding:"6px 12px",borderRadius:8,background:`${e.color}10`,display:"inline-block",fontSize:11,fontWeight:700,color:e.color},children:e.stat})]},r))})]})})}function h(){let[e,i]=n();return(0,t.jsx)("section",{ref:e,style:{padding:"100px 24px",background:"linear-gradient(180deg, transparent, rgba(155,89,182,0.03), transparent)"},children:(0,t.jsxs)("div",{style:{maxWidth:800,margin:"0 auto",textAlign:"center"},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#555",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"The Algorithm"}),(0,t.jsx)("h2",{style:{fontSize:44,fontWeight:800},children:(0,t.jsx)("span",{style:{background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Power Score Formula"})})]}),(0,t.jsxs)("div",{style:{marginTop:48,padding:40,borderRadius:20,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.08)",backdropFilter:"blur(24px)",opacity:+!!i,transform:i?"translateY(0) scale(1)":"translateY(30px) scale(0.95)",transition:"all 1s cubic-bezier(0.16,1,0.3,1) 0.2s"},children:[(0,t.jsx)("div",{style:{fontFamily:'"Geist Mono", monospace',fontSize:20,fontWeight:700,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",marginBottom:32},children:"P = T × (0.45 + 0.055 × C) + R + B"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:24},children:[{sym:"T",label:"Title",desc:"C-suite 10, VP 9, Director 7.5, Manager 6.5",note:"Multiplied by the company",color:o.S},{sym:"C",label:"Company",desc:"Well-known 7–10, else estimated from your network",note:"Weight 0.5 to 1.0",color:o.A},{sym:"R + B",label:"Reach & bridge",desc:"Investor, YC, an audience in the millions; a strong circle",note:"Up to +1.5 and +2",color:o.B}].map((e,r)=>(0,t.jsxs)("div",{style:{padding:16,borderRadius:12,background:`${e.color}08`,opacity:+!!i,transform:i?"translateY(0)":"translateY(20px)",transition:`all 0.8s cubic-bezier(0.16,1,0.3,1) ${.3+.1*r}s`},children:[(0,t.jsx)("div",{style:{fontSize:28,fontWeight:900,color:e.color},children:e.sym}),(0,t.jsx)("div",{style:{fontSize:13,fontWeight:700,color:"#fff",marginTop:4},children:e.label}),(0,t.jsx)("div",{style:{fontSize:10,color:"#555",marginTop:4},children:e.desc}),(0,t.jsx)("div",{style:{fontSize:10,color:e.color,fontWeight:700,marginTop:8},children:e.note})]},r))})]}),(0,t.jsx)("div",{style:{marginTop:32,display:"flex",justifyContent:"center",gap:8,flexWrap:"wrap",opacity:+!!i,transition:"opacity 1s ease 0.6s"},children:[{t:"S",min:7.5,color:o.S},{t:"A",min:5.5,color:o.A},{t:"B",min:4,color:o.B},{t:"C",min:2.5,color:o.C},{t:"D",min:0,color:o.D}].map((e,i)=>(0,t.jsxs)("div",{style:{padding:"8px 16px",borderRadius:10,background:`${e.color}12`,border:`1px solid ${e.color}30`,fontSize:12,fontWeight:700,color:e.color},children:[e.t,"-Tier: ",e.min,"+"]},i))})]})})}function f(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"100px 24px",position:"relative",overflow:"hidden"},children:[(0,t.jsx)("div",{style:{position:"absolute",inset:0,opacity:.15*!!i,transition:"opacity 2s ease"},children:Array.from({length:8}).map((e,i)=>(0,t.jsx)("div",{style:{position:"absolute",top:`${12+12*i}%`,left:0,right:0,height:1,background:`linear-gradient(to right, transparent, ${[o.S,o.A,o.B,"#fff"][i%4]}40, transparent)`,animation:`wave ${4+i}s ease-in-out infinite ${.3*i}s`}},i))}),(0,t.jsx)("div",{style:{maxWidth:700,margin:"0 auto",textAlign:"center",position:"relative",zIndex:2},children:(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0)":"translateY(40px)",transition:"all 1s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#ff5050",letterSpacing:3,textTransform:"uppercase",marginBottom:16},children:"The Theory"}),(0,t.jsxs)("h2",{style:{fontSize:44,fontWeight:800},children:[(0,t.jsx)("span",{style:{color:"#fff"},children:"Strings Connect"})," ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg, #ff5050, #FFD700)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Everything"})]}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",lineHeight:1.8,marginTop:24,maxWidth:560,margin:"24px auto 0"},children:"In string theory, fundamental particles are vibrating strings connected across dimensions. In social networks, people are nodes connected by invisible strings of trust, proximity, and shared experience."}),(0,t.jsx)("p",{style:{fontSize:17,color:"rgba(255,255,255,0.45)",lineHeight:1.8,marginTop:16,maxWidth:560,margin:"16px auto 0"},children:"Six degrees of separation isn’t just a theory. It’s the architecture of human connection. Every string vibrates with potential. Every bridge shortens the distance."}),(0,t.jsxs)("div",{style:{marginTop:48,padding:"24px 32px",borderRadius:16,background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.06)",fontStyle:"italic",color:"rgba(255,255,255,0.3)",fontSize:15,opacity:+!!i,transition:"opacity 1.5s ease 0.5s"},children:["“Everyone is connected to everyone else by six degrees or fewer. The question isn’t ",(0,t.jsx)("em",{children:"if"}),", it’s ",(0,t.jsx)("em",{children:"through whom"}),".”"]})]})})]})}function u(){let[e,i]=n();return(0,t.jsxs)("section",{ref:e,style:{padding:"100px 24px",textAlign:"center",position:"relative",overflow:"hidden"},children:[(0,t.jsx)("div",{style:{position:"absolute",inset:0,background:"radial-gradient(circle at 50% 80%, rgba(52,152,219,0.06) 0%, transparent 60%)"}}),(0,t.jsxs)("div",{style:{position:"relative",zIndex:2},children:[(0,t.jsxs)("div",{style:{opacity:+!!i,transform:i?"translateY(0) scale(1)":"translateY(40px) scale(0.95)",transition:"all 1.2s cubic-bezier(0.16,1,0.3,1)"},children:[(0,t.jsx)("h2",{style:{fontSize:"clamp(36px, 6vw, 64px)",fontWeight:800,lineHeight:1.1,background:a,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Map Your Universe"}),(0,t.jsx)("p",{style:{fontSize:18,color:"rgba(255,255,255,0.4)",marginTop:16,maxWidth:480,margin:"16px auto 0"},children:"Your network is your most valuable asset. Start seeing it for what it really is."}),(0,t.jsx)(r.default,{href:"/",style:{display:"inline-block",marginTop:40,padding:"16px 48px",borderRadius:14,fontSize:18,fontWeight:800,background:a,color:"#000",textDecoration:"none",boxShadow:"0 4px 32px rgba(255,215,0,0.3), 0 0 60px rgba(52,152,219,0.15)",animation:i?"cta-glow 3s ease-in-out infinite":"none"},children:"Enter the Galaxy"})]}),(0,t.jsxs)("div",{style:{marginTop:80,paddingTop:40,borderTop:"1px solid rgba(255,255,255,0.05)",display:"flex",justifyContent:"center",gap:32,flexWrap:"wrap",opacity:.4*!!i,transition:"opacity 1.5s ease 0.5s"},children:[(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"Built by Blake Burford"}),(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"Open source · MIT"}),(0,t.jsx)("span",{style:{fontSize:12,color:"#444"},children:"2026"})]})]})]})}function y(e,t,i){let r=43758.5453*Math.sin((e+1)*12.9898+(t+1)*78.233+37.719*i);return r-Math.floor(r)}e.s(["default",0,function(){return(0,t.jsxs)("div",{style:{background:"#0a0a1a",color:"#fff",overflowX:"hidden"},children:[(0,t.jsx)("style",{children:`
2
+ @keyframes pulse-dot {
3
+ 0%, 100% { opacity: 1; transform: scale(1); }
4
+ 50% { opacity: 0.4; transform: scale(0.6); }
5
+ }
6
+ @keyframes scroll-line {
7
+ 0% { opacity: 0.3; transform: scaleY(1); }
8
+ 50% { opacity: 0.8; transform: scaleY(1.3); }
9
+ 100% { opacity: 0.3; transform: scaleY(1); }
10
+ }
11
+ @keyframes breathe {
12
+ 0%, 100% { transform: scale(1); opacity: 0.7; }
13
+ 50% { transform: scale(1.15); opacity: 1; }
14
+ }
15
+ @keyframes spin-ring {
16
+ from { transform: translate(-50%,-50%) rotate(0deg); }
17
+ to { transform: translate(-50%,-50%) rotate(360deg); }
18
+ }
19
+ @keyframes travel-dot {
20
+ 0% { left: 0; }
21
+ 50% { left: calc(100% - 6px); }
22
+ 100% { left: 0; }
23
+ }
24
+ @keyframes wave {
25
+ 0%, 100% { transform: translateY(0) scaleY(1); }
26
+ 50% { transform: translateY(8px) scaleY(2); }
27
+ }
28
+ @keyframes cta-glow {
29
+ 0%, 100% { box-shadow: 0 4px 32px rgba(255,215,0,0.3), 0 0 60px rgba(52,152,219,0.15); }
30
+ 50% { box-shadow: 0 4px 48px rgba(255,215,0,0.5), 0 0 80px rgba(52,152,219,0.25); }
31
+ }
32
+ html { scroll-behavior: smooth; }
33
+ body { overflow-x: hidden; overflow-y: auto !important; }
34
+
35
+ @media (max-width: 900px) {
36
+ .galaxy-grid { grid-template-columns: 1fr !important; text-align: center; }
37
+ .galaxy-rings { width: 340px !important; height: 340px !important; }
38
+ }
39
+ @media (max-width: 768px) {
40
+ section { padding: 64px 16px !important; }
41
+ h2 { font-size: 28px !important; }
42
+ .chain-row { flex-direction: column !important; }
43
+ }
44
+ `}),(0,t.jsx)(s,{}),(0,t.jsx)(c,{}),(0,t.jsx)(d,{}),(0,t.jsx)(p,{}),(0,t.jsx)(g,{}),(0,t.jsx)(x,{}),(0,t.jsx)(h,{}),(0,t.jsx)(f,{}),(0,t.jsx)(u,{})]})}],10706)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68074,e=>{"use strict";var t=e.i(43476),n=e.i(71645),r=e.i(7837),i=e.i(65084),o=e.i(22016),s=e.i(54322);let l={background:"rgba(var(--sd-ink, 255, 255, 255), 0.03)",border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.08)",borderRadius:16,padding:24};function a({onRemoved:e}){let[i,o]=(0,n.useState)(!1),[s,d]=(0,n.useState)("");async function c(){if(!window.confirm(r.REMOVE_CSV_QUESTION))return;o(!0),d("");let t=await (0,r.closeCsvNetwork)("csv");o(!1),t.ok?e():d(t.error)}return(0,t.jsxs)("div",{style:{...l,padding:"14px 18px",marginBottom:16,display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,t.jsx)("span",{style:{flex:"1 1 260px",color:"rgba(var(--sd-ink, 255, 255, 255), 0.65)",fontSize:14,lineHeight:1.6},children:"Your map shows the network you scanned. A CSV import is still kept on this computer."}),(0,t.jsx)("button",{onClick:c,disabled:i,style:{padding:"8px 14px",borderRadius:8,cursor:i?"default":"pointer",font:"inherit",fontSize:13,fontWeight:700,border:"1px solid rgba(var(--sd-ink, 255, 255, 255), 0.2)",background:"transparent",color:"var(--sd-fg-1, #fff)"},children:i?"Removing…":"Remove it"}),s&&(0,t.jsx)("div",{style:{width:"100%",color:"#ff8080",fontSize:13,lineHeight:1.6},children:s})]})}let d={minHeight:"100vh",background:"var(--sd-page)",color:"var(--sd-fg-1, #fff)",padding:"56px 24px",fontFamily:"var(--sd-font)",display:"flex",justifyContent:"center"},c={background:"rgba(var(--sd-ink, 255, 255, 255), 0.07)",padding:"2px 6px",borderRadius:5,fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},g={display:"block",textAlign:"center",padding:"15px 20px",borderRadius:12,background:"linear-gradient(135deg,#FFD700,#9B59B6)",color:"#0a0a1a",fontWeight:800,fontSize:15,textDecoration:"none"};e.s(["default",0,function(){let[e,h]=(0,n.useState)(!1),[f,p]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),[y,v]=(0,n.useState)(!1),[m,S]=(0,n.useState)(null),k=(0,n.useRef)(null);async function j(e){v(!0),p("");try{let{connections:t,skipped:n}=(0,r.parseConnectionsCsv)(e),o=await (0,r.saveCsvNetwork)(t);if(!o.ok){p(o.error),v(!1);return}let s=await (0,r.keptBehindScan)();S(s),s||(0,i.setUser)(r.CSV_USER.id,r.CSV_USER.name);let l={};t.forEach(e=>{l[e.tier]=(l[e.tier]||0)+1}),x({count:t.length,skipped:n,tiers:l})}catch(e){p(e instanceof r.ConnectionsCsvError?e.message:"Could not read that file. Make sure it is Connections.csv from your LinkedIn export.")}v(!1)}function b(e){if(!e)return;let t=new FileReader;t.onload=e=>j(String(e.target.result||"")),t.onerror=()=>p("Could not read that file."),t.readAsText(e)}return((0,n.useEffect)(()=>{let e=!1;return(0,r.keptBehindScan)().then(t=>{e||S(t)}),()=>{e=!0}},[]),u)?(0,t.jsx)("div",{style:d,children:(0,t.jsxs)("div",{style:{maxWidth:560,width:"100%"},children:[(0,t.jsx)("div",{style:{fontSize:13,color:"#2ecc71",fontWeight:700,letterSpacing:2,marginBottom:10},children:"IMPORTED"}),(0,t.jsxs)("h1",{style:{fontSize:38,fontWeight:800,margin:"0 0 8px"},children:[u.count.toLocaleString()," connections mapped"]}),(0,t.jsxs)("p",{style:{color:"rgba(var(--sd-ink, 255, 255, 255), 0.45)",margin:"0 0 28px",lineHeight:1.6},children:["Scored on seniority and company, sorted into tiers.",u.skipped>0&&` ${u.skipped} row${1===u.skipped?"":"s"} skipped (blank or duplicate).`]}),(0,t.jsxs)("div",{style:{...l,marginBottom:20},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-fg-4, #666)",letterSpacing:2,marginBottom:14},children:"YOUR TIERS"}),["S","A","B","C","D"].map(e=>{let n=u.tiers[e]||0,r=u.count?n/u.count*100:0;return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:8},children:[(0,t.jsx)("span",{style:{width:16,color:s.TIER_COLORS[e],fontWeight:800},children:e}),(0,t.jsx)("div",{style:{flex:1,height:8,borderRadius:4,background:"rgba(var(--sd-ink, 255, 255, 255), 0.05)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${r}%`,height:"100%",background:s.TIER_COLORS[e],borderRadius:4}})}),(0,t.jsx)("span",{style:{width:46,textAlign:"right",color:"rgba(var(--sd-ink, 255, 255, 255), 0.6)",fontSize:13},children:n})]},e)})]}),m&&(0,t.jsx)(a,{onRemoved:()=>{S(null),x(null)}}),(0,t.jsx)(o.default,{href:"/",style:g,children:"See your galaxy →"}),!m&&(0,t.jsx)("p",{style:{color:"var(--sd-fg-5, #555)",fontSize:12,marginTop:18,lineHeight:1.6},children:"Kept on this computer, in your data folder, so it’s still here after you close the window. Nothing was sent anywhere. To remove it, click × next to Your CSV at the top of the map."})]})}):(0,t.jsx)("div",{style:d,children:(0,t.jsxs)("div",{style:{maxWidth:620,width:"100%"},children:[(0,t.jsxs)("h1",{style:{fontSize:40,fontWeight:800,margin:"0 0 10px",letterSpacing:-1},children:["Map ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg,#FFD700,#9B59B6,#3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"your"})," network"]}),(0,t.jsxs)("p",{style:{color:"rgba(var(--sd-ink, 255, 255, 255), 0.45)",margin:"0 0 30px",lineHeight:1.6,fontSize:16},children:["Drop LinkedIn’s official ",(0,t.jsx)("code",{style:c,children:"Connections.csv"})," below. It is read on this computer, scored, drawn as a galaxy, and kept in your data folder. No account, and nothing leaves this computer."]}),m&&(0,t.jsx)(a,{onRemoved:()=>S(null)}),(0,t.jsxs)("div",{onDragOver:e=>{e.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:e=>{e.preventDefault(),h(!1),b(e.dataTransfer.files?.[0])},onClick:()=>k.current?.click(),style:{...l,padding:"48px 24px",textAlign:"center",cursor:"pointer",marginBottom:16,borderStyle:"dashed",borderColor:e?"#FFD700":"rgba(var(--sd-ink, 255, 255, 255), 0.12)",background:e?"rgba(255,215,0,0.05)":l.background,transition:"all 0.15s ease"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:10},children:"📄"}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:17,marginBottom:6},children:y?"Reading…":"Drop Connections.csv here"}),(0,t.jsx)("div",{style:{color:"var(--sd-fg-4, #666)",fontSize:13},children:"or click to choose the file"}),(0,t.jsx)("input",{ref:k,type:"file",accept:".csv,text/csv",style:{display:"none"},onChange:e=>b(e.target.files?.[0])})]}),f&&(0,t.jsx)("div",{style:{background:"rgba(255,59,59,0.08)",border:"1px solid rgba(255,59,59,0.25)",borderRadius:12,padding:16,color:"#ff8080",fontSize:14,lineHeight:1.6,marginBottom:16},children:f}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-fg-4, #666)",letterSpacing:2,marginBottom:14},children:"HOW TO GET THE FILE"}),(0,t.jsxs)("ol",{style:{margin:0,paddingLeft:20,color:"rgba(var(--sd-ink, 255, 255, 255), 0.6)",fontSize:14,lineHeight:2},children:[(0,t.jsxs)("li",{children:["LinkedIn → ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Settings & Privacy → Data privacy → Get a copy of your data"})]}),(0,t.jsxs)("li",{children:["Pick ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Connections"})," and request the archive"]}),(0,t.jsx)("li",{children:"LinkedIn emails a download link, usually within ~10 minutes"}),(0,t.jsxs)("li",{children:["Unzip it and drop ",(0,t.jsx)("code",{style:c,children:"Connections.csv"})," above"]})]})]}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#2ecc71",letterSpacing:2,marginBottom:10},children:"PRIVATE BY DESIGN"}),(0,t.jsxs)("p",{style:{margin:0,color:"rgba(var(--sd-ink, 255, 255, 255), 0.55)",fontSize:14,lineHeight:1.7},children:["Your file never leaves this computer. It is read here, and only what the map needs (names, positions, companies, profile links and when you connected) is kept, in your data folder, apart from any network you scan. The ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Email Address column is ignored entirely"}),"."]})]}),(0,t.jsxs)("div",{style:{...l,borderColor:"rgba(255,215,0,0.15)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"var(--sd-gold, #FFD700)",letterSpacing:2,marginBottom:10},children:"HONEST CAVEAT"}),(0,t.jsxs)("p",{style:{margin:"0 0 12px",color:"rgba(var(--sd-ink, 255, 255, 255), 0.55)",fontSize:14,lineHeight:1.7},children:["LinkedIn’s export contains no profile photos, so everyone renders as initials on a tier-colored circle. It also only covers people you are ",(0,t.jsx)("em",{children:"already"})," connected to, so ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Degrees"})," and the ",(0,t.jsx)("strong",{style:{color:"var(--sd-fg-1, #fff)"},children:"Outlink queue"})," stay empty, because those map the people you haven’t met yet."]}),(0,t.jsxs)("p",{style:{margin:0,color:"var(--sd-fg-4, #666)",fontSize:13,lineHeight:1.7},children:["Want those? Run the local scanner: it captures 2nd-degree circles and real photos."," ",(0,t.jsx)(o.default,{href:"/setup",style:{color:"var(--sd-blue, #3498DB)",textDecoration:"none"},children:"See setup →"})]})]}),(0,t.jsx)("div",{style:{textAlign:"center",marginTop:26},children:(0,t.jsx)(o.default,{href:"/",style:{color:"var(--sd-fg-5, #555)",fontSize:13,textDecoration:"none"},children:"← Back"})})]})})}])}]);