@tokenoftrust/storefront-runner 0.1.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 (337) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +40 -0
  3. package/apps/storefront/.dev.vars.example +41 -0
  4. package/apps/storefront/.env.example +24 -0
  5. package/apps/storefront/astro.config.mjs +245 -0
  6. package/apps/storefront/env.d.ts +155 -0
  7. package/apps/storefront/lib/ensure-preview-reconcile-secret.sh +31 -0
  8. package/apps/storefront/lib/resolve-cf-token.sh +48 -0
  9. package/apps/storefront/lib/resolve-tot-credentials.sh +69 -0
  10. package/apps/storefront/migrations/0000_baseline.sql +54 -0
  11. package/apps/storefront/migrations/0001_products_fts.sql +9 -0
  12. package/apps/storefront/migrations/README.md +54 -0
  13. package/apps/storefront/migrations/meta/0000_snapshot.json +347 -0
  14. package/apps/storefront/migrations/meta/0001_snapshot.json +347 -0
  15. package/apps/storefront/migrations/meta/_journal.json +20 -0
  16. package/apps/storefront/package.json +41 -0
  17. package/apps/storefront/public/brand/northwind-logo-dark.svg +4 -0
  18. package/apps/storefront/public/brand/northwind-logo-light.svg +4 -0
  19. package/apps/storefront/public/brand/northwind-og.svg +13 -0
  20. package/apps/storefront/public/favicon.svg +5 -0
  21. package/apps/storefront/public/js/dashboard-team.js +147 -0
  22. package/apps/storefront/public/js/dashboard-vendor-search.js +115 -0
  23. package/apps/storefront/src/components/Badge.astro +34 -0
  24. package/apps/storefront/src/components/Breadcrumbs.astro +45 -0
  25. package/apps/storefront/src/components/CollectionCard.astro +56 -0
  26. package/apps/storefront/src/components/EmptyState.astro +35 -0
  27. package/apps/storefront/src/components/Img.astro +68 -0
  28. package/apps/storefront/src/components/ProductCard.astro +228 -0
  29. package/apps/storefront/src/components/Section.astro +39 -0
  30. package/apps/storefront/src/components/Seo.astro +70 -0
  31. package/apps/storefront/src/components/WidgetFrame.astro +34 -0
  32. package/apps/storefront/src/components/auth/AuthBadge.astro +44 -0
  33. package/apps/storefront/src/components/chrome/AnnouncementBar.astro +108 -0
  34. package/apps/storefront/src/components/chrome/MegaMenu.astro +26 -0
  35. package/apps/storefront/src/components/chrome/NavDropdown.astro +116 -0
  36. package/apps/storefront/src/components/chrome/SiteFooter.astro +181 -0
  37. package/apps/storefront/src/components/chrome/SiteHeader.astro +181 -0
  38. package/apps/storefront/src/components/chrome/UtilityNav.astro +79 -0
  39. package/apps/storefront/src/components/commerce/FoxyLoader.astro +23 -0
  40. package/apps/storefront/src/components/commerce/PriceDisplay.astro +91 -0
  41. package/apps/storefront/src/components/commerce/ProductCarousel.astro +197 -0
  42. package/apps/storefront/src/components/commerce/ProductGrid.astro +75 -0
  43. package/apps/storefront/src/components/commerce/RatingStars.astro +58 -0
  44. package/apps/storefront/src/components/compliance/NicotineWarning.astro +33 -0
  45. package/apps/storefront/src/components/home/Hero.astro +164 -0
  46. package/apps/storefront/src/components/islands/AgeGate.tsx +105 -0
  47. package/apps/storefront/src/components/islands/ImageGallery.tsx +237 -0
  48. package/apps/storefront/src/components/islands/IsolatedAgeGate.tsx +73 -0
  49. package/apps/storefront/src/components/islands/MobileNav.tsx +239 -0
  50. package/apps/storefront/src/components/islands/QuickView.tsx +138 -0
  51. package/apps/storefront/src/components/islands/RecentlyViewed.tsx +122 -0
  52. package/apps/storefront/src/components/islands/SavedList.tsx +99 -0
  53. package/apps/storefront/src/components/islands/SearchTypeahead.tsx +248 -0
  54. package/apps/storefront/src/components/islands/VariantSelector.tsx +378 -0
  55. package/apps/storefront/src/components/marketing/CardGrid.astro +72 -0
  56. package/apps/storefront/src/components/marketing/CodeSample.astro +20 -0
  57. package/apps/storefront/src/components/marketing/CtaBand.astro +24 -0
  58. package/apps/storefront/src/components/marketing/Faq.astro +37 -0
  59. package/apps/storefront/src/components/marketing/Integrations.astro +63 -0
  60. package/apps/storefront/src/components/marketing/MarketingBlocks.astro +53 -0
  61. package/apps/storefront/src/components/marketing/MarketingCtas.astro +48 -0
  62. package/apps/storefront/src/components/marketing/MarketingHero.astro +72 -0
  63. package/apps/storefront/src/components/marketing/ProofStrip.astro +37 -0
  64. package/apps/storefront/src/components/marketing/SplitCompare.astro +53 -0
  65. package/apps/storefront/src/components/marketing/Steps.astro +36 -0
  66. package/apps/storefront/src/components/marketing/Testimonials.astro +38 -0
  67. package/apps/storefront/src/components/marketing/TrustBar.astro +22 -0
  68. package/apps/storefront/src/components/nav/Footer.astro +148 -0
  69. package/apps/storefront/src/components/nav/Header.astro +190 -0
  70. package/apps/storefront/src/components/plp/ActiveFilters.astro +79 -0
  71. package/apps/storefront/src/components/plp/FacetSidebar.astro +146 -0
  72. package/apps/storefront/src/components/plp/Pagination.astro +99 -0
  73. package/apps/storefront/src/components/plp/SortSelect.astro +64 -0
  74. package/apps/storefront/src/config/devTenants.ts +16 -0
  75. package/apps/storefront/src/config/kvTenantResolver.ts +87 -0
  76. package/apps/storefront/src/config/resolver.ts +46 -0
  77. package/apps/storefront/src/config/tenants.ts +193 -0
  78. package/apps/storefront/src/layouts/Layout.astro +303 -0
  79. package/apps/storefront/src/lib/analytics/index.ts +47 -0
  80. package/apps/storefront/src/lib/auth/brokerAssertion.ts +136 -0
  81. package/apps/storefront/src/lib/auth/devAuth.ts +90 -0
  82. package/apps/storefront/src/lib/auth/gatePage.ts +81 -0
  83. package/apps/storefront/src/lib/auth/identityToken.ts +341 -0
  84. package/apps/storefront/src/lib/auth/loginGate.ts +107 -0
  85. package/apps/storefront/src/lib/auth/route.ts +146 -0
  86. package/apps/storefront/src/lib/auth/session.ts +203 -0
  87. package/apps/storefront/src/lib/auth/totAccessClient.ts +503 -0
  88. package/apps/storefront/src/lib/basePath.ts +41 -0
  89. package/apps/storefront/src/lib/cfImage.ts +55 -0
  90. package/apps/storefront/src/lib/chrome/model.ts +65 -0
  91. package/apps/storefront/src/lib/colors.ts +97 -0
  92. package/apps/storefront/src/lib/content-edit/client.ts +230 -0
  93. package/apps/storefront/src/lib/content-edit/index.ts +14 -0
  94. package/apps/storefront/src/lib/content-edit/route.ts +25 -0
  95. package/apps/storefront/src/lib/content-edit/types.ts +19 -0
  96. package/apps/storefront/src/lib/cspStaticHashes.ts +24 -0
  97. package/apps/storefront/src/lib/d1/catalog.ts +289 -0
  98. package/apps/storefront/src/lib/dashboard/staffAdmission.ts +43 -0
  99. package/apps/storefront/src/lib/dashboard/staffVendorAccess.ts +449 -0
  100. package/apps/storefront/src/lib/dashboard/tenantSelection.ts +136 -0
  101. package/apps/storefront/src/lib/dashboard/vendorQuery.ts +61 -0
  102. package/apps/storefront/src/lib/demoGate.ts +113 -0
  103. package/apps/storefront/src/lib/dev/ai-widget-client.js +127 -0
  104. package/apps/storefront/src/lib/dev/cliSignInCode.ts +132 -0
  105. package/apps/storefront/src/lib/diag/redact.ts +20 -0
  106. package/apps/storefront/src/lib/edgeCache.ts +128 -0
  107. package/apps/storefront/src/lib/email/magicLinkInviteEmail.ts +62 -0
  108. package/apps/storefront/src/lib/env.ts +60 -0
  109. package/apps/storefront/src/lib/fixtures/sampleProducts.ts +130 -0
  110. package/apps/storefront/src/lib/format.ts +29 -0
  111. package/apps/storefront/src/lib/foxyCommerce.ts +49 -0
  112. package/apps/storefront/src/lib/imageAttrs.ts +55 -0
  113. package/apps/storefront/src/lib/jsonld.ts +136 -0
  114. package/apps/storefront/src/lib/maintenance.ts +71 -0
  115. package/apps/storefront/src/lib/memoryKv.ts +32 -0
  116. package/apps/storefront/src/lib/messaging/messagesClient.ts +143 -0
  117. package/apps/storefront/src/lib/placeholder.ts +99 -0
  118. package/apps/storefront/src/lib/previewReload.ts +125 -0
  119. package/apps/storefront/src/lib/rawMarketingHtml.ts +133 -0
  120. package/apps/storefront/src/lib/search/index.ts +74 -0
  121. package/apps/storefront/src/lib/sections.ts +129 -0
  122. package/apps/storefront/src/lib/securityHeaders.ts +31 -0
  123. package/apps/storefront/src/lib/storyblok/content-model.ts +289 -0
  124. package/apps/storefront/src/lib/storyblok/provider.ts +524 -0
  125. package/apps/storefront/src/lib/tenantRouting.ts +91 -0
  126. package/apps/storefront/src/lib/tot/ToTClient.ts +177 -0
  127. package/apps/storefront/src/lib/tot/d1Client.ts +62 -0
  128. package/apps/storefront/src/lib/tot/query.ts +187 -0
  129. package/apps/storefront/src/lib/tot/totClientInterface.ts +30 -0
  130. package/apps/storefront/src/lib/url.ts +119 -0
  131. package/apps/storefront/src/lib/wishlist.ts +63 -0
  132. package/apps/storefront/src/middleware/index.ts +413 -0
  133. package/apps/storefront/src/pages/404.astro +61 -0
  134. package/apps/storefront/src/pages/[...slug].astro +90 -0
  135. package/apps/storefront/src/pages/api/auth/logout.ts +21 -0
  136. package/apps/storefront/src/pages/api/auth/magic-exchange.ts +107 -0
  137. package/apps/storefront/src/pages/api/auth/send.ts +85 -0
  138. package/apps/storefront/src/pages/api/auth/verify.ts +135 -0
  139. package/apps/storefront/src/pages/api/cache-purge.ts +44 -0
  140. package/apps/storefront/src/pages/api/content-edit/ai-edit.ts +64 -0
  141. package/apps/storefront/src/pages/api/csp-report.ts +25 -0
  142. package/apps/storefront/src/pages/api/dashboard/enter-vendor.ts +124 -0
  143. package/apps/storefront/src/pages/api/dashboard/vendor-search.ts +120 -0
  144. package/apps/storefront/src/pages/api/dev/cli-signin-code.ts +44 -0
  145. package/apps/storefront/src/pages/api/newsletter.ts +104 -0
  146. package/apps/storefront/src/pages/api/request-access.ts +172 -0
  147. package/apps/storefront/src/pages/auth/login.astro +149 -0
  148. package/apps/storefront/src/pages/auth/magic.astro +105 -0
  149. package/apps/storefront/src/pages/capabilities.astro +292 -0
  150. package/apps/storefront/src/pages/collections/[handle].astro +154 -0
  151. package/apps/storefront/src/pages/collections/index.astro +59 -0
  152. package/apps/storefront/src/pages/dashboard/[appDomain]/index.astro +100 -0
  153. package/apps/storefront/src/pages/dashboard/[appDomain]/team.astro +154 -0
  154. package/apps/storefront/src/pages/dashboard/index.astro +160 -0
  155. package/apps/storefront/src/pages/dev.astro +653 -0
  156. package/apps/storefront/src/pages/index.astro +290 -0
  157. package/apps/storefront/src/pages/llms.txt.ts +92 -0
  158. package/apps/storefront/src/pages/products/[handle].astro +443 -0
  159. package/apps/storefront/src/pages/robots.txt.ts +24 -0
  160. package/apps/storefront/src/pages/saved.astro +35 -0
  161. package/apps/storefront/src/pages/search.astro +150 -0
  162. package/apps/storefront/src/pages/sitemap.xml.ts +78 -0
  163. package/apps/storefront/src/pages/style-guide/[tenant]/[theme].astro +646 -0
  164. package/apps/storefront/src/pages/style-guide/[tenant]/index.astro +85 -0
  165. package/apps/storefront/src/pages/style-guide/index.astro +94 -0
  166. package/apps/storefront/src/pages/tenants/[id]/[...path].ts +57 -0
  167. package/apps/storefront/src/styles/global.css +277 -0
  168. package/apps/storefront/src/themes/reference.ts +61 -0
  169. package/apps/storefront/src/themes/schema.ts +111 -0
  170. package/apps/storefront/src/themes/tenants/index.ts +51 -0
  171. package/apps/storefront/tsconfig.json +16 -0
  172. package/apps/storefront/vitest.config.ts +22 -0
  173. package/apps/storefront/wrangler.toml +175 -0
  174. package/package.json +23 -0
  175. package/packages/public-runtime/LICENSE +58 -0
  176. package/packages/public-runtime/package.json +22 -0
  177. package/packages/public-runtime/src/binary-path.ts +68 -0
  178. package/packages/public-runtime/src/capabilities.ts +89 -0
  179. package/packages/public-runtime/src/catalog-api.ts +81 -0
  180. package/packages/public-runtime/src/catalog-d1.ts +192 -0
  181. package/packages/public-runtime/src/csp.ts +109 -0
  182. package/packages/public-runtime/src/customization-preview.ts +197 -0
  183. package/packages/public-runtime/src/customization-reconcile.ts +63 -0
  184. package/packages/public-runtime/src/customization-runtime.ts +157 -0
  185. package/packages/public-runtime/src/customization-scripts.ts +64 -0
  186. package/packages/public-runtime/src/customization-versioning.ts +95 -0
  187. package/packages/public-runtime/src/foxy.ts +184 -0
  188. package/packages/public-runtime/src/index.ts +30 -0
  189. package/packages/public-runtime/src/product.ts +159 -0
  190. package/packages/public-runtime/src/search.ts +45 -0
  191. package/packages/public-runtime/src/tenant-assets.ts +444 -0
  192. package/packages/public-runtime/src/tenant.ts +243 -0
  193. package/packages/public-runtime/tsconfig.json +8 -0
  194. package/packages/public-runtime/vitest.config.ts +8 -0
  195. package/pnpm-workspace.yaml +7 -0
  196. package/scripts/build/copy-tenant-assets.mjs +69 -0
  197. package/scripts/tot-dev.mjs +439 -0
  198. package/tenants/bigdvapor/content/blog.json +52 -0
  199. package/tenants/bigdvapor/content/chrome.html +149 -0
  200. package/tenants/bigdvapor/content/chrome.json +47 -0
  201. package/tenants/bigdvapor/content/home.html +463 -0
  202. package/tenants/bigdvapor/content/home.json +73 -0
  203. package/tenants/bigdvapor/content/pages/about.json +5 -0
  204. package/tenants/bigdvapor/content/pages/privacy.json +6 -0
  205. package/tenants/bigdvapor/content/pages/shipping-returns.json +6 -0
  206. package/tenants/bigdvapor/content/pages-html/blogs/news.html +86 -0
  207. package/tenants/bigdvapor/content/pages-html/pages/about-us.html +106 -0
  208. package/tenants/bigdvapor/content/pages-html/pages/contact-us.html +61 -0
  209. package/tenants/bigdvapor/content/pages-html/pages/privacy-policy.html +72 -0
  210. package/tenants/bigdvapor/content/pages-html/pages/shipping-returns.html +172 -0
  211. package/tenants/bigdvapor/content/themes/bigd-navy.json +109 -0
  212. package/tenants/bigdvapor/public/img/brands/adjust-vape-disposable.png +0 -0
  213. package/tenants/bigdvapor/public/img/brands/again-vape-disposable.png +0 -0
  214. package/tenants/bigdvapor/public/img/brands/al-fakher-vape-disposable.png +0 -0
  215. package/tenants/bigdvapor/public/img/brands/arro-vape-disposable.png +0 -0
  216. package/tenants/bigdvapor/public/img/brands/cookies-vape-disposable.png +0 -0
  217. package/tenants/bigdvapor/public/img/brands/core-vape-disposable.png +0 -0
  218. package/tenants/bigdvapor/public/img/brands/cyclone-vape-disposable.png +0 -0
  219. package/tenants/bigdvapor/public/img/brands/dinner-lady-vape-disposable.png +0 -0
  220. package/tenants/bigdvapor/public/img/brands/extre-bar-vape-disposable.png +0 -0
  221. package/tenants/bigdvapor/public/img/brands/fifty-bar-vape-disposable.jpg +0 -0
  222. package/tenants/bigdvapor/public/img/brands/firerose-vape-disposable.jpg +0 -0
  223. package/tenants/bigdvapor/public/img/brands/flavor-beast-vape-disposable.jpg +0 -0
  224. package/tenants/bigdvapor/public/img/brands/foger-vape-disposable.png +0 -0
  225. package/tenants/bigdvapor/public/img/brands/kk-energy-vape-disposable.png +0 -0
  226. package/tenants/bigdvapor/public/img/brands/kumi-vape-disposable.png +0 -0
  227. package/tenants/bigdvapor/public/img/brands/lost-vape-dispoable.png +0 -0
  228. package/tenants/bigdvapor/public/img/brands/melo-labs-vape-disposable.png +0 -0
  229. package/tenants/bigdvapor/public/img/brands/mixo-vape-disposable.webp +0 -0
  230. package/tenants/bigdvapor/public/img/brands/one-tank-vape-disposable.jpg +0 -0
  231. package/tenants/bigdvapor/public/img/brands/oxbar-vape-disposable.webp +0 -0
  232. package/tenants/bigdvapor/public/img/brands/pillow-talk-vape-disposable.jpg +0 -0
  233. package/tenants/bigdvapor/public/img/brands/pod-king-vape-disposable.jpg +0 -0
  234. package/tenants/bigdvapor/public/img/brands/raz-vape-disposable.png +0 -0
  235. package/tenants/bigdvapor/public/img/hero-texas.jpg +0 -0
  236. package/tenants/bigdvapor/public/img/og.jpg +0 -0
  237. package/tenants/bigdvapor/public/img/pages/AdobeStock_202106312_web.jpg +0 -0
  238. package/tenants/bigdvapor/public/img/pages/CREW_web.jpg +0 -0
  239. package/tenants/bigdvapor/public/img/pages/Hero-Image.jpg +0 -0
  240. package/tenants/bigdvapor/public/img/tiles/adjust.png +0 -0
  241. package/tenants/bigdvapor/public/img/tiles/again.png +0 -0
  242. package/tenants/bigdvapor/public/img/tiles/al-fakher.png +0 -0
  243. package/tenants/bigdvapor/public/img/tiles/arro.png +0 -0
  244. package/tenants/bigdvapor/public/img/tiles/cookies.png +0 -0
  245. package/tenants/bigdvapor/public/img/tiles/core.png +0 -0
  246. package/tenants/bigdvapor/public/img/tiles/cyclone.png +0 -0
  247. package/tenants/bigdvapor/public/img/tiles/disposables.svg +23 -0
  248. package/tenants/bigdvapor/public/logo-wordmark.png +0 -0
  249. package/tenants/bigdvapor/public/pages/home.css +118 -0
  250. package/tenants/bigdvapor/public/pages/mkt.css +185 -0
  251. package/tenants/bigdvapor/public/pages/page.css +148 -0
  252. package/tenants/bigdvapor/public/themes/bigd-navy.css +73 -0
  253. package/tenants/bigdvapor/theme.json +12 -0
  254. package/tenants/giantvapes/content/chrome.html +152 -0
  255. package/tenants/giantvapes/content/chrome.json +94 -0
  256. package/tenants/giantvapes/content/home.html +194 -0
  257. package/tenants/giantvapes/content/home.json +50 -0
  258. package/tenants/giantvapes/content/pages/about.json +10 -0
  259. package/tenants/giantvapes/content/pages/privacy.json +6 -0
  260. package/tenants/giantvapes/content/pages/shipping-returns.json +6 -0
  261. package/tenants/giantvapes/content/pages-html/blogs/news.html +68 -0
  262. package/tenants/giantvapes/content/pages-html/pages/about-us.html +95 -0
  263. package/tenants/giantvapes/content/pages-html/pages/contact-us.html +68 -0
  264. package/tenants/giantvapes/content/pages-html/pages/privacy-policy.html +65 -0
  265. package/tenants/giantvapes/content/pages-html/pages/shipping-returns.html +77 -0
  266. package/tenants/giantvapes/content/themes/giant-navy.json +73 -0
  267. package/tenants/giantvapes/public/img/hero-suicide-bunny.jpg +0 -0
  268. package/tenants/giantvapes/public/img/hero.webp +0 -0
  269. package/tenants/giantvapes/public/img/og.jpg +0 -0
  270. package/tenants/giantvapes/public/logo-wordmark.png +0 -0
  271. package/tenants/giantvapes/public/pages/home.css +120 -0
  272. package/tenants/giantvapes/public/pages/mkt.css +185 -0
  273. package/tenants/giantvapes/public/pages/page.css +155 -0
  274. package/tenants/giantvapes/public/themes/giant-navy.css +76 -0
  275. package/tenants/giantvapes/theme.json +39 -0
  276. package/tenants/home/content/chrome.json +11 -0
  277. package/tenants/home/content/home.html +304 -0
  278. package/tenants/home/content/home.json +13 -0
  279. package/tenants/home/public/js/storefront.js +210 -0
  280. package/tenants/home/public/logo-wordmark.png +0 -0
  281. package/tenants/home/public/pages/storefront.css +212 -0
  282. package/tenants/home/theme.json +6 -0
  283. package/tenants/tokenoftrust/.tot/config.json +9 -0
  284. package/tenants/tokenoftrust/content/chrome.json +55 -0
  285. package/tenants/tokenoftrust/content/home.html +723 -0
  286. package/tenants/tokenoftrust/content/home.json +233 -0
  287. package/tenants/tokenoftrust/content/pages-html/careers.html +231 -0
  288. package/tenants/tokenoftrust/content/pages-html/company.html +275 -0
  289. package/tenants/tokenoftrust/content/pages-html/contact/contact-sales.html +188 -0
  290. package/tenants/tokenoftrust/content/pages-html/contact/startup-apply.html +206 -0
  291. package/tenants/tokenoftrust/content/pages-html/contact.html +178 -0
  292. package/tenants/tokenoftrust/content/pages-html/industries/adult-content-age-verification.html +286 -0
  293. package/tenants/tokenoftrust/content/pages-html/industries/cannabis.html +277 -0
  294. package/tenants/tokenoftrust/content/pages-html/pact-act-pricing.html +289 -0
  295. package/tenants/tokenoftrust/content/pages-html/pricing.html +483 -0
  296. package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-estimation.html +278 -0
  297. package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-gate.html +279 -0
  298. package/tenants/tokenoftrust/content/pages-html/product/age-assurance/age-verification.html +265 -0
  299. package/tenants/tokenoftrust/content/pages-html/product/age-assurance.html +173 -0
  300. package/tenants/tokenoftrust/content/pages-html/product/compliance/aml.html +214 -0
  301. package/tenants/tokenoftrust/content/pages-html/product/compliance/pact-act.html +226 -0
  302. package/tenants/tokenoftrust/content/pages-html/product/fraud-prevention.html +254 -0
  303. package/tenants/tokenoftrust/content/pages-html/product/social-profile-verification.html +212 -0
  304. package/tenants/tokenoftrust/content/pages-html/product/tax/excise-tax.html +213 -0
  305. package/tenants/tokenoftrust/content/pages-html/product/verification/aml.html +259 -0
  306. package/tenants/tokenoftrust/content/pages-html/product/verification/biometric-selfie.html +305 -0
  307. package/tenants/tokenoftrust/content/pages-html/product/verification/coverage.html +254 -0
  308. package/tenants/tokenoftrust/content/pages-html/product/verification/document-verification.html +306 -0
  309. package/tenants/tokenoftrust/content/pages-html/product/verification/electronic-identity-verification.html +304 -0
  310. package/tenants/tokenoftrust/content/pages-html/product/verification/government-id-verification.html +308 -0
  311. package/tenants/tokenoftrust/content/pages-html/product/verification.html +183 -0
  312. package/tenants/tokenoftrust/content/pages-html/product.html +228 -0
  313. package/tenants/tokenoftrust/content/pages-html/resources/integrations/bigcommerce-integration.html +220 -0
  314. package/tenants/tokenoftrust/content/pages-html/resources/integrations/shopify-integration.html +221 -0
  315. package/tenants/tokenoftrust/content/pages-html/resources/integrations/wordpress.html +220 -0
  316. package/tenants/tokenoftrust/content/pages-html/resources/integrations.html +172 -0
  317. package/tenants/tokenoftrust/content/pages-html/resources/refer-a-friend-program.html +317 -0
  318. package/tenants/tokenoftrust/content/pages-html/resources.html +177 -0
  319. package/tenants/tokenoftrust/content/pages-html/reviews.html +273 -0
  320. package/tenants/tokenoftrust/content/pages-html/solutions.html +292 -0
  321. package/tenants/tokenoftrust/content/pages-html/vlp-alcohol.html +289 -0
  322. package/tenants/tokenoftrust/content/pages-html/vlp-cigars-and-tobacco.html +286 -0
  323. package/tenants/tokenoftrust/content/pages-html/vlp-firearm-accessories.html +267 -0
  324. package/tenants/tokenoftrust/content/pages-html/vlp-peptides.html +273 -0
  325. package/tenants/tokenoftrust/content/themes/tot-navy.json +88 -0
  326. package/tenants/tokenoftrust/public/favicon.png +0 -0
  327. package/tenants/tokenoftrust/public/logo-icon.png +0 -0
  328. package/tenants/tokenoftrust/public/logo-wordmark.png +0 -0
  329. package/tenants/tokenoftrust/public/pages/company.css +108 -0
  330. package/tenants/tokenoftrust/public/pages/home.css +457 -0
  331. package/tenants/tokenoftrust/public/pages/mkt.css +482 -0
  332. package/tenants/tokenoftrust/public/pages/pricing.css +214 -0
  333. package/tenants/tokenoftrust/public/pages/solutions.css +66 -0
  334. package/tenants/tokenoftrust/public/themes/tot-navy-1.0.0.css +136 -0
  335. package/tenants/tokenoftrust/public/themes/tot-navy.css +358 -0
  336. package/tenants/tokenoftrust/theme.json +31 -0
  337. package/tsconfig.base.json +20 -0
@@ -0,0 +1,275 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <link rel="icon" type="image/png" href="/tenants/tokenoftrust/favicon.png">
7
+ <title>Company — Token of Trust | Real Customers. Less Fraud. More Trust.</title>
8
+ <meta name="description" content="Token of Trust protects orders, prevents fraud, and maintains compliance for regulated ecommerce — an end-to-end identity, age, and compliance suite for merchants.">
9
+ <link rel="canonical" href="https://tokenoftrust.com/company/">
10
+ <meta name="robots" content="index,follow,max-image-preview:large">
11
+ <meta property="og:type" content="website">
12
+ <meta property="og:site_name" content="Token of Trust">
13
+ <meta property="og:title" content="Token of Trust — Real Customers. Less Fraud. More Trust.">
14
+ <meta property="og:description" content="An end-to-end compliance and anti-fraud suite for regulated ecommerce: identity, age, fraud, KYC, excise tax, and compliance reporting.">
15
+ <meta property="og:url" content="https://tokenoftrust.com/company/">
16
+ <meta name="twitter:card" content="summary_large_image">
17
+ <meta name="twitter:title" content="Token of Trust — Company">
18
+ <meta name="twitter:description" content="End-to-end verification and compliance for regulated ecommerce.">
19
+ <script type="application/ld+json">
20
+ {
21
+ "@context": "https://schema.org",
22
+ "@graph": [
23
+ {
24
+ "@type": "Organization",
25
+ "@id": "https://tokenoftrust.com/#org",
26
+ "name": "Token of Trust",
27
+ "url": "https://tokenoftrust.com/",
28
+ "logo": "/tenants/tokenoftrust/logo-icon.png",
29
+ "slogan": "Real Customers. Less Fraud. More Trust.",
30
+ "address": {
31
+ "@type": "PostalAddress",
32
+ "streetAddress": "861 E Hennepin Ave #200",
33
+ "addressLocality": "Minneapolis",
34
+ "addressRegion": "MN",
35
+ "postalCode": "55414",
36
+ "addressCountry": "US"
37
+ }
38
+ },
39
+ {
40
+ "@type": "AboutPage",
41
+ "name": "Company — Token of Trust",
42
+ "url": "https://tokenoftrust.com/company/",
43
+ "about": {
44
+ "@id": "https://tokenoftrust.com/#org"
45
+ }
46
+ }
47
+ ]
48
+ }
49
+ </script>
50
+ <link rel="stylesheet" href="/tenants/tokenoftrust/themes/tot-navy.css">
51
+ <link rel="stylesheet" href="/tenants/tokenoftrust/pages/company.css">
52
+ </head>
53
+ <body>
54
+ <a class="skip-link" href="#main">Skip to main content</a>
55
+
56
+ <header class="site">
57
+ <div class="container nav-row">
58
+ <a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
59
+ <nav class="primary" id="primaryNav" aria-label="Primary">
60
+ <ul>
61
+ <li><a href="/product/">Platform</a></li>
62
+ <li><a href="/solutions/">Industries</a></li>
63
+ <li><a class="active" href="/company/" aria-current="page">Company</a></li>
64
+ <li><a href="/resources/">Resources</a></li>
65
+ <li><a href="/pricing/">Pricing</a></li>
66
+ <li><a href="https://app.tokenoftrust.com">Login</a></li>
67
+ </ul>
68
+ </nav>
69
+ <div class="nav-cta">
70
+ <a class="btn btn-line" href="/contact/">Book Demo</a>
71
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
72
+ <button class="hamburger" id="hamburger" aria-label="Toggle navigation menu" aria-expanded="false" aria-controls="primaryNav"><span></span><span></span><span></span></button>
73
+ </div>
74
+ </div>
75
+ </header>
76
+
77
+ <main id="main">
78
+ <section class="hero" aria-labelledby="hero-heading">
79
+ <div class="container">
80
+ <span class="eyebrow"><span class="dot"></span>Company</span>
81
+ <h1 id="hero-heading">Real customers. Less fraud. <span class="grad">More trust.</span></h1>
82
+ <p class="lede">Safeguard your ecommerce business and accelerate growth with Token of Trust's end-to-end
83
+ compliance and anti-fraud suite — one platform for identity, age, fraud, and tax compliance.</p>
84
+ <div class="cta-row">
85
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
86
+ <a class="btn btn-line" href="/contact/">Contact Sales</a>
87
+ </div>
88
+ </div>
89
+ </section>
90
+
91
+ <div class="proof" aria-label="Coverage and trust signals">
92
+ <div class="container">
93
+ <span><b>200+</b> countries covered</span>
94
+ <span class="sep" aria-hidden="true">·</span>
95
+ <span><b>GDPR · CCPA · PIPEDA</b> compliant</span>
96
+ <span class="sep" aria-hidden="true">·</span>
97
+ <span><b>256-bit SSL</b> encryption</span>
98
+ <span class="sep" aria-hidden="true">·</span>
99
+ <span>We will <b>never sell your data</b></span>
100
+ </div>
101
+ </div>
102
+
103
+ <section aria-labelledby="solutions-heading">
104
+ <div class="container">
105
+ <div class="center reveal">
106
+ <span class="kicker">What we do</span>
107
+ <h2 id="solutions-heading">End-to-end merchant solutions</h2>
108
+ <p class="section-lede">Simplify commerce with Token of Trust's comprehensive suite of merchant tools —
109
+ from onboarding to checkout to compliance reporting.</p>
110
+ </div>
111
+ <div class="sol-grid">
112
+ <article class="sol-card reveal">
113
+ <h3>Identity Verification</h3>
114
+ <p>Verify identities with government ID documents, biometric selfies, and authoritative databases.</p>
115
+ <a class="card-link" href="/product/verification/">Identity Verification &rarr;</a>
116
+ </article>
117
+ <article class="sol-card reveal">
118
+ <h3>Age Verification</h3>
119
+ <p>Ensure compliance with age restrictions and offer age-based discounts for seniors.</p>
120
+ <a class="card-link" href="/product/age-assurance/">Age Assurance &rarr;</a>
121
+ </article>
122
+ <article class="sol-card reveal">
123
+ <h3>Fraud Prevention</h3>
124
+ <p>Safeguard your ecommerce with advanced protection against chargebacks and checkout fraud.</p>
125
+ <a class="card-link" href="/product/fraud-prevention/">Fraud Prevention &rarr;</a>
126
+ </article>
127
+ <article class="sol-card reveal">
128
+ <h3>KYC for Onboarding</h3>
129
+ <p>Elevate user experience with seamless KYC and AML compliance during onboarding.</p>
130
+ <a class="card-link" href="/product/compliance/aml/">KYC &amp; AML &rarr;</a>
131
+ </article>
132
+ <article class="sol-card reveal">
133
+ <h3>eCommerce Excise Taxes</h3>
134
+ <p>Automate excise tax calculations and effortlessly collect excise taxes for your business.</p>
135
+ <a class="card-link" href="/pricing/">Tax Compliance &rarr;</a>
136
+ </article>
137
+ <article class="sol-card reveal">
138
+ <h3>Compliance Reporting</h3>
139
+ <p>Generate precise compliance reports to stay ahead in shifting regulatory landscapes.</p>
140
+ <a class="card-link" href="/product/compliance/pact-act/">Compliance Evidence &rarr;</a>
141
+ </article>
142
+ </div>
143
+ </div>
144
+ </section>
145
+
146
+ <section class="alt-bg" aria-labelledby="launch-heading">
147
+ <div class="container">
148
+ <div class="center reveal">
149
+ <span class="kicker">Launch with ease</span>
150
+ <h2 id="launch-heading">Three ways to go live</h2>
151
+ <p class="section-lede">Meet your team where it is — no-code plugins, a flexible API, or our fully hosted
152
+ app.</p>
153
+ </div>
154
+ <div class="steps">
155
+ <div class="step reveal">
156
+ <span class="num">01</span>
157
+ <h3>Pre-built integrations</h3>
158
+ <p>Discover seamless integrations with top platforms like Shopify and WooCommerce, streamlining your
159
+ checkout experience.</p>
160
+ </div>
161
+ <div class="step reveal">
162
+ <span class="num">02</span>
163
+ <h3>Build with our API</h3>
164
+ <p>Empower your app by tapping into our versatile API, tailoring Token of Trust to your unique needs.</p>
165
+ </div>
166
+ <div class="step reveal">
167
+ <span class="num">03</span>
168
+ <h3>Use our hosted app</h3>
169
+ <p>Effortlessly request verifications and manage compliance processes using our hosted app.</p>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </section>
174
+
175
+ <section aria-labelledby="coverage-heading">
176
+ <div class="container">
177
+ <div class="coverage reveal">
178
+ <div class="coverage-copy">
179
+ <span class="kicker">Expand where you can sell</span>
180
+ <h2 id="coverage-heading">Verification that travels with your customers</h2>
181
+ <p>Grow into new markets with confidence. Token of Trust matches identities against the documents and
182
+ databases that regulators trust, wherever your buyers are.</p>
183
+ <a class="btn btn-navy" href="/product/verification/coverage/">View identity coverage</a>
184
+ </div>
185
+ <ul class="coverage-list">
186
+ <li>International coverage in 200+ countries</li>
187
+ <li>Document support for driver's license, passport, and national ID cards</li>
188
+ <li>Access to private and public identity databases</li>
189
+ <li>Sanction &amp; watchlist screening (PEPs, sanctions)</li>
190
+ </ul>
191
+ </div>
192
+ </div>
193
+ </section>
194
+
195
+ <section class="alt-bg" aria-labelledby="privacy-heading">
196
+ <div class="container">
197
+ <div class="center reveal">
198
+ <span class="kicker">Fostering trust through privacy</span>
199
+ <h2 id="privacy-heading">Privacy runs deep in everything we build</h2>
200
+ <p class="section-lede">Through modern security and encryption, Token of Trust provides a trustworthy foundation
201
+ for businesses that need reliable identity and compliance — without compromising customer data.</p>
202
+ </div>
203
+ <div class="reassure-row">
204
+ <div class="reassurance reveal">Token of Trust uses 256-bit SSL encryption 100% of the time, on every device.</div>
205
+ <div class="reassurance reveal">Token of Trust will <b>never</b> sell your data.</div>
206
+ <div class="reassurance reveal">Compliant with GDPR and global privacy laws.</div>
207
+ </div>
208
+ <p class="center privacy-links reveal"><a href="/#faq">Learn how we protect business and consumer data</a>
209
+ &nbsp;·&nbsp; <a href="/resources/">Read customer case studies</a></p>
210
+ </div>
211
+ </section>
212
+
213
+ <section aria-labelledby="cta-heading">
214
+ <div class="container">
215
+ <div class="ent-band reveal">
216
+ <span class="kicker">Get started</span>
217
+ <h2 id="cta-heading">Ready to safely acquire new customers?</h2>
218
+ <p>Start free — no credit card needed. Talk to our team about custom compliance workflows for your products,
219
+ states, and risk profile.</p>
220
+ <div class="cta-row cta-center">
221
+ <a class="btn btn-ent" href="https://app.tokenoftrust.com">Start For Free</a>
222
+ <a class="btn btn-line" href="/contact/">Contact Sales</a>
223
+ </div>
224
+ </div>
225
+ </div>
226
+ </section>
227
+ </main>
228
+
229
+ <footer class="site">
230
+ <div class="container">
231
+ <div class="foot-grid">
232
+ <div>
233
+ <a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
234
+ <p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
235
+ NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
236
+ </div>
237
+ <nav aria-label="Platform footer"><h3>Platform</h3><ul>
238
+ <li><a href="/product/verification/">Identity Verification</a></li>
239
+ <li><a href="/product/age-assurance/">Age Assurance</a></li>
240
+ <li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
241
+ <li><a href="/product/">All products</a></li>
242
+ </ul></nav>
243
+ <nav aria-label="Industries footer"><h3>Industries</h3><ul>
244
+ <li><a href="/solutions/">All industries</a></li>
245
+ <li><a href="/solutions/">Tobacco &amp; Vape</a></li>
246
+ <li><a href="/solutions/">Wine &amp; Spirits</a></li>
247
+ <li><a href="/solutions/">Marketplaces</a></li>
248
+ </ul></nav>
249
+ <nav aria-label="Company footer"><h3>Company</h3><ul>
250
+ <li><a href="/company/">Company</a></li>
251
+ <li><a href="/pricing/">Pricing</a></li>
252
+ <li><a href="/contact/">Contact Sales</a></li>
253
+ <li><a href="/resources/">Resources</a></li>
254
+ </ul></nav>
255
+ </div>
256
+ <p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
257
+ </div>
258
+ </footer>
259
+
260
+ <script>
261
+ (function(){
262
+ var burger = document.getElementById('hamburger');
263
+ var nav = document.getElementById('primaryNav');
264
+ burger.addEventListener('click', function(){
265
+ var open = nav.classList.toggle('open');
266
+ burger.setAttribute('aria-expanded', open ? 'true' : 'false');
267
+ });
268
+ var io = new IntersectionObserver(function(entries){
269
+ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } });
270
+ }, {threshold:.12});
271
+ document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
272
+ })();
273
+ </script>
274
+ </body>
275
+ </html>
@@ -0,0 +1,188 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <link rel="icon" type="image/png" href="/tenants/tokenoftrust/favicon.png">
7
+ <title>Contact Sales — Token of Trust | Talk to a specialist</title>
8
+ <meta name="description" content="Connect with a Token of Trust sales specialist to explore identity, age, fraud, and compliance solutions. For consumer inquiries, reach out directly.">
9
+ <link rel="canonical" href="https://tokenoftrust.com/contact/contact-sales/">
10
+ <meta name="robots" content="index,follow,max-image-preview:large">
11
+ <meta property="og:type" content="website">
12
+ <meta property="og:site_name" content="Token of Trust">
13
+ <meta property="og:title" content="Contact Sales — Token of Trust">
14
+ <meta property="og:description" content="Connect with a Token of Trust sales specialist to explore identity, age, fraud, and compliance solutions.">
15
+ <meta property="og:url" content="https://tokenoftrust.com/contact/contact-sales/">
16
+ <meta name="twitter:card" content="summary_large_image">
17
+ <meta name="twitter:title" content="Contact Sales — Token of Trust">
18
+ <meta name="twitter:description" content="Talk to a Token of Trust sales specialist.">
19
+ <script type="application/ld+json">
20
+ {
21
+ "@context": "https://schema.org",
22
+ "@graph": [
23
+ {
24
+ "@type": "Organization",
25
+ "@id": "https://tokenoftrust.com/#org",
26
+ "name": "Token of Trust",
27
+ "url": "https://tokenoftrust.com/",
28
+ "logo": "/tenants/tokenoftrust/logo-icon.png",
29
+ "slogan": "Real Customers. Less Fraud. More Trust."
30
+ },
31
+ {
32
+ "@type": "ContactPage",
33
+ "name": "Contact Sales — Token of Trust",
34
+ "url": "https://tokenoftrust.com/contact/contact-sales/"
35
+ }
36
+ ]
37
+ }
38
+ </script>
39
+ <link rel="stylesheet" href="/tenants/tokenoftrust/themes/tot-navy.css">
40
+ <link rel="stylesheet" href="/tenants/tokenoftrust/pages/mkt.css">
41
+ </head>
42
+ <body>
43
+ <a class="skip-link" href="#main">Skip to main content</a>
44
+
45
+ <header class="site">
46
+ <div class="container nav-row">
47
+ <a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
48
+ <nav class="primary" id="primaryNav" aria-label="Primary">
49
+ <ul>
50
+ <li><a href="/product/">Platform</a></li>
51
+ <li><a href="/solutions/">Industries</a></li>
52
+ <li><a href="/company/">Company</a></li>
53
+ <li><a href="/resources/">Resources</a></li>
54
+ <li><a href="/pricing/">Pricing</a></li>
55
+ <li><a href="https://app.tokenoftrust.com">Login</a></li>
56
+ </ul>
57
+ </nav>
58
+ <div class="nav-cta">
59
+ <a class="btn btn-line" href="/contact/">Book Demo</a>
60
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
61
+ <button class="hamburger" id="hamburger" aria-label="Toggle navigation menu" aria-expanded="false" aria-controls="primaryNav"><span></span><span></span><span></span></button>
62
+ </div>
63
+ </div>
64
+ </header>
65
+
66
+ <main id="main">
67
+ <div class="container">
68
+ <nav class="crumbs" aria-label="Breadcrumb">
69
+ <a href="/">Home</a><span class="sep" aria-hidden="true">›</span>
70
+ <a href="/contact/">Contact</a><span class="sep" aria-hidden="true">›</span>
71
+ Contact Sales
72
+ </nav>
73
+ </div>
74
+
75
+ <section class="hero" aria-labelledby="hero-heading">
76
+ <div class="container">
77
+ <span class="eyebrow"><span class="dot"></span>Sales</span>
78
+ <h1 id="hero-heading">Reach out to <span class="grad">sales</span>.</h1>
79
+ <p class="lede">Connect with a sales specialist to explore Token of Trust's solutions for identity verification,
80
+ age assurance, fraud prevention, and compliance. For consumer inquiries, reach out directly or access our
81
+ portal for customer support.</p>
82
+ <div class="cta-row">
83
+ <a class="btn btn-green" href="/contact/">Talk to Sales</a>
84
+ <a class="btn btn-line" href="https://app.tokenoftrust.com">Start For Free</a>
85
+ </div>
86
+ </div>
87
+ </section>
88
+
89
+ <section aria-labelledby="paths-heading">
90
+ <div class="container">
91
+ <div class="center reveal">
92
+ <span class="kicker">Which is you?</span>
93
+ <h2 id="paths-heading">Get to the right team</h2>
94
+ <p class="section-lede">Pick the option that matches your situation and we'll route you to the right place.</p>
95
+ </div>
96
+ <div class="feature-grid three reveal">
97
+ <article class="feat-card accent">
98
+ <h3>Talk to sales</h3>
99
+ <p>Explore pricing, integrations, and a compliance workflow built for your products, states, and risk
100
+ profile.</p>
101
+ <a class="card-link" href="/contact/">Contact sales &rarr;</a>
102
+ </article>
103
+ <article class="feat-card accent">
104
+ <h3>Consumer support</h3>
105
+ <p>Questions about your verification? Reach out directly and we'll help you get sorted.</p>
106
+ <a class="card-link" href="/contact/">Consumer support &rarr;</a>
107
+ </article>
108
+ <article class="feat-card accent">
109
+ <h3>Existing partner</h3>
110
+ <p>Already a business partner? Use our portal to reach customer support.</p>
111
+ <a class="card-link" href="https://app.tokenoftrust.com">Partner portal &rarr;</a>
112
+ </article>
113
+ </div>
114
+ </div>
115
+ </section>
116
+
117
+ <section class="alt-bg" aria-labelledby="integrations-heading">
118
+ <div class="container">
119
+ <div class="center reveal">
120
+ <span class="kicker">Integrations</span>
121
+ <h2 id="integrations-heading">Supports many integrations</h2>
122
+ <p class="section-lede">Token of Trust connects to the platforms you already use — and we're always adding
123
+ more. Just ask. Prefer to build it yourself? Start with our developer docs.</p>
124
+ <div class="cta-row cta-center">
125
+ <a class="btn btn-navy" href="https://help.tokenoftrust.com">Developer docs</a>
126
+ <a class="btn btn-line" href="/contact/">Ask about an integration</a>
127
+ </div>
128
+ </div>
129
+ </div>
130
+ </section>
131
+
132
+ <section aria-labelledby="cta-heading">
133
+ <div class="container">
134
+ <div class="cta-band reveal">
135
+ <span class="kicker">Get started</span>
136
+ <h2 id="cta-heading">Let's talk about your use case</h2>
137
+ <p>Start free — no credit card needed — or book time with our team to scope the right plan for your business.</p>
138
+ <div class="cta-row">
139
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
140
+ <a class="btn btn-line" href="/contact/">Contact Sales</a>
141
+ </div>
142
+ </div>
143
+ </div>
144
+ </section>
145
+ </main>
146
+
147
+ <footer class="site">
148
+ <div class="container">
149
+ <div class="foot-grid">
150
+ <div>
151
+ <a class="brand" href="/" aria-label="Token of Trust home"><img src="/tenants/tokenoftrust/logo-wordmark.png" alt="Token of Trust" width="156" height="34" style="height:34px;width:auto;display:block"></a>
152
+ <p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
153
+ NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
154
+ </div>
155
+ <nav aria-label="Platform footer"><h3>Platform</h3><ul>
156
+ <li><a href="/product/verification/">Identity Verification</a></li>
157
+ <li><a href="/product/age-assurance/">Age Assurance</a></li>
158
+ <li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
159
+ <li><a href="/product/">All products</a></li>
160
+ </ul></nav>
161
+ <nav aria-label="Industries footer"><h3>Industries</h3><ul>
162
+ <li><a href="/solutions/">All industries</a></li>
163
+ <li><a href="/vlp-cigars-and-tobacco/">Tobacco &amp; Vape</a></li>
164
+ <li><a href="/vlp-alcohol/">Wine &amp; Spirits</a></li>
165
+ <li><a href="/industries/cannabis/">Cannabis</a></li>
166
+ </ul></nav>
167
+ <nav aria-label="Company footer"><h3>Company</h3><ul>
168
+ <li><a href="/company/">Company</a></li>
169
+ <li><a href="/careers/">Careers</a></li>
170
+ <li><a href="/pricing/">Pricing</a></li>
171
+ <li><a href="/contact/">Contact Sales</a></li>
172
+ </ul></nav>
173
+ </div>
174
+ <p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
175
+ </div>
176
+ </footer>
177
+
178
+ <script>
179
+ (function(){
180
+ var burger = document.getElementById('hamburger');
181
+ var nav = document.getElementById('primaryNav');
182
+ burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
183
+ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
184
+ document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
185
+ })();
186
+ </script>
187
+ </body>
188
+ </html>