@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,214 @@
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>Sanction &amp; Watchlist Screening (AML) | Token of Trust</title>
8
+ <meta name="description" content="Streamline processes by verifying individuals against AML, sanction, and watchlists with Token of Trust, reducing manual work.">
9
+ <link rel="canonical" href="https://tokenoftrust.com/product/compliance/aml/">
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="Sanction &amp; Watchlist Screening (AML) | Token of Trust">
14
+ <meta property="og:description" content="Streamline processes by verifying individuals against AML, sanction, and watchlists with Token of Trust, reducing manual work.">
15
+ <meta property="og:url" content="https://tokenoftrust.com/product/compliance/aml/">
16
+ <meta name="twitter:card" content="summary_large_image">
17
+ <meta name="twitter:title" content="AML &amp; Watchlist Screening — Token of Trust">
18
+ <meta name="twitter:description" content="Turn hours of watchlist screening into minutes with AML, sanction, and watchlist checks.">
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": "WebPage",
33
+ "name": "Sanction and Watchlist Screening",
34
+ "url": "https://tokenoftrust.com/product/compliance/aml/"
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 class="active" href="/product/" aria-current="page">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">&rsaquo;</span><a href="/product/">Platform</a><span class="sep">&rsaquo;</span>Sanction
70
+ &amp; Watchlist Screening
71
+ </nav>
72
+ </div>
73
+
74
+ <section class="hero" aria-labelledby="hero-heading">
75
+ <div class="container">
76
+ <span class="eyebrow"><span class="dot"></span>Compliance</span>
77
+ <h1 id="hero-heading">Sanction &amp; watchlist <span class="grad">screening.</span></h1>
78
+ <p class="lede">
79
+ Turn hours or days of watchlist screening time into minutes or seconds. Eliminate manual paperwork by
80
+ verifying the status of individuals against AML, sanction, and watchlist screens through Token of Trust.
81
+ </p>
82
+ <div class="cta-row">
83
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
84
+ <a class="btn btn-line" href="/contact/">Contact Sales</a>
85
+ </div>
86
+ </div>
87
+ </section>
88
+
89
+ <div class="proof">
90
+ <div class="container">
91
+ <span><b>AML</b> screening</span><span class="sep">·</span>
92
+ <span><b>Sanction &amp; watchlist</b> checks</span><span class="sep">·</span>
93
+ <span><b>256-bit SSL</b> encryption</span>
94
+ </div>
95
+ </div>
96
+
97
+ <section aria-labelledby="who-heading">
98
+ <div class="container">
99
+ <div class="split reveal">
100
+ <div class="split-copy">
101
+ <span class="kicker">Who it's for</span>
102
+ <h2 id="who-heading">Built for institutions with screening obligations</h2>
103
+ <p>
104
+ Financial institutions, cryptocurrency-based organizations, and businesses that require physical
105
+ nexus have varying requirements related to government-based screening and watchlists. Token of Trust
106
+ eliminates the manual paperwork and workflow.
107
+ </p>
108
+ <a class="btn btn-line" href="/product/">Explore the product</a>
109
+ </div>
110
+ <ul class="check-list">
111
+ <li><b>Financial institutions</b><span>Meet AML and KYC screening requirements without the manual workflow.</span></li>
112
+ <li><b>Cryptocurrency organizations</b><span>Verify individuals against sanction and watchlist screens.</span></li>
113
+ <li><b>Physical-nexus businesses</b><span>Satisfy government-based screening obligations across jurisdictions.</span></li>
114
+ </ul>
115
+ </div>
116
+ </div>
117
+ </section>
118
+
119
+ <section class="alt-bg" aria-labelledby="feat-heading">
120
+ <div class="container">
121
+ <div class="center reveal">
122
+ <span class="kicker">Features</span>
123
+ <h2 id="feat-heading">Screening that fits your verification flow</h2>
124
+ <p class="section-lede">Every screen is qualified by our Know Your Customer (KYC) process and archived
125
+ securely.</p>
126
+ </div>
127
+ <div class="feature-grid">
128
+ <article class="feat-card accent reveal">
129
+ <h3>KYC-qualified screens</h3>
130
+ <p>Screens are qualified by our Know Your Customer (KYC) process, tying screening results to a verified
131
+ identity.</p>
132
+ </article>
133
+ <article class="feat-card accent reveal">
134
+ <h3>International watchlist screens</h3>
135
+ <p>Verify individuals against AML, sanction, and international watchlists.</p>
136
+ </article>
137
+ <article class="feat-card accent reveal">
138
+ <h3>Secure archival options</h3>
139
+ <p>Retain results with secure archival options for up to 7 years to satisfy audit and legal requirements.</p>
140
+ </article>
141
+ <article class="feat-card accent reveal">
142
+ <h3>256-bit SSL encryption</h3>
143
+ <p>Data is protected in transit and at rest with 256-bit SSL encryption.</p>
144
+ </article>
145
+ <article class="feat-card accent reveal">
146
+ <h3>Reputation Report™ results</h3>
147
+ <p>Consolidated Reputation Report™ results give you the identity certainty you need in one place.</p>
148
+ </article>
149
+ <article class="feat-card accent reveal">
150
+ <h3>Less manual work</h3>
151
+ <p>Turn hours or days of watchlist screening into minutes or seconds, freeing your team from paperwork.</p>
152
+ </article>
153
+ </div>
154
+ </div>
155
+ </section>
156
+
157
+ <section aria-labelledby="cta-heading">
158
+ <div class="container">
159
+ <div class="cta-band reveal">
160
+ <span class="kicker">Get started</span>
161
+ <h2 id="cta-heading">Streamline your screening today</h2>
162
+ <p>Verify individuals against AML, sanction, and watchlists — and reduce manual work. Start free or talk
163
+ to sales.</p>
164
+ <div class="cta-row">
165
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
166
+ <a class="btn btn-line" href="/contact/">Contact Sales</a>
167
+ </div>
168
+ </div>
169
+ </div>
170
+ </section>
171
+ </main>
172
+
173
+ <footer class="site">
174
+ <div class="container">
175
+ <div class="foot-grid">
176
+ <div>
177
+ <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>
178
+ <p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
179
+ NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
180
+ </div>
181
+ <nav aria-label="Platform footer"><h3>Platform</h3><ul>
182
+ <li><a href="/product/verification/">Identity Verification</a></li>
183
+ <li><a href="/product/age-assurance/">Age Assurance</a></li>
184
+ <li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
185
+ <li><a href="/product/">All products</a></li>
186
+ </ul></nav>
187
+ <nav aria-label="Industries footer"><h3>Industries</h3><ul>
188
+ <li><a href="/solutions/">All industries</a></li>
189
+ <li><a href="/vlp-cigars-and-tobacco/">Tobacco &amp; Vape</a></li>
190
+ <li><a href="/vlp-alcohol/">Wine &amp; Spirits</a></li>
191
+ <li><a href="/industries/cannabis/">Cannabis</a></li>
192
+ </ul></nav>
193
+ <nav aria-label="Company footer"><h3>Company</h3><ul>
194
+ <li><a href="/company/">Company</a></li>
195
+ <li><a href="/careers/">Careers</a></li>
196
+ <li><a href="/pricing/">Pricing</a></li>
197
+ <li><a href="/contact/">Contact Sales</a></li>
198
+ </ul></nav>
199
+ </div>
200
+ <p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
201
+ </div>
202
+ </footer>
203
+
204
+ <script>
205
+ (function(){
206
+ var burger = document.getElementById('hamburger');
207
+ var nav = document.getElementById('primaryNav');
208
+ burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
209
+ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
210
+ document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
211
+ })();
212
+ </script>
213
+ </body>
214
+ </html>
@@ -0,0 +1,226 @@
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>PACT Act Compliance Software | Token of Trust</title>
8
+ <meta name="description" content="Automate PACT Act compliance tasks with Token of Trust. Focus on business growth. Get licensed to sell vapor products with our solutions.">
9
+ <link rel="canonical" href="https://tokenoftrust.com/product/compliance/pact-act/">
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="PACT Act Compliance Software | Token of Trust">
14
+ <meta property="og:description" content="Automate PACT Act compliance tasks with Token of Trust. Focus on business growth. Get licensed to sell vapor products with our solutions.">
15
+ <meta property="og:url" content="https://tokenoftrust.com/product/compliance/pact-act/">
16
+ <meta name="twitter:card" content="summary_large_image">
17
+ <meta name="twitter:title" content="PACT Act Compliance — Token of Trust">
18
+ <meta name="twitter:description" content="Automate time-consuming PACT Act compliance tasks so you can focus on growing your business.">
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": "WebPage",
33
+ "name": "PACT Act Compliance",
34
+ "url": "https://tokenoftrust.com/product/compliance/pact-act/"
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 class="active" href="/product/" aria-current="page">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">&rsaquo;</span><a href="/product/">Platform</a><span class="sep">&rsaquo;</span>PACT
70
+ Act Compliance
71
+ </nav>
72
+ </div>
73
+
74
+ <section class="hero" aria-labelledby="hero-heading">
75
+ <div class="container">
76
+ <span class="eyebrow"><span class="dot"></span>Compliance</span>
77
+ <h1 id="hero-heading">PACT Act <span class="grad">compliance.</span></h1>
78
+ <p class="lede">
79
+ Token of Trust automates time-consuming PACT Act compliance tasks so you can focus on growing your
80
+ business. Get licensed to sell vapor products and offload your ongoing requirements to the experts.
81
+ </p>
82
+ <div class="cta-row">
83
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
84
+ <a class="btn btn-line" href="/pact-act-pricing/">See PACT Act pricing</a>
85
+ </div>
86
+ </div>
87
+ </section>
88
+
89
+ <div class="proof">
90
+ <div class="container">
91
+ <span><b>Vapor</b> products</span><span class="sep">·</span>
92
+ <span><b>Nicotine e-juice</b></span><span class="sep">·</span>
93
+ <span><b>CBD, Delta 8 THC</b> &amp; hemp</span><span class="sep">·</span>
94
+ <span><b>Tobacco, cigarettes</b> &amp; cigars</span>
95
+ </div>
96
+ </div>
97
+
98
+ <section aria-labelledby="offload-heading">
99
+ <div class="container">
100
+ <div class="center reveal">
101
+ <span class="kicker">What we handle</span>
102
+ <h2 id="offload-heading">Offload your PACT Act compliance to the experts</h2>
103
+ <p class="section-lede">
104
+ Our PACT Act solutions help businesses selling vapor products, nicotine e-juice, CBD, Delta 8 THC and
105
+ hemp products, and tobacco, cigarettes and cigars.
106
+ </p>
107
+ </div>
108
+ <div class="feature-grid four">
109
+ <article class="feat-card accent reveal">
110
+ <h3>Licensing &amp; registration</h3>
111
+ <p>Get licensed and registered to sell vapor products.</p>
112
+ </article>
113
+ <article class="feat-card accent reveal">
114
+ <h3>PACT Act reporting</h3>
115
+ <p>Prepare, maintain, and submit your ongoing state PACT Act reports.</p>
116
+ </article>
117
+ <article class="feat-card accent reveal">
118
+ <h3>Excise taxes</h3>
119
+ <p>Collect real-time excise taxes at checkout and prepare excise tax reports to state, county, and municipal
120
+ jurisdictions. <a class="card-link" href="/product/tax/excise-tax/">Excise tax &rarr;</a></p>
121
+ </article>
122
+ <article class="feat-card accent reveal">
123
+ <h3>Age verification</h3>
124
+ <p>Verify the age of your customers and maintain due-diligence records.</p>
125
+ </article>
126
+ </div>
127
+ </div>
128
+ </section>
129
+
130
+ <section class="alt-bg" aria-labelledby="steps-heading">
131
+ <div class="container">
132
+ <div class="center reveal">
133
+ <span class="kicker">How it works</span>
134
+ <h2 id="steps-heading">From licensing to ongoing compliance</h2>
135
+ </div>
136
+ <div class="steps three">
137
+ <div class="step reveal"><span class="num">01</span><h3>Get licensed</h3><p>We get you licensed and registered
138
+ to sell vapor and tobacco products.</p></div>
139
+ <div class="step reveal"><span class="num">02</span><h3>Verify &amp; collect</h3><p>Verify customer age
140
+ at checkout and collect real-time excise taxes as orders come in.</p></div>
141
+ <div class="step reveal"><span class="num">03</span><h3>Report &amp; retain</h3><p>We prepare and submit
142
+ ongoing state PACT Act reports and retain due-diligence records.</p></div>
143
+ </div>
144
+ </div>
145
+ </section>
146
+
147
+ <section aria-labelledby="quote-heading">
148
+ <div class="container">
149
+ <div class="split reveal">
150
+ <div class="split-copy">
151
+ <span class="kicker">Customer story</span>
152
+ <h2 id="quote-heading">Hear what our customers say</h2>
153
+ <p>
154
+ &ldquo;Token of Trust is great because they help protect us against fraud and help us stay in
155
+ compliance with laws relating to our company and the products we ship.&rdquo;
156
+ </p>
157
+ <p style="font-weight:700;color:var(--navy)">— Cream City Vapes (Milwaukee, WI)</p>
158
+ <a class="btn btn-line" href="/vlp-cigars-and-tobacco/">Tobacco &amp; vape solutions</a>
159
+ </div>
160
+ <ul class="check-list">
161
+ <li><b>Stay compliant</b><span>Ongoing PACT Act reporting handled for you.</span></li>
162
+ <li><b>Protect margins</b><span>Collect excise tax from customers at checkout.</span></li>
163
+ <li><b>Reduce fraud</b><span>Age verification and identity checks at the point of sale.</span></li>
164
+ </ul>
165
+ </div>
166
+ </div>
167
+ </section>
168
+
169
+ <section aria-labelledby="cta-heading">
170
+ <div class="container">
171
+ <div class="cta-band reveal">
172
+ <span class="kicker">Get started</span>
173
+ <h2 id="cta-heading">Focus on growth. We'll handle PACT Act compliance.</h2>
174
+ <p>Automate time-consuming compliance tasks and get licensed to sell vapor products. Start free or see
175
+ pricing.</p>
176
+ <div class="cta-row">
177
+ <a class="btn btn-green" href="https://app.tokenoftrust.com">Start For Free</a>
178
+ <a class="btn btn-line" href="/pact-act-pricing/">See PACT Act pricing</a>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </section>
183
+ </main>
184
+
185
+ <footer class="site">
186
+ <div class="container">
187
+ <div class="foot-grid">
188
+ <div>
189
+ <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>
190
+ <p class="foot-note">Customer verification and compliance for regulated ecommerce. 256-bit SSL. We will
191
+ NEVER sell your data. GDPR · CCPA · PIPEDA.</p>
192
+ </div>
193
+ <nav aria-label="Platform footer"><h3>Platform</h3><ul>
194
+ <li><a href="/product/verification/">Identity Verification</a></li>
195
+ <li><a href="/product/age-assurance/">Age Assurance</a></li>
196
+ <li><a href="/product/fraud-prevention/">Fraud Prevention</a></li>
197
+ <li><a href="/product/">All products</a></li>
198
+ </ul></nav>
199
+ <nav aria-label="Industries footer"><h3>Industries</h3><ul>
200
+ <li><a href="/solutions/">All industries</a></li>
201
+ <li><a href="/vlp-cigars-and-tobacco/">Tobacco &amp; Vape</a></li>
202
+ <li><a href="/vlp-alcohol/">Wine &amp; Spirits</a></li>
203
+ <li><a href="/industries/cannabis/">Cannabis</a></li>
204
+ </ul></nav>
205
+ <nav aria-label="Company footer"><h3>Company</h3><ul>
206
+ <li><a href="/company/">Company</a></li>
207
+ <li><a href="/careers/">Careers</a></li>
208
+ <li><a href="/pricing/">Pricing</a></li>
209
+ <li><a href="/contact/">Contact Sales</a></li>
210
+ </ul></nav>
211
+ </div>
212
+ <p class="copyright">© 2026 Token of Trust®. All rights reserved.</p>
213
+ </div>
214
+ </footer>
215
+
216
+ <script>
217
+ (function(){
218
+ var burger = document.getElementById('hamburger');
219
+ var nav = document.getElementById('primaryNav');
220
+ burger.addEventListener('click', function(){ var open = nav.classList.toggle('open'); burger.setAttribute('aria-expanded', open ? 'true' : 'false'); });
221
+ var io = new IntersectionObserver(function(entries){ entries.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } }); }, {threshold:.12});
222
+ document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });
223
+ })();
224
+ </script>
225
+ </body>
226
+ </html>