diff --git a/.agents/product-marketing-context.md b/.agents/product-marketing-context.md new file mode 100644 index 0000000..a62e769 --- /dev/null +++ b/.agents/product-marketing-context.md @@ -0,0 +1,230 @@ +# Product Marketing Context + +*Last updated: July 24, 2026* + +## Product overview + +**Working name:** OVO Labs + +**Wordmark:** `ovolabs.` + +**Descriptor:** Peptide science, refined. + +**One-liner:** A fictional peptide retail-house concept that combines warm editorial product presentation with fast finding and explicit evidence boundaries. + +**Current reality:** OVO Labs is a concept website. It has no company operations, inventory, material, customers, testing, laboratory relationship, fulfillment, payment, checkout, or commerce. A thin notice at the top of every page states that nothing shown is real, stocked, or for sale. + +**What the website demonstrates:** Two Fable-authorized presentations of the same complete ecommerce information architecture: persistent predictive search, four catalog categories, ten product pages, three catalog sets, testing-status lookup, product comparison fields, educational guides, responsive navigation, a browser-local cart, explicit empty/error/success states, and event instrumentation. + +**Concept category:** Peptide research-product ecommerce + +**Product type:** Fictional brand, ecommerce prototype, and strategic company package + +## Current catalog + +| Code | Product | Category | Strength | Concept price | +|---|---|---|---:|---:| +| OVO-001 | Retatrutide | GLP-1 & Metabolic | 10 mg | $105 | +| OVO-002 | Tirzepatide | GLP-1 & Metabolic | 10 mg | $100 | +| OVO-003 | Semaglutide | GLP-1 & Metabolic | 10 mg | $90 | +| OVO-004 | Cagrilintide | GLP-1 & Metabolic | 10 mg | $89 | +| OVO-005 | BPC-157 | Research Peptides | 10 mg | $60 | +| OVO-006 | TB-500 | Research Peptides | 10 mg | $68 | +| OVO-007 | CJC-1295 | Growth Hormone Research | 5 mg | $52 | +| OVO-008 | Ipamorelin | Growth Hormone Research | 5 mg | $45 | +| OVO-009 | CJC-1295 + Ipamorelin | Peptide Blends | 10 mg | $92 | +| OVO-010 | BPC-157 + TB-500 | Peptide Blends | 20 mg | $118 | + +The three concept sets are: + +- OVO-S01 — Metabolic Reference Set +- OVO-S02 — Peptide Pair Set +- OVO-S03 — Secretagogue Reference Set + +Every product and set must preserve the same evidence boundary: + +- no material, inventory, or availability exists; +- no laboratory, testing method, result, certificate, or purity figure is represented; +- nothing can be checked out, paid for, ordered, shipped, or reserved; +- no ratings, reviews, popularity, scarcity, or urgency claims are fabricated; +- no dosing, preparation, administration, safety, efficacy, outcome, or human-use information appears. + +## Primary user journeys + +1. **Search directly:** Use the persistent search field to find a molecule or catalog code and open the canonical product page. +2. **Browse by category:** Choose one of four research areas, filter the collection, sort by name or concept price, and compare complete cards in place. +3. **Evaluate a product:** See the product identity, strength, format, price, testing state, quantity, and add-to-cart action in one decision block. +4. **Inspect testing status:** Search by product name or code and see what each analytical field would mean, including an explicit “No result reported” state. +5. **Build a local cart:** Add, update, remove, clear, and inspect a subtotal. The interaction ends before checkout and remains in browser storage. +6. **Learn:** Read short guides about product comparison and the scope and limits of testing documents. + +## Audience and job to be done + +**Prototype audience:** Ecommerce operators, brand builders, designers, and category researchers evaluating how a serious peptide storefront could merchandise a focused catalog. + +**Potential future audience, only after independent legal and operating clearance:** Qualified organizations seeking research catalog products. + +**Core job:** “Help me find the exact catalog entry, compare the facts that matter, and understand what evidence is actually reported.” + +## Positioning + +**Positioning statement:** Peptides, without the mystery. + +**Value proposition:** A focused catalog with clear formats, testing status beside every product, and a fast path from search to cart. + +**Differentiation:** + +- search and categories are visible before brand theater; +- product cards expose complete decision fields; +- each molecule has its own canonical product page; +- testing status sits beside the decision rather than in a detached document library; +- empty evidence remains visibly empty; +- the cart gives precise feedback and stops honestly before checkout. + +## Research-backed design principles + +The 2025–2026 research package supports these implementation choices: + +- Exposed predictive search and rich results for known-item discovery. +- Visual category shortcuts for exploratory discovery. +- Two-column mobile product grids with complete cards. +- Applied category state, result counts, clear search recovery, and predictable sorting. +- Product-first PDPs with image, identity, strength, format, price, testing status, quantity, and one CTA. +- Vertical detail sections and accordions rather than horizontal tabs. +- Exact add-to-cart feedback, editable quantity, remove, subtotal, and a clear terminal state. +- Eager loading and explicit dimensions for above-the-fold media. +- No ratings when review evidence does not exist. +- No autoplay, 3D, decorative scientific motion, fake urgency, or proof-badge clutter. + +## Site architecture + +```text +/ovo-labs/ +├── catalog.html +├── bundles.html +├── testing.html +├── notes.html +│ ├── notes/reading-testing-status.html +│ ├── notes/choosing-by-molecule.html +│ └── notes/coa-boundaries.html +├── company.html +├── faq.html +├── policies.html +├── peptides/ +│ ├── [10 canonical product pages] +└── 404.html + +/ovo-labs-porcelain/ +└── [the same route and content model in an isolated side-by-side variant] +``` + +Legacy routes redirect: + +- `/third-standard/` → `/ovo-labs/` +- `/datum-peptides/` and every former deep route → the matching `/ovo-labs/` route +- `lot-record.html` → `testing.html` +- `access.html` → `catalog.html` +- `eligibility.html` remains a compatibility alias for the policy page. + +## Brand voice + +**Tone:** Warm, editorial, clear, direct, and technically literate. + +**Personality:** Considered, tactile, confident, useful, and honest. + +**Use:** product, category, code, strength, format, testing status, result, method, scope, sample, cart. + +**Avoid:** dossier, archive, institutional access, eligibility gate, release, protocol, dose, transformation, medical-grade, pharmacy-grade, guaranteed, best seller. + +## Visual authority + +Claude Fable 5 is the sole outward-facing design authority. + +The warm-apothecary-modernism route at `/ovo-labs/` is the brand-led comparison control. Its binding system uses: + +- `ovolabs.` as the lowercase typographic wordmark and “Peptide science, refined” as the descriptor; +- warm cream `#F3EADA`, porcelain `#FAF6EE`, parchment `#EDE2CD`, espresso `#3A2A1F`, espresso-deep `#2A1D14`, ink `#5C4A3B`, terracotta `#B9553E`, terracotta-deep `#8F3B2A`, ornament-only gold `#B08A52`, and gold-bright `#C69B63` on espresso; +- Fraunces for editorial display and the italic wordmark, Instrument Sans for body/UI, and IBM Plex Mono only for codes, concept prices, and status; +- Aesop-like editorial density, The Row restraint, and Byredo typographic discipline translated into product-led ecommerce; +- an espresso fiction banner and warm-paper sticky header with exposed search and category navigation; +- a 12-column 1280px shell, 5/7 desktop hero, product-first fashion grid, and full-width espresso ruled testing band; +- zero-radius sections/cards, at most 2px on inputs/buttons, and no card shadows or borders; +- only `ovo-hero-still.webp`, `ovo-vial-front.webp`, and `ovo-set-pair.webp` as production imagery; +- safe amber research-vial still lifes on cream, stone, linen, plaster, or dark timber; +- no syringes, preparation tools, body context, fake labels, reports, laboratory props, or invented proof; +- an opening hero that establishes the house while keeping Shop and Testing actions immediately available; +- four-up desktop and two-up narrow-width product grids; +- a cart drawer and mobile sticky product action. + +The superseded cool-white/cobalt “Bench Light” direction remains prohibited. + +The Fable-authorized Porcelain candidate at `/ovo-labs-porcelain/` is a separate product-first system, not a return to Bench Light. It uses: + +- a pure-white `#FFFFFF` canvas with warm near-white `#FBF9F6` cards and `#F3EEE6` image wells; +- the same amber imagery, espresso controls, terracotta emphasis, and three self-hosted type families; +- a left-aligned wordmark, direct desktop navigation, persistent boxed search, and a dedicated category row; +- a compact 55/45 hero, factual four-cell strip, and an early four-up desktop/two-up narrow catalog; +- 4px controls, 10px cards, and a 16px hero field, with borders doing most of the separation; +- gold only in packaging photography and the wordmark period; +- no cobalt, cool-gray clinical template styling, generic laboratory theater, or unsupported proof. + +The two routes deliberately share data and truth rules while keeping their CSS, JavaScript, canonical URLs, browser storage, and analytics event namespaces isolated. Porcelain is the primary direct-response hypothesis; the warm route is the premium brand control. Neither is a proven conversion winner without controlled comparative evidence. + +## Proof rules + +No claim is published without direct support. + +| Claim type | Current state | +|---|---| +| Customers or testimonials | None | +| Ratings or popularity | None | +| Laboratory relationship | None | +| Identity, purity, content, sterility, or endotoxin result | No result reported | +| Inventory or availability | None | +| Fulfillment or delivery | None | +| Checkout or payment | None | +| Medical, clinical, or human-use guidance | Excluded | + +## Measurement + +Each prototype writes non-PII events to `window.dataLayer` and exposes them through `window.OVOAnalytics.events()` for QA. Porcelain additionally exposes `window.OVOPorcelainAnalytics.events()` and dispatches `ovo-porcelain:analytics`. + +Search and testing events never contain the visitor’s raw string; they retain only an allowlisted catalog classification, a coarse length bucket, and a result count. + +Core events: + +- `page_view` +- `view_item_list` +- `search` +- `filter_apply` +- `sort_changed` +- `select_item` +- `select_category` +- `select_article` +- `view_item` +- `view_article` +- `view_testing` +- `product_media_selected` +- `quality_lookup` +- `add_to_cart` +- `view_cart` +- `cart_quantity_changed` +- `remove_from_cart` +- `cart_cleared` +- `newsletter_demo_completed` + +These events measure usability only. No prototype event is a purchase or commercial conversion. + +## Goals + +**Current goal:** Demonstrate a high-converting peptide ecommerce experience while remaining unmistakably fictional and non-transactional. + +**Primary quality gates:** + +- every reachable route loads without console errors; +- every visible control works; +- no broken internal links or orphan pages; +- keyboard completion for search, navigation, accordions, product quantity, and cart; +- rendered Fable approval at desktop and narrow width; +- no fabricated product, quality, customer, shipping, or operational claim; +- exact pushed commit saved through the connected Sites project, with public deployment only when explicitly authorized. diff --git a/.dev.vars.example b/.dev.vars.example new file mode 100644 index 0000000..8f860f2 --- /dev/null +++ b/.dev.vars.example @@ -0,0 +1,15 @@ +# Local-only values for the standalone Biologix Worker. +# Copy to .dev.vars and use distinct random values. Never commit .dev.vars. +BIOLOGIX_ALLOW_BREAK_GLASS=true +BIOLOGIX_GATEWAY_KEY_ID=primary-local +BIOLOGIX_GATEWAY_SECRET= +BIOLOGIX_OPERATOR_SESSION_SECRET= +BIOLOGIX_OPERATOR_ACCESS_CODE= +BIOLOGIX_BREAK_GLASS_OPERATOR_EMAIL= +BIOLOGIX_TRACKING_REDIRECT_HOSTS=biologixlabsresearch.com,www.biologixlabsresearch.com +BIOLOGIX_UPSTREAM_ORIGIN=https://ovo.academy + +# Configure these after Cloudflare Access is provisioned. Access takes +# precedence over the break-glass session. +CF_ACCESS_TEAM_DOMAIN= +CF_ACCESS_AUD= diff --git a/.gitignore b/.gitignore index 04fde58..ce14408 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ node_modules dist dist-ssr *.local +.dev.vars .conductor/settings.local.toml .conductor/settings.local.json diff --git a/.openai/hosting.json b/.openai/hosting.json new file mode 100644 index 0000000..a5e83d6 --- /dev/null +++ b/.openai/hosting.json @@ -0,0 +1,5 @@ +{ + "project_id": "appgprj_6a618ae6a408819192992389758b58d1", + "d1": null, + "r2": null +} diff --git a/biologix-affiliate-passport-site/README.md b/biologix-affiliate-passport-site/README.md new file mode 100644 index 0000000..cd32c86 --- /dev/null +++ b/biologix-affiliate-passport-site/README.md @@ -0,0 +1,30 @@ +# Biologix Affiliate Passport + +Creator-facing, post-signature Biologix affiliate onboarding. The application +is served at `/passport/` by the Biologix Decision Board Worker and uses the +same-origin `/api/biologix/*` lifecycle endpoints. + +## Local development + +```sh +npm install --workspace biologix-affiliate-passport-site +npm --workspace biologix-affiliate-passport-site run dev +``` + +## Production build + +```sh +npm run build +``` + +The root build compiles this workspace and copies its output to +`dist/client/passport`. Do not commit this workspace's `node_modules` or +`dist` directories. + +## Data boundary + +The browser does not store onboarding state locally. Invitation access, +identity decisions, tax and payout status, account verification, attribution, +content review, help requests, and activation receipts are loaded and mutated +through the same-origin API. Sensitive identity, tax, and payout collection +stays in hosted providers; the Passport receives status decisions only. diff --git a/biologix-affiliate-passport-site/index.html b/biologix-affiliate-passport-site/index.html new file mode 100644 index 0000000..897e617 --- /dev/null +++ b/biologix-affiliate-passport-site/index.html @@ -0,0 +1,18 @@ + + + + + + + + + Biologix Affiliate Passport | OVO Talent + + +
+ + + diff --git a/biologix-affiliate-passport-site/package.json b/biologix-affiliate-passport-site/package.json new file mode 100644 index 0000000..080dd63 --- /dev/null +++ b/biologix-affiliate-passport-site/package.json @@ -0,0 +1,28 @@ +{ + "name": "biologix-affiliate-passport-site", + "version": "1.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc --noEmit && vite build", + "preview": "vite preview", + "test": "vitest run" + }, + "dependencies": { + "lucide-react": "1.7.0", + "react": "19.2.8", + "react-dom": "19.2.8" + }, + "devDependencies": { + "@vitejs/plugin-react": "6.0.4", + "@types/react": "19.2.14", + "@types/react-dom": "19.2.3", + "typescript": "5.9.3", + "vite": "8.1.5", + "vitest": "4.1.5" + }, + "engines": { + "node": ">=20.19.0" + } +} diff --git a/biologix-affiliate-passport-site/public/_headers b/biologix-affiliate-passport-site/public/_headers new file mode 100644 index 0000000..bb9c3d5 --- /dev/null +++ b/biologix-affiliate-passport-site/public/_headers @@ -0,0 +1,8 @@ +/* + Cache-Control: no-store, max-age=0 + Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'none'; frame-ancestors 'none'; form-action 'self' + Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=() + Referrer-Policy: no-referrer + X-Content-Type-Options: nosniff + X-Frame-Options: DENY + X-Robots-Tag: noindex, nofollow, noarchive diff --git a/biologix-affiliate-passport-site/public/_redirects b/biologix-affiliate-passport-site/public/_redirects new file mode 100644 index 0000000..7797f7c --- /dev/null +++ b/biologix-affiliate-passport-site/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/biologix-affiliate-passport-site/public/biologix-logo.png b/biologix-affiliate-passport-site/public/biologix-logo.png new file mode 100644 index 0000000..6a4e3c3 Binary files /dev/null and b/biologix-affiliate-passport-site/public/biologix-logo.png differ diff --git a/biologix-affiliate-passport-site/public/fonts/boska-bold-italic.woff2 b/biologix-affiliate-passport-site/public/fonts/boska-bold-italic.woff2 new file mode 100644 index 0000000..7539c1a Binary files /dev/null and b/biologix-affiliate-passport-site/public/fonts/boska-bold-italic.woff2 differ diff --git a/biologix-affiliate-passport-site/public/fonts/instrument-serif-regular.woff2 b/biologix-affiliate-passport-site/public/fonts/instrument-serif-regular.woff2 new file mode 100644 index 0000000..1765304 Binary files /dev/null and b/biologix-affiliate-passport-site/public/fonts/instrument-serif-regular.woff2 differ diff --git a/biologix-affiliate-passport-site/public/fonts/inter-var.woff2 b/biologix-affiliate-passport-site/public/fonts/inter-var.woff2 new file mode 100644 index 0000000..f3ee543 Binary files /dev/null and b/biologix-affiliate-passport-site/public/fonts/inter-var.woff2 differ diff --git a/biologix-affiliate-passport-site/public/robots.txt b/biologix-affiliate-passport-site/public/robots.txt new file mode 100644 index 0000000..1f53798 --- /dev/null +++ b/biologix-affiliate-passport-site/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: / diff --git a/biologix-affiliate-passport-site/src/global.css b/biologix-affiliate-passport-site/src/global.css new file mode 100644 index 0000000..a60cde9 --- /dev/null +++ b/biologix-affiliate-passport-site/src/global.css @@ -0,0 +1,51 @@ +@font-face { + font-family: "Inter"; + src: url("/passport/fonts/inter-var.woff2") format("woff2"); + font-style: normal; + font-weight: 100 900; + font-display: swap; +} + +@font-face { + font-family: "Boska"; + src: url("/passport/fonts/boska-bold-italic.woff2") format("woff2"); + font-style: italic; + font-weight: 700; + font-display: swap; +} + +@font-face { + font-family: "Instrument Serif"; + src: url("/passport/fonts/instrument-serif-regular.woff2") format("woff2"); + font-style: normal; + font-weight: 400; + font-display: swap; +} + +:root { + --font-inter: "Inter"; + --font-instrument-serif: "Instrument Serif"; + color-scheme: light; + font-family: "Inter", "Helvetica Neue", Arial, sans-serif; + font-synthesis: none; + text-rendering: optimizeLegibility; +} + +html { + min-width: 320px; + min-height: 100%; + background: #f4ead8; +} + +body { + min-width: 320px; + min-height: 100%; + margin: 0; +} + +button, +input, +select, +textarea { + font: inherit; +} diff --git a/biologix-affiliate-passport-site/src/main.tsx b/biologix-affiliate-passport-site/src/main.tsx new file mode 100644 index 0000000..e7a8b97 --- /dev/null +++ b/biologix-affiliate-passport-site/src/main.tsx @@ -0,0 +1,45 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import { AffiliatePassport } from "./passport/affiliate-passport"; +import { BiologixAccess } from "./passport/biologix-access"; +import { + BiologixLogin, + type BiologixLoginReason, +} from "./passport/biologix-login"; +import "./global.css"; + +const root = document.getElementById("root"); +const LOGIN_REASONS = new Set([ + "invalid_token", + "missing_token", + "temporarily_unavailable", + "session_expired", +]); + +if (!root) { + throw new Error("Missing application root"); +} + +const params = new URLSearchParams(window.location.search); +const pathname = window.location.pathname.replace(/\/+$/u, ""); +const requestedReason = params.get("reason"); +const reason = + requestedReason && LOGIN_REASONS.has(requestedReason as BiologixLoginReason) + ? (requestedReason as BiologixLoginReason) + : null; +const showAccess = pathname.endsWith("/access"); +const showLogin = + pathname.endsWith("/login") || params.has("login") || reason !== null; +const token = params.get("token"); + +createRoot(root).render( + + {showAccess ? ( + + ) : showLogin ? ( + + ) : ( + + )} + , +); diff --git a/biologix-affiliate-passport-site/src/passport/affiliate-passport.module.css b/biologix-affiliate-passport-site/src/passport/affiliate-passport.module.css new file mode 100644 index 0000000..26eb7b7 --- /dev/null +++ b/biologix-affiliate-passport-site/src/passport/affiliate-passport.module.css @@ -0,0 +1,2816 @@ +@font-face { + font-family: "Instrument Serif"; + src: url("/passport/fonts/instrument-serif-regular.woff2") format("woff2"); + font-style: normal; + font-weight: 400; + font-display: swap; +} + +.canvas { + --font-instrument-serif: "Instrument Serif"; + --paper: #f4ead8; + --paper-bright: #fbf6ec; + --paper-deep: #eadcc4; + --espresso: #322219; + --espresso-deep: #211610; + --ink: #4f3e31; + --ink-muted: #78685b; + --line: rgba(50, 34, 25, 0.16); + --line-strong: rgba(50, 34, 25, 0.3); + --terracotta: #ad4d39; + --terracotta-deep: #873828; + --green: #2d6b50; + --green-soft: #dfeadf; + --amber: #9b671d; + --amber-soft: #f1e4c8; + --red: #9c3a34; + --red-soft: #f0deda; + min-height: 100vh; + color: var(--espresso); + background: + linear-gradient(rgba(50, 34, 25, 0.018) 1px, transparent 1px), + var(--paper); + background-size: 100% 28px; + font-family: var(--font-inter), "Helvetica Neue", Arial, sans-serif; +} + +.canvas * { + box-sizing: border-box; +} + +.canvas button, +.canvas input, +.canvas select, +.canvas textarea { + font: inherit; +} + +.canvas button { + cursor: pointer; +} + +.canvas button:disabled { + cursor: not-allowed; +} + +.canvas :focus-visible { + outline: 2px solid var(--terracotta); + outline-offset: 3px; +} + +.topbar { + position: sticky; + z-index: 30; + top: 0; + min-height: 68px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 24px; + padding: 12px clamp(20px, 3vw, 48px); + color: #f7efdf; + background: rgba(33, 22, 16, 0.97); + border-bottom: 1px solid rgba(247, 239, 223, 0.14); + backdrop-filter: blur(18px); +} + +.brandLockup, +.topbarMeta, +.brandLockup > span, +.topbarMeta > span { + display: flex; + align-items: center; +} + +.brandLockup { + min-width: 0; + gap: 16px; +} + +.biologixLogo { + flex: 0 0 auto; + width: 48px; + height: 42px; + box-sizing: border-box; + object-fit: contain; + padding: 3px 5px; + background: #fffaf0; + border: 1px solid rgba(255, 250, 240, 0.38); + border-radius: 6px; + box-shadow: 0 5px 14px rgba(0, 0, 0, 0.16); +} + +.managedBy { + gap: 5px; + color: rgba(247, 239, 223, 0.43); + font-size: 9px; + letter-spacing: 0.08em; + text-transform: uppercase; + white-space: nowrap; +} + +.managedBy b { + color: rgba(255, 250, 240, 0.78); + font-family: "Boska", Georgia, serif; + font-size: 14px; + font-style: italic; + letter-spacing: -0.03em; + text-transform: none; +} + +.brandDivider { + width: 1px; + height: 22px; + background: rgba(247, 239, 223, 0.2); +} + +.productName { + overflow: hidden; + color: rgba(247, 239, 223, 0.67); + font-size: 10px; + font-weight: 650; + letter-spacing: 0.14em; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; +} + +.productNameShort { + display: none; +} + +.topbarMeta { + flex: 0 0 auto; + gap: 14px; +} + +.topbarMeta form { + display: flex; + margin: 0; +} + +.systemState { + width: min(560px, calc(100% - 40px)); + min-height: calc(100vh - 68px); + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + gap: 12px; + margin: 0 auto; + text-align: center; +} + +.systemState > svg { + color: var(--terracotta); +} + +.systemState h1 { + margin: 5px 0 0; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: clamp(34px, 6vw, 52px); + font-weight: 400; + line-height: 1; + letter-spacing: -0.03em; +} + +.systemState p { + max-width: 440px; + margin: 0 0 14px; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.65; +} + +.accessShell { + min-height: calc(100vh - 68px); + display: grid; + place-items: center; + padding: 40px 20px; +} + +.accessCard { + width: min(500px, 100%); + padding: clamp(28px, 5vw, 46px); + background: var(--paper-bright); + border: 1px solid var(--line-strong); + box-shadow: 0 24px 80px rgba(50, 34, 25, 0.12); +} + +.accessCard h1 { + margin: 13px 0 12px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: clamp(38px, 8vw, 56px); + font-weight: 400; + line-height: 0.95; + letter-spacing: -0.035em; +} + +.accessCard > p { + margin: 0 0 28px; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.7; +} + +.accessCard form { + display: flex; + flex-direction: column; + gap: 17px; +} + +.accessCard .primaryButton, +.accessCard .secondaryButton { + width: 100%; + min-height: 50px; + text-decoration: none; +} + +.accessCard > small { + display: block; + margin-top: 20px; + color: var(--ink-muted); + font-size: 12px; + line-height: 1.55; +} + +.accessAlert { + margin-bottom: 18px; + padding: 13px 14px; + color: var(--terracotta-deep); + background: rgba(173, 77, 57, 0.08); + border: 1px solid rgba(173, 77, 57, 0.22); + font-size: 13px; + line-height: 1.55; +} + +.accessActions { + display: grid; + gap: 10px; + margin-top: 14px; +} + +.stepFieldset { + min-width: 0; + margin: 0; + padding: 0; + border: 0; +} + +.recordLockNotice { + display: flex; + align-items: flex-start; + gap: 10px; + margin-bottom: 18px; + padding: 13px 15px; + color: var(--ink); + background: rgba(173, 77, 57, 0.075); + border: 1px solid rgba(173, 77, 57, 0.2); + font-size: 11px; + line-height: 1.55; +} + +.recordLockNotice svg { + flex: 0 0 auto; + margin-top: 1px; + color: var(--terracotta); +} + +.recordLockNotice strong { + display: block; + margin-bottom: 1px; + color: var(--espresso); + font-size: 11px; +} + +.recordLockReason { + display: block; + margin-top: 5px; + color: var(--terracotta); + font-size: 10px; + font-weight: 650; +} + +.sentNotice { + display: flex; + align-items: flex-start; + gap: 10px; + padding: 16px; + color: var(--green); + background: var(--green-soft); + border: 1px solid rgba(45, 107, 80, 0.24); + font-size: 12px; + line-height: 1.55; +} + +.sentNotice svg { + flex: 0 0 auto; + margin-top: 1px; +} + +.previewBadge, +.saveState { + min-height: 24px; + padding: 0 9px; + border: 1px solid rgba(247, 239, 223, 0.16); + color: rgba(247, 239, 223, 0.66); + font-size: 9px; + font-weight: 650; + letter-spacing: 0.11em; + text-transform: uppercase; +} + +.previewBadge { + color: #f0d1c5; + border-color: rgba(211, 115, 88, 0.32); + background: rgba(173, 77, 57, 0.12); +} + +.saveState { + border: 0; + padding-inline: 2px; + transition: opacity 160ms ease; +} + +.saving { + opacity: 0.55; +} + +.iconButton { + min-width: 44px; + min-height: 44px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 7px; + padding: 0 11px; + color: rgba(247, 239, 223, 0.72); + background: transparent; + border: 1px solid rgba(247, 239, 223, 0.16); + border-radius: 2px; + font-size: 11px; + font-weight: 600; +} + +.iconButton:hover { + color: #fffaf0; + border-color: rgba(247, 239, 223, 0.35); +} + +.mobileHelp { + display: none; +} + +.workspace { + width: min(1420px, 100%); + display: grid; + grid-template-columns: 224px minmax(0, 760px) 256px; + align-items: start; + justify-content: center; + gap: clamp(26px, 3vw, 48px); + margin: 0 auto; + padding: 42px clamp(24px, 4vw, 64px) 80px; +} + +.rail { + position: sticky; + top: 110px; + min-height: calc(100vh - 150px); + display: flex; + flex-direction: column; + padding-right: 24px; + border-right: 1px solid var(--line); +} + +.railIntro { + display: flex; + flex-direction: column; + padding: 0 0 24px; + border-bottom: 1px solid var(--line); +} + +.kicker, +.cardEyebrow, +.eyebrow, +.phaseLabel, +.blueprintLabel { + font-size: 9px; + font-weight: 700; + letter-spacing: 0.16em; + text-transform: uppercase; +} + +.kicker, +.cardEyebrow { + color: var(--terracotta-deep); +} + +.railIntro > strong { + margin-top: 8px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 23px; + font-weight: 400; + line-height: 1.05; +} + +.railIntro > small { + margin-top: 5px; + color: var(--ink-muted); + font-size: 11px; +} + +.stepNav { + display: flex; + flex-direction: column; + gap: 22px; + padding: 26px 0; +} + +.phaseGroup { + display: flex; + flex-direction: column; + gap: 3px; +} + +.phaseLabel { + margin-bottom: 7px; + color: rgba(50, 34, 25, 0.42); +} + +.stepButton { + position: relative; + min-height: 44px; + display: grid; + grid-template-columns: 19px 1fr; + align-items: center; + gap: 8px; + padding: 4px 7px; + color: rgba(50, 34, 25, 0.55); + text-align: left; + background: transparent; + border: 0; + border-radius: 2px; + font-size: 11px; + font-weight: 590; +} + +.stepButton:hover:not(:disabled) { + color: var(--espresso); + background: rgba(50, 34, 25, 0.05); +} + +.stepButton:disabled { + color: rgba(50, 34, 25, 0.28); +} + +.currentStep { + color: var(--espresso); + background: var(--paper-bright); + box-shadow: inset 2px 0 var(--terracotta); +} + +.completeStep { + color: var(--green); +} + +.stepButton svg { + justify-self: center; +} + +.stepBullet { + width: 6px; + height: 6px; + justify-self: center; + background: currentColor; + border-radius: 50%; +} + +.railFooter { + display: flex; + align-items: flex-start; + gap: 9px; + margin-top: auto; + padding: 18px 0 0; + color: var(--ink-muted); + border-top: 1px solid var(--line); + font-size: 10px; + line-height: 1.55; +} + +.railFooter svg { + flex: 0 0 auto; + color: var(--green); +} + +.mainColumn { + min-width: 0; +} + +.stepHeader { + min-height: 154px; + padding: 4px 0 26px; + border-bottom: 1px solid var(--line-strong); +} + +.eyebrow { + display: flex; + align-items: center; + gap: 10px; + color: var(--terracotta-deep); +} + +.eyebrow::before { + width: 20px; + height: 1px; + content: ""; + background: currentColor; +} + +.stepHeader h1 { + max-width: 700px; + margin: 14px 0 8px; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: clamp(38px, 4vw, 54px); + font-weight: 400; + line-height: 0.98; + letter-spacing: -0.035em; +} + +.stepHeader h1:focus { + outline: none; +} + +.stepHeader p { + max-width: 650px; + margin: 0; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.65; +} + +.contentStack { + display: flex; + flex-direction: column; + gap: 20px; + padding-top: 28px; +} + +.heroPanel { + display: grid; + grid-template-columns: auto 1fr; + gap: 22px; + padding: clamp(24px, 4vw, 38px); + color: #f7efdf; + background: + radial-gradient(circle at 10% 0%, rgba(173, 77, 57, 0.24), transparent 34%), + var(--espresso-deep); + border: 1px solid var(--espresso-deep); +} + +.heroSeal { + width: 48px; + height: 48px; + display: grid; + place-items: center; + color: #edc9b8; + border: 1px solid rgba(247, 239, 223, 0.24); + border-radius: 50%; +} + +.heroPanel .cardEyebrow { + color: #d79b86; +} + +.heroPanel h2 { + margin: 8px 0 10px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: clamp(28px, 4vw, 40px); + font-weight: 400; + line-height: 1; + letter-spacing: -0.025em; +} + +.heroPanel p { + max-width: 560px; + margin: 0; + color: rgba(247, 239, 223, 0.68); + font-size: 13px; + line-height: 1.7; +} + +.overviewGrid { + display: grid; + grid-template-columns: repeat(3, 1fr); + border-top: 1px solid var(--line); + border-left: 1px solid var(--line); +} + +.overviewCard { + min-height: 160px; + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 21px; + background: rgba(251, 246, 236, 0.56); + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.overviewCard > svg { + color: var(--terracotta); +} + +.overviewCard > strong { + margin-top: auto; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 21px; + font-weight: 400; +} + +.overviewCard > p { + margin: 6px 0 0; + color: var(--ink-muted); + font-size: 11px; + line-height: 1.5; +} + +.infoBand, +.recoveryNote { + display: grid; + grid-template-columns: 126px 1fr; + gap: 18px; + align-items: start; + padding: 17px 18px; + color: var(--ink); + background: rgba(251, 246, 236, 0.48); + border: 1px solid var(--line); +} + +.infoBand > span { + color: var(--terracotta-deep); + font-size: 9px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; +} + +.infoBand p, +.recoveryNote p { + margin: 0; + color: var(--ink-muted); + font-size: 11px; + line-height: 1.6; +} + +.warningBand { + background: var(--amber-soft); + border-color: rgba(155, 103, 29, 0.24); +} + +.programSummary, +.batchSummary, +.quizHeader, +.trainingSummary, +.attributionHeader { + display: flex; + align-items: center; + justify-content: space-between; + gap: 20px; + padding: 20px 22px; + background: var(--paper-bright); + border: 1px solid var(--line); +} + +.programSummary > div, +.batchSummary > div, +.quizHeader > div, +.trainingSummary > div, +.attributionHeader > div { + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.programSummary strong, +.batchSummary strong, +.quizHeader strong, +.trainingSummary strong, +.attributionHeader strong { + margin-top: 5px; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 21px; + font-weight: 400; + line-height: 1.15; +} + +.programSummary small, +.quizHeader span, +.trainingSummary span { + margin-top: 4px; + color: var(--ink-muted); + font-size: 10px; +} + +.agreementReceipt { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 16px; + align-items: center; + padding: 18px 20px; + background: rgba(223, 234, 223, 0.62); + border: 1px solid rgba(45, 107, 80, 0.24); +} + +.agreementReceiptMark { + width: 42px; + height: 42px; + display: grid; + place-items: center; + color: var(--green); + background: rgba(251, 246, 236, 0.7); + border: 1px solid rgba(45, 107, 80, 0.25); + border-radius: 50%; +} + +.agreementReceipt > div { + min-width: 0; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.agreementReceipt strong { + margin-top: 4px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 19px; + font-weight: 400; + line-height: 1.15; +} + +.agreementReceipt small { + max-width: 430px; + margin-top: 4px; + color: var(--ink-muted); + font-size: 10px; + line-height: 1.5; +} + +.agreementReceipt dl { + display: grid; + grid-template-columns: repeat(3, auto); + gap: 16px; + margin: 0; +} + +.agreementReceipt dl > div { + min-width: 58px; +} + +.agreementReceipt dt { + color: var(--ink-muted); + font-size: 8px; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.agreementReceipt dd { + margin: 5px 0 0; + color: var(--espresso); + font-size: 10px; + font-weight: 700; +} + +.economicsCard { + overflow: hidden; + background: var(--paper-bright); + border: 1px solid var(--line-strong); +} + +.economicsCardMissing { + background: var(--amber-soft); + border-color: rgba(155, 103, 29, 0.3); +} + +.economicsHeader { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 15px; + align-items: center; + padding: 20px; +} + +.economicsMark { + width: 42px; + height: 42px; + display: grid; + place-items: center; + color: var(--terracotta-deep); + background: var(--paper); + border: 1px solid var(--line); + border-radius: 50%; +} + +.economicsHeader > div { + min-width: 0; +} + +.economicsHeader h2 { + margin: 4px 0 0; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 21px; + font-weight: 400; + line-height: 1.12; +} + +.economicsHeader p { + max-width: 580px; + margin: 5px 0 0; + color: var(--ink-muted); + font-size: 10px; + line-height: 1.55; +} + +.economicsHighlights { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + color: #fffaf0; + background: var(--espresso-deep); +} + +.economicsHighlights > div { + min-width: 0; + min-height: 122px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 18px 20px; + border-right: 1px solid rgba(247, 239, 223, 0.14); +} + +.economicsHighlights > div:last-child { + border-right: 0; +} + +.economicsHighlights span, +.economicsTerms > span, +.economicsReceipt span, +.receiptEconomics span { + color: var(--ink-muted); + font-size: 8px; + font-weight: 750; + letter-spacing: 0.13em; + text-transform: uppercase; +} + +.economicsHighlights span { + color: rgba(247, 239, 223, 0.54); +} + +.economicsHighlights strong { + overflow-wrap: anywhere; + margin-top: 7px; + color: #fffaf0; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 28px; + font-weight: 400; + line-height: 1; +} + +.economicsHighlights small { + margin-top: 7px; + color: rgba(247, 239, 223, 0.58); + font-size: 9px; + line-height: 1.45; +} + +.economicsDetails { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + margin: 0; + border-bottom: 1px solid var(--line); +} + +.economicsDetails > div { + min-width: 0; + padding: 15px 18px; + border-right: 1px solid var(--line); +} + +.economicsDetails > div:last-child { + border-right: 0; +} + +.economicsDetails dt { + color: var(--ink-muted); + font-size: 8px; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.economicsDetails dd { + margin: 5px 0 0; + color: var(--espresso); + font-size: 11px; + font-weight: 700; +} + +.economicsTerms { + padding: 18px 20px; + background: rgba(234, 220, 196, 0.45); + border-bottom: 1px solid var(--line); +} + +.economicsTerms p { + margin: 7px 0 0; + color: var(--ink); + font-size: 11px; + line-height: 1.65; +} + +.economicsReceipt { + display: grid; + grid-template-columns: 1.2fr 1fr 0.72fr 1.15fr; +} + +.economicsReceipt > div { + min-width: 0; + display: flex; + flex-direction: column; + padding: 14px 18px; + border-right: 1px solid var(--line); +} + +.economicsReceipt > div:last-child { + border-right: 0; +} + +.economicsReceipt strong, +.receiptEconomics strong { + overflow-wrap: anywhere; + margin-top: 5px; + color: var(--espresso); + font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; + font-size: 9px; + line-height: 1.35; +} + +.twoColumnFields, +.handleGrid, +.attributionFields { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px; +} + +.handleGrid { + grid-template-columns: repeat(2, minmax(0, 1fr)); +} + +.field { + min-width: 0; + display: flex; + flex-direction: column; + gap: 7px; +} + +.fieldLabel { + color: var(--ink); + font-size: 12px; + font-weight: 680; + letter-spacing: 0.04em; +} + +.fieldHint { + color: var(--ink-muted); + font-size: 12px; + line-height: 1.45; +} + +.field:has([aria-invalid="true"]) .fieldHint { + color: var(--red); + font-weight: 650; +} + +.field input, +.field select, +.field textarea { + width: 100%; + min-height: 44px; + padding: 11px 12px; + color: var(--espresso); + background: rgba(251, 246, 236, 0.78); + border: 1px solid var(--line-strong); + border-radius: 2px; + outline: none; + font-size: 14px; + transition: + border-color 140ms ease, + background 140ms ease; +} + +.field textarea { + resize: vertical; + line-height: 1.55; +} + +.field input:focus, +.field select:focus, +.field textarea:focus { + background: var(--paper-bright); + border-color: var(--terracotta); +} + +.checkStack { + display: flex; + flex-direction: column; + border-top: 1px solid var(--line); +} + +.checkRow { + position: relative; + min-height: 82px; + display: grid; + grid-template-columns: 20px 1fr; + gap: 14px; + align-items: start; + padding: 18px 16px; + background: rgba(251, 246, 236, 0.32); + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + border-left: 1px solid var(--line); + cursor: pointer; + transition: background 140ms ease; +} + +.checkRow:hover, +.checkedRow { + background: var(--paper-bright); +} + +.checkRow input, +.channelRow input, +.decisionButtons input { + position: absolute; + width: 1px; + height: 1px; + opacity: 0; + pointer-events: none; +} + +.checkRow input:focus-visible + .checkboxVisual, +.channelRow input:focus-visible + .radioVisual, +.decisionButtons label:has(input:focus-visible) { + outline: 3px solid var(--terracotta); + outline-offset: 3px; +} + +.checkboxVisual { + width: 19px; + height: 19px; + display: grid; + place-items: center; + margin-top: 1px; + color: #fffaf0; + background: transparent; + border: 1px solid var(--line-strong); + border-radius: 2px; +} + +.checkedRow .checkboxVisual { + background: var(--green); + border-color: var(--green); +} + +.checkRow strong, +.channelCopy strong, +.reviewRow strong { + display: block; + color: var(--espresso); + font-size: 12px; + font-weight: 680; +} + +.checkRow small, +.channelCopy small, +.reviewRow small { + display: block; + margin-top: 4px; + color: var(--ink-muted); + font-size: 12px; + line-height: 1.5; +} + +.providerPanel, +.attributionPanel, +.blueprint, +.receipt { + background: var(--paper-bright); + border: 1px solid var(--line-strong); +} + +.providerPanel, +.attributionPanel { + padding: 24px; +} + +.providerHeader { + display: grid; + grid-template-columns: auto 1fr auto; + gap: 13px; + align-items: center; + padding-bottom: 20px; + border-bottom: 1px solid var(--line); +} + +.providerIcon, +.connectionIcon { + width: 42px; + height: 42px; + display: grid; + place-items: center; + color: var(--terracotta-deep); + background: var(--paper-deep); + border-radius: 50%; +} + +.providerHeader > div { + display: flex; + flex-direction: column; +} + +.providerHeader strong { + margin-top: 4px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 20px; + font-weight: 400; +} + +.dataBoundary { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0; + margin: 22px 0; + border: 1px solid var(--line); +} + +.dataBoundary > div { + padding: 18px; +} + +.dataBoundary > div + div { + border-left: 1px solid var(--line); +} + +.dataBoundary span { + color: var(--ink); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.dataBoundary ul { + display: flex; + flex-direction: column; + gap: 7px; + margin: 12px 0 0; + padding: 0; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.45; + list-style: none; +} + +.dataBoundary li { + position: relative; + padding-left: 13px; +} + +.dataBoundary li::before { + position: absolute; + left: 0; + content: "·"; + color: var(--terracotta); +} + +.successReceipt, +.ownershipRow, +.recoveryNote { + display: flex; + align-items: center; + gap: 12px; +} + +.successReceipt { + padding: 15px 17px; + color: var(--green); + background: var(--green-soft); + border: 1px solid rgba(45, 107, 80, 0.2); +} + +.successReceipt > div { + display: flex; + flex-direction: column; +} + +.successReceipt strong { + font-size: 11px; +} + +.successReceipt small { + margin-top: 3px; + color: rgba(45, 107, 80, 0.76); + font-size: 12px; +} + +.recoveryNote { + grid-template-columns: unset; +} + +.recoveryNote svg { + flex: 0 0 auto; + color: var(--terracotta); +} + +.actionButton, +.primaryButton, +.secondaryButton, +.compactButton, +.completeButton, +.textButton, +.helpButton { + min-height: 44px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 8px; + border-radius: 2px; + font-size: 13px; + font-weight: 680; + transition: + background 140ms ease, + border-color 140ms ease, + color 140ms ease, + transform 140ms ease; +} + +.actionButton, +.primaryButton { + padding: 0 17px; + color: #fffaf0; + background: var(--espresso); + border: 1px solid var(--espresso); +} + +.actionButton { + width: 100%; + margin-top: 18px; +} + +.actionButton:hover:not(:disabled), +.primaryButton:hover:not(:disabled) { + background: var(--terracotta-deep); + border-color: var(--terracotta-deep); + transform: translateY(-1px); +} + +.actionButton:disabled, +.primaryButton:disabled { + color: rgba(247, 239, 223, 0.48); + background: rgba(50, 34, 25, 0.6); + border-color: transparent; +} + +.secondaryButton { + padding: 0 15px; + color: var(--ink); + background: transparent; + border: 1px solid var(--line-strong); +} + +.secondaryButton:hover:not(:disabled) { + color: var(--espresso); + background: var(--paper-bright); +} + +.secondaryButton:disabled { + opacity: 0; + pointer-events: none; +} + +.compactButton, +.completeButton, +.textButton, +.helpButton { + min-height: 44px; + padding: 0 11px; + color: var(--ink); + background: transparent; + border: 1px solid var(--line-strong); + font-size: 12px; +} + +.identityActions { + margin-top: 18px; +} + +.identityActions .actionButton { + margin-top: 0; +} + +.identityStatusMessage, +.inlineGuidance { + margin: 10px 0 0; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.55; +} + +.inlineGuidance { + margin: -10px 0 0; + padding: 11px 13px; + background: var(--amber-soft); + border: 1px solid rgba(155, 103, 29, 0.2); +} + +.completeButton { + color: var(--green); + background: var(--green-soft); + border-color: rgba(45, 107, 80, 0.22); +} + +.textButton { + width: 100%; + justify-content: space-between; + margin-top: 18px; + padding-inline: 0; + color: var(--terracotta-deep); + border: 0; + border-top: 1px solid var(--line); + border-radius: 0; +} + +.helpButton { + width: 100%; + margin-top: 16px; + color: var(--ink-muted); +} + +.connectionGrid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 14px; +} + +.connectionCard { + min-height: 246px; + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 20px; + background: rgba(251, 246, 236, 0.6); + border: 1px solid var(--line); +} + +.connectionCard > div { + display: flex; + flex-direction: column; + margin-top: 18px; +} + +.connectionCard strong { + margin-top: 6px; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 21px; + font-weight: 400; + line-height: 1.1; +} + +.connectionCard p { + margin: 8px 0 0; + color: var(--ink-muted); + font-size: 10px; + line-height: 1.55; +} + +.connectionCard > .statusPill { + margin-top: auto; +} + +.ownershipRow { + justify-content: space-between; + padding: 17px 18px; + background: var(--paper-bright); + border: 1px solid var(--line); +} + +.ownershipRow > div { + min-width: 0; + display: flex; + align-items: center; + gap: 12px; +} + +.ownershipRow > div > svg { + flex: 0 0 auto; + color: var(--terracotta); +} + +.ownershipRow span { + min-width: 0; +} + +.sectionHeading { + display: flex; + align-items: end; + justify-content: space-between; + gap: 22px; + margin-bottom: 11px; +} + +.sectionHeading p { + max-width: 390px; + margin: 0; + color: var(--ink-muted); + font-size: 10px; + line-height: 1.45; + text-align: right; +} + +.channelList { + display: flex; + flex-direction: column; + border-top: 1px solid var(--line); +} + +.channelRow { + position: relative; + min-height: 74px; + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 12px; + align-items: center; + padding: 14px 15px; + background: rgba(251, 246, 236, 0.35); + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + border-left: 1px solid var(--line); + cursor: pointer; +} + +.selectedChannel { + background: var(--paper-bright); + box-shadow: inset 2px 0 var(--terracotta); +} + +.radioVisual { + width: 16px; + height: 16px; + border: 1px solid var(--line-strong); + border-radius: 50%; +} + +.selectedChannel .radioVisual { + border: 5px solid var(--terracotta); +} + +.channelCopy { + min-width: 0; +} + +.attributionPanel { + padding: 0 24px 24px; +} + +.attributionHeader { + margin: 0 -24px 22px; + border-width: 0 0 1px; +} + +.attributionHeader strong { + font-family: var(--font-inter), sans-serif; + font-size: 16px; + font-weight: 680; + letter-spacing: 0.02em; +} + +.testChecklist { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1px; + margin-top: 20px; + background: var(--line); + border: 1px solid var(--line); +} + +.testChecklist > div { + min-height: 46px; + display: flex; + align-items: center; + gap: 8px; + padding: 10px 12px; + color: var(--ink-muted); + background: var(--paper-bright); + font-size: 9px; + line-height: 1.4; +} + +.testChecklist svg { + flex: 0 0 auto; + color: var(--green); +} + +.emptyCheck { + width: 14px; + height: 14px; + flex: 0 0 auto; + border: 1px solid var(--line-strong); + border-radius: 50%; +} + +.trainingSummary .progressTrack { + width: min(260px, 45%); +} + +.lessonList, +.questionList, +.draftList, +.reviewList { + display: flex; + flex-direction: column; + gap: 10px; +} + +.lessonCard { + display: grid; + grid-template-columns: 36px minmax(0, 1fr) auto; + gap: 15px; + align-items: start; + padding: 18px; + background: rgba(251, 246, 236, 0.48); + border: 1px solid var(--line); +} + +.lessonComplete { + background: var(--paper-bright); + border-color: rgba(45, 107, 80, 0.25); +} + +.lessonNumber, +.draftIndex { + color: var(--terracotta-deep); + font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; + font-size: 10px; + letter-spacing: 0.08em; +} + +.lessonCard > div > strong { + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 20px; + font-weight: 400; + line-height: 1.1; +} + +.lessonCard p { + margin: 6px 0 0; + color: var(--ink-muted); + font-size: 14px; + line-height: 1.5; +} + +.lessonRule { + margin-top: 11px; + padding: 10px 12px; + color: var(--ink); + background: var(--paper-deep); + font-size: 13px; + line-height: 1.5; +} + +.lessonRule span { + display: block; + margin-bottom: 3px; + color: var(--terracotta-deep); + font-size: 11px; + font-weight: 720; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.laneTabs { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + border-top: 1px solid var(--line); + border-left: 1px solid var(--line); +} + +.laneTabs button { + min-height: 82px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + padding: 13px 11px; + color: var(--ink-muted); + text-align: left; + background: rgba(251, 246, 236, 0.4); + border: 0; + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.laneTabs button[aria-selected="true"] { + color: var(--espresso); + background: var(--paper-bright); + box-shadow: inset 0 -2px var(--terracotta); +} + +.laneTabs span { + font-size: 10px; + font-weight: 680; + line-height: 1.25; +} + +.laneTabs small { + color: currentColor; + font-size: 11px; + line-height: 1.3; + opacity: 0.65; +} + +.blueprint { + padding: 25px; +} + +.blueprintHeader { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 20px; + padding-bottom: 20px; + border-bottom: 1px solid var(--line); +} + +.blueprintHeader h2 { + margin: 6px 0; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 30px; + font-weight: 400; + line-height: 1; +} + +.blueprintHeader p { + max-width: 500px; + margin: 0; + color: var(--ink-muted); + font-size: 13px; + line-height: 1.55; +} + +.hookBlock { + padding: 20px 0; + border-bottom: 1px solid var(--line); +} + +.hookBlock > span { + color: var(--terracotta-deep); + font-size: 8px; + font-weight: 720; + letter-spacing: 0.14em; + text-transform: uppercase; +} + +.hookBlock blockquote { + margin: 9px 0 0; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: clamp(22px, 3vw, 30px); + line-height: 1.1; +} + +.blueprintGrid { + display: grid; + grid-template-columns: 1.25fr 0.9fr; + gap: 32px; + padding-top: 22px; +} + +.blueprintLabel { + display: block; + margin-bottom: 11px; + color: var(--ink-muted); +} + +.blueprintGrid ol { + display: flex; + flex-direction: column; + gap: 9px; + margin: 0; + padding-left: 18px; + color: var(--ink); + font-size: 13px; + line-height: 1.5; +} + +.checkBullets, +.rejectBullets { + display: flex; + flex-direction: column; + gap: 8px; + margin: 0 0 20px; + padding: 0; + font-size: 12px; + line-height: 1.45; + list-style: none; +} + +.checkBullets li, +.rejectBullets li { + display: flex; + align-items: flex-start; + gap: 7px; +} + +.checkBullets svg, +.rejectBullets svg { + flex: 0 0 auto; + margin-top: 1px; +} + +.checkBullets svg { + color: var(--green); +} + +.rejectBullets { + color: var(--red); +} + +.spine { + display: grid; + grid-template-columns: repeat(6, 1fr); + background: var(--espresso); +} + +.spine > div { + min-height: 72px; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 12px; + color: #f7efdf; + border-right: 1px solid rgba(247, 239, 223, 0.14); +} + +.spine > div:last-child { + border: 0; +} + +.spine span { + color: #d29179; + font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; + font-size: 8px; +} + +.spine strong { + font-size: 9px; + font-weight: 650; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.quizHeader > div:last-child { + align-items: flex-end; + gap: 8px; +} + +.questionCard { + margin: 0; + padding: 18px; + background: rgba(251, 246, 236, 0.52); + border: 1px solid var(--line); +} + +.questionCard legend { + width: 100%; + display: grid; + grid-template-columns: 30px 1fr; + gap: 10px; + padding: 0; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 17px; + line-height: 1.25; +} + +.questionCard legend > span { + padding-top: 4px; + color: var(--terracotta-deep); + font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; + font-size: 9px; +} + +.decisionButtons { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 7px; + margin-top: 16px; +} + +.decisionButtons label { + position: relative; + min-height: 44px; + display: grid; + place-items: center; + color: var(--ink-muted); + background: transparent; + border: 1px solid var(--line-strong); + border-radius: 2px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.09em; + text-transform: uppercase; + cursor: pointer; +} + +.decisionSelected { + color: #fffaf0 !important; + background: var(--espresso) !important; + border-color: var(--espresso) !important; +} + +.answerFeedback { + display: flex; + align-items: flex-start; + gap: 8px; + margin-top: 12px; + padding: 11px 12px; + font-size: 12px; + line-height: 1.5; +} + +.answerFeedback svg { + flex: 0 0 auto; + margin-top: 1px; +} + +.correctAnswer { + color: var(--green); + background: var(--green-soft); +} + +.wrongAnswer { + color: var(--red); + background: var(--red-soft); +} + +.draftList { + gap: 14px; +} + +.draftCard { + display: flex; + flex-direction: column; + gap: 14px; + padding: 22px; + background: rgba(251, 246, 236, 0.62); + border: 1px solid var(--line); +} + +.draftHeader { + display: grid; + grid-template-columns: 30px 1fr; + gap: 10px; + padding-bottom: 14px; + border-bottom: 1px solid var(--line); +} + +.draftHeader > div { + display: flex; + flex-direction: column; +} + +.draftHeader > div > span { + color: var(--terracotta-deep); + font-size: 8px; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.draftHeader strong { + margin-top: 5px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 21px; + font-weight: 400; +} + +.reviewerFeedback { + display: flex; + flex-direction: column; + gap: 4px; + padding: 12px 13px; + color: var(--amber); + background: var(--amber-soft); + border: 1px solid rgba(155, 103, 29, 0.22); + font-size: 13px; + line-height: 1.5; +} + +.reviewerFeedback strong { + font-size: 12px; +} + +.flagRow, +.cleanRow, +.inlineError { + display: flex; + align-items: flex-start; + gap: 8px; + padding: 10px 12px; + font-size: 12px; + line-height: 1.45; +} + +.flagRow, +.inlineError { + color: var(--red); + background: var(--red-soft); +} + +.cleanRow { + color: var(--green); + background: var(--green-soft); +} + +.flagRow svg, +.cleanRow svg, +.inlineError svg { + flex: 0 0 auto; +} + +.flagRow strong { + display: block; + margin-bottom: 4px; +} + +.flagRow ul { + margin: 0; + padding-left: 17px; +} + +.flagRow li + li { + margin-top: 3px; +} + +.inlineError { + margin-top: 20px; + border: 1px solid rgba(156, 58, 52, 0.18); +} + +.reviewList { + gap: 0; + border-top: 1px solid var(--line); +} + +.reviewRow { + min-height: 70px; + display: grid; + grid-template-columns: auto 1fr auto; + gap: 12px; + align-items: center; + padding: 13px 15px; + background: rgba(251, 246, 236, 0.46); + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + border-left: 1px solid var(--line); +} + +.reviewIcon { + width: 25px; + height: 25px; + display: grid; + place-items: center; + color: var(--ink-muted); + border: 1px solid var(--line); + border-radius: 50%; +} + +.reviewIconComplete { + color: #fffaf0; + background: var(--green); + border-color: var(--green); +} + +.clearanceCard { + display: flex; + align-items: center; + justify-content: space-between; + gap: 18px; + padding: 20px; + color: #f7efdf; + background: var(--espresso); +} + +.clearanceCard > div { + display: flex; + align-items: flex-start; + gap: 12px; +} + +.clearanceCard svg { + flex: 0 0 auto; + color: #d29179; +} + +.clearanceCard strong { + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 19px; + font-weight: 400; +} + +.clearanceCard p { + max-width: 490px; + margin: 5px 0 0; + color: rgba(247, 239, 223, 0.64); + font-size: 12px; + line-height: 1.5; +} + +.receipt { + overflow: hidden; +} + +.receiptTop { + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 16px; + align-items: start; + padding: 26px; + color: #f7efdf; + background: + radial-gradient(circle at 8% 0%, rgba(173, 77, 57, 0.27), transparent 28%), + var(--espresso-deep); +} + +.receiptMark { + width: 48px; + height: 48px; + display: grid; + place-items: center; + color: #edc9b8; + border: 1px solid rgba(247, 239, 223, 0.24); + border-radius: 50%; +} + +.receiptTop .cardEyebrow { + color: #d29179; +} + +.receiptTop h2 { + margin: 6px 0; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 30px; + font-weight: 400; + line-height: 1; +} + +.receiptTop p { + margin: 0; + color: rgba(247, 239, 223, 0.64); + font-size: 13px; + line-height: 1.5; +} + +.receiptMeta { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + border-bottom: 1px solid var(--line); +} + +.receiptMeta > div { + min-height: 78px; + display: flex; + flex-direction: column; + justify-content: center; + padding: 14px 17px; + border-right: 1px solid var(--line); +} + +.receiptMeta > div:last-child { + border: 0; +} + +.receiptMeta span, +.receiptLock span { + color: var(--ink-muted); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.receiptMeta strong { + margin-top: 5px; + color: var(--espresso); + font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; + font-size: 12px; +} + +.receiptEconomics { + display: grid; + grid-template-columns: auto 1.2fr 0.9fr 1fr; + gap: 14px; + align-items: center; + padding: 15px 18px; + background: rgba(223, 234, 223, 0.62); + border-bottom: 1px solid rgba(45, 107, 80, 0.2); +} + +.receiptEconomics > svg { + color: var(--green); +} + +.receiptEconomics > div { + min-width: 0; + display: flex; + flex-direction: column; +} + +.receiptChecks { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px 22px; + padding: 22px 26px; +} + +.receiptChecks > div { + display: flex; + align-items: center; + gap: 8px; + color: var(--ink); + font-size: 12px; +} + +.receiptChecks svg { + flex: 0 0 auto; + color: var(--green); +} + +.receiptLock { + display: flex; + align-items: flex-start; + gap: 12px; + margin: 0 26px 24px; + padding: 16px; + color: var(--espresso); + background: var(--paper-deep); +} + +.receiptLock > svg { + flex: 0 0 auto; + margin-top: 2px; + color: var(--terracotta); +} + +.receiptLock > div { + display: flex; + flex-direction: column; +} + +.receiptLock strong { + margin-top: 4px; + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 18px; + font-weight: 400; +} + +.receiptLock p { + margin: 5px 0 0; + color: var(--ink-muted); + font-size: 12px; + line-height: 1.5; +} + +.receiptFooter { + display: flex; + justify-content: space-between; + gap: 20px; + padding: 12px 26px; + color: rgba(247, 239, 223, 0.56); + background: var(--espresso); + font-size: 11px; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.navigation { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-top: 28px; + padding-top: 20px; + border-top: 1px solid var(--line); +} + +.statusRail { + position: sticky; + top: 110px; + display: flex; + flex-direction: column; + gap: 12px; +} + +.statusCard { + display: flex; + flex-direction: column; + align-items: flex-start; + padding: 18px; + background: rgba(251, 246, 236, 0.55); + border: 1px solid var(--line); +} + +.statusCardHeader { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + color: var(--ink-muted); + font-size: 11px; + font-weight: 700; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.statusCard > strong { + margin-top: 20px; + color: var(--espresso); + font-family: var(--font-instrument-serif), Georgia, serif; + font-size: 42px; + font-weight: 400; + line-height: 0.9; +} + +.statusCard > small { + margin-top: 6px; + color: var(--ink-muted); + font-size: 11px; +} + +.progressTrack, +.mobileProgressTrack { + width: 100%; + height: 2px; + overflow: hidden; + background: rgba(50, 34, 25, 0.12); +} + +.statusCard .progressTrack { + margin-top: 18px; +} + +.progressTrack > span, +.mobileProgressTrack > span { + height: 100%; + display: block; + background: var(--terracotta); + transition: width 260ms cubic-bezier(0.16, 1, 0.3, 1); +} + +.lockCard { + color: #f7efdf; + background: var(--espresso-deep); + border-color: var(--espresso-deep); +} + +.lockTitle { + display: flex; + align-items: center; + gap: 8px; + color: #edc9b8; + font-size: 12px; + font-weight: 680; +} + +.lockCard p { + margin: 13px 0 16px; + color: rgba(247, 239, 223, 0.64); + font-size: 12px; + line-height: 1.55; +} + +.ownerRow { + display: flex; + align-items: center; + gap: 10px; + margin-top: 14px; +} + +.avatar { + width: 34px; + height: 34px; + display: grid; + place-items: center; + color: #fffaf0; + background: var(--terracotta); + border-radius: 50%; + font-size: 9px; + font-weight: 700; + letter-spacing: 0.06em; +} + +.ownerRow > div { + display: flex; + flex-direction: column; +} + +.ownerRow strong { + font-size: 11px; +} + +.ownerRow small { + margin-top: 2px; + color: var(--ink-muted); + font-size: 11px; +} + +.statusPill { + min-height: 26px; + display: inline-flex; + align-items: center; + gap: 6px; + padding: 0 8px; + border-radius: 999px; + font-size: 11px; + font-weight: 700; + letter-spacing: 0.05em; + white-space: nowrap; +} + +.statusDot { + width: 5px; + height: 5px; + background: currentColor; + border-radius: 50%; +} + +.status_neutral { + color: var(--ink-muted); + background: rgba(50, 34, 25, 0.08); +} + +.status_good { + color: var(--green); + background: var(--green-soft); +} + +.status_warn { + color: var(--amber); + background: var(--amber-soft); +} + +.status_blocked { + color: var(--red); + background: var(--red-soft); +} + +.status_review { + color: var(--terracotta-deep); + background: #eedad0; +} + +.lockCard .status_review, +.receiptTop .status_good, +.clearanceCard .status_review { + color: #f4d5c8; + background: rgba(173, 77, 57, 0.22); +} + +.mobileProgress { + display: none; +} + +.spinner { + animation: spin 800ms linear infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +@media (max-width: 1190px) { + .workspace { + grid-template-columns: 208px minmax(0, 760px); + } + + .statusRail { + display: none; + } + + .mobileHelp { + display: inline-flex; + } +} + +@media (max-width: 880px) { + .topbar { + min-height: 62px; + } + + .topbarMeta > .saveState, + .brandLockup > .brandDivider, + .brandLockup > .managedBy { + display: none; + } + + .productNameFull { + display: none; + } + + .productNameShort { + display: inline; + } + + .workspace { + display: block; + padding: 24px clamp(18px, 5vw, 42px) 72px; + } + + .rail { + display: none; + } + + .mobileProgress { + display: block; + padding: 14px clamp(18px, 5vw, 42px) 0; + } + + .mobileProgress > div:first-child { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 8px; + color: var(--ink-muted); + font-size: 9px; + letter-spacing: 0.08em; + text-transform: uppercase; + } + + .mobileProgress strong { + color: var(--espresso); + font-size: 9px; + } + + .stepHeader { + min-height: 140px; + } +} + +@media (max-width: 620px) { + .topbar { + padding-inline: 16px; + } + + .brandLockup { + gap: 10px; + } + + .brandLockup > .brandDivider, + .brandLockup > .productName, + .brandLockup > .managedBy { + display: none; + } + + .topbarMeta > .previewBadge, + .iconButton span { + display: none; + } + + .iconButton { + width: 44px; + padding: 0; + color: rgba(255, 250, 240, 0.9); + background: rgba(255, 250, 240, 0.04); + border-color: rgba(255, 250, 240, 0.3); + } + + .field input, + .field select, + .field textarea { + font-size: 16px; + } + + .workspace { + padding-inline: 16px; + padding-top: 19px; + } + + .mobileProgress { + padding-inline: 16px; + } + + .stepHeader { + min-height: 132px; + padding-bottom: 21px; + } + + .stepHeader h1 { + margin-top: 11px; + font-size: clamp(35px, 10.5vw, 44px); + } + + .stepHeader p { + font-size: 12px; + line-height: 1.55; + } + + .contentStack { + gap: 16px; + padding-top: 21px; + } + + .heroPanel { + grid-template-columns: 1fr; + gap: 18px; + padding: 23px; + } + + .heroPanel h2 { + font-size: 30px; + } + + .overviewGrid, + .connectionGrid, + .twoColumnFields, + .handleGrid, + .attributionFields, + .dataBoundary, + .blueprintGrid, + .receiptChecks { + grid-template-columns: 1fr; + } + + .overviewCard { + min-height: 130px; + } + + .infoBand { + grid-template-columns: 1fr; + gap: 8px; + } + + .programSummary, + .batchSummary, + .trainingSummary { + align-items: flex-start; + } + + .programSummary strong, + .batchSummary strong { + font-size: 19px; + } + + .agreementReceipt { + grid-template-columns: auto 1fr; + padding: 17px; + } + + .agreementReceipt dl { + grid-column: 1 / -1; + width: 100%; + grid-template-columns: repeat(3, 1fr); + padding-top: 14px; + border-top: 1px solid rgba(45, 107, 80, 0.2); + } + + .economicsHeader { + grid-template-columns: auto 1fr; + padding: 17px; + } + + .economicsHeader > .statusPill { + grid-column: 1 / -1; + justify-self: start; + } + + .economicsHighlights { + grid-template-columns: 1fr; + } + + .economicsHighlights > div { + min-height: 104px; + border-right: 0; + border-bottom: 1px solid rgba(247, 239, 223, 0.14); + } + + .economicsHighlights > div:last-child { + border-bottom: 0; + } + + .economicsDetails, + .economicsReceipt { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .economicsDetails > div:nth-child(2), + .economicsReceipt > div:nth-child(2) { + border-right: 0; + } + + .economicsDetails > div:nth-child(-n + 2), + .economicsReceipt > div:nth-child(-n + 2) { + border-bottom: 1px solid var(--line); + } + + .providerPanel, + .attributionPanel, + .blueprint { + padding: 18px; + } + + .providerHeader { + grid-template-columns: auto 1fr; + } + + .providerHeader > .statusPill { + grid-column: 1 / -1; + justify-self: start; + } + + .dataBoundary > div + div { + border-top: 1px solid var(--line); + border-left: 0; + } + + .ownershipRow, + .clearanceCard, + .sectionHeading { + align-items: flex-start; + flex-direction: column; + } + + .sectionHeading p { + text-align: left; + } + + .channelRow { + grid-template-columns: auto 1fr; + } + + .channelRow > .statusPill { + grid-column: 2; + justify-self: start; + } + + .attributionHeader { + margin: 0 -18px 18px; + padding: 17px 18px; + } + + .testChecklist { + grid-template-columns: 1fr; + } + + .trainingSummary .progressTrack { + width: 46%; + } + + .lessonCard { + grid-template-columns: 28px minmax(0, 1fr); + } + + .lessonCard > button { + grid-column: 2; + justify-self: start; + } + + .laneTabs { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .laneTabs button:last-child { + grid-column: 1 / -1; + } + + .blueprintHeader { + flex-direction: column; + } + + .spine { + grid-template-columns: repeat(3, 1fr); + } + + .spine > div:nth-child(3) { + border-right: 0; + } + + .spine > div:nth-child(-n + 3) { + border-bottom: 1px solid rgba(247, 239, 223, 0.14); + } + + .questionCard legend { + font-size: 16px; + } + + .decisionButtons { + gap: 5px; + } + + .decisionButtons label { + min-height: 44px; + font-size: 12px; + } + + .draftCard { + padding: 17px; + } + + .reviewRow { + grid-template-columns: auto 1fr; + } + + .reviewRow > .statusPill { + grid-column: 2; + justify-self: start; + } + + .receiptTop { + grid-template-columns: auto 1fr; + padding: 21px; + } + + .receiptTop > .statusPill { + grid-column: 1 / -1; + justify-self: start; + } + + .receiptMeta { + grid-template-columns: repeat(2, 1fr); + } + + .receiptMeta > div:nth-child(2) { + border-right: 0; + } + + .receiptMeta > div:nth-child(-n + 2) { + border-bottom: 1px solid var(--line); + } + + .receiptEconomics { + grid-template-columns: auto 1fr; + } + + .receiptEconomics > div:nth-of-type(n + 2) { + grid-column: 2; + } + + .receiptChecks { + padding: 18px 21px; + } + + .receiptLock { + margin: 0 21px 21px; + } + + .receiptFooter { + flex-direction: column; + gap: 5px; + padding-inline: 21px; + } + + .navigation { + position: sticky; + z-index: 20; + bottom: 0; + margin: 24px -16px -72px; + padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); + background: rgba(244, 234, 216, 0.96); + border-top: 1px solid var(--line-strong); + backdrop-filter: blur(16px); + } + + .navigation .primaryButton { + min-width: 150px; + } +} + +@media (prefers-reduced-motion: reduce) { + .canvas *, + .canvas *::before, + .canvas *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} diff --git a/biologix-affiliate-passport-site/src/passport/affiliate-passport.tsx b/biologix-affiliate-passport-site/src/passport/affiliate-passport.tsx new file mode 100644 index 0000000..3954784 --- /dev/null +++ b/biologix-affiliate-passport-site/src/passport/affiliate-passport.tsx @@ -0,0 +1,3307 @@ +"use client"; + +import { + ArrowLeft, + ArrowRight, + BadgeCheck, + Ban, + BookOpenCheck, + Check, + CheckCircle2, + ChevronRight, + CircleAlert, + CircleCheck, + ClipboardCheck, + ExternalLink, + FileCheck2, + Fingerprint, + HelpCircle, + Link2, + LoaderCircle, + LogOut, + LockKeyhole, + ShieldCheck, + UserRoundCheck, + WalletCards, +} from "lucide-react"; +import { + type ReactNode, + useEffect, + useMemo, + useRef, + useState, +} from "react"; +import styles from "./affiliate-passport.module.css"; +import { + CLAIM_QUESTIONS, + CONTENT_LANES, + INITIAL_STATE, + LESSONS, + type ClaimDecision, + type ContentDraft, + type ContentLaneId, + type PassportState, + type StepId, + STEP_IDS, + STEPS, +} from "./passport-content"; +import { + claimScore, + nextStepId, + publishingChannelLabel, + selectedPublishingAccountIsValid, + stepIsComplete, + type DraftValidation, + validateDraftReadiness, +} from "./passport-rules"; + +export { claimScore, stepIsComplete } from "./passport-rules"; + +const GATED_STEPS = STEPS.filter( + (step) => step.id !== "welcome" && step.id !== "receipt", +); + +const IDENTITY_POLL_DELAYS_MS = [0, 2_000, 4_000, 8_000, 12_000] as const; + +const US_REGION_OPTIONS = [ + "Alabama", + "Alaska", + "Arizona", + "Arkansas", + "California", + "Colorado", + "Connecticut", + "Delaware", + "District of Columbia", + "Florida", + "Georgia", + "Hawaii", + "Idaho", + "Illinois", + "Indiana", + "Iowa", + "Kansas", + "Kentucky", + "Louisiana", + "Maine", + "Maryland", + "Massachusetts", + "Michigan", + "Minnesota", + "Mississippi", + "Missouri", + "Montana", + "Nebraska", + "Nevada", + "New Hampshire", + "New Jersey", + "New Mexico", + "New York", + "North Carolina", + "North Dakota", + "Ohio", + "Oklahoma", + "Oregon", + "Pennsylvania", + "Rhode Island", + "South Carolina", + "South Dakota", + "Tennessee", + "Texas", + "Utah", + "Vermont", + "Virginia", + "Washington", + "West Virginia", + "Wisconsin", + "Wyoming", +] as const; + +type AffiliateSnapshot = { + ok: true; + enrollment: { + id: string; + revision: number; + lifecycleState: string; + creatorName: string; + email: string; + ownerName: string | null; + reviewerName: string | null; + taxRequestNotifiedAt: string | null; + statusReason: string | null; + isTest: boolean; + economicsStatus: "pending" | "bound"; + passport: PassportState; + }; + program: { + name?: string; + cohortLabel?: string | null; + agreementVersion?: string | null; + agreementSignedAt?: string | null; + agreementReceipt?: string | null; + eligibleRegions?: Record; + } | null; + economicsSnapshot: EconomicsSnapshot | null; + economicsReceipt: EconomicsReceipt | null; + contentSubmissions: Array<{ + slotId: ContentDraft["id"]; + status: string; + version: number; + reviewNotes: string | null; + }>; + helpRequests: Array<{ + id: string; + step: string; + message: string | null; + status: string; + resolution: string | null; + createdAt: string; + resolvedAt: string | null; + }>; + events: unknown[]; +}; + +type EconomicsSnapshot = { + currency: string; + model: + | "percentage" + | "retainer" + | "hybrid" + | "flat" + | "tiered" + | "custom"; + terms: string; + terms_reference: string; + commission_rate: string | null; + commission_base: string; + attribution_window_days: string; + settlement_hold_days: string; + clawback_days: string; + payout_cadence: + | "daily" + | "weekly" + | "biweekly" + | "monthly" + | "quarterly" + | "manual" + | "custom"; + payout_threshold: string; + agreement_version: string; + retainer_amount: string | null; + retainer_cadence: "weekly" | "monthly" | "quarterly" | "custom" | null; + retainer_proration: "none" | "daily" | "monthly" | "custom" | null; +}; + +type EconomicsReceipt = { + snapshotSha256: string; + boundAt: string; + agreementVersion: string; + termsReference: string; + isTest: boolean; +}; + +type EconomicsProjection = { + status: "pending" | "bound"; + isTest: boolean; + snapshot: EconomicsSnapshot | null; + receipt: EconomicsReceipt | null; +}; + +type LoadState = "loading" | "ready" | "error"; + +function isAffiliateSnapshot(value: unknown): value is AffiliateSnapshot { + if (!value || typeof value !== "object") return false; + const row = value as Partial; + return Boolean( + row.ok === true && + row.enrollment && + typeof row.enrollment.id === "string" && + typeof row.enrollment.revision === "number" && + row.enrollment.passport && + STEP_IDS.includes(row.enrollment.passport.currentStep), + ); +} + +function stepIndex(step: StepId): number { + return STEP_IDS.indexOf(step); +} + +function economicsIsBound( + economics: EconomicsProjection, +): economics is EconomicsProjection & { + status: "bound"; + snapshot: EconomicsSnapshot; + receipt: EconomicsReceipt; +} { + return Boolean( + economics.status === "bound" && + economics.snapshot && + economics.receipt?.snapshotSha256 && + economics.receipt.termsReference, + ); +} + +function readableToken(value: string): string { + return value + .split("_") + .map((part) => part.charAt(0).toUpperCase() + part.slice(1)) + .join(" "); +} + +function compactDecimal(value: string): string { + const amount = Number(value); + if (!Number.isFinite(amount)) return value; + return new Intl.NumberFormat("en-US", { + maximumFractionDigits: 4, + }).format(amount); +} + +function currencyAmount(value: string, currency: string): string { + const amount = Number(value); + if (!Number.isFinite(amount)) return `${value} ${currency}`; + try { + return new Intl.NumberFormat("en-US", { + style: "currency", + currency, + minimumFractionDigits: 0, + maximumFractionDigits: 2, + }).format(amount); + } catch { + return `${compactDecimal(value)} ${currency}`; + } +} + +function dayWindow(value: string, zeroLabel: string): string { + const amount = Number(value); + if (amount === 0) return zeroLabel; + if (amount === 1) return "1 day"; + return `${compactDecimal(value)} days`; +} + +function shortFingerprint(value: string): string { + if (value.length <= 24) return value; + return `${value.slice(0, 12)}…${value.slice(-8)}`; +} + +function completedGateCount(state: PassportState): number { + return GATED_STEPS.filter((step) => stepIsComplete(step.id, state)).length; +} + +function firstIncompleteGate(state: PassportState): StepId | null { + return ( + GATED_STEPS.find((step) => !stepIsComplete(step.id, state))?.id ?? null + ); +} + +function humanTime(value: Date): string { + return value.toLocaleTimeString([], { + hour: "numeric", + minute: "2-digit", + }); +} + +function initials(name: string | null): string { + if (!name) return "OV"; + const parts = name + .trim() + .split(/\s+/) + .filter(Boolean) + .slice(0, 2); + return parts.map((part) => part[0]?.toUpperCase() ?? "").join("") || "OV"; +} + +function creatorMayEdit(lifecycleState: string): boolean { + return ["invited", "in_progress", "changes_requested"].includes( + lifecycleState, + ); +} + +function redirectExpiredSession(response: Response): boolean { + if (response.status !== 401) return false; + window.location.assign("/passport/login?reason=session_expired"); + return true; +} + +function stepMayAdvance(step: StepId, state: PassportState): boolean { + switch (step) { + case "identity": + return ["verified", "checking", "needs_review"].includes( + state.identityStatus, + ); + case "payout": + return ( + state.legalPayee.trim().length >= 2 && + state.payoutEmail.includes("@") && + ["submitted", "connected"].includes(state.taxStatus) && + ["submitted", "connected"].includes(state.payoutStatus) + ); + case "accounts": + return ( + selectedPublishingAccountIsValid(state) && + ["checking", "verified"].includes(state.accountStatus) + ); + case "tracking": + return ["pending_review", "passed", "failed"].includes( + state.trackingStatus, + ); + default: + return stepIsComplete(step, state); + } +} + +function lockedRecordCopy(lifecycleState: string): { + title: string; + detail: string; +} { + switch (lifecycleState) { + case "submitted": + return { + title: "This submitted version is locked.", + detail: "Your owner will either approve it or return exact changes.", + }; + case "active": + return { + title: "This activated record is locked.", + detail: + "Your verified setup and activation receipt remain available here.", + }; + case "paused": + return { + title: "This affiliate account is paused.", + detail: "Your owner must clear the hold before activity can resume.", + }; + case "rejected": + return { + title: "This enrollment is closed.", + detail: "Contact your owner if you believe this decision needs review.", + }; + case "offboarded": + return { + title: "This affiliate account is closed.", + detail: + "Creator access has ended. OVO retains the historical audit record.", + }; + default: + return { + title: "This record is locked.", + detail: "Contact your owner if you need help with the next step.", + }; + } +} + +function Field({ + label, + hint, + children, +}: { + label: string; + hint?: string; + children: ReactNode; +}) { + return ( + + ); +} + +function StatusPill({ + tone, + children, +}: { + tone: "neutral" | "good" | "warn" | "blocked" | "review"; + children: ReactNode; +}) { + return ( + + + {children} + + ); +} + +function CheckRow({ + checked, + onChange, + title, + description, +}: { + checked: boolean; + onChange: (checked: boolean) => void; + title: string; + description: string; +}) { + return ( + + ); +} + +function GateIcon({ + status, +}: { + status: "complete" | "current" | "locked" | "available"; +}) { + if (status === "complete") { + return ; + } + if (status === "locked") { + return ; + } + return ; +} + +export function AffiliatePassport() { + const [state, setState] = useState(INITIAL_STATE); + const [snapshot, setSnapshot] = useState(null); + const [loadState, setLoadState] = useState("loading"); + const [lastSaved, setLastSaved] = useState(null); + const [saveFlash, setSaveFlash] = useState(false); + const [inlineError, setInlineError] = useState(null); + const [helpRequestedSteps, setHelpRequestedSteps] = useState([]); + const [actionBusy, setActionBusy] = useState(null); + const [identityPolling, setIdentityPolling] = useState(false); + const [identityTimedOut, setIdentityTimedOut] = useState(false); + const [showDraftErrors, setShowDraftErrors] = useState(false); + const headingRef = useRef(null); + const saveTimer = useRef | null>(null); + const hydrated = useRef(false); + const revision = useRef(0); + const lastPersisted = useRef(""); + const requestChain = useRef>(Promise.resolve()); + const identityPollGeneration = useRef(0); + const identityPollRunning = useRef(false); + + useEffect(() => { + let active = true; + + async function loadEnrollment() { + setLoadState("loading"); + try { + const response = await fetch("/api/biologix/enrollment", { + cache: "no-store", + credentials: "same-origin", + }); + if (redirectExpiredSession(response)) return; + const data: unknown = await response.json(); + if (!response.ok || !isAffiliateSnapshot(data)) { + throw new Error( + "The onboarding record did not return a valid response.", + ); + } + if (!active) return; + revision.current = data.enrollment.revision; + lastPersisted.current = JSON.stringify(data.enrollment.passport); + setSnapshot(data); + setState(data.enrollment.passport); + setHelpRequestedSteps( + (Array.isArray(data.helpRequests) ? data.helpRequests : []) + .filter((request) => + ["open", "in_progress"].includes(request.status), + ) + .map((request) => request.step) + .filter((step): step is StepId => + STEP_IDS.includes(step as StepId), + ), + ); + setLoadState("ready"); + hydrated.current = true; + + const returnedFromProvider = new URLSearchParams( + window.location.search, + ).has("verifycb"); + if ( + returnedFromProvider || + data.enrollment.passport.identityStatus === "checking" + ) { + void pollIdentityWithBackoff(); + } + } catch (error) { + if (!active) return; + setInlineError( + error instanceof Error + ? error.message + : "The onboarding record did not return a valid response.", + ); + setLoadState("error"); + } + } + + void loadEnrollment(); + return () => { + active = false; + identityPollGeneration.current += 1; + identityPollRunning.current = false; + }; + // Initial hydration owns this polling lifecycle. Subsequent manual checks + // use the same ref-guarded function without re-running the load effect. + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + if (!hydrated.current) return; + if ( + snapshot && + !creatorMayEdit(snapshot.enrollment.lifecycleState) + ) { + return; + } + const serialized = JSON.stringify(state); + if (serialized === lastPersisted.current) return; + if (saveTimer.current) clearTimeout(saveTimer.current); + setSaveFlash(true); + saveTimer.current = setTimeout(() => { + requestChain.current = requestChain.current + .then(async () => { + const response = await fetch("/api/biologix/enrollment", { + method: "PATCH", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + expectedRevision: revision.current, + action: "save_progress", + payload: state, + }), + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + if (response.status === 409) { + throw new Error( + "This Passport changed in another tab. Refresh before continuing.", + ); + } + const data: unknown = await response.json(); + if (!response.ok || !isAffiliateSnapshot(data)) { + throw new Error("Your changes could not be saved."); + } + revision.current = data.enrollment.revision; + lastPersisted.current = serialized; + setSnapshot((current) => + current + ? { + ...data, + enrollment: { + ...data.enrollment, + passport: current.enrollment.passport, + }, + } + : data, + ); + setLastSaved(humanTime(new Date())); + setInlineError(null); + }) + .catch((error: unknown) => { + setInlineError( + error instanceof Error + ? error.message + : "Your changes could not be saved.", + ); + }) + .finally(() => setSaveFlash(false)); + }, 650); + return () => { + if (saveTimer.current) clearTimeout(saveTimer.current); + }; + }, [snapshot, state]); + + useEffect(() => { + setInlineError(null); + requestAnimationFrame(() => headingRef.current?.focus()); + window.scrollTo({ top: 0, behavior: "smooth" }); + }, [state.currentStep]); + + const draftValidation = useMemo( + () => validateDraftReadiness(state.drafts), + [state.drafts], + ); + const draftReviewFeedback = useMemo(() => { + const feedback: Partial< + Record< + ContentDraft["id"], + { status: string; version: number; note: string | null } + > + > = {}; + for (const submission of snapshot?.contentSubmissions ?? []) { + const current = feedback[submission.slotId]; + if (!current || submission.version >= current.version) { + feedback[submission.slotId] = { + status: submission.status, + version: submission.version, + note: submission.reviewNotes, + }; + } + } + return feedback; + }, [snapshot?.contentSubmissions]); + + async function runAction( + action: string, + payload: Record = {}, + ): Promise { + if (saveTimer.current) clearTimeout(saveTimer.current); + setActionBusy(action); + setSaveFlash(true); + let result: AffiliateSnapshot | null = null; + + requestChain.current = requestChain.current + .then(async () => { + const currentSerialized = JSON.stringify(state); + if (currentSerialized !== lastPersisted.current) { + const saveResponse = await fetch("/api/biologix/enrollment", { + method: "PATCH", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + expectedRevision: revision.current, + action: "save_progress", + payload: state, + }), + }); + if (redirectExpiredSession(saveResponse)) { + throw new Error("Your secure session expired."); + } + const saved: unknown = await saveResponse.json(); + if (!saveResponse.ok || !isAffiliateSnapshot(saved)) { + throw new Error( + saveResponse.status === 409 + ? "This Passport changed in another tab. Refresh before continuing." + : "Your latest changes could not be saved.", + ); + } + revision.current = saved.enrollment.revision; + lastPersisted.current = currentSerialized; + } + + const response = await fetch("/api/biologix/enrollment", { + method: "PATCH", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + expectedRevision: revision.current, + action, + payload, + }), + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + const data: unknown = await response.json(); + if (!response.ok || !isAffiliateSnapshot(data)) { + const message = + data && + typeof data === "object" && + "message" in data && + typeof data.message === "string" + ? data.message + : action === "submit_review" + ? "The Passport is not ready for review yet." + : "That action could not be completed."; + throw new Error(message); + } + revision.current = data.enrollment.revision; + lastPersisted.current = JSON.stringify(data.enrollment.passport); + setSnapshot(data); + setState(data.enrollment.passport); + setLastSaved(humanTime(new Date())); + setInlineError(null); + result = data; + }) + .catch((error: unknown) => { + setInlineError( + error instanceof Error + ? error.message + : "That action could not be completed.", + ); + }) + .finally(() => { + setActionBusy(null); + setSaveFlash(false); + }); + + try { + await requestChain.current; + return result; + } catch (error) { + /* A failed action must not poison the serialized request chain. The next + deliberate retry gets a fresh promise after the UI reports the error. */ + requestChain.current = Promise.resolve(); + setInlineError( + error instanceof Error + ? error.message + : "That action could not be completed.", + ); + setActionBusy(null); + setSaveFlash(false); + return null; + } + } + + function clearIdentityCallbackParam() { + const url = new URL(window.location.href); + if (!url.searchParams.has("verifycb")) return; + url.searchParams.delete("verifycb"); + window.history.replaceState( + {}, + "", + `${url.pathname}${url.search}${url.hash}`, + ); + } + + async function refreshIdentityDecision(): Promise { + const verification = await fetch("/api/biologix/identity", { + cache: "no-store", + credentials: "same-origin", + }); + const verificationBody = (await verification.json().catch(() => ({}))) as { + error?: string; + }; + if (redirectExpiredSession(verification)) { + throw new Error("Your secure session expired."); + } + if (!verification.ok) { + throw new Error( + verificationBody.error === "identity_provider_unavailable" + ? "The identity provider is temporarily unavailable. Your progress is safe; retry the status check below." + : verification.status === 429 + ? "Status checks are temporarily limited. Wait a moment, then retry." + : "We could not refresh the identity decision. Your progress is safe; retry below.", + ); + } + + const refreshed = await fetch("/api/biologix/enrollment", { + cache: "no-store", + credentials: "same-origin", + }); + if (redirectExpiredSession(refreshed)) { + throw new Error("Your secure session expired."); + } + const refreshedData: unknown = await refreshed.json(); + if (!refreshed.ok || !isAffiliateSnapshot(refreshedData)) { + throw new Error("The decision was checked, but Passport could not refresh. Retry below."); + } + revision.current = refreshedData.enrollment.revision; + lastPersisted.current = JSON.stringify( + refreshedData.enrollment.passport, + ); + setSnapshot(refreshedData); + setState(refreshedData.enrollment.passport); + setLastSaved(humanTime(new Date())); + return refreshedData; + } + + async function pollIdentityWithBackoff() { + if (identityPollRunning.current) return; + identityPollRunning.current = true; + const generation = ++identityPollGeneration.current; + setIdentityPolling(true); + setIdentityTimedOut(false); + setInlineError(null); + + try { + for (const delayMs of IDENTITY_POLL_DELAYS_MS) { + if (delayMs > 0) { + await new Promise((resolve) => { + window.setTimeout(resolve, delayMs); + }); + } + if (generation !== identityPollGeneration.current) return; + + const refreshed = await refreshIdentityDecision(); + if ( + refreshed.enrollment.passport.identityStatus !== "checking" + ) { + setIdentityTimedOut(false); + return; + } + } + if (generation === identityPollGeneration.current) { + setIdentityTimedOut(true); + } + } catch (error) { + if (generation !== identityPollGeneration.current) return; + setIdentityTimedOut(true); + setInlineError( + error instanceof Error + ? error.message + : "We could not refresh the identity decision. Retry below.", + ); + } finally { + if (generation === identityPollGeneration.current) { + identityPollRunning.current = false; + setIdentityPolling(false); + clearIdentityCallbackParam(); + } + } + } + + async function startIdentityVerification() { + if (saveTimer.current) clearTimeout(saveTimer.current); + setActionBusy("identity"); + setSaveFlash(true); + setInlineError(null); + try { + await requestChain.current; + const currentSerialized = JSON.stringify(state); + if (currentSerialized !== lastPersisted.current) { + const saveResponse = await fetch("/api/biologix/enrollment", { + method: "PATCH", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + expectedRevision: revision.current, + action: "save_progress", + payload: state, + }), + }); + if (redirectExpiredSession(saveResponse)) { + throw new Error("Your secure session expired."); + } + const saved: unknown = await saveResponse.json(); + if (!saveResponse.ok || !isAffiliateSnapshot(saved)) { + throw new Error( + saveResponse.status === 409 + ? "This Passport changed in another tab. Refresh before continuing." + : "Your latest changes could not be saved.", + ); + } + revision.current = saved.enrollment.revision; + lastPersisted.current = currentSerialized; + setSnapshot(saved); + setState(saved.enrollment.passport); + } + + const response = await fetch("/api/biologix/identity", { + method: "POST", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({}), + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + const data = (await response.json()) as { + url?: string; + error?: string; + }; + if ( + response.status === 409 && + data.error === "identity_already_in_progress" + ) { + setActionBusy(null); + setSaveFlash(false); + await pollIdentityWithBackoff(); + return; + } + if (!response.ok || !data.url) { + throw new Error( + data.error === "identity_provider_unavailable" + ? "Identity verification is temporarily unavailable. Your progress is safe; retry below." + : "Identity verification is unavailable right now.", + ); + } + window.location.assign(data.url); + } catch (error) { + setInlineError( + error instanceof Error + ? error.message + : "Identity verification is unavailable right now.", + ); + setActionBusy(null); + setSaveFlash(false); + } + } + + async function requestHelp() { + if (helpRequestedSteps.includes(state.currentStep)) return; + setActionBusy("help"); + try { + const response = await fetch("/api/biologix/help", { + method: "POST", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ step: state.currentStep }), + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + if (!response.ok) throw new Error("We couldn't notify your manager."); + setHelpRequestedSteps((current) => [ + ...new Set([...current, state.currentStep]), + ]); + setInlineError(null); + } catch (error) { + setInlineError( + error instanceof Error + ? error.message + : "We couldn't notify your manager.", + ); + } finally { + setActionBusy(null); + } + } + + async function startPayoutSetup() { + const saved = await runAction("update_payout", { + legalPayee: state.legalPayee, + payoutEmail: state.payoutEmail, + request: "payout", + }); + if (!saved) return; + + setActionBusy("payout_portal"); + setInlineError(null); + try { + const response = await fetch("/api/biologix/payout", { + method: "POST", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + const data = (await response.json()) as { + url?: string; + error?: string; + }; + if (!response.ok || !data.url) { + throw new Error( + data.error === "payout_portal_unavailable" + ? "The secure payout portal is temporarily unavailable. Your request is saved for OVO follow-up." + : "We couldn't open the secure payout portal.", + ); + } + window.location.assign(data.url); + } catch (error) { + setInlineError( + error instanceof Error + ? error.message + : "We couldn't open the secure payout portal.", + ); + setActionBusy(null); + } + } + + async function requestTaxSetup() { + if (state.taxStatus === "connected") return; + if (state.taxStatus !== "submitted") { + const saved = await runAction("update_payout", { + legalPayee: state.legalPayee, + payoutEmail: state.payoutEmail, + request: "tax", + }); + if (!saved) return; + } + + setActionBusy("tax_request"); + setInlineError(null); + try { + const response = await fetch("/api/biologix/tax", { + method: "POST", + credentials: "same-origin", + headers: { "Content-Type": "application/json" }, + body: "{}", + }); + if (redirectExpiredSession(response)) { + throw new Error("Your secure session expired."); + } + const data = (await response.json()) as { error?: string }; + if (!response.ok) { + throw new Error( + data.error === "tax_request_delivery_failed" + ? "Your tax request is saved, but OVO notification did not send. Retry below." + : "Your tax request is saved, but its delivery receipt could not be confirmed. Retry below.", + ); + } + + const refreshed = await fetch("/api/biologix/enrollment", { + cache: "no-store", + credentials: "same-origin", + }); + if (redirectExpiredSession(refreshed)) { + throw new Error("Your secure session expired."); + } + const refreshedData: unknown = await refreshed.json(); + if (!refreshed.ok || !isAffiliateSnapshot(refreshedData)) { + throw new Error( + "OVO received the request. Refresh Passport to see its receipt.", + ); + } + revision.current = refreshedData.enrollment.revision; + lastPersisted.current = JSON.stringify( + refreshedData.enrollment.passport, + ); + setSnapshot(refreshedData); + setState(refreshedData.enrollment.passport); + setLastSaved(humanTime(new Date())); + } catch (error) { + setInlineError( + error instanceof Error + ? error.message + : "Your tax request is saved. Retry its OVO notification below.", + ); + } finally { + setActionBusy(null); + } + } + + if (loadState !== "ready" || !snapshot) { + return ( +
+
+
+ + + Biologix affiliate passport +
+ {loadState === "error" ? ( +
+
+ +
+
+ ) : null} +
+
+ {loadState === "loading" ? ( + <> + +

Opening your Passport

+

Loading your verified onboarding record.

+ + ) : ( + <> + +

We couldn't open your Passport

+

{inlineError ?? "Try again in a moment."}

+

+ Retry now. If this continues, reply to your original invitation + email so your named OVO activation owner can help. +

+ + + )} +
+
+ ); + } + + const currentIndex = stepIndex(state.currentStep); + const currentDefinition = STEPS[currentIndex]; + const economics: EconomicsProjection = { + status: snapshot.enrollment.economicsStatus, + isTest: snapshot.enrollment.isTest, + snapshot: snapshot.economicsSnapshot, + receipt: snapshot.economicsReceipt, + }; + const economicsBound = economicsIsBound(economics); + const stateGateCount = completedGateCount(state); + const gateCount = + !economicsBound && stepIsComplete("program", state) + ? Math.max(0, stateGateCount - 1) + : stateGateCount; + const gateTotal = GATED_STEPS.length; + const activationComplete = Boolean(state.receiptId); + const recordLocked = !creatorMayEdit(snapshot.enrollment.lifecycleState); + const lifecycleState = snapshot.enrollment.lifecycleState; + const receiptClosed = lifecycleState === "offboarded"; + const receiptPaused = lifecycleState === "paused"; + const receiptInactive = receiptClosed || receiptPaused; + const stepTitle = + state.currentStep === "receipt" && receiptClosed + ? "This affiliate relationship has ended." + : state.currentStep === "receipt" && receiptPaused + ? "Your onboarding clearance is paused." + : currentDefinition.title; + const stepDescription = + state.currentStep === "receipt" && receiptClosed + ? "Creator access is closed. This historical receipt records the clearance that was previously issued; it does not authorize production or publication." + : state.currentStep === "receipt" && receiptPaused + ? "This receipt remains on file, but it does not authorize production or publication until OVO reactivates the affiliate relationship." + : currentDefinition.description; + const activationNotStarted = gateCount === 0; + const score = claimScore(state); + const allOperationalGatesComplete = GATED_STEPS.filter( + (step) => step.id !== "review", + ).every((step) => stepIsComplete(step.id, state)) && economicsBound; + const latestResolvedHelp = (snapshot.helpRequests ?? []).find( + (request) => request.status === "resolved" && request.resolution, + ); + + const hasDraftIssues = !draftValidation.isReady; + + function patch(patchState: Partial) { + setState((current) => ({ ...current, ...patchState })); + } + + function visitStep(id: StepId) { + const nextIndex = stepIndex(id); + if (nextIndex > state.maxVisitedIndex) return; + patch({ currentStep: id }); + } + + function goNext() { + if (state.currentStep === "program" && !economicsBound) { + setInlineError( + "Your signed compensation record is not bound yet. Your activation owner must complete it before onboarding can continue.", + ); + return; + } + if ( + state.currentStep !== "welcome" && + !stepMayAdvance(state.currentStep, state) + ) { + setInlineError(completionMessage(state.currentStep, state)); + return; + } + const nextStep = nextStepId(state.currentStep); + const nextIndex = stepIndex(nextStep); + patch({ + currentStep: nextStep, + maxVisitedIndex: Math.max(state.maxVisitedIndex, nextIndex), + }); + } + + function goBack() { + if (currentIndex === 0) return; + patch({ currentStep: STEP_IDS[currentIndex - 1] }); + } + + function updateDraft( + id: ContentDraft["id"], + key: keyof Omit, + value: string, + ) { + patch({ + drafts: state.drafts.map((draft) => + draft.id === id ? { ...draft, [key]: value } : draft, + ), + batchReady: false, + }); + } + + async function submitForReview() { + if (!economicsBound) { + patch({ + currentStep: "program", + maxVisitedIndex: Math.max( + state.maxVisitedIndex, + stepIndex("program"), + ), + }); + setInlineError( + "Your signed compensation record must be bound before this Passport can enter review.", + ); + return; + } + const missing = firstIncompleteGate(state); + if (missing && missing !== "review") { + setInlineError( + `Complete ${STEPS.find((step) => step.id === missing)?.shortLabel.toLowerCase()} before submitting.`, + ); + return; + } + await runAction("submit_review"); + } + + return ( +
+
+
+ + + + + Biologix affiliate passport + + Biologix passport + + + managed by ovotalent. + +
+
+ + {snapshot.enrollment.lifecycleState.replace(/_/g, " ")} + + + {saveFlash + ? "Saving securely" + : lastSaved + ? `Saved ${lastSaved}` + : "Up to date"} + + +
+ +
+
+
+ +
+
+ {currentDefinition.phase} + + {gateCount} of {gateTotal} gates + +
+
+ +
+
+ +
+ + +
+
+
{currentDefinition.eyebrow}
+

+ {stepTitle} +

+

{stepDescription}

+
+ + {recordLocked && + (state.currentStep !== "receipt" || + ["paused", "offboarded", "rejected"].includes( + snapshot.enrollment.lifecycleState, + )) ? ( +
+ + + + { + lockedRecordCopy(snapshot.enrollment.lifecycleState) + .title + } + + { + lockedRecordCopy(snapshot.enrollment.lifecycleState) + .detail + } + {snapshot.enrollment.statusReason ? ( + + Reason: {snapshot.enrollment.statusReason} + + ) : null} + +
+ ) : null} + +
+ {state.currentStep === "welcome" ? ( + + ) : null} + {state.currentStep === "program" ? ( + + ) : null} + {state.currentStep === "identity" ? ( + void startIdentityVerification()} + onRefresh={() => void pollIdentityWithBackoff()} + /> + ) : null} + {state.currentStep === "payout" ? ( + void requestTaxSetup()} + onSubmitPayout={() => void startPayoutSetup()} + /> + ) : null} + {state.currentStep === "accounts" ? ( + + void runAction("update_accounts", { + handles: state.handles, + channel: state.selectedChannel, + selectedChannel: state.selectedChannel, + requestVerification: true, + }) + } + /> + ) : null} + {state.currentStep === "tracking" ? ( + void runAction("update_tracking_ack")} + busy={actionBusy === "update_tracking_ack"} + /> + ) : null} + {state.currentStep === "training" ? ( + + ) : null} + {state.currentStep === "playbook" ? ( + patch({ selectedLane: id })} + /> + ) : null} + {state.currentStep === "claims" ? ( + + ) : null} + {state.currentStep === "batch" ? ( + { + setShowDraftErrors(true); + if (hasDraftIssues) { + setInlineError( + "Resolve the exact plan issues shown below before these scripts can enter onboarding review.", + ); + return; + } + setInlineError(null); + patch({ batchReady: true }); + }} + /> + ) : null} + {state.currentStep === "review" ? ( + + ) : null} + {state.currentStep === "receipt" ? ( + + ) : null} +
+ + {inlineError ? ( +
+ + {inlineError} +
+ ) : null} + + {state.currentStep !== "receipt" ? ( +
+ + {state.currentStep === "review" ? ( + + ) : ( + + )} +
+ ) : null} +
+ + +
+
+ ); +} + +function completionMessage(step: StepId, state: PassportState): string { + switch (step) { + case "program": + return "Confirm your location and all three program controls."; + case "identity": + return "Start the hosted identity verification before continuing."; + case "payout": + return "Send both setup requests to OVO before continuing."; + case "accounts": + return `Add and submit the selected ${publishingChannelLabel( + state.selectedChannel, + )} account for ownership review.`; + case "tracking": + return "Run the assigned affiliate link test once. Your owner will repair any failed route."; + case "training": + return `Complete all five lessons. ${state.completedLessons.length} of ${LESSONS.length} are complete.`; + case "claims": + return `Score at least 5 of 6. Your current score is ${claimScore(state)}.`; + case "batch": + return "Complete and clear all three content plans, then mark the scripts ready."; + default: + return "Complete this step before continuing."; + } +} + +function WelcomeStep() { + return ( +
+
+
+ +
+
+ One controlled activation +

Finish with a record, not a checklist.

+

+ The Passport binds the person, executed agreement receipt, + payout-readiness status, channel, training, link verification, and + first three content plans into one reviewable onboarding record. +

+
+
+ +
+ {[ + { + icon: , + title: "Verify", + copy: "Adult identity, legal payee, and account ownership.", + }, + { + icon: , + title: "Prepare", + copy: "Evidence training, claims lab, and first three content plans.", + }, + { + icon: , + title: "Review", + copy: "One human decision with a permanent activation receipt.", + }, + ].map((item) => ( +
+ {item.icon} + {item.title} +

{item.copy}

+
+ ))} +
+ +
+ Your record +

+ Progress saves securely to your enrollment. Provider decisions and + reviewer approvals cannot be changed from this screen. +

+
+
+ ); +} + +function EconomicsTermsCard({ + economics, +}: { + economics: EconomicsProjection; +}) { + if (!economicsIsBound(economics)) { + return ( +
+
+ + + +
+ Compensation control +

Your terms are not ready yet

+

+ Your activation owner must bind the exact compensation snapshot + to your agreement before this Passport can continue. +

+
+ Action required +
+
+ ); + } + + const snapshot = economics.snapshot; + const receipt = economics.receipt; + const hasCommission = + snapshot.commission_rate !== null && + Number(snapshot.commission_rate) > 0; + const hasRetainer = + snapshot.retainer_amount !== null && + Number(snapshot.retainer_amount) > 0; + const payoutThreshold = + Number(snapshot.payout_threshold) === 0 + ? "No minimum" + : currencyAmount( + snapshot.payout_threshold, + snapshot.currency, + ); + + return ( +
+
+ + + +
+ + {receipt.isTest + ? "Sandbox compensation record" + : "Your signed compensation"} + +

+ {readableToken(snapshot.model)} terms, locked to this agreement +

+

+ These are your individual economics. They are read-only here and + travel with the agreement and activation receipt. +

+
+ + {receipt.isTest ? "Test only · nonpayable" : "Bound to agreement"} + +
+ +
+
+ {hasCommission ? "Commission" : "Model"} + + {hasCommission + ? `${compactDecimal(snapshot.commission_rate as string)}%` + : readableToken(snapshot.model)} + + + {hasCommission + ? snapshot.commission_base + : "Exact compensation terms below"} + +
+
+ {hasRetainer ? "Retainer" : "Attribution"} + + {hasRetainer + ? currencyAmount( + snapshot.retainer_amount as string, + snapshot.currency, + ) + : dayWindow(snapshot.attribution_window_days, "Same day")} + + + {hasRetainer + ? `${readableToken(snapshot.retainer_cadence as string)} · ${readableToken(snapshot.retainer_proration as string)} proration` + : "Recorded conversion window"} + +
+
+ Payout cadence + {readableToken(snapshot.payout_cadence)} + {payoutThreshold} payout threshold +
+
+ +
+
+
Attribution window
+
{dayWindow(snapshot.attribution_window_days, "Same day")}
+
+
+
Settlement hold
+
{dayWindow(snapshot.settlement_hold_days, "No hold")}
+
+
+
Clawback window
+
{dayWindow(snapshot.clawback_days, "No clawback window")}
+
+
+
Currency
+
{snapshot.currency}
+
+
+ +
+ Exact terms +

{snapshot.terms}

+
+ +
+
+ Terms reference + {receipt.termsReference} +
+
+ Agreement version + {receipt.agreementVersion} +
+
+ Bound + {new Date(receipt.boundAt).toLocaleDateString()} +
+
+ Snapshot fingerprint + + {shortFingerprint(receipt.snapshotSha256)} + +
+
+
+ ); +} + +function ProgramStep({ + state, + setState, + program, + economics, +}: { + state: PassportState; + setState: (updater: (current: PassportState) => PassportState) => void; + program: AffiliateSnapshot["program"]; + economics: EconomicsProjection; +}) { + const regionOptions = useMemo(() => { + const configured = program?.eligibleRegions?.US ?? []; + const source = configured.length > 0 ? configured : US_REGION_OPTIONS; + return [...new Set(source)].sort((left, right) => + left.localeCompare(right), + ); + }, [program?.eligibleRegions]); + + useEffect(() => { + if ( + state.stateOfResidence && + !regionOptions.includes(state.stateOfResidence) + ) { + setState((current) => ({ ...current, stateOfResidence: "" })); + } + }, [regionOptions, setState, state.stateOfResidence]); + + return ( +
+
+
+ Invitation + {program?.name ?? "Biologix affiliate program"} + {program?.cohortLabel ?? "Invite-only creator activation"} +
+ Invite verified +
+ +
+ + + +
+ Agreement already complete + Biologix Creator Affiliate Agreement + + The Passport starts only after the executed agreement has been + verified. There is nothing to sign in this flow. + +
+
+
+
Version
+
{program?.agreementVersion ?? "Recorded"}
+
+
+
Signed
+
+ {program?.agreementSignedAt + ? new Date(program.agreementSignedAt).toLocaleDateString() + : "Verified"} +
+
+
+
Receipt
+
{program?.agreementReceipt ?? "On file"}
+
+
+
+ + + +
+ + + + + + +
+ +
+ + setState((current) => ({ + ...current, + agreements: { ...current.agreements, accurate: checked }, + })) + } + title="The information I submit is accurate" + description="A mismatch pauses activation and routes the record to manual review." + /> + + setState((current) => ({ + ...current, + agreements: { ...current.agreements, terms: checked }, + })) + } + title="I will use only my assigned link and code" + description="Every channel and post maps back to the creator record so OVO can verify the assigned redirect and log clicks to the correct creator." + /> + + setState((current) => ({ + ...current, + agreements: { ...current.agreements, reviewControl: checked }, + })) + } + title="I will not publish before written approval" + description="After onboarding, I will submit the exact final media, caption, thumbnail, and disclosures through the designated content-approval portal. I will not publish until that exact package receives written approval." + /> +
+
+ ); +} + +function IdentityStep({ + status, + busy, + polling, + timedOut, + onVerify, + onRefresh, +}: { + status: PassportState["identityStatus"]; + busy: boolean; + polling: boolean; + timedOut: boolean; + onVerify: () => void; + onRefresh: () => void; +}) { + const checking = status === "checking"; + const needsCorrection = ["declined", "needs_review"].includes(status); + return ( +
+
+
+ + + +
+ Hosted verification + Didit identity + liveness +
+ + {status === "verified" + ? "Verified" + : checking + ? "Checking" + : needsCorrection + ? "Action needed" + : "Not started"} + +
+ +
+
+ OVO receives +
    +
  • Hosted provider approval decision
  • +
  • Adult eligibility result
  • +
  • Verification reference and timestamp
  • +
  • Current verification status
  • +
+
+
+ Academy does not store +
    +
  • Identity document or document image
  • +
  • Selfie or biometric template
  • +
  • Date of birth
  • +
  • Full identity document number
  • +
  • A reusable copy of identity evidence
  • +
+
+
+ + {status === "verified" ? ( +
+ +
+ Verification passed + Adult eligibility · provider approval · receipt +
+
+ ) : ( +
+ + {checking ? ( +

+ {timedOut + ? "The provider is still processing. You can safely leave and return, or check again now." + : "Passport checks automatically for a decision. This button always remains available as a recovery path."} +

+ ) : needsCorrection ? ( +

+ The last attempt did not clear this gate. Restart verification + or flag this step for your OVO owner. +

+ ) : null} +
+ )} +
+ +
+ +

+ If a legal name differs from the payee or verification fails, the + creator can pause, correct the record, and request a manual review. + Failure never silently advances the Passport. +

+
+
+ ); +} + +function PayoutStep({ + state, + setState, + busy, + taxRequestDelivered, + onSubmitTax, + onSubmitPayout, +}: { + state: PassportState; + setState: (updater: (current: PassportState) => PassportState) => void; + busy: boolean; + taxRequestDelivered: boolean; + onSubmitTax: () => void; + onSubmitPayout: () => void; +}) { + return ( +
+
+ + + setState((current) => ({ + ...current, + legalPayee: event.target.value, + })) + } + /> + + + + setState((current) => ({ + ...current, + payoutEmail: event.target.value, + })) + } + /> + +
+ +
+
+ + + +
+ Tax profile + Secure tax setup +

+ Send a request to OVO Payments. We'll confirm it at your + payout email, then a specialist will provide the next secure + step. Never enter a tax ID in Passport or ordinary email. +

+
+ {state.taxStatus === "connected" ? ( + Tax profile verified + ) : state.taxStatus === "submitted" ? ( +
+ + {taxRequestDelivered + ? "OVO received request" + : "Request saved · delivery pending"} + + {!taxRequestDelivered ? ( + + ) : null} +
+ ) : ( + + )} +
+ +
+ + + +
+ Payout rail + Verified payout account +

+ Open OVO's hosted payout portal. Account and routing numbers + never enter or pass through this Passport. +

+
+ {state.payoutStatus === "connected" ? ( + Destination approved by OVO + ) : state.payoutStatus === "submitted" ? ( +
+ Setup in progress + +
+ ) : ( + + )} +
+
+ +
+ Payout readiness +

+ This Passport verifies payout readiness only. The merchant settlement + workflow handles order reconciliation, commission statements, and + payout approval. +

+
+
+ ); +} + +function AccountsStep({ + state, + setState, + busy, + onVerify, +}: { + state: PassportState; + setState: (updater: (current: PassportState) => PassportState) => void; + busy: boolean; + onVerify: () => void; +}) { + const selectedAccountReady = selectedPublishingAccountIsValid(state); + const selectedChannelLabel = publishingChannelLabel(state.selectedChannel); + const channelRows = [ + { + id: "newsletter" as const, + label: "Newsletter / owned site", + status: "Primary", + tone: "good" as const, + note: "Long-form education, tracked deep links, and owned audience data.", + }, + { + id: "instagram" as const, + label: "Instagram", + status: "Launch lane", + tone: "review" as const, + note: "Reels, carousels, Stories, and the platform partnership label.", + }, + { + id: "tiktok" as const, + label: "TikTok", + status: "Research lane", + tone: "warn" as const, + note: "Short-form testing concepts and audience response research.", + }, + { + id: "youtube" as const, + label: "YouTube", + status: "Depth lane", + tone: "neutral" as const, + note: "Long-form education and searchable research explainers.", + }, + ]; + + return ( +
+
+ {(Object.keys(state.handles) as Array).map( + (key) => ( + + + setState((current) => ({ + ...current, + handles: { + ...current.handles, + [key]: event.target.value, + }, + accountStatus: "not_started", + })) + } + /> + + ), + )} +
+ +
+
+ + + Account ownership receipt + + OVO verifies the handle against the creator record and records + the decision here. Your selected {selectedChannelLabel} account + is the account sent for review. + + +
+ {state.accountStatus === "verified" ? ( + Ownership verified + ) : state.accountStatus === "checking" ? ( + Review pending + ) : ( + + )} +
+ {!selectedAccountReady && state.accountStatus !== "verified" ? ( +
+ Add a valid{" "} + {state.selectedChannel === "newsletter" + ? "HTTPS owned-site URL" + : `${selectedChannelLabel} handle`}{" "} + before requesting ownership review. +
+ ) : null} + +
+
+ Planned primary channel +

+ Select the channel that will carry the creator's first + planned content. Channel verification does not approve a post. +

+
+
+ {channelRows.map((channel) => ( + + ))} +
+
+
+ ); +} + +function TrackingStep({ + state, + busy, + onTest, +}: { + state: PassportState; + busy: boolean; + onTest: () => void; +}) { + return ( +
+
+
+
+ Assigned tracking asset + {state.creatorId} +
+ + {state.trackingStatus === "passed" + ? "OVO verified" + : state.trackingStatus === "pending_review" + ? "OVO verifying" + : state.trackingStatus === "failed" + ? "Needs attention" + : state.trackingStatus === "provisioning" + ? "Assigned" + : "Inactive"} + +
+
+ + + + + + +
+ +
+ {[ + "OVO HTTPS redirect responds", + "Creator ID survives the OVO redirect", + "Code maps to the same creator record", + "Destination host and path match the locked route", + "OVO click logger returns a unique test receipt", + ].map((item) => ( +
+ {state.trackingStatus === "passed" ? ( + + ) : ( + + )} + {item} +
+ ))} +
+ + +
+ +
+ Link verification only +

+ This test verifies the OVO redirect, assigned creator mapping, and + click logging. It does not validate orders, refunds, commissions, or + payouts, and it does not publish anything. +

+
+
+ ); +} + +function TrainingStep({ + state, + setState, +}: { + state: PassportState; + setState: (updater: (current: PassportState) => PassportState) => void; +}) { + return ( +
+
+
+ Lesson progress + + {state.completedLessons.length} / {LESSONS.length} + +
+
+ +
+
+ +
+ {LESSONS.map((lesson) => { + const complete = state.completedLessons.includes(lesson.id); + return ( +
+ {lesson.number} +
+ {lesson.title} +

{lesson.summary}

+
+ Operating rule + {lesson.rule} +
+
+ +
+ ); + })} +
+
+ ); +} + +function PlaybookStep({ + selected, + onSelect, +}: { + selected: ContentLaneId | null; + onSelect: (id: ContentLaneId) => void; +}) { + const lane = CONTENT_LANES.find((item) => item.id === selected) ?? CONTENT_LANES[0]; + return ( +
+
+ {CONTENT_LANES.map((item) => ( + + ))} +
+ +
+
+
+ {lane.format} +

{lane.label}

+

{lane.job}

+
+ Template +
+ +
+ Opening hook +
“{lane.hook}”
+
+ +
+
+ Beat sheet +
    + {lane.beats.map((beat) => ( +
  1. {beat}
  2. + ))} +
+
+
+ Capture list +
    + {lane.capture.map((item) => ( +
  • + + {item} +
  • + ))} +
+ Automatic rejects +
    + {lane.reject.map((item) => ( +
  • + + {item} +
  • + ))} +
+
+
+
+ +
+ {["Hook", "Context", "Evidence", "Boundary", "Disclosure", "CTA"].map( + (item, index) => ( +
+ {String(index + 1).padStart(2, "0")} + {item} +
+ ), + )} +
+
+ ); +} + +function ClaimsStep({ + state, + setState, + score, +}: { + state: PassportState; + setState: (updater: (current: PassportState) => PassportState) => void; + score: number; +}) { + const answered = Object.keys(state.claimAnswers).length; + return ( +
+
+
+ Pass mark + 5 / 6 +
+
+ Answered {answered} / 6 + = 5 ? "good" : "neutral"}> + Score {score} + +
+
+ +
+ {CLAIM_QUESTIONS.map((question, index) => { + const answer = state.claimAnswers[question.id]; + const correct = answer === question.correct; + return ( +
+ + {String(index + 1).padStart(2, "0")} + {question.prompt} + +
+ {(["publish", "rewrite", "reject"] as ClaimDecision[]).map( + (decision) => ( + + ), + )} +
+ {answer ? ( +
+ {correct ? ( + + ) : ( + + )} + + {correct ? "Correct." : `Answer: ${question.correct}.`}{" "} + {question.explanation} + +
+ ) : null} +
+ ); + })} +
+
+ ); +} + +function BatchStep({ + state, + validation, + showErrors, + reviewFeedback, + onUpdate, + onReady, +}: { + state: PassportState; + validation: DraftValidation; + showErrors: boolean; + reviewFeedback: Partial< + Record< + ContentDraft["id"], + { status: string; version: number; note: string | null } + > + >; + onUpdate: ( + id: ContentDraft["id"], + key: keyof Omit, + value: string, + ) => void; + onReady: () => void; +}) { + return ( +
+
+
+ Required content plans + + 1 Reel script · 1 carousel plan · 1 Story sequence plan + +
+ + {state.batchReady + ? "Ready for review" + : showErrors && !validation.isReady + ? "Changes required" + : "Draft plan"} + +
+ +
+ {state.drafts.map((draft, index) => { + const issues = validation.byDraft[draft.id] ?? []; + const visibleIssues = showErrors ? issues : []; + const reviewerFeedback = reviewFeedback[draft.id]; + const issueFor = (field: string) => + visibleIssues.find((issue) => issue.field === field); + return ( +
+
+ + {String(index + 1).padStart(2, "0")} + +
+ {draft.format} + {draft.title} +
+
+ + {reviewerFeedback && + ["changes_requested", "rejected"].includes( + reviewerFeedback.status, + ) ? ( +
+ Reviewer requested changes + + {reviewerFeedback.note ?? + "Update this plan, run preflight again, and resubmit all three scripts."} + +
+ ) : null} + + + '; + } else if (f.type === 'number' || f.type === 'money') { + out = ''; + } else if (f.type === 'date') { + out = ''; + } else if (f.type === 'bool') { + out = ''; + } else if (f.type === 'select') { + var opts = ''; + (f.options || []).forEach(function (o) { + var lab = (f.key === 'stage' && STAGE_BY_ID[o]) ? STAGE_BY_ID[o].label : o; + opts += ''; + }); + out = ''; + } else if (f.type === 'ref') { + var refs = CRM.all(f.ref).filter(function (r) { return !rec || r.id !== rec.id; }); + if ((entity === 'sales' || entity === 'payouts') && f.key === 'affiliateId') { + refs = refs.filter(function (r) { + return String(r.id) === String(v) || ( + r.authoritative === true && + Boolean(r.enrollmentId) && + !CRM.isTestAffiliate(r) && + r.economicsStatus === 'bound' + ); + }); + } + refs.sort(function (a, b) { return String(a.name).localeCompare(String(b.name)); }); + var ropts = ''; + refs.forEach(function (r) { + ropts += ''; + }); + out = ''; + } else if (f.type === 'multi') { + var have = v || []; + out = '
' + + (f.options || []).map(function (o, i) { + var oid = id + '-' + i; + return ''; + }).join('') + '
'; + } else if (f.type === 'gates') { + var g = v || {}; + out = '
' + + CRM.GATES.map(function (gate, i) { + var passed = g[gate.id] === true; + return '
' + (i + 1) + ' ' + esc(gate.label) + + '' + esc(gate.note) + '
'; + }).join('') + '
'; + } else { + out = ''; + } + + var showLabel = f.type !== 'bool'; + return '
' + + (showLabel ? '' : '') + + out + + (locked || f.type === 'gates' ? '

' + + (f.readOnly ? 'Authoritative server ledger value.' : 'Authoritative. Change this through its specific lifecycle action.') + + '

' : '') + + (f.hint ? '

' + esc(f.hint) + '

' : '') + + '

' + + '
'; + } + + function recordActionAvailable(record, action) { + return Array.isArray(record && record.availableActions) && + record.availableActions.indexOf(action) >= 0 && + hasExplicitCapability(action); + } + + function agreementAux(a) { + var agreement = a.agreement && typeof a.agreement === 'object' ? a.agreement : {}; + var receipt = a.economicsReceipt && typeof a.economicsReceipt === 'object' + ? a.economicsReceipt : null; + var agreementStatus = agreement.enrollmentStatus || agreement.engineStatus || 'not started'; + var agreementTone = agreement.webhookVerified === true + ? 'is-ok' + : agreementStatus === 'pending' || agreementStatus === 'not started' + ? 'is-quiet' + : 'is-warn'; + var actions = []; + if (recordActionAvailable(a, 'agreement.launch')) { + actions.push( + '' + ); + } + if (recordActionAvailable(a, 'agreement.manage')) { + actions.push( + '' + ); + } + if (recordActionAvailable(a, 'invitation.send')) { + actions.push( + '' + ); + } + var economics = receipt + ? '
' + + '
Economics' + + pill(a.economicsStatus || 'bound', 'is-ok') + '
' + + '
Terms reference' + + esc(receipt.termsReference || 'not supplied') + '
' + + '
Agreement version' + + esc(receipt.agreementVersion || 'not supplied') + '
' + + '
Snapshot receipt' + + esc(receipt.snapshotSha256 || a.economicsSnapshotSha256 || 'not supplied') + '
' + + '
Bound' + + esc(fmtDateTime(receipt.boundAt)) + '
' + + '
' + : '
Economics not bound
' + + '
A production agreement cannot launch until the exact per-affiliate economics receipt exists.
'; + var evidence = agreement.webhookVerified === true + ? '

' + + pill('Verified signature evidence', 'is-ok') + + (agreement.signedAt ? ' Signed ' + esc(fmtDateTime(agreement.signedAt)) + '.' : '') + + '

' + : '

Passport access stays locked until the Contract Engine webhook verifies the signed artifact and certificate hashes.

'; + if (a.isTest === true) { + evidence = '

Sandbox: fixed nonpayable test records do not create a production agreement.

'; + economics = '
SANDBOX economics
' + + '
Fixed nonpayable policy. Excluded from live merchant connections, revenue, commission and payout totals.
'; + } + return '

Agreement + Passport handoff

' + + '

Current agreement state: ' + pill(agreementStatus, agreementTone) + '

' + + economics + evidence + + (actions.length + ? '
' + actions.join('') + '
' + : '

No agreement or invitation action is currently authorized for this record.

') + + '
'; + } + + function affiliateAux(a) { + var m = CRM.affiliateMoney(a.id); + var rows = [ + ['Orders', fmtInt(m.orders)], + ['Gross', fmtMoney(m.gross)], + ['Refunded', fmtMoney(m.refunded)], + ['Net', fmtMoney(m.net)], + ['Refund rate', m.gross > 0 ? fmtPct(m.refundRate) : 'no sales yet'], + ['Average order', m.orders ? fmtMoney(m.aov) : 'no sales yet'], + ['Rate', m.rate === null ? null : m.rate + '%'], + ['Earned', m.earned === null ? null : fmtMoney(m.earned)], + ['Override earned', m.overrideEarned === null ? null : fmtMoney(m.overrideEarned)], + ['Paid', fmtMoney(m.paid)], + ['Owed', m.owed === null ? null : fmtMoney(m.owed)], + ['Last sale', m.lastSale ? m.lastSale + ', ' + m.daysSinceLastSale + ' days ago' : 'never'] + ]; + + var money = '

Money

' + + '
' + + rows.map(function (r) { + return '' + + ''; + }).join('') + '
' + esc(r[0]) + '' + (r[1] === null ? unset('no rate set') : esc(r[1])) + '
'; + + var sales = CRM.all('sales').filter(function (s) { return s.affiliateId === a.id; }) + .sort(function (x, y) { return String(y.date).localeCompare(String(x.date)); }); + var salesHtml = '

Sales

' + + '
' + + '' + + '' + + (sales.length ? sales.map(function (s) { + return '' + + '' + + '' + + '' + + ''; + }).join('') : emptyRow(4, 'No sales for this affiliate.')) + + '
DateOrderGrossRefunded
' + esc(s.date) + '' + esc(s.orderRef || '') + (s.product ? '
' + esc(s.product) + '
' : '') + '
' + fmtMoney(parseFloat(s.gross) || 0) + '' + fmtMoney(parseFloat(s.refunded) || 0) + '
' + + '
'; + + var payouts = CRM.all('payouts').filter(function (p) { return p.affiliateId === a.id; }) + .sort(function (x, y) { return String(y.date).localeCompare(String(x.date)); }); + var payHtml = '

Payouts

' + + '
' + + '' + + '' + + (payouts.length ? payouts.map(function (p) { + return '' + + '' + + '' + + ''; + }).join('') : emptyRow(3, 'No payouts for this affiliate.')) + + '
DateAmountStatus
' + esc(p.date) + '' + fmtMoney(parseFloat(p.amount) || 0) + '' + esc(p.status || '') + '
' + + '
'; + + var up = a.parentId ? CRM.get('affiliates', a.parentId) : null; + var down = CRM.all('affiliates').filter(function (x) { return x.parentId === a.id; }); + var treeHtml = '

Network

' + + '

Upline: ' + (up + ? '' + : unset('none')) + '

' + + '

Downline: ' + (down.length + ? down.map(function (d) { + return ''; + }).join(' ') + : unset('none')) + '

'; + + var g = CRM.gateProgress(a); + var activation = CRM.activationReadiness(a); + var lifecycleButtons = ''; + if (a.authoritative === true || a.enrollmentId) { + if (a.stage === 'signed' || a.stage === 'onboarding') { + lifecycleButtons = + ''; + } else if (a.stage === 'active') { + lifecycleButtons = + '' + + ''; + } else if (a.stage === 'paused') { + lifecycleButtons = + '' + + ''; + } + } + var gateHtml = '

Activation

' + + '

' + gateBar(a) + '

' + + '

' + (a.stage === 'active' && g.complete + ? pill('Active and all nine gates pass', 'is-ok') + : activation.ready + ? pill('Ready for lifecycle activation', 'is-ok') + : pill('Blocked at ' + activation.blockedBy.label, 'is-warn') + ' ' + esc(activation.blockedBy.note)) + '

' + + (lifecycleButtons ? '
' + lifecycleButtons + '
' : '') + + '
'; + + var relatedHistory = historyRows().filter(function (event) { + return event.affiliateId === a.id || event.enrollmentId === a.enrollmentId || + event.subjectId === a.id || event.entityId === a.id; + }).slice(0, 12); + var history = '

History

' + + historyHtml(relatedHistory) + '
'; + + return '
' + agreementAux(a) + money + gateHtml + salesHtml + payHtml + treeHtml + history + '
'; + } + + function renderAux() { + var host = $('crm-drawer-aux'); + if (!host || !drawer.open || drawer.entity !== 'affiliates' || !drawer.id) return; + var a = CRM.get('affiliates', drawer.id); + if (!a) return; + var tmp = document.createElement('div'); + tmp.innerHTML = affiliateAux(a); + host.innerHTML = tmp.firstChild.innerHTML; + } + + function showSystemDrawer(title, body, foot, trigger) { + drawer.open = true; + drawer.entity = null; + drawer.id = null; + drawer.back = null; + drawer.trigger = trigger || document.activeElement; + $('crm-drawer-title').textContent = title; + $('crm-drawer-body').innerHTML = body; + $('crm-drawer-foot').innerHTML = foot || ''; + var panel = $('crm-drawer'); + panel.hidden = false; + panel.classList.add('is-open'); + document.body.classList.add('crm-drawer-open'); + var first = qs('input, select, textarea, button, a[href]', $('crm-drawer-panel')); + (first || $('crm-drawer-close')).focus(); + } + + function openHistoryDrawer(trigger) { + showSystemDrawer( + 'Program history', + '

Authoritative actions, lifecycle events and operator changes.

' + + historyHtml(historyRows()) + '
', + '', + trigger + ); + } + + function canCreateTestAccount() { + var capabilities = CRM.state.capabilities || {}; + var actions = capabilities.actions; + return capabilities.testAccounts === true || + (Array.isArray(actions) && actions.indexOf('test-account.create') >= 0); + } + + var ECON_MODELS = ['percentage', 'retainer', 'hybrid', 'flat', 'tiered', 'custom']; + var PAYOUT_CADENCES = ['daily', 'weekly', 'biweekly', 'monthly', 'quarterly', 'manual', 'custom']; + var RETAINER_CADENCES = ['weekly', 'monthly', 'quarterly', 'custom']; + var RETAINER_PRORATIONS = ['none', 'daily', 'monthly', 'custom']; + var programDirty = false; + + function hasExplicitCapability(action) { + var actions = CRM.state.capabilities && CRM.state.capabilities.actions; + return Array.isArray(actions) && actions.indexOf(action) >= 0; + } + + function programField(camel, snake) { + var program = CRM.state.program || {}; + var config = program.config || program.configuration || {}; + if (program[camel] !== undefined && program[camel] !== null) return program[camel]; + if (snake && program[snake] !== undefined && program[snake] !== null) return program[snake]; + if (config[camel] !== undefined && config[camel] !== null) return config[camel]; + if (snake && config[snake] !== undefined && config[snake] !== null) return config[snake]; + return ''; + } + + function activationMissing() { + var program = CRM.state.program || {}; + var explicitMissing = program.missingActivationRequirements || + program.missing_activation_requirements; + if (Array.isArray(explicitMissing)) { + return explicitMissing.map(function (item) { + if (typeof item === 'string') return item; + return item.label || item.message || item.key || item.code || JSON.stringify(item); + }); + } + var requirements = program.activationRequirements || program.activation_requirements || {}; + var missing = Array.isArray(requirements) + ? requirements.filter(function (item) { + return item && item.satisfied !== true; + }) + : Array.isArray(requirements.missing) ? requirements.missing + : Array.isArray(requirements.missingRequirements) ? requirements.missingRequirements + : Array.isArray(program.missingRequirements) ? program.missingRequirements + : []; + return missing.map(function (item) { + if (typeof item === 'string') return item; + return item.label || item.message || item.key || item.code || JSON.stringify(item); + }); + } + + function activationRequirementsAvailable() { + var program = CRM.state.program || {}; + return program.missingActivationRequirements !== undefined || + program.missing_activation_requirements !== undefined || + program.activationRequirements !== undefined || + program.activation_requirements !== undefined || + program.missingRequirements !== undefined; + } + + function originValue(value) { + try { + var parsed = new URL(value); + if (parsed.protocol !== 'https:' || parsed.username || parsed.password || + parsed.pathname !== '/' || parsed.search || parsed.hash) return null; + return parsed.origin; + } catch (error) { + return null; + } + } + + function programStatusHtml() { + var status = String(programField('status', 'status') || 'unknown').toLowerCase(); + var kind = status === 'active' ? 'is-ok' : status === 'paused' ? 'is-warn' : 'is-quiet'; + return pill(status, kind); + } + + function economicsSchema() { + var schema = CRM.state.program && CRM.state.program.economicsSchema; + return schema && typeof schema === 'object' ? schema : null; + } + + function economicsSchemaValue(schema, key) { + var buckets = [ + schema && schema.values, + schema && schema.initialValues, + schema && schema.defaults, + schema && schema.snapshot, + schema && schema.current + ]; + for (var i = 0; i < buckets.length; i++) { + if (buckets[i] && Object.prototype.hasOwnProperty.call(buckets[i], key)) return buckets[i][key]; + } + if (schema && schema.properties && schema.properties[key]) { + var property = schema.properties[key]; + if (property.const !== undefined) return property.const; + if (property.default !== undefined) return property.default; + } + if (schema && Array.isArray(schema.fields)) { + var field = schema.fields.find(function (candidate) { + return candidate && (candidate.key === key || candidate.name === key); + }); + if (field) { + if (field.value !== undefined) return field.value; + if (field.default !== undefined) return field.default; + } + } + return ''; + } + + function econOptions(id, values, selected) { + return ''; + } + + function economicsSnapshotFields(schema, options) { + options = options || {}; + var containerId = options.containerId || 'invite-live-economics'; + var errorId = options.errorId || 'invite-economics-error'; + var heading = options.heading || 'Per-affiliate economics snapshot'; + var description = options.description || + 'All 15 v2 fields bind immutably to this invitation. No program-wide rate is assumed.'; + function value(key) { + var current = economicsSchemaValue(schema, key); + return current === null || current === undefined ? '' : String(current); + } + return '
' + + '

' + esc(heading) + '

' + + '

' + esc(description) + '

' + + '
' + + '
' + + '
' + + '
' + + econOptions('econ-model', ECON_MODELS, value('model')) + '
' + + '
' + + '
' + + '' + + '

3–2,000 characters. State the exact individualized economics.

' + + '
' + + '' + + '

Immutable server reference, 3–500 characters.

' + + '
' + + '
' + + '' + + '

0–100, up to 4 decimals. Required above zero for percentage and hybrid.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + econOptions('econ-payout-cadence', PAYOUT_CADENCES, value('payout_cadence')) + '
' + + '
' + + '' + + '

0–1,000,000,000, up to 2 decimals.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + econOptions('econ-retainer-cadence', RETAINER_CADENCES, value('retainer_cadence')) + '
' + + '
' + + econOptions('econ-retainer-proration', RETAINER_PRORATIONS, value('retainer_proration')) + '
' + + '
' + + '' + + '
'; + } + + function openInviteDrawer(trigger) { + var testFlag = canCreateTestAccount() + ? '' + + '

Sandbox accounts are nonpayable, cannot connect to a live merchant account and do not count toward live totals.

' + + '' + : ''; + var schema = economicsSchema(); + var liveEconomics = schema + ? economicsSnapshotFields(schema) + : '
Live invitations are fail-closed
' + + '
The projection did not provide program.economicsSchema. Refresh after the server publishes the exact per-affiliate schema, or create sandbox data.
'; + showSystemDrawer( + 'Start affiliate onboarding', + '
One controlled sequence
' + + '
1. Prepare the enrollment and lock its exact economics. 2. Launch and execute the enrollment-bound agreement. 3. Send Passport access only after verified signature evidence returns.
' + + '

Creator details

' + + '
' + + '
' + + '
' + + '
' + + testFlag + + '
' + + '' + + liveEconomics + + '
', + '
' + + '
', + trigger + ); + syncInviteTestMode(); + syncEconomicsConditions(); + $('invite-email').focus(); + } + + function syncInviteTestMode() { + var test = $('invite-test'); + if (!test) return; + var enabled = test.checked; + var send = $('invite-test-send'); + var sendExplicitly = enabled && send && send.checked; + $('invite-test-options').hidden = !enabled; + $('invite-live-economics').hidden = enabled; + $('invite-sandbox-policy').hidden = !enabled; + $('invite-email').required = !enabled || sendExplicitly; + $('invite-email-required').hidden = enabled && !sendExplicitly; + $('invite-email').placeholder = enabled && !sendExplicitly + ? 'Optional; a non-deliverable sandbox address will be generated' + : ''; + $('invite-create').textContent = enabled ? 'Create sandbox link' : 'Prepare enrollment'; + $('invite-create').disabled = !enabled && !economicsSchema(); + } + + function syncEconomicsConditions() { + var modelField = $('econ-model'); + if (!modelField) return; + var model = modelField.value; + var hasRetainer = model === 'retainer' || model === 'hybrid'; + var commission = $('econ-commission-rate'); + if (commission) { + commission.disabled = model === 'retainer'; + if (model === 'retainer') commission.value = ''; + } + ['econ-retainer-amount', 'econ-retainer-cadence', 'econ-retainer-proration'].forEach(function (id) { + var field = $(id); + field.disabled = !hasRetainer; + if (!hasRetainer) field.value = ''; + }); + $('econ-retainer-fields').classList.toggle('is-disabled', !hasRetainer); + } + + function collectEconomicsSnapshot(errorId) { + errorId = errorId || 'invite-economics-error'; + var errors = []; + function raw(id) { + var field = $(id); + return field ? field.value.trim() : ''; + } + function requiredText(id, label, min, max) { + var value = raw(id); + if (value.length < min || value.length > max) { + errors.push({ id: id, message: label + ' must be ' + min + '–' + max + ' characters.' }); + } + return value; + } + function decimal(id, label, maximum, places, options) { + options = options || {}; + var value = raw(id); + if (!value && options.nullable) return null; + var pattern = new RegExp('^(?:0|[1-9][0-9]*)(?:\\.[0-9]{1,' + places + '})?$'); + var number = Number(value); + if (!pattern.test(value) || !isFinite(number) || number < 0 || number > maximum || + (options.positive && number <= 0)) { + errors.push({ + id: id, + message: label + ' must be ' + (options.positive ? 'greater than zero and ' : '') + + 'no more than ' + maximum + ', with up to ' + places + ' decimal places.' + }); + } + return value || null; + } + function integer(id, label, minimum, maximum) { + var value = raw(id); + var number = Number(value); + if (!/^(?:0|[1-9][0-9]*)$/.test(value) || number < minimum || number > maximum) { + errors.push({ id: id, message: label + ' must be an integer from ' + minimum + ' to ' + maximum + '.' }); + } + return value; + } + function choice(id, label, choices) { + var value = raw(id); + if (choices.indexOf(value) < 0) errors.push({ id: id, message: 'Choose a valid ' + label + '.' }); + return value; + } + + var currency = raw('econ-currency').toUpperCase(); + if (!/^[A-Z]{3}$/.test(currency)) { + errors.push({ id: 'econ-currency', message: 'Currency must be exactly three uppercase ISO letters.' }); + } + var model = choice('econ-model', 'model', ECON_MODELS); + var hasRetainer = model === 'retainer' || model === 'hybrid'; + var requiresCommission = model === 'percentage' || model === 'hybrid'; + var commissionRate = model === 'retainer' + ? null + : decimal('econ-commission-rate', 'Commission rate', 100, 4, { + nullable: !requiresCommission, + positive: requiresCommission + }); + var retainerAmount = hasRetainer + ? decimal('econ-retainer-amount', 'Retainer amount', 1000000000, 2, { positive: true }) + : null; + var retainerCadence = hasRetainer + ? choice('econ-retainer-cadence', 'retainer cadence', RETAINER_CADENCES) + : null; + var retainerProration = hasRetainer + ? choice('econ-retainer-proration', 'retainer proration', RETAINER_PRORATIONS) + : null; + + var snapshot = { + currency: currency, + model: model, + terms: requiredText('econ-terms', 'Terms', 3, 2000), + terms_reference: requiredText('econ-terms-reference', 'Terms reference', 3, 500), + commission_rate: commissionRate, + commission_base: requiredText('econ-commission-base', 'Commission base', 3, 500), + attribution_window_days: integer('econ-attribution-window', 'Attribution window', 1, 3650), + settlement_hold_days: integer('econ-settlement-hold', 'Settlement hold', 0, 3650), + clawback_days: integer('econ-clawback-days', 'Clawback days', 0, 3650), + payout_cadence: choice('econ-payout-cadence', 'payout cadence', PAYOUT_CADENCES), + payout_threshold: decimal('econ-payout-threshold', 'Payout threshold', 1000000000, 2), + agreement_version: requiredText('econ-agreement-version', 'Agreement version', 3, 160), + retainer_amount: retainerAmount, + retainer_cadence: retainerCadence, + retainer_proration: retainerProration + }; + + var errorHost = $(errorId); + if (errors.length) { + errorHost.innerHTML = '' + esc(errors[0].message) + ''; + var first = $(errors[0].id); + if (first) { + first.setAttribute('aria-invalid', 'true'); + first.focus(); + } + announce(errors.map(function (error) { return error.message; }).join(' ')); + } else { + errorHost.textContent = ''; + qsa('[aria-invalid="true"]', errorHost.parentElement).forEach(function (field) { + field.removeAttribute('aria-invalid'); + }); + } + return { snapshot: snapshot, errors: errors }; + } + + function openProgramDrawer(trigger) { + var program = CRM.state.program || {}; + var programId = program.id || program.programId || ''; + var canCreate = hasExplicitCapability('program.create'); + var canUpdate = hasExplicitCapability('program.update'); + var canActivate = hasExplicitCapability('program.activate'); + programDirty = false; + + if (!programId) { + showSystemDrawer( + 'Program setup', + '
No program record
' + + '
Create a fail-closed setup record before entering legal, destination, agreement, or economics configuration.
', + canCreate + ? '
' + + '
' + : '

Your session does not advertise program.create.

' + + '', + trigger + ); + return; + } + + var missing = activationMissing(); + var requirementsKnown = activationRequirementsAvailable(); + var requirements = !requirementsKnown + ? '
Activation status unavailable
' + + '
The projection omitted activationRequirements. Activation stays disabled.
' + : missing.length + ? '
Activation blocked
' + + '
    ' + + missing.map(function (item) { return '
  • ' + esc(item) + '
  • '; }).join('') + + '
' + : '
Activation requirements
' + + '
The projection reports no missing requirement. The server validates again on activation.
'; + + var fields; + if (canUpdate) { + var regions = programField('eligibleRegions', 'eligible_regions'); + var officialAddress = programField('officialAddress', 'official_address'); + if (!officialAddress || typeof officialAddress !== 'object' || Array.isArray(officialAddress)) { + officialAddress = {}; + } + fields = + '
' + + '

Legal identity

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '

Use the exact legal form printed in the agreement.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '

Must be the server-approved US legal address.

' + + '
' + + '
' + + '' + + '

Approval or corporate-record reference. This is retained with the exact signer facts below.

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '

These facts are locked into the agreement launch and must match the company-side signer and execution certificate exactly.

' + + '
' + + '

Agreement and destinations

' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '
' + + '' + + '

Exact HTTPS origin only. No path, query, credentials, or fragment.

' + + '
' + + '' + + '

Exact HTTPS origin only. The server enforces the configured portal origin.

' + + '
' + + '

Eligibility

' + + '
' + + '
' + + '' + + '

Passport v1 is locked to the United States.

' + + '
' + + '
' + + '
' + + '
' + + '' + + '

A JSON object keyed by eligible country. Enter the exact reviewed scope.

' + + '
' + + '

Economics policy

' + + '
Individualized, no defaults
' + + '
schemaVersion 2 · mode individualized · noDefaults true
' + + 'Program setup never stores a creator rate, payout cadence, threshold, or retainer. Every live invitation binds its own complete 15-key snapshot.
' + + '
' + + '' + + '
'; + } else { + fields = '
Setup is read-only
' + + '
This session does not advertise program.update.
' + + '
' + + '
Legal entity' + displayValue(programField('legalEntityName', 'legal_entity_name')) + '
' + + '
Trade name / DBA' + displayValue(programField('tradeName', 'trade_name')) + '
' + + '
Entity type' + displayValue(programField('entityType', 'entity_type')) + '
' + + '
Authorized signer' + + displayValue(programField('authorizedSignerName', 'authorized_signer_name')) + '
' + + '
Signer title' + + displayValue(programField('authorizedSignerTitle', 'authorized_signer_title')) + '
' + + '
Signer email' + + displayValue(programField('authorizedSignerEmail', 'authorized_signer_email')) + '
' + + '
Destination' + displayValue(programField('affiliateBaseUrl', 'affiliate_base_url')) + '
' + + '
Tracking' + displayValue(programField('trackingBaseUrl', 'tracking_base_url')) + '
' + + '
'; + } + + var status = String(programField('status', 'status') || 'unknown').toLowerCase(); + var activateDisabled = !requirementsKnown || missing.length > 0 || status === 'active'; + var foot = '
'; + if (canUpdate) { + foot += ''; + } + if (canActivate) { + foot += ''; + } + foot += '
'; + if (status === 'paused') { + foot += '

Paused is server-owned. This client exposes only actions the server advertises.

'; + } + + showSystemDrawer( + 'Program setup', + '
Program state
' + + '
' + programStatusHtml() + ' revision ' + + esc(program.revision || CRM.revision || 'not supplied') + '
' + + requirements + fields, + foot, + trigger + ); + } + + function collectProgramSetup() { + var errors = []; + function val(id) { return $(id).value.trim(); } + function invalid(id, message) { errors.push({ id: id, message: message }); } + var legalEntityName = val('program-legal-entity'); + var tradeName = val('program-trade-name'); + var entityType = val('program-entity-type'); + var officialAddress = { + line1: val('program-address-line1'), + line2: val('program-address-line2') || null, + city: val('program-address-city'), + region: val('program-address-region').toUpperCase(), + postalCode: val('program-address-postal'), + countryCode: val('program-address-country').toUpperCase() + }; + var authorizedSignerRef = val('program-signer-ref'); + var authorizedSignerName = val('program-signer-name'); + var authorizedSignerTitle = val('program-signer-title'); + var authorizedSignerEmail = val('program-signer-email').toLowerCase(); + var agreementTemplateKey = val('program-template-key'); + var agreementVersion = val('program-agreement-version'); + var affiliateBaseUrl = originValue(val('program-affiliate-origin')); + var trackingBaseUrl = originValue(val('program-tracking-origin')); + var eligibleCountries = ['US']; + var minimumAgeRaw = val('program-minimum-age'); + var minimumAge = Number(minimumAgeRaw); + var eligibleRegions = null; + try { + eligibleRegions = JSON.parse(val('program-regions')); + if (!eligibleRegions || Array.isArray(eligibleRegions) || typeof eligibleRegions !== 'object') { + throw new Error('object required'); + } + var regionKeys = Object.keys(eligibleRegions); + if (regionKeys.some(function (country) { return country !== 'US'; }) || + (eligibleRegions.US !== undefined && + (!Array.isArray(eligibleRegions.US) || + eligibleRegions.US.some(function (region) { + return typeof region !== 'string' || !region.trim(); + })))) { + throw new Error('US regions required'); + } + } catch (error) { + invalid('program-regions', 'Eligible regions must be an explicit JSON object.'); + } + + if (legalEntityName.length < 2 || legalEntityName.length > 500 || legalEntityName !== legalEntityName.normalize('NFKC')) { + invalid('program-legal-entity', 'Legal entity must be exact NFKC text from 2–500 characters.'); + } + if (tradeName.length < 1 || tradeName.length > 200 || tradeName !== tradeName.normalize('NFKC')) { + invalid('program-trade-name', 'Trade name must be exact NFKC text from 1–200 characters.'); + } + if (entityType.length < 2 || entityType.length > 200 || entityType !== entityType.normalize('NFKC')) { + invalid('program-entity-type', 'Entity type must be exact NFKC text from 2–200 characters.'); + } + if (officialAddress.line1.length < 2 || officialAddress.line1.length > 240) invalid('program-address-line1', 'Address line 1 must be 2–240 characters.'); + if (officialAddress.line2 && officialAddress.line2.length > 240) invalid('program-address-line2', 'Address line 2 must be no more than 240 characters.'); + if (officialAddress.city.length < 2 || officialAddress.city.length > 120) invalid('program-address-city', 'City must be 2–120 characters.'); + if (!/^[A-Z]{2}$/.test(officialAddress.region)) invalid('program-address-region', 'State / region must be a two-letter code.'); + if (!/^[0-9]{5}(?:-[0-9]{4})?$/.test(officialAddress.postalCode)) invalid('program-address-postal', 'Postal code must be a valid US ZIP code.'); + if (officialAddress.countryCode !== 'US') invalid('program-address-country', 'Program legal address country must be the server-approved US value.'); + if (authorizedSignerRef.length < 3 || authorizedSignerRef.length > 500) invalid('program-signer-ref', 'Authorized signer reference must be 3–500 characters.'); + if (authorizedSignerName.length < 2 || authorizedSignerName.length > 160) invalid('program-signer-name', 'Authorized signer legal name must be 2–160 characters.'); + if (authorizedSignerTitle.length < 2 || authorizedSignerTitle.length > 160) invalid('program-signer-title', 'Authorized signer title must be 2–160 characters.'); + if (authorizedSignerEmail.length > 254 || !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(authorizedSignerEmail)) { + invalid('program-signer-email', 'Enter the exact authorized signer email.'); + } + if (!/^[a-z0-9][a-z0-9-]{0,99}$/.test(agreementTemplateKey)) invalid('program-template-key', 'Agreement template key must be 1–100 lowercase letters, numbers, or hyphens.'); + if (agreementVersion.length < 3 || agreementVersion.length > 160) invalid('program-agreement-version', 'Agreement version must be 3–160 characters.'); + if (!affiliateBaseUrl) invalid('program-affiliate-origin', 'Destination must be an exact HTTPS origin.'); + if (!trackingBaseUrl) invalid('program-tracking-origin', 'Tracking base must be an exact HTTPS origin.'); + if (!/^(?:0|[1-9][0-9]*)$/.test(minimumAgeRaw) || minimumAge < 18 || minimumAge > 99) { + invalid('program-minimum-age', 'Minimum age must be a whole number from 18 to 99.'); + } + + var errorHost = $('program-error'); + if (errors.length) { + errorHost.innerHTML = '' + esc(errors[0].message) + ''; + var first = $(errors[0].id); + if (first) { first.setAttribute('aria-invalid', 'true'); first.focus(); } + return null; + } + errorHost.textContent = ''; + return { + programId: CRM.state.program.id || CRM.state.program.programId, + expectedRevision: CRM.state.program.revision || CRM.revision, + legalEntityName: legalEntityName, + tradeName: tradeName, + entityType: entityType, + officialAddress: officialAddress, + authorizedSignerRef: authorizedSignerRef, + authorizedSignerName: authorizedSignerName, + authorizedSignerTitle: authorizedSignerTitle, + authorizedSignerEmail: authorizedSignerEmail, + agreementTemplateKey: agreementTemplateKey, + agreementVersion: agreementVersion, + affiliateBaseUrl: affiliateBaseUrl, + trackingBaseUrl: trackingBaseUrl, + eligibleCountries: eligibleCountries, + eligibleRegions: eligibleRegions, + minimumAge: minimumAge, + economicsConfiguration: { + schemaVersion: 2, + mode: 'individualized', + noDefaults: true + } + }; + } + + function renderInvitationResult(result, testAccount) { + var invitation = result && (result.invitation || result.testAccount || result); + var url = invitation && (invitation.url || invitation.invitationUrl || invitation.claimUrl || invitation.link); + var expires = invitation && (invitation.expiresAt || invitation.expiry); + var resultHost = $('invite-result'); + qsa('#crm-drawer-body > *').forEach(function (section) { + section.hidden = section !== resultHost; + }); + resultHost.hidden = false; + resultHost.innerHTML = '
' + + '
' + esc(testAccount ? 'SANDBOX test account created' : 'Invitation created') + '
' + + '
' + + (testAccount + ? '

Nonpayable test data. No live merchant connection or live-program metrics.

' + : '') + + (url + ? '' + + '' + + '
' + : 'The server created the record but did not return a shareable link. Open history for the receipt.') + + (expires ? '

Expires ' + esc(fmtDateTime(expires)) + '.

' : '') + + '
'; + $('crm-drawer-foot').innerHTML = ''; + $('crm-drawer-body').scrollTop = 0; + var copy = $('invite-copy'); + (copy || $('crm-drawer-close')).focus(); + } + + function affiliateForEnrollment(enrollmentId) { + return CRM.all('affiliates').find(function (affiliate) { + return String(affiliate.id) === String(enrollmentId) || + String(affiliate.enrollmentId || '') === String(enrollmentId); + }) || null; + } + + function agreementActionButtons(affiliate) { + if (!affiliate) return ''; + var buttons = []; + if (recordActionAvailable(affiliate, 'agreement.launch')) { + buttons.push( + '' + ); + } + if (recordActionAvailable(affiliate, 'agreement.manage')) { + buttons.push( + '' + ); + } + if (recordActionAvailable(affiliate, 'invitation.send')) { + buttons.push( + '' + ); + } + return buttons.join(''); + } + + function renderPreparedEnrollment(result) { + var enrollmentId = result && result.enrollmentId; + var affiliate = enrollmentId ? affiliateForEnrollment(enrollmentId) : null; + var resultHost = $('invite-result'); + qsa('#crm-drawer-body > *').forEach(function (section) { + section.hidden = section !== resultHost; + }); + resultHost.hidden = false; + var actionButtons = agreementActionButtons(affiliate); + var economicsReceipt = result && result.economicsSnapshotSha256 + ? '

Economics receipt ' + + esc(result.economicsSnapshotSha256) + '

' + : ''; + resultHost.innerHTML = '
' + + '
Enrollment prepared
' + + '

The exact economics are now bound to the canonical enrollment. No invitation email was sent.

' + + economicsReceipt + + '

Next: launch the enrollment-bound agreement. Passport access remains locked until verified signature evidence returns.

' + + (actionButtons + ? '
' + actionButtons + '
' + : '

No next agreement action is currently authorized. Open the affiliate record to see the server-owned blocker.

') + + '
'; + $('crm-drawer-foot').innerHTML = ''; + $('crm-drawer-body').scrollTop = 0; + var firstAction = qs('[data-agreement-action]', resultHost); + (firstAction || $('crm-drawer-close')).focus(); + } + + function secureAgreementUrl(value) { + try { + var url = new URL(value); + if (url.protocol !== 'https:' || url.username || url.password) return null; + return url.toString(); + } catch (error) { + return null; + } + } + + function renderAgreementWorkspaceResult(action, result, affiliate) { + var url = secureAgreementUrl( + action === 'launch' + ? result && result.launchUrl + : result && result.manageUrl + ); + if (!url) { + toast('The server completed the action but returned no valid secure agreement URL.'); + return; + } + showSystemDrawer( + action === 'launch' ? 'Agreement ready to create' : 'Agreement workspace', + '
' + + esc(action === 'launch' ? 'Enrollment context verified' : 'Authoritative agreement loaded') + + '
' + + (action === 'launch' + ? '

The creator, program, agreement version and immutable economics receipt are locked into this launch.

' + : '

Open the existing enrollment-bound agreement to review delivery and signature status.

') + + '' + + esc(action === 'launch' ? 'Continue to secure agreement' : 'Open secure agreement') + + '' + + '

Return here after the Contract Engine records the authoritative agreement. This record will update from its signed webhook evidence.

' + + '
', + '', + null + ); + if (affiliate) { + $('crm-drawer-title').setAttribute('data-affiliate-id', affiliate.id); + } + } + + async function runAgreementAction(button) { + var action = button.getAttribute('data-agreement-action'); + var affiliate = CRM.get('affiliates', button.getAttribute('data-id')); + if (!affiliate || ['launch', 'manage', 'send'].indexOf(action) < 0) { + toast('The authoritative affiliate record could not be loaded.'); + return; + } + var publicAction = action === 'send' + ? 'invitation.send' + : 'agreement.' + action; + if (!recordActionAvailable(affiliate, publicAction)) { + toast('That action is no longer authorized for this affiliate. Refresh to see the current state.'); + return; + } + var enrollmentId = affiliate.enrollmentId || affiliate.id; + var revision = Number(affiliate.revision); + if (!Number.isSafeInteger(revision) || revision < 0) { + toast('The enrollment revision is missing. Refresh before continuing.'); + return; + } + if (action === 'send' && + !global.confirm('Send Passport access to ' + affiliate.email + '? The signed agreement evidence will be checked again.')) { + return; + } + var result = await mutate( + action === 'send' ? 'invitation:send' : 'agreement:' + action, + { enrollmentId: enrollmentId }, + { + expectedRevision: revision, + success: action === 'send' ? 'Passport access sent.' : '' + } + ); + if (result === null) return; + if (action === 'send') { + renderAll(); + if (drawer.open && drawer.entity === 'affiliates') renderAux(); + return; + } + renderAgreementWorkspaceResult(action, result, affiliate); + } + + async function copyInvitation() { + var input = $('invite-url'); + if (!input) return; + try { + if (global.navigator.clipboard && global.isSecureContext) { + await global.navigator.clipboard.writeText(input.value); + } else { + input.focus(); + input.select(); + if (!document.execCommand('copy')) throw new Error('copy unavailable'); + } + toast('Invitation link copied.'); + } catch (error) { + input.focus(); + input.select(); + toast('Copy was blocked. The link is selected so you can copy it manually.'); + } + } + + function openDrawer(entity, id, trigger, back) { + var schema = CRM.SCHEMA[entity]; + if (!schema) return; + var rec = id ? CRM.get(entity, id) : null; + if (id && !rec) return; + + drawer.open = true; + drawer.entity = entity; + drawer.id = id || null; + drawer.back = back || null; + if (trigger) drawer.trigger = trigger; + + $('crm-drawer-title').textContent = (rec ? 'Edit ' : 'New ') + schema.label.toLowerCase() + + (rec ? ': ' + (rec.name || rec.orderRef || rec.id) : ''); + + var body = ''; + if (drawer.back) { + var backRec = CRM.get(drawer.back.entity, drawer.back.id); + if (backRec) { + body += '
'; + } + } + + body += '

' + esc(schema.label) + ' details

' + + schema.fields.map(function (f) { return fieldControl(entity, f, rec); }).join('') + '
'; + + if (entity === 'affiliates' && rec) body += affiliateAux(rec); + if (entity === 'affiliates' && !rec) { + body += '

Save this affiliate first, then sales, payouts and network appear here.

'; + } + + $('crm-drawer-body').innerHTML = body; + + var foot = '
' + + '' + + ''; + if (rec) foot += ''; + foot += '
'; + if (rec) foot += '

id ' + esc(rec.id) + '

'; + $('crm-drawer-foot').innerHTML = foot; + + var d = $('crm-drawer'); + d.hidden = false; + d.classList.add('is-open'); + document.body.classList.add('crm-drawer-open'); + + var first = qs('.crm-drawer-body input, .crm-drawer-body select, .crm-drawer-body textarea', d); + (first || $('crm-drawer-close')).focus(); + } + + function closeDrawer() { + if (!drawer.open) return; + var d = $('crm-drawer'); + d.classList.remove('is-open'); + d.hidden = true; + document.body.classList.remove('crm-drawer-open'); + drawer.open = false; + drawer.entity = null; + drawer.id = null; + drawer.back = null; + /* Put focus back where it came from. A re-render can destroy the trigger, + so fall back to its data-fkey twin, then to the current tab, never to + nothing: losing focus to body strands keyboard users at the top. */ + var restored = null; + if (drawer.trigger && document.body.contains(drawer.trigger)) { + restored = drawer.trigger; + } else if (drawer.trigger) { + var fk = drawer.trigger.getAttribute && drawer.trigger.getAttribute('data-fkey'); + restored = fk ? qs('[data-fkey="' + fk + '"]') : null; + } + if (!restored || !restored.focus) restored = $('tab-' + ui.tab); + if (restored && restored.focus) restored.focus(); + drawer.trigger = null; + } + + function collectDrawer() { + var entity = drawer.entity; + var body = $('crm-drawer-body'); + var rec = {}; + var errors = []; + + CRM.SCHEMA[entity].fields.forEach(function (f) { + if (f.type === 'gates' || f.readOnly || (drawer.id && f.authoritative)) return; + var el = qs('[data-field="' + f.key + '"]', body); + if (!el) return; + var v; + if (f.type === 'gates') { + v = {}; + qsa('input[data-gate]', el).forEach(function (i) { v[i.getAttribute('data-gate')] = i.checked; }); + } else if (f.type === 'multi') { + v = []; + qsa('input[data-opt]', el).forEach(function (i) { if (i.checked) v.push(i.getAttribute('data-opt')); }); + } else if (f.type === 'bool') { + v = el.checked; + } else if (f.type === 'number' || f.type === 'money') { + var raw = el.value.trim(); + v = raw === '' ? null : parseFloat(raw); + if (raw !== '' && isNaN(v)) errors.push({ key: f.key, msg: 'Not a number.' }); + } else { + v = el.value.trim(); + } + + if (f.required) { + var missing = (f.type === 'number' || f.type === 'money') ? (v === null) : isBlank(v); + if (missing) errors.push({ key: f.key, msg: f.label + ' is required.' }); + } + rec[f.key] = v; + }); + + return { rec: rec, errors: errors }; + } + + function showErrors(errors) { + qsa('[data-error-for]', $('crm-drawer-body')).forEach(function (p) { p.innerHTML = ''; }); + qsa('[data-field]', $('crm-drawer-body')).forEach(function (el) { el.removeAttribute('aria-invalid'); }); + errors.forEach(function (e) { + var p = qs('[data-error-for="' + e.key + '"]', $('crm-drawer-body')); + if (p) p.innerHTML = '' + esc(e.msg) + ''; + var el = qs('[data-field="' + e.key + '"]', $('crm-drawer-body')); + if (el) el.setAttribute('aria-invalid', 'true'); + }); + if (errors.length) { + var first = qs('[data-field="' + errors[0].key + '"]', $('crm-drawer-body')); + if (first && first.focus) first.focus(); + announce(errors.length + ' problem' + (errors.length === 1 ? '' : 's') + ' with this record. ' + + errors.map(function (e) { return e.msg; }).join(' ')); + } + } + + /* Saves the open record after server confirmation. */ + async function saveDrawer(silent) { + if (!drawer.open) return null; + var res = collectDrawer(); + showErrors(res.errors); + if (res.errors.length) { + if (!silent) toast('Not saved. ' + res.errors[0].msg); + return null; + } + var id = drawer.id; + var current = id ? CRM.get(drawer.entity, id) : null; + var verb = id ? 'update' : 'create'; + var payload = id ? { id: id, patch: res.rec } : { record: res.rec }; + var result = await mutate(drawer.entity + ':' + verb, payload, { + expectedRevision: current && current.revision, + success: silent ? '' : CRM.SCHEMA[drawer.entity].label + (id ? ' saved.' : ' created.') + }); + if (result === null) return null; + if (!id) { + var created = result.record || result.created || result; + id = created.id || result.id || null; + drawer.id = id; + } + return id; + } + + /* ============================================================== RENDER */ + + function renderCounts() { + var t = CRM.totals(); + $('count-dashboard').textContent = t.overdueCount + t.defectCount; + $('count-affiliates').textContent = t.affiliateCount; + $('count-pipeline').textContent = CRM.all('affiliates').filter(function (affiliate) { + return affiliate.authoritative !== true && !affiliate.enrollmentId; + }).length; + $('count-onboarding').textContent = CRM.all('affiliates').filter(function (a) { + return a.stage === 'signed' || a.stage === 'onboarding'; + }).length; + $('count-outbound').textContent = t.outboundCount; + $('count-money').textContent = CRM.all('sales').length + CRM.all('payouts').length; + } + + function renderAll() { + var active = document.activeElement; + var fkey = active && active.getAttribute ? active.getAttribute('data-fkey') : null; + var inDrawer = active && $('crm-drawer').contains(active); + + renderCounts(); + renderDashboard(); + renderAffiliates(); + renderPipeline(); + renderOnboarding(); + renderOutbound(); + renderMoney(); + renderAux(); + renderSystemState(); + + if (fkey && !inDrawer) { + var again = qs('[data-fkey="' + fkey + '"]'); + if (again && again.focus) again.focus(); + } + } + + function setTab(tab, focusTab) { + if (TABS.indexOf(tab) < 0) tab = 'dashboard'; + ui.tab = tab; + TABS.forEach(function (t) { + var btn = $('tab-' + t), view = $('view-' + t); + var on = t === tab; + btn.classList.toggle('is-active', on); + btn.setAttribute('aria-selected', on ? 'true' : 'false'); + btn.tabIndex = on ? 0 : -1; + view.classList.toggle('is-active', on); + view.hidden = !on; + }); + if (focusTab) $('tab-' + tab).focus(); + writeHash(); + } + + /* =============================================================== EVENTS */ + + function toggleSort(bag, key, table) { + if (bag.sort === key) { + bag.dir = bag.dir === 'asc' ? 'desc' : 'asc'; + } else { + bag.sort = key; + bag.dir = NUMERIC_SORT[key] ? 'desc' : 'asc'; + } + writeHash(); + renderAll(); + announce('Sorted by ' + key + ', ' + (bag.dir === 'desc' ? 'descending' : 'ascending') + '.'); + } + + function sortBagFor(table) { + if (!table) return null; + if (table.id === 'aff-table') return ui.aff; + if (table.id === 'out-table') return ui.out; + if (table.id === 'sale-table') return ui.sales; + if (table.id === 'payout-table') return ui.payouts; + return null; + } + + function download(filename, text) { + var blob = new Blob([text], { type: 'text/csv;charset=utf-8' }); + var url = URL.createObjectURL(blob); + var a = document.createElement('a'); + a.href = url; + a.download = filename; + document.body.appendChild(a); + a.click(); + document.body.removeChild(a); + setTimeout(function () { URL.revokeObjectURL(url); }, 1000); + } + + function exportEntity(entity) { + var stamp = CRM.today(); + download('biologix-' + entity + '-' + stamp + '.csv', CRM.toCSV(entity)); + toast('Exported ' + CRM.all(entity).length + ' ' + entity + ' rows to CSV.'); + } + + function wire() { + /* tabs */ + qsa('.crm-tab').forEach(function (btn) { + btn.addEventListener('click', function () { setTab(btn.getAttribute('data-tab')); }); + btn.addEventListener('keydown', function (e) { + var i = TABS.indexOf(ui.tab), next = null; + if (e.key === 'ArrowRight') next = TABS[(i + 1) % TABS.length]; + else if (e.key === 'ArrowLeft') next = TABS[(i - 1 + TABS.length) % TABS.length]; + else if (e.key === 'Home') next = TABS[0]; + else if (e.key === 'End') next = TABS[TABS.length - 1]; + if (next) { e.preventDefault(); setTab(next, true); } + }); + }); + + /* topbar tools */ + $('tool-export').addEventListener('click', function () { + exportEntity(TAB_ENTITY[ui.tab]); + }); + $('tool-refresh').addEventListener('click', function () { refreshProjection(); }); + $('crm-retry').addEventListener('click', function () { refreshProjection(); }); + $('tool-program').addEventListener('click', function () { openProgramDrawer(this); }); + $('tool-history').addEventListener('click', function () { openHistoryDrawer(this); }); + $('dash-history-open').addEventListener('click', function () { openHistoryDrawer(this); }); + $('tool-invite').addEventListener('click', function () { openInviteDrawer(this); }); + $('tool-logout').addEventListener('click', function () { logout(); }); + + /* affiliate toolbar */ + var affSearch = $('aff-search'); + affSearch.addEventListener('input', function () { + ui.aff.q = affSearch.value; + writeHash(); + renderAffiliates(); + }); + $('aff-owner').addEventListener('change', function () { + ui.aff.owner = this.value; writeHash(); renderAffiliates(); + }); + $('aff-stage').addEventListener('change', function () { + ui.aff.stage = this.value; writeHash(); renderAffiliates(); + }); + $('aff-clear-filters').addEventListener('click', function () { + ui.aff.q = ''; ui.aff.owner = 'all'; ui.aff.stage = 'all'; + affSearch.value = ''; $('aff-owner').value = 'all'; $('aff-stage').value = 'all'; + writeHash(); renderAffiliates(); + toast('Filters cleared.'); + }); + $('aff-add').addEventListener('click', function () { + openDrawer('affiliates', null, this); + }); + + /* pipeline and onboarding filters */ + $('pipe-owner').addEventListener('change', function () { + ui.pipe.owner = this.value; writeHash(); renderPipeline(); + }); + $('onb-owner').addEventListener('change', function () { + ui.onb.owner = this.value; writeHash(); renderOnboarding(); + }); + + /* outbound toolbar */ + var outSearch = $('out-search'); + outSearch.addEventListener('input', function () { + ui.out.q = outSearch.value; writeHash(); renderOutbound(); + }); + $('out-owner').addEventListener('change', function () { + ui.out.owner = this.value; writeHash(); renderOutbound(); + }); + $('out-disp').addEventListener('change', function () { + ui.out.disposition = this.value; writeHash(); renderOutbound(); + }); + $('out-dnc').addEventListener('change', function () { + ui.out.hideDnc = this.checked; writeHash(); renderOutbound(); + }); + $('out-add').addEventListener('click', function () { + openDrawer('outbound', null, this); + }); + + /* money buttons */ + $('sale-add').addEventListener('click', function () { openDrawer('sales', null, this); }); + $('payout-add').addEventListener('click', function () { openDrawer('payouts', null, this); }); + $('sale-export').addEventListener('click', function () { exportEntity('sales'); }); + $('payout-export').addEventListener('click', function () { exportEntity('payouts'); }); + + document.addEventListener('change', function (e) { + if (e.target && (e.target.id === 'invite-test' || e.target.id === 'invite-test-send')) { + syncInviteTestMode(); + } + if (e.target && e.target.id === 'econ-model') syncEconomicsConditions(); + }); + + document.addEventListener('input', function (e) { + if (!e.target || !closest(e.target, '#program-setup-form')) return; + programDirty = true; + var activate = $('program-activate'); + if (activate) { + activate.disabled = true; + activate.title = 'Save this configuration before activating it.'; + } + }); + + /* delegated clicks across the app */ + document.addEventListener('click', async function (e) { + var el = e.target; + + var sortTh = closest(el, '.crm-th.is-sortable'); + if (sortTh) { + var bag = sortBagFor(closest(sortTh, 'table')); + if (bag) { toggleSort(bag, sortTh.getAttribute('data-sort')); return; } + } + + var moveBtn = closest(el, '[data-move]'); + if (moveBtn) { + e.stopPropagation(); + await moveStage(moveBtn.getAttribute('data-id'), parseInt(moveBtn.getAttribute('data-move'), 10)); + return; + } + + var agreementBtn = closest(el, '[data-agreement-action]'); + if (agreementBtn) { + e.stopPropagation(); + await runAgreementAction(agreementBtn); + return; + } + + var lifecycleBtn = closest(el, '[data-lifecycle-stage]'); + if (lifecycleBtn) { + e.stopPropagation(); + await setLifecycleStage( + lifecycleBtn.getAttribute('data-id'), + lifecycleBtn.getAttribute('data-lifecycle-stage') + ); + return; + } + + var touchBtn = closest(el, '[data-touch]'); + if (touchBtn) { + e.stopPropagation(); + await logTouch(touchBtn.getAttribute('data-touch')); + return; + } + + var openBtn = closest(el, '[data-open]'); + if (openBtn) { + e.stopPropagation(); + openDrawer(openBtn.getAttribute('data-entity'), openBtn.getAttribute('data-id'), openBtn); + return; + } + + var childBtn = closest(el, '[data-new-child]'); + if (childBtn) { + e.stopPropagation(); + var parentId = drawer.id; + if (!parentId) { toast('Save the affiliate before adding a related record.'); return; } + var childEntity = childBtn.getAttribute('data-new-child'); + var back = { entity: 'affiliates', id: parentId }; + openDrawer(childEntity, null, childBtn, back); + var affField = qs('[data-field="affiliateId"]', $('crm-drawer-body')); + if (affField) affField.value = parentId; + var dateField = qs('[data-field="date"]', $('crm-drawer-body')); + if (dateField && !dateField.value) dateField.value = CRM.today(); + return; + } + + if (closest(el, '#program-create')) { + var createdProgram = await mutate('program:create', {}, { + expectedRevision: CRM.revision, + success: 'Program setup record created.' + }); + if (createdProgram !== null) openProgramDrawer(drawer.trigger || $('tool-program')); + return; + } + + if (closest(el, '#program-save')) { + var programPayload = collectProgramSetup(); + if (!programPayload) return; + var savedProgram = await mutate('program:update', programPayload, { + expectedRevision: programPayload.expectedRevision, + success: 'Program configuration saved in setup state.' + }); + if (savedProgram !== null) openProgramDrawer(drawer.trigger || $('tool-program')); + return; + } + + if (closest(el, '#program-activate')) { + if (programDirty) { + toast('Save the edited configuration before activating it.'); + return; + } + var currentProgram = CRM.state.program || {}; + var programId = currentProgram.id || currentProgram.programId; + var expectedRevision = currentProgram.revision || CRM.revision; + if (!global.confirm('Activate the saved program configuration? The server will re-check every requirement.')) return; + var activatedProgram = await mutate('program:activate', { + programId: programId, + expectedRevision: expectedRevision + }, { + expectedRevision: expectedRevision, + success: 'Program activation confirmed.' + }); + if (activatedProgram !== null) openProgramDrawer(drawer.trigger || $('tool-program')); + return; + } + + if (closest(el, '[data-drawer-close]')) { closeDrawer(); return; } + + if (closest(el, '#crm-save')) { + if (await saveDrawer() !== null) { + if (drawer.back) { + var b = drawer.back; + drawer.back = null; + openDrawer(b.entity, b.id, drawer.trigger); + } else { + closeDrawer(); + } + renderAll(); + } + return; + } + if (closest(el, '#crm-cancel')) { closeDrawer(); return; } + if (closest(el, '#crm-drawer-back')) { + var bb = drawer.back; + drawer.back = null; + openDrawer(bb.entity, bb.id, drawer.trigger); + return; + } + if (closest(el, '#crm-delete')) { + var label = CRM.SCHEMA[drawer.entity].label; + var extra = drawer.entity === 'affiliates' + ? ' The server may block deletion while related sales, payouts or enrollments exist.' + : ''; + if (!global.confirm('Delete this ' + label.toLowerCase() + '?' + extra)) return; + var doomed = CRM.get(drawer.entity, drawer.id); + var deleted = await mutate(drawer.entity + ':delete', { id: drawer.id }, { + expectedRevision: doomed && doomed.revision, + success: label + ' deleted.' + }); + if (deleted === null) return; + closeDrawer(); + renderAll(); + return; + } + + if (closest(el, '#invite-create')) { + var email = $('invite-email').value.trim(); + var name = $('invite-name').value.trim(); + var testAccount = !!($('invite-test') && $('invite-test').checked); + var sendTestEmail = !!($('invite-test-send') && $('invite-test-send').checked); + var emailRequired = !testAccount || sendTestEmail; + var errorHost = $('invite-error'); + if (emailRequired && (!email || !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email))) { + errorHost.innerHTML = 'Enter a valid email address.'; + $('invite-email').focus(); + return; + } + if (email && !/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(email)) { + errorHost.innerHTML = 'Remove the optional email or enter a valid address.'; + $('invite-email').focus(); + return; + } + errorHost.textContent = ''; + if (testAccount && !email) email = 'sandbox-' + Date.now() + '@example.invalid'; + var payload = { + email: email, + name: name || null + }; + var expectedRevision = CRM.revision; + if (testAccount) payload.sendEmail = sendTestEmail; + if (!testAccount) { + if (!economicsSchema()) { + errorHost.innerHTML = 'Live economics schema is unavailable. Refresh or use sandbox.'; + return; + } + expectedRevision = Number(CRM.state.program && CRM.state.program.revision); + if (!Number.isSafeInteger(expectedRevision) || expectedRevision < 0) { + errorHost.innerHTML = 'The program revision is missing. Refresh before preparing this enrollment.'; + return; + } + var economics = collectEconomicsSnapshot(); + if (economics.errors.length) return; + payload.economicsSnapshot = economics.snapshot; + } + var result = await mutate(testAccount ? 'test-account:create' : 'enrollment:prepare', payload, { + expectedRevision: expectedRevision, + success: testAccount ? '' : 'Enrollment prepared. No invitation has been sent.' + }); + if (result !== null) { + if (testAccount) renderInvitationResult(result, true); + else renderPreparedEnrollment(result); + } + return; + } + + if (closest(el, '#invite-copy')) { + await copyInvitation(); + return; + } + + var row = closest(el, '.crm-row, .crm-card'); + if (row && row.getAttribute('data-entity')) { + var rowInDrawer = $('crm-drawer').contains(row); + if (rowInDrawer) { + openDrawer(row.getAttribute('data-entity'), row.getAttribute('data-id'), row, + { entity: 'affiliates', id: drawer.id }); + } else { + openDrawer(row.getAttribute('data-entity'), row.getAttribute('data-id'), row); + } + } + }); + + /* keyboard on rows, cards and sortable headers */ + document.addEventListener('keydown', function (e) { + if (e.key !== 'Enter' && e.key !== ' ' && e.key !== 'Spacebar') return; + var el = e.target; + var th = closest(el, '.crm-th.is-sortable'); + if (th) { + e.preventDefault(); + var bag = sortBagFor(closest(th, 'table')); + if (bag) toggleSort(bag, th.getAttribute('data-sort')); + return; + } + var row = closest(el, '.crm-row, .crm-card'); + if (row && row.getAttribute('data-entity') && el === row) { + e.preventDefault(); + row.click(); + } + }); + + /* drawer keyboard: escape closes, tab traps, enter saves */ + document.addEventListener('keydown', async function (e) { + if (!drawer.open) return; + if (e.key === 'Escape' || e.key === 'Esc') { + e.preventDefault(); + closeDrawer(); + return; + } + if (drawer.entity && e.key === 'Enter' && e.target && e.target.tagName === 'INPUT' && e.target.type !== 'checkbox') { + e.preventDefault(); + if (await saveDrawer() !== null) { closeDrawer(); renderAll(); } + return; + } + if (e.key !== 'Tab') return; + var panel = $('crm-drawer-panel'); + var items = qsa('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])', panel) + .filter(function (n) { return n.getClientRects().length > 0 || n === document.activeElement; }); + if (!items.length) return; + var first = items[0], last = items[items.length - 1]; + if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); } + else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); } + }); + + /* hash and data changes */ + global.addEventListener('hashchange', function () { + if (hashLock) return; + readHash(); + syncControls(); + setTab(ui.tab); + renderAll(); + }); + global.addEventListener('crm:change', function () { renderAll(); }); + global.addEventListener('crm:status', function () { renderSystemState(); }); + } + + function closest(el, sel) { + while (el && el.nodeType === 1) { + if (el.matches ? el.matches(sel) : el.msMatchesSelector(sel)) return el; + el = el.parentElement; + } + return null; + } + + /* ------------------------------------------------------------- actions */ + + async function moveStage(id, delta) { + var a = CRM.get('affiliates', id); + if (!a) return; + if (a.authoritative === true || a.enrollmentId) { + toast('Enrollment lifecycle changes use explicit activation controls.'); + return; + } + var idx = -1; + CRM.PROSPECT_STAGES.forEach(function (s, i) { if (s.id === a.stage) idx = i; }); + if (idx < 0) idx = 0; + var next = idx + delta; + if (next < 0 || next >= CRM.PROSPECT_STAGES.length) return; + await mutate('affiliate:stage', { + affiliateId: id, + stage: CRM.PROSPECT_STAGES[next].id + }, { + expectedRevision: a.revision, + success: a.name + ' moved to ' + CRM.PROSPECT_STAGES[next].label + '.' + }); + } + + async function setLifecycleStage(id, stage) { + var affiliate = CRM.get('affiliates', id); + if (!affiliate || !(affiliate.authoritative === true || affiliate.enrollmentId)) return; + var labels = { active: 'active', paused: 'paused', churned: 'offboarded' }; + if (!labels[stage]) return; + if (stage === 'churned' && + !global.confirm('Offboard ' + affiliate.name + '? Their Passport access will be revoked.')) { + return; + } + var result = await mutate('affiliate:stage', { + affiliateId: id, + stage: stage + }, { + expectedRevision: affiliate.revision, + success: affiliate.name + ' is now ' + labels[stage] + '.' + }); + if (result !== null && drawer.open && drawer.entity === 'affiliates' && drawer.id === id) { + openDrawer('affiliates', id, drawer.trigger); + } + } + + async function logTouch(id) { + var o = CRM.get('outbound', id); + if (!o) return; + if (o.dnc) { toast('This target asked not to be contacted. No touch logged.'); return; } + await mutate('outbound:touch', { + outboundId: id, + occurredAt: new Date().toISOString() + }, { + expectedRevision: o.revision, + success: o.name + ': touch confirmed.' + }); + } + + async function logout() { + if (busy) return; + setBusy(true); + try { + var response = await global.fetch('/api/control-tower/logout', { + method: 'POST', + credentials: 'same-origin', + headers: { Accept: 'application/json' } + }); + if (!response.ok) { + var body = {}; + try { body = await response.json(); } catch (error) {} + throw new Error(body.message || body.error || 'Logout was not completed.'); + } + var sessionUser = CRM.state.session && CRM.state.session.user || {}; + var authType = sessionUser.authType || + (CRM.state.session && CRM.state.session.authType); + global.location.assign(authType === 'cloudflare_access' + ? '/cdn-cgi/access/logout' + : '/control-tower/access'); + } catch (error) { + toast(mutationMessage(error)); + setBusy(false); + } + } + + /* ---------------------------------------------------------------- init */ + + function syncControls() { + $('aff-search').value = ui.aff.q; + $('aff-owner').value = ui.aff.owner; + $('aff-stage').value = ui.aff.stage; + $('pipe-owner').value = ui.pipe.owner; + $('onb-owner').value = ui.onb.owner; + $('out-search').value = ui.out.q; + $('out-owner').value = ui.out.owner; + $('out-disp').value = ui.out.disposition; + $('out-dnc').checked = ui.out.hideDnc; + } + + async function init() { + fillSelect($('aff-owner'), CRM.OWNERS, 'All owners'); + fillSelect($('pipe-owner'), CRM.OWNERS, 'All owners'); + fillSelect($('onb-owner'), CRM.OWNERS, 'All owners'); + fillSelect($('out-owner'), CRM.OWNERS, 'All owners'); + fillSelect($('aff-stage'), CRM.STAGES, 'All stages'); + fillSelect($('out-disp'), CRM.DISPOSITIONS, 'All dispositions'); + + readHash(); + syncControls(); + wire(); + setTab(ui.tab); + renderAll(); + await refreshProjection({ quiet: true }); + } + + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', init); + } else { + init(); + } + +})(window); diff --git a/biologix-strategy-board/control-tower/crm-data.js b/biologix-strategy-board/control-tower/crm-data.js new file mode 100644 index 0000000..9cfac95 --- /dev/null +++ b/biologix-strategy-board/control-tower/crm-data.js @@ -0,0 +1,685 @@ +/* Biologix Control Tower — authoritative data adapter. + Reads a same-origin projection and sends explicit, revision-aware actions. + No browser persistence and no seed data. Exposed as window.CRM. */ +(function (global) { + 'use strict'; + + var PROJECTION_URL = '/api/control-tower/projection'; + var ACTION_URL = '/api/control-tower/action'; + + /* Filled from the authoritative staff projection. Keep this array stable so + schema controls that reference it update in place after every refresh. */ + var OWNERS = ['Unassigned']; + + var PROSPECT_STAGES = [ + { id: 'sourced', label: 'Sourced', group: 'recruit' }, + { id: 'contacted', label: 'Contacted', group: 'recruit' }, + { id: 'replied', label: 'Replied', group: 'recruit' }, + { id: 'qualified', label: 'Qualified', group: 'recruit' }, + { id: 'call_booked', label: 'Call booked', group: 'close' }, + { id: 'call_done', label: 'Call done', group: 'close' }, + { id: 'agreement_sent', label: 'Agreement sent', group: 'close' }, + { id: 'converted', label: 'Converted', group: 'close' }, + { id: 'disqualified', label: 'Disqualified', group: 'dead' } + ]; + + /* These are projections of the enrollment lifecycle. They are never editable + as ordinary prospect stages. */ + var LIFECYCLE_STAGES = [ + { id: 'signed', label: 'Signed', group: 'close' }, + { id: 'onboarding', label: 'Onboarding', group: 'activate' }, + { id: 'active', label: 'Active', group: 'live' }, + { id: 'paused', label: 'Paused', group: 'live' }, + { id: 'churned', label: 'Churned', group: 'dead' }, + { id: 'rejected', label: 'Rejected', group: 'dead' } + ]; + var STAGES = PROSPECT_STAGES.concat(LIFECYCLE_STAGES); + + var LOSS_REASONS = [ + 'No reply', 'Not a fit', 'Audience too small', 'Compliance risk', + 'Wants cash upfront', 'Competing brand', 'Went dark', 'Rate rejected', 'Other' + ]; + + var GATES = [ + { id: 'passport', label: 'OVO Creator Passport', note: 'Reusable OVO identity clearance.' }, + { id: 'adult', label: 'Adult eligibility', note: '18+ verified via provider. Reference only, never stored here.' }, + { id: 'agreement', label: 'Agreement executed', note: 'Signed affiliate agreement, exact version recorded.' }, + { id: 'tax', label: 'Tax + payout set up', note: 'W-9/W-8 on file with provider, payout method verified.' }, + { id: 'training', label: 'Claims + disclosure training', note: 'What they may say, and the FTC disclosure rule.' }, + { id: 'account', label: 'Affiliate account created', note: 'Account exists in the affiliate system.' }, + { id: 'tracking', label: 'Tracking QA passed', note: 'Test click and test order attributed correctly.' }, + { id: 'content', label: 'First content approved', note: 'First batch reviewed against approved claims.' }, + { id: 'launch', label: 'Launch authorised', note: 'Owner signs off. Links go live.' } + ]; + + var CHANNELS = ['Instagram DM', 'Email', 'SMS', 'Discord', 'Referral', 'In person', 'Other']; + var DISPOSITIONS = [ + 'No response', 'Interested', 'Not interested', 'Wrong person', + 'Asked to follow up', 'Booked call', 'Do not contact' + ]; + var RISK_FLAGS = [ + 'Unverified age', 'Makes medical claims', 'No disclosure', 'Competing brand', + 'Chargeback history', 'Bought followers', 'Off-platform selling' + ]; + + var SCHEMA = { + affiliates: { + label: 'Affiliate', + plural: 'Affiliates', + fields: [ + { key: 'name', label: 'Name', type: 'text', required: true }, + { key: 'handle', label: 'Handle', type: 'text', hint: 'Primary social handle, no @' }, + { key: 'platform', label: 'Platform', type: 'select', options: ['Instagram', 'TikTok', 'YouTube', 'X', 'Other'] }, + { key: 'followers', label: 'Followers', type: 'number' }, + { key: 'owner', label: 'Owner', type: 'select', options: OWNERS, required: true }, + { key: 'stage', label: 'Stage', type: 'select', options: PROSPECT_STAGES.map(function (s) { return s.id; }), required: true, authoritative: true }, + { key: 'source', label: 'Source', type: 'text', hint: 'Where they came from' }, + { key: 'parentId', label: 'Recruited by', type: 'ref', ref: 'affiliates', hint: 'Upline affiliate. Drives override commission.' }, + { key: 'code', label: 'Code', type: 'text' }, + { key: 'link', label: 'Link', type: 'text' }, + { key: 'rate', label: 'Commission rate %', type: 'number', hint: 'Unset means unknown, never zero.' }, + { key: 'overrideRate', label: 'Override rate %', type: 'number' }, + { key: 'signedOn', label: 'Signed on', type: 'date' }, + { key: 'gates', label: 'Activation gates', type: 'gates', authoritative: true }, + { key: 'postsLive', label: 'Posts live', type: 'number' }, + { key: 'lastPostOn', label: 'Last post', type: 'date' }, + { key: 'nextAction', label: 'Next action', type: 'text', required: true }, + { key: 'nextActionDue', label: 'Next action due', type: 'date', required: true }, + { key: 'lossReason', label: 'Loss reason', type: 'select', options: LOSS_REASONS }, + { key: 'risk', label: 'Risk flags', type: 'multi', options: RISK_FLAGS }, + { key: 'notes', label: 'Notes', type: 'textarea' } + ] + }, + sales: { + label: 'Sale', + plural: 'Sales', + fields: [ + { key: 'date', label: 'Date', type: 'date', required: true }, + { key: 'affiliateId', label: 'Affiliate', type: 'ref', ref: 'affiliates', required: true }, + { key: 'orderRef', label: 'Order ref', type: 'text' }, + { key: 'gross', label: 'Gross', type: 'money', required: true }, + { key: 'refunded', label: 'Refunded', type: 'money', readOnly: true, hint: 'Calculated from the immutable refund ledger.' }, + { key: 'product', label: 'Product', type: 'text' }, + { key: 'notes', label: 'Notes', type: 'text' } + ] + }, + outbound: { + label: 'Target', + plural: 'Outbound', + fields: [ + { key: 'name', label: 'Name', type: 'text', required: true }, + { key: 'handle', label: 'Handle', type: 'text' }, + { key: 'platform', label: 'Platform', type: 'select', options: ['Instagram', 'TikTok', 'YouTube', 'X', 'Other'] }, + { key: 'followers', label: 'Followers', type: 'number' }, + { key: 'owner', label: 'Owner', type: 'select', options: OWNERS, required: true }, + { key: 'channel', label: 'Channel', type: 'select', options: CHANNELS }, + { key: 'step', label: 'Sequence step', type: 'number' }, + { key: 'lastTouch', label: 'Last touch', type: 'date', authoritative: true }, + { key: 'replied', label: 'Replied', type: 'bool' }, + { key: 'disposition', label: 'Disposition', type: 'select', options: DISPOSITIONS }, + { key: 'dnc', label: 'Do not contact', type: 'bool' }, + { key: 'nextAction', label: 'Next action', type: 'text' }, + { key: 'nextActionDue', label: 'Next action due', type: 'date' }, + { key: 'notes', label: 'Notes', type: 'textarea' } + ] + }, + payouts: { + label: 'Payout', + plural: 'Payouts', + fields: [ + { key: 'date', label: 'Date', type: 'date', required: true }, + { key: 'affiliateId', label: 'Affiliate', type: 'ref', ref: 'affiliates', required: true }, + { key: 'amount', label: 'Amount', type: 'money', required: true }, + { key: 'method', label: 'Method', type: 'select', options: ['ACH', 'PayPal', 'Wire', 'Venmo', 'Other'] }, + { key: 'status', label: 'Status', type: 'select', options: ['Queued', 'Sent', 'Cleared', 'Failed', 'Clawed back'] }, + { key: 'reference', label: 'Reference', type: 'text' }, + { key: 'notes', label: 'Notes', type: 'text' } + ] + } + }; + + var ACTIONS = Object.freeze({ + 'affiliates:create': 'affiliate.create', + 'affiliates:update': 'affiliate.update', + 'affiliates:delete': 'affiliate.delete', + 'sales:create': 'sale.create', + 'sales:update': 'sale.update', + 'sales:delete': 'sale.delete', + 'outbound:create': 'outbound.create', + 'outbound:update': 'outbound.update', + 'outbound:delete': 'outbound.delete', + 'payouts:create': 'payout.create', + 'payouts:update': 'payout.update', + 'payouts:delete': 'payout.delete', + 'affiliate:stage': 'affiliate.stage.set', + 'outbound:touch': 'outbound.touch.log', + 'enrollment:prepare': 'enrollment.prepare', + 'agreement:launch': 'agreement.launch', + 'agreement:manage': 'agreement.manage', + 'invitation:send': 'invitation.send', + 'test-account:create': 'test-account.create', + 'program:create': 'program.create', + 'program:update': 'program.update', + 'program:activate': 'program.activate' + }); + + var state = emptyState(); + var status = { + phase: 'idle', + error: null, + revision: null, + refreshedAt: null, + generatedAt: null + }; + + function emptyState() { + return { + meta: {}, + program: {}, + programSetup: {}, + session: {}, + capabilities: {}, + owners: [], + enrollments: [], + audit: [], + affiliates: [], + sales: [], + outbound: [], + payouts: [] + }; + } + + function dispatch(name, detail) { + if (typeof global.dispatchEvent !== 'function') return; + var event; + try { event = new CustomEvent(name, { detail: detail }); } + catch (e) { event = { type: name, detail: detail }; } + global.dispatchEvent(event); + } + + function apiErrorMessage(statusCode, body) { + var server = body && (body.message || body.error); + if (statusCode === 401) return server || 'Your session expired. Sign in again.'; + if (statusCode === 403) return server || 'You do not have permission to perform that action.'; + if (statusCode === 409) return server || 'This record changed elsewhere. The latest version has been loaded.'; + if (statusCode === 503) return server || 'The control tower is temporarily unavailable. Try again shortly.'; + return server || ('Request failed with status ' + statusCode + '.'); + } + + function makeError(response, body) { + var err = new Error(apiErrorMessage(response.status, body)); + err.status = response.status; + err.code = body && body.code; + err.details = body && body.details; + return err; + } + + function normalizeProjection(payload) { + payload = payload || {}; + var source = payload && payload.projection ? payload.projection : payload; + source = source || {}; + var next = emptyState(); + ['affiliates', 'sales', 'outbound', 'payouts', 'enrollments'].forEach(function (key) { + next[key] = Array.isArray(source[key]) ? source[key].slice() : []; + }); + next.audit = Array.isArray(source.audit) ? source.audit.slice() + : Array.isArray(source.auditLog) ? source.auditLog.slice() + : Array.isArray(source.history) ? source.history.slice() : []; + next.meta = source.meta || {}; + next.program = source.program || {}; + next.programSetup = source.programSetup || {}; + next.session = source.session || payload.session || {}; + next.capabilities = source.capabilities || payload.capabilities || {}; + var projectedOwners = Array.isArray(source.owners) ? source.owners : []; + var ownerNames = projectedOwners.map(function (owner) { + if (typeof owner === 'string') return owner.trim(); + if (!owner || typeof owner !== 'object') return ''; + return String(owner.name || owner.fullName || owner.displayName || '').trim(); + }).filter(Boolean); + ownerNames = ownerNames.filter(function (name, index) { + return ownerNames.indexOf(name) === index && name !== 'Unassigned'; + }); + ownerNames.push('Unassigned'); + OWNERS.splice.apply(OWNERS, [0, OWNERS.length].concat(ownerNames)); + next.owners = projectedOwners.slice(); + var sourceRevision = source.revision; + var payloadRevision = payload.revision; + return { + state: next, + revision: sourceRevision !== undefined && sourceRevision !== null + ? sourceRevision + : payloadRevision !== undefined && payloadRevision !== null + ? payloadRevision + : null, + generatedAt: source.generatedAt || payload.generatedAt || null + }; + } + + async function readJson(response) { + var text = await response.text(); + if (!text) return {}; + try { return JSON.parse(text); } + catch (e) { + var err = new Error('The server returned an unreadable response.'); + err.status = response.status; + throw err; + } + } + + async function load() { + status.phase = 'loading'; + status.error = null; + dispatch('crm:status', status); + try { + var response = await global.fetch(PROJECTION_URL, { + method: 'GET', + credentials: 'same-origin', + headers: { Accept: 'application/json' }, + cache: 'no-store' + }); + var body = await readJson(response); + if (!response.ok) throw makeError(response, body); + var normalized = normalizeProjection(body); + state = normalized.state; + status.phase = 'ready'; + status.error = null; + status.revision = normalized.revision; + status.generatedAt = normalized.generatedAt; + status.refreshedAt = new Date().toISOString(); + dispatch('crm:change', { source: 'projection' }); + dispatch('crm:status', status); + return state; + } catch (err) { + if (err && err.status === 401) { + state = emptyState(); + status.revision = null; + status.generatedAt = null; + status.refreshedAt = null; + dispatch('crm:change', { source: 'session-expired' }); + } + status.phase = 'error'; + status.error = err; + dispatch('crm:status', status); + throw err; + } + } + + function idempotencyKey(action) { + var random = ''; + if (global.crypto && typeof global.crypto.randomUUID === 'function') { + random = global.crypto.randomUUID(); + } else { + random = Date.now().toString(36) + '-' + Math.random().toString(36).slice(2); + } + return 'ct-' + String(action).replace(/[^a-z0-9]+/gi, '-').toLowerCase() + '-' + random; + } + + function actionName(key) { + var name = ACTIONS[key]; + if (!name) throw new Error('Unsupported control-tower action: ' + key); + return name; + } + + function capabilityAllows(action) { + var list = state.capabilities && state.capabilities.actions; + return Array.isArray(list) && list.indexOf(action) >= 0; + } + + async function action(key, payload, options) { + options = options || {}; + var name = actionName(key); + if (!capabilityAllows(name)) { + var denied = new Error('This action is not enabled for your account.'); + denied.status = 403; + throw denied; + } + var body = { + action: name, + idempotencyKey: options.idempotencyKey || idempotencyKey(name), + payload: payload || {} + }; + var revision = options.expectedRevision; + if (revision === undefined || revision === null || revision === '') revision = status.revision; + if (revision !== undefined && revision !== null && revision !== '') body.expectedRevision = revision; + + var response = await global.fetch(ACTION_URL, { + method: 'POST', + credentials: 'same-origin', + headers: { Accept: 'application/json', 'Content-Type': 'application/json' }, + body: JSON.stringify(body) + }); + var result = await readJson(response); + if (!response.ok) throw makeError(response, result); + return result; + } + + function get(entity, id) { + return (state[entity] || []).find(function (row) { return row.id === id; }) || null; + } + function all(entity) { return (state[entity] || []).slice(); } + function num(value) { var n = parseFloat(value); return isNaN(n) ? 0 : n; } + + function isTestAffiliate(affiliate) { + if (!affiliate) return false; + return affiliate.isTest === true || affiliate.testAccount === true || + affiliate.sandbox === true || affiliate.environment === 'test' || + affiliate.accountType === 'test'; + } + + function isTestRecord(entity, record) { + if (!record) return false; + if (record.isTest === true || record.sandbox === true || record.environment === 'test') return true; + if (entity === 'affiliates') return isTestAffiliate(record); + if (entity === 'sales' || entity === 'payouts') { + return isTestAffiliate(get('affiliates', record.affiliateId)); + } + return false; + } + + function today() { + var d = new Date(); + return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()); + } + function pad(n) { return n < 10 ? '0' + n : String(n); } + function addDays(iso, n) { + var d = new Date(iso + 'T12:00:00'); + d.setDate(d.getDate() + n); + return d.getFullYear() + '-' + pad(d.getMonth() + 1) + '-' + pad(d.getDate()); + } + function daysBetween(a, b) { + if (!a || !b) return null; + return Math.round((new Date(b + 'T12:00:00') - new Date(a + 'T12:00:00')) / 86400000); + } + + function affiliateMoney(id) { + var sales = state.sales.filter(function (sale) { return sale.affiliateId === id; }); + var gross = 0, refunded = 0, lastSale = ''; + sales.forEach(function (sale) { + gross += num(sale.gross); + refunded += num(sale.refunded); + if (!lastSale || sale.date > lastSale) lastSale = sale.date; + }); + var net = gross - refunded; + var affiliate = get('affiliates', id); + var rate = affiliate && affiliate.rate !== null && affiliate.rate !== '' && affiliate.rate !== undefined + ? num(affiliate.rate) : null; + var earned = rate === null ? null : net * rate / 100; + var downline = state.affiliates.filter(function (row) { return row.parentId === id; }); + var overrideEarned = null; + downline.forEach(function (child) { + var childRate = child.overrideRate !== null && child.overrideRate !== '' && child.overrideRate !== undefined + ? num(child.overrideRate) : null; + if (childRate === null) return; + var childNet = state.sales.filter(function (sale) { return sale.affiliateId === child.id; }) + .reduce(function (sum, sale) { return sum + num(sale.gross) - num(sale.refunded); }, 0); + overrideEarned = (overrideEarned || 0) + childNet * childRate / 100; + }); + var paid = state.payouts.filter(function (payout) { + return payout.affiliateId === id && (payout.status === 'Sent' || payout.status === 'Cleared'); + }).reduce(function (sum, payout) { return sum + num(payout.amount); }, 0); + var totalEarned = earned === null && overrideEarned === null ? null : num(earned) + num(overrideEarned); + return { + orders: sales.length, + gross: gross, + refunded: refunded, + net: net, + refundRate: gross > 0 ? refunded / gross : 0, + aov: sales.length ? gross / sales.length : 0, + rate: rate, + earned: earned, + overrideEarned: overrideEarned, + totalEarned: totalEarned, + paid: paid, + owed: totalEarned === null ? null : totalEarned - paid, + lastSale: lastSale, + daysSinceLastSale: lastSale ? daysBetween(lastSale, today()) : null, + downlineCount: downline.length + }; + } + + function gateProgress(affiliate) { + var gates = affiliate && affiliate.gates || {}; + var done = GATES.filter(function (gate) { return gates[gate.id] === true; }).length; + var blocked = GATES.find(function (gate) { return gates[gate.id] !== true; }) || null; + return { done: done, total: GATES.length, blockedBy: blocked, complete: done === GATES.length }; + } + + function activationReadiness(affiliate) { + var gates = affiliate && affiliate.gates || {}; + var prerequisites = GATES.filter(function (gate) { return gate.id !== 'launch'; }); + var done = prerequisites.filter(function (gate) { return gates[gate.id] === true; }).length; + var blocked = prerequisites.find(function (gate) { return gates[gate.id] !== true; }) || null; + return { + done: done, + total: prerequisites.length, + blockedBy: blocked, + ready: done === prerequisites.length + }; + } + + function defects() { + var result = []; + state.affiliates.forEach(function (affiliate) { + var why = []; + if (!affiliate.owner || affiliate.owner === 'Unassigned') why.push('no owner'); + if (!affiliate.nextAction) why.push('no next action'); + if (!affiliate.nextActionDue) why.push('no due date'); + if (affiliate.stage === 'active' && !gateProgress(affiliate).complete) why.push('live but gates incomplete'); + if (affiliate.stage === 'active' && !affiliate.code && !affiliate.link) why.push('live but no code or link'); + if (why.length) result.push({ entity: 'affiliates', id: affiliate.id, name: affiliate.name, why: why }); + }); + state.outbound.forEach(function (target) { + var why = []; + if (!target.owner || target.owner === 'Unassigned') why.push('no owner'); + if (!target.dnc && !target.nextAction) why.push('no next action'); + if (why.length) result.push({ entity: 'outbound', id: target.id, name: target.name, why: why }); + }); + return result; + } + + function overdue() { + var date = today(); + var result = []; + state.affiliates.forEach(function (affiliate) { + if (affiliate.nextActionDue && affiliate.nextActionDue < date && + ['churned', 'rejected', 'disqualified'].indexOf(affiliate.stage) < 0) { + result.push({ + entity: 'affiliates', id: affiliate.id, name: affiliate.name, owner: affiliate.owner, + action: affiliate.nextAction, due: affiliate.nextActionDue, + daysLate: -daysBetween(date, affiliate.nextActionDue) + }); + } + }); + state.outbound.forEach(function (target) { + if (!target.dnc && target.nextActionDue && target.nextActionDue < date) { + result.push({ + entity: 'outbound', id: target.id, name: target.name, owner: target.owner, + action: target.nextAction, due: target.nextActionDue, + daysLate: -daysBetween(date, target.nextActionDue) + }); + } + }); + return result.sort(function (a, b) { return b.daysLate - a.daysLate; }); + } + + function totals() { + var liveAffiliates = state.affiliates.filter(function (affiliate) { return !isTestAffiliate(affiliate); }); + var liveSales = state.sales.filter(function (sale) { return !isTestRecord('sales', sale); }); + var gross = 0, refunded = 0; + liveSales.forEach(function (sale) { gross += num(sale.gross); refunded += num(sale.refunded); }); + var live = liveAffiliates.filter(function (affiliate) { return affiliate.stage === 'active'; }); + var selling = {}; + liveSales.forEach(function (sale) { selling[sale.affiliateId] = true; }); + var producing = live.filter(function (affiliate) { return selling[affiliate.id]; }); + var signed = liveAffiliates.filter(function (affiliate) { + return ['signed', 'onboarding', 'active', 'paused', 'churned'].indexOf(affiliate.stage) >= 0; + }); + var anyRate = liveAffiliates.some(function (affiliate) { + return affiliate.rate !== null && affiliate.rate !== '' && affiliate.rate !== undefined; + }); + var owed = null; + if (anyRate) { + owed = 0; + liveAffiliates.forEach(function (affiliate) { + var money = affiliateMoney(affiliate.id); + if (money.owed !== null) owed += money.owed; + }); + } + var onboarding = liveAffiliates.filter(function (affiliate) { return affiliate.stage === 'onboarding'; }); + var gatesBlocked = {}; + onboarding.forEach(function (affiliate) { + var progress = gateProgress(affiliate); + if (progress.blockedBy) { + gatesBlocked[progress.blockedBy.id] = (gatesBlocked[progress.blockedBy.id] || 0) + 1; + } + }); + var net = gross - refunded; + return { + gross: gross, refunded: refunded, net: net, orders: liveSales.length, + aov: liveSales.length ? gross / liveSales.length : 0, + refundRate: gross > 0 ? refunded / gross : 0, + affiliateCount: liveAffiliates.length, + signedCount: signed.length, + liveCount: live.length, + producingCount: producing.length, + activationRate: signed.length ? producing.length / signed.length : null, + onboardingCount: onboarding.length, + gatesBlocked: gatesBlocked, + outboundCount: state.outbound.filter(function (target) { return !target.dnc && !isTestRecord('outbound', target); }).length, + outboundReplied: state.outbound.filter(function (target) { return target.replied && !isTestRecord('outbound', target); }).length, + commissionOwed: owed, + rateAgreed: anyRate, + defectCount: defects().length, + overdueCount: overdue().length + }; + } + + function pipelineCounts() { + var result = {}; + STAGES.forEach(function (stage) { result[stage.id] = 0; }); + state.affiliates.forEach(function (affiliate) { + result[affiliate.stage] = (result[affiliate.stage] || 0) + 1; + }); + return result; + } + + function salesByDay(days) { + var end = today(), map = {}, result = []; + for (var i = days - 1; i >= 0; i--) map[addDays(end, -i)] = 0; + state.sales.filter(function (sale) { return !isTestRecord('sales', sale); }).forEach(function (sale) { + if (map[sale.date] !== undefined) map[sale.date] += num(sale.gross) - num(sale.refunded); + }); + Object.keys(map).forEach(function (date) { result.push({ date: date, value: map[date] }); }); + return result; + } + + function sortValue(entity, row, key) { + if (entity === 'affiliates' && + ['gross', 'net', 'orders', 'owed', 'aov', 'lastSale', 'refunded'].indexOf(key) >= 0) { + return affiliateMoney(row.id)[key]; + } + if (entity === 'affiliates' && key === 'gates') return gateProgress(row).done; + if (key === 'affiliateId' && (entity === 'sales' || entity === 'payouts')) { + var affiliate = get('affiliates', row.affiliateId); + return affiliate && affiliate.name || ''; + } + return row[key]; + } + + function list(entity, options) { + options = options || {}; + var rows = all(entity); + if (options.search) { + var query = options.search.toLowerCase(); + rows = rows.filter(function (row) { + return Object.keys(row).some(function (key) { + return typeof row[key] === 'string' && row[key].toLowerCase().indexOf(query) >= 0; + }); + }); + } + Object.keys(options.filters || {}).forEach(function (key) { + var expected = options.filters[key]; + if (!expected || expected === 'all') return; + rows = rows.filter(function (row) { return String(row[key]) === String(expected); }); + }); + if (options.sort) { + var direction = options.dir === 'desc' ? -1 : 1; + rows.sort(function (a, b) { + var av = sortValue(entity, a, options.sort); + var bv = sortValue(entity, b, options.sort); + if (av === null || av === undefined || av === '') return 1; + if (bv === null || bv === undefined || bv === '') return -1; + if (typeof av === 'number' && typeof bv === 'number') return (av - bv) * direction; + return String(av).localeCompare(String(bv)) * direction; + }); + } + return rows; + } + + function csvEscape(value) { + if (value === null || value === undefined) return ''; + var text = typeof value === 'object' ? JSON.stringify(value) : String(value); + return /[",\n]/.test(text) ? '"' + text.replace(/"/g, '""') + '"' : text; + } + + function toCSV(entity) { + var fields = SCHEMA[entity].fields.map(function (field) { return field.key; }); + var header = ['id'].concat(fields); + if (entity === 'affiliates') header = header.concat(['orders', 'gross', 'refunded', 'net', 'commissionOwed']); + var lines = [header.join(',')]; + all(entity).forEach(function (row) { + lines.push(header.map(function (key) { + if (entity === 'affiliates' && + ['orders', 'gross', 'refunded', 'net', 'commissionOwed'].indexOf(key) >= 0) { + var money = affiliateMoney(row.id); + return csvEscape(key === 'commissionOwed' ? (money.owed === null ? 'no rate set' : money.owed) : money[key]); + } + return csvEscape(row[key]); + }).join(',')); + }); + return lines.join('\n'); + } + + global.CRM = { + PROJECTION_URL: PROJECTION_URL, + ACTION_URL: ACTION_URL, + ACTIONS: ACTIONS, + OWNERS: OWNERS, + STAGES: STAGES, + PROSPECT_STAGES: PROSPECT_STAGES, + LIFECYCLE_STAGES: LIFECYCLE_STAGES, + GATES: GATES, + CHANNELS: CHANNELS, + DISPOSITIONS: DISPOSITIONS, + LOSS_REASONS: LOSS_REASONS, + RISK_FLAGS: RISK_FLAGS, + SCHEMA: SCHEMA, + load: load, + action: action, + actionName: actionName, + idempotencyKey: idempotencyKey, + capabilityAllows: capabilityAllows, + normalizeProjection: normalizeProjection, + apiErrorMessage: apiErrorMessage, + get: get, + all: all, + list: list, + affiliateMoney: affiliateMoney, + gateProgress: gateProgress, + activationReadiness: activationReadiness, + totals: totals, + defects: defects, + overdue: overdue, + pipelineCounts: pipelineCounts, + salesByDay: salesByDay, + toCSV: toCSV, + isTestAffiliate: isTestAffiliate, + isTestRecord: isTestRecord, + today: today, + addDays: addDays, + daysBetween: daysBetween, + get state() { return state; }, + get status() { return status; }, + get revision() { return status.revision; } + }; +})(window); diff --git a/biologix-strategy-board/control-tower/crm-data.test.mjs b/biologix-strategy-board/control-tower/crm-data.test.mjs new file mode 100644 index 0000000..fcc1dac --- /dev/null +++ b/biologix-strategy-board/control-tower/crm-data.test.mjs @@ -0,0 +1,333 @@ +import fs from 'node:fs'; + +const dataSource = fs.readFileSync('./crm-data.js', 'utf8'); +const appSource = fs.readFileSync('./crm-app.js', 'utf8'); +const htmlSource = fs.readFileSync('./index.html', 'utf8'); + +global.window = global; +global.CustomEvent = class { + constructor(type, options = {}) { + this.type = type; + this.detail = options.detail; + } +}; +global.dispatchEvent = () => {}; + +const requests = []; +let responses = []; +function response(status, body) { + return { + status, + ok: status >= 200 && status < 300, + async text() { + return body === undefined ? '' : JSON.stringify(body); + } + }; +} +global.fetch = async (url, options = {}) => { + requests.push({ url, options }); + if (!responses.length) throw new Error(`No queued response for ${url}`); + return responses.shift(); +}; + +eval(dataSource); +const CRM = global.CRM; + +let failures = 0; +function ok(name, condition, extra = '') { + console.log(`${condition ? 'PASS' : 'FAIL'} ${name}${extra ? ` ${extra}` : ''}`); + if (!condition) failures += 1; +} + +const projection = { + revision: 1, + generatedAt: '2026-07-25T18:00:00.000Z', + owners: [ + { id: 'owner-1', name: 'Alex', role: 'admin' }, + { id: 'owner-2', name: 'Patricia', role: 'manager' } + ], + program: { + name: 'Biologix Affiliate Program', + status: 'active', + revision: 7, + economicsSchema: { + version: 2, + values: { + currency: 'USD', + model: 'percentage', + terms: '25% of attributed net sales.', + terms_reference: 'terms-creator-one-v1', + commission_rate: '25', + commission_base: 'Attributed net sales after refunds', + attribution_window_days: '30', + settlement_hold_days: '14', + clawback_days: '60', + payout_cadence: 'monthly', + payout_threshold: '50.00', + agreement_version: 'affiliate-v3', + retainer_amount: null, + retainer_cadence: null, + retainer_proration: null + } + } + }, + capabilities: { actions: Object.values(CRM.ACTIONS), testAccounts: true }, + affiliates: [ + { + id: 'a1', + revision: 4, + authoritative: true, + enrollmentId: 'e1', + economicsStatus: 'bound', + name: 'Creator One', + owner: 'Patricia', + stage: 'onboarding', + rate: 20, + gates: { passport: true, adult: true }, + nextAction: 'Complete agreement', + nextActionDue: '2099-08-01' + }, + { + id: 'a-test', + name: 'Sandbox Creator', + owner: 'Alex', + stage: 'active', + isTest: true, + rate: 100, + gates: {}, + nextAction: 'Exercise the flow', + nextActionDue: '2099-08-01' + } + ], + sales: [ + { id: 's1', affiliateId: 'a1', date: '2026-07-24', gross: 200, refunded: 25 }, + { id: 's-test', affiliateId: 'a-test', date: '2026-07-24', gross: 999, refunded: 0, isTest: true } + ], + payouts: [ + { id: 'p1', affiliateId: 'a1', date: '2026-07-25', amount: 10, status: 'Cleared' } + ], + outbound: [], + enrollments: [{ id: 'e1', affiliateId: 'a1', status: 'onboarding' }], + auditLog: [{ id: 'event-1', action: 'enrollment.created', affiliateId: 'a1' }] +}; + +responses.push(response(200, { projection })); +await CRM.load(); + +ok('projection endpoint is same-origin', requests[0].url === '/api/control-tower/projection', requests[0].url); +ok('projection request bypasses caches', requests[0].options.cache === 'no-store'); +ok('nested projection normalizes affiliates', CRM.all('affiliates').length === 2); +ok('auditLog alias normalizes to audit', CRM.state.audit.length === 1); +ok('projection revision is retained', CRM.revision === 1, String(CRM.revision)); +ok('owners come only from the authoritative projection', + CRM.OWNERS.join(',') === 'Alex,Patricia,Unassigned', CRM.OWNERS.join(',')); +ok('refresh time is recorded after a successful load', Boolean(CRM.status.refreshedAt)); + +const money = CRM.affiliateMoney('a1'); +ok('money derives net from authoritative ledgers', money.net === 175, String(money.net)); +ok('commission derives from the projected rate', money.earned === 35, String(money.earned)); +ok('cleared payout reduces commission owed', money.owed === 25, String(money.owed)); +ok('gate progress derives from projected gates', CRM.gateProgress(CRM.get('affiliates', 'a1')).done === 2); +ok('sandbox sales are excluded from live totals', CRM.totals().net === 175, String(CRM.totals().net)); +ok('sandbox affiliates are excluded from live counts', CRM.totals().affiliateCount === 1); + +responses.push(response(200, { ok: true, receiptId: 'receipt-1' })); +const actionResult = await CRM.action( + 'affiliates:update', + { id: 'a1', patch: { name: 'Creator Renamed' } }, + { idempotencyKey: 'fixed-idempotency-key', expectedRevision: 4 } +); +const actionRequest = requests.at(-1); +const actionBody = JSON.parse(actionRequest.options.body); +ok('actions use the same-origin action endpoint', actionRequest.url === '/api/control-tower/action'); +ok('record update maps to explicit allowlisted action', actionBody.action === 'affiliate.update', actionBody.action); +ok('action carries caller-stable idempotency key', actionBody.idempotencyKey === 'fixed-idempotency-key'); +ok('action carries expected numeric record revision', actionBody.expectedRevision === 4); +ok('action payload is explicit', actionBody.payload.id === 'a1' && actionBody.payload.patch.name === 'Creator Renamed'); +ok('successful action returns server receipt', actionResult.receiptId === 'receipt-1'); +ok('action does not optimistically mutate projection', CRM.get('affiliates', 'a1').name === 'Creator One'); + +ok('stage movement has a dedicated action', CRM.actionName('affiliate:stage') === 'affiliate.stage.set'); +ok('touch logging has a dedicated action', CRM.actionName('outbound:touch') === 'outbound.touch.log'); +ok('agreement onboarding actions are explicit', [ + CRM.actionName('enrollment:prepare'), + CRM.actionName('agreement:launch'), + CRM.actionName('agreement:manage'), + CRM.actionName('invitation:send') +].join(',') === 'enrollment.prepare,agreement.launch,agreement.manage,invitation.send'); +ok('test account has a dedicated action', CRM.actionName('test-account:create') === 'test-account.create'); +ok('program setup actions are explicit', [ + CRM.actionName('program:create'), + CRM.actionName('program:update'), + CRM.actionName('program:activate') +].join(',') === 'program.create,program.update,program.activate'); +ok('unsupported action is rejected before fetch', (() => { + try { CRM.actionName('gate:toggle'); return false; } catch { return true; } +})()); + +const capabilityRequestCount = requests.length; +const savedCapabilities = CRM.state.capabilities.actions; +CRM.state.capabilities.actions = ['session.logout']; +let capabilityError; +try { + await CRM.action('affiliates:update', { id: 'a1', patch: { owner: 'Alex' } }); +} catch (error) { + capabilityError = error; +} +CRM.state.capabilities.actions = savedCapabilities; +ok('actions fail closed when the capability is absent', + capabilityError && capabilityError.status === 403 && + requests.length === capabilityRequestCount); + +responses.push(response(409, { code: 'revision_conflict', message: 'Record changed elsewhere.' })); +let conflict; +try { + await CRM.action('affiliates:update', { id: 'a1', patch: { owner: 'Alex' } }); +} catch (error) { + conflict = error; +} +const conflictBody = JSON.parse(requests.at(-1).options.body); +ok('default expectedRevision uses numeric projection revision', conflictBody.expectedRevision === 1); +ok('conflict exposes status 409', conflict && conflict.status === 409); +ok('conflict keeps last confirmed projection intact', CRM.get('affiliates', 'a1').owner === 'Patricia'); + +for (const [status, expected] of [ + [401, 'session'], + [403, 'permission'], + [503, 'temporarily'] +]) { + responses.push(response(status, {})); + let error; + try { + await CRM.action('enrollment:prepare', { + email: 'creator@example.com', + economicsSnapshot: projection.program.economicsSchema.values + }); + } catch (caught) { + error = caught; + } + ok(`${status} has specific operator guidance`, + error && error.status === status && error.message.toLowerCase().includes(expected), + error && error.message); +} + +responses.push(response(200, { + ...projection, + revision: 2, + affiliates: [{ ...projection.affiliates[0], name: 'Creator Renamed' }] +})); +await CRM.load(); +ok('later projection replaces the confirmed state', CRM.get('affiliates', 'a1').name === 'Creator Renamed'); + +responses.push(response(200, { + ...projection, + revision: 0, + affiliates: [] +})); +await CRM.load(); +ok('numeric zero revision survives normalization', CRM.revision === 0, String(CRM.revision)); + +responses.push(response(200, { projection })); +await CRM.load(); +responses.push(response(401, { code: 'session_expired' })); +try { + await CRM.load(); +} catch {} +ok('expired session clears previously rendered private projection', + CRM.all('affiliates').length === 0 && CRM.revision === null); + +ok('data layer has no browser persistence', !dataSource.includes('localStorage')); +ok('data layer has no fallback seed', !/\bseed\s*\(/.test(dataSource) && !dataSource.includes('Example —')); +ok('app has no reset or destructive clear controls', + !appSource.includes('CRM.reset') && !appSource.includes('CRM.clearAll')); +ok('app refreshes after confirmed mutation', appSource.includes('await refreshProjection({ quiet: true })')); +ok('ambiguous retries retain the exact idempotency key', + appSource.includes('pendingMutations[signature]') && + appSource.includes('idempotencyKey: stableKey') && + appSource.includes('error.status < 500')); +ok('app forces refresh on conflict', /error\.status === 409[\s\S]*refreshProjection/.test(appSource)); +ok('app never exposes an editable gate action', !appSource.includes('toggleGate')); +ok('HTML exposes loading, retry, history, invitation and logout affordances', + ['crm-system-state', 'crm-retry', 'tool-program', 'tool-history', 'tool-invite', 'tool-logout'] + .every((id) => htmlSource.includes(`id="${id}"`))); +ok('old import/reset/clear controls are gone', + !['tool-import', 'tool-reset', 'tool-clear'].some((id) => htmlSource.includes(`id="${id}"`))); +ok('logout clears the Worker session with same-origin POST', + appSource.includes("global.fetch('/api/control-tower/logout'") && + appSource.includes("method: 'POST'") && + appSource.includes("'/cdn-cgi/access/logout'") && + appSource.includes("'/control-tower/access'")); +ok('enrollment preparation binds the complete economicsSnapshot object', + appSource.includes('payload.economicsSnapshot = economics.snapshot')); +ok('live enrollment preparation is fail-closed without program.economicsSchema', + appSource.includes('Live economics schema is unavailable')); +ok('economicsSnapshot uses every exact v2 key', [ + 'currency', 'model', 'terms', 'terms_reference', 'commission_rate', + 'commission_base', 'attribution_window_days', 'settlement_hold_days', + 'clawback_days', 'payout_cadence', 'payout_threshold', 'agreement_version', + 'retainer_amount', 'retainer_cadence', 'retainer_proration' +].every((key) => appSource.includes(`${key}:`))); +ok('obsolete free-text snapshot ids are not submitted', + !appSource.includes('economicsSnapshotId') && !appSource.includes('invite-agreement')); +ok('sandbox records receive a visible label', appSource.includes("pill('sandbox', 'is-warn')")); +ok('production onboarding separates prepare, agreement and invitation actions', + dataSource.includes("'enrollment:prepare'") && + dataSource.includes("'agreement:launch'") && + dataSource.includes("'agreement:manage'") && + dataSource.includes("'invitation:send'") && + !dataSource.includes("'invitation:create':")); +ok('agreement actions use the authoritative enrollment revision', + appSource.includes('var revision = Number(affiliate.revision)') && + appSource.includes('expectedRevision: revision') && + appSource.includes('recordActionAvailable(affiliate, publicAction)')); +ok('enrollment preparation uses the authoritative program revision', + appSource.includes('Number(CRM.state.program && CRM.state.program.revision)') && + appSource.includes("expectedRevision: expectedRevision")); +ok('Passport access waits for verified agreement evidence', + appSource.includes('Passport access stays locked until the Contract Engine webhook verifies') && + appSource.includes('Send Passport access')); +ok('program update emits the exact BFF contract fields', [ + 'programId', 'expectedRevision', 'legalEntityName', 'tradeName', + 'entityType', 'officialAddress', + 'authorizedSignerRef', 'authorizedSignerName', 'authorizedSignerTitle', + 'authorizedSignerEmail', 'agreementTemplateKey', 'agreementVersion', + 'affiliateBaseUrl', 'trackingBaseUrl', 'eligibleCountries', + 'eligibleRegions', 'minimumAge', 'economicsConfiguration' +].every((key) => appSource.includes(`${key}:`))); +ok('program activation fail-closes when requirements are omitted', + appSource.includes('Activation status unavailable') && + appSource.includes('!requirementsKnown || missing.length > 0') && + appSource.includes('missingActivationRequirements')); +ok('program address is structured and locked to US', [ + 'line1:', 'line2:', 'city:', 'region:', 'postalCode:', 'countryCode:' +].every((key) => appSource.includes(key)) && + appSource.includes("officialAddress.countryCode !== 'US'") && + appSource.includes("var eligibleCountries = ['US']")); +ok('program setup locks exact company-side signer facts', + appSource.includes("tradeName: tradeName") && + appSource.includes("entityType: entityType") && + appSource.includes("authorizedSignerName: authorizedSignerName") && + appSource.includes("authorizedSignerTitle: authorizedSignerTitle") && + appSource.includes("authorizedSignerEmail: authorizedSignerEmail") && + appSource.includes('must match the company-side signer')); +ok('program setup mirrors the server validation bounds', + appSource.includes('max="99"') && + appSource.includes('minimumAge > 99') && + appSource.includes('tradeName.length > 200') && + appSource.includes('entityType.length > 200') && + appSource.includes("tradeName.normalize('NFKC')") && + appSource.includes('/^[a-z0-9][a-z0-9-]{0,99}$/')); +ok('program economics policy cannot become creator defaults', + appSource.includes("mode: 'individualized'") && + appSource.includes('noDefaults: true') && + !appSource.includes("collectEconomicsSnapshot('program-economics-error')")); +ok('prospect and enrollment stages use separate controls', + appSource.includes('CRM.PROSPECT_STAGES') && + appSource.includes('data-lifecycle-stage="active"') && + appSource.includes('data-lifecycle-stage="churned"')); +ok('money records only offer authoritative bound production enrollments', + appSource.includes("r.economicsStatus === 'bound'") && + appSource.includes('!CRM.isTestAffiliate(r)')); + +console.log(failures === 0 ? '\nALL PASS' : `\n${failures} FAILURES`); +process.exit(failures ? 1 : 0); diff --git a/biologix-strategy-board/control-tower/crm.css b/biologix-strategy-board/control-tower/crm.css new file mode 100644 index 0000000..853d5de --- /dev/null +++ b/biologix-strategy-board/control-tower/crm.css @@ -0,0 +1,2056 @@ +/* Biologix Control Tower, operator CSS. + Loads AFTER ../board.css and inherits its tokens. Adds nothing to the palette. + Printed-ledger density: hairline rules, DM Mono numbers, no gradients, no shadows. */ + +/* ------------------------------------------------------------------ scope */ + +.crm-shell { + /* local layout constants, not new colours */ + --crm-topbar-h: 52px; + --crm-tabs-h: 40px; + --crm-row-h: 30px; + --crm-gutter: 20px; + --crm-mono: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace; + --crm-sans: 'Manrope', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', sans-serif; + + position: fixed; + inset: 0; + z-index: 1; + display: flex; + flex-direction: column; + min-height: 0; + overflow: hidden; + color: var(--ink); + background: var(--paper); + font-family: var(--crm-sans); + font-size: 14px; + line-height: 1.45; +} + +body:has(> .crm-shell), +body.crm-app, +body.crm-body { + overflow: hidden; + overscroll-behavior: none; +} + +/* board.css puts 96px of tail padding on main. Not here. */ +.crm-shell main, +.crm-shell .crm-main { + padding-bottom: 0; +} + +.crm-shell h1, +.crm-shell h2, +.crm-shell h3, +.crm-shell h4, +.crm-shell p { + margin: 0; +} + +.crm-shell a { + color: var(--accent); + text-underline-offset: 2px; +} + +.crm-shell ::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +.crm-shell ::-webkit-scrollbar-track { + background: transparent; +} + +.crm-shell ::-webkit-scrollbar-thumb { + background: var(--line); + border: 3px solid var(--paper); +} + +.crm-shell ::-webkit-scrollbar-thumb:hover { + background: var(--ink-3); +} + +/* Shared mono treatment. Every number, id, date and code. */ +.crm-num, +.crm-sub, +.crm-th, +.crm-tab, +.crm-tab-count, +.crm-brand-sub, +.crm-stage, +.crm-pill, +.crm-unset, +.crm-flag, +.crm-gate, +.crm-metric-value, +.crm-metric-label, +.crm-metric-note, +.crm-col-head, +.crm-col-count, +.crm-card-meta, +.crm-field-label, +.crm-filter-label, +.crm-fieldset-title, +.crm-panel-title, +.crm-empty, +.crm-btn, +.crm-toast, +.crm-banner-title, +.crm-drawer-title, +.crm-input, +.crm-select, +.crm-mono { + font-family: var(--crm-mono); + font-variant-numeric: tabular-nums; +} + +/* ----------------------------------------------------------------- topbar */ + +.crm-topbar { + position: sticky; + top: 0; + z-index: 40; + flex: 0 0 auto; + display: flex; + align-items: center; + gap: 16px; + min-height: var(--crm-topbar-h); + padding: 0 var(--crm-gutter); + background: var(--paper); + border-bottom: 1px solid var(--line-strong); +} + +.crm-brand { + display: flex; + align-items: baseline; + gap: 10px; + min-width: 0; + font-size: 15px; + font-weight: 800; + letter-spacing: -0.01em; + white-space: nowrap; +} + +.crm-brand-sub { + color: var(--ink-3); + font-size: 10px; + font-weight: 500; + letter-spacing: 0.11em; + text-transform: uppercase; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.crm-tools { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + gap: 6px; + margin-left: auto; + min-width: 0; +} + +.crm-sync { + max-width: 210px; + overflow: hidden; + color: var(--ink-3); + font-family: var(--crm-mono); + font-size: 9.5px; + letter-spacing: 0.04em; + text-overflow: ellipsis; + white-space: nowrap; +} + +.crm-system-state { + flex: 0 0 auto; + margin: 10px var(--crm-gutter) 0; +} + +.crm-system-state[hidden] { + display: none; +} + +.crm-system-state .crm-btn { + justify-self: start; + margin-top: 4px; +} + +.crm-is-saving { + cursor: progress; +} + +/* ------------------------------------------------------------------- tabs */ + +.crm-tabs { + position: sticky; + top: var(--crm-topbar-h); + z-index: 38; + flex: 0 0 auto; + display: flex; + align-items: stretch; + gap: 0; + min-height: var(--crm-tabs-h); + padding: 0 var(--crm-gutter); + overflow-x: auto; + overflow-y: hidden; + background: var(--paper); + border-bottom: 1px solid var(--line); + scrollbar-width: none; +} + +.crm-tabs::-webkit-scrollbar { + display: none; +} + +.crm-tab { + display: inline-flex; + align-items: center; + gap: 7px; + flex: 0 0 auto; + padding: 0 14px; + color: var(--ink-3); + background: transparent; + border: 0; + border-bottom: 2px solid transparent; + font-size: 10.5px; + font-weight: 500; + letter-spacing: 0.1em; + line-height: 1; + text-transform: uppercase; + white-space: nowrap; + cursor: pointer; + transition: color 120ms ease, border-color 120ms ease; +} + +.crm-tab:first-child { + padding-left: 0; +} + +.crm-tab:hover { + color: var(--ink); +} + +.crm-tab.is-active { + color: var(--ink); + border-bottom-color: var(--accent); +} + +.crm-tab-count { + padding: 2px 5px; + color: var(--ink-3); + border: 1px solid var(--line); + font-size: 9.5px; + line-height: 1; +} + +.crm-tab.is-active .crm-tab-count { + color: var(--accent); + border-color: var(--accent); +} + +/* ------------------------------------------------------------------ views */ + +.crm-view { + display: none; +} + +.crm-view.is-active { + display: block; +} + +/* The active view is the only scroller. The page itself never moves. */ +.crm-shell > .crm-view.is-active, +.crm-shell > main, +.crm-shell > .crm-main { + flex: 1 1 auto; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; +} + +.crm-shell > main > .crm-view.is-active, +.crm-shell > .crm-main > .crm-view.is-active { + min-height: 0; +} + +.crm-view.is-active { + padding: 0 var(--crm-gutter) 64px; +} + +.crm-view > * + * { + margin-top: 16px; +} + +.crm-view h2 { + font-size: 15px; + font-weight: 800; + letter-spacing: -0.01em; +} + +.crm-view h3 { + font-size: 13px; + font-weight: 700; +} + +.crm-view p { + max-width: 78ch; + color: var(--ink-2); + font-size: 13px; +} + +/* ---------------------------------------------------------------- banners */ + +.crm-banner { + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 4px; + padding: 11px 14px; + border: 1px solid var(--line); + border-left: 2px solid var(--ink-3); + background: var(--paper-raised); +} + +.crm-banner-title { + color: var(--ink); + font-size: 10px; + font-weight: 500; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.crm-banner-body { + max-width: 92ch; + color: var(--ink-2); + font-size: 13px; + line-height: 1.5; +} + +.crm-banner.is-warn { + border-left-color: var(--proof); +} + +.crm-banner.is-warn .crm-banner-title { + color: var(--proof); +} + +.crm-banner.is-info { + border-left-color: var(--inference); +} + +.crm-banner.is-info .crm-banner-title { + color: var(--inference); +} + +.crm-key-values { + display: grid; + gap: 0; + border-top: 1px solid var(--line); +} + +.crm-form-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0 12px; +} + +.crm-form-grid.is-three { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.crm-form-grid.is-disabled { + opacity: 0.55; +} + +.crm-key-value { + display: grid; + grid-template-columns: minmax(120px, 0.7fr) minmax(0, 1.3fr); + gap: 12px; + align-items: baseline; + padding: 8px 0; + border-bottom: 1px solid var(--line); +} + +.crm-history-list { + display: grid; +} + +.crm-history-item { + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 14px; + align-items: start; + padding: 9px 0; + border-bottom: 1px solid var(--line); +} + +.crm-history-item:last-child { + border-bottom: 0; +} + +.crm-history-item time { + white-space: nowrap; +} + +.crm-plain-list { + margin: 4px 0 0; + padding-left: 18px; +} + +.crm-plain-list li + li { + margin-top: 3px; +} + +/* ---------------------------------------------------------------- toolbar */ + +.crm-toolbar { + position: sticky; + top: 0; + z-index: 20; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; + padding: 10px 0; + background: var(--paper); + border-bottom: 1px solid var(--line); +} + +.crm-spacer { + flex: 1 1 auto; + min-width: 0; +} + +.crm-search { + flex: 0 1 260px; + min-width: 140px; + height: 30px; + padding: 0 9px; + color: var(--ink); + background: var(--paper-raised); + border: 1px solid var(--line); + border-radius: 0; + font-family: var(--crm-mono); + font-size: 12px; + -webkit-appearance: none; + appearance: none; +} + +.crm-search::placeholder { + color: var(--ink-3); + letter-spacing: 0.04em; +} + +.crm-search:focus-visible, +.crm-filter:focus-visible, +.crm-input:focus-visible, +.crm-select:focus-visible, +.crm-textarea:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 1px; + border-color: var(--accent); +} + +.crm-filter-label { + display: inline-flex; + align-items: center; + gap: 6px; + color: var(--ink-3); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.1em; + text-transform: uppercase; + white-space: nowrap; +} + +/* .crm-filter works two ways: as the control itself, or as a small group + that holds a label and a control. Both are supported. */ +.crm-filter { + display: inline-flex; + align-items: center; + gap: 6px; + min-width: 0; +} + +select.crm-filter, +input.crm-filter { + display: inline-block; + height: 30px; + max-width: 190px; + padding: 0 8px; + color: var(--ink); + background: var(--paper-raised); + border: 1px solid var(--line); + border-radius: 0; + font-family: var(--crm-mono); + font-size: 11.5px; + line-height: 1; + cursor: pointer; + background-image: none; +} + +.crm-filter > .crm-select, +.crm-filter > .crm-search, +.crm-filter > .crm-input { + min-width: 0; +} + +/* Inside a label the wrapper draws the caret, so strip the native one. + A bare .crm-filter keeps the native arrow rather than losing its affordance. */ +.crm-filter-label > select.crm-filter, +.crm-filter-label > .crm-select { + margin-left: 2px; + padding-right: 22px; + -webkit-appearance: none; + appearance: none; +} + +/* text caret, drawn on a label that wraps its own select */ +.crm-filter-label:has(> select) { + position: relative; +} + +.crm-filter-label:has(> select)::after { + content: 'v'; + position: absolute; + right: 8px; + color: var(--ink-3); + font-family: var(--crm-mono); + font-size: 9px; + pointer-events: none; +} + +/* ---------------------------------------------------------------- buttons */ + +.crm-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + min-height: 30px; + padding: 0 11px; + color: var(--ink-2); + background: var(--paper-raised); + border: 1px solid var(--line); + border-radius: 0; + font-size: 10px; + font-weight: 500; + letter-spacing: 0.09em; + line-height: 1; + text-transform: uppercase; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + transition: color 120ms ease, border-color 120ms ease, background-color 120ms ease; +} + +.crm-btn:hover { + color: var(--ink); + border-color: var(--ink-3); +} + +.crm-btn:active { + background: var(--paper); +} + +.crm-btn[disabled], +.crm-btn[aria-disabled='true'] { + color: var(--ink-3); + border-color: var(--line); + opacity: 0.55; + cursor: not-allowed; +} + +.crm-btn.is-primary { + color: var(--accent-ink); + background: var(--accent); + border-color: var(--accent); +} + +.crm-btn.is-primary:hover { + color: var(--accent-ink); + background: var(--ink); + border-color: var(--ink); +} + +.crm-btn.is-quiet { + color: var(--ink-3); + background: transparent; + border-color: transparent; + padding: 0 6px; +} + +.crm-btn.is-quiet:hover { + color: var(--ink); + border-color: var(--line); +} + +.crm-btn.is-danger { + color: var(--proof); + border-color: color-mix(in srgb, var(--proof) 45%, var(--line)); +} + +.crm-btn.is-danger:hover { + color: var(--paper); + background: var(--proof); + border-color: var(--proof); +} + +.crm-btn-row { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; +} + +/* ----------------------------------------------------------------- tables */ + +.crm-table-wrap { + position: relative; + width: 100%; + max-width: 100%; + /* the wrap is the scroll box, which is what makes the header row stick. + height stays auto for short tables, the cap only bites on long ones. */ + max-height: calc(100dvh - 200px); + overflow-x: auto; + overflow-y: auto; + border-bottom: 1px solid var(--line); + -webkit-overflow-scrolling: touch; + overscroll-behavior: contain; +} + +/* No blanket min-width. Cells are nowrap, so the table grows to its + content and the wrap scrolls only when the columns genuinely need it. */ +.crm-table { + width: 100%; + border-collapse: separate; + border-spacing: 0; + font-size: 13px; +} + +.crm-table thead th, +.crm-table .crm-th { + position: sticky; + top: 0; + z-index: 3; + padding: 7px 10px; + color: var(--ink-3); + background: var(--paper); + border-bottom: 1px solid var(--line-strong); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.09em; + line-height: 1.3; + text-align: left; + text-transform: uppercase; + white-space: nowrap; + vertical-align: bottom; +} + +.crm-th.is-sortable { + cursor: pointer; + -webkit-user-select: none; + user-select: none; +} + +.crm-th.is-sortable:hover { + color: var(--ink); +} + +.crm-th.is-sortable::after { + content: '\2195'; + display: inline-block; + margin-left: 5px; + color: var(--ink-3); + font-size: 9px; + opacity: 0; + transition: opacity 100ms ease; +} + +.crm-th.is-sortable:hover::after, +.crm-th.is-sortable:focus-visible::after { + opacity: 0.5; +} + +.crm-th.is-sorted-asc, +.crm-th.is-sorted-desc { + color: var(--ink); +} + +.crm-th.is-sorted-asc::after { + content: '\25B2'; + color: var(--accent); + font-size: 8px; + opacity: 1; +} + +.crm-th.is-sorted-desc::after { + content: '\25BC'; + color: var(--accent); + font-size: 8px; + opacity: 1; +} + +/* No fixed cell height. A table cell clips overflow, so a two line cell + would lose its second line. Density comes from padding and line height. */ +.crm-table tbody td, +.crm-table tbody th { + padding: 5px 10px; + color: var(--ink-2); + border-bottom: 1px solid var(--line); + font-size: 13px; + line-height: 1.35; + text-align: left; + vertical-align: middle; + white-space: nowrap; +} + +.crm-table tbody td.crm-wrap, +.crm-table tbody td[data-wrap] { + white-space: normal; + min-width: 180px; +} + +/* zebra is deliberately off. The rules carry the eye. */ +.crm-row { + background: transparent; + transition: background-color 90ms ease; +} + +.crm-row:hover { + background: var(--paper-raised); +} + +.crm-row.is-selected { + background: color-mix(in srgb, var(--accent) 7%, transparent); +} + +.crm-row.is-selected > td:first-child, +.crm-row.is-selected > th:first-child { + box-shadow: inset 2px 0 0 var(--accent); +} + +.crm-row[tabindex], +.crm-row[role='button'], +.crm-table tbody tr[data-id] { + cursor: pointer; +} + +.crm-row:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -2px; +} + +.crm-num { + font-size: 13px; + text-align: right; + white-space: nowrap; +} + +.crm-table td.crm-num, +.crm-table th.crm-num { + text-align: right; +} + +/* works either on the cell itself or on a span inside it */ +.crm-cell-name { + color: var(--ink); + font-family: var(--crm-sans); + font-size: 13.5px; + font-weight: 600; + line-height: 1.25; + max-width: 34ch; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +span.crm-cell-name, +div.crm-cell-name, +a.crm-cell-name { + display: block; +} + +.crm-sub { + display: block; + margin-top: 1px; + color: var(--ink-3); + font-size: 10px; + letter-spacing: 0.03em; + line-height: 1.35; +} + +/* only truncate where the row height is fixed */ +.crm-table .crm-sub, +.crm-card .crm-sub { + max-width: 34ch; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.crm-empty { + padding: 40px 20px; + color: var(--ink-3); + border: 1px dashed var(--line); + font-size: 10.5px; + font-weight: 500; + letter-spacing: 0.09em; + text-align: center; + text-transform: uppercase; +} + +.crm-table .crm-empty, +.crm-table td.crm-empty { + border: 0; + border-bottom: 1px solid var(--line); + white-space: normal; +} + +/* ------------------------------------------------------------------ chips */ + +.crm-stage { + --stage-color: var(--ink-3); + display: inline-flex; + align-items: center; + gap: 5px; + max-width: 100%; + padding: 1px 6px; + color: var(--stage-color); + background: transparent; + border: 1px solid var(--stage-color); + border-radius: 0; + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.07em; + line-height: 1.5; + text-transform: uppercase; + white-space: nowrap; +} + +.crm-stage[data-group='recruit'] { + --stage-color: var(--ink-3); +} + +.crm-stage[data-group='close'] { + --stage-color: var(--inference); +} + +.crm-stage[data-group='activate'] { + --stage-color: var(--unverified); +} + +.crm-stage[data-group='live'] { + --stage-color: var(--verified); +} + +.crm-stage[data-group='dead'] { + --stage-color: var(--hold); + border-style: dashed; +} + +button.crm-stage, +.crm-stage[role='button'] { + cursor: pointer; +} + +.crm-pill { + --pill-color: var(--ink-3); + display: inline-flex; + align-items: center; + gap: 5px; + padding: 1px 6px; + color: var(--pill-color); + background: color-mix(in srgb, var(--pill-color) 7%, transparent); + border: 1px solid color-mix(in srgb, var(--pill-color) 40%, transparent); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.06em; + line-height: 1.5; + text-transform: uppercase; + white-space: nowrap; +} + +.crm-pill.is-ok { + --pill-color: var(--verified); +} + +.crm-pill.is-warn { + --pill-color: var(--unverified); +} + +.crm-pill.is-bad { + --pill-color: var(--proof); +} + +.crm-pill.is-quiet { + --pill-color: var(--hold); + background: transparent; +} + +/* Not zero. Unknown. It should catch the eye every time. */ +.crm-unset { + display: inline-flex; + align-items: center; + padding: 1px 6px; + color: var(--proof); + background: color-mix(in srgb, var(--proof) 6%, transparent); + border: 1px dashed color-mix(in srgb, var(--proof) 55%, transparent); + font-family: var(--crm-mono); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.08em; + line-height: 1.5; + text-transform: uppercase; + white-space: nowrap; +} + +.crm-num > .crm-unset, +td.crm-num .crm-unset { + float: none; +} + +.crm-flag { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 0 5px; + color: var(--proof); + border: 1px solid color-mix(in srgb, var(--proof) 40%, transparent); + font-size: 9px; + font-weight: 500; + letter-spacing: 0.06em; + line-height: 1.6; + text-transform: uppercase; + white-space: nowrap; +} + +.crm-flag + .crm-flag { + margin-left: 4px; +} + +/* ------------------------------------------------------------------ gates */ + +.crm-gatebar { + display: inline-flex; + flex: 0 0 auto; + align-items: stretch; + gap: 2px; + width: 96px; + height: 6px; + vertical-align: middle; +} + +.crm-gatebar > * { + flex: 1 1 0; + min-width: 3px; + background: var(--line); +} + +.crm-gatebar-fill { + background: var(--verified); +} + +.crm-gatebar > .is-next, +.crm-gatebar-fill.is-next { + background: var(--unverified); +} + +.crm-gatebar > .is-todo, +.crm-gatebar-fill.is-todo { + background: var(--line); +} + +/* Fallback: one proportional fill with an inline width instead of nine + segments. The track carries the unfilled colour and the gap closes up. */ +.crm-gatebar:has(> [style*='width']) { + gap: 0; + background: var(--line); +} + +.crm-gatebar-fill[style*='width'] { + flex: 0 0 auto; + min-width: 0; +} + +.crm-gatebar + .crm-sub, +.crm-gatebar + .crm-num { + margin-left: 6px; + vertical-align: middle; +} + +.crm-table .crm-gatebar { + width: 88px; +} + +.crm-gatebar-row { + display: flex; + align-items: center; + gap: 8px; + min-width: 0; +} + +.crm-gatebar-row .crm-sub { + margin: 0; +} + +.crm-gates { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 0; + border-top: 1px solid var(--line); + border-left: 1px solid var(--line); +} + +.crm-gate { + display: grid; + grid-template-columns: 16px minmax(0, 1fr); + gap: 8px; + align-items: start; + min-height: 54px; + padding: 9px 10px; + color: var(--ink-3); + background: transparent; + border: 0; + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + font-family: var(--crm-mono); + font-size: 10.5px; + font-weight: 500; + letter-spacing: 0.03em; + line-height: 1.35; + text-align: left; + cursor: default; +} + +.crm-gate::before { + content: ''; + width: 11px; + height: 11px; + margin-top: 2px; + border: 1px solid currentColor; +} + +.crm-gate.is-done { + color: var(--verified); +} + +.crm-gate.is-done::before { + background: currentColor; + box-shadow: inset 0 0 0 2px var(--paper); +} + +.crm-gate.is-next { + color: var(--unverified); +} + +.crm-gate.is-next::before { + border-width: 2px; +} + +.crm-gate.is-blocked { + color: var(--ink-3); +} + +.crm-gate.is-blocked::before { + border-style: dashed; +} + +.crm-gate small, +.crm-gate .crm-sub { + display: block; + margin-top: 3px; + color: var(--ink-3); + font-size: 9.5px; + letter-spacing: 0.02em; + white-space: normal; + max-width: none; + overflow: visible; +} + +.crm-gate-readonly { + display: grid; + gap: 6px; + padding: 8px 0; +} + +.crm-gate-readonly .crm-check { + align-items: start; +} + +/* ---------------------------------------------------------------- metrics */ + +.crm-metrics { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0; + border-top: 1px solid var(--line-strong); + border-left: 1px solid var(--line); + /* closes the shape when the last row is short */ + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.crm-metric { + display: flex; + flex-direction: column; + gap: 3px; + min-width: 0; + padding: 12px 14px 14px; + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); + background: var(--paper-raised); +} + +.crm-metric-label { + color: var(--ink-3); + font-size: 9px; + font-weight: 500; + letter-spacing: 0.11em; + line-height: 1.3; + text-transform: uppercase; +} + +.crm-metric-value { + color: var(--ink); + font-size: 26px; + font-weight: 500; + letter-spacing: -0.02em; + line-height: 1.05; + overflow-wrap: anywhere; +} + +.crm-metric-value .crm-unset { + font-size: 11px; + vertical-align: 0.35em; +} + +.crm-metric-note { + color: var(--ink-3); + font-size: 9.5px; + letter-spacing: 0.03em; + line-height: 1.4; +} + +.crm-metric-note.is-unknown { + color: var(--proof); + text-transform: uppercase; + letter-spacing: 0.07em; +} + +/* ------------------------------------------------------------------ trend */ + +.crm-spark { + display: flex; + align-items: flex-end; + gap: 2px; + height: 64px; + padding-top: 4px; + border-bottom: 1px solid var(--line-strong); +} + +.crm-spark-bar { + flex: 1 1 0; + min-width: 2px; + min-height: 1px; + background: var(--accent); +} + +.crm-spark-bar.is-empty, +.crm-spark-bar[data-value='0'] { + background: var(--line); +} + +.crm-spark-bar:hover { + background: var(--ink); +} + +/* ------------------------------------------------------------------ board */ + +.crm-board { + display: flex; + align-items: stretch; + gap: 0; + width: 100%; + max-width: 100%; + padding-bottom: 8px; + overflow-x: auto; + overflow-y: hidden; + border-top: 1px solid var(--line-strong); + border-left: 1px solid var(--line); + -webkit-overflow-scrolling: touch; + overscroll-behavior-x: contain; +} + +.crm-col { + flex: 0 0 216px; + width: 216px; + min-width: 216px; + display: flex; + flex-direction: column; + border-right: 1px solid var(--line); + background: transparent; +} + +.crm-col-head { + position: sticky; + top: 0; + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 8px 10px; + color: var(--ink-2); + background: var(--paper); + border-bottom: 1px solid var(--line-strong); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.crm-col-count { + color: var(--ink-3); + font-size: 9.5px; +} + +.crm-col-body, +.crm-col > .crm-cards { + display: flex; + flex-direction: column; + min-height: 60px; +} + +.crm-card { + display: block; + width: 100%; + padding: 9px 10px; + color: inherit; + background: transparent; + border: 0; + border-bottom: 1px solid var(--line); + font: inherit; + text-align: left; + cursor: pointer; + transition: background-color 90ms ease; +} + +.crm-card:hover { + background: var(--paper-raised); +} + +.crm-card.is-selected { + background: color-mix(in srgb, var(--accent) 7%, transparent); + box-shadow: inset 2px 0 0 var(--accent); +} + +.crm-card-name { + display: block; + color: var(--ink); + font-size: 12.5px; + font-weight: 600; + line-height: 1.3; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.crm-card-meta { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 5px; + margin-top: 4px; + color: var(--ink-3); + font-size: 9.5px; + letter-spacing: 0.03em; + line-height: 1.4; +} + +.crm-card-meta .crm-unset, +.crm-card-meta .crm-pill, +.crm-card-meta .crm-flag { + font-size: 8.5px; +} + +/* ----------------------------------------------------------------- drawer */ + +.crm-drawer { + position: fixed; + inset: 0; + z-index: 120; + visibility: hidden; + pointer-events: none; + /* hold visibility until the slide-out finishes */ + transition: visibility 0s linear 200ms; +} + +.crm-drawer.is-open { + visibility: visible; + pointer-events: auto; + transition: visibility 0s linear 0s; +} + +.crm-drawer-scrim { + position: absolute; + inset: 0; + background: rgba(20, 19, 18, 0.32); + border: 0; + opacity: 0; + cursor: pointer; + transition: opacity 180ms ease; +} + +.crm-drawer.is-open .crm-drawer-scrim { + opacity: 1; +} + +.crm-drawer-panel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + width: min(460px, 100%); + background: var(--paper); + border-left: 1px solid var(--line-strong); + transform: translateX(100%); + transition: transform 200ms ease; +} + +.crm-drawer.is-open .crm-drawer-panel { + transform: translateX(0); +} + +.crm-drawer-head { + flex: 0 0 auto; + display: flex; + align-items: center; + gap: 12px; + min-height: 48px; + padding: 10px 16px; + background: var(--paper); + border-bottom: 1px solid var(--line-strong); +} + +.crm-drawer-title { + flex: 1 1 auto; + min-width: 0; + color: var(--ink); + font-size: 11px; + font-weight: 500; + letter-spacing: 0.09em; + line-height: 1.3; + text-transform: uppercase; + overflow: hidden; + text-overflow: ellipsis; +} + +/* sized for a glyph or the word Close */ +.crm-drawer-close { + flex: 0 0 auto; + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 28px; + height: 28px; + padding: 0 8px; + color: var(--ink-2); + background: transparent; + border: 1px solid var(--line); + font-family: var(--crm-mono); + font-size: 10px; + font-weight: 500; + letter-spacing: 0.09em; + line-height: 1; + text-transform: uppercase; + cursor: pointer; +} + +.crm-drawer-close:hover { + color: var(--ink); + border-color: var(--ink-3); +} + +.crm-drawer-body { + flex: 1 1 auto; + min-height: 0; + padding: 4px 16px 24px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.crm-drawer-foot { + flex: 0 0 auto; + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px; + padding: 10px 16px; + background: var(--paper-raised); + border-top: 1px solid var(--line-strong); +} + +.crm-drawer-foot .crm-spacer { + flex: 1 1 auto; +} + +.crm-fieldset { + padding: 0; + margin: 16px 0 0; + border: 0; + border-top: 1px solid var(--line); +} + +.crm-fieldset-title { + display: block; + width: 100%; + padding: 10px 0 8px; + color: var(--ink-3); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.11em; + text-transform: uppercase; +} + +.crm-field { + display: grid; + gap: 4px; + margin-bottom: 12px; + min-width: 0; +} + +.crm-field-label { + color: var(--ink-2); + font-size: 9.5px; + font-weight: 500; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.crm-field-hint { + color: var(--ink-3); + font-size: 11px; + line-height: 1.4; +} + +.crm-field-hint.is-warn { + color: var(--proof); +} + +.crm-input, +.crm-select, +.crm-textarea { + width: 100%; + min-width: 0; + padding: 6px 8px; + color: var(--ink); + background: var(--paper-raised); + border: 1px solid var(--line); + border-radius: 0; + font-size: 13px; + line-height: 1.4; + -webkit-appearance: none; + appearance: none; +} + +.crm-input, +.crm-select { + height: 32px; + font-family: var(--crm-mono); + font-size: 12.5px; +} + +.crm-select { + padding-right: 22px; + cursor: pointer; +} + +.crm-textarea { + min-height: 84px; + font-family: var(--crm-sans); + resize: vertical; +} + +.crm-input::placeholder, +.crm-textarea::placeholder { + color: var(--ink-3); +} + +.crm-input:invalid, +.crm-input[aria-invalid='true'], +.crm-select[aria-invalid='true'] { + border-color: var(--proof); +} + +.crm-check { + display: flex; + align-items: flex-start; + gap: 8px; + padding: 5px 0; + color: var(--ink-2); + font-size: 12.5px; + line-height: 1.35; + cursor: pointer; +} + +.crm-check input[type='checkbox'], +input[type='checkbox'].crm-check { + flex: 0 0 auto; + width: 14px; + height: 14px; + margin: 1px 0 0; + accent-color: var(--accent); + cursor: pointer; +} + +/* ------------------------------------------------------------------ money */ + +.crm-money-split { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 24px; + align-items: start; +} + +.crm-ledger { + min-width: 0; +} + +.crm-ledger > .crm-table-wrap { + max-height: calc(100dvh - 260px); +} + +.crm-ledger .crm-table { + min-width: 0; +} + +.crm-ledger-head, +.crm-ledger > h3 { + display: flex; + align-items: baseline; + justify-content: space-between; + gap: 12px; + padding-bottom: 8px; + color: var(--ink-2); + border-bottom: 1px solid var(--line-strong); + font-family: var(--crm-mono); + font-size: 10px; + font-weight: 500; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +/* ------------------------------------------------------------------ split */ + +.crm-two-col { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); + gap: 24px; + align-items: start; +} + +.crm-panel { + min-width: 0; + border-top: 1px solid var(--line-strong); +} + +.crm-panel-head { + display: flex; + flex-wrap: wrap; + align-items: baseline; + justify-content: space-between; + gap: 10px; + padding: 9px 0; + border-bottom: 1px solid var(--line); +} + +.crm-panel-title { + color: var(--ink); + font-size: 10px; + font-weight: 500; + letter-spacing: 0.11em; + text-transform: uppercase; +} + +.crm-panel-head .crm-btn.is-quiet { + margin: -4px 0; +} + +.crm-panel > .crm-table-wrap { + border-bottom: 0; +} + +.crm-panel ul, +.crm-panel ol { + padding: 0; + margin: 0; + list-style: none; +} + +.crm-panel li { + display: flex; + flex-wrap: wrap; + align-items: baseline; + justify-content: space-between; + gap: 8px; + padding: 7px 0; + border-bottom: 1px solid var(--line); + font-size: 12.5px; +} + +.crm-panel li > span:last-child { + color: var(--ink-3); + font-family: var(--crm-mono); + font-size: 10.5px; + letter-spacing: 0.03em; + text-align: right; +} + +/* ------------------------------------------------------------------ toast */ + +.crm-toast { + position: fixed; + left: 50%; + bottom: 24px; + z-index: 300; + max-width: min(520px, calc(100vw - 32px)); + padding: 9px 14px; + color: var(--accent-ink); + background: var(--ink); + border: 1px solid var(--ink); + font-size: 11px; + letter-spacing: 0.05em; + line-height: 1.4; + text-align: center; + opacity: 0; + transform: translate(-50%, 8px); + pointer-events: none; + transition: opacity 160ms ease, transform 160ms ease; +} + +.crm-toast.is-show { + opacity: 1; + transform: translate(-50%, 0); +} + +/* -------------------------------------------------------------- utilities */ + +.crm-shell hr { + height: 0; + margin: 16px 0; + border: 0; + border-top: 1px solid var(--line); +} + +.crm-shell .crm-stage + .crm-stage, +.crm-shell .crm-pill + .crm-pill { + margin-left: 4px; +} + +/* --------------------------------------------------------------- 1180px */ + +@media (max-width: 1180px) { + .crm-shell { + --crm-gutter: 16px; + } + + .crm-metrics { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .crm-col { + flex-basis: 200px; + width: 200px; + min-width: 200px; + } +} + +/* ---------------------------------------------------------------- 900px */ + +@media (max-width: 900px) { + .crm-metrics { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .crm-money-split, + .crm-two-col { + grid-template-columns: minmax(0, 1fr); + gap: 20px; + } + + .crm-gates { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .crm-drawer-panel { + width: min(420px, 100%); + } +} + +/* ---------------------------------------------------------------- 720px */ + +@media (max-width: 720px) { + .crm-shell { + --crm-gutter: 12px; + font-size: 13.5px; + } + + .crm-topbar { + flex-wrap: wrap; + gap: 8px 10px; + padding-top: 7px; + padding-bottom: 7px; + } + + .crm-brand-sub { + display: none; + } + + .crm-tools .crm-btn { + padding: 0 8px; + font-size: 9.5px; + } + + .crm-sync { + flex: 1 1 100%; + max-width: none; + text-align: right; + } + + .crm-gates { + grid-template-columns: minmax(0, 1fr); + } + + .crm-form-grid, + .crm-form-grid.is-three { + grid-template-columns: minmax(0, 1fr); + gap: 0; + } + + .crm-toolbar { + padding: 8px 0; + } + + .crm-search { + flex: 1 1 100%; + } + + /* full-screen sheet */ + .crm-drawer-panel { + width: 100%; + border-left: 0; + } + + .crm-drawer-head, + .crm-drawer-foot { + padding-left: 12px; + padding-right: 12px; + } + + .crm-drawer-body { + padding-left: 12px; + padding-right: 12px; + } + + .crm-spark { + height: 52px; + } +} + +/* ---------------------------------------------------------------- 480px */ + +@media (max-width: 480px) { + /* Six tabs do not fit on one phone-width line, and a scrolling tab strip + hides Outbound and Money with no hint that they exist. Wrap to two rows. */ + .crm-tabs { + flex-wrap: wrap; + overflow-x: visible; + } + + .crm-tab { + flex: 1 1 32%; + justify-content: center; + padding: 8px 6px; + } + + .crm-metrics { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .crm-metric { + padding: 10px 11px 12px; + } + + .crm-metric-value { + font-size: 22px; + } + + .crm-tools { + gap: 4px; + } + + .crm-col { + flex-basis: 180px; + width: 180px; + min-width: 180px; + } + + .crm-toast { + left: 12px; + right: 12px; + bottom: 12px; + max-width: none; + transform: translate(0, 8px); + } + + .crm-toast.is-show { + transform: translate(0, 0); + } +} + +/* ---------------------------------------------------------------- 390px */ + +@media (max-width: 390px) { + .crm-shell { + --crm-gutter: 10px; + --crm-topbar-h: 48px; + } + + .crm-brand { + font-size: 13px; + } + + .crm-tabs { + padding-left: var(--crm-gutter); + padding-right: var(--crm-gutter); + } + + .crm-tab { + padding: 8px 4px; + font-size: 9.5px; + letter-spacing: 0.07em; + } + + .crm-metrics { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .crm-metric-value { + font-size: 20px; + } + + .crm-btn { + padding: 0 8px; + font-size: 9px; + letter-spacing: 0.06em; + } + + .crm-filter { + max-width: 150px; + } + + .crm-view h2 { + font-size: 14px; + } + + .crm-banner { + padding: 9px 10px; + } + + .crm-banner-body { + font-size: 12.5px; + } + + .crm-key-value, + .crm-history-item { + grid-template-columns: minmax(0, 1fr); + gap: 3px; + } +} + +/* --------------------------------------------------------- reduced motion */ + +@media (prefers-reduced-motion: reduce) { + .crm-shell *, + .crm-drawer, + .crm-drawer *, + .crm-toast { + transition: none !important; + animation: none !important; + } + + .crm-drawer-panel { + transform: none; + } + + .crm-drawer:not(.is-open) .crm-drawer-panel { + transform: translateX(100%); + } + + .crm-toast { + transform: translate(-50%, 0); + } +} + +@media (prefers-reduced-motion: reduce) and (max-width: 480px) { + .crm-toast { + transform: none; + } +} + +/* ------------------------------------------------------------- contrast */ + +@media (prefers-contrast: more) { + .crm-shell { + --ink-2: #2a2724; + --ink-3: #45413b; + --line: #a8a29a; + } + + .crm-table thead th, + .crm-table .crm-th { + border-bottom-width: 2px; + } + + .crm-stage, + .crm-pill, + .crm-flag, + .crm-unset { + border-width: 1px; + font-weight: 500; + } + + .crm-pill { + border-color: currentColor; + } + + .crm-btn { + border-color: var(--ink-2); + } + + .crm-row:hover { + background: color-mix(in srgb, var(--ink) 8%, transparent); + } + + .crm-drawer-scrim { + background: rgba(20, 19, 18, 0.55); + } + + .crm-th.is-sortable::after { + opacity: 0.6; + } +} + +/* ------------------------------------------------------------------ print */ + +@media print { + body:has(> .crm-shell), + body.crm-app { + overflow: visible; + } + + .crm-shell { + position: static; + display: block; + height: auto; + overflow: visible; + background: #ffffff; + font-size: 10pt; + } + + .crm-topbar, + .crm-tabs, + .crm-toolbar, + .crm-tools, + .crm-drawer, + .crm-toast, + .crm-btn, + .crm-btn-row, + .crm-board, + .crm-spark, + .crm-empty { + display: none !important; + } + + .crm-view { + display: none !important; + } + + .crm-view.is-active { + display: block !important; + padding: 0; + overflow: visible !important; + } + + .crm-shell > .crm-view.is-active, + .crm-shell > main, + .crm-shell > .crm-main { + overflow: visible !important; + } + + .crm-table-wrap { + max-height: none !important; + overflow: visible !important; + border: 0; + } + + .crm-table { + min-width: 0; + width: 100%; + font-size: 9pt; + } + + .crm-table thead th, + .crm-table .crm-th { + position: static; + color: #000000; + background: transparent; + border-bottom: 1px solid #000000; + } + + .crm-table tbody td, + .crm-table tbody th { + color: #000000; + border-bottom: 1px solid #aaaaaa; + white-space: normal; + } + + .crm-row, + .crm-metric, + .crm-panel li { + break-inside: avoid; + } + + .crm-row.is-selected, + .crm-row:hover { + background: transparent; + } + + .crm-metrics { + grid-template-columns: repeat(4, minmax(0, 1fr)); + border-top: 1px solid #000000; + } + + .crm-metric { + background: transparent; + } + + .crm-unset { + color: #000000; + background: transparent; + border-color: #000000; + } + + .crm-stage, + .crm-pill, + .crm-flag { + color: #000000; + background: transparent; + border-color: #000000; + } +} diff --git a/biologix-strategy-board/control-tower/index.html b/biologix-strategy-board/control-tower/index.html new file mode 100644 index 0000000..3a653f6 --- /dev/null +++ b/biologix-strategy-board/control-tower/index.html @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + Biologix Control Tower — Affiliate CRM + + + +
+ +
+
+ Biologix / Control Tower + Affiliate CRM — internal +
+
+ Connecting… + + + + + + +
+
+ +
+
Loading the live control tower
+
Connecting to the authoritative program record…
+ +
+ + + + + +
+ + +
+ +
+
Live program status
+
Waiting for the authoritative program record.
+
+ +
+ +
+
+

Net sales, last 30 days

+ +
+
+
+ +
+
+
+

Needs attention

+ Next actions past due. Click a row to open the record. +
+
+ + + + + + + + + + + +
RecordOwnerActionDueDays late
+
+
+ +
+
+

Defects

+ Unowned, unscheduled or live without gates. Click to fix. +
+
+ + + + + + + + + +
RecordTypeProblem
+
+
+
+ +
+
+
+

Program

+ Current server-owned configuration. +
+
+
+
+
+

Recent history

+ +
+
+
+
+ +
+
+
+

Pipeline

+ Every affiliate by stage. +
+
+
+ +
+
+

Gate bottleneck

+ Where onboarding is stuck. +
+
+
+
+
+ + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ + + + + diff --git a/biologix-strategy-board/datum-peptides/404.html b/biologix-strategy-board/datum-peptides/404.html new file mode 100644 index 0000000..8f64170 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/404.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs + + +

Continue to OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/access.html b/biologix-strategy-board/datum-peptides/access.html new file mode 100644 index 0000000..692019e --- /dev/null +++ b/biologix-strategy-board/datum-peptides/access.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to the OVO Labs catalog + + +

Continue to the OVO Labs catalog.

+ + diff --git a/biologix-strategy-board/datum-peptides/bundles.html b/biologix-strategy-board/datum-peptides/bundles.html new file mode 100644 index 0000000..4d6325e --- /dev/null +++ b/biologix-strategy-board/datum-peptides/bundles.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs sets + + +

Continue to OVO Labs sets.

+ + diff --git a/biologix-strategy-board/datum-peptides/catalog.html b/biologix-strategy-board/datum-peptides/catalog.html new file mode 100644 index 0000000..692019e --- /dev/null +++ b/biologix-strategy-board/datum-peptides/catalog.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to the OVO Labs catalog + + +

Continue to the OVO Labs catalog.

+ + diff --git a/biologix-strategy-board/datum-peptides/company.html b/biologix-strategy-board/datum-peptides/company.html new file mode 100644 index 0000000..2f1ece8 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/company.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs + + +

Continue to OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/eligibility.html b/biologix-strategy-board/datum-peptides/eligibility.html new file mode 100644 index 0000000..8280899 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/eligibility.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs policies + + +

Continue to OVO Labs policies.

+ + diff --git a/biologix-strategy-board/datum-peptides/faq.html b/biologix-strategy-board/datum-peptides/faq.html new file mode 100644 index 0000000..6d02930 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/faq.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs FAQ + + +

Continue to the OVO Labs FAQ.

+ + diff --git a/biologix-strategy-board/datum-peptides/index.html b/biologix-strategy-board/datum-peptides/index.html new file mode 100644 index 0000000..cb5af14 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/index.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs + + +

Continue to OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/lot-record.html b/biologix-strategy-board/datum-peptides/lot-record.html new file mode 100644 index 0000000..be53883 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/lot-record.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs testing + + +

Continue to OVO Labs testing.

+ + diff --git a/biologix-strategy-board/datum-peptides/notes.html b/biologix-strategy-board/datum-peptides/notes.html new file mode 100644 index 0000000..02c2760 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/notes.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs Learn + + +

Continue to OVO Labs Learn.

+ + diff --git a/biologix-strategy-board/datum-peptides/notes/choosing-by-molecule.html b/biologix-strategy-board/datum-peptides/notes/choosing-by-molecule.html new file mode 100644 index 0000000..5cf1dea --- /dev/null +++ b/biologix-strategy-board/datum-peptides/notes/choosing-by-molecule.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to the OVO Labs guide + + +

Continue to the OVO Labs guide.

+ + diff --git a/biologix-strategy-board/datum-peptides/notes/coa-boundaries.html b/biologix-strategy-board/datum-peptides/notes/coa-boundaries.html new file mode 100644 index 0000000..5b594a9 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/notes/coa-boundaries.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to the OVO Labs guide + + +

Continue to the OVO Labs guide.

+ + diff --git a/biologix-strategy-board/datum-peptides/notes/reading-testing-status.html b/biologix-strategy-board/datum-peptides/notes/reading-testing-status.html new file mode 100644 index 0000000..4ef0f1e --- /dev/null +++ b/biologix-strategy-board/datum-peptides/notes/reading-testing-status.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to the OVO Labs guide + + +

Continue to the OVO Labs guide.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/bpc-157.html b/biologix-strategy-board/datum-peptides/peptides/bpc-157.html new file mode 100644 index 0000000..d6b3d4a --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/bpc-157.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to BPC-157 at OVO Labs + + +

Continue to BPC-157 at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/bpc-tb-blend.html b/biologix-strategy-board/datum-peptides/peptides/bpc-tb-blend.html new file mode 100644 index 0000000..272ec7d --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/bpc-tb-blend.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to BPC-157 + TB-500 at OVO Labs + + +

Continue to BPC-157 + TB-500 at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/cagrilintide.html b/biologix-strategy-board/datum-peptides/peptides/cagrilintide.html new file mode 100644 index 0000000..50816a1 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/cagrilintide.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to Cagrilintide at OVO Labs + + +

Continue to Cagrilintide at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/cjc-1295.html b/biologix-strategy-board/datum-peptides/peptides/cjc-1295.html new file mode 100644 index 0000000..893bdfd --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/cjc-1295.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to CJC-1295 at OVO Labs + + +

Continue to CJC-1295 at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/cjc-ipamorelin-blend.html b/biologix-strategy-board/datum-peptides/peptides/cjc-ipamorelin-blend.html new file mode 100644 index 0000000..588ecb6 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/cjc-ipamorelin-blend.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to CJC-1295 + Ipamorelin at OVO Labs + + +

Continue to CJC-1295 + Ipamorelin at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/ipamorelin.html b/biologix-strategy-board/datum-peptides/peptides/ipamorelin.html new file mode 100644 index 0000000..ef205d1 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/ipamorelin.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to Ipamorelin at OVO Labs + + +

Continue to Ipamorelin at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/retatrutide.html b/biologix-strategy-board/datum-peptides/peptides/retatrutide.html new file mode 100644 index 0000000..ce1865c --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/retatrutide.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to Retatrutide at OVO Labs + + +

Continue to Retatrutide at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/semaglutide.html b/biologix-strategy-board/datum-peptides/peptides/semaglutide.html new file mode 100644 index 0000000..459b54b --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/semaglutide.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to Semaglutide at OVO Labs + + +

Continue to Semaglutide at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/tb-500.html b/biologix-strategy-board/datum-peptides/peptides/tb-500.html new file mode 100644 index 0000000..e72678a --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/tb-500.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to TB-500 at OVO Labs + + +

Continue to TB-500 at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/peptides/tirzepatide.html b/biologix-strategy-board/datum-peptides/peptides/tirzepatide.html new file mode 100644 index 0000000..fe22399 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/peptides/tirzepatide.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to Tirzepatide at OVO Labs + + +

Continue to Tirzepatide at OVO Labs.

+ + diff --git a/biologix-strategy-board/datum-peptides/policies.html b/biologix-strategy-board/datum-peptides/policies.html new file mode 100644 index 0000000..8280899 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/policies.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs policies + + +

Continue to OVO Labs policies.

+ + diff --git a/biologix-strategy-board/datum-peptides/testing.html b/biologix-strategy-board/datum-peptides/testing.html new file mode 100644 index 0000000..be53883 --- /dev/null +++ b/biologix-strategy-board/datum-peptides/testing.html @@ -0,0 +1,13 @@ + + + + + + + + Redirecting to OVO Labs testing + + +

Continue to OVO Labs testing.

+ + diff --git a/biologix-strategy-board/deal-structure.html b/biologix-strategy-board/deal-structure.html new file mode 100644 index 0000000..8ca9378 --- /dev/null +++ b/biologix-strategy-board/deal-structure.html @@ -0,0 +1,372 @@ + + + + + + + + + + + Biologix Decision Board — Proposed Deal Structure + + + + +
+
+
00 / Current proposed deal
+

The proposed deal

+

Alex enters Biologix as Operating Partner through OVO Labs — not CRO, not statutory President. One prepaid sprint verifies the books; if the records clear, the mandate, monthly cash, 30% ownership, and a mandatory monthly owner-cash split all activate on the schedule below.

+

Strategic inference: Proposed — not agreed until signed

+
Prepared 2026-07-23 · Internal · Proposed terms — nothing agreed until signed · Not legal advice
+
+
+ + + +
+
+
+
01 / The deal in one view

Five numbers define the whole structure.

+

Everything else on this page is definition and protection around these five commitments. None of them is agreed until definitive documents are signed.

+
+ +
+
+
The economics
+
+
Activation sprint$50,000 prepaid · 30 days
+
From day 31$30,000 Alex + $20,000 OVO / month
+
Ownership30% fully diluted
+
Owner cash monthly70% Braden · 30% Alex
+
Fallback lane only15% introduced-partner share
+
+
+
+
The sequence
+
    +
  1. Sign definitive documents.

    The 30% grant is locked in subject to its vesting terms: 10% vested on signing, 10% on activation, and 10% over the following six months.

  2. +
  3. Days 1–30.

    $50,000 prepaid Source-of-Truth and Activation Sprint. Read-only access; source-truth decision inside the first 10 business days.

  4. +
  5. Objective gate.

    Authority, public role, and live growth do not activate early — see the activation gate below.

  6. +
  7. Day 31.

    Operating Partner mandate activates; $30,000 Alex + $20,000 OVO monthly begins; the activation tranche vests.

  8. +
  9. Next six months.

    The final 10% vests on schedule, with defined acceleration and protection.

  10. +
+
+
+

Current working ask: 30% economic ownership. This supersedes earlier illustrative 10–20% ranges on this board and is binding only in a signed definitive agreement. The revised model adds $15,000 per month versus the earlier single $35,000 operator line. Strategic inference: Proposed term

+
+ +
+
+
+ 02 / Monthly owner cash +

Excess Cash pays out monthly: 70% Braden, 30% Alex.

+ Strategic inference: Proposed term — not agreed +
+

Under the proposed terms, the company holds back only what the signed formula defines. Everything above those holdbacks is Excess Cash, and 100% of it is distributed at the monthly close — by rule, not discretion. Anything held back beyond the formula requires Alex's written approval.

+
+ +
+
+
The proposed monthly formula
+
    +
  • + + Start with Cleared company cash at the monthly close +
  • +
  • + minus + Refunds and chargebacks not yet debited +
  • +
  • + minus + Accrued taxes, payroll, and accounts payable +
  • +
  • + minus + Signed inventory commitments due before the next close and processor obligations not already excluded +
  • +
  • + minus + Approved operating and legal-defense reserve +
  • +
  • + equals + Excess Cash — 100% distributed: 70% Braden · 30% Alex +
  • +
+
+ +
+
Worked example — hypothetical
+
+
Cleared company cash$1,000,000
+
+ Liabilities + reserve + minus ($300,000) +
+
Excess Cash$700,000
+
Braden · 70%$490,000
+
Alex · 30%$210,000
+
+ +

70% Braden · 30% Alex — 100% of Excess Cash

+
+
+
+ +
+
+
03 / Required Reserve and owner rules

The reserve is a formula. Reinvestment is an election.

+

The Required Reserve is defined in a signed schedule, not by discretion. After distribution, either owner may lend cash back — but a loan never becomes ownership, priority, or a padded reserve.

+
+ +
+
+ Strategic inference: Proposed term +

What may be held back — not yet agreed

+
    +
  • Accrued taxes, documented refund or chargeback exposure, payroll, and incurred accounts payable.
  • +
  • Inventory counts only when an approved, executed commitment is payable before the next close; an optional growth order does not count.
  • +
  • Processor reserves or obligations count only when they are documented and not already excluded from Cleared Cash.
  • +
  • The operating reserve is capped at sixty days of the mutually approved budget.
  • +
  • The legal/compliance reserve is a fixed dollar amount in the signed schedule; capex requires both owners' written approval.
  • +
  • A dispute holds only the disputed amount. Undisputed Excess Cash still pays on time.
  • +
+
+ +
+ Strategic inference: Proposed term +

Reinvestment is an owner election

+
    +
  • First pay the full $490,000 / $210,000 distribution. Alex keeps his $210,000 and is never required to put it back.
  • +
  • Example: Braden may wire $300,000 of his own $490,000 back under a separate shareholder note, booked as a company loan payable to Braden.
  • +
  • The note is mutually approved, unsecured, non-convertible, and carries no warrants, votes, collateral, or ownership change.
  • +
  • Its principal, interest, and repayment priority cannot pad the Required Reserve or jump ahead of the monthly waterfall without Alex's written approval.
  • +
+
+ +
+ Strategic inference: Operating design +

Finance control, openly installed

+
    +
  • Braden's mother remains a trusted finance participant in the monthly close.
  • +
  • Alex installs the cash forecast, processor reconciliation, management pack, and independent controller cadence.
  • +
  • Alex receives read-only bank, processor, and accounting visibility plus narrow approval rights over reserve changes, related-party transfers, and owner benefits.
  • +
  • Personal draws or company-funded owner benefits sit in the same 70/30 equalization ledger.
  • +
+
+
+
+ +
+
+
04 / Role perimeter

Operating Partner — not CRO, not President on day one.

+

Company-wide accountability comes with company-wide authority after activation. The perimeter below is part of the economics.

+
+ +
+
+
Alex owns after activation
+
    +
  • Company architecture and management cadence.
  • +
  • Finance systems, cash forecast, and monthly-close discipline.
  • +
  • People, hiring, and vendor scorecards.
  • +
  • Creator distribution, lifecycle, and content systems.
  • +
  • The weekly executive close.
  • +
+
+
+
Braden retains
+
    +
  • Product and sourcing.
  • +
  • Inventory.
  • +
  • Fulfillment and routine order operations.
  • +
  • Founder content creation.
  • +
  • His trusted finance participant in the monthly close.
  • +
+
+
+ +
+
The only fallback lane
+

If Braden wants traffic only: a scoped setup fee plus 15% of settled contribution from accepted Alex-introduced partners. That lane carries no companywide operating mandate, no 30% ownership, no OVO managed-services pod, and no backend build. Strategic inference: Proposed term

+
+
+ +
+
+
05 / OVO delivery team

One director, parallel pods, centralized controls.

+

Creator growth is delivered as a managed OVO function. Managers run creator portfolios in parallel; QA/compliance and payout/data operations stay centralized so quality and money never depend on one manager.

+
+ +
+
+
The pod structure
+
+
Program directorAlex
+
Creator-manager podJaci
+
Creator-manager podKennedy
+
Named legacy relationshipsConnor
+
Future podsParallel managers, added by rule
+
CentralizedQA/compliance · payout & data ops
+
+
+
+
Capacity model
+
+
Pilot load per manager10–12 creators
+
Steady state12–15
+
Initial roster25 creators
+
Expansion rule+1 pod per 15 active creators
+
At 50 creators~4 managers + QA
+
At 100 creators7–8 managers · 2 QA · 1 payout/data
+
+
+
+

Named assignments are planned, not contracted — pods staff up only after activation. Strategic inference: Proposed — activates with the mandate

+
+ +
+
+
06 / Creator pipeline

Eleven stages in. One waterfall out.

+

The lifecycle applies OVO's Fitia creator-operations spine to Biologix. Every settled dollar exits through the same waterfall defined above — there is no second or stacked service-fee layer.

+
+ +
+
+
Fitia-derived lifecycle
+
    +
  1. Source
  2. +
  3. Qualify
  4. +
  5. Approve
  6. +
  7. Outbound
  8. +
  9. Close
  10. +
  11. Contract
  12. +
  13. Activate
  14. +
  15. Manage
  16. +
  17. Attribute
  18. +
  19. Settle
  20. +
  21. Scale
  22. +
+
+
+
Where each settled dollar goes
+
    +
  • + + Start with Settled Net Revenue at the monthly close +
  • +
  • + minus + Creator commissions and direct costs +
  • +
  • + equals + Settled Contribution Margin +
  • +
  • + minus + OVO service fee — defined below +
  • +
  • + minus + Overhead and approved reserve +
  • +
  • + equals + Excess Cash — 70% Braden · 30% Alex +
  • +
+

The same Excess Cash defined in section 02. The OVO fee sits inside costs — it never comes out of the 70/30.

+
+
+ +
+
Truth boundary
+

The pipeline above is a real, operating Fitia spine. The legacy planning numbers attached to it — 170 sends per day and five closes per day — are unverified planning assumptions, not measured throughput. Founder-reported, unverified: Unverified planning assumption

+

No creator growth activates before written product, claims, and jurisdiction clearance — see the activation gate. Required proof: Written clearance required

+
+
+ +
+
+
07 / Recurring OVO economics

The fee scales by pod and settles on margin.

+

The $20,000 OVO monthly line in section 01 is the capacity minimum. Above capacity, the fee follows settled margin — never gross revenue and never a stacked downline.

+
+ +
+
The fee, defined
+
+
Capacity minimum$20,000 / month
+
CoversFirst 25 active creators
+
Each additional pod+$10,000 per 15 active creators
+
Monthly service feeGreater of minimum or 15% SCM
+
Variable cap8% Settled Net Revenue
+
Stacked downline feeNone
+
+

SCM — Settled Contribution Margin after creator commissions and direct costs. SNR — Settled Net Revenue. One service fee; no per-manager override on top. Strategic inference: Proposed term

+
+
+ +
+
+
08 / Activation gate

Nothing activates until the source records clear.

+

The economic right can be documented at signing. Authority, the public role, and live growth activate only when every gate passes.

+
+ +
    +
  1. At least 95% of 30/90-day order value reconciles from source through processor and bank, with every residual difference explained.
  2. +
  3. Fully loaded collected operating contribution is source-verified at 35% or better.
  4. +
  5. Entity, cap table, side promises, related parties, vendor rights, IP, and customer data are fully disclosed and usable.
  6. +
  7. Demand durability, concentration, refund/dispute rates, and repeat economics support the forecast.
  8. +
  9. Qualified specialists support a lawful path, and quality evidence supports the contemplated scope.
  10. +
  11. Braden accepts the role split, information rights, budget, decision rights, and management cadence in writing.
  12. +
+

Failing a gate is not “walk forever.” It means no permanent title, voting control, personal guarantee, or broad Operating Partner liability — and any narrow paid remediation has explicit limits.

+

Full gate table and kill conditions →

+
+
+ + + + + + diff --git a/biologix-strategy-board/evidence-register.md b/biologix-strategy-board/evidence-register.md new file mode 100644 index 0000000..f5cf232 --- /dev/null +++ b/biologix-strategy-board/evidence-register.md @@ -0,0 +1,61 @@ +# Evidence register for the hypothetical venture plan + +**Research date:** July 22, 2026 + +**Purpose:** Make the changing public snapshots and founder-reported inputs reproducible without treating them as verified financial records. + +## Public popularity and price snapshot + +- Captured: **2026-07-22 18:19:22 PDT**. +- Endpoint: [Biologix WooCommerce Store API, popularity descending](https://biologixlabsresearch.com/wp-json/wc/store/v1/products?per_page=100&orderby=popularity&order=desc). +- Stored derivative: [`public-demand-map.csv`](./public-demand-map.csv). +- Publicly observed fields: rank/order returned by the endpoint, product label, current minimum price, and current maximum variant price. +- Not observable from the endpoint: units sold, revenue, customers, time period represented by popularity, repeat rate, contribution, or whether historical sales metadata moved during the platform migration. +- Analyst-created fields: demand cluster and modeled portfolio role. + +Prices, rank, stock, and product availability are dynamic. A later request may differ without implying that either snapshot was false. + +## Public inventory snapshot + +- Recorded source snapshot: **2026-07-22 15:45 PDT**. +- Source dossier: local file `33-biologix-public-commerce-evidence-2026-07-22.md` in the Braden Zoom Call Analysis folder. +- Snapshot result: 1,397 visible numeric units and approximately $86,657 of displayed retail inventory across public sellable entries. +- Interpretation: storefront allocation only. It does not prove total warehouse inventory, landed cost, ownership, or historical sales. +- Volatility check: the public counters changed later the same day, demonstrating why the timestamp and non-financial interpretation matter. + +## Founder-reported one-day analytics input + +- Source: second Braden strategy-call recording/transcript in the local Braden Zoom Call Analysis dossier. +- Relevant time window: approximately **00:31:58–00:32:21**. +- Inputs used in the model: **$53,540.86** reported dashboard amount and **216** reported orders. +- Context: Braden said analytics were broken and missing Apple Pay. +- Derived arithmetic: $53,540.86 / 216 = $247.8743519 implied AOV; a mechanical 30-day repetition equals $1,606,225.80 and 6,480 orders. +- Evidence class: founder-reported one-day input, incomplete, unverified, and **not a base case**. + +## Other founder-reported inputs requiring source proof + +- Approximately $1.5 million in the last 30 days. +- Approximately 80–85% margin described as “net.” +- Word of mouth as the primary acquisition channel. +- A very small affiliate group and statements that affiliates can earn approximately $10,000–$12,000 weekly; the transcript does not cleanly establish whether that amount is per affiliate or aggregate. +- Founder-led fulfillment with limited help. +- Inventory, ownership, supplier, peak-day, agency, and app-development statements contained in the calls. + +Required verification is the order export, processor activity, adjusted bank settlements, refunds/disputes, affiliate ledger, inventory roll-forward, supplier/import records, accounting close, tax records, cap table, contracts, complaints/adverse events, and insurance. + +## Private founder follow-up signal + +- Source: user-authorized review of the direct Alex–Braden iMessage thread on **2026-07-22**. +- Braden confirmed a follow-up for **1:00 CST the next day**, sent a photo of a substantial batch of outbound Biologix packages, and later wrote **“Let’s get it brotha.”** +- Operational interpretation: the relationship is active and the visible fulfillment batch reinforces the founder-relief wedge already described in the calls. +- Boundary: the messages do **not** prove a signed engagement, payment, source access, revenue, margin, order count, ownership, or the contents and disposition of the packages. +- Privacy handling: the source attachment is not copied into the board because shipping labels may contain customer information. + +## Evidence labels + +- **Publicly observed:** directly visible in a timestamped public source. +- **Private founder signal:** directly observed in a user-authorized private communication, but not proof of financial or contractual claims. +- **Founder-reported — unverified:** said or shown by Braden without source-record reconciliation. +- **Strategic inference:** analyst interpretation from observed/reported facts. +- **Modeled assumption:** an input selected for sensitivity analysis, not a statement about Biologix. +- **Required proof:** a record or legal/quality conclusion needed before money, title, equity, or operating responsibility changes hands. diff --git a/biologix-strategy-board/execution.html b/biologix-strategy-board/execution.html new file mode 100644 index 0000000..94b556a --- /dev/null +++ b/biologix-strategy-board/execution.html @@ -0,0 +1,278 @@ + + + + + + + + + + + Biologix Decision Board — Execution + + + + +
+
+
03 / Execution
+

Meeting set. Tomorrow, 1:00 CST.

+

Braden answered, confirmed the next meeting, and signaled real momentum. The job now is to convert chemistry into source access, a paid operating sprint, and explicit next steps without treating enthusiasm as signed economics.

+
Prepared 2026-07-22 · Updated evening · Internal · Not legal advice
+
+
+ + + +
+
+
+
01 / Signal received

He answered.

+

Relationship momentum is now confirmed. Commercial commitment still begins only when access, scope, payment, and next steps become explicit.

+
+ +
+
+

Track A is live. The payment gate is not.

+

Braden confirmed the follow-up, shared a live fulfillment signal, and ended with “Let’s get it brotha.” The founder-relief wedge is more concrete: fulfillment still visibly depends on Braden. None of this proves revenue, margin, ownership, or a completed partnership.

+

Founder-provided photo shows a large batch of personally handled Biologix packages Private signal · not revenue proof

+
+
+
MeetingTomorrow · 1:00 CST · confirmed
+
Operating signalBatch photo · self-fulfilled
+
Tone“Let’s get it brotha”
+
+
+
+ +
+
+
02 / Meeting preparation

Arrive ready to close the next gate.

+

Prepare the concrete transaction now. Keep inventory, exclusivity, liability, and permanent focus behind explicit gates.

+
+ +
+ + + + + + +
+ +
+

Before tomorrow's meeting

Every item should make the conversation more concrete without giving away the implementation for free.

+
+
+ DoneResearch foundation and call evidence assembledShared · complete +
+
Why

Alex should negotiate from the transcript, public audit, verified commerce signals, known contradictions, and explicit unknowns — not just founder chemistry.

+
Evidence

Call transcript, executive summaries, public storefront audit, commerce evidence, deal analysis, regulatory research, and this four-view decision board are organized.

+

Done when · the next conversation can move directly to source data, operating scope, and paid commitment.

+
+
+ +
+ ReadyFinalize the one-page paid sprintAlex · before 1:00 CST tomorrow +
+
Why

The next exchange should be a concrete paid transaction, not another free architecture session.

+
  1. State the source-of-truth objective, scope, exclusions, access, outputs, timeline, fee, and go/no-go gate.
  2. Attach the data-room checklist and source-truth call agenda.
  3. Keep OVO creators, systems, merchant rails, inventory capital, and permanent title outside the sprint.
+
GateStrategic inference: Working target · $50,000 prepaid
+

Done when · a signature-ready sprint can be sent within ten minutes of Braden saying yes.

+
+
+ +
+ ReadyPrepare the data-room request and live source-truth agendaAlex · before 1:00 CST tomorrow +
+
Why

Revenue, margin, inventory, ownership, and channel claims cannot stay verbal if Alex is pricing a company-level role.

+
  1. Request live WooCommerce, processor, bank, accounting, inventory, affiliate, customer, vendor, contract, and corporate access.
  2. Sequence the walkthrough from order to capture to settlement to bank receipt.
  3. Require every partner, admin, revenue share, equity promise, and exclusivity in one map.
+

Done when · each data category has an owner, format, and twenty-four-to-forty-eight-hour upload deadline.

+
+
+ +
+ ReadyStart the merchant-neutral longevity asset mapAlex · begin now +
+
Why

The durable thesis should not depend on one storefront or one founder's reply.

+
  1. Map audience problems, trusted educators, creators, operators, lawful merchants, licensed care, diagnostics, supplements, skincare, and software.
  2. Identify which assets OVO can own across merchants: media, permission, data, creator operations, lifecycle, and attribution.
  3. List interview targets and the first merchant-neutral demand test.
+

Done when · Alex has one portable category map and a first-week interview queue.

+
+
+
+
+ + +
+ +
+
+
03 / Active path and contingency

The live route leads. The fallback remains ready.

+

Track A is now the operating priority. Track B activates only if tomorrow fails to produce a concrete next step.

+
+ +
+
+

Track A — Live · meeting tomorrow 1:00 CST

No more free vision session. The next exchange is architecture for access, payment, and commitment.

+
+
+ ReadyHold the source-of-truth callAlex + Braden · tomorrow 1:00 CST +
Why

Move from chemistry and claims to reciprocal proof, scope, authority, and a written process.

  1. Set the standard: permanent economics follow evidence.
  2. Walk WooCommerce, processor, bank, refunds, reserves, accounting, inventory, affiliates, contracts, and ownership live.
  3. Close on the paid sprint, data owner, upload deadline, and start date.
GateLive source access

Done when · the sprint concept is accepted and every source category has a named owner and deadline.

+
+ +
+ GatedExecute NDA, sprint, and paymentAlex + Braden · before access +
Why

The relationship becomes real when the company pays for work and opens the source systems.

  1. Sign mutual confidentiality and limited sprint scope.
  2. Collect prepaid fee before substantive implementation begins.
  3. Keep title, exclusivity, OVO assets, and permanent equity outside this contract.

Done when · funds are received, access is live, and the sprint clock starts.

+
+ +
+ GatedRun the ten-day verification gateSprint · days 00–10 +
Why

Verify settled cash, fully loaded contribution, repeat demand, inventory, ownership, partners, payment continuity, quality records, and the operating perimeter before permanent focus.

  1. Reconcile order to bank and define contribution line by line.
  2. Map cohort, repeat, referral, affiliate, and SKU economics.
  3. Obtain specialist green, yellow, or red findings.
  4. Issue a written go, remediate, or walk decision.
GateSource truth must clear

Done when · Alex can defend the economics and risks without relying on Braden's narrative.

+
+ +
+ GatedCreate the first founder-relief winSprint · days 11–30 +
Why

Removing Braden from labeling and shipping proves Alex creates founder freedom, not just decks.

  1. Establish inventory truth, lot location, and landed cost.
  2. Stabilize the 3PL scope, handoff, service levels, and exception path.
  3. Install the daily cash, order, inventory, support, and fulfillment view.

Done when · Braden can leave for a full workday without routine fulfillment depending on him.

+
+ +
+ GatedReverse-engineer and instrument word of mouthSprint · days 11–30 +
Why

The reported organic engine is the most valuable unexplained part of the business.

  1. Identify referral source and first trust event for recent customers.
  2. Measure repeat behavior, contribution, product pathway, and referral depth.
  3. Build the minimum capture and attribution layer around the existing loop.
EvidenceReported mainly word of mouth

Done when · the team can describe, measure, and deliberately reproduce the acquisition loop.

+
+ +
+ GatedNegotiate permanent operating economicsAfter reconciliation +
Why

Alex should receive operator economics for converting accidental demand into a company.

  1. Choose the cash-heavy or ownership-heavy structure based on verified durability.
  2. Lock authority, budget, reporting lines, contribution definition, distributions, information, audit, dilution, related-party, sale, and termination rights.
  3. Separate Legacy CashCo from Durable NewCo.

Done when · responsibility, authority, cash, downside protection, and upside are aligned in definitive documents.

+
+ +
+ GatedLaunch the ninety-day operating roadmap and NewCo gateAfter permanent terms +
Why

The partnership is valuable only if each month removes founder dependence and creates assets that survive the current storefront.

  1. Install the non-Alex operating DRI, lifecycle, referral system, vendor accountability, and executive close.
  2. Scale only measured positive-contribution cohorts.
  3. Launch NewCo only after clean ownership, IP, contracts, books, data, and reserved matters are signed.

Done when · neither founder is the daily router and the durable assets sit in the agreed clean entity.

+
+
+
+ +
+

Track B — Contingency · meeting slips or goes dark

Keep the independent asset path ready, but do not split today's attention while the direct founder route is live.

+
+
+ WaitingIf 1:00 CST passes without the meeting, stop chasingAlex · contingency trigger +
Why

One founder should not hold a category thesis or Alex's calendar hostage.

  1. Stop producing personalized free architecture.
  2. Keep the door open without granting indefinite priority or exclusivity.
  3. Move the weekly capacity into interviews, owned audience, and merchant-neutral infrastructure.
GateMeeting missed without a concrete reset

Done when · Alex's next week is scheduled around owned work rather than checking for a response.

+
+ +
+ WaitingAsk Connor once for context, not pressureOnly if the meeting slips +
+
Why

Connor can clarify whether timing changed. He should not be used to triangulate, persuade, or corner Braden.

+
  1. Ask whether Braden is buried, reconsidering, or simply off schedule.
  2. Do not ask Connor to sell the deal or relay confidential terms.
  3. Return to the direct relationship for any substantive conversation.
+

Done when · Alex understands timing without creating social pressure or mixed messages.

+
+
+ +
+ WaitingInterview category operators, customers, creators, and qualified merchantsIndependent · week 1 +
Why

Learn where trust, demand, reorder behavior, merchant pain, creator interest, and licensed infrastructure actually live.

  1. Ask about customer problems, purchase pathways, trust events, retention, content, merchant failures, and partner economics.
  2. Separate durable metabolic-health and longevity demand from a single RUO storefront model.
  3. Record common data, lifecycle, attribution, and creator-operations gaps.

Done when · repeated pain and purchase behavior produce a merchant-neutral opportunity map.

+
+ +
+ WaitingLaunch an OVO-owned category demand testIndependent · weeks 1–2 +
Why

Prove audience and customer permission before inventory, merchant dependence, or a product bet.

  1. Choose a brand-neutral research, media, newsletter, waitlist, or community wedge.
  2. Publish education around real customer questions without making unsupported product claims.
  3. Measure qualified attention, replies, interviews, referrals, and merchant interest.

Done when · OVO owns a permissioned audience signal that is portable across merchants.

+
+ +
+ WaitingBuild the category creator and operator coalitionIndependent · weeks 1–2 +
Why

Alex's actual unfair advantage is trusted distribution and the system around it — not access to a generic supplier.

  1. Map credible educators, health creators, operators, clinicians, diagnostics leaders, and community builders.
  2. Invite category-level conversations, not product endorsements.
  3. Document preferred economics, content constraints, audience demand, and partner requirements.
Working target10–20 expressions of interest Strategic inference: Strategic inference

Done when · OVO has a credible initial partner graph no single merchant owns.

+
+ +
+ WaitingPrototype the merchant-neutral partner control planeIndependent · weeks 1–2 +
Why

The reusable moat is creator operations, attribution, contribution truth, content governance, reversals, lifecycle, and merchant portability.

  1. Show the partner record, agreement state, approved-content evidence, customer event trail, contribution ledger, payout state, reversals, and stop controls.
  2. Keep schemas, code, creator graph, and detailed automations private.
  3. Use the prototype to sell a paid operating pilot, not to perform free implementation.

Done when · a qualified merchant can understand the operating destination without receiving the wiring.

+
+ +
+ GatedOffer paid pilots to qualified lawful longevity merchantsIndependent · weeks 2–3 +
Why

Multiple qualified buyers prove the operating platform is valuable beyond Biologix.

  1. Prioritize licensed care, diagnostics, supplements, skincare, software, and other specialist-cleared categories.
  2. Require truthful merchant, product, payment, data, and operating evidence before creator activation.
  3. Keep audience, software, and generalized operating IP portable.
GateQualified specialists support the contemplated model

Done when · at least one merchant will pay for a controlled pilot under OVO's operating boundary.

+
+ +
+ GatedMake the week-four capital and attention decisionAlex · week 4 +
Why

The category earns more time only if paid demand, distribution, or owned audience validates.

  1. Reopen Biologix under the original paid gates if Braden returns.
  2. Choose another qualified merchant if a superior paid path appears.
  3. Form the merchant-neutral Durable NewCo if owned demand and platform pull validate.
  4. Return the capacity to OVO if none of the evidence clears.

Done when · Alex chooses one path explicitly and closes the others for the next operating cycle.

+
+
+
+
+
+ +
+
+
Both tracks end here
+

Owned leverage that survives any one storefront.

+
+

Audience

Track A captures Biologix customer and creator permission under agreed rights. Track B builds merchant-neutral research, media, waitlist, and community.

+

Data

Track A reconciles orders, referrals, cohorts, contribution, and repeat demand. Track B creates interview, audience, creator, and merchant-intent data OVO owns.

+

Software

Track A instruments the live company. Track B prototypes the portable partner, attribution, lifecycle, contribution, and controls layer.

+
+
+
+ +
+
+
04 / Weekly control panel

The questions that keep speed from becoming drift

+

Review weekly. A compelling market is not permission to consume unlimited Alex time or bypass proof.

+
+
+ + + + + + + + + + + + + +
Weekly control questions and decision rules.
QuestionGreenYellowRed
Did the 1:00 CST meeting produce explicit next steps?Sprint, source access, owners, deadlines, and payment path are explicit.Positive intent with one defined follow-up and deadline.No meeting, no reset, or another free architecture loop.
Was the sprint paid?Implementation begins under scope.Clarify paper and deadline.No more personalized architecture.
Is source access complete?Orders, settlements, bank, accounting, customer, inventory, affiliate, partner, contract, and ownership data live.Missing records have owners and deadlines.Withholding or unexplained contradictions end the permanent path.
Does cash reconcile?Collected contribution survives full costs.Fixable accounting or attribution gaps.Material claims do not become settled cash.
Is the operating perimeter usable?Qualified specialists support payment, quality, insurance, and lawful boundaries.Remediation is defined, funded, and time-boxed.Alex is asked for banks, nominees, concealment, unsupported claims, or undefined exposure.
Do authority and economics match?Control, budget, team, cash, ownership, distributions, information, and protection align.Specific open terms with a deadline.Company accountability with employee or advisor economics.
What did OVO own this week?Audience, data, software, content, relationship, or NewCo value compounded.Information improved but no asset yet.Alex only performed more labor for someone else's transaction.
Did any OVO priority slip?No core milestone moved.One contained tradeoff with an owner and recovery date.Biologix becomes the new daily chaos center.
+
+

Operating rule · Move fast on information, paid proof, and reversible options. Move slowly on liability, exclusivity, and permanent focus.

+
+
+ + + + + + + diff --git a/biologix-strategy-board/finalized.json b/biologix-strategy-board/finalized.json new file mode 100644 index 0000000..c65f654 --- /dev/null +++ b/biologix-strategy-board/finalized.json @@ -0,0 +1,21 @@ +{ + "source_mockup": null, + "source_plan": null, + "mode": "freeform-with-existing-board-reference", + "html_files": [ + "index.html", + "deal-structure.html", + "operating-reference.html", + "execution.html", + "venture-model.html", + "risk-on-venture-plan.html" + ], + "pretext_tier": "card-grid", + "framework": "vanilla", + "iterations": 4, + "date": "2026-07-23", + "screen": "biologix-strategy-board", + "branch": "scaling-strategy", + "visual_authority": "claude-fable-5", + "visual_review": "approved-by-claude-fable-5" +} diff --git a/biologix-strategy-board/flywheel-map-pretext.js b/biologix-strategy-board/flywheel-map-pretext.js new file mode 100644 index 0000000..93e6220 --- /dev/null +++ b/biologix-strategy-board/flywheel-map-pretext.js @@ -0,0 +1,5 @@ +var x0=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ON","CS","ON","CS","ON","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","ON","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","ON","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],g0=["AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL"];function m0(O){if(O<=255)return x0[O];if(1424<=O&&O<=1524)return"R";if(1536<=O&&O<=1791)return g0[O&255];if(1792<=O&&O<=2220)return"AL";return"L"}function r0(O){let _=O.length;if(_===0)return null;let J=Array(_),Y=0;for(let V=0;V<_;V++){let $=m0(O.charCodeAt(V));if($==="R"||$==="AL"||$==="AN")Y++;J[V]=$}if(Y===0)return null;let X=_/Y<0.3?0:1,R=new Int8Array(_);for(let V=0;V<_;V++)R[V]=X;let Z=X&1?"R":"L",Q=Z,f=Q;for(let V=0;V<_;V++)if(J[V]==="NSM")J[V]=f;else f=J[V];f=Q;for(let V=0;V<_;V++){let $=J[V];if($==="EN")J[V]=f==="AL"?"AN":"EN";else if($==="R"||$==="L"||$==="AL")f=$}for(let V=0;V<_;V++)if(J[V]==="AL")J[V]="R";for(let V=1;V<_-1;V++){if(J[V]==="ES"&&J[V-1]==="EN"&&J[V+1]==="EN")J[V]="EN";if(J[V]==="CS"&&(J[V-1]==="EN"||J[V-1]==="AN")&&J[V+1]===J[V-1])J[V]=J[V-1]}for(let V=0;V<_;V++){if(J[V]!=="EN")continue;let $;for($=V-1;$>=0&&J[$]==="ET";$--)J[$]="EN";for($=V+1;$<_&&J[$]==="ET";$++)J[$]="EN"}for(let V=0;V<_;V++){let $=J[V];if($==="WS"||$==="ES"||$==="ET"||$==="CS")J[V]="ON"}f=Q;for(let V=0;V<_;V++){let $=J[V];if($==="EN")J[V]=f==="L"?"L":"EN";else if($==="R"||$==="L")f=$}for(let V=0;V<_;V++){if(J[V]!=="ON")continue;let $=V+1;while($<_&&J[$]==="ON")$++;let u=V>0?J[V-1]:Q,q=$<_?J[$]:Q,D=u!=="L"?"R":"L";if(D===(q!=="L"?"R":"L"))for(let K=V;K<$;K++)J[K]=D;V=$-1}for(let V=0;V<_;V++)if(J[V]==="ON")J[V]=Z;for(let V=0;V<_;V++){let $=J[V];if((R[V]&1)===0){if($==="R")R[V]++;else if($==="AN"||$==="EN")R[V]+=2}else if($==="L"||$==="AN"||$==="EN")R[V]++}return R}function u0(O,_){let J=r0(O);if(J===null)return null;let Y=new Int8Array(_.length);for(let X=0;X<_.length;X++)Y[X]=J[_[X]];return Y}var a0=/[ \t\n\r\f]+/g,s0=/[\t\n\r\f]| {2,}|^ | $/;function d0(O){let _=O??"normal";return _==="pre-wrap"?{mode:_,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:_,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function i0(O){if(!s0.test(O))return O;let _=O.replace(a0," ");if(_.charCodeAt(0)===32)_=_.slice(1);if(_.length>0&&_.charCodeAt(_.length-1)===32)_=_.slice(0,-1);return _}function t0(O){if(!/[\r\f]/.test(O))return O.replace(/\r\n/g,` +`);return O.replace(/\r\n/g,` +`).replace(/[\r\f]/g,` +`)}var d=null,V0;function n0(){if(d===null)d=new Intl.Segmenter(V0,{granularity:"word"});return d}function z0(){d=null}function j0(O){let _=O&&O.length>0?O:void 0;if(V0===_)return;V0=_,d=null}var e0=/\p{Script=Arabic}/u,O0=/\p{M}/u,b0=/\p{Nd}/u;function X0(O){return e0.test(O)}function p(O){for(let _ of O){let J=_.codePointAt(0);if(J>=19968&&J<=40959||J>=13312&&J<=19903||J>=131072&&J<=173791||J>=173824&&J<=177983||J>=177984&&J<=178207||J>=178208&&J<=183983||J>=183984&&J<=191471||J>=196608&&J<=201551||J>=63744&&J<=64255||J>=194560&&J<=195103||J>=12288&&J<=12351||J>=12352&&J<=12447||J>=12448&&J<=12543||J>=44032&&J<=55215||J>=65280&&J<=65519)return!0}return!1}var $0=new Set([",",".","!",":",";","?","、","。","・",")","〕","〉","》","」","』","】","〗","〙","〛","ー","々","〻","ゝ","ゞ","ヽ","ヾ"]),i=new Set(['"',"(","[","{","“","‘","«","‹","(","〔","〈","《","「","『","【","〖","〘","〚"]),Q0=new Set(["'","’"]),r=new Set([".",",","!","?",":",";","،","؛","؟","।","॥","၊","။","၌","၍","၏",")","]","}","%",'"',"”","’","»","›","…"]),OO=new Set([":",".","،","؛"]),_O=new Set(["၏"]),JO=new Set(["”","’","»","›","」","』","】","》","〉","〕",")"]);function RO(O){if(q0(O))return!0;let _=!1;for(let J of O){if(r.has(J)){_=!0;continue}if(_&&O0.test(J))continue;return!1}return _}function VO(O){for(let _ of O)if(!$0.has(_)&&!r.has(_))return!1;return O.length>0}function XO(O){if(q0(O))return!0;for(let _ of O)if(!i.has(_)&&!Q0.has(_)&&!O0.test(_))return!1;return O.length>0}function q0(O){let _=!1;for(let J of O){if(J==="\\"||O0.test(J))continue;if(i.has(J)||r.has(J)||Q0.has(J)){_=!0;continue}return!1}return _}function YO(O){let _=Array.from(O),J=_.length;while(J>0){let Y=_[J-1];if(O0.test(Y)){J--;continue}if(i.has(Y)||Q0.has(Y)){J--;continue}break}if(J<=0||J===_.length)return null;return{head:_.slice(0,J).join(""),tail:_.slice(J).join("")}}function ZO(O,_){if(O.length===0)return!1;for(let J of O)if(J!==_)return!1;return!0}function $O(O){if(!X0(O)||O.length===0)return!1;return OO.has(O[O.length-1])}function QO(O){if(O.length===0)return!1;return _O.has(O[O.length-1])}function qO(O){if(O.length<2||O[0]!==" ")return null;let _=O.slice(1);if(/^\p{M}+$/u.test(_))return{space:" ",marks:_};return null}function D0(O){for(let _=O.length-1;_>=0;_--){let J=O[_];if(JO.has(J))return!0;if(!r.has(J))return!1}return!1}function DO(O,_){if(_.preserveOrdinarySpaces||_.preserveHardBreaks){if(O===" ")return"preserved-space";if(O==="\t")return"tab";if(_.preserveHardBreaks&&O===` +`)return"hard-break"}if(O===" ")return"space";if(O===" "||O===" "||O==="⁠"||O==="\uFEFF")return"glue";if(O==="​")return"zero-width-break";if(O==="­")return"soft-hyphen";return"text"}function NO(O,_,J,Y){let X=[],R=null,Z="",Q=J,f=!1,V=0;for(let $ of O){let u=DO($,Y),q=u==="text"&&_;if(R!==null&&u===R&&q===f){Z+=$,V+=$.length;continue}if(R!==null)X.push({text:Z,isWordLike:f,kind:R,start:Q});R=u,Z=$,Q=J+V,f=q,V+=$.length}if(R!==null)X.push({text:Z,isWordLike:f,kind:R,start:Q});return X}function Y0(O){return O==="space"||O==="preserved-space"||O==="zero-width-break"||O==="hard-break"}var fO=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function HO(O,_){let J=O.texts[_];if(J.startsWith("www."))return!0;return fO.test(J)&&_+1=O.len||Y0(O.kinds[Q]))continue;let f="",V=O.starts[Q],$=Q;while($0)_.push(f),J.push(!0),Y.push("text"),X.push(V),R=$-1}return{len:_.length,texts:_,isWordLike:J,kinds:Y,starts:X}}var FO=new Set([":","-","/","×",",",".","+","–","—"]),K0=/^[A-Za-z0-9_]+[,:;]*$/,vO=/[,:;]+$/;function E0(O){for(let _ of O)if(b0.test(_))return!0;return!1}function Z0(O){if(O.length===0)return!1;for(let _ of O){if(b0.test(_)||FO.has(_))continue;return!1}return!0}function uO(O){let _=[],J=[],Y=[],X=[];for(let R=0;R1;for(let V=0;V0&&Q[X-1]==="text"&&p(D.text)&&p(R[X-1])&&D0(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&VO(D.text)&&p(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&QO(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&D.isWordLike&&X0(D.text)&&$O(R[X-1]))R[X-1]+=D.text,Z[X-1]=!0;else if(b&&!D.isWordLike&&X>0&&Q[X-1]==="text"&&D.text.length===1&&D.text!=="-"&&D.text!=="—"&&ZO(R[X-1],D.text))R[X-1]+=D.text;else if(b&&!D.isWordLike&&X>0&&Q[X-1]==="text"&&(RO(D.text)||D.text==="-"&&Z[X-1]))R[X-1]+=D.text;else R[X]=D.text,Z[X]=D.isWordLike,Q[X]=D.kind,f[X]=D.start,X++}for(let q=1;q=0;q--)if(Q[q]==="text"&&!Z[q]&&XO(R[q])){let D=q+1;while(D"u")return s={lineFitEpsilon:0.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},s;let O=navigator.userAgent,J=navigator.vendor==="Apple Computer, Inc."&&O.includes("Safari/")&&!O.includes("Chrome/")&&!O.includes("Chromium/")&&!O.includes("CriOS/")&&!O.includes("FxiOS/")&&!O.includes("EdgiOS/"),Y=O.includes("Chrome/")||O.includes("Chromium/")||O.includes("CriOS/")||O.includes("Edg/");return s={lineFitEpsilon:J?0.015625:0.005,carryCJKAfterClosingQuote:Y,preferPrefixWidthsForBreakableRuns:J,preferEarlySoftHyphenBreak:J},s}function TO(O){let _=O.match(/(\d+(?:\.\d+)?)\s*px/);return _?parseFloat(_[1]):16}function M0(){if(_0===null)_0=new Intl.Segmenter(void 0,{granularity:"grapheme"});return _0}function wO(O){return PO.test(O)||O.includes("️")}function G0(O){return AO.test(O)}function yO(O,_){let J=H0.get(O);if(J!==void 0)return J;let Y=U0();Y.font=O;let X=Y.measureText("\uD83D\uDE00").width;if(J=0,X>_+0.5&&typeof document<"u"&&document.body!==null){let R=document.createElement("span");R.style.font=O,R.style.display="inline-block",R.style.visibility="hidden",R.style.position="absolute",R.textContent="\uD83D\uDE00",document.body.appendChild(R);let Z=R.getBoundingClientRect().width;if(document.body.removeChild(R),X-Z>0.5)J=X-Z}return H0.set(O,J),J}function LO(O){let _=0,J=M0();for(let Y of J.segment(O))if(wO(Y.segment))_++;return _}function WO(O,_){if(_.emojiCount===void 0)_.emojiCount=LO(O);return _.emojiCount}function g(O,_,J){if(J===0)return _.width;return _.width-WO(O,_)*J}function P0(O,_,J,Y){if(_.graphemeWidths!==void 0)return _.graphemeWidths;let X=[],R=M0();for(let Z of R.segment(O)){let Q=x(Z.segment,J);X.push(g(Z.segment,Q,Y))}return _.graphemeWidths=X.length>1?X:null,_.graphemeWidths}function A0(O,_,J,Y){if(_.graphemePrefixWidths!==void 0)return _.graphemePrefixWidths;let X=[],R=M0(),Z="";for(let Q of R.segment(O)){Z+=Q.segment;let f=x(Z,J);X.push(g(Z,f,Y))}return _.graphemePrefixWidths=X.length>1?X:null,_.graphemePrefixWidths}function B0(O,_){let J=U0();J.font=O;let Y=BO(O),X=TO(O),R=_?yO(O,X):0;return{cache:Y,fontSize:X,emojiCorrection:R}}function T0(){f0.clear(),H0.clear(),_0=null}function m(O){return O==="space"||O==="preserved-space"||O==="tab"||O==="zero-width-break"||O==="soft-hyphen"}function SO(O){return O==="space"}function w0(O,_){if(_<=0)return 0;let J=O%_;if(Math.abs(J)<=0.000001)return _;return _-J}function t(O,_,J,Y){if(!Y||_===null)return O[J];return _[J]-(J>0?_[J-1]:0)}function y0(O,_,J,Y,X,R){let Z=0,Q=_;while(ZJ+Y)break;Q=f,Z++}return{fitCount:Z,fittedWidth:Q}}function L0(O,_){for(let J=0;J=O.widths.length)return null;if(Y>0)return _;let X=L0(O,J);if(X<0)return null;let R=O.chunks[X];if(R.startSegmentIndex===R.endSegmentIndex&&J===R.startSegmentIndex)return{segmentIndex:J,graphemeIndex:0};if(J=O.widths.length)return null;return{segmentIndex:R.consumedEndSegmentIndex,graphemeIndex:0}}function W0(O,_){if(O.simpleLineWalkFastPath)return IO(O,_);return J0(O,_)}function IO(O,_){let{widths:J,kinds:Y,breakableWidths:X,breakablePrefixWidths:R}=O;if(J.length===0)return 0;let Z=h(),Q=Z.lineFitEpsilon,f=0,V=0,$=!1;function u(q){let D=J[q];if(D>_&&X[q]!==null){let b=X[q],K=R[q]??null;V=0;for(let j=0;j0&&V+B>_+Q)f++,V=B;else{if(V===0)f++;V+=B}}}else V=D,f++;$=!0}for(let q=0;q_+Q){if(SO(b))continue;V=0,$=!1,u(q);continue}V=K}if(!$)return f+1;return f}function cO(O,_,J){let{widths:Y,kinds:X,breakableWidths:R,breakablePrefixWidths:Z}=O;if(Y.length===0)return 0;let Q=h(),f=Q.lineFitEpsilon,V=0,$=0,u=!1,q=0,D=0,b=0,K=0,j=-1,B=0;function k(){j=-1,B=0}function y(H=b,z=K,W=$){V++,J?.({startSegmentIndex:q,startGraphemeIndex:D,endSegmentIndex:H,endGraphemeIndex:z,width:W}),$=0,u=!1,k()}function A(H,z){u=!0,q=H,D=0,b=H+1,K=0,$=z}function T(H,z,W){u=!0,q=H,D=z,b=H,K=z+1,$=W}function L(H,z){if(!u){A(H,z);return}$+=z,b=H+1,K=0}function C(H,z){if(!m(X[H]))return;j=H+1,B=$-z}function F(H){P(H,0)}function P(H,z){let W=R[H],c=Z[H]??null;for(let I=z;I_+f)y(),T(H,I,o);else $+=o,b=H,K=I+1}if(u&&b===H&&K===W.length)b=H+1,K=0}let E=0;while(E_&&R[E]!==null)F(E);else A(E,H);C(E,H),E++;continue}if($+H>_+f){if(m(z)){L(E,H),y(E+1,0,$-H),E++;continue}if(j>=0){y(j,0,B);continue}if(H>_&&R[E]!==null){y(),F(E),E++;continue}y();continue}L(E,H),C(E,H),E++}if(u)y();return V}function J0(O,_,J){if(O.simpleLineWalkFastPath)return cO(O,_,J);let{widths:Y,lineEndFitAdvances:X,lineEndPaintAdvances:R,kinds:Z,breakableWidths:Q,breakablePrefixWidths:f,discretionaryHyphenWidth:V,tabStopAdvance:$,chunks:u}=O;if(Y.length===0||u.length===0)return 0;let q=h(),D=q.lineFitEpsilon,b=0,K=0,j=!1,B=0,k=0,y=0,A=0,T=-1,L=0,C=0,F=null;function P(){T=-1,L=0,C=0,F=null}function E(N=y,M=A,v=K){b++,J?.({startSegmentIndex:B,startGraphemeIndex:k,endSegmentIndex:N,endGraphemeIndex:M,width:v}),K=0,j=!1,P()}function H(N,M){j=!0,B=N,k=0,y=N+1,A=0,K=M}function z(N,M,v){j=!0,B=N,k=M,y=N,A=M+1,K=v}function W(N,M){if(!j){H(N,M);return}K+=M,y=N+1,A=0}function c(N,M){if(!m(Z[N]))return;let v=Z[N]==="tab"?0:X[N],w=Z[N]==="tab"?M:R[N];T=N+1,L=K-M+v,C=K-M+w,F=Z[N]}function I(N){o(N,0)}function o(N,M){let v=Q[N],w=f[N]??null;for(let G=M;G_+D)E(),z(N,G,l);else K+=l,y=N,A=G+1}if(j&&y===N&&A===v.length)y=N+1,A=0}function S(N){if(F!=="soft-hyphen")return!1;let M=Q[N];if(M===null)return!1;let v=q.preferPrefixWidthsForBreakableRuns?f[N]??M:M,w=v!==M,{fitCount:G,fittedWidth:l}=y0(v,K,_,D,V,w);if(G===0)return!1;if(K=l,y=N,A=G,P(),G===M.length)return y=N+1,A=0,!0;return E(N,G,l+V),o(N,G),!0}function U(N){b++,J?.({startSegmentIndex:N.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:N.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),P()}for(let N=0;N_&&Q[v]!==null)I(v);else H(v,G);c(v,G),v++;continue}if(K+G>_+D){let n=K+(w==="tab"?0:X[v]),e=K+(w==="tab"?G:R[v]);if(F==="soft-hyphen"&&q.preferEarlySoftHyphenBreak&&L<=_+D){E(T,0,C);continue}if(F==="soft-hyphen"&&S(v)){v++;continue}if(m(w)&&n<=_+D){W(v,G),E(v+1,0,e),v++;continue}if(T>=0&&L<=_+D){E(T,0,C);continue}if(G>_&&Q[v]!==null){E(),I(v),v++;continue}E();continue}W(v,G),c(v,G),v++}if(j){let w=T===M.consumedEndSegmentIndex?C:K;E(M.consumedEndSegmentIndex,0,w)}}return b}function S0(O,_,J){let Y=kO(O,_);if(Y===null)return null;if(O.simpleLineWalkFastPath)return oO(O,Y,J);let X=L0(O,Y.segmentIndex);if(X<0)return null;let R=O.chunks[X];if(R.startSegmentIndex===R.endSegmentIndex)return{startSegmentIndex:R.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:R.consumedEndSegmentIndex,endGraphemeIndex:0,width:0};let{widths:Z,lineEndFitAdvances:Q,lineEndPaintAdvances:f,kinds:V,breakableWidths:$,breakablePrefixWidths:u,discretionaryHyphenWidth:q,tabStopAdvance:D}=O,b=h(),K=b.lineFitEpsilon,j=0,B=!1,k=Y.segmentIndex,y=Y.graphemeIndex,A=k,T=y,L=-1,C=0,F=0,P=null;function E(){L=-1,C=0,F=0,P=null}function H(U=A,N=T,M=j){if(!B)return null;return{startSegmentIndex:k,startGraphemeIndex:y,endSegmentIndex:U,endGraphemeIndex:N,width:M}}function z(U,N){B=!0,A=U+1,T=0,j=N}function W(U,N,M){B=!0,A=U,T=N+1,j=M}function c(U,N){if(!B){z(U,N);return}j+=N,A=U+1,T=0}function I(U,N){if(!m(V[U]))return;let M=V[U]==="tab"?0:Q[U],v=V[U]==="tab"?N:f[U];L=U+1,C=j-N+M,F=j-N+v,P=V[U]}function o(U,N){let M=$[U],v=u[U]??null;for(let w=N;wJ+K)return H();j+=G,A=U,T=w+1}if(B&&A===U&&T===M.length)A=U+1,T=0;return null}function S(U){if(P!=="soft-hyphen"||L<0)return null;let N=$[U]??null;if(N!==null){let M=b.preferPrefixWidthsForBreakableRuns?u[U]??N:N,v=M!==N,{fitCount:w,fittedWidth:G}=y0(M,j,J,K,q,v);if(w===N.length)return j=G,A=U+1,T=0,E(),null;if(w>0)return H(U,w,G+q)}if(C<=J+K)return H(L,0,F);return null}for(let U=Y.segmentIndex;U0){let G=o(U,M);if(G!==null)return G}else if(v>J&&$[U]!==null){let G=o(U,0);if(G!==null)return G}else z(U,v);I(U,v);continue}if(j+v>J+K){let G=j+(N==="tab"?0:Q[U]),l=j+(N==="tab"?v:f[U]);if(P==="soft-hyphen"&&b.preferEarlySoftHyphenBreak&&C<=J+K)return H(L,0,F);let n=S(U);if(n!==null)return n;if(m(N)&&G<=J+K)return c(U,v),H(U+1,0,l);if(L>=0&&C<=J+K)return H(L,0,F);if(v>J&&$[U]!==null){let e=H();if(e!==null)return e;let v0=o(U,0);if(v0!==null)return v0}return H()}c(U,v),I(U,v)}if(L===R.consumedEndSegmentIndex&&T===0)return H(R.consumedEndSegmentIndex,0,F);return H(R.consumedEndSegmentIndex,0,j)}function oO(O,_,J){let{widths:Y,kinds:X,breakableWidths:R,breakablePrefixWidths:Z}=O,Q=h(),f=Q.lineFitEpsilon,V=0,$=!1,u=_.segmentIndex,q=_.graphemeIndex,D=u,b=q,K=-1,j=0;function B(C=D,F=b,P=V){if(!$)return null;return{startSegmentIndex:u,startGraphemeIndex:q,endSegmentIndex:C,endGraphemeIndex:F,width:P}}function k(C,F){$=!0,D=C+1,b=0,V=F}function y(C,F,P){$=!0,D=C,b=F+1,V=P}function A(C,F){if(!$){k(C,F);return}V+=F,D=C+1,b=0}function T(C,F){if(!m(X[C]))return;K=C+1,j=V-F}function L(C,F){let P=R[C],E=Z[C]??null;for(let H=F;HJ+f)return B();V+=z,D=C,b=H+1}if($&&D===C&&b===P.length)D=C+1,b=0;return null}for(let C=_.segmentIndex;C0){let z=L(C,E);if(z!==null)return z}else if(F>J&&R[C]!==null){let z=L(C,0);if(z!==null)return z}else k(C,F);T(C,F);continue}if(V+F>J+f){if(m(P))return A(C,F),B(C+1,0,V-F);if(K>=0)return B(K,0,j);if(F>J&&R[C]!==null){let z=B();if(z!==null)return z;let W=L(C,0);if(W!==null)return W}return B()}A(C,F),T(C,F)}return B()}var R0=null,C0=new WeakMap;function I0(){if(R0===null)R0=new Intl.Segmenter(void 0,{granularity:"grapheme"});return R0}function lO(O){if(O)return{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableWidths:[],breakablePrefixWidths:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]};return{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableWidths:[],breakablePrefixWidths:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function c0(O,_,J){let Y=I0(),X=h(),{cache:R,emojiCorrection:Z}=B0(_,G0(O.normalized)),Q=g("-",x("-",R),Z),V=g(" ",x(" ",R),Z)*8;if(O.len===0)return lO(J);let $=[],u=[],q=[],D=[],b=O.chunks.length<=1,K=J?[]:null,j=[],B=[],k=J?[]:null,y=Array.from({length:O.len}),A=Array.from({length:O.len});function T(F,P,E,H,z,W,c,I){if(z!=="text"&&z!=="space"&&z!=="zero-width-break")b=!1;if($.push(P),u.push(E),q.push(H),D.push(z),K?.push(W),j.push(c),B.push(I),k!==null)k.push(F)}for(let F=0;F0){let N=x(S,R),M=g(S,N,Z);T(S,M,M,M,"text",z+U,null,null)}A[F]=$.length;continue}let c=g(P,W,Z),I=H==="space"||H==="preserved-space"||H==="zero-width-break"?0:c,o=H==="space"||H==="zero-width-break"?0:c;if(E&&P.length>1){let S=P0(P,W,R,Z),U=X.preferPrefixWidthsForBreakableRuns?A0(P,W,R,Z):null;T(P,c,I,o,H,z,S,U)}else T(P,c,I,o,H,z,null,null);A[F]=$.length}let L=hO(O.chunks,y,A),C=K===null?null:u0(O.normalized,K);if(k!==null)return{widths:$,lineEndFitAdvances:u,lineEndPaintAdvances:q,kinds:D,simpleLineWalkFastPath:b,segLevels:C,breakableWidths:j,breakablePrefixWidths:B,discretionaryHyphenWidth:Q,tabStopAdvance:V,chunks:L,segments:k};return{widths:$,lineEndFitAdvances:u,lineEndPaintAdvances:q,kinds:D,simpleLineWalkFastPath:b,segLevels:C,breakableWidths:j,breakablePrefixWidths:B,discretionaryHyphenWidth:Q,tabStopAdvance:V,chunks:L}}function hO(O,_,J){let Y=[];for(let X=0;X0&&O[Y-1]==="soft-hyphen"&&!(_===Y&&J>0)}function xO(O,_,J,Y,X,R,Z){let Q="",f=pO(_,Y,X,R);for(let V=Y;V0)Q+=k0(V,O,J).slice(X).join("");else Q+=O[V]}if(Z>0){if(f)Q+="-";Q+=k0(R,O,J).slice(Y===R?X:0,Z).join("")}else if(f)Q+="-";return Q}function h0(O,_,J,Y,X,R,Z){return{text:xO(O.segments,O.kinds,_,Y,X,R,Z),width:J,start:{segmentIndex:Y,graphemeIndex:X},end:{segmentIndex:R,graphemeIndex:Z}}}function gO(O,_,J){return h0(O,_,J.width,J.startSegmentIndex,J.startGraphemeIndex,J.endSegmentIndex,J.endGraphemeIndex)}function p0(O){return{width:O.width,start:{segmentIndex:O.startSegmentIndex,graphemeIndex:O.startGraphemeIndex},end:{segmentIndex:O.endSegmentIndex,graphemeIndex:O.endGraphemeIndex}}}function mO(O,_,J){let Y=S0(O,_,J);if(Y===null)return null;return p0(Y)}function rO(O,_){return h0(O,l0(O),_.width,_.start.segmentIndex,_.start.graphemeIndex,_.end.segmentIndex,_.end.graphemeIndex)}function $1(O,_,J){if(O.widths.length===0)return 0;return J0(F0(O),_,(Y)=>{J(p0(Y))})}function Q1(O,_,J){let Y=mO(O,_,J);if(Y===null)return null;return rO(O,Y)}function q1(O,_,J){let Y=[];if(O.widths.length===0)return{lineCount:0,height:0,lines:Y};let X=l0(O),R=J0(F0(O),_,(Z)=>{Y.push(gO(O,X,Z))});return{lineCount:R,height:R*J,lines:Y}}function aO(){z0(),R0=null,C0=new WeakMap,T0()}function D1(O){j0(O),aO()}export{$1 as walkLineRanges,D1 as setLocale,V1 as profilePrepare,Y1 as prepareWithSegments,X1 as prepare,q1 as layoutWithLines,Q1 as layoutNextLine,Z1 as layout,aO as clearCache}; diff --git a/biologix-strategy-board/flywheel-map.css b/biologix-strategy-board/flywheel-map.css new file mode 100644 index 0000000..950e317 --- /dev/null +++ b/biologix-strategy-board/flywheel-map.css @@ -0,0 +1,1329 @@ +:root { + color-scheme: light; + --paper: #f7f5f1; + --paper-raised: #fffefa; + --ink: #141312; + --ink-2: #54504a; + --ink-3: #817a70; + --line: #dcd8d0; + --line-strong: #aaa399; + --forest: #1f3d2b; + --forest-soft: #e7eee8; + --slate: #3a4a6b; + --slate-soft: #e7ebf2; + --brown: #704722; + --brown-soft: #f0e7dd; + --signal: #5f6f91; + --shadow: 0 8px 22px rgba(26, 24, 21, 0.07); + --header-height: 70px; +} + +* { + box-sizing: border-box; +} + +html, +body { + width: 100%; + min-height: 100%; + margin: 0; +} + +body { + overflow: hidden; + color: var(--ink); + background: #ece9e3; + font-family: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + -webkit-font-smoothing: antialiased; +} + +button, +output { + font: inherit; +} + +button { + color: inherit; +} + +button:focus-visible, +[tabindex]:focus-visible, +[contenteditable='true']:focus-visible { + outline: 3px solid rgba(58, 74, 107, 0.32); + outline-offset: 3px; +} + +.app-header { + position: relative; + z-index: 30; + display: grid; + grid-template-columns: minmax(470px, 1.1fr) minmax(350px, 0.9fr) auto; + gap: 28px; + align-items: center; + height: var(--header-height); + padding: 0 20px; + border-bottom: 1px solid #c8c2b8; + background: rgba(250, 248, 244, 0.96); + backdrop-filter: blur(14px); +} + +.title-lockup { + min-width: 0; +} + +.eyebrow, +.owner, +.node-kicker, +.lane-label, +.node-output, +.focus-bar > span, +.signal-inputs span, +.outline-loop > span, +.mobile-operating-layer > span { + font-family: 'DM Mono', ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 9px; + font-weight: 500; + letter-spacing: 0.09em; + line-height: 1.35; + text-transform: uppercase; +} + +.eyebrow { + display: block; + overflow: hidden; + margin-bottom: 5px; + color: var(--ink-3); + text-overflow: ellipsis; + white-space: nowrap; +} + +.app-header h1 { + overflow: hidden; + margin: 0; + font-size: 15px; + font-weight: 700; + letter-spacing: -0.01em; + line-height: 1.2; + text-overflow: ellipsis; + white-space: nowrap; +} + +.operating-thesis { + min-width: 0; + margin: 0; + color: var(--ink-2); + font-size: 12px; + line-height: 1.45; + text-align: center; +} + +.present-button { + display: inline-flex; + gap: 8px; + align-items: center; + justify-content: center; + min-width: 98px; + height: 36px; + padding: 0 14px; + border: 1px solid var(--forest); + border-radius: 6px; + color: #fff; + background: var(--forest); + cursor: pointer; + font-size: 11px; + font-weight: 700; +} + +.header-actions { + display: flex; + gap: 8px; + align-items: center; +} + +.detail-link { + display: inline-flex; + gap: 7px; + align-items: center; + justify-content: center; + height: 36px; + padding: 0 12px; + border: 1px solid var(--line-strong); + border-radius: 6px; + color: var(--ink-2); + background: #fffefa; + font-size: 10px; + font-weight: 700; + text-decoration: none; + white-space: nowrap; +} + +.detail-link:hover { + color: var(--forest); + border-color: var(--forest); +} + +.detail-link span { + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 11px; +} + +.present-button:hover { + background: #162f21; +} + +.present-icon, +.fullscreen-icon { + position: relative; + width: 14px; + height: 12px; + border: 1.5px solid currentColor; +} + +.present-icon::after { + position: absolute; + right: 3px; + bottom: -5px; + left: 3px; + height: 1.5px; + background: currentColor; + content: ''; +} + +.workspace { + height: calc(100dvh - var(--header-height)); +} + +.stage { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + background: + linear-gradient(rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0.35)), + #ddd9d2; + user-select: none; +} + +.board { + position: absolute; + inset: 0; + overflow: hidden; + cursor: grab; + touch-action: none; +} + +.board.is-panning { + cursor: grabbing; +} + +.canvas { + position: absolute; + top: 0; + left: 0; + width: 2060px; + height: 1260px; + overflow: hidden; + border: 1px solid #c4beb4; + background-color: var(--paper); + background-image: radial-gradient(circle, rgba(84, 80, 74, 0.19) 1px, transparent 1.3px); + background-position: 0 0; + background-size: 22px 22px; + box-shadow: 0 28px 70px rgba(27, 24, 20, 0.16); + transform-origin: 0 0; + will-change: transform; +} + +.focus-bar, +.zoom-bar { + position: absolute; + z-index: 40; + display: flex; + gap: 4px; + align-items: center; + height: 38px; + padding: 4px; + border: 1px solid rgba(93, 87, 79, 0.28); + border-radius: 8px; + background: rgba(255, 254, 250, 0.94); + box-shadow: 0 8px 24px rgba(20, 19, 18, 0.11); + backdrop-filter: blur(12px); +} + +.focus-bar { + top: 12px; + left: 12px; +} + +.zoom-bar { + top: 12px; + right: 12px; +} + +.focus-bar > span { + padding: 0 8px; + color: var(--ink-3); +} + +.focus-button, +.zoom-bar button, +.zoom-bar output { + display: grid; + min-width: 32px; + height: 28px; + place-items: center; + padding: 0 9px; + border: 0; + border-radius: 5px; + background: transparent; + cursor: pointer; + font-size: 10px; + font-weight: 700; +} + +.focus-button:hover, +.zoom-bar button:hover { + background: #eeeae3; +} + +.focus-button.active { + color: #fff; + background: var(--forest); +} + +.zoom-bar output { + min-width: 48px; + color: var(--ink-2); + cursor: default; + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 9px; +} + +.zoom-bar #fit-board { + min-width: 42px; +} + +.fullscreen-icon { + width: 13px; + height: 13px; + border: 0; +} + +.fullscreen-icon::before, +.fullscreen-icon::after { + position: absolute; + inset: 0; + content: ''; +} + +.fullscreen-icon::before { + border-top: 1.5px solid currentColor; + border-left: 1.5px solid currentColor; + clip-path: polygon(0 0, 45% 0, 45% 15%, 15% 15%, 15% 45%, 0 45%); +} + +.fullscreen-icon::after { + border-right: 1.5px solid currentColor; + border-bottom: 1.5px solid currentColor; + clip-path: polygon(55% 85%, 85% 85%, 85% 55%, 100% 55%, 100% 100%, 55% 100%); +} + +.control-plane { + position: absolute; + top: 24px; + left: 40px; + z-index: 3; + display: grid; + grid-template-columns: minmax(0, 1fr) auto; + gap: 30px; + align-items: center; + width: 1980px; + height: 72px; + padding: 13px 20px; + border: 1px solid var(--forest); + border-radius: 7px; + color: #fff; + background: var(--forest); + box-shadow: var(--shadow); +} + +.node-kicker { + display: block; + margin-bottom: 5px; + color: rgba(255, 255, 255, 0.58); +} + +.control-plane strong { + font-size: 13px; + line-height: 1.2; +} + +.north-stars { + display: flex; + height: 40px; + border: 1px solid rgba(255, 255, 255, 0.22); +} + +.north-stars span { + display: flex; + gap: 7px; + align-items: center; + padding: 0 12px; + border-right: 1px solid rgba(255, 255, 255, 0.18); + font-size: 9px; + font-weight: 600; + white-space: nowrap; +} + +.north-stars span:last-child { + border-right: 0; +} + +.north-stars b { + color: rgba(255, 255, 255, 0.5); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 8px; +} + +.lane-label { + position: absolute; + z-index: 4; + display: flex; + gap: 7px; + align-items: center; + color: var(--ink-2); +} + +.lane-label span { + display: grid; + width: 28px; + height: 18px; + place-items: center; + border: 1px solid currentColor; + border-radius: 3px; + font-size: 8px; +} + +.demand-label { + top: 120px; + left: 80px; +} + +.customer-label { + top: 120px; + left: 1260px; + color: var(--slate); +} + +.affiliate-label { + top: 590px; + left: 1090px; + color: var(--forest); +} + +.community-label { + top: 845px; + left: 80px; + color: var(--brown); +} + +.intelligence-label { + top: 1030px; + left: 600px; + color: var(--slate); +} + +.node { + transition: + opacity 180ms ease, + filter 180ms ease, + transform 180ms ease, + box-shadow 180ms ease; +} + +article.node { + position: absolute; + z-index: 3; + width: 220px; + min-height: 100px; + padding: 19px 20px 17px; + border: 1px solid var(--line-strong); + border-radius: 8px; + background: rgba(255, 254, 250, 0.98); + box-shadow: var(--shadow); +} + +article.node:hover, +article.node:focus-visible { + z-index: 6; + box-shadow: 0 14px 34px rgba(26, 24, 21, 0.15); + transform: translateY(-2px); +} + +.node .owner { + display: block; + margin-bottom: 8px; + color: var(--ink-3); + font-size: 9.5px; +} + +.node h2 { + margin: 0; + font-size: 19px; + font-weight: 700; + letter-spacing: -0.02em; + line-height: 1.15; +} + +.node p { + overflow: hidden; + margin: 7px 0 0; + color: var(--ink-2); + font-size: 12.5px; + line-height: 1.42; +} + +.node-output { + position: absolute; + right: 18px; + bottom: 9px; + left: 18px; + padding-top: 8px; + color: var(--ink-3); + border-top: 1px solid var(--line); + font-size: 7.5px; +} + +.node-input { + border-top: 4px solid var(--ink); +} + +.node-core, +.node-router, +.node-affiliate { + border-color: rgba(31, 61, 43, 0.46); +} + +.node-core, +.node-affiliate { + border-top: 4px solid var(--forest); +} + +.node-customer { + border-color: rgba(58, 74, 107, 0.48); + border-top: 4px solid var(--slate); +} + +.node-community { + border-color: rgba(112, 71, 34, 0.45); + border-top: 4px solid var(--brown); +} + +.dark-node { + color: #fff; +} + +.dark-node.node-affiliate { + background: var(--forest); +} + +.dark-node.node-customer { + background: var(--slate); +} + +.dark-node .owner, +.dark-node p, +.dark-node .node-output { + color: rgba(255, 255, 255, 0.68); +} + +.dark-node .node-output { + border-color: rgba(255, 255, 255, 0.2); +} + +.compact-node { + min-height: 96px; +} + +#node-owned-media { + top: 150px; + left: 80px; + width: 300px; + height: 165px; +} + +#node-podcast { + top: 150px; + left: 430px; + width: 300px; + height: 165px; + border-top-color: var(--brown); +} + +#node-creator-media { + top: 330px; + left: 80px; + width: 300px; + height: 145px; +} + +#node-community-proof { + top: 510px; + left: 80px; + width: 300px; + height: 145px; +} + +#node-distribution { + top: 330px; + left: 430px; + width: 300px; + height: 160px; +} + +#node-outbound { + top: 525px; + left: 430px; + width: 300px; + height: 130px; +} + +.channel-row, +.router-options { + display: flex; + gap: 5px; + margin-top: 10px; +} + +.channel-row span, +.router-options span { + padding: 4px 6px; + border: 1px solid var(--line); + border-radius: 3px; + color: var(--ink-3); + background: rgba(255, 255, 255, 0.5); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 7px; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +#node-inbound-engine { + top: 320px; + left: 820px; + width: 360px; + height: 220px; + padding: 23px 24px; + border: 2px solid var(--forest); + background: #fff; + box-shadow: 0 13px 30px rgba(31, 61, 43, 0.13); +} + +#node-inbound-engine::before { + position: absolute; + top: 50%; + left: -9px; + width: 16px; + height: 16px; + border-bottom: 2px solid var(--forest); + border-left: 2px solid var(--forest); + background: #fff; + content: ''; + transform: translateY(-50%) rotate(45deg); +} + +.router-options { + flex-wrap: wrap; +} + +.router-options span { + color: var(--forest); + border-color: rgba(31, 61, 43, 0.35); + background: var(--forest-soft); +} + +#node-answer { + top: 150px; + left: 1260px; + width: 230px; + height: 150px; +} + +#node-tracked-page { + top: 150px; + left: 1540px; + width: 220px; + height: 150px; +} + +#node-commerce { + top: 150px; + left: 1810px; + width: 210px; + height: 150px; +} + +#node-retention { + top: 360px; + left: 1740px; + width: 280px; + height: 145px; +} + +#node-patricia { + top: 630px; + left: 800px; + width: 235px; + height: 145px; +} + +#node-close { + top: 630px; + left: 1090px; + width: 235px; + height: 145px; +} + +#node-activate { + top: 630px; + left: 1380px; + width: 250px; + height: 145px; +} + +#node-managed { + top: 630px; + left: 1685px; + width: 335px; + height: 145px; +} + +#node-selected { + top: 875px; + left: 80px; + width: 270px; + height: 125px; +} + +#node-experience { + top: 875px; + left: 410px; + width: 300px; + height: 135px; +} + +#node-content-bank { + top: 875px; + left: 770px; + width: 300px; + height: 135px; +} + +.intelligence-plane { + position: absolute; + top: 1060px; + left: 600px; + z-index: 3; + display: grid; + grid-template-columns: 1.05fr 28px 1fr 28px 1.42fr; + gap: 0; + align-items: stretch; + width: 1420px; + height: 150px; + padding: 40px 12px 12px; + border: 1px solid var(--slate); + border-radius: 8px; + color: #fff; + background: #26334f; + box-shadow: var(--shadow); +} + +.signal-inputs { + position: absolute; + top: 0; + right: 0; + left: 0; + display: grid; + grid-template-columns: repeat(4, 1fr); + height: 30px; + border-bottom: 1px solid rgba(255, 255, 255, 0.16); +} + +.signal-inputs span { + display: grid; + place-items: center; + color: rgba(255, 255, 255, 0.54); + border-right: 1px solid rgba(255, 255, 255, 0.12); + font-size: 7px; +} + +.signal-inputs span:last-child { + border-right: 0; +} + +.intelligence-step { + min-width: 0; + padding: 9px 12px; + border: 1px solid rgba(255, 255, 255, 0.16); + border-radius: 5px; + background: rgba(255, 255, 255, 0.05); +} + +.intelligence-step .owner { + color: rgba(255, 255, 255, 0.5); +} + +.intelligence-step h2 { + margin-top: 7px; + color: #fff; + font-size: 12px; + line-height: 1.2; +} + +.intelligence-arrow { + display: grid; + place-items: center; + color: rgba(255, 255, 255, 0.42); + font-family: 'DM Mono', ui-monospace, monospace; +} + +.allocation-step { + background: rgba(255, 255, 255, 0.1); +} + +.allocation-step > div { + display: flex; + flex-wrap: wrap; + gap: 4px; + margin-top: 7px; +} + +.allocation-step > div span { + padding: 3px 5px; + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 3px; + color: rgba(255, 255, 255, 0.68); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 6.5px; + letter-spacing: 0.02em; + text-transform: uppercase; +} + +.connectors { + position: absolute; + inset: 0; + z-index: 1; + width: 2060px; + height: 1260px; + overflow: visible; + pointer-events: none; +} + +.edge { + transition: opacity 180ms ease; +} + +.edge path { + fill: none; + stroke-linecap: round; + stroke-linejoin: round; + stroke-width: 2.1px; +} + +.edge text { + fill: var(--ink-2); + paint-order: stroke; + stroke: var(--paper); + stroke-linejoin: round; + stroke-width: 7px; + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 8.5px; + letter-spacing: 0.02em; +} + +.edge-neutral path { + stroke: #777168; + marker-end: url(#arrow-gray); +} + +.edge-green path { + stroke: var(--forest); + marker-end: url(#arrow-green); +} + +.edge-blue path { + stroke: var(--slate); + marker-end: url(#arrow-blue); +} + +.edge-brown path { + stroke: var(--brown); + stroke-dasharray: 7 5; + marker-end: url(#arrow-brown); +} + +.edge-signal path { + stroke: var(--signal); + stroke-dasharray: 2 6; + stroke-width: 1.8px; + marker-end: url(#arrow-blue); +} + +.edge path.fan-branch, +.edge path.fan-bus, +.edge path.bus-bridge { + marker-end: none; +} + +.edge path.fan-output { + stroke-width: 2.7px; +} + +.edge path.primary-trunk { + stroke-width: 3px; +} + +.fan-intake .branch-outbound { + stroke: var(--forest); +} + +.fan-feedback .branch-community { + stroke: var(--brown); + stroke-dasharray: 7 5; +} + +.edge path.bus-bridge { + stroke: var(--paper); + stroke-dasharray: none; + stroke-linecap: butt; + stroke-width: 8px; +} + +.edge path.signal-bridge { + stroke: var(--paper); + stroke-dasharray: none; + stroke-linecap: butt; + stroke-width: 7px; + marker-end: none; +} + +.bus-port, +.bus-junction { + fill: var(--paper-raised); + stroke-width: 2px; +} + +.edge-neutral .bus-port, +.edge-neutral .bus-junction { + stroke: #777168; +} + +.edge-green .bus-port, +.edge-green .bus-junction, +.bus-port-green { + stroke: var(--forest); +} + +.edge-blue .bus-port, +.edge-blue .bus-junction { + stroke: var(--slate); +} + +.edge-brown .bus-port, +.edge-brown .bus-junction { + stroke: var(--brown); +} + +.primary-edge path { + stroke-width: 2.7px; +} + +.primary-loop path { + stroke-width: 3.2px; +} + +.return-edge path { + stroke-width: 2.4px; +} + +#arrow-green path { + fill: var(--forest); +} + +#arrow-blue path { + fill: var(--slate); +} + +#arrow-brown path { + fill: var(--brown); +} + +#arrow-gray path { + fill: #777168; +} + +.legend { + position: absolute; + bottom: 21px; + left: 40px; + z-index: 5; + display: flex; + gap: 18px; + align-items: center; + height: 30px; + padding: 0 10px; + border: 1px solid var(--line); + border-radius: 5px; + background: rgba(255, 254, 250, 0.86); +} + +.legend > span { + display: flex; + gap: 6px; + align-items: center; + color: var(--ink-2); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 7px; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +.legend-line { + display: inline-block; + width: 22px; + height: 0; + border-top: 2px solid; +} + +.affiliate-line { + color: var(--forest); +} + +.customer-line { + color: var(--slate); +} + +.community-line { + color: var(--brown); + border-top-style: dashed; +} + +.signal-line { + color: var(--signal); + border-top-style: dotted; +} + +.canvas-note { + position: absolute; + right: 30px; + bottom: 25px; + z-index: 4; + margin: 0; + color: var(--ink-3); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 7.5px; + letter-spacing: 0.03em; + text-transform: uppercase; +} + +.pan-hint { + position: absolute; + bottom: 12px; + left: 50%; + z-index: 40; + padding: 6px 9px; + border: 1px solid rgba(93, 87, 79, 0.22); + border-radius: 5px; + color: var(--ink-2); + background: rgba(255, 254, 250, 0.9); + box-shadow: 0 4px 16px rgba(20, 19, 18, 0.08); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 8px; + transform: translateX(-50%); + transition: opacity 240ms ease; + pointer-events: none; +} + +.pan-hint.hidden { + opacity: 0; +} + +.canvas[class*='focus-'] [data-groups] { + opacity: 0.12; + filter: saturate(0.25); +} + +.canvas.focus-affiliate [data-groups~='affiliate'], +.canvas.focus-customer [data-groups~='customer'], +.canvas.focus-community [data-groups~='community'], +.canvas.focus-intelligence [data-groups~='intelligence'] { + opacity: 1; + filter: none; +} + +.canvas.is-tracing .node:not(.is-related), +.canvas.is-tracing .edge:not(.is-related) { + opacity: 0.16; +} + +.canvas.is-tracing .node.is-related { + filter: saturate(1.12); +} + +.canvas.is-tracing .edge.is-related path { + stroke-width: 4px; +} + +.mobile-outline { + display: none; +} + +.presentation .app-header { + position: fixed; + inset: 0 0 auto; + height: 54px; + border: 0; + background: transparent; + backdrop-filter: none; + pointer-events: none; +} + +.presentation .title-lockup, +.presentation .operating-thesis { + visibility: hidden; +} + +.presentation .present-button { + position: fixed; + top: 10px; + right: 10px; + opacity: 0.14; + pointer-events: auto; +} + +.presentation .detail-link { + display: none; +} + +.presentation .present-button:hover, +.presentation .present-button:focus-visible { + opacity: 1; +} + +.presentation .workspace { + height: 100dvh; +} + +.presentation .focus-bar, +.presentation .zoom-bar, +.presentation .pan-hint, +.presentation .legend, +.presentation .canvas-note { + opacity: 0; + pointer-events: none; +} + +@media (max-width: 1080px) { + .app-header { + grid-template-columns: minmax(260px, 0.8fr) minmax(220px, 1fr) auto; + gap: 16px; + } + + .operating-thesis { + font-size: 10.5px; + } + + .focus-bar { + max-width: calc(100vw - 260px); + overflow-x: auto; + } +} + +@media (max-width: 720px) { + body { + overflow: auto; + background: var(--paper); + } + + .app-header, + .stage { + display: none; + } + + .workspace { + height: auto; + } + + .mobile-outline { + display: block; + min-height: 100dvh; + padding: 28px 18px 44px; + } + + .mobile-outline-top { + display: flex; + gap: 16px; + align-items: flex-start; + justify-content: space-between; + } + + .mobile-detail-link { + flex: 0 0 auto; + color: var(--forest); + font-family: 'DM Mono', ui-monospace, monospace; + font-size: 8px; + font-weight: 500; + letter-spacing: 0.05em; + text-decoration: none; + text-transform: uppercase; + } + + .mobile-outline > h2 { + max-width: 13ch; + margin: 9px 0 13px; + font-size: 38px; + letter-spacing: -0.055em; + line-height: 0.98; + } + + .mobile-thesis { + max-width: 42ch; + margin: 0 0 32px; + color: var(--ink-2); + font-size: 14px; + line-height: 1.55; + } + + .outline-loop { + padding: 21px 18px; + margin-top: 12px; + border: 1px solid var(--line-strong); + border-top-width: 5px; + border-radius: 8px; + background: var(--paper-raised); + } + + .affiliate-outline { + border-top-color: var(--forest); + } + + .customer-outline { + border-top-color: var(--slate); + } + + .community-outline { + border-top-color: var(--brown); + } + + .intelligence-outline { + color: #fff; + border-color: #26334f; + background: #26334f; + } + + .outline-loop > span { + color: var(--ink-3); + } + + .intelligence-outline > span, + .intelligence-outline p { + color: rgba(255, 255, 255, 0.62); + } + + .outline-loop h3 { + margin: 10px 0 14px; + font-size: 19px; + letter-spacing: -0.025em; + line-height: 1.2; + } + + .outline-loop p { + margin: 15px 0 0; + color: var(--ink-2); + font-size: 12px; + line-height: 1.5; + } + + .intelligence-outline p { + color: rgba(255, 255, 255, 0.62); + } + + .outline-flow { + display: flex; + flex-direction: column; + align-items: stretch; + } + + .outline-flow b { + padding: 10px 11px; + border: 1px solid var(--line); + border-radius: 4px; + background: rgba(255, 255, 255, 0.45); + font-size: 11px; + } + + .intelligence-outline .outline-flow b { + border-color: rgba(255, 255, 255, 0.16); + background: rgba(255, 255, 255, 0.06); + } + + .outline-flow i { + height: 23px; + color: var(--ink-3); + font: normal 14px/23px 'DM Mono', ui-monospace, monospace; + text-align: center; + transform: rotate(90deg); + } + + .outline-flow i:last-child { + transform: none; + } + + .mobile-operating-layer { + padding: 20px; + margin-top: 18px; + color: #fff; + border-radius: 8px; + background: var(--forest); + } + + .mobile-operating-layer > span { + display: block; + margin-bottom: 8px; + color: rgba(255, 255, 255, 0.57); + } + + .mobile-operating-layer strong { + font-size: 13px; + line-height: 1.5; + } +} + +@media (prefers-color-scheme: dark) and (min-width: 721px) { + body { + background: #111310; + } + + .app-header { + border-bottom-color: #373a35; + color: #f5f3ef; + background: rgba(23, 25, 22, 0.96); + } + + .app-header .eyebrow, + .operating-thesis { + color: #aaa49a; + } + + .stage { + background: #20231f; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + } +} diff --git a/biologix-strategy-board/flywheel-map.html b/biologix-strategy-board/flywheel-map.html new file mode 100644 index 0000000..eeaaa1e --- /dev/null +++ b/biologix-strategy-board/flywheel-map.html @@ -0,0 +1,387 @@ + + + + + + + + + + + Biologix Growth Architecture + + +
+
+ Biologix / Growth architecture +

Content → creators → customers → intelligence → better content.

+
+

Every creator account becomes connected distribution: content creates DMs, the owned engine qualifies them, and each branch compounds.

+
+ + Detailed flywheel + + +
+
+ +
+
+
+ Focus + + + + + +
+ +
+ + + 100% + + +
+ +
+
+
+
+ Alex + OVO operating layer + Strategy · media · sales · creator ops · lifecycle · community · RevOps · team +
+
+ 01 Contribution + 02 Active affiliates + 03 Daily output + 04 Repeat rate +
+
+ +
01 Demand creation
+
02A Customer revenue
+
02B Affiliate revenue
+
03 Community loop
+
04 Intelligence control plane
+ +
+ Jaci + Kennedy / Media +

Owned media

+

Weekly shows and distinct personalities create trust, search demand, and source material.

+
Output · attention + DMs
+
+ +
+ Miami house / Podcast studio +

House podcast engine

+

Founder, creator, and guest conversations become full episodes and a deep short-form clip bank.

+
Output · episodes + clips
+
+ +
+ Managed affiliates / Patricia +

Creator media

+

Daily creator posts use approved briefs, authentic accounts, and tracked links.

+
Output · traffic + applications
+
+ +
+ Community / OVO +

Visible community proof

+

Real belonging, creator wins, and referrals make the opportunity credible.

+
Output · status + inbound
+
+ +
+ Content OS / OVO +

Daily distribution

+

Every asset carries a tracked bio link or DM CTA with creator and content source attached.

+
YouTubeTikTokInstagram
+
+ +
+ Growth Ops +

Outbound recruiting

+

Targeted DM + email sequences create qualified affiliate conversations.

+
+ +
+ OVO / $80K Meta-approved app +

DM + email conversion engine

+

Connected creator accounts capture inbound conversations, send permitted auto-DMs and approved replies, qualify the person, preserve attribution, and route the next action.

+
Customer · answer + pageAffiliate · Patricia + callHuman · escalate
+
+ +
+ Approved reply library +

Answer + qualify

+

Resolve basic questions, retain source context, and escalate anything sensitive or uncertain.

+
+ +
+ Attributed customer path +

Tracked page

+

Send the right source-tagged education or product page after the question is answered.

+
+ +
+ Braden / Commerce core +

Order

+

Product · inventory · transaction · chosen 3PL.

+
+ +
+ Lifecycle + CX +

Repeat + refer

+

Post-purchase education, replenishment, win-back, and referral.

+
Output · LTV + proof
+
+ +
+ Patricia / Pipeline owner +

Qualify + book

+

Own the relationship from first reply through a qualified call.

+
+ +
+ Patricia / Live call +

Deck + agreement

+

Present the role, resolve objections, walk terms, and sign live.

+
+ +
+ Creator Success + Meta +

Verify + connect

+

ID, training, tracking, secure Instagram authorization, first brief, and first post.

+
+ +
+ Patricia / Managed roster +

Managed creator

+

Cadence, coaching, quality, payout, retention, and attributable sales.

+
Output · content + revenue
+
+ +
+ Community selection +

Creators + prospects

+

Invite top contributors and qualified culture carriers.

+
+ +
+ OVO / Production +

Inner Circle experiences

+

House podcast sessions, dinners, boat day, and earned destination retreats.

+
+ +
+ Media + Community +

Content bank + belonging

+

Leave with full episodes, clips, proof, retention, referrals, and thirty days of assets.

+
+ +
+
+ DMs + comments + Patricia outcomes + Content performance + Orders + cohorts +
+
+ One operating truth +

Unified CRM + attribution

+
+ +
+ Weekly evidence review +

Capture → tag → quantify

+
+ +
+ Alex allocates the next week +

Decide → test → measure

+
Content briefsCreator playbookLifecycle testsDemand priorities
+
+
+ + + +
+ Affiliate flow + Customer flow + Community loop + Market signal +
+ +

Internal working architecture · adults only · activation and campaigns remain approval-gated.

+
+
+
Drag the canvas to pan · pinch or ⌘ + scroll to zoom
+
+ +
+
+ Biologix / Growth architecture + Detailed flywheel ↗ +
+

The whole system, in four loops.

+

House podcasts and creator content drive inbound conversations. OVO’s connected-account engine answers, qualifies, attributes, and routes every opportunity.

+ +
+ 01 / Affiliate revenue +

Content → DM qualification → Patricia → connected creator → more content

+
+ Podcast + creator mediaDM/email enginePatricia + callVerify + Meta connectDaily creator content +
+

Every signed creator securely connects an eligible Instagram account through the approved app, adding another attributed inbox and daily distribution surface.

+
+ +
+ 02 / Customer revenue +

Inbound DM → approved answer → tracked page → order → repeat

+
+ DM + email intakeAnswer + qualifyTracked pageCommerceLifecycle +
+

Basic questions receive approved replies. Sensitive or uncertain conversations move to a person. Braden retains the commerce core.

+
+ +
+ 03 / Community +

Top creators → experiences → belonging + content → inbound

+
+ Creators + prospectsInner CircleContent bankStatus + retention +
+

Community creates thirty days of media, stronger retention, referrals, and visible proof for the next creator cohort.

+
+ +
+ 04 / Market intelligence +

Every outcome changes the next operating week

+
+ DM/email intent + calls + content + ordersUnified CRMWeekly evidenceAlex allocates +
+

Outputs: content briefs, creator playbook, lifecycle tests, and demand priorities for Braden’s commerce core.

+
+ +
+ Alex + OVO operating layer + Strategy · media · sales · creator ops · lifecycle · community · RevOps · team +
+
+
+ + + + diff --git a/biologix-strategy-board/flywheel-map.js b/biologix-strategy-board/flywheel-map.js new file mode 100644 index 0000000..2e174a5 --- /dev/null +++ b/biologix-strategy-board/flywheel-map.js @@ -0,0 +1,290 @@ +import { layout, prepare } from './flywheel-map-pretext.js'; + +const CANVAS_WIDTH = 2060; +const CANVAS_HEIGHT = 1260; +const MIN_SCALE = 0.42; +const MAX_SCALE = 1.8; + +const stage = document.querySelector('#stage'); +const board = document.querySelector('#board'); +const canvas = document.querySelector('#canvas'); +const zoomLevel = document.querySelector('#zoom-level'); +const panHint = document.querySelector('#pan-hint'); +const presentButton = document.querySelector('#present-button'); +const fullscreenButton = document.querySelector('#fullscreen-button'); + +const view = { + x: 0, + y: 0, + scale: 1, + pointerId: null, + pointerX: 0, + pointerY: 0, + moved: false +}; + +let fitFrame = 0; +let measureFrame = 0; + +function clamp(value, min, max) { + return Math.min(max, Math.max(min, value)); +} + +function renderView() { + canvas.style.transform = `translate3d(${view.x}px, ${view.y}px, 0) scale(${view.scale})`; + zoomLevel.value = `${Math.round(view.scale * 100)}%`; + zoomLevel.textContent = `${Math.round(view.scale * 100)}%`; +} + +function fitBoard() { + if (window.matchMedia('(max-width: 720px)').matches) return; + + cancelAnimationFrame(fitFrame); + fitFrame = requestAnimationFrame(() => { + const width = board.clientWidth; + const height = board.clientHeight; + if (!width || !height) return; + + const margin = document.body.classList.contains('presentation') ? 24 : 34; + view.scale = clamp( + Math.min((width - margin * 2) / CANVAS_WIDTH, (height - margin * 2) / CANVAS_HEIGHT), + MIN_SCALE, + 1.08 + ); + view.x = Math.round((width - CANVAS_WIDTH * view.scale) / 2); + view.y = Math.round((height - CANVAS_HEIGHT * view.scale) / 2); + renderView(); + }); +} + +function zoomAt(nextScale, clientX, clientY) { + const rect = board.getBoundingClientRect(); + const pointX = clientX - rect.left; + const pointY = clientY - rect.top; + const canvasX = (pointX - view.x) / view.scale; + const canvasY = (pointY - view.y) / view.scale; + + view.scale = clamp(nextScale, MIN_SCALE, MAX_SCALE); + view.x = pointX - canvasX * view.scale; + view.y = pointY - canvasY * view.scale; + renderView(); + hidePanHint(); +} + +function zoomFromCenter(multiplier) { + const rect = board.getBoundingClientRect(); + zoomAt(view.scale * multiplier, rect.left + rect.width / 2, rect.top + rect.height / 2); +} + +function hidePanHint() { + panHint.classList.add('hidden'); +} + +board.addEventListener('pointerdown', (event) => { + if (event.button !== 0 || event.target.closest('.node, button, [contenteditable="true"]')) return; + + view.pointerId = event.pointerId; + view.pointerX = event.clientX; + view.pointerY = event.clientY; + view.moved = false; + board.setPointerCapture(event.pointerId); + board.classList.add('is-panning'); +}); + +board.addEventListener('pointermove', (event) => { + if (event.pointerId !== view.pointerId) return; + + const deltaX = event.clientX - view.pointerX; + const deltaY = event.clientY - view.pointerY; + if (Math.abs(deltaX) + Math.abs(deltaY) > 2) view.moved = true; + view.x += deltaX; + view.y += deltaY; + view.pointerX = event.clientX; + view.pointerY = event.clientY; + renderView(); + hidePanHint(); +}); + +function endPan(event) { + if (event.pointerId !== view.pointerId) return; + if (board.hasPointerCapture(event.pointerId)) board.releasePointerCapture(event.pointerId); + view.pointerId = null; + board.classList.remove('is-panning'); +} + +board.addEventListener('pointerup', endPan); +board.addEventListener('pointercancel', endPan); + +board.addEventListener( + 'wheel', + (event) => { + event.preventDefault(); + + if (event.ctrlKey || event.metaKey) { + const factor = Math.exp(-event.deltaY * 0.006); + zoomAt(view.scale * factor, event.clientX, event.clientY); + return; + } + + view.x -= event.deltaX; + view.y -= event.deltaY; + renderView(); + hidePanHint(); + }, + { passive: false } +); + +document.querySelector('#zoom-in').addEventListener('click', () => zoomFromCenter(1.15)); +document.querySelector('#zoom-out').addEventListener('click', () => zoomFromCenter(1 / 1.15)); +document.querySelector('#fit-board').addEventListener('click', fitBoard); + +fullscreenButton.addEventListener('click', async () => { + try { + if (document.fullscreenElement) { + await document.exitFullscreen(); + } else { + await stage.requestFullscreen(); + } + } catch { + // Fullscreen can be denied by browser policy. The board remains usable. + } +}); + +document.addEventListener('fullscreenchange', () => { + fullscreenButton.setAttribute('aria-label', document.fullscreenElement ? 'Exit fullscreen' : 'Enter fullscreen'); + window.setTimeout(fitBoard, 40); +}); + +presentButton.addEventListener('click', () => { + const isPresenting = document.body.classList.toggle('presentation'); + presentButton.setAttribute('aria-pressed', String(isPresenting)); + presentButton.lastChild.nodeValue = isPresenting ? ' Exit' : ' Present'; + window.setTimeout(fitBoard, 40); +}); + +const focusButtons = [...document.querySelectorAll('.focus-button')]; +const focusClasses = ['focus-affiliate', 'focus-customer', 'focus-community', 'focus-intelligence']; + +for (const button of focusButtons) { + button.addEventListener('click', () => { + const focus = button.dataset.focus; + canvas.classList.remove(...focusClasses); + if (focus !== 'all') canvas.classList.add(`focus-${focus}`); + + for (const candidate of focusButtons) { + const active = candidate === button; + candidate.classList.toggle('active', active); + candidate.setAttribute('aria-pressed', String(active)); + } + }); +} + +const traceNodes = [...canvas.querySelectorAll('.node[data-node]')]; +const traceEdges = [...canvas.querySelectorAll('.edge[data-edge]')]; + +function startTrace(nodeId) { + if (!nodeId) return; + + const relatedIds = new Set([nodeId]); + const relatedEdges = []; + + for (const edge of traceEdges) { + const ids = edge.dataset.edge.split(/\s+/); + if (!ids.includes(nodeId)) continue; + relatedEdges.push(edge); + ids.forEach((id) => relatedIds.add(id)); + } + + canvas.classList.add('is-tracing'); + for (const edge of relatedEdges) edge.classList.add('is-related'); + for (const node of traceNodes) { + if (relatedIds.has(node.dataset.node)) node.classList.add('is-related'); + } +} + +function stopTrace() { + canvas.classList.remove('is-tracing'); + canvas.querySelectorAll('.is-related').forEach((element) => element.classList.remove('is-related')); +} + +for (const node of traceNodes) { + node.addEventListener('pointerenter', () => startTrace(node.dataset.node)); + node.addEventListener('pointerleave', stopTrace); + node.addEventListener('focus', () => startTrace(node.dataset.node)); + node.addEventListener('blur', stopTrace); +} + +const textElements = [...document.querySelectorAll('[data-pretext]')]; +const preparedText = new Map(); + +function prepareTextElement(element) { + const style = getComputedStyle(element); + preparedText.set(element, prepare(element.textContent.trim(), style.font)); +} + +function measureText() { + cancelAnimationFrame(measureFrame); + measureFrame = requestAnimationFrame(() => { + for (const element of textElements) { + const handle = preparedText.get(element); + if (!handle) continue; + + const style = getComputedStyle(element); + const lineHeight = Number.parseFloat(style.lineHeight); + const width = Math.max(20, element.clientWidth); + const result = layout(handle, width, lineHeight); + const nextHeight = Math.ceil(result.height); + const currentHeight = Number.parseFloat(element.style.height || '0'); + if (Math.abs(currentHeight - nextHeight) > 0.5) { + element.style.height = `${nextHeight}px`; + } + } + }); +} + +async function initializeTextLayout() { + await document.fonts.ready; + + for (const element of textElements) { + prepareTextElement(element); + new MutationObserver(() => { + prepareTextElement(element); + measureText(); + }).observe(element, { + characterData: true, + childList: true, + subtree: true + }); + } + + measureText(); +} + +window.addEventListener('resize', () => { + fitBoard(); + measureText(); +}); + +window.addEventListener('keydown', (event) => { + if (event.target.closest('[contenteditable="true"], input, textarea')) return; + + if (event.key === '0') { + event.preventDefault(); + fitBoard(); + } else if (event.key === '+' || event.key === '=') { + event.preventDefault(); + zoomFromCenter(1.15); + } else if (event.key === '-' || event.key === '_') { + event.preventDefault(); + zoomFromCenter(1 / 1.15); + } else if (event.key === 'Escape' && document.body.classList.contains('presentation')) { + document.body.classList.remove('presentation'); + presentButton.setAttribute('aria-pressed', 'false'); + presentButton.lastChild.nodeValue = ' Present'; + window.setTimeout(fitBoard, 40); + } +}); + +window.setTimeout(hidePanHint, 5200); +initializeTextLayout(); +fitBoard(); diff --git a/biologix-strategy-board/hypothetical-unit-economics.csv b/biologix-strategy-board/hypothetical-unit-economics.csv new file mode 100644 index 0000000..3c8fcf5 --- /dev/null +++ b/biologix-strategy-board/hypothetical-unit-economics.csv @@ -0,0 +1,4 @@ +Scenario,Monthly sales,AOV,Monthly orders,COGS %,Affiliate-attributable sales %,Affiliate payout %,Weighted affiliate cost %,Processing %,Fulfillment/packaging/shipping %,Refund/chargeback %,Payroll/software/professional %,Fixed creator/content %,Operating contribution %,Operating contribution $,Disruption reserve % of monthly sales,Disruption reserve $,Contribution after disruption reserve % of monthly sales,Contribution after disruption reserve $,Evidence class,Notes +Conservative,500000.00,200.00,2500,20.0,30.0,30.0,9.0,5.0,8.0,4.0,11.0,5.0,38.0,190000.00,15.0,75000.00,23.0,115000.00,Modeled assumption,"Pre-tax planning case; includes the current $30,000 Alex plus $20,000 OVO structure; after-reserve contribution is not available cash and excludes working-capital timing, financing, taxes, owner distributions, extraordinary legal loss, recalls, seizures, and inventory write-offs" +Single-day founder extrapolation,1606225.80,247.8743519,6480,15.0,40.0,32.5,13.0,4.5,6.0,3.0,5.9338,3.0,49.5661,796144.03,20.0,321245.16,29.5661,474898.87,Founder-reported one-day inputs plus modeled costs,"Source context: second Braden strategy call approximately 00:31:58–00:32:21; Braden said analytics were broken and missing Apple Pay. Monthly sales equals $53,540.86 times 30; orders equals 216 times 30; AOV equals $53,540.86 divided by 216; 85% is treated as product gross margin rather than fully loaded net; payroll/software/professional includes the current $30,000 Alex plus $20,000 OVO structure; processor holds and cash timing are modeled separately" +Optimized engine,3000000.00,275.00,10909.0909,14.0,45.0,30.0,13.5,4.0,5.0,2.5,4.5,2.5,54.0,1620000.00,20.0,600000.00,34.0,1020000.00,Modeled assumption,"Scale case includes the current $30,000 Alex plus $20,000 OVO structure and requires source-verified COGS, controlled creators, mature fulfillment, low loss rates, no material interruption, and adequate working capital" diff --git a/biologix-strategy-board/index.html b/biologix-strategy-board/index.html new file mode 100644 index 0000000..d59c42f --- /dev/null +++ b/biologix-strategy-board/index.html @@ -0,0 +1,232 @@ + + + + + + + + + + + Biologix Decision Board — Decision Map + + + + +
+
+
01 / Decision map
+

This is a gated leverage shift.

+

Braden may have built an extraordinary cash engine. He has not yet demonstrated an extraordinary company. The opportunity is to convert accidental demand into an operated, attributable, durable asset — and to be compensated as a principal for doing it.

+
Prepared 2026-07-22 · Founder follow-up confirmed for tomorrow · Internal · Not legal advice
+
+
+ + + +
+
+
+
01 / The test

Is this shiny-object syndrome?

+

The answer is determined by entry terms, evidence, and what Alex owns at the end — not by how exciting Braden's reported economics feel.

+
+
+
+
It would be if…
+

Alex chases the surface business from envy.

+
    +
  • Launches an undifferentiated clone before proving distribution and repeat demand.
  • +
  • Funds inventory or puts OVO banking, creators, or reputation at risk before diligence.
  • +
  • Accepts permanent responsibility without authority, cash, information rights, and meaningful upside.
  • +
  • Becomes the daily rescuer and lets OVO's highest-priority installation slip.
  • +
+
+
+
It is not because…
+

Alex can buy a funded option on a leverage shift.

+
    +
  • Biologix pays for a time-boxed source-of-truth sprint before Alex commits permanent focus.
  • +
  • Alex has privileged access, category-adjacent distribution, operating capacity, and founder chemistry.
  • +
  • The first work removes founder dependence and creates reusable systems, data, and owned audience.
  • +
  • Written go, remediate, or walk gates prevent momentum from outrunning truth.
  • +
+
+
+
+ +
+
+
02 / Economic position

Why he makes more while doing less

+

The difference is not intelligence. It is who owns the transaction, margin, customer permission, data, and compounding asset.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Comparison of OVO Talent, Inner DM, Biologix, and a durable NewCo.
OVO Talent
What it isLabor-intensive service layer coordinating talent and campaigns.
Who owns the transactionThe brand, platform, or end merchant.
Economic positionOVO captures a fraction of the value it creates.
Scaling constraintEach campaign adds management work, headcount, and coordination.
What Alex ownsRelationships and operating knowledge, but not always the product or customer transaction.
Inner DM
What it isSoftware with the potential for high operating leverage.
Who owns the transactionOVO can own the subscription and product economics.
Economic positionHigh eventual leverage if distribution and retention compound.
Scaling constraintSoftware without massive distribution takes time to compound.
What Alex ownsProduct and customer relationship, subject to proving distribution.
Biologix today
What it isFounder-dependent commerce operation with real public activity and unverified private economics.
Who owns the transactionBraden's entity receives the customer payment and owns the markup.
Economic positionReported AOV about $247.87 Possible reorder behavior and near-zero organic CAC remain unproved.
Scaling constraintFounder fulfillment, payment fragility, weak attribution, thin governance, and missing management.
What Alex ownsNothing durable unless the deal explicitly grants economics, rights, and NewCo ownership.
Durable NewCo
What it isOwned audience, media, software, lifecycle, community, data, and appropriately licensed care orchestration.
Who owns the transactionAlex and Braden participate as principals under a clean structure.
Economic positionCash participation now plus equity in the assets that survive this storefront.
Scaling constraintMust clear source truth, authority, economics, quality, payment, and lawful-path gates.
What Alex ownsSubstantial NewCo equity, operating IP, audience, data, and the customer-development system.
+
+ +
+
OVO TalentLow
+
Inner DMMedium
+
Biologix todayNone
+ +
+

Qualitative leverage retained by Alex

+
+ +
+
+
03 / Unfair advantages

Why Alex can move faster than a normal operator

+

These advantages reduce entry cost and learning time. They do not replace diligence or make bad terms acceptable.

+
+
    +
  1. 01

    Privileged access and trust

    Connor's relationship, direct founder chemistry, and Braden's interest in an integrated partnership create access a cold operator would not have.

  2. +
  3. 02

    Creator and affiliate distribution

    OVO already knows how to recruit, contract, coordinate, and support creators. That can turn informal relationships into an instrumented channel.

  4. +
  5. 03

    Operating capacity

    OVO Academy, talent operations, editors, legal workflows, dashboards, and management recruiting can supply the company-shaped layer Biologix appears to lack.

  6. +
  7. 04

    Founder-life fit

    Braden appears to value relief, peers, travel, content, Miami, and belonging. Alex can improve the founder's life while making the company less dependent on him.

  8. +
  9. 05

    Speed without blind commitment

    A paid, time-boxed sprint lets Alex verify the engine while protecting OVO capital, creators, systems, reputation, and focus.

  10. +
+
+ +
+
+
04 / Recommended sequence

Buy the option first. Earn the right to scale.

+

Each step creates information or durable leverage. No later step is unlocked merely because the prior conversation felt good.

+
+
+
01

Enter through a paid operating sprint.

Exchange more architecture only for source access, payment, and a written scope.

+
02

Get the complete source truth.

Orders, customers, SKUs, referrals, settlements, banks, refunds, inventory, partners, ownership, contracts, and vendors.

+
03

Reverse-engineer the word-of-mouth loop.

Identify who refers, what they say, which customers reorder, and which product or trust event actually causes conversion.

+
04

Remove Braden from fulfillment.

Stabilize inventory, the third-party logistics handoff, service levels, exceptions, and quality ownership.

+
05

Install the revenue system.

Lead capture, referral, lifecycle, support, attribution, cohort reporting, and a single contribution ledger.

+
06

Negotiate operator economics.

Cash now, contribution participation, protected ownership, distributions, information rights, and authority that matches responsibility.

+
07

Put durable assets into a clean NewCo.

Audience, media, software, data, community, lifecycle, and appropriately licensed diagnostics or care infrastructure.

+
08

Preserve lawful future optionality.

Keep a narrow contractual right to pursue other lawful longevity opportunities if the partnership ends.

+
+
+ +
+
+
05 / Evidence stack

What is known, reported, and still only a thesis

+

The board never lets a revenue screenshot or founder statement silently become a valuation fact.

+
+
+
+ +

Real commerce signals

+
    +
  • 52 commercial products Verified public signal: Verified
  • +
  • 44 listed in stock at snapshot Verified public signal: Verified
  • +
  • 1,397 visible units, about $86,657 displayed retail Verified public signal: Verified
  • +
  • Active WooCommerce merchandising, affiliate tooling, bundles, discounts, and inventory changes.
  • +
  • Public code cannot reveal exact orders, revenue, profit, ownership, or repeat rate.
  • +
+
+
+ +

Compelling, not reconciled

+
    +
  • Reported $53,540.86 and 216 orders on one day, excluding Apple Pay
  • +
  • Implied reported AOV of $247.87
  • +
  • Implied reported 30-day pace of about $1.606M if sustained
  • +
  • Reported 85% “net” and more than $1M inventory
  • +
  • Reported three to five affiliates and primarily word-of-mouth demand
  • +
  • Follow-up meeting confirmed; founder-provided photo shows continued personal fulfillment
  • +
+
+
+ +

The hypotheses worth paying to test

+
    +
  • Demand may be real but largely invisible to current attribution.
  • +
  • The reported margin likely describes unit gross margin rather than fully loaded profit.
  • +
  • Word of mouth may be the hidden acquisition engine.
  • +
  • Founder dependence may suppress both scale and buyer value.
  • +
  • Underlying longevity demand can outlast the current storefront arbitrage.
  • +
+
+
+
+ +
+
+ +

Proceed to the paid sprint. Every step beyond it is gated on data.

+

The goal is not to own more tasks. It is to own the customer, transaction, data, and equity created by the work. Braden's reply should accelerate the option — not determine whether Alex takes action.

+
+

Kill condition 01 · Source truth is withheld, false, or economically weak after full costs.

+

Kill condition 02 · The role carries company-wide responsibility without matching authority, cash, protection, and upside.

+
+
+
+
+ + + + + + + diff --git a/biologix-strategy-board/operating-reference.html b/biologix-strategy-board/operating-reference.html new file mode 100644 index 0000000..e901bb9 --- /dev/null +++ b/biologix-strategy-board/operating-reference.html @@ -0,0 +1,266 @@ + + + + + + + + + + + Biologix Decision Board — Operating Reference + + + + +
+
+
02 / Operating reference
+

Buy the option first. Earn the right to scale.

+

The first transaction is not a cofounder promise or a title. It is a paid source-of-truth sprint that produces financial truth, immediate founder relief, an operating map, and a fact-based go, remediate, or walk decision.

+
Prepared 2026-07-22 · Internal · Not legal advice
+
+
+ + + +
+
+
+
01 / Paid source truth

The operating sprint is the entry ticket

+

Payment and access convert the next conversation from more free vision into reciprocal commitment.

+
+ +
+
+

Open the machine, fix the immediate bottleneck, and price the permanent partnership from facts.

+

Alex enters through OVO Labs under a limited sprint contract. Operating Partner authority activates only after the gates. There is no statutory officer title, public endorsement, OVO creator activation, OVO IP assignment, inventory capital, personal guarantee, or custody of customer and product funds during the truth stage.

+

Working target: $50,000 prepaid for the source-of-truth sprint Strategic inference: Strategic inference

+
+
+
WindowTen business days to first gate
+
Broader termUp to thirty days
+
AccessRead / export source systems
+
DecisionGo / remediate / walk
+
+
+ +
+ + + + + + + + + + + + + +
Source-of-truth artifacts required for the paid sprint.
Required artifactWhat it provesCurrent status
Order-level exportSKU, price, discounts, customer, affiliate, fulfillment, refunds, and timestamps.Outstanding · required proof
Processor settlementsCaptured cash, reserves, fees, holds, chargebacks, and actual settlement timing.Outstanding · required proof
Bank statementsWhether processor payouts became bank receipts and where cash moved afterward.Outstanding · required proof
Accounting fileFully loaded contribution, operating profit, taxes, liabilities, owner draws, and working capital.Outstanding · required proof
Inventory and lotsActual landed cost, ownership, location, lot mapping, testing coverage, complaints, and remaining units.Outstanding · required proof
Customer and referral historyRepeat behavior, cohorts, referral sources, contribution, and the hidden word-of-mouth loop.Outstanding · required proof
People, vendors, and contractsEvery partner, equity promise, revenue share, exclusivity, admin account, deliverable, and termination right.Outstanding · required proof
Corporate and cap tableLegal entity, beneficial owners, signing authority, historical promises, options, and related-party obligations.Outstanding · required proof
+
+
+ +
+
+
02 / Operating roadmap

Ninety days from cash spike to operated company

+

Sequence the migrations. Capture truth first, stabilize fulfillment second, install revenue systems third, and scale only what survives measurement.

+
+ +
+
+
Days 00–10

Verify the machine

+
+

Revenue-to-cash reconciliation

Orders → captures → processor settlements → bank deposits → refunds and reserves.

Exit · unexplained variance is immaterial and documented
Alex + finance specialist
+

Collected contribution definition

Deduct landed product, testing, packaging, fulfillment, freight, fees, commissions, support, reserves, and taxes.

Exit · one signed metric dictionary
Alex + CFO
+

Company and partner map

People, equity, side promises, agency, developers, processors, banks, suppliers, testing, 3PL, app partners, and admin access.

Exit · one accountable owner for every dependency
Alex
+

Word-of-mouth reverse engineering

Identify the first trust event, referral source, customer cohort, message, SKU, and repeat pattern.

Exit · testable acquisition-loop hypothesis
Alex + Connor
+

Quality, payment, and lawful-path gate

Qualified specialists assess source records, customer-safety evidence, payment continuity, insurance, and the usable operating perimeter.

Exit · written green / yellow / red decision
Outside specialists
+

Decision memo

Price the opportunity only after the source systems reconcile and acute constraints are explicit.

Exit · go / remediate / walk signed by Alex
Alex
+
+
+ +
+
Days 11–30

Remove founder dependence

+
+

Inventory and fulfillment visibility

SKU, lot, location, landed cost, service levels, error ownership, replacements, and escalation paths become visible without moving Braden's fulfillment responsibility to Alex.

Exit · Braden and his fulfillment lead own routine orders against a visible scorecard
Braden + fulfillment lead
+

Daily operating truth

Settled cash, orders, contribution, inventory, fulfillment, support exceptions, refunds, and chargebacks.

Exit · one daily dashboard with named DRIs
Alex + CFO
+

Affiliate ledger

One partner ID, agreement, approved content record, attributed order, reserve, reversal, and payout trail.

Exit · payout reconciles to settled contribution
Connor inside Alex's system
+

Support and exception ownership

Document service levels, refunds, replacements, complaints, escalations, and backup coverage.

Exit · founder is not the default router
Operations DRI
+

Existing-cohort pilot

Measure only incumbent affiliates first so the business has a real control before adding volume.

Exit · cohort contribution and repeat behavior visible
Alex + Connor
+

Permanent term sheet

Operating Partner authority, $30K Alex + $20K OVO monthly cash, 30% fully diluted ownership, the 70/30 monthly waterfall, information rights, protection, and NewCo boundary.

Exit · definitive economics ready for counsel
Alex + Braden
+
+
+ +
+
Days 31–60

Install the revenue system

+
+

Lead capture and lifecycle

Capture permission, identify intent, educate, follow up, recover, reorder, and reactivate.

Exit · lifecycle revenue attributed to cohorts
Growth DRI
+

Referral operating system

Instrument customer referrals, partner recruitment, agreements, content review, attribution, and payout.

Exit · referral loop measurable end to end
Alex + Connor
+

Vendor scorecards

Agency, development, processor, app, and fulfillment performance reports into one operating cadence while the named functional owner keeps each relationship.

Exit · every vendor has a visible owner, scope, and measurable outcome
Named function owners
+

Management recruitment

Install a non-Alex daily operator with clear authority, scorecard, backup, and escalation.

Exit · Alex is architect, not daily dispatcher
Alex
+

Weekly executive close

Financial truth, channel performance, inventory, people, vendors, incidents, decisions, and cash allocation.

Exit · decisions land in one accountable cadence
Operating Partner / operator
+

Founder content system

Turn Braden's category knowledge into governed education, trust, proof, and a repeatable content calendar.

Exit · founder creates; system distributes and measures
Content DRI + Braden
+
+
+ +
+
Days 61–90

Prove transferability and durability

+
+

Scale profitable cohorts only

Increase volume where settled contribution, repeat behavior, claims controls, support, and fulfillment remain healthy.

Exit · growth survives full-cost accounting
Growth DRI
+

Founder and operator removal test

Run the company without Braden or Alex as the daily router.

Exit · routine operations continue under named owners
Operating Partner / operator
+

Creator and community layer

Build high-quality relationships, education, operator dinners, content, and measured experiences without turning friendship into compensation.

Exit · community creates attributable durable value
Alex + community DRI
+

Buyer and diligence readiness

Clean books, contracts, ownership, data, vendor rights, operating metrics, risks, and management accountability.

Exit · company can be understood without founder narration
CFO + counsel
+

NewCo launch gate

Transfer or license only explicitly agreed durable assets into the separately governed company.

Exit · clean cap table, IP, data, contracts, and reserved matters
Alex + Braden
+

Capacity decision

Compare verified upside and Alex hours against OVO's core installation.

Exit · scale, hold, or return capacity to OVO
Alex
+
+
+
+
+ +
+
+
03 / Role progression

This is an Operating Partner mandate, not a CRO role

+

Company-wide responsibility requires company-wide authority, economics, protection, and a clear operating perimeter.

+
+
+
+ Strategic inference: Working structure +

Source-of-Truth Sprint through OVO Labs

+

Contractual and non-statutory during proof. Alex owns the sprint, architecture, instrumentation, founder-relief plan, operating cadence, and permanent-deal recommendation. Product release, customer funds, manufacturing, import, clinical decisions, and legal conclusions stay outside his scope.

+
+
Gate · data clears + authority and economics signed + indemnification, advancement, and insurance reviewed
+
+ Required proof: Not earned yet +

Activated Operating Partner through OVO Labs

+

Appropriate only if Alex is truly accountable for company architecture, finance, people, systems, creator distribution, lifecycle, content, management, and executive cadence—with the decision rights and upside required to control those outcomes. Braden retains product, sourcing, inventory, and fulfillment responsibility.

+
+
+
+ +
+
+
04 / Economics ladder

Optimize for cash, truth, authority, and protected upside

+

The largest paper percentage is not necessarily the best deal. Undefined profit, trapped distributions, or unknown legacy liabilities can erase headline equity.

+
+
+ + + + + + + + + + + +
Working Biologix deal economics.
LayerWorking askWhy it matters
Source-truth sprintTarget $50,000 prepaid Strategic inference: Working askAlex is paid to verify the opportunity before permanent focus or reputation is committed.
Monthly operating cash$30,000 Alex compensation + $20,000 OVO managed-services monthly after activation Strategic inference: Working askSeparates Alex's company-level accountability from the managed OVO execution pod.
Legacy ownership30% fully diluted: 10% signing, 10% activation, 10% over six months Strategic inference: Working askIncludes information, audit, dilution, related-party, sale, and acceleration protection.
Monthly owner cash100% of Excess Cash: 70% Braden / 30% Alex after the signed Required Reserve Strategic inference: Working askReinvestment is each owner's election after distribution, so discretionary retention cannot make the equity economically empty.
Limited-lane fallback15% of settled contribution from accepted Alex-introduced partners Strategic inference: Working askNo companywide mandate, 30% ownership, OVO pod, retreats, or backend build in this lane.
Durable NewCoAlex / OVO 30–40% if OVO builds the operating platform Strategic inference: Working askCofounder-level economics for owned audience, software, data, lifecycle, content, community, and operating infrastructure.
+
+
+
Never accept
+
    +
  • A title without authority or company-wide accountability for affiliate-manager economics.
  • +
  • 5% naked, exit-only equity Strategic inference: Reject
  • +
  • Undefined “profit,” discretionary distributions, blanket category exclusivity, or equity that can be moved around through related parties.
  • +
  • Personal guarantees, inventory capital, customer-fund custody, OVO merchant rails, or assignment of generalized OVO IP.
  • +
+
+
+ +
+
+
05 / Durable boundary

The cash engine and the durable company are different assets

+

Legacy cash can fund the future. It should not automatically own every audience, software, care, data, and media asset Alex creates.

+
+
+ + + + + + + +
Assets proposed for Durable NewCo versus Legacy CashCo.
Lives in Durable NewCo — substantially Alex-ownedStays in Legacy CashCo unless separately agreed
  • Owned audience, media, founder content system, newsletter, and community.
  • Creator and affiliate operating software, contribution ledger, lifecycle infrastructure, and generalized workflows.
  • Customer-development data and permissions created under the NewCo scope.
  • Merchant-neutral research, creator graph, brand relationships, and operator network.
  • Appropriately licensed diagnostics, care orchestration, software, education, and lawful future products.
  • NewCo brand, IP, contracts, books, bank relationships, and reserved-matter governance.
  • Historical storefront, catalog, customer liabilities, product claims, and legacy transactions.
  • Existing inventory, supplier relationships, import history, testing records, complaints, and fulfillment obligations.
  • Historical processor, bank, tax, owner, employee, vendor, and regulatory obligations.
  • Legacy domain, storefront code, trademarks, contracts, and data not expressly licensed or transferred.
  • Legacy owner distributions and pre-closing economics.
  • Any risk Alex did not diligence, price, accept, and document.
+
+
+ +
+
+
06 / Architecture reveal policy

Show the silhouette of the machine, not its wiring

+

Free structure proves command. The finished schemas, creator graph, SOPs, controls, vendor design, and implementation mechanics are the paid asset.

+
+
+

Alex should reveal enough to make the before-and-after obvious: the diagnosis, system categories, sample scorecard, founder-relief sequence, ninety-day destination, evidence gates, and economic logic. Every additional layer should be exchanged for reciprocal access and commitment.

+
    +
  1. Before payment

    Diagnosis, current-state gaps, workstreams, sample scorecard, expected outputs, and the ninety-day milestones.

  2. +
  3. After NDA and source access

    Company map, data request, KPI definitions, decision logic, high-level workflows, and the sprint delivery plan.

  4. +
  5. After payment or definitive agreement

    Schemas, automations, creator lists, attribution logic, vendor stack, recruiting pipeline, legal templates, playbooks, software, and reusable implementation IP.

  6. +
+
+
+ +
+
+
07 / Proof and kill gates

No permanent partnership without a clean pass

+

Thresholds below are Alex's working decision assumptions. Qualified finance, legal, quality, payment, and tax specialists must validate the final standards.

+
+
+ + + + + + + + + + + + + +
Proof gates and actions for the Biologix partnership.
GatePass conditionPass actionKill / remediate action
Source truthOrders, captures, settlements, bank receipts, refunds, reserves, and accounting reconcile with no material unexplained variance.Price permanent economics from collected contribution.Walk if source access is refused or material claims are false.
Fully loaded economicsContribution remains exceptional after product, testing, fulfillment, freight, fees, commissions, support, reserves, taxes, founder replacement, and working capital.Activate the signed Operating Partner package.Reduce scope or walk if screenshots do not become distributable cash.
Ownership and obligationsEntity, cap table, authority, side promises, related parties, vendor rights, IP, and customer data are fully disclosed and usable.Draft definitive rights and successor protection.Walk on concealed owners, equity, exclusivity, or diversion rights.
Demand durabilityRepeat, referral, cohort, contribution, and channel data reveal a reproducible loop.Instrument and scale a controlled cohort.Hold if demand is a transient spike with no reusable asset.
Quality and customer safetyUsable supplier, lot, testing, custody, complaint, recall, and operating evidence supports the contemplated scope.Assign accountable quality ownership outside Alex's role.Walk if records are unusable or acute products cannot be isolated.
Payment and lawful pathQualified specialists support a usable model, truthful counterparties, continuity plan, insurance, and defined operating perimeter.Proceed under written boundaries and controls.Walk if Alex is asked for banks, nominees, concealment, or unsupported claims.
Authority and economicsAlex's decisions, budget, reporting lines, hiring and vendor authority, cash, upside, information, distributions, and protections match accountability.Accept Operating Partner scope after clearance.Reject responsibility without control and economics.
OVO opportunity costThe partnership has a non-Alex daily operator and does not delay OVO's highest-priority installation.Scale within a fixed capacity envelope.Return capacity to OVO if Alex becomes the daily rescue layer.
+
+
+
+ + + + + + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/404.html b/biologix-strategy-board/ovo-labs-porcelain/404.html new file mode 100644 index 0000000..d05fe42 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/404.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + Page Not Found — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/README.md b/biologix-strategy-board/ovo-labs-porcelain/README.md new file mode 100644 index 0000000..37a1778 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/README.md @@ -0,0 +1,107 @@ +# OVO Labs Porcelain + +OVO Labs Porcelain is the white, product-first side-by-side variant of the fictional OVO Labs ecommerce concept. It adapts Datum’s strongest store architecture—visible search, direct categories, a compact hero, a factual strip, early products, and card-level Add—using OVO’s name, amber packaging world, typography, truth boundaries, and hardened interaction behavior. + +It is non-transactional. It does not represent real products, inventory, testing, customers, orders, fulfillment, payment, or medical use. + +## Comparison routes + +| Variant | Route | +|---|---| +| Porcelain candidate | `/ovo-labs-porcelain/` | +| Warm OVO control | `/ovo-labs/` | + +The warm route is intentionally preserved for visual and behavioral comparison. Porcelain has its own CSS, JavaScript, canonical URLs, analytics event name, and browser-storage namespace. + +## Routes + +| Surface | Route | +|---|---| +| Homepage | `index.html` | +| Complete collection | `catalog.html` | +| Curated sets | `bundles.html` | +| Testing | `testing.html` | +| Notes | `notes.html` | +| About | `company.html` | +| FAQ | `faq.html` | +| Policies | `policies.html` | +| Product pages | `peptides/*.html` | +| Notes articles | `notes/*.html` | + +Compatibility files inside this variant preserve its former route names: + +- `lot-record.html` → `testing.html` +- `access.html` → `catalog.html` +- `eligibility.html` → `policies.html` + +## Interaction model + +- Predictive keyboard search by product name, category, strength, and OVO code +- Category filtering, collection search, persistent URL sorting, and empty-state recovery +- Ten canonical product pages with responsive media, quantity, visible testing status, specifications, FAQ, related products, and a sticky mobile Add action +- Three curated sets +- Searchable testing-status page +- Browser-local add, update, remove, subtotal, and clear-cart states +- Local-only newsletter preference +- Keyboard-accessible menu, search, drawers, accordions, and product controls +- Non-PII QA instrumentation through `window.dataLayer`, `window.OVOPorcelainAnalytics.events()`, and the compatibility alias `window.OVOAnalytics.events()` + +The cart has no checkout or payment path. Nothing is transmitted. + +## Isolated browser state + +Porcelain does not read or overwrite the warm OVO route’s active storage keys. + +```text +ovo-porcelain-demo-cart-v2 +ovo-porcelain-recent-products-v1 +ovo-porcelain-newsletter-preference-v1 +``` + +The custom analytics event is: + +```text +ovo-porcelain:analytics +``` + +## Fable 5 visual system + +Claude Fable 5 is the binding outward-facing design authority. The approved direction is **Datum structure × OVO identity on porcelain white**: + +- Fraunces display type, Instrument Sans body/UI, and IBM Plex Mono product data +- pure-white canvas, near-white warm surfaces, espresso controls, and restrained terracotta accents +- left-aligned italic `ovolabs.` wordmark +- always-visible search and direct category navigation +- 55/45 product-led hero with safe amber imagery and factual overlays +- early four-up desktop and two-up narrow product grid +- full espresso editorial testing band +- 7/5 product detail gallery and sticky buy box +- safe amber-vial stills with no use supplies, people, claims, or lab theater +- self-hosted, SIL Open Font License type assets with no third-party font request + +Gold appears only in packaging imagery and the wordmark period. There is no cobalt and no beige page wash. + +## Truth boundary + +- The top banner states: `FICTIONAL CONCEPT STOREFRONT. NOTHING HERE IS REAL, STOCKED, OR FOR SALE.` +- Every analytical state remains `No result reported` or `Not represented`. +- There is no fictional per-lot result dataset, certificate, laboratory, purity figure, testing claim, or release decision. +- There is no access or eligibility gate. +- There is no checkout, payment, inventory, stock, shipping, fulfillment, or customer account. +- Product and cart prices are interface concepts only. +- The newsletter demo saves a preference locally and sends nothing. +- No reviews, ratings, popularity, urgency, outcome, dosing, preparation, or human-use claim is allowed. + +## Local preview + +From `biologix-strategy-board/`: + +```bash +python3 -m http.server 4173 +``` + +Then open: + +```text +http://127.0.0.1:4173/ovo-labs-porcelain/ +``` diff --git a/biologix-strategy-board/ovo-labs-porcelain/access.html b/biologix-strategy-board/ovo-labs-porcelain/access.html new file mode 100644 index 0000000..04139ba --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/access.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to the OVO Labs collection + + +
Fictional concept storefront. Nothing here is real, stocked, or for sale.
+

Continue to the OVO Labs collection.

+ + diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/favicon.svg b/biologix-strategy-board/ovo-labs-porcelain/assets/favicon.svg new file mode 100644 index 0000000..9d1eed3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/assets/favicon.svg @@ -0,0 +1,5 @@ + + + o + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-fraunces.txt b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-fraunces.txt new file mode 100644 index 0000000..e0a3ac7 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-fraunces.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Fraunces Project Authors (https://github.com/undercasetype/Fraunces) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-ibm-plex-mono.txt b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-ibm-plex-mono.txt new file mode 100644 index 0000000..670c6c0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-ibm-plex-mono.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-instrument-sans.txt b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-instrument-sans.txt new file mode 100644 index 0000000..d41633c --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/OFL-instrument-sans.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-italic-400-latin.woff2 b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-italic-400-latin.woff2 new file mode 100644 index 0000000..88d409d Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-italic-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-normal-latin.woff2 b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-normal-latin.woff2 new file mode 100644 index 0000000..4c7b557 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/fraunces-normal-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-400-latin.woff2 b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-400-latin.woff2 new file mode 100644 index 0000000..52b6c75 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-500-latin.woff2 b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-500-latin.woff2 new file mode 100644 index 0000000..3308bce Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/ibm-plex-mono-500-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/instrument-sans-latin.woff2 b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/instrument-sans-latin.woff2 new file mode 100644 index 0000000..665fa65 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/fonts/instrument-sans-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-hero-still.webp b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-hero-still.webp new file mode 100644 index 0000000..e52069b Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-hero-still.webp differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-set-pair.webp b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-set-pair.webp new file mode 100644 index 0000000..65cf55a Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-set-pair.webp differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-vial-front.webp b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-vial-front.webp new file mode 100644 index 0000000..41514d6 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-porcelain/assets/ovo-vial-front.webp differ diff --git a/biologix-strategy-board/ovo-labs-porcelain/bundles.html b/biologix-strategy-board/ovo-labs-porcelain/bundles.html new file mode 100644 index 0000000..bb8e951 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/bundles.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Curated Sets — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/catalog.html b/biologix-strategy-board/ovo-labs-porcelain/catalog.html new file mode 100644 index 0000000..0ea7b5d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/catalog.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + The Collection — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/company.html b/biologix-strategy-board/ovo-labs-porcelain/company.html new file mode 100644 index 0000000..b746ede --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/company.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + About OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/eligibility.html b/biologix-strategy-board/ovo-labs-porcelain/eligibility.html new file mode 100644 index 0000000..e84b7b1 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/eligibility.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to OVO Labs concept boundaries + + +
Fictional concept storefront. Nothing here is real, stocked, or for sale.
+

Continue to the OVO Labs concept boundaries.

+ + diff --git a/biologix-strategy-board/ovo-labs-porcelain/faq.html b/biologix-strategy-board/ovo-labs-porcelain/faq.html new file mode 100644 index 0000000..c6a443f --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/faq.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Frequently Asked Questions — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/index.html b/biologix-strategy-board/ovo-labs-porcelain/index.html new file mode 100644 index 0000000..16977f3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/index.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + OVO Labs — Peptide Science, Refined + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/lot-record.html b/biologix-strategy-board/ovo-labs-porcelain/lot-record.html new file mode 100644 index 0000000..75a7729 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/lot-record.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to OVO Labs Testing + + +
Fictional concept storefront. Nothing here is real, stocked, or for sale.
+

Continue to OVO Labs Testing.

+ + diff --git a/biologix-strategy-board/ovo-labs-porcelain/notes.html b/biologix-strategy-board/ovo-labs-porcelain/notes.html new file mode 100644 index 0000000..477181a --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/notes.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Journal — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/notes/choosing-by-molecule.html b/biologix-strategy-board/ovo-labs-porcelain/notes/choosing-by-molecule.html new file mode 100644 index 0000000..cca8f57 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/notes/choosing-by-molecule.html @@ -0,0 +1,13 @@ + + + + + + + + + + Shop by Molecule, Not by Hype — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/notes/coa-boundaries.html b/biologix-strategy-board/ovo-labs-porcelain/notes/coa-boundaries.html new file mode 100644 index 0000000..befb68d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/notes/coa-boundaries.html @@ -0,0 +1,13 @@ + + + + + + + + + + What a COA Can and Cannot Show — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/notes/reading-testing-status.html b/biologix-strategy-board/ovo-labs-porcelain/notes/reading-testing-status.html new file mode 100644 index 0000000..c6f1619 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/notes/reading-testing-status.html @@ -0,0 +1,13 @@ + + + + + + + + + + How to Read a Testing Status — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-157.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-157.html new file mode 100644 index 0000000..414ffd7 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-157.html @@ -0,0 +1,14 @@ + + + + + + + + + + + BPC-157 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-tb-blend.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-tb-blend.html new file mode 100644 index 0000000..2548ccd --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/bpc-tb-blend.html @@ -0,0 +1,14 @@ + + + + + + + + + + + BPC-157 + TB-500 20 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/cagrilintide.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/cagrilintide.html new file mode 100644 index 0000000..e86fd33 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/cagrilintide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Cagrilintide 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-1295.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-1295.html new file mode 100644 index 0000000..5d3e30e --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-1295.html @@ -0,0 +1,14 @@ + + + + + + + + + + + CJC-1295 5 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-ipamorelin-blend.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-ipamorelin-blend.html new file mode 100644 index 0000000..78b28b8 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/cjc-ipamorelin-blend.html @@ -0,0 +1,14 @@ + + + + + + + + + + + CJC-1295 + Ipamorelin 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/ipamorelin.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/ipamorelin.html new file mode 100644 index 0000000..8fc565a --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/ipamorelin.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Ipamorelin 5 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/retatrutide.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/retatrutide.html new file mode 100644 index 0000000..c7b3a6d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/retatrutide.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + Retatrutide 10 mg — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/semaglutide.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/semaglutide.html new file mode 100644 index 0000000..56cdeaa --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/semaglutide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Semaglutide 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/tb-500.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/tb-500.html new file mode 100644 index 0000000..ac37e7c --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/tb-500.html @@ -0,0 +1,14 @@ + + + + + + + + + + + TB-500 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/peptides/tirzepatide.html b/biologix-strategy-board/ovo-labs-porcelain/peptides/tirzepatide.html new file mode 100644 index 0000000..9853821 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/peptides/tirzepatide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Tirzepatide 10 mg — OVO Labs + +
+ diff --git a/biologix-strategy-board/ovo-labs-porcelain/policies.html b/biologix-strategy-board/ovo-labs-porcelain/policies.html new file mode 100644 index 0000000..3dbb2f0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/policies.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Site Policies — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-porcelain/site.css b/biologix-strategy-board/ovo-labs-porcelain/site.css new file mode 100644 index 0000000..54c4a76 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/site.css @@ -0,0 +1,4472 @@ +@font-face { + font-family: "Fraunces"; + font-style: normal; + font-weight: 400 600; + font-display: swap; + src: url("assets/fonts/fraunces-normal-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "Fraunces"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("assets/fonts/fraunces-italic-400-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "Instrument Sans"; + font-style: normal; + font-weight: 400 600; + font-display: swap; + src: url("assets/fonts/instrument-sans-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-400-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-500-latin.woff2") format("woff2"); +} + +:root { + --cream: #f3eada; + --porcelain: #faf6ee; + --parchment: #ede2cd; + --espresso: #3a2a1f; + --espresso-deep: #2a1d14; + --ink-2: #5c4a3b; + --terracotta: #b9553e; + --terracotta-deep: #8f3b2a; + --gold: #b08a52; + --gold-bright: #c69b63; + --cream-on-dark: #f3eada; + --line: rgba(58, 42, 31, 0.16); + --line-strong: rgba(58, 42, 31, 0.34); + --line-on-dark: rgba(243, 234, 218, 0.18); + --scrim: rgba(26, 18, 12, 0.5); + --shell: min(1280px, calc(100vw - 96px)); + --serif: "Fraunces", Georgia, "Times New Roman", serif; + --sans: "Instrument Sans", -apple-system, "Helvetica Neue", Arial, sans-serif; + --mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace; + --drawer-shadow: 0 24px 64px rgba(58, 42, 31, 0.18); + --overlay-shadow: 0 14px 42px rgba(42, 29, 20, 0.18); + --ease: cubic-bezier(0.16, 1, 0.3, 1); +} + +* { + box-sizing: border-box; +} + +html { + color-scheme: light; + scroll-behavior: smooth; +} + +body { + min-width: 320px; + margin: 0; + overflow-x: clip; + color: var(--espresso); + background: var(--cream); + font-family: var(--sans); + font-size: 15px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +body.drawer-open { + overflow: hidden; +} + +img { + display: block; + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +select { + color: inherit; + font: inherit; +} + +button { + cursor: pointer; +} + +button:disabled { + cursor: not-allowed; + opacity: 0.52; +} + +h1, +h2, +h3, +p { + margin-top: 0; +} + +.sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.skip-link { + position: fixed; + z-index: 1000; + top: 8px; + left: 8px; + padding: 10px 14px; + color: var(--cream); + background: var(--espresso); + border: 1px solid var(--cream); + transform: translateY(-160%); +} + +.skip-link:focus { + transform: none; +} + +:focus-visible { + outline: 2px solid var(--espresso); + outline-offset: 3px; +} + +.site-footer :focus-visible, +.concept-banner :focus-visible, +.testing-feature :focus-visible { + outline-color: var(--cream); +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.concept-banner { + min-height: 36px; + display: grid; + place-items: center; + padding: 8px 20px; + color: var(--cream-on-dark); + background: var(--espresso); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; +} + +/* Global header */ + +.site-header { + position: sticky; + z-index: 80; + top: 0; + color: var(--espresso); + background: var(--cream); + border-bottom: 1px solid var(--line); +} + +.header-main { + min-height: 76px; + display: grid; + grid-template-columns: 1fr auto 1fr; + gap: 32px; + align-items: center; +} + +.primary-nav { + grid-column: 1; + grid-row: 1; + display: flex; + gap: 28px; + align-items: center; + justify-self: start; +} + +.primary-nav a { + color: var(--espresso); + font-size: 13px; + font-weight: 500; + letter-spacing: 0.02em; + text-underline-offset: 7px; + white-space: nowrap; +} + +.primary-nav a:hover { + color: var(--terracotta-deep); + text-decoration: underline; + text-decoration-thickness: 1px; +} + +.primary-nav a[aria-current="page"] { + text-decoration: underline; + text-decoration-thickness: 1px; +} + +.wordmark { + display: inline-flex; + align-items: baseline; + justify-content: center; + color: var(--espresso); + white-space: nowrap; +} + +.header-main > .wordmark { + grid-column: 2; + grid-row: 1; + justify-self: center; +} + +.wordmark-name, +.wordmark-copy { + display: inline; + font: italic 400 25px/1 var(--serif); + letter-spacing: -0.01em; +} + +.wordmark-dot { + color: var(--terracotta); +} + +.wordmark-mark, +.wordmark-category { + display: none; +} + +.header-utilities, +.header-actions { + grid-column: 3; + grid-row: 1; + display: flex; + gap: 18px; + align-items: center; + justify-self: end; +} + +.search-wrap { + position: relative; + width: 220px; + transition: width 200ms ease-out; +} + +.search-wrap:focus-within { + width: 280px; +} + +.search-input, +.collection-search, +.testing-lookup input, +.newsletter-form input { + width: 100%; + height: 40px; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-bottom: 1px solid var(--line-strong); + border-radius: 0; + outline: none; +} + +.search-input { + height: 34px; + padding-right: 36px; + font-size: 13px; +} + +.search-input::placeholder, +.collection-search::placeholder, +.testing-lookup input::placeholder, +.newsletter-form input::placeholder { + color: var(--ink-2); + opacity: 0.86; +} + +.search-input:focus, +.collection-search:focus, +.testing-lookup input:focus, +.newsletter-form input:focus { + border-bottom-color: var(--espresso); +} + +.search-icon { + display: none; +} + +.search-shortcut { + position: absolute; + top: 50%; + right: 0; + color: var(--ink-2); + font: 400 9px/1 var(--mono); + transform: translateY(-50%); +} + +.search-results { + position: absolute; + z-index: 100; + top: calc(100% + 12px); + right: 0; + width: 360px; + max-height: min(510px, 72vh); + overflow-y: auto; + color: var(--espresso); + background: var(--porcelain); + border: 1px solid var(--line-strong); + border-radius: 0; + box-shadow: var(--drawer-shadow); +} + +.search-results[hidden] { + display: none; +} + +.search-result { + min-height: 64px; + display: grid; + grid-template-columns: 44px 1fr auto; + gap: 12px; + align-items: center; + padding: 10px 12px; + border-bottom: 1px solid var(--line); +} + +.search-result:last-child { + border-bottom: 0; +} + +.search-result:hover, +.search-result[aria-selected="true"] { + background: var(--parchment); +} + +.search-result img { + width: 44px; + height: 52px; + object-fit: cover; + object-position: center; + background: var(--parchment); +} + +.search-result strong { + display: block; + font-size: 13px; + font-weight: 500; + line-height: 1.25; +} + +.search-result span span { + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.03em; +} + +.search-result-price { + font: 500 11px/1 var(--mono); + font-variant-numeric: tabular-nums; +} + +.icon-button, +.cart-button { + min-width: 44px; + height: 44px; + display: inline-grid; + place-items: center; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font: 500 10px/1 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.icon-button:hover, +.cart-button:hover { + color: var(--terracotta-deep); +} + +.cart-count { + display: inline; + color: inherit; + background: transparent; + font: inherit; +} + +.cart-count[hidden] { + display: none; +} + +.mobile-menu-button { + display: none; +} + +.category-nav-wrap { + display: none; +} + +/* Buttons and links */ + +.button, +.add-button, +.pdp-add, +.newsletter-form button { + min-height: 48px; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 28px; + font-size: 13px; + font-weight: 600; + line-height: 1; + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; + border-radius: 2px; + transition: + color 180ms ease-out, + background-color 180ms ease-out, + border-color 180ms ease-out; +} + +.button:active, +.add-button:active, +.pdp-add:active, +.newsletter-form button:active { + transform: translateY(1px); +} + +.button-primary, +.pdp-add, +.newsletter-form button { + color: var(--cream); + background: var(--espresso); + border: 1px solid var(--espresso); +} + +.button-primary:hover, +.pdp-add:hover, +.newsletter-form button:hover { + background: var(--espresso-deep); + border-color: var(--espresso-deep); +} + +.button-secondary, +.add-button { + color: var(--espresso); + background: transparent; + border: 1px solid var(--espresso); +} + +.button-secondary:hover, +.add-button:hover { + color: var(--cream); + background: var(--espresso); +} + +.button-small { + min-height: 40px; + padding-inline: 18px; +} + +.text-link, +.quiet-link { + display: inline-flex; + align-items: center; + color: var(--espresso); + font-size: 13px; + font-weight: 500; + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-decoration-thickness: 1px; + text-underline-offset: 5px; +} + +.text-link:hover, +.quiet-link:hover { + color: var(--terracotta-deep); + text-decoration-color: currentColor; +} + +.eyebrow, +.product-category, +.price-label, +.result-summary { + margin-bottom: 12px; + color: var(--terracotta-deep); + font: 500 11px/1.3 var(--mono); + letter-spacing: 0.18em; + text-transform: uppercase; +} + +/* Hero */ + +.home-hero { + background: var(--cream); +} + +.hero-grid { + min-height: 560px; + display: grid; + grid-template-columns: repeat(12, minmax(0, 1fr)); + gap: 24px; + align-items: center; + padding-block: 64px 96px; +} + +.hero-copy { + grid-column: 1 / span 5; + max-width: 560px; +} + +.hero-copy .eyebrow::after { + width: 24px; + height: 1px; + display: block; + margin-top: 20px; + content: ""; + background: var(--gold); +} + +.hero-copy h1 { + max-width: 15ch; + margin: 0 0 24px; + font: 500 clamp(34px, 5vw, 64px) / 1.06 var(--serif); + letter-spacing: -0.015em; +} + +.hero-copy h1 span { + color: inherit; + font: inherit; +} + +.hero-copy > p:not(.eyebrow) { + max-width: 44ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 17px; + line-height: 1.6; +} + +.hero-actions { + display: flex; + gap: 24px; + align-items: center; + margin-top: 40px; +} + +.hero-actions .button-primary { + min-height: 52px; + padding-inline: 36px; +} + +.hero-actions .button-secondary { + min-height: auto; + padding: 0; + background: transparent; + border: 0; + border-radius: 0; + font-size: 13px; + font-weight: 500; + letter-spacing: 0; + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-underline-offset: 5px; + text-transform: none; +} + +.hero-actions .button-secondary:hover { + color: var(--terracotta-deep); + background: transparent; + text-decoration-color: currentColor; +} + +.hero-visual { + grid-column: 6 / -1; + height: min(720px, 64vw); + margin-right: calc((100vw - var(--shell)) / -2); + overflow: hidden; + background: var(--parchment); +} + +.hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 60% center; +} + +.hero-product-chip, +.hero-coa-card, +.trust-strip { + display: none !important; +} + +/* Sections */ + +.section { + padding-block: 96px; +} + +.section-tight { + padding-block: 72px; +} + +.section-surface { + background: var(--porcelain); +} + +.section-head { + display: flex; + gap: 32px; + align-items: flex-end; + justify-content: space-between; + margin-bottom: 48px; +} + +.section-head h2, +.testing-feature h2, +.newsletter h2, +.page-hero h1, +.detail-section h2 { + margin-bottom: 0; + font: 500 clamp(27px, 3.2vw, 44px) / 1.1 var(--serif); + letter-spacing: -0.01em; +} + +.section-head > div > p:last-child:not(.eyebrow) { + max-width: 58ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 15px; +} + +.section-head > p { + max-width: 58ch; + margin-bottom: 0; + color: var(--ink-2); +} + +/* Category index */ + +.category-section-head { + margin-top: 96px; + margin-bottom: 40px; +} + +.category-rail, +.category-index { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 24px; +} + +.category-tile, +.category-index-item { + position: relative; + min-height: 150px; + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 20px 0 18px; + border-top: 1px solid var(--line-strong); +} + +.category-tile::before, +.category-index-item::before { + display: block; + margin-right: 16px; + color: var(--ink-2); + font: 400 11px/1 var(--mono); + content: counter(category-index, decimal-leading-zero); +} + +.category-rail, +.category-index { + counter-reset: category-index; +} + +.category-tile, +.category-index-item { + counter-increment: category-index; +} + +.category-tile > span:first-of-type, +.category-index-copy { + display: flex; + flex: 1; + flex-direction: column; + gap: 8px; +} + +.category-tile strong, +.category-index-item strong { + font: 500 22px/1.2 var(--serif); +} + +.category-tile span span, +.category-index-item small { + color: var(--ink-2); + font: 400 11px/1.4 var(--mono); + letter-spacing: 0.04em; +} + +.category-arrow { + align-self: flex-end; + font: 400 16px/1 var(--sans); +} + +.category-tile:hover strong, +.category-tile:hover .category-arrow, +.category-index-item:hover strong, +.category-index-item:hover .category-arrow { + color: var(--terracotta-deep); +} + +/* Product grid and cards */ + +.product-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 56px 24px; +} + +.product-card { + min-width: 0; + color: var(--espresso); + background: transparent; + border: 0; +} + +.product-image-wrap { + position: relative; + aspect-ratio: 4 / 5; + display: block; + overflow: hidden; + background: var(--porcelain); +} + +.product-image-wrap > img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 600ms var(--ease); +} + +.product-image-wrap:hover > img { + transform: scale(1.015); +} + +.product-image-label { + position: absolute; + top: 55.5%; + left: 34%; + width: 33%; + display: grid; + gap: 4px; + pointer-events: none; + text-align: center; +} + +.product-image-label strong { + overflow: hidden; + color: var(--espresso); + font: 600 clamp(9px, 1.1vw, 12px) / 1.1 var(--sans); + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-image-label span { + overflow: hidden; + color: var(--ink-2); + font: 500 clamp(7px, 0.7vw, 9px) / 1.2 var(--mono); + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-card-body { + padding-top: 12px; +} + +.product-card .product-category { + margin-bottom: 6px; + color: var(--ink-2); + font-size: 10px; + letter-spacing: 0.08em; +} + +.product-name { + margin-bottom: 6px; + font: 500 15px/1.35 var(--sans); +} + +.product-name a:hover { + color: var(--terracotta-deep); + text-decoration: underline; + text-underline-offset: 4px; +} + +.product-format { + margin-bottom: 8px; + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.04em; +} + +.product-description { + min-height: 38px; + display: -webkit-box; + margin-bottom: 12px; + overflow: hidden; + color: var(--ink-2); + font-size: 12px; + line-height: 1.55; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.testing-micro { + min-height: 38px; + display: flex; + gap: 8px; + align-items: center; + justify-content: space-between; + padding-block: 8px; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.testing-micro span, +.testing-micro a { + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.01em; +} + +.testing-micro a { + flex: 0 0 auto; + color: var(--terracotta-deep); + text-decoration: underline; + text-underline-offset: 3px; +} + +.testing-micro-dot { + display: none; +} + +.product-buy-row { + display: grid; + gap: 10px; + padding-top: 12px; +} + +.price { + display: block; + color: var(--espresso); + font: 500 14px/1.2 var(--mono); + font-variant-numeric: tabular-nums; +} + +.price-label { + display: block; + margin-bottom: 4px; + color: var(--ink-2); + font-size: 9px; + letter-spacing: 0.08em; +} + +.product-card .add-button { + width: 100%; + min-height: 44px; + padding: 0 14px; + color: var(--cream); + background: var(--espresso); + border-color: var(--espresso); + font-size: 11px; +} + +.product-card .add-button:hover { + color: var(--cream); + background: var(--espresso-deep); + border-color: var(--espresso-deep); +} + +/* Testing feature */ + +.testing-feature { + width: 100%; + max-width: none; + display: grid; + grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr); + gap: 24px; + padding: 96px max(48px, calc((100vw - 1280px) / 2)); + color: var(--cream); + background: var(--espresso); +} + +.testing-feature-copy { + grid-column: 1; + align-self: center; +} + +.testing-feature-copy .eyebrow { + color: var(--gold-bright); +} + +.testing-feature-copy h2 { + max-width: 12ch; + color: var(--cream); +} + +.testing-feature-copy > p:not(.eyebrow) { + max-width: 44ch; + margin: 24px 0 28px; + color: rgba(243, 234, 218, 0.78); + font-size: 16px; +} + +.testing-feature-copy .button, +.testing-feature-copy .text-link { + min-height: auto; + padding: 0; + color: var(--cream); + background: transparent; + border: 0; + border-radius: 0; + font-size: 13px; + letter-spacing: 0; + text-decoration: underline; + text-decoration-color: var(--cream); + text-underline-offset: 5px; + text-transform: none; +} + +.testing-feature-copy .button:hover, +.testing-feature-copy .text-link:hover { + color: var(--cream); + background: transparent; + text-decoration-color: var(--gold); +} + +.testing-document { + grid-column: 3; + align-self: center; + color: var(--cream); + background: transparent; + border: 0; +} + +.document-head { + display: flex; + align-items: flex-end; + justify-content: space-between; + padding-bottom: 16px; + color: rgba(243, 234, 218, 0.78); + border-bottom: 1px solid var(--gold); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.document-head strong, +.document-head span { + display: block; + color: inherit; + font: inherit; +} + +.document-tag, +.status-pill { + color: inherit; + background: transparent; + border: 0; + border-radius: 0; +} + +.document-row { + min-height: 58px; + display: grid; + grid-template-columns: minmax(120px, 1fr) minmax(200px, 1.6fr); + gap: 24px; + align-items: center; + padding-block: 18px; + border-bottom: 1px solid var(--line-on-dark); +} + +.document-row strong { + color: var(--cream); + font-size: 14px; + font-weight: 500; +} + +.document-row span { + color: rgba(243, 234, 218, 0.74); + font: 400 10px/1.5 var(--mono); + text-align: right; +} + +/* Sets */ + +.bundle-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 32px 24px; +} + +.bundle-card { + min-width: 0; + background: transparent; + border: 0; +} + +.bundle-image { + position: relative; + aspect-ratio: 3 / 2; + overflow: hidden; + background: var(--porcelain); +} + +.bundle-image img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 600ms var(--ease); +} + +.bundle-card:hover .bundle-image img { + transform: scale(1.015); +} + +.bundle-count { + display: none; +} + +.bundle-body { + padding-top: 16px; +} + +.bundle-body .product-category { + margin-bottom: 6px; + color: var(--ink-2); + letter-spacing: 0.08em; +} + +.bundle-body h3 { + margin-bottom: 10px; + font: 500 22px/1.2 var(--serif); +} + +.bundle-body > p:not(.product-category) { + margin-bottom: 18px; + color: var(--ink-2); + font-size: 13px; +} + +.bundle-items { + margin: 0; + padding: 0; + list-style: none; + border-top: 1px solid var(--line); +} + +.bundle-items li { + min-height: 44px; + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid var(--line); +} + +.bundle-items a { + font-size: 13px; +} + +.bundle-items a:hover { + color: var(--terracotta-deep); +} + +.bundle-items span { + color: var(--ink-2); + font: 400 10px/1 var(--mono); +} + +.bundle-arithmetic { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; + margin: 0; + padding-block: 12px; + color: var(--ink-2); + border-bottom: 1px solid var(--line); + font: 400 9px/1.4 var(--mono); +} + +.bundle-arithmetic strong { + color: var(--espresso); + font-weight: 500; + font-variant-numeric: tabular-nums; +} + +.bundle-footer { + display: flex; + gap: 16px; + align-items: flex-end; + justify-content: space-between; + padding-top: 16px; +} + +.bundle-footer .add-button { + min-height: 44px; + padding-inline: 16px; + font-size: 11px; +} + +/* Journal and principles */ + +.education-grid, +.journal-grid, +.value-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 24px; +} + +.education-card, +.journal-card, +.value-card { + min-height: 220px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + padding: 20px 0 0; + background: transparent; + border: 0; + border-top: 1px solid var(--line-strong); +} + +.education-card h3, +.journal-card h3, +.value-card h3 { + margin-bottom: 10px; + font: 500 22px/1.25 var(--serif); +} + +.education-card p:not(.product-category), +.journal-card p:not(.product-category), +.value-card p { + color: var(--ink-2); + font-size: 14px; +} + +.brand-principle { + padding-block: 72px; + text-align: center; + background: var(--parchment); +} + +.brand-principle > div { + max-width: 640px; + margin-inline: auto; +} + +.brand-principle h2 { + margin-bottom: 16px; + font: 500 30px/1.2 var(--serif); +} + +.brand-principle p { + margin-bottom: 24px; + color: var(--ink-2); + font-size: 15px; +} + +/* Newsletter */ + +.newsletter { + display: grid; + grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr); + gap: 24px; + align-items: center; + color: var(--espresso); + background: transparent; +} + +.newsletter > div:first-child { + grid-column: 1; +} + +.newsletter h2 { + margin-bottom: 14px; +} + +.newsletter p { + max-width: 44ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 14px; +} + +.newsletter-form, +.newsletter-success { + grid-column: 3; +} + +.newsletter-form { + display: flex; + gap: 18px; + align-items: flex-end; +} + +.newsletter-form input { + height: 48px; + padding-inline: 0; + font-size: 15px; +} + +.newsletter-form button { + flex: 0 0 auto; +} + +.newsletter-success { + color: var(--espresso) !important; + font-size: 14px !important; +} + +/* Inner-page heroes */ + +.page-hero { + padding-block: 72px 48px; +} + +.page-hero .shell { + max-width: 1280px; +} + +.page-hero h1 { + max-width: 15ch; + margin-bottom: 20px; + font-size: clamp(36px, 5vw, 64px); +} + +.page-hero .shell > p:last-child:not(.eyebrow) { + max-width: 60ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 16px; +} + +/* Collection */ + +.collection-layout { + display: grid; + grid-template-columns: 220px minmax(0, 1fr); + gap: 64px; + align-items: start; +} + +.filter-panel { + position: sticky; + top: 96px; + padding: 0; + background: transparent; + border: 0; +} + +.filter-panel h2 { + margin-bottom: 12px; + color: var(--ink-2); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.filter-button { + position: relative; + width: 100%; + min-height: 42px; + display: flex; + gap: 8px; + align-items: center; + justify-content: space-between; + padding: 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-bottom: 1px solid var(--line); + border-radius: 0; + font-size: 13px; + text-align: left; +} + +.filter-button span { + font: 400 10px/1 var(--mono); +} + +.filter-button:hover { + color: var(--terracotta-deep); +} + +.filter-button[aria-pressed="true"] { + padding-left: 10px; + color: var(--espresso); + font-weight: 500; +} + +.filter-button[aria-pressed="true"]::before { + position: absolute; + top: 9px; + bottom: 9px; + left: 0; + width: 2px; + content: ""; + background: var(--terracotta); +} + +.collection-toolbar { + display: grid; + grid-template-columns: 1fr 190px; + gap: 24px; + align-items: end; + padding: 0; + background: transparent; + border: 0; +} + +.filter-drawer-trigger { + display: none; +} + +.collection-search { + min-width: 0; +} + +.collection-sort { + height: 40px; + padding: 0 34px 0 12px; + color: var(--espresso); + background-color: transparent; + background-image: linear-gradient(45deg, transparent 50%, var(--espresso) 50%), + linear-gradient(135deg, var(--espresso) 50%, transparent 50%); + background-position: + calc(100% - 16px) 17px, + calc(100% - 11px) 17px; + background-repeat: no-repeat; + background-size: 5px 5px, 5px 5px; + border: 1px solid var(--line-strong); + border-radius: 0; + font-size: 13px; + appearance: none; +} + +.result-summary { + margin: 18px 0 32px; + color: var(--ink-2); + letter-spacing: 0.08em; +} + +.empty-state { + grid-column: 1 / -1; + display: grid; + place-items: center; + padding: 64px 20px; + text-align: center; + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.empty-state h2, +.empty-state strong { + margin-bottom: 10px; + font: 500 26px/1.2 var(--serif); +} + +.empty-state p { + margin-bottom: 20px; + color: var(--ink-2); + font-size: 14px; +} + +.search-results .empty-state { + padding: 28px 18px; + text-align: left; + place-items: start; + border: 0; +} + +.search-results .empty-state strong { + font-size: 18px; +} + +/* Testing page */ + +.testing-lookup { + display: grid; + grid-template-columns: 1fr auto; + gap: 18px; + align-items: end; + max-width: 760px; + margin-bottom: 48px; +} + +.testing-lookup input { + height: 48px; + font-size: 16px; +} + +.lookup-results { + display: grid; + gap: 0; +} + +.lookup-card { + padding: 24px 0; + background: transparent; + border: 0; + border-top: 1px solid var(--line); +} + +.lookup-card:last-child { + border-bottom: 1px solid var(--line); +} + +.lookup-card h3 { + margin-bottom: 10px; + font: 500 22px/1.25 var(--serif); +} + +.lookup-card p { + max-width: 68ch; + margin-bottom: 10px; + color: var(--ink-2); + font-size: 13px; +} + +.testing-table, +.spec-table { + border-top: 1px solid var(--line); +} + +.spec-row { + min-height: 54px; + display: grid; + grid-template-columns: minmax(140px, 1fr) minmax(200px, 1.6fr); + gap: 24px; + align-items: center; + padding-block: 14px; + border-bottom: 1px solid var(--line); +} + +.testing-row { + min-height: 54px; + display: grid; + grid-template-columns: minmax(140px, 1fr) minmax(200px, 1.6fr) auto; + gap: 24px; + align-items: center; + padding-block: 14px; + border-bottom: 1px solid var(--line); +} + +.testing-row strong, +.spec-row strong { + font-size: 13px; + font-weight: 500; +} + +.testing-row > span, +.spec-row > span { + color: var(--ink-2); + font: 400 11px/1.5 var(--mono); + text-align: right; +} + +.testing-state { + color: var(--ink-2); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.02em; + text-align: right; +} + +/* PDP */ + +.product-page { + padding-block: 36px 96px; +} + +.breadcrumb { + margin-bottom: 28px; + color: var(--ink-2); + font: 400 10px/1.5 var(--mono); +} + +.breadcrumb a:hover { + color: var(--terracotta-deep); +} + +.pdp-grid { + display: grid; + grid-template-columns: minmax(0, 7fr) minmax(360px, 5fr); + gap: clamp(40px, 6vw, 84px); + align-items: start; +} + +.pdp-gallery { + min-width: 0; +} + +.pdp-main-image { + position: relative; + aspect-ratio: 4 / 5; + overflow: hidden; + background: var(--porcelain); +} + +.pdp-main-image > img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 300ms ease-out; +} + +.pdp-main-image .product-image-label { + top: 55.5%; + left: 34%; + width: 33%; +} + +.pdp-main-image .product-image-label strong { + font-size: clamp(12px, 1.2vw, 16px); +} + +.pdp-main-image .product-image-label span { + font-size: clamp(9px, 0.8vw, 11px); +} + +.pdp-thumbnails { + display: flex; + gap: 10px; + margin-top: 12px; +} + +.pdp-thumb { + width: 72px; + height: 72px; + display: block; + padding: 0; + overflow: hidden; + background: var(--porcelain); + border: 1px solid var(--line-strong); + border-radius: 0; +} + +.pdp-thumb[aria-current="true"] { + border-color: var(--espresso); + box-shadow: inset 0 -2px 0 var(--terracotta); +} + +.pdp-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.pdp-buybox { + position: sticky; + top: 96px; + padding: 0; + background: transparent; + border: 0; +} + +.pdp-buybox .product-category { + margin-bottom: 10px; +} + +.pdp-buybox h1 { + margin-bottom: 10px; + font: 500 clamp(36px, 4.2vw, 56px) / 1.05 var(--serif); + letter-spacing: -0.015em; +} + +.pdp-code { + margin-bottom: 24px; + color: var(--ink-2); + font: 400 11px/1.5 var(--mono); +} + +.pdp-testing-link { + min-height: 52px; + display: flex; + gap: 16px; + align-items: center; + justify-content: space-between; + padding-block: 14px; + color: var(--espresso); + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + border-radius: 0; + font: 400 11px/1.4 var(--mono); +} + +.pdp-testing-link:hover { + color: var(--terracotta-deep); +} + +.pdp-description { + margin: 24px 0; + color: var(--ink-2); + font-size: 15px; +} + +.pdp-price { + display: block; + margin-bottom: 24px; + font: 500 20px/1 var(--mono); + font-variant-numeric: tabular-nums; +} + +.selection-label { + display: flex; + justify-content: space-between; + margin-bottom: 10px; + font-size: 12px; + font-weight: 600; +} + +.selection-label span { + color: var(--ink-2); + font-weight: 400; +} + +.buy-controls { + display: grid; + grid-template-columns: 112px minmax(0, 1fr); + gap: 12px; +} + +.quantity-control { + height: 48px; + display: grid; + grid-template-columns: 36px 1fr 36px; + align-items: center; + border: 1px solid var(--line-strong); +} + +.quantity-control button, +.quantity-control input { + width: 100%; + height: 100%; + padding: 0; + text-align: center; + background: transparent; + border: 0; + border-radius: 0; + font: 500 13px/1 var(--mono); +} + +.quantity-control input { + appearance: textfield; +} + +.quantity-control input::-webkit-outer-spin-button, +.quantity-control input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.pdp-note { + margin: 12px 0 0; + color: var(--ink-2); + font-size: 11px; + line-height: 1.5; +} + +.buybox-cues { + display: grid; + gap: 0; + margin-top: 24px; + border-top: 1px solid var(--line); +} + +.buybox-cue { + min-height: 42px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0; + background: transparent; + border: 0; + border-bottom: 1px solid var(--line); +} + +.buybox-cue strong, +.buybox-cue span { + font: 400 10px/1.4 var(--mono); +} + +.buybox-cue strong { + color: var(--ink-2); + font-weight: 400; +} + +.detail-section { + padding-block: 96px; +} + +.detail-section.section-surface { + background: var(--porcelain); +} + +.detail-grid { + display: grid; + grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); + gap: 64px; + align-items: start; +} + +.detail-grid h2 { + margin-bottom: 16px; +} + +.detail-grid > div:first-child > p { + color: var(--ink-2); +} + +.accordion { + border-top: 1px solid var(--line); +} + +.accordion-item { + border-bottom: 1px solid var(--line); +} + +.accordion-trigger { + width: 100%; + min-height: 60px; + display: flex; + gap: 20px; + align-items: center; + justify-content: space-between; + padding: 18px 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font-size: 15px; + font-weight: 500; + text-align: left; +} + +.accordion-trigger::after { + font: 400 16px/1 var(--mono); + content: "+"; +} + +.accordion-trigger[aria-expanded="true"]::after { + content: "−"; +} + +.accordion-panel { + max-width: 72ch; + padding: 0 0 20px; + color: var(--ink-2); + font-size: 14px; +} + +.accordion-panel p:last-child { + margin-bottom: 0; +} + +.mobile-cart-bar { + display: none; +} + +/* Article, about, policies */ + +.article-shell { + max-width: 760px; + margin-inline: auto; +} + +.article-shell h1 { + margin-bottom: 20px; + font: 500 clamp(38px, 5.8vw, 64px) / 1.05 var(--serif); + letter-spacing: -0.015em; +} + +.article-lede { + margin-bottom: 48px; + color: var(--ink-2); + font-size: 18px; + line-height: 1.6; +} + +.article-shell h2 { + margin: 48px 0 14px; + font: 500 26px/1.2 var(--serif); +} + +.article-shell > p, +.article-shell li { + color: var(--ink-2); + font-size: 16px; + line-height: 1.7; +} + +.article-callout { + margin-block: 40px; + padding: 24px 28px; + color: var(--espresso); + background: var(--parchment); + border: 0; + border-left: 2px solid var(--terracotta); + border-radius: 0; + font-size: 14px; +} + +.article-sources { + margin-block: 48px 8px; + padding: 24px 28px; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + border-bottom: 1px solid var(--line-strong); +} + +.article-sources .eyebrow { + margin-bottom: 10px; +} + +.article-sources p:not(.eyebrow) { + margin-bottom: 14px; + color: var(--ink-2); + font-size: 13px; +} + +.article-sources ul { + margin: 0; + padding-left: 18px; +} + +.article-sources li { + margin-block: 6px; + font-size: 12px; + line-height: 1.5; +} + +.article-sources a { + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-underline-offset: 3px; +} + +.article-sources a:hover { + color: var(--terracotta-deep); +} + +.testing-source-wrap { + margin-top: 48px; +} + +.testing-source-wrap .article-sources { + max-width: 760px; + margin-inline: auto; +} + +/* Drawers, cart, toast */ + +.drawer-backdrop { + position: fixed; + z-index: 180; + inset: 0; + pointer-events: none; + background: var(--scrim); + opacity: 0; + transition: opacity 200ms ease-out; +} + +.drawer-backdrop[data-open="true"] { + pointer-events: auto; + opacity: 1; +} + +.cart-drawer, +.mobile-drawer { + position: fixed; + z-index: 190; + top: 0; + bottom: 0; + display: flex; + flex-direction: column; + color: var(--espresso); + background: var(--porcelain); + border-radius: 0; + box-shadow: var(--drawer-shadow); + transition: transform 280ms cubic-bezier(0.32, 0, 0.16, 1); +} + +.filter-drawer { + display: none; +} + +.cart-drawer { + right: 0; + width: min(420px, 92vw); + transform: translateX(102%); +} + +.mobile-drawer { + left: 0; + width: min(360px, 100vw); + transform: translateX(-102%); +} + +.cart-drawer[data-open="true"], +.mobile-drawer[data-open="true"] { + transform: translateX(0); +} + +.drawer-head { + min-height: 64px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 24px 12px; + border-bottom: 1px solid var(--line); +} + +.drawer-head h2 { + margin: 0; + font: 500 20px/1 var(--serif); +} + +.drawer-close { + width: 44px; + height: 44px; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font-size: 24px; + font-weight: 300; +} + +.mobile-nav { + display: flex; + flex-direction: column; + padding: 12px 24px 24px; +} + +.mobile-nav a { + min-height: 56px; + display: flex; + align-items: center; + border-bottom: 1px solid var(--line); + font: 500 26px/1.15 var(--serif); +} + +.mobile-nav a:nth-last-child(-n + 3) { + min-height: 46px; + font: 400 14px/1.3 var(--sans); +} + +.cart-items { + flex: 1; + padding: 8px 24px 24px; + overflow-y: auto; +} + +.cart-item { + display: grid; + grid-template-columns: 68px minmax(0, 1fr); + gap: 16px; + padding-block: 20px; + border-bottom: 1px solid var(--line); +} + +.cart-item > img { + width: 68px; + height: 84px; + object-fit: cover; + background: var(--parchment); +} + +.cart-item-top { + display: flex; + gap: 12px; + align-items: flex-start; + justify-content: space-between; +} + +.cart-item-top strong { + font-size: 13px; + font-weight: 500; +} + +.remove-item { + padding: 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-radius: 0; + font-size: 11px; + text-decoration: underline; + text-underline-offset: 3px; +} + +.cart-item-meta { + margin: 4px 0 12px; + color: var(--ink-2); + font: 400 9px/1.4 var(--mono); +} + +.cart-item-controls { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; +} + +.mini-quantity { + height: 32px; + display: grid; + grid-template-columns: 30px 30px 30px; + border: 1px solid var(--line-strong); +} + +.mini-quantity button, +.mini-quantity span { + display: grid; + place-items: center; + padding: 0; + background: transparent; + border: 0; + font: 400 11px/1 var(--mono); +} + +.cart-item-price { + font: 500 11px/1 var(--mono); +} + +.cart-footer { + padding: 20px 24px 28px; + border-top: 1px solid var(--line); +} + +.cart-subtotal { + display: flex; + justify-content: space-between; + margin-bottom: 18px; +} + +.cart-subtotal strong, +.cart-subtotal span { + font: 500 14px/1 var(--mono); +} + +.cart-terminus { + margin-bottom: 18px; + padding: 16px 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + font-size: 12px; +} + +.cart-terminus strong { + display: block; + margin-bottom: 4px; + color: var(--espresso); + font-weight: 500; +} + +.cart-footer .button, +.cart-footer button { + width: 100%; +} + +.cart-footer .text-link, +.cart-footer .remove-item { + width: auto; +} + +.cart-empty { + display: grid; + place-items: center; + padding: 64px 24px; + text-align: center; +} + +.cart-empty h3 { + margin-bottom: 10px; + font: 500 25px/1.2 var(--serif); +} + +.cart-empty p { + color: var(--ink-2); + font-size: 13px; +} + +.toast { + position: fixed; + z-index: 220; + right: 24px; + bottom: 24px; + max-width: min(360px, calc(100vw - 48px)); + padding: 13px 16px; + pointer-events: none; + color: var(--cream); + background: var(--espresso-deep); + border-radius: 0; + box-shadow: var(--overlay-shadow); + font-size: 13px; + opacity: 0; + transform: translateY(8px); + transition: + opacity 160ms ease-out, + transform 160ms ease-out; +} + +.toast[data-open="true"] { + opacity: 1; + transform: translateY(0); +} + +/* Footer */ + +.site-footer { + padding-block: 96px 40px; + color: var(--cream); + background: var(--espresso); +} + +.footer-brand { + grid-column: 1 / -1; + margin-bottom: 48px; + text-align: center; +} + +.footer-brand .wordmark, +.site-footer .wordmark-name { + color: var(--cream); + font-size: 28px; +} + +.footer-brand p { + margin: 16px auto 0; + color: var(--gold-bright); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.footer-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 32px 48px; +} + +.footer-column h2 { + margin-bottom: 16px; + color: var(--gold-bright); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.footer-column a { + display: block; + margin-bottom: 10px; + color: rgba(243, 234, 218, 0.78); + font-size: 13px; +} + +.footer-column a:hover { + color: var(--cream); + text-decoration: underline; + text-underline-offset: 4px; +} + +.footer-bottom { + display: flex; + gap: 24px; + align-items: flex-start; + justify-content: space-between; + margin-top: 64px; + padding-top: 24px; + color: rgba(243, 234, 218, 0.62); + border-top: 1px solid var(--line-on-dark); + font: 400 10px/1.5 var(--mono); +} + +/* Optional reveal contract */ + +html[data-reveal-armed] .reveal { + opacity: 0; + transform: translateY(14px); +} + +html[data-reveal-armed] .reveal.is-visible { + opacity: 1; + transform: none; + transition: + opacity 700ms var(--ease) var(--reveal-delay, 0ms), + transform 700ms var(--ease) var(--reveal-delay, 0ms); +} + +/* Tablet */ + +@media (max-width: 1199px) { + :root { + --shell: calc(100vw - 48px); + } + + .header-main { + min-height: 68px; + gap: 20px; + } + + .primary-nav { + gap: 18px; + } + + .primary-nav a { + font-size: 12px; + } + + .wordmark-name, + .wordmark-copy { + font-size: 22px; + } + + .search-wrap { + width: 170px; + } + + .search-wrap:focus-within { + width: 220px; + } + + .hero-grid { + min-height: 0; + padding-block: 48px 64px; + } + + .hero-copy { + grid-column: 1 / span 6; + } + + .hero-visual { + grid-column: 7 / -1; + } + + .product-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .testing-feature { + padding-inline: 24px; + } +} + +/* Mobile shell begins at 960 so PDP/filter behavior matches Fable */ + +@media (max-width: 960px) { + .site-header { + display: grid; + grid-template-rows: 56px 48px; + } + + .header-main { + width: 100%; + min-height: 56px; + display: grid; + grid-template-columns: 44px 1fr 44px; + gap: 8px; + padding-inline: 20px; + } + + .primary-nav { + display: none; + } + + .header-main > .wordmark { + grid-column: 2; + justify-self: center; + } + + .header-main .wordmark-name, + .header-main .wordmark-copy { + font-size: 20px; + } + + .header-utilities, + .header-actions { + display: contents; + } + + .mobile-menu-button { + grid-column: 1; + grid-row: 1; + display: inline-grid; + justify-self: start; + } + + .mobile-menu-button svg { + width: 18px; + height: 18px; + } + + .header-actions [data-cart-open], + .header-utilities [data-cart-open] { + grid-column: 3; + grid-row: 1; + justify-self: end; + } + + .search-wrap { + grid-column: 1 / -1; + grid-row: 2; + width: 100%; + padding-inline: 20px; + border-top: 1px solid var(--line); + } + + .search-wrap:focus-within { + width: 100%; + } + + .search-input { + height: 48px; + padding-right: 40px; + font-size: 16px; + } + + .search-results { + top: 48px; + right: 0; + left: 0; + width: 100%; + } + + .search-shortcut { + right: 20px; + } + + .category-rail, + .category-index { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .testing-feature { + grid-template-columns: 1fr; + gap: 56px; + padding-block: 72px; + } + + .testing-feature-copy, + .testing-document { + grid-column: 1; + } + + .bundle-grid, + .education-grid, + .journal-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .newsletter { + grid-template-columns: 1fr; + gap: 32px; + } + + .newsletter > div:first-child, + .newsletter-form, + .newsletter-success { + grid-column: 1; + } + + .collection-layout { + grid-template-columns: 1fr; + gap: 32px; + } + + .filter-panel { + display: none; + } + + .filter-drawer-trigger { + min-height: 48px; + display: flex; + grid-column: 1 / -1; + align-items: center; + justify-content: space-between; + padding-inline: 14px; + color: var(--espresso); + background: var(--parchment); + border: 1px solid var(--line-strong); + border-radius: 0; + font-size: 13px; + font-weight: 500; + text-align: left; + } + + .filter-drawer-trigger [data-filter-label] { + color: var(--ink-2); + font: 400 10px/1.2 var(--mono); + } + + .filter-drawer { + position: fixed; + z-index: 190; + right: 0; + bottom: 0; + left: 0; + max-height: min(76vh, 620px); + display: flex; + flex-direction: column; + visibility: hidden; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + box-shadow: 0 -24px 64px rgba(58, 42, 31, 0.18); + transform: translateY(102%); + transition: + transform 260ms cubic-bezier(0.32, 0, 0.16, 1), + visibility 0s linear 260ms; + } + + .filter-drawer[data-open="true"] { + visibility: visible; + transform: translateY(0); + transition-delay: 0s; + } + + .filter-drawer-options { + padding: 8px 24px calc(24px + env(safe-area-inset-bottom)); + overflow-y: auto; + } + + .filter-drawer .filter-button { + min-height: 52px; + padding-inline: 0; + } + + .filter-drawer .filter-button[aria-pressed="true"] { + padding-left: 12px; + } + + .filter-drawer .filter-button[aria-pressed="true"]::before { + top: 10px; + bottom: 10px; + } + + .pdp-grid { + grid-template-columns: 1fr; + gap: 40px; + } + + .pdp-buybox { + position: static; + } + + .mobile-cart-bar { + position: fixed; + z-index: 70; + right: 0; + bottom: 0; + left: 0; + min-height: 56px; + display: flex; + gap: 16px; + align-items: center; + justify-content: space-between; + padding: 8px 16px calc(8px + env(safe-area-inset-bottom)); + pointer-events: none; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + box-shadow: 0 -8px 30px rgba(58, 42, 31, 0.12); + opacity: 0; + transform: translateY(105%); + transition: + opacity 200ms ease-out, + transform 220ms ease-out; + } + + .mobile-cart-bar[data-visible="true"] { + pointer-events: auto; + opacity: 1; + transform: translateY(0); + } + + .mobile-cart-caption { + min-width: 0; + display: block; + text-align: left; + } + + .mobile-cart-caption strong { + display: block; + overflow: hidden; + font-size: 13px; + font-weight: 500; + text-overflow: ellipsis; + white-space: nowrap; + } + + .mobile-cart-caption > span { + display: block; + color: var(--ink-2); + font: 400 11px/1.4 var(--mono); + } + + .mobile-cart-action { + min-width: 96px; + min-height: 40px; + display: grid; + place-items: center; + padding-inline: 16px; + color: var(--cream); + background: var(--espresso); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + } + + .detail-grid { + grid-template-columns: 1fr; + gap: 28px; + } + + .footer-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (max-width: 767px) { + :root { + --shell: calc(100vw - 40px); + } + + .section { + padding-block: 64px; + } + + .section-tight { + padding-block: 64px; + } + + .hero-grid { + display: block; + padding-block: 40px 64px; + } + + .hero-copy { + max-width: none; + } + + .hero-copy h1 { + margin-bottom: 16px; + font-size: 34px; + } + + .hero-copy > p:not(.eyebrow) { + font-size: 15px; + } + + .hero-actions { + display: grid; + gap: 20px; + margin-top: 28px; + } + + .hero-actions .button-primary { + width: 100%; + } + + .hero-actions .button-secondary { + justify-self: center; + } + + .hero-visual { + width: auto; + height: auto; + aspect-ratio: 4 / 5; + margin: 40px calc((100vw - var(--shell)) / -2) 0; + } + + .hero-visual > img { + object-position: 64% center; + } + + .section-head { + display: grid; + gap: 18px; + align-items: start; + margin-bottom: 32px; + } + + .category-section-head { + margin-top: 72px; + } + + .category-rail, + .category-index { + grid-template-columns: 1fr; + gap: 0; + } + + .category-tile, + .category-index-item { + min-height: 72px; + align-items: center; + padding-block: 16px; + } + + .category-arrow { + align-self: center; + } + + .product-grid { + gap: 40px 12px; + } + + .product-card .add-button { + padding-inline: 10px; + font-size: 10px; + } + + .testing-feature { + padding-inline: 20px; + } + + .document-head { + display: block; + } + + .document-row { + grid-template-columns: 1fr; + gap: 6px; + } + + .document-row span { + text-align: left; + } + + .bundle-grid, + .education-grid, + .journal-grid, + .value-grid { + grid-template-columns: 1fr; + } + + .newsletter-form { + display: grid; + } + + .newsletter-form button { + width: 100%; + } + + .page-hero { + padding-block: 56px 32px; + } + + .page-hero h1 { + font-size: 38px; + } + + .collection-toolbar { + grid-template-columns: 1fr; + } + + .testing-lookup { + grid-template-columns: 1fr; + } + + .testing-lookup .button { + width: 100%; + } + + .testing-row, + .spec-row { + grid-template-columns: 1fr; + gap: 4px; + } + + .testing-row > span, + .spec-row > span { + text-align: left; + } + + .pdp-main-image { + width: 100vw; + margin-left: calc((100% - 100vw) / 2); + } + + .buy-controls { + grid-template-columns: 104px minmax(0, 1fr); + } + + .detail-section { + padding-block: 64px; + } + + .footer-grid { + grid-template-columns: 1fr; + } + + .footer-bottom { + display: grid; + } + + .toast { + right: 16px; + bottom: calc(72px + env(safe-area-inset-bottom)); + left: 16px; + max-width: none; + } +} + +@media (max-width: 360px) { + :root { + --shell: calc(100vw - 32px); + } + + .concept-banner { + min-height: 40px; + padding-inline: 14px; + font-size: 9px; + } + + .header-main { + padding-inline: 16px; + } + + .search-wrap { + padding-inline: 16px; + } + + .search-shortcut { + right: 16px; + } + + .product-name { + font-size: 13px; + } + + .product-card .product-category { + font-size: 8px; + } + + .testing-micro span, + .testing-micro a { + font-size: 8px; + } + + .testing-micro { + align-items: flex-start; + } + + .product-buy-row { + gap: 6px; + } + + .price { + font-size: 12px; + } + + .product-card .add-button { + padding-inline: 8px; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } + + html[data-reveal-armed] .reveal, + .toast, + .mobile-cart-bar { + transform: none !important; + } + + html[data-reveal-armed] .reveal { + opacity: 1 !important; + } + + .product-image-wrap:hover > img, + .bundle-card:hover .bundle-image img { + transform: none; + } +} + +/* OVO Labs Porcelain + Fable 5 binding override: Datum structure × OVO materials. */ + +:root { + --canvas: #ffffff; + --surface: #fbf9f6; + --soft: #f3eee6; + --ink: #2a1d14; + --muted: #6b5d51; + --line: #e8e1d6; + --primary: #3a2a1f; + --hover: #241810; + --accent: #8f3b2a; + --accent-soft: #f6e7d6; + --success: #4a6741; + --danger: #b3261e; + + /* Compatibility aliases used by the shared OVO component system. */ + --cream: #f3eada; + --porcelain: var(--surface); + --parchment: var(--soft); + --espresso: var(--primary); + --espresso-deep: var(--ink); + --ink-2: var(--muted); + --terracotta: #b9553e; + --terracotta-deep: var(--accent); + --gold: #b08a52; + --gold-bright: #c69b63; + --cream-on-dark: #f3eada; + --line-strong: #cfc4b5; + --line-on-dark: rgba(243, 234, 218, 0.2); + --shell: min(1280px, calc(100vw - 96px)); + --drawer-shadow: 0 24px 64px rgba(58, 42, 31, 0.18); + --overlay-shadow: 0 14px 42px rgba(42, 29, 20, 0.18); +} + +html { + color-scheme: light; +} + +body { + color: var(--ink); + background: var(--canvas); + line-height: 1.55; +} + +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 2px; +} + +.site-footer :focus-visible, +.concept-banner :focus-visible, +.testing-feature :focus-visible { + outline-color: #f3eada; +} + +.eyebrow, +.product-category, +.price-label, +.result-summary { + color: var(--accent); +} + +.button, +.icon-button, +.cart-button, +.add-button, +.pdp-add, +.newsletter-form button, +.filter-drawer-trigger { + border-radius: 4px; +} + +.button, +.add-button, +.pdp-add, +.newsletter-form button { + transition: + color 180ms ease, + background-color 180ms ease, + border-color 180ms ease, + opacity 180ms ease, + transform 180ms var(--ease); +} + +.button:hover, +.add-button:hover, +.pdp-add:hover, +.newsletter-form button:hover { + transform: translateY(-1px); +} + +.button:active, +.add-button:active, +.pdp-add:active, +.newsletter-form button:active { + transform: translateY(0); +} + +.button-primary, +.add-button, +.pdp-add, +.newsletter-form button { + color: #f3eada; + background: var(--primary); + border-color: var(--primary); +} + +.button-primary:hover, +.add-button:hover, +.pdp-add:hover, +.newsletter-form button:hover { + color: #f3eada; + background: var(--hover); + border-color: var(--hover); +} + +.button-secondary { + color: var(--primary); + background: var(--canvas); + border-color: var(--line-strong); +} + +.button-secondary:hover { + color: var(--accent); + background: var(--accent-soft); + border-color: var(--accent); +} + +.add-button.is-added, +.pdp-add.is-added, +.mobile-cart-bar.is-added { + color: #fff; + background: var(--success); + border-color: var(--success); +} + +/* Fiction banner and product-finding shell */ + +.concept-banner { + min-height: 32px; + padding: 6px 20px; + color: #f3eada; + background: var(--ink); + font-size: 10px; + line-height: 1.4; +} + +.site-header { + position: sticky; + top: 0; + color: var(--ink); + background: rgba(255, 255, 255, 0.98); + border-color: var(--line); + box-shadow: + 0 1px 0 var(--line), + 0 8px 24px rgba(42, 29, 20, 0.04); + backdrop-filter: blur(16px); +} + +.header-main { + min-height: 64px; + display: grid; + grid-template-columns: auto minmax(0, 1fr) auto; + gap: 28px; + align-items: center; +} + +.header-main > .wordmark { + grid-column: 1; + grid-row: 1; + min-height: 42px; + display: inline-flex; + align-items: center; + justify-self: start; +} + +.wordmark-name, +.wordmark-copy { + color: var(--ink); + font-size: 23px; +} + +.wordmark-dot { + color: var(--gold); +} + +.primary-nav { + grid-column: 2; + grid-row: 1; + gap: 24px; + justify-self: start; +} + +.primary-nav a { + color: var(--ink); + font-size: 14px; + letter-spacing: 0; + text-decoration: none; +} + +.primary-nav a::after { + position: absolute; + right: 0; + bottom: -21px; + left: 0; + height: 2px; + content: ""; + background: var(--accent); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.primary-nav a:hover, +.primary-nav a[aria-current="page"] { + color: var(--accent); + text-decoration: none; +} + +.primary-nav a:hover::after, +.primary-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +.header-utilities, +.header-actions { + grid-column: 3; + grid-row: 1; + display: flex; + gap: 12px; + align-items: center; + justify-self: end; +} + +.search-wrap { + width: 320px; +} + +.search-wrap:focus-within { + width: 320px; +} + +.search-input { + height: 42px; + padding: 0 44px 0 40px; + color: var(--ink); + background: var(--soft); + border: 1px solid transparent; + border-radius: 4px; + font: 400 14px/1 var(--sans); +} + +.search-input::placeholder { + color: var(--muted); + opacity: 1; +} + +.search-input:focus { + color: var(--ink); + background: var(--canvas); + border: 1.5px solid var(--accent); + outline: 0; +} + +.search-shortcut { + color: var(--muted); + font-size: 9px; +} + +.search-results { + top: calc(100% + 8px); + color: var(--ink); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; + box-shadow: var(--overlay-shadow); +} + +.search-result { + border-color: var(--line); +} + +.search-result:hover, +.search-result[aria-selected="true"] { + color: var(--ink); + background: var(--accent-soft); +} + +.icon-button, +.cart-button { + position: relative; + width: 42px; + height: 42px; + min-width: 42px; + display: inline-grid; + place-items: center; + padding: 0; + color: var(--ink); + background: var(--canvas); + border: 1px solid var(--line); +} + +.mobile-menu-button { + display: none; +} + +.icon-button:hover, +.cart-button:hover { + color: var(--accent); + background: var(--accent-soft); + border-color: var(--accent); +} + +.cart-count { + position: absolute; + top: -6px; + right: -6px; + min-width: 18px; + height: 18px; + display: grid; + place-items: center; + padding: 0 4px; + color: #fff; + background: var(--accent); + border: 2px solid var(--canvas); + border-radius: 999px; + font: 500 9px/1 var(--mono); +} + +.category-nav-wrap { + display: block; + background: var(--canvas); + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.category-nav { + min-height: 42px; + display: flex; + gap: 34px; + align-items: center; + overflow-x: auto; + scrollbar-width: none; +} + +.category-nav::-webkit-scrollbar { + display: none; +} + +.category-nav a { + position: relative; + flex: 0 0 auto; + min-height: 42px; + display: inline-flex; + align-items: center; + color: var(--muted); + font: 500 10px/1 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.category-nav a::after { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2px; + content: ""; + background: var(--accent); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.category-nav a:hover, +.category-nav a[aria-current="page"] { + color: var(--accent); +} + +.category-nav a:hover::after, +.category-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +/* Homepage: Datum's hierarchy, OVO's materials */ + +.home-hero { + background: var(--canvas); +} + +.hero-grid { + min-height: 510px; + display: grid; + grid-template-columns: minmax(0, 1.08fr) minmax(420px, 0.92fr); + gap: 56px; + align-items: center; + padding-block: 48px 56px; +} + +.hero-copy { + grid-column: 1; + max-width: 650px; +} + +.hero-copy .eyebrow::after { + display: none; +} + +.hero-copy h1 { + max-width: 12ch; + margin: 0 0 24px; + color: var(--ink); + font: 500 clamp(44px, 5vw, 64px) / 1.04 var(--serif); + letter-spacing: -0.025em; +} + +.hero-copy h1 em { + color: var(--accent); + font-weight: 400; +} + +.hero-copy > p:not(.eyebrow) { + max-width: 54ch; + color: var(--muted); + font-size: 18px; + line-height: 1.58; +} + +.hero-actions { + gap: 12px; + margin-top: 32px; +} + +.hero-actions .button-primary, +.hero-actions .button-secondary { + min-height: 48px; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 24px; + border: 1px solid; + border-radius: 4px; + font-size: 12px; + font-weight: 600; + letter-spacing: 0.04em; + text-decoration: none; + text-transform: uppercase; +} + +.hero-actions .button-primary { + border-color: var(--primary); +} + +.hero-actions .button-secondary { + color: var(--primary); + background: var(--canvas); + border-color: var(--line-strong); +} + +.hero-actions .button-secondary:hover { + color: var(--accent); + background: var(--accent-soft); + border-color: var(--accent); +} + +.hero-visual { + position: relative; + grid-column: 2; + height: auto; + aspect-ratio: 4 / 3; + margin: 0; + overflow: hidden; + background: var(--soft); + border-radius: 16px; +} + +.hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 62% center; + animation: porcelain-hero-settle 600ms var(--ease) both; +} + +@keyframes porcelain-hero-settle { + from { + opacity: 0.85; + transform: scale(1.03); + } + to { + opacity: 1; + transform: scale(1); + } +} + +.hero-product-chip, +.hero-coa-card { + position: absolute; + z-index: 2; + display: grid !important; + color: var(--ink); + background: rgba(251, 249, 246, 0.96); + border: 1px solid rgba(232, 225, 214, 0.92); + border-radius: 10px; + box-shadow: var(--overlay-shadow); + backdrop-filter: blur(10px); +} + +.hero-product-chip { + right: 18px; + bottom: 18px; + width: min(220px, calc(100% - 36px)); + gap: 5px; + padding: 16px; +} + +.hero-product-chip > span, +.hero-coa-card > span { + color: var(--muted); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.hero-product-chip strong { + font-size: 15px; + font-weight: 600; +} + +.hero-product-chip p { + margin: 0; + color: var(--accent); + font: 400 10px/1.4 var(--mono); +} + +.hero-coa-card { + bottom: 18px; + left: 18px; + width: 198px; + gap: 10px; + padding: 14px; +} + +.hero-coa-row { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; + padding-top: 8px; + border-top: 1px solid var(--line); +} + +.hero-coa-row span, +.hero-coa-row strong { + color: var(--muted); + font: 400 9px/1.25 var(--mono); +} + +.hero-coa-row strong { + color: var(--ink); + font-weight: 500; +} + +.testing-status-dot { + width: 6px; + height: 6px; + display: inline-block; + margin-right: 6px; + background: var(--accent); + border-radius: 50%; +} + +.trust-strip { + min-height: 64px; + display: grid !important; + grid-template-columns: repeat(4, minmax(0, 1fr)); + color: var(--ink); + background: var(--soft); + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.trust-item { + min-width: 0; + display: flex; + gap: 9px; + align-items: center; + justify-content: center; + padding: 14px 20px; + border-right: 1px solid var(--line); +} + +.trust-item:last-child { + border-right: 0; +} + +.trust-item strong { + color: var(--accent); + font: 500 11px/1.2 var(--mono); + letter-spacing: 0.04em; + text-transform: uppercase; +} + +.trust-item span { + color: var(--ink); + font-size: 12px; + font-weight: 500; +} + +.section { + padding-block: 72px; +} + +.section-tight { + padding-block: 64px; +} + +.section-surface { + background: var(--soft); +} + +.section-head { + margin-bottom: 32px; +} + +.section-head h2, +.testing-feature h2, +.newsletter h2, +.page-hero h1, +.detail-section h2 { + color: var(--ink); + font-weight: 500; +} + +.section-head > p, +.section-head > div > p:last-child:not(.eyebrow) { + color: var(--muted); +} + +.collection-feature-section { + background: var(--canvas); +} + +.category-section-head { + margin-top: 64px; + margin-bottom: 28px; +} + +.category-rail, +.category-index { + gap: 16px; +} + +.category-tile, +.category-index-item { + min-height: 112px; + align-items: center; + padding: 18px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; + transition: + border-color 180ms ease, + box-shadow 180ms ease, + transform 180ms var(--ease); +} + +.category-tile::before, +.category-index-item::before { + color: var(--accent); +} + +.category-tile strong, +.category-index-item strong { + color: var(--ink); + font: 600 16px/1.3 var(--sans); +} + +.category-tile span span, +.category-index-item small { + color: var(--muted); +} + +.category-tile:hover, +.category-index-item:hover { + border-color: var(--accent); + box-shadow: 0 6px 20px rgba(42, 29, 20, 0.06); + transform: translateY(-2px); +} + +/* Product cards */ + +.product-grid { + gap: 24px; +} + +.product-card { + min-width: 0; + overflow: hidden; + color: var(--ink); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; + transition: + border-color 200ms ease, + box-shadow 200ms ease, + transform 200ms var(--ease); +} + +.product-card:hover, +.product-card:focus-within { + border-color: #d6c8b9; + box-shadow: 0 6px 20px rgba(42, 29, 20, 0.08); + transform: translateY(-3px); +} + +.product-image-wrap { + aspect-ratio: 1; + background: var(--soft); +} + +.product-image-wrap > img { + object-fit: cover; + object-position: center 46%; +} + +.product-image-label { + top: 55%; + left: 33%; + width: 34%; +} + +.product-card-body { + padding: 16px; +} + +.product-card .product-category { + color: var(--accent); + font: 500 9px/1.35 var(--mono); + letter-spacing: 0.06em; +} + +.product-name { + color: var(--ink); + font-size: 16px; + font-weight: 600; +} + +.product-name a:hover { + color: var(--accent); +} + +.product-format, +.product-description, +.testing-micro span { + color: var(--muted); +} + +.product-description { + min-height: 40px; +} + +.testing-micro { + min-height: 42px; + padding: 8px 10px; + background: var(--accent-soft); + border: 0; + border-radius: 4px; +} + +.testing-micro span, +.testing-micro a { + font-size: 9px; +} + +.testing-micro a { + min-height: 24px; + display: inline-flex; + align-items: center; + color: var(--accent); +} + +.product-buy-row { + grid-template-columns: auto 1fr; + gap: 12px; + align-items: center; +} + +.price { + color: var(--ink); + font: 500 15px/1.2 var(--sans); + font-variant-numeric: tabular-nums; +} + +.product-card .add-button { + min-height: 44px; + justify-self: stretch; + color: #f3eada; + background: var(--primary); + border-color: var(--primary); + border-radius: 4px; + font-size: 11px; +} + +@media (hover: hover) and (pointer: fine) { + .product-card .add-button { + opacity: 0; + transform: translateY(4px); + } + + .product-card:hover .add-button, + .product-card:focus-within .add-button { + opacity: 1; + transform: translateY(0); + } +} + +/* Supporting commerce surfaces */ + +.testing-feature-section { + padding: 0; + background: var(--ink); +} + +.testing-feature { + color: #f3eada; + background: var(--ink); +} + +.testing-feature-copy .eyebrow { + color: #c69b63; +} + +.testing-feature-copy h2, +.document-row strong { + color: #f3eada; +} + +.testing-feature-copy > p:not(.eyebrow), +.document-row span, +.document-head { + color: rgba(243, 234, 218, 0.78); +} + +.testing-document-dark .testing-state { + color: var(--ink); +} + +.testing-feature-copy .button-secondary { + min-height: 44px; + display: inline-flex; + align-items: center; + padding: 0 18px; + color: #f3eada; + background: transparent; + border: 1px solid rgba(243, 234, 218, 0.45); + border-radius: 4px; + text-decoration: none; +} + +.testing-feature-copy .button-secondary:hover { + color: var(--ink); + background: #f3eada; + border-color: #f3eada; +} + +.bundle-card, +.education-card, +.journal-card, +.value-card, +.lookup-card { + overflow: hidden; + color: var(--ink); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; +} + +.bundle-image, +.education-card, +.journal-card { + background: var(--soft); +} + +.bundle-body, +.education-card, +.journal-card, +.value-card { + padding: 20px; +} + +.bundle-image { + aspect-ratio: 4 / 3; +} + +.bundle-image img { + object-fit: cover; +} + +.bundle-footer .add-button { + min-height: 44px; + border-radius: 4px; +} + +.newsletter-section, +.newsletter { + background: var(--soft); +} + +.newsletter { + padding: 36px; + border: 1px solid var(--line); + border-radius: 10px; +} + +.newsletter h2 { + color: var(--ink); +} + +.newsletter p { + color: var(--muted); +} + +.newsletter-form input, +.collection-search, +.testing-lookup input { + color: var(--ink); + background: var(--canvas); + border: 1px solid var(--line-strong); + border-radius: 4px; +} + +.newsletter-form input:focus, +.collection-search:focus, +.testing-lookup input:focus { + border-color: var(--accent); + outline: 2px solid var(--accent-soft); + outline-offset: 1px; +} + +.newsletter-form input[aria-invalid="true"], +.collection-search[aria-invalid="true"], +.testing-lookup input[aria-invalid="true"] { + border-color: var(--danger); +} + +.page-hero { + padding-block: 56px 36px; + background: var(--canvas); +} + +.page-hero h1 { + max-width: 16ch; + color: var(--ink); +} + +.page-hero .shell > p:last-child:not(.eyebrow) { + color: var(--muted); +} + +.filter-panel { + top: 128px; + padding: 18px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; +} + +.filter-button { + color: var(--muted); + border-color: var(--line); +} + +.filter-button:hover, +.filter-button[aria-pressed="true"] { + color: var(--accent); +} + +.filter-button[aria-pressed="true"]::before { + background: var(--accent); +} + +.collection-toolbar { + gap: 16px; + padding: 14px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; +} + +.collection-sort { + height: 44px; + color: var(--ink); + background-color: var(--canvas); + border-color: var(--line-strong); + border-radius: 4px; +} + +.empty-state { + padding: 56px 24px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; +} + +.lookup-card { + margin-bottom: 12px; + padding: 22px; +} + +.testing-table, +.spec-table { + border-color: var(--line); +} + +.testing-row, +.spec-row { + border-color: var(--line); +} + +.testing-row > span, +.spec-row > span, +.testing-state { + color: var(--muted); +} + +.testing-state { + padding: 5px 8px; + background: var(--accent-soft); + border-radius: 4px; +} + +/* PDP */ + +.product-page { + padding-block: 36px 84px; + background: var(--canvas); +} + +.breadcrumb, +.pdp-code, +.pdp-description, +.pdp-note, +.buybox-cue strong { + color: var(--muted); +} + +.breadcrumb a:hover, +.pdp-testing-link:hover { + color: var(--accent); +} + +.pdp-grid { + grid-template-columns: minmax(0, 6fr) minmax(380px, 6fr); + gap: clamp(40px, 6vw, 80px); +} + +.pdp-main-image { + overflow: hidden; + background: var(--soft); + border-radius: 16px; +} + +.pdp-main-image > img { + object-position: center 46%; +} + +.pdp-thumb { + overflow: hidden; + background: var(--soft); + border-color: var(--line); + border-radius: 4px; +} + +.pdp-thumb[aria-current="true"] { + border-color: var(--accent); + box-shadow: inset 0 -2px 0 var(--accent); +} + +.pdp-buybox { + top: 144px; + padding: 28px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 10px; +} + +.pdp-buybox h1, +.pdp-price { + color: var(--ink); +} + +.pdp-testing-link { + color: var(--ink); + background: var(--accent-soft); + border: 0; + border-radius: 4px; + padding-inline: 12px; +} + +.quantity-control { + height: 48px; + overflow: hidden; + background: var(--canvas); + border-color: var(--line-strong); + border-radius: 4px; +} + +.quantity-control button { + min-width: 40px; +} + +.buybox-cues, +.accordion { + border-color: var(--line); +} + +.buybox-cue, +.accordion-item { + border-color: var(--line); +} + +.detail-section.section-surface { + background: var(--soft); +} + +/* Drawers and footer */ + +.drawer-backdrop { + background: rgba(42, 29, 20, 0.46); +} + +.cart-drawer, +.mobile-drawer, +.filter-drawer { + color: var(--ink); + background: var(--surface); + box-shadow: var(--drawer-shadow); +} + +.drawer-head, +.cart-item, +.cart-footer { + border-color: var(--line); +} + +.drawer-close { + border-radius: 4px; +} + +.mobile-nav-heading { + display: block; + padding: 18px 0 8px; + color: var(--accent); + border-top: 1px solid var(--line); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.mobile-nav > a:nth-child(-n + 4) { + font: 600 20px/1.3 var(--sans); +} + +.mobile-nav .mobile-category-link { + min-height: 42px; + padding-left: 12px; + color: var(--muted); + font: 500 13px/1.3 var(--sans); +} + +.remove-item { + color: var(--danger); +} + +.toast { + color: #fff; + background: var(--success); + border-radius: 4px; +} + +.site-footer { + color: #f3eada; + background: var(--ink); + border-color: rgba(243, 234, 218, 0.16); +} + +.site-footer .wordmark-name, +.site-footer h2, +.site-footer a, +.site-footer p, +.site-footer span, +.footer-bottom { + color: #f3eada; +} + +.site-footer a:hover { + color: #fff; +} + +.site-footer .footer-column a { + width: 100%; + min-height: 28px; + display: flex; + align-items: center; +} + +/* Responsive Porcelain contract */ + +@media (max-width: 1199px) { + :root { + --shell: calc(100vw - 48px); + } + + .header-main { + gap: 20px; + } + + .primary-nav { + gap: 18px; + } + + .search-wrap, + .search-wrap:focus-within { + width: 260px; + } + + .hero-grid { + grid-template-columns: minmax(0, 1fr) minmax(380px, 0.9fr); + gap: 36px; + } + + .product-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } +} + +@media (max-width: 960px) { + .site-header { + display: block; + } + + .header-main { + width: 100%; + min-height: 112px; + display: grid; + grid-template-columns: minmax(0, 1fr) 44px 44px; + grid-template-rows: 56px 56px; + gap: 0 8px; + padding-inline: 20px; + } + + .primary-nav { + display: none; + } + + .header-main > .wordmark { + grid-column: 1; + grid-row: 1; + justify-self: start; + } + + .header-main .wordmark-name { + font-size: 21px; + } + + .header-utilities, + .header-actions { + display: contents; + } + + .mobile-menu-button { + grid-column: 2; + grid-row: 1; + display: inline-grid; + justify-self: end; + } + + .header-utilities [data-cart-open], + .header-actions [data-cart-open] { + grid-column: 3; + grid-row: 1; + justify-self: end; + } + + .search-wrap, + .search-wrap:focus-within { + grid-column: 1 / -1; + grid-row: 2; + width: 100%; + align-self: center; + padding: 0; + border: 0; + } + + .search-input { + height: 44px; + } + + .search-shortcut { + right: 14px; + } + + .search-results { + top: calc(100% + 4px); + } + + .category-nav-wrap { + position: relative; + overflow: hidden; + } + + .category-nav-wrap::after { + position: absolute; + z-index: 2; + top: 0; + right: 0; + bottom: 0; + width: 32px; + pointer-events: none; + content: ""; + background: linear-gradient(90deg, transparent, var(--canvas)); + } + + .category-nav { + width: 100%; + min-height: 42px; + gap: 26px; + padding-inline: 20px 44px; + } + + .hero-grid { + min-height: 0; + grid-template-columns: 1fr; + gap: 36px; + padding-block: 40px 48px; + } + + .hero-copy, + .hero-visual { + grid-column: 1; + } + + .hero-copy { + max-width: 720px; + } + + .hero-copy h1 { + max-width: 13ch; + } + + .hero-visual { + width: 100%; + aspect-ratio: 4 / 3; + } + + .trust-strip { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .trust-item:nth-child(2) { + border-right: 0; + } + + .trust-item:nth-child(-n + 2) { + border-bottom: 1px solid var(--line); + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 18px; + } + + .testing-feature { + gap: 48px; + padding-block: 64px; + } + + .pdp-grid { + grid-template-columns: 1fr; + } + + .pdp-buybox { + position: static; + } + + .filter-drawer-trigger { + color: var(--ink); + background: var(--surface); + border-color: var(--line-strong); + border-radius: 4px; + } + + .filter-drawer { + border-radius: 16px 16px 0 0; + } + + .mobile-cart-bar { + color: var(--ink); + background: var(--surface); + border-color: var(--line); + } + + .mobile-cart-action { + color: #f3eada; + background: var(--primary); + border-radius: 4px; + } +} + +@media (max-width: 767px) { + :root { + --shell: calc(100vw - 40px); + } + + .concept-banner { + min-height: 42px; + padding-inline: 16px; + font-size: 9px; + } + + .hero-grid { + display: grid; + padding-block: 32px 40px; + } + + .hero-copy h1 { + margin-bottom: 18px; + font-size: 40px; + } + + .hero-copy > p:not(.eyebrow) { + font-size: 16px; + } + + .hero-actions { + display: grid; + gap: 10px; + margin-top: 26px; + } + + .hero-actions .button-primary, + .hero-actions .button-secondary { + width: 100%; + min-height: 48px; + } + + .hero-visual { + aspect-ratio: 4 / 5; + margin: 0; + } + + .hero-product-chip { + right: 12px; + bottom: 12px; + width: calc(100% - 24px); + } + + .hero-coa-card { + display: none !important; + } + + .trust-item { + min-height: 64px; + display: grid; + gap: 3px; + justify-content: start; + padding: 12px 20px; + } + + .trust-item span { + font-size: 11px; + } + + .section { + padding-block: 56px; + } + + .section-head { + margin-bottom: 26px; + } + + .category-section-head { + margin-top: 56px; + } + + .category-rail, + .category-index { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + } + + .category-tile, + .category-index-item { + min-height: 112px; + align-items: flex-start; + padding: 14px; + } + + .category-tile::before, + .category-index-item::before { + display: none; + } + + .category-tile strong, + .category-index-item strong { + font-size: 14px; + } + + .product-grid { + gap: 14px 10px; + } + + .product-card-body { + padding: 12px; + } + + .product-name { + font-size: 14px; + } + + .product-description { + min-height: 54px; + font-size: 11px; + -webkit-line-clamp: 3; + } + + .testing-micro { + min-height: 48px; + display: grid; + gap: 2px; + align-content: center; + } + + .testing-micro a { + min-height: 24px; + } + + .product-buy-row { + grid-template-columns: 1fr; + gap: 8px; + } + + .product-card .add-button { + width: 100%; + min-height: 44px; + opacity: 1; + transform: none; + } + + .testing-feature { + padding: 56px 20px; + } + + .newsletter { + padding: 24px; + } + + .page-hero { + padding-block: 48px 28px; + } + + .pdp-main-image { + width: 100%; + margin-left: 0; + border-radius: 12px; + } + + .pdp-buybox { + padding: 22px; + } + + .site-footer { + padding-bottom: calc(40px + env(safe-area-inset-bottom)); + } +} + +@media (max-width: 360px) { + :root { + --shell: calc(100vw - 32px); + } + + .header-main { + padding-inline: 16px; + } + + .category-nav { + padding-left: 16px; + } + + .hero-copy h1 { + font-size: 36px; + } + + .product-card-body { + padding: 10px; + } + + .product-card .product-category, + .product-format, + .testing-micro span, + .testing-micro a { + font-size: 8px; + } +} + +@media (prefers-reduced-motion: reduce) { + .hero-visual > img { + animation: none !important; + } + + .product-card, + .category-tile, + .category-index-item, + .product-card .add-button { + transform: none !important; + } +} diff --git a/biologix-strategy-board/ovo-labs-porcelain/site.js b/biologix-strategy-board/ovo-labs-porcelain/site.js new file mode 100644 index 0000000..302c37d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/site.js @@ -0,0 +1,2217 @@ +(() => { + "use strict"; + + const body = document.body; + const root = document.querySelector("#site-root"); + if (!root) return; + + const BASE = body.dataset.base || "."; + const PAGE = body.dataset.page || "home"; + const PRODUCT_SLUG = body.dataset.product || ""; + const CART_KEY = "ovo-porcelain-demo-cart-v2"; + const RECENT_KEY = "ovo-porcelain-recent-products-v1"; + const NEWSLETTER_KEY = "ovo-porcelain-newsletter-preference-v1"; + const LEGACY_KEYS = { + cart: "ovo-porcelain-demo-cart-v1", + recent: "ovo-porcelain-recent-products-v0", + newsletter: "ovo-porcelain-newsletter-preference-v0", + }; + const MAX_QUANTITY = 10; + + const money = new Intl.NumberFormat("en-US", { + style: "currency", + currency: "USD", + maximumFractionDigits: 0, + }); + + const PRODUCTS = [ + { + slug: "retatrutide", + code: "OVO-001", + name: "Retatrutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 105, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format. Identity, labeled amount, format, and testing status stay together.", + }, + { + slug: "tirzepatide", + code: "OVO-002", + name: "Tirzepatide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 100, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format. Its essential product facts and testing status remain in one decision block.", + }, + { + slug: "semaglutide", + code: "OVO-003", + name: "Semaglutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 90, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, presented with consistent product facts and visible testing status.", + }, + { + slug: "cagrilintide", + code: "OVO-004", + name: "Cagrilintide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 89, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, organized around identity, labeled amount, and testing status.", + }, + { + slug: "bpc-157", + code: "OVO-005", + name: "BPC-157", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 60, + descriptor: "Single-compound catalog reference in the Research Peptides collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, with concise product facts and visible testing status.", + }, + { + slug: "tb-500", + code: "OVO-006", + name: "TB-500", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 68, + descriptor: "Single-compound catalog reference in the Research Peptides collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, with identity, format, price, and testing status together.", + }, + { + slug: "cjc-1295", + code: "OVO-007", + name: "CJC-1295", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 52, + descriptor: "Single-compound catalog reference in the Growth Hormone Research collection.", + facts: ["5 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 5 mg single-vial format, composed for direct finding, comparison, and inspection.", + }, + { + slug: "ipamorelin", + code: "OVO-008", + name: "Ipamorelin", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 45, + descriptor: "Single-compound catalog reference in the Growth Hormone Research collection.", + facts: ["5 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 5 mg single-vial format, with comparable facts and visible testing status.", + }, + { + slug: "cjc-ipamorelin-blend", + code: "OVO-009", + name: "CJC-1295 + Ipamorelin", + category: "Peptide Blends", + categoryKey: "blends", + strength: "10 mg", + format: "Dual-compound vial", + price: 92, + descriptor: "Defined two-compound catalog reference in the Peptide Blends collection.", + facts: ["5 mg + 5 mg labeled", "Single-vial blend format", "No result reported"], + overview: + "A two-compound blend shown as its own product, with each constituent and the testing status kept explicit.", + }, + { + slug: "bpc-tb-blend", + code: "OVO-010", + name: "BPC-157 + TB-500", + category: "Peptide Blends", + categoryKey: "blends", + strength: "20 mg", + format: "Dual-compound vial", + price: 118, + descriptor: "Defined two-compound catalog reference in the Peptide Blends collection.", + facts: ["10 mg + 10 mg labeled", "Single-vial blend format", "No result reported"], + overview: + "A two-compound blend with its own product identity, labeled composition, and testing status.", + }, + ]; + + const BUNDLES = [ + { + slug: "metabolic-reference-set", + code: "OVO-S01", + name: "Metabolic Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "Retatrutide + Cagrilintide", + price: 169, + descriptor: "Two individually identified entries from the metabolic collection.", + productSlugs: ["retatrutide", "cagrilintide"], + }, + { + slug: "peptide-pair-set", + code: "OVO-S02", + name: "Peptide Pair Set", + category: "Curated Set", + strength: "2 vials", + format: "BPC-157 + TB-500", + price: 108, + descriptor: "Two individually identified entries from the research peptide collection.", + productSlugs: ["bpc-157", "tb-500"], + }, + { + slug: "secretagogue-reference-set", + code: "OVO-S03", + name: "Secretagogue Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "CJC-1295 + Ipamorelin", + price: 82, + descriptor: "Two individually identified entries from the growth-hormone research collection.", + productSlugs: ["cjc-1295", "ipamorelin"], + }, + ]; + + const CATEGORIES = [ + { key: "all", name: "Shop All", note: `${PRODUCTS.length} products` }, + { key: "metabolic", name: "GLP-1 & Metabolic", note: "4 individual compounds" }, + { key: "research", name: "Research Peptides", note: "2 individual compounds" }, + { key: "growth", name: "Growth Hormone Research", note: "2 individual compounds" }, + { key: "blends", name: "Peptide Blends", note: "2 defined blends" }, + ]; + + const ARTICLES = [ + { + slug: "reading-testing-status", + title: "How to read a testing status", + summary: "A result, a specification, and an unreported field are three different things.", + }, + { + slug: "choosing-by-molecule", + title: "Shop by molecule, not by hype", + summary: "A practical catalog framework for comparing identity, strength, format, and evidence state.", + }, + { + slug: "coa-boundaries", + title: "What a COA can—and cannot—show", + summary: "Why a document’s method and scope matter more than the letters at the top.", + }, + ]; + + const ALL_CART_ITEMS = [...PRODUCTS, ...BUNDLES]; + + const icons = { + menu: + '', + cart: + '', + arrow: '', + }; + + function path(relative) { + return `${BASE}/${relative}`.replace(/\/\.\//g, "/"); + } + + function productPath(product) { + return path(`peptides/${product.slug}.html`); + } + + function escapeHtml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + function track(event, properties = {}) { + const payload = { + event, + page_type: PAGE, + timestamp: new Date().toISOString(), + ...properties, + }; + window.dataLayer = window.dataLayer || []; + window.dataLayer.push(payload); + window.dispatchEvent(new CustomEvent("ovo-porcelain:analytics", { detail: payload })); + } + + window.OVOPorcelainAnalytics = { + events: () => [...(window.dataLayer || [])], + clear: () => { + window.dataLayer = []; + }, + }; + window.OVOAnalytics = window.OVOPorcelainAnalytics; + + function activePage(name) { + if (name === "shop" && ["collection", "product"].includes(PAGE)) return true; + if (name === "testing" && PAGE === "testing") return true; + if (name === "sets" && PAGE === "bundles") return true; + if (name === "journal" && ["learn", "article"].includes(PAGE)) return true; + if (name === "about" && ["about", "policy"].includes(PAGE)) return true; + return false; + } + + function header() { + const nav = [ + ["shop", "Shop", "catalog.html"], + ["sets", "Bundles", "bundles.html"], + ["testing", "Testing", "testing.html"], + ["journal", "Notes", "notes.html"], + ]; + const categoryLinks = CATEGORIES.map( + (category) => ` + ${category.name} + `, + ).join(""); + + return ` + +
+ Fictional concept storefront. Nothing here is real, stocked, or for sale. +
+ + `; + } + + function footer() { + return ` + + `; + } + + function filterControls() { + return CATEGORIES.map( + (category) => ` + + `, + ).join(""); + } + + function drawers() { + const collectionFilterDrawer = + PAGE === "collection" + ? ` + + ` + : ""; + return ` + + + + ${collectionFilterDrawer} +
+ `; + } + + function layout(main) { + root.innerHTML = `${header()}
${main}
${footer()}${drawers()}`; + } + + function productImage(product, eager = false) { + return ` + OVO Labs amber research vial representing ${escapeHtml(product.name)} + + `; + } + + function productCard(product, options = {}) { + const { eager = false } = options; + return ` + + `; + } + + function categoryRail() { + return ` +
+ ${CATEGORIES.slice(1) + .map( + (category) => ` + + + ${category.name} + ${category.note} + + + + `, + ) + .join("")} +
+ `; + } + + function bundleCard(bundle) { + const items = bundle.productSlugs.map((slug) => PRODUCTS.find((product) => product.slug === slug)); + const individualTotal = items.reduce((sum, product) => sum + product.price, 0); + const arithmetic = `${items.map((product) => money.format(product.price)).join(" + ")} = ${money.format(individualTotal)}`; + return ` +
+
+ Two OVO Labs amber research vials representing ${escapeHtml(bundle.name)} +
+
+

${escapeHtml(bundle.code)} · Curated set

+

${escapeHtml(bundle.name)}

+

${escapeHtml(bundle.descriptor)}

+
    + ${items + .map( + (product) => + `
  • ${escapeHtml(product.name)}${escapeHtml(product.strength)} · ${money.format(product.price)}
  • `, + ) + .join("")} +
+

Individual concepts${arithmetic}

+ +
+
+ `; + } + + function newsletter() { + return ` + + `; + } + + function homePage() { + return ` +
+
+
+

Peptide science, refined.

+

A considered catalog, without the mystery.

+

Ten distinct compounds and blends with clear formats, visible testing status, and a fast path from search to a browser-local cart.

+ +
+ +
+
+
+
10distinct compounds
+
4clear categories
+
Searchby molecule or code
+
Visibletesting status on every item
+
+
+
+
+
+

Shop peptides

+

Start with the catalog.

+
+ View the full collection ${icons.arrow} +
+
+ ${PRODUCTS.slice(0, 4) + .map((product, index) => productCard(product, { eager: index < 2 })) + .join("")} +
+
+
+

Shop by category

+

Four precise ways in.

+
+

Browse by research area, or use the persistent search when you already know the molecule or OVO code.

+
+ ${categoryRail()} +
+
+
+
+
+

Testing

+

Evidence, without ornament.

+

Every product carries its testing status at the point of choice. A reported result and an unreported field remain visibly distinct.

+ Read the testing framework +
+
+
+
+ OVO-001 · Retatrutide + TESTING STATUS +
+ NO RESULT REPORTED +
+
IdentityMethod not assigned · Result not reported
+
Content / massMethod not assigned · Result not reported
+
Purity profileMethod not assigned · Result not reported
+
Sterility / endotoxinNot represented · Result not reported
+
+
+
+
+
+
+
+

Curated sets

+

Related compounds, kept distinct.

+
+ Explore the sets ${icons.arrow} +
+
${BUNDLES.map(bundleCard).join("")}
+
+
+
+
+
+
+

OVO Journal

+

Read before choosing.

+
+ Open the journal ${icons.arrow} +
+
+ ${ARTICLES.map( + (article) => ` + + `, + ).join("")} +
+
+
+ ${newsletter()} + `; + } + + function collectionPage() { + return ` +
+
+

The full catalog

+

Find the exact peptide entry.

+

Filter by research area, search by molecule or product code, then compare strength, format, testing status, and price without leaving the grid.

+
+
+
+
+ +
+

Catalog products

+
+ + + + + +
+

${PRODUCTS.length} products

+
+ ${PRODUCTS.map((product) => productCard(product)).join("")} +
+
+
+
+
+
+
+
+

Not sure where to start?

+

Use the testing state as a filter.

+
+

Every entry currently shows the same clear state: no analytical result has been reported. The testing page explains what each method would and would not establish.

+
+ Review testing ${icons.arrow} +
+
+ `; + } + + function analyticalSourceNote() { + return ` + + `; + } + + function testingPage() { + return ` +
+
+

Testing

+

Testing status belongs beside the product.

+

Search an OVO Labs product name or code to see the exact testing status. No certificate, laboratory relationship, result, or release claim is implied.

+
+ + + +
+
+
+
+
+
+
+

The framework

+

Four fields. Four different questions.

+

A single number cannot answer identity, amount, composition, and microbiological questions at once.

+
+
+
IdentityDoes the observed analytical profile match the intended compound?NO RESULT
+
Content / massHow much material is reported under the selected method?NO RESULT
+
Purity profileWhat relative composition is reported under the selected method?NO RESULT
+
Sterility / endotoxinWere separate microbiological methods represented?NOT REPRESENTED
+
+
+
+ ${analyticalSourceNote()} +
+
+
+
+
+
+

Catalog status

+

Every current entry

+
+

Every status is intentionally explicit instead of dressing absence up as proof.

+
+ +
+
+
+
+
+

Read the document

+

What a COA can—and cannot—show

+
+
+ ${accordion([ + [ + "Does a purity result prove identity?", + "Not by itself. Identity and relative purity answer different questions and may require different analytical methods.", + ], + [ + "Does a reported result prove every vial is the same?", + "No. A result applies only to the identified sample and method scope. Sampling, chain of custody, and lot linkage remain separate questions.", + ], + [ + "Does a COA establish suitability for human use?", + "No. OVO Labs does not present human-use, safety, efficacy, clinical, administration, or preparation information.", + ], + [ + "Why show fields with no result?", + "Because a visible empty state is more informative than a badge that leaves the scope ambiguous. Missing evidence should remain visibly missing.", + ], + ])} +
+
+
+ `; + } + + function bundlesPage() { + return ` +
+
+

Curated sets

+

Related compounds, kept distinct.

+

Related products grouped for simpler browsing and one cart action. Every item remains linked to its own product and testing page.

+
+
+
+
+

Curated OVO Labs sets

+
${BUNDLES.map(bundleCard).join("")}
+
+
+
+
+
+

Why sets exist

+

Reduce search work without creating ambiguity.

+
+
+

Separate identities

Every molecule keeps its own code, strength, product page, and testing state.

+

One cart action

The set enters the cart as one clearly labeled item with its included products listed.

+

No false savings

The set price is shown directly without fabricated list prices or countdown offers.

+
+
+
+ ${newsletter()} + `; + } + + function learnPage() { + return ` +
+
+

OVO Journal

+

Read the facts behind the catalog.

+

Short guides for comparing peptide products, interpreting testing states, and understanding what a document’s scope does—and does not—establish.

+
+
+
+
+

OVO Labs journal articles

+
+ ${ARTICLES.map( + (article, index) => ` + + `, + ).join("")} +
+
+
+
+
+
+

Fast answers

+

Catalog FAQ

+
+
+ ${accordion([ + ["Is OVO Labs a real company?", "No. It is a fictional, non-operational storefront concept. Nothing is stocked, sold, shipped, tested, or transacted."], + ["Why show concept prices?", "Prices make the ecommerce prototype complete enough to evaluate its hierarchy, cart states, sorting, and merchandising. They are not offers for sale."], + ["Why are there no ratings?", "No customers or reviews exist. Empty or invented social proof would make the interface less trustworthy, not more."], + ["Can I check out?", "No. The local demo cart supports add, update, remove, and subtotal states, then ends before checkout or payment."], + ])} +
+
+
+ ${newsletter()} + `; + } + + function faqPage() { + return ` +
+
+

Help & details

+

Questions, answered plainly.

+

What the catalog shows, what “No result reported” means, how browser storage works, and exactly where this fictional store stops.

+
+
+
+
+
+

OVO Labs FAQ

+

The complete store boundary.

+
+
+ ${accordion([ + ["Can I place an order?", "No. OVO Labs is a fictional concept storefront. The cart is browser-only, and there is no checkout, payment, inventory, shipping, customer account, or fulfillment operation."], + ["What does “No result reported” mean?", "It means no testing result is published for that catalog item. It does not mean the item passed, failed, or is waiting on a promised result."], + ["Does a COA prove a product is safe, effective, or sterile?", "No. A document supports only the measurements, sample, method, date, and scope it identifies. Unreported attributes should not be inferred."], + ["Why are there no purity percentages?", "No testing result is published for these products. OVO Labs does not invent percentages or testing claims to make a product page feel complete."], + ["Does this catalog provide human-use information?", "No dosing, preparation, administration, safety, efficacy, medical, or human-use guidance is provided."], + ["Are the product descriptions medical advice?", "No. They identify proposed catalog references and formats only."], + ["How does search work?", "Search by peptide name, category, blend name, or catalog code such as OVO-001. Keyboard users can move through predictive results with the arrow keys."], + ["Why are there no customer reviews?", "There are no customers or order history. OVO Labs does not fabricate ratings, testimonials, or purchase activity."], + ["What information does this site store?", "Cart contents, recently viewed product codes, and the newsletter preference can be stored locally in your browser. No cart contents, entered email address, or saved preference is transmitted by the prototype."], + ["How do I remove locally saved information?", "Use Clear cart in the cart drawer. You can also clear this site’s browser storage to remove all local state."], + ])} +
+
+
+
+ +
+ `; + } + + function aboutPage() { + return ` +
+
+

About OVO Labs

+

A peptide store designed around finding and deciding.

+

OVO Labs is designed around a simple idea: product information should be easy to scan, and missing evidence should be impossible to miss.

+
+
+
+
+
+

The premise

+

Retail clarity can do more work than scientific theater.

+
+
+

The strongest specialist stores help people find the right entry quickly, compare it in place, and understand the next action. OVO Labs applies that discipline without inventing operations or proof.

+
+
Catalog modelFocused selection, stable product codes, and flat product routes
+
Discovery modelPersistent search, visual category paths, filters, and related entries
+
Product modelIdentity, labeled amount, format, price, and testing status in one decision block
+
Proof modelOnly substantiated facts; no invented ratings, laboratories, results, or popularity
+
+
+
+
+
+
+
+
+

Operating principles

+

What the brand refuses to fake

+
+
+
+

No decorative proof

No badges, reviews, lab names, purity figures, certificates, or quality claims exist without evidence.

+

No urgency machinery

No stock countdown, sale timer, crossed-out anchor price, or invented best-seller ranking pushes the click.

+

No fake transaction

The local demo cart is complete enough to evaluate, then stops before checkout, payment, fulfillment, or customer data capture.

+
+
+
+
+
+ +
+
+ `; + } + + function policyPage() { + return ` +
+
+

Concept boundaries

+

This storefront demonstrates an interface, not an operation.

+

OVO Labs has no company operations, products, inventory, customers, testing, fulfillment, payments, or ordering capability.

+
+
+
+

What the prototype does

+

It demonstrates ecommerce information architecture: product discovery, category filtering, predictive search, product pages, testing-status presentation, a journal, and a browser-local demo cart.

+

What the prototype does not do

+
    +
  • It does not offer, sell, reserve, quote, or ship material.
  • +
  • It does not collect payment, customer accounts, addresses, or submitted email data.
  • +
  • It does not claim a laboratory, certificate, result, purity level, stock state, delivery time, or customer experience.
  • +
  • It does not provide dosing, preparation, administration, clinical, therapeutic, safety, efficacy, or human-use information.
  • +
+
The cart is local. Its contents are stored only in this browser. The interaction ends before checkout, and clearing browser storage removes it.
+

Why the banner stays visible

+

The thin top notice keeps the concept status clear on every route while allowing the rest of the prototype to be evaluated as a real ecommerce design.

+

Return to the concept catalog ${icons.arrow}

+
+ `; + } + + function productPage(product) { + if (!product) return notFoundPage(); + const categoryRelated = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey === product.categoryKey, + ); + const crossCategoryRelated = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey !== product.categoryKey, + ); + const related = [...categoryRelated, ...crossCategoryRelated].slice(0, 4); + + return ` +
+ +
+ +
+

${escapeHtml(product.category)}

+

${escapeHtml(product.name)}

+ ${escapeHtml(product.code)} · ${escapeHtml(product.format)} + + Testing · No result reported + +

${escapeHtml(product.overview)}

+
+ ${money.format(product.price)} +
+

Strength${escapeHtml(product.strength)}

+
+
+ + + + +
+ +
+
+
Product code${escapeHtml(product.code)}
+
Labeled amount${escapeHtml(product.strength)}
+
TestingNo result reported
+
+

Adds this item to a browser-only cart. No order, payment, or shipment is created.

+
+
+
+
+
+
+

Product facts

+

The comparison fields, up front.

+
+
+
Product name${escapeHtml(product.name)}
+
Catalog code${escapeHtml(product.code)}
+
Research area${escapeHtml(product.category)}
+
Labeled amount${escapeHtml(product.strength)}
+
Format${escapeHtml(product.format)}
+
Analytical stateNo result reported
+
+
+
+
+
+
+

Testing status

+

Every missing result stays visible.

+
+
+
IdentityMethod not assignedNO RESULT
+
Content / massMethod not assignedNO RESULT
+
Purity profileMethod not assignedNO RESULT
+
Sterility / endotoxinNot representedNOT REPORTED
+
+
+
+
+
+
+

Product questions

+

Know what this page means.

+
+
+ ${accordion([ + ["Is this product available?", "No. This storefront is fictional and has no material, inventory, availability, ordering, or fulfillment."], + ["What does the listed price mean?", "It lets the storefront demonstrate sorting, merchandising, cart totals, and product hierarchy. It is not an offer or quote."], + ["Has this entry been tested?", "No testing or laboratory relationship is represented. Every analytical field on the page explicitly says that no result has been reported."], + ["Where is administration information?", "It is intentionally absent. OVO Labs does not provide dosing, preparation, administration, human-use, safety, efficacy, or outcome information."], + ])} +
+
+
+
+
+
+
+

Keep comparing

+

Related compounds

+
+ View the full catalog ${icons.arrow} +
+
${related.map((item) => productCard(item)).join("")}
+
+
+ + `; + } + + function articlePage(slug) { + const content = { + "reading-testing-status": { + eyebrow: "Testing guide · 4 minutes", + title: "How to read a testing status", + lede: "Start with the question the method is meant to answer. Then check whether a result is actually reported.", + sections: [ + ["A specification is not a result", "A specification describes an intended target or acceptance rule. A result describes what was observed for an identified sample under a stated method. One should never be styled as the other."], + ["Identity, amount, and composition are separate", "An identity method asks whether the observed profile matches the intended compound. A content or mass method asks how much is reported. A purity method describes relative composition under its method conditions. None automatically answers the others."], + ["“No result reported” is useful information", "An explicit empty state prevents a shopper from assuming that a badge, document icon, or quality headline stands in for evidence. It keeps the unknown visible at the moment of comparison."], + ], + analyticalSources: true, + }, + "choosing-by-molecule": { + eyebrow: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + lede: "A clean catalog starts with product identity, then narrows by strength, format, code, and evidence state.", + sections: [ + ["Start with the exact entry", "Separate compounds should have separate product pages. A selector is useful for genuine strengths of the same item, not for hiding unrelated molecules inside one high-traffic page."], + ["Compare the same fields every time", "Product name, code, strength, format, price concept, and testing status should appear in predictable positions. Consistency turns a grid into a comparison tool."], + ["Use categories as a shortcut", "Research-area categories help exploration, while exact-name and product-code search help returning or expert shoppers. Both paths should reach the same canonical product page."], + ], + analyticalSources: false, + }, + "coa-boundaries": { + eyebrow: "Document guide · 5 minutes", + title: "What a COA can—and cannot—show", + lede: "The value of a certificate depends on the identified sample, the method, the result, and the scope. The title alone proves very little.", + sections: [ + ["Read the scope before the number", "A reported purity figure does not automatically establish identity, total content, sterility, endotoxin state, stability, or suitability for a particular use."], + ["Check the sample link", "A result is only useful when the document identifies the tested sample and the catalog can explain how that sample relates to the represented item."], + ["Do not fill gaps with design", "A green badge, seal, laboratory photograph, or download icon cannot replace a reported result. If a field is missing, the interface should say so directly."], + ], + analyticalSources: true, + }, + }[slug]; + + if (!content) return notFoundPage(); + return ` +
+

${escapeHtml(content.eyebrow)}

+

${escapeHtml(content.title)}

+

${escapeHtml(content.lede)}

+
This guide describes document and catalog structure. It does not provide medical, clinical, preparation, administration, or human-use information.
+ ${content.sections + .map(([heading, copy]) => `

${escapeHtml(heading)}

${escapeHtml(copy)}

`) + .join("")} + ${content.analyticalSources ? analyticalSourceNote() : ""} +

Continue through the store

+

Use the testing page to inspect current concept states, or return to the catalog to compare entries using the same fields.

+

+ Explore testing + Browse products +

+
+
+
+

More from OVO Labs

Related guides

+
+ ${ARTICLES.filter((article) => article.slug !== slug) + .map( + (article) => ``, + ) + .join("")} +
+
+
+ `; + } + + function notFoundPage() { + return ` +
+
+

404 · Page not found

+

This catalog path does not exist.

+

Search for a molecule, return to the product grid, or use one of the main research-area categories.

+ +
+
+
+
+

Suggested collection paths

+ ${categoryRail()} +
${PRODUCTS.slice(0, 4).map((product) => productCard(product)).join("")}
+
+
+ `; + } + + function accordion(items) { + const instance = ++accordion.counter; + return ` +
+ ${items + .map( + ([question, answer], index) => ` +
+ +
+ ${escapeHtml(answer)} +
+
+ `, + ) + .join("")} +
+ `; + } + accordion.counter = 0; + + function renderPage() { + const pages = { + home: homePage, + collection: collectionPage, + testing: testingPage, + bundles: bundlesPage, + learn: learnPage, + faq: faqPage, + about: aboutPage, + policy: policyPage, + product: () => productPage(PRODUCTS.find((product) => product.slug === PRODUCT_SLUG)), + article: () => articlePage(body.dataset.article || ""), + 404: notFoundPage, + }; + const renderer = pages[PAGE] || notFoundPage; + layout(renderer()); + } + + function migrateLegacyStorage() { + try { + if (localStorage.getItem(CART_KEY) === null && localStorage.getItem(LEGACY_KEYS.cart) !== null) { + localStorage.setItem(CART_KEY, localStorage.getItem(LEGACY_KEYS.cart)); + } + if (localStorage.getItem(RECENT_KEY) === null && localStorage.getItem(LEGACY_KEYS.recent) !== null) { + localStorage.setItem(RECENT_KEY, localStorage.getItem(LEGACY_KEYS.recent)); + } + if (localStorage.getItem(NEWSLETTER_KEY) === null && localStorage.getItem(LEGACY_KEYS.newsletter) !== null) { + localStorage.setItem(NEWSLETTER_KEY, localStorage.getItem(LEGACY_KEYS.newsletter)); + } + } catch { + // Storage can be unavailable; all core browsing behavior remains functional without it. + } + } + + function readCart() { + try { + const parsed = JSON.parse(localStorage.getItem(CART_KEY) || "[]"); + if (!Array.isArray(parsed)) return []; + return parsed + .filter((item) => ALL_CART_ITEMS.some((candidate) => candidate.slug === item.slug)) + .map((item) => ({ + slug: item.slug, + quantity: Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(item.quantity, 10) || 1)), + })); + } catch { + return []; + } + } + + migrateLegacyStorage(); + let cart = readCart(); + let lastFocusedElement = null; + let toastTimer = null; + + function saveCart(preferredFocusSelector) { + try { + localStorage.setItem(CART_KEY, JSON.stringify(cart)); + } catch { + // The cart still works for this page view when storage is unavailable. + } + renderCart(preferredFocusSelector); + } + + function cartItemData(slug) { + return ALL_CART_ITEMS.find((item) => item.slug === slug); + } + + function cartTotal() { + return cart.reduce((total, line) => { + const item = cartItemData(line.slug); + return total + (item ? item.price * line.quantity : 0); + }, 0); + } + + function restoreCartFocus(preferredFocusSelector) { + if (preferredFocusSelector === undefined) return; + const drawer = document.querySelector("[data-cart-drawer]"); + if (!drawer || drawer.dataset.open !== "true") return; + const preferred = preferredFocusSelector ? drawer.querySelector(preferredFocusSelector) : null; + const fallback = + drawer.querySelector("[data-cart-quantity]") || + drawer.querySelector("[data-remove-product]") || + drawer.querySelector("[data-cart-close]"); + (preferred || fallback)?.focus(); + } + + function renderCart(preferredFocusSelector) { + const count = cart.reduce((total, item) => total + item.quantity, 0); + document.querySelectorAll("[data-cart-count]").forEach((element) => { + element.textContent = `(${count})`; + element.hidden = false; + }); + + const itemsRoot = document.querySelector("[data-cart-items]"); + const footerRoot = document.querySelector("[data-cart-footer]"); + if (!itemsRoot || !footerRoot) return; + + if (cart.length === 0) { + itemsRoot.innerHTML = ` +
+
+ Your cart is empty. +

Browse the collection to add a peptide or set.

+ Shop products +
+
+ `; + footerRoot.innerHTML = ` +

This is where the demo ends. Nothing is stocked, sold, or shippable. No order, account, payment, or message is created.

+ `; + restoreCartFocus(preferredFocusSelector); + return; + } + + itemsRoot.innerHTML = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
+ +
+
+

${escapeHtml(item.name)}

+ ${money.format(item.price * line.quantity)} +
+

${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

+
+
+ + ${line.quantity} + +
+ +
+
+
+ `; + }) + .join(""); + + footerRoot.innerHTML = ` +
Subtotal${money.format(cartTotal())}
+

This is where the demo ends. Nothing is stocked, sold, or shippable. This cart is stored only in your browser; no order, account, payment, or message is created.

+ + `; + restoreCartFocus(preferredFocusSelector); + } + + function addToCart(slug, quantity = 1) { + const item = cartItemData(slug); + if (!item) return; + const safeQuantity = Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity, 10) || 1)); + const existing = cart.find((line) => line.slug === slug); + if (existing) { + existing.quantity = Math.min(MAX_QUANTITY, existing.quantity + safeQuantity); + } else { + cart.push({ slug, quantity: safeQuantity }); + } + const feedbackButtons = document.querySelectorAll( + `[data-add-product="${CSS.escape(slug)}"], [data-pdp-add="${CSS.escape(slug)}"], [data-mobile-add="${CSS.escape(slug)}"]`, + ); + feedbackButtons.forEach((button) => { + if (!button.dataset.defaultLabel) button.dataset.defaultLabel = button.textContent.trim(); + button.classList.add("is-added"); + button.textContent = "Added ✓"; + window.setTimeout(() => { + button.classList.remove("is-added"); + button.textContent = button.dataset.defaultLabel; + }, 1200); + }); + saveCart(); + openDrawer("cart"); + track("add_to_cart", { + item_id: item.code, + item_name: item.name, + item_category: item.category, + price: item.price, + quantity: safeQuantity, + demo_only: true, + }); + } + + function changeCartQuantity(slug, delta) { + const line = cart.find((item) => item.slug === slug); + const product = cartItemData(slug); + if (!line || !product) return; + line.quantity = Math.max(0, Math.min(MAX_QUANTITY, line.quantity + delta)); + if (line.quantity === 0) { + cart = cart.filter((item) => item.slug !== slug); + track("remove_from_cart", { item_id: product.code, item_name: product.name, demo_only: true }); + } else { + track("cart_quantity_changed", { + item_id: product.code, + item_name: product.name, + quantity: line.quantity, + demo_only: true, + }); + } + saveCart( + line.quantity === 0 + ? null + : `[data-cart-quantity="${CSS.escape(slug)}"][data-delta="${delta}"]`, + ); + } + + function showToast(message) { + const toast = document.querySelector("[data-toast]"); + if (!toast) return; + window.clearTimeout(toastTimer); + toast.textContent = message; + toast.dataset.open = "true"; + toastTimer = window.setTimeout(() => { + toast.dataset.open = "false"; + }, 2800); + } + + function drawerElements(type) { + const selectorByType = { + cart: "[data-cart-drawer]", + menu: "[data-mobile-drawer]", + filter: "[data-filter-drawer]", + }; + const drawer = document.querySelector(selectorByType[type]); + const others = [...document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer], [data-filter-drawer]")].filter( + (candidate) => candidate !== drawer, + ); + return { drawer, others }; + } + + function setPageInert(isInert) { + document.querySelectorAll(".site-header, #main-content, .site-footer").forEach((element) => { + element.inert = isInert; + }); + } + + function openDrawer(type) { + const { drawer, others } = drawerElements(type); + const backdrop = document.querySelector("[data-drawer-backdrop]"); + if (!drawer || !backdrop) return; + lastFocusedElement = document.activeElement; + others.forEach((other) => { + other.dataset.open = "false"; + other.setAttribute("aria-hidden", "true"); + other.inert = true; + }); + drawer.inert = false; + drawer.dataset.open = "true"; + drawer.setAttribute("aria-hidden", "false"); + backdrop.dataset.open = "true"; + body.classList.add("drawer-open"); + setPageInert(true); + const initialFocus = drawer.querySelector("button, a"); + const ensureDrawerFocus = () => { + if (drawer.dataset.open === "true" && !drawer.contains(document.activeElement)) { + initialFocus?.focus({ preventScroll: true }); + } + }; + ensureDrawerFocus(); + window.requestAnimationFrame(() => { + ensureDrawerFocus(); + window.requestAnimationFrame(ensureDrawerFocus); + }); + window.setTimeout(ensureDrawerFocus, 50); + if (type === "cart") { + track("view_cart", { item_count: cart.reduce((sum, item) => sum + item.quantity, 0), demo_only: true }); + } + } + + function closeDrawers() { + const backdrop = document.querySelector("[data-drawer-backdrop]"); + const drawers = [...document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer], [data-filter-drawer]")]; + const wasOpen = drawers.some((drawer) => drawer.dataset.open === "true"); + drawers.forEach((drawer) => { + drawer.dataset.open = "false"; + drawer.setAttribute("aria-hidden", "true"); + drawer.inert = true; + }); + if (backdrop) backdrop.dataset.open = "false"; + body.classList.remove("drawer-open"); + setPageInert(false); + if (wasOpen && lastFocusedElement instanceof HTMLElement) lastFocusedElement.focus(); + if (wasOpen) lastFocusedElement = null; + } + + function initDrawersAndCart() { + renderCart(); + document.addEventListener("click", (event) => { + if (event.target.closest("[data-drawer-backdrop]")) { + closeDrawers(); + return; + } + const target = event.target.closest("button, a"); + if (!target) return; + + if (target.matches("[data-cart-open]")) openDrawer("cart"); + if (target.matches("[data-cart-close], [data-menu-close], [data-filter-close]")) closeDrawers(); + if (target.matches("[data-menu-open]")) openDrawer("menu"); + if (target.matches("[data-filter-open]")) openDrawer("filter"); + + if (target.dataset.addProduct) { + addToCart(target.dataset.addProduct); + } + + if (target.dataset.pdpAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.pdpAdd, quantity); + } + + if (target.dataset.mobileAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.mobileAdd, quantity); + } + + if (target.dataset.cartQuantity) { + changeCartQuantity(target.dataset.cartQuantity, Number(target.dataset.delta)); + } + + if (target.dataset.removeProduct) { + const item = cartItemData(target.dataset.removeProduct); + cart = cart.filter((line) => line.slug !== target.dataset.removeProduct); + saveCart(null); + if (item) { + showToast(`${item.name} removed from the cart.`); + track("remove_from_cart", { item_id: item.code, item_name: item.name, demo_only: true }); + } + } + + if (target.matches("[data-clear-cart]")) { + cart = []; + saveCart(null); + showToast("Cart cleared."); + track("cart_cleared", { demo_only: true }); + } + }); + + document.addEventListener("keydown", (event) => { + if ( + event.key === "Escape" && + document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ) + ) { + closeDrawers(); + } + if (event.key !== "Tab") return; + const openDrawerElement = document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ); + if (!openDrawerElement) return; + const focusable = [ + ...openDrawerElement.querySelectorAll( + 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])', + ), + ]; + if (focusable.length === 0) return; + const first = focusable[0]; + const last = focusable.at(-1); + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + }); + + const mobileLayout = window.matchMedia("(max-width: 960px)"); + mobileLayout.addEventListener("change", (event) => { + if (event.matches) return; + const mobileOnlyDrawer = document.querySelector( + '[data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ); + if (mobileOnlyDrawer) closeDrawers(); + }); + } + + const SEARCH_ALIASES = { + retatrutide: ["reta"], + tirzepatide: ["tirz"], + semaglutide: ["sema"], + cagrilintide: ["cagri"], + "bpc-157": ["bpc", "bpc157"], + "tb-500": ["tb", "tb500"], + "cjc-1295": ["cjc", "cjc1295"], + ipamorelin: ["ipa", "ipam"], + "cjc-ipamorelin-blend": ["cjc ipa", "cjc ipam blend"], + "bpc-tb-blend": ["bpc tb", "bpc tb blend"], + }; + + function normalizeSearch(value) { + return String(value) + .normalize("NFKD") + .toLowerCase() + .replace(/[^a-z0-9]+/g, " ") + .trim() + .replace(/\s+/g, " "); + } + + function editDistance(left, right) { + const previous = Array.from({ length: right.length + 1 }, (_, index) => index); + for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) { + const current = [leftIndex]; + for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) { + current[rightIndex] = Math.min( + current[rightIndex - 1] + 1, + previous[rightIndex] + 1, + previous[rightIndex - 1] + (left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1), + ); + } + previous.splice(0, previous.length, ...current); + } + return previous[right.length]; + } + + function productSearchText(product) { + return normalizeSearch( + [ + product.name, + product.code, + product.category, + product.strength, + product.format, + product.descriptor, + ...(SEARCH_ALIASES[product.slug] || []), + ].join(" "), + ); + } + + function productMatchesQuery(product, query) { + const normalized = normalizeSearch(query); + if (!normalized) return true; + const searchable = productSearchText(product); + if (searchable.includes(normalized)) return true; + + const searchableTokens = searchable.split(" "); + return normalized.split(" ").every((queryToken) => + searchableTokens.some((searchableToken) => { + if (searchableToken.startsWith(queryToken)) return true; + if (queryToken.length >= 4 && queryToken.startsWith(searchableToken)) return true; + const threshold = queryToken.length >= 8 ? 2 : queryToken.length >= 4 ? 1 : 0; + return threshold > 0 && Math.abs(queryToken.length - searchableToken.length) <= threshold + ? editDistance(queryToken, searchableToken) <= threshold + : false; + }), + ); + } + + function safeSearchTelemetry(query, resultCount) { + const normalized = normalizeSearch(query); + const knownCodes = PRODUCTS.map((product) => normalizeSearch(product.code)); + const knownNames = PRODUCTS.map((product) => normalizeSearch(product.name)); + const knownAliases = Object.values(SEARCH_ALIASES).flat().map(normalizeSearch); + const knownCategories = CATEGORIES.slice(1).map((category) => normalizeSearch(category.name)); + let queryClass = "unmatched"; + if (knownCodes.includes(normalized)) queryClass = "catalog_code"; + else if (knownNames.includes(normalized)) queryClass = "product_name"; + else if (knownAliases.includes(normalized)) queryClass = "catalog_alias"; + else if (knownCategories.includes(normalized)) queryClass = "research_area"; + else if (resultCount > 0) queryClass = "partial_catalog_match"; + + return { + query_class: queryClass, + query_length_bucket: normalized.length <= 3 ? "1-3" : normalized.length <= 8 ? "4-8" : "9+", + result_count: resultCount, + }; + } + + function searchMatches(query) { + if (!normalizeSearch(query)) return PRODUCTS.slice(0, 5); + return PRODUCTS.filter((product) => productMatchesQuery(product, query)).slice(0, 6); + } + + function initSearch() { + const input = document.querySelector("#site-search"); + const results = document.querySelector("#search-results"); + if (!input || !results) return; + let activeIndex = -1; + let searchTrackTimer = 0; + + const close = () => { + results.hidden = true; + input.setAttribute("aria-expanded", "false"); + input.removeAttribute("aria-activedescendant"); + activeIndex = -1; + }; + + const open = () => { + const matches = searchMatches(input.value); + results.setAttribute("role", matches.length ? "listbox" : "status"); + results.innerHTML = matches.length + ? matches + .map( + (product, index) => ` + + + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}${escapeHtml(product.code)} · ${escapeHtml(product.category)} + ${money.format(product.price)} + + `, + ) + .join("") + : `
No matching product.

Try a molecule name, product code, or research area.

Browse all products →
`; + results.hidden = false; + input.setAttribute("aria-expanded", "true"); + }; + + input.addEventListener("focus", open); + input.addEventListener("input", () => { + activeIndex = -1; + open(); + window.clearTimeout(searchTrackTimer); + const term = normalizeSearch(input.value); + if (term.length >= 2) { + searchTrackTimer = window.setTimeout(() => { + const resultCount = searchMatches(term).length; + track("search", { + ...safeSearchTelemetry(term, resultCount), + surface: "predictive_search", + }); + }, 650); + } + }); + + input.addEventListener("keydown", (event) => { + const options = [...results.querySelectorAll('[role="option"]')]; + if (event.key === "Escape") { + event.preventDefault(); + event.stopPropagation(); + close(); + return; + } + if (!["ArrowDown", "ArrowUp", "Enter"].includes(event.key) || options.length === 0) return; + if (event.key === "Enter" && activeIndex >= 0) { + event.preventDefault(); + options[activeIndex].click(); + return; + } + if (event.key === "Enter") return; + event.preventDefault(); + activeIndex = + event.key === "ArrowDown" + ? Math.min(options.length - 1, activeIndex + 1) + : Math.max(0, activeIndex - 1); + options.forEach((option, index) => option.setAttribute("aria-selected", String(index === activeIndex))); + input.setAttribute("aria-activedescendant", options[activeIndex].id); + options[activeIndex].scrollIntoView({ block: "nearest" }); + }); + + document.addEventListener("click", (event) => { + if (!event.target.closest(".search-wrap")) close(); + }); + document.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") { + event.preventDefault(); + input.focus(); + } + }); + results.addEventListener("click", (event) => { + const link = event.target.closest("[data-search-result]"); + if (!link) return; + const product = PRODUCTS.find((item) => item.slug === link.dataset.searchResult); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: "predictive_search", + }); + }); + } + + function initCollection() { + const grid = document.querySelector("[data-collection-grid]"); + if (!grid) return; + const search = document.querySelector("#collection-search"); + const sort = document.querySelector("#collection-sort"); + const summary = document.querySelector("[data-result-summary]"); + const buttons = [...document.querySelectorAll("[data-filter]")]; + const filterLabels = [...document.querySelectorAll("[data-filter-label]")]; + const params = new URLSearchParams(window.location.search); + const validSorts = new Set(["featured", "name-asc", "price-asc", "price-desc"]); + let category = CATEGORIES.some((item) => item.key === params.get("category")) ? params.get("category") : "all"; + + const updateUrl = () => { + const next = new URL(window.location.href); + if (category === "all") next.searchParams.delete("category"); + else next.searchParams.set("category", category); + if (search.value.trim()) next.searchParams.set("q", search.value.trim()); + else next.searchParams.delete("q"); + if (sort.value === "featured") next.searchParams.delete("sort"); + else next.searchParams.set("sort", sort.value); + window.history.replaceState({}, "", next); + }; + + const render = () => { + const query = search.value.trim(); + let filtered = PRODUCTS.filter((product) => { + const categoryMatch = category === "all" || product.categoryKey === category; + const queryMatch = !query || productMatchesQuery(product, query); + return categoryMatch && queryMatch; + }); + + if (sort.value === "name-asc") filtered.sort((a, b) => a.name.localeCompare(b.name)); + if (sort.value === "price-asc") filtered.sort((a, b) => a.price - b.price); + if (sort.value === "price-desc") filtered.sort((a, b) => b.price - a.price); + + grid.innerHTML = filtered.length + ? filtered.map((product) => productCard(product)).join("") + : ` +
+

No products match.

+

Clear the search or show every research area.

+ +
+ `; + summary.textContent = `${filtered.length} ${filtered.length === 1 ? "product" : "products"}${category === "all" ? "" : ` in ${CATEGORIES.find((item) => item.key === category).name}`}`; + buttons.forEach((button) => button.setAttribute("aria-pressed", String(button.dataset.filter === category))); + filterLabels.forEach((label) => { + label.textContent = category === "all" ? "All products" : CATEGORIES.find((item) => item.key === category).name; + }); + updateUrl(); + }; + + search.value = params.get("q") || ""; + sort.value = validSorts.has(params.get("sort")) ? params.get("sort") : "featured"; + buttons.forEach((button) => { + button.addEventListener("click", () => { + category = button.dataset.filter; + render(); + if (button.closest("[data-filter-drawer]")) closeDrawers(); + track("filter_apply", { filter_name: "research_area", filter_value: category }); + }); + }); + search.addEventListener("input", render); + search.addEventListener("change", () => { + if (!normalizeSearch(search.value)) return; + const resultCount = PRODUCTS.filter((product) => productMatchesQuery(product, search.value)).length; + track("search", { ...safeSearchTelemetry(search.value, resultCount), surface: "collection" }); + }); + sort.addEventListener("change", () => { + render(); + track("sort_changed", { sort_value: sort.value }); + }); + grid.addEventListener("click", (event) => { + if (!event.target.closest("[data-reset-collection]")) return; + category = "all"; + search.value = ""; + sort.value = "featured"; + render(); + search.focus(); + }); + render(); + } + + function initProduct() { + if (PAGE !== "product") return; + const product = PRODUCTS.find((item) => item.slug === PRODUCT_SLUG); + if (!product) return; + track("view_item", { + item_id: product.code, + item_name: product.name, + item_category: product.category, + price: product.price, + demo_only: true, + }); + + try { + const recent = JSON.parse(localStorage.getItem(RECENT_KEY) || "[]").filter((slug) => slug !== product.slug); + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug, ...recent].slice(0, 6))); + } catch { + try { + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug])); + } catch { + // Recently viewed state is optional; the product page remains fully usable without storage. + } + } + + const quantity = document.querySelector("#pdp-quantity"); + const normalizeQuantity = () => { + quantity.value = String(Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity.value, 10) || 1))); + }; + document.querySelectorAll("[data-pdp-quantity-change]").forEach((button) => { + button.addEventListener("click", () => { + quantity.value = String(Number(quantity.value || 1) + Number(button.dataset.pdpQuantityChange)); + normalizeQuantity(); + }); + }); + quantity?.addEventListener("change", normalizeQuantity); + + document.querySelectorAll("[data-media-src]").forEach((button) => { + button.addEventListener("click", () => { + const media = document.querySelector("[data-main-media]"); + if (!media) return; + media.innerHTML = productImage(product, true); + const image = media.querySelector("img"); + const label = media.querySelector(".product-image-label"); + image.src = button.dataset.mediaSrc; + image.alt = button.dataset.mediaAlt; + image.style.transform = `scale(${button.dataset.mediaZoom || "1"})`; + image.style.transformOrigin = button.dataset.mediaView === "label" ? "center 40%" : "center"; + if (label) label.hidden = button.dataset.mediaView === "scale"; + document.querySelectorAll("[data-media-src]").forEach((thumb) => { + const selected = String(thumb === button); + thumb.setAttribute("aria-current", selected); + thumb.setAttribute("aria-pressed", selected); + }); + track("product_media_selected", { item_id: product.code, media_label: button.getAttribute("aria-label") }); + }); + }); + + const mainAdd = document.querySelector("[data-pdp-add]"); + const mobileBar = document.querySelector("[data-mobile-add]"); + if (mainAdd && mobileBar && "IntersectionObserver" in window) { + const observer = new IntersectionObserver(([entry]) => { + const hasScrolledPastPrimaryAction = !entry.isIntersecting && entry.boundingClientRect.top < 0; + mobileBar.dataset.visible = String( + hasScrolledPastPrimaryAction && window.matchMedia("(max-width: 960px)").matches, + ); + }); + observer.observe(mainAdd); + } + } + + function initAccordions() { + document.querySelectorAll(".accordion-trigger").forEach((button) => { + button.addEventListener("click", () => { + const expanded = button.getAttribute("aria-expanded") === "true"; + button.setAttribute("aria-expanded", String(!expanded)); + const panel = document.querySelector(`#${CSS.escape(button.getAttribute("aria-controls"))}`); + if (panel) panel.hidden = expanded; + }); + }); + } + + function initTestingLookup() { + const form = document.querySelector("[data-testing-lookup]"); + if (!form) return; + const input = form.querySelector("input"); + const results = document.querySelector("[data-lookup-results]"); + const params = new URLSearchParams(window.location.search); + if (params.get("product")) input.value = params.get("product"); + + const run = () => { + const query = input.value.trim().toLowerCase(); + const matches = query + ? PRODUCTS.filter((product) => `${product.name} ${product.code}`.toLowerCase().includes(query)) + : []; + if (!query) { + results.innerHTML = `

Enter a product name or code.

Examples: Retatrutide, OVO-001, or BPC-157.

`; + } else if (matches.length === 0) { + results.innerHTML = `

No matching OVO code.

Try a product name, a code from OVO-001 through OVO-010, or browse the full testing table below.

`; + } else { + results.innerHTML = matches + .map( + (product) => ` +
+

${escapeHtml(product.code)} · ${escapeHtml(product.category)}

+

${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

+

Testing status: No result reported for identity, content / mass, purity profile, sterility, or endotoxin.

+

Open the product page ${icons.arrow}

+
+ `, + ) + .join(""); + } + if (query) track("quality_lookup", safeSearchTelemetry(query, matches.length)); + }; + + form.addEventListener("submit", (event) => { + event.preventDefault(); + run(); + }); + if (input.value) run(); + } + + function initNewsletter() { + document.querySelectorAll("[data-newsletter]").forEach((form) => { + const success = form.parentElement.querySelector("[data-newsletter-success]"); + const showSuccess = (persisted) => { + form.hidden = true; + success.hidden = false; + success.textContent = persisted + ? "Preference saved on this device. Nothing was transmitted, and no email will be sent." + : "Preference confirmed for this page only. Nothing was transmitted, and no email will be sent."; + }; + + try { + if (localStorage.getItem(NEWSLETTER_KEY) === "saved") showSuccess(true); + } catch { + // Storage can be unavailable in locked-down browsers; submission still remains local to the page. + } + + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector('input[type="email"]'); + if (!input.checkValidity()) { + input.reportValidity(); + return; + } + let persisted = false; + try { + localStorage.setItem(NEWSLETTER_KEY, "saved"); + persisted = localStorage.getItem(NEWSLETTER_KEY) === "saved"; + } catch { + persisted = false; + } + showSuccess(persisted); + track("newsletter_demo_completed", { storage: persisted ? "local" : "none", transmitted: false }); + }); + }); + } + + function initLinkTracking() { + document.addEventListener("click", (event) => { + const productLink = event.target.closest("[data-product-link]"); + if (productLink) { + const product = PRODUCTS.find((item) => item.slug === productLink.dataset.productLink); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: PAGE, + }); + } + + const categoryLink = event.target.closest("[data-category-link]"); + if (categoryLink) { + track("select_category", { + category: categoryLink.dataset.categoryLink, + surface: categoryLink.dataset.categorySurface || PAGE, + }); + } + + const articleLink = event.target.closest("[data-article-link]"); + if (articleLink) { + track("select_article", { + article_slug: articleLink.dataset.articleLink, + surface: PAGE, + }); + } + }); + + if (PAGE === "collection") { + track("view_item_list", { + item_list_name: "catalog", + item_count: PRODUCTS.length, + }); + } + + if (PAGE === "testing") { + track("view_testing", { testing_state: "no_result_reported" }); + } + + if (PAGE === "article") { + track("view_article", { article_slug: body.dataset.article || "unknown" }); + } + } + + function initReveals() { + const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + if (reduceMotion || !("IntersectionObserver" in window)) return; + + const candidates = [ + ...document.querySelectorAll( + ".hero-copy, .section-head, .testing-feature-copy, .testing-document, .collection-feature-section .product-card", + ), + ]; + if (!candidates.length) return; + + candidates.forEach((element, index) => { + element.classList.add("reveal"); + element.style.setProperty("--reveal-delay", `${Math.min(index % 4, 3) * 70}ms`); + }); + document.documentElement.dataset.revealArmed = ""; + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (!entry.isIntersecting) return; + entry.target.classList.add("is-visible"); + observer.unobserve(entry.target); + }); + }, + { threshold: 0.15, rootMargin: "0px 0px -5% 0px" }, + ); + + candidates.forEach((element) => observer.observe(element)); + } + + renderPage(); + initReveals(); + initDrawersAndCart(); + initSearch(); + initCollection(); + initProduct(); + initAccordions(); + initTestingLookup(); + initNewsletter(); + initLinkTracking(); + track("page_view", { page_title: document.title, page_path: window.location.pathname }); +})(); diff --git a/biologix-strategy-board/ovo-labs-porcelain/testing.html b/biologix-strategy-board/ovo-labs-porcelain/testing.html new file mode 100644 index 0000000..46e6a4c --- /dev/null +++ b/biologix-strategy-board/ovo-labs-porcelain/testing.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Testing — OVO Labs + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/404.html b/biologix-strategy-board/ovo-labs-warm/404.html new file mode 100644 index 0000000..8fca528 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/404.html @@ -0,0 +1,36 @@ + + + + + + Page Not Found · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/README.md b/biologix-strategy-board/ovo-labs-warm/README.md new file mode 100644 index 0000000..ce80e09 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/README.md @@ -0,0 +1,66 @@ +# Datum Peptides + +Datum Peptides is a fictional, non-transactional ecommerce storefront concept. It demonstrates a complete peptide catalog experience without representing real inventory, testing, customers, fulfillment, payments, or medical use. + +## Routes + +| Surface | Route | +|---|---| +| Homepage | `index.html` | +| Full catalog | `catalog.html` | +| Catalog sets | `bundles.html` | +| Testing and COAs | `testing.html` | +| Learning center | `notes.html` | +| About | `company.html` | +| FAQ | `faq.html` | +| Policies | `policies.html` | +| Product pages | `peptides/*.html` | +| Guides | `notes/*.html` | + +Compatibility redirects preserve the previous prototype paths: + +- `../third-standard/` → `../datum-peptides/` +- `lot-record.html` → `testing.html` +- `access.html` → `catalog.html` +- `eligibility.html` remains an alias for `policies.html` + +## Interaction model + +- Predictive search by product name, category, strength, and code +- Category filtering, collection search, sorting, and empty-state recovery +- Ten canonical product pages with responsive media, quantity, testing state, specifications, FAQ, and related entries +- Three catalog sets +- Searchable testing-status page +- Browser-local add, update, remove, subtotal, and clear-cart states +- Local-only newsletter success state +- Keyboard-accessible menu, search, drawers, accordions, and product controls +- Non-PII QA instrumentation through `window.dataLayer` and `window.DatumAnalytics.events()` + +The cart has no checkout or payment path. Nothing is transmitted. + +## Visual system + +The outward-facing visual direction is authored by Claude Fable 5: + +- Inter and IBM Plex Mono +- cool white surfaces, near-black ink, cobalt actions +- compact retail density +- exposed header search and category navigation +- four-column desktop and two-column mobile product grids +- thin fiction banner +- product-first PDP hierarchy +- visible testing states instead of fabricated proof + +## Local preview + +From `biologix-strategy-board/`: + +```bash +python3 -m http.server 4173 +``` + +Then open: + +```text +http://127.0.0.1:4173/datum-peptides/ +``` diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/README.md b/biologix-strategy-board/ovo-labs-warm/_checks/README.md new file mode 100644 index 0000000..ef40c69 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/README.md @@ -0,0 +1,48 @@ +# Checks + +Four harnesses that measure this storefront instead of judging it. Every one of them +caught a real defect that source-reading had missed. + +| file | what it measures | what it caught | +|---|---|---| +| `design-probe.mjs` | spacing, type, colour, contrast, tap targets, per-component fingerprints across 30 page/width combos | 55 type pairs, 18 text colours, 143 contrast failures, h1 rendering 61px on one page and 72px on another | +| `layout-guard.mjs` | horizontal overflow and collapsed containers on 9 routes at 390 and 1440 | the mobile homepage rendering with a 0px-wide copy column and 126px of sideways scroll | +| `alignment.mjs` | distance from the shell edge to every block of copy | five different content insets (0, 17, 25, 32, 48) so nothing shared an axis | +| `functional.mjs` | add to cart, sell gate under DOM bypass, full 5-step checkout, card-data leakage, search | the sell gate is re-attacked by re-enabling a disabled button and clicking it | + +## Run + + cd + node /design-probe.mjs # writes .context/defects.json + node /layout-guard.mjs # prints CLEAN or the offending routes + node /alignment.mjs # prints per-page axis report + node /functional.mjs # prints all-green or the failures + +The site must be served first: + + cd biologix-strategy-board/ovo-labs-warm && python3 -m http.server 8965 --bind 127.0.0.1 + +## Why these exist + +Auditing by reading source kept missing what was obvious on screen. Analytical values +rendered white-on-white at 1.00:1 and the grep-based passes called it fixed. A drawer left +196px of dead space. The mobile homepage was structurally broken while every source check +reported clean. + +Measure the rendered page. Do not trust a name, a flag, or a previous claim. + +## Added after the QA pass + +| file | what it does | +|---|---| +| `route-sweep.mjs` | loads all 26 routes, watching for JS exceptions, console errors, failed requests, broken images, unlabeled controls, placeholder hrefs, weak titles, and h1 count | +| `flows.mjs` | empty states, promo codes valid and invalid, quantity decrement to removal, draft persistence across reload, back button, drawer, testing lookup no-match, 404 | +| `drawer.mjs` | the cart drawer end to end: open, line render, shipping progress, cross-sell, checkout link, focus movement, Escape, quantity, cross-sell add | + +### A lesson worth keeping + +The drawer checks in this session were passing while clicking nothing. They used +`.cart-button`, which has never existed in this codebase; the real trigger is +`[data-cart-open]`. A missing element produced no error, so the check reported +success. Assert the element exists before acting on it, and fail loudly when a +selector disappears. A green check that tested nothing is worse than a red one. diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/alignment.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/alignment.mjs new file mode 100644 index 0000000..fe422f5 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/alignment.mjs @@ -0,0 +1,32 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; +const PAGES=['index','catalog','testing','bundles','notes','faq','policies','company', + 'eligibility','cart','checkout','order-confirmation','peptides/retatrutide']; +const b=await chromium.launch(); +const ctx=await b.newContext({viewport:{width:1440,height:900}}); +const p=await ctx.newPage(); +await p.goto(B+'/index.html'); +await p.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'bpc-157',quantity:2}]))); +for(const pg of PAGES){ + await p.goto(`${B}/${pg}.html`,{waitUntil:'networkidle'}); + const r=await p.evaluate(()=>{ + const shell=document.querySelector('.shell'); + if(!shell) return null; + const SL=Math.round(shell.getBoundingClientRect().left); + // headings + primary text blocks that SHOULD share the shell axis + const sel='h1,h2,h3,.eyebrow,p,li,label,.summary-row,.spec-row,.testing-row,.document-row'; + const off={}; + for(const e of document.querySelectorAll(sel)){ + const r=e.getBoundingClientRect(); + if(r.width<80||r.height===0) continue; + if(e.closest('.cart-drawer,.mobile-drawer,.order-summary,.testing-document,aside')) continue; + const L=Math.round(r.left); + if(Math.abs(L-SL)>2 && L[k,[...v].slice(0,4)]))}; + }); + if(!r) { console.log(`${pg}: no shell`); continue; } + const bad=Object.keys(r.off); + console.log(`${pg.padEnd(24)} shell=${r.SL} ${bad.length? 'OFF-AXIS: '+bad.map(k=>`${k}(${r.off[k].join('/')})`).join(' ') : 'aligned'}`); +} +await b.close(); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/box-containment.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/box-containment.mjs new file mode 100644 index 0000000..958a4a3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/box-containment.mjs @@ -0,0 +1,56 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; const F=[]; const ok=[]; +const b=await chromium.launch(); + +// --- desktop checks +let ctx=await b.newContext({viewport:{width:1440,height:1000}}); +let p=await ctx.newPage(); +p.on('pageerror',e=>F.push('JS EXCEPTION: '+e.message.slice(0,60))); + +// 1. JSX comment must not render as text anywhere +await p.goto(B+'/index.html'); +await p.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'tirzepatide',quantity:2}]))); +await p.goto(B+'/cart.html',{waitUntil:'networkidle'}); +const jsx=await p.evaluate(()=>/\{\/\*|\*\/\}/.test(document.body.innerText)); +jsx?F.push('JSX comment still rendering as text on cart'):ok.push('no JSX comment leaking into the page'); + +// 2. checkout Apply button must actually apply +await p.goto(B+'/checkout.html',{waitUntil:'networkidle'}); +const promo=await p.evaluate(async()=>{ + const f=document.querySelector('[data-promo-form]'), i=document.querySelector('#promo-input'); + if(!f||!i) return 'no promo form on checkout'; + const before=[...document.querySelectorAll('.summary-row')].some(r=>/discount/i.test(r.textContent)); + i.value='OVO-FIRST'; f.dispatchEvent(new Event('submit',{cancelable:true,bubbles:true})); + await new Promise(r=>setTimeout(r,600)); + const after=[...document.querySelectorAll('.summary-row')].some(r=>/discount/i.test(r.textContent)); + return {before,after}; +}); +(typeof promo==='object'&&promo.after)?ok.push('checkout Apply now applies the discount'):F.push('checkout Apply still inert: '+JSON.stringify(promo)); + +// 3. no control may exceed its parent's box +for(const [pg,sel] of [['peptides/tirzepatide','.quantity-control'],['catalog','.mini-quantity']]){ + await p.goto(`${B}/${pg}.html`,{waitUntil:'networkidle'}); + if(sel==='.mini-quantity'){ await p.click('[data-cart-open]'); await p.waitForTimeout(600); } + const spill=await p.evaluate((s)=>{ + const c=document.querySelector(s); if(!c) return 'missing'; + const cr=c.getBoundingClientRect(); + return [...c.querySelectorAll('button,input')].filter(e=>{const r=e.getBoundingClientRect(); + return r.height>cr.height+1||r.right>cr.right+1||r.left{ + const i=document.querySelector('#pdp-quantity'); if(!i) return 'missing'; + const r=i.getBoundingClientRect(); const s=getComputedStyle(i); + return {w:Math.round(r.width),h:Math.round(r.height),color:s.color,visible:r.width>8&&r.height>8}; +}); +qty.visible?ok.push(`quantity value visible at 390 (${qty.w}x${qty.h})`):F.push('quantity value not visible at 390: '+JSON.stringify(qty)); +await b.close(); +ok.forEach(o=>console.log(' ok '+o)); +console.log(F.length?'FAILURES:':'FAILURES: none'); F.forEach(f=>console.log(' XX '+f)); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/design-probe.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/design-probe.mjs new file mode 100644 index 0000000..704612d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/design-probe.mjs @@ -0,0 +1,75 @@ +import { chromium } from 'playwright'; +import fs from 'fs'; +const B='http://127.0.0.1:8965'; +const OUT='/Users/alexweinstein/conductor/workspaces/Quickstart/moroni/.context/defects.json'; +const PAGES=['index','catalog','testing','bundles','notes','faq','policies','company', + 'eligibility','cart','checkout','order-confirmation','404','peptides/retatrutide','peptides/bpc-157']; +const SCALE=[4,8,12,16,24,32,48,64,96]; + +const probe = () => { + const SCALE=[4,8,12,16,24,32,48,64,96]; + const R={spacing:[],type:[],color:[],align:{},contrast:[],tap:[],overflow:[],components:{}}; + const lum=c=>{const m=c.match(/[\d.]+/g);if(!m)return null;const[r,g,b]=m.slice(0,3).map(v=>{v/=255;return v<=.03928?v/12.92:((v+.055)/1.055)**2.4});return .2126*r+.7152*g+.0722*b}; + const ratio=(a,b)=>{const l1=lum(a),l2=lum(b);if(l1==null||l2==null)return null;const[h,lo]=[Math.max(l1,l2),Math.min(l1,l2)];return (h+.05)/(lo+.05)}; + const bgOf=el=>{let n=el;while(n&&n!==document.documentElement){const c=getComputedStyle(n).backgroundColor;if(c&&!c.includes('rgba(0, 0, 0, 0)'))return c;n=n.parentElement}return 'rgb(255,255,255)'}; + + const els=[...document.querySelectorAll('body *')].filter(e=>{ + const r=e.getBoundingClientRect(); return r.width>0&&r.height>0&&getComputedStyle(e).display!=='none'; + }); + + for(const e of els){ + const s=getComputedStyle(e), r=e.getBoundingClientRect(); + const cls=(typeof e.className==='string'?e.className:'').split(' ').filter(Boolean)[0]||e.tagName.toLowerCase(); + + // off-scale spacing + for(const p of ['paddingTop','paddingBottom','paddingLeft','paddingRight','marginTop','marginBottom','gap','rowGap','columnGap']){ + const v=parseFloat(s[p]); if(!v||Number.isNaN(v)) continue; + if(!SCALE.includes(Math.round(v))) R.spacing.push({cls,prop:p,value:Math.round(v)}); + } + // type + colour inventory + R.type.push(`${Math.round(parseFloat(s.fontSize))}/${s.fontWeight}`); + if(s.color) R.color.push(s.color); + + // left-edge histogram for top-level blocks + if(r.width>200){ const L=Math.round(r.left); R.align[L]=(R.align[L]||0)+1; } + + // contrast for real text + const txt=[...e.childNodes].some(n=>n.nodeType===3&&n.textContent.trim().length>1); + if(txt){ + const cr=ratio(s.color,bgOf(e)); + const size=parseFloat(s.fontSize), bold=parseInt(s.fontWeight)>=700; + const need=(size>=24||(size>=18.66&&bold))?3:4.5; + if(cr!==null&&cr0) + R.tap.push({cls,tag:e.tagName,w:Math.round(r.width),h:Math.round(r.height),label:e.textContent.trim().slice(0,24)}); + // overflow past viewport + if(r.right>window.innerWidth+1) R.overflow.push({cls,right:Math.round(r.right)}); + + // component fingerprint for cross-page consistency + if(cls&&/^[a-z]/.test(cls)) { + R.components[cls]=`${s.padding}|${s.fontSize}|${s.borderRadius}|${s.gap}`; + } + } + return R; +}; + +const browser=await chromium.launch(); +const db={pages:{},summary:{}}; +for(const [label,w,h] of [['d',1440,900],['m',390,844]]){ + const ctx=await browser.newContext({viewport:{width:w,height:h}}); + const pg=await ctx.newPage(); + await pg.goto(B+'/index.html'); + await pg.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'bpc-157',quantity:2},{slug:'semaglutide',quantity:1}]))); + for(const p of PAGES){ + try{ + await pg.goto(`${B}/${p}.html`,{waitUntil:'networkidle'}); + db.pages[`${label}:${p}`]=await pg.evaluate(probe); + }catch(e){ db.pages[`${label}:${p}`]={error:e.message.slice(0,80)} } + } + await ctx.close(); +} +await browser.close(); +fs.writeFileSync(OUT,JSON.stringify(db,null,1)); +console.log('probed',Object.keys(db.pages).length,'page/width combos'); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/drawer.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/drawer.mjs new file mode 100644 index 0000000..c6d8088 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/drawer.mjs @@ -0,0 +1,45 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; const F=[]; const ok=[]; +const b=await chromium.launch(); +const ctx=await b.newContext({viewport:{width:1440,height:900}}); +const p=await ctx.newPage(); +p.on('pageerror',e=>F.push('JS EXCEPTION: '+e.message.slice(0,60))); +await p.goto(B+'/index.html'); +await p.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'bpc-157',quantity:1}]))); +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); + +await p.click('[data-cart-open]'); await p.waitForTimeout(600); +const open=await p.evaluate(()=>({open:document.querySelector('[data-cart-drawer]')?.getAttribute('data-open'), + body:document.body.classList.contains('drawer-open'), + items:document.querySelectorAll('.cart-item').length, + crossSell:document.querySelectorAll('.drawer-cross-row').length, + shipBar:!!document.querySelector('.drawer-ship'), + checkoutHref:document.querySelector('.cart-checkout')?.getAttribute('href')})); +if(open.open!=='true') F.push('drawer did not open'); else ok.push('drawer opens'); +if(open.items!==1) F.push(`drawer shows ${open.items} items, expected 1`); else ok.push('drawer renders the line'); +if(!open.shipBar) F.push('shipping progress bar missing'); else ok.push('shipping progress renders'); +if(open.crossSell<1) F.push('cross-sell empty'); else ok.push(`cross-sell renders ${open.crossSell}`); +if(!open.checkoutHref?.includes('checkout')) F.push('checkout link wrong: '+open.checkoutHref); else ok.push('checkout link correct'); + +// focus trap + escape +const focusIn=await p.evaluate(()=>document.activeElement?.closest('[data-cart-drawer]')!==null); +if(!focusIn) F.push('focus not moved into drawer on open'); else ok.push('focus moves into drawer'); +await p.keyboard.press('Escape'); await p.waitForTimeout(500); +const closed=await p.evaluate(()=>document.querySelector('[data-cart-drawer]')?.getAttribute('data-open')); +if(closed!=='false') F.push('Escape did not close drawer'); else ok.push('Escape closes drawer'); + +// quantity from inside the drawer +await p.click('[data-cart-open]'); await p.waitForTimeout(500); +await p.click('[data-cart-quantity][data-delta="1"]'); await p.waitForTimeout(600); +const q=await p.evaluate(()=>JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]')[0]?.quantity); +if(q!==2) F.push(`drawer qty increment gave ${q}, expected 2`); else ok.push('drawer quantity works'); + +// cross-sell add +const before=await p.evaluate(()=>JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]').length); +await p.click('.drawer-cross-add').catch(()=>{}); await p.waitForTimeout(600); +const after=await p.evaluate(()=>JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]').length); +if(after!==before+1) F.push(`cross-sell add: ${before} -> ${after}, expected +1`); else ok.push('cross-sell add works'); + +await b.close(); +ok.forEach(o=>console.log(' ok '+o)); +console.log(F.length?'FAILURES:':'FAILURES: none'); F.forEach(f=>console.log(' XX '+f)); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/flows.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/flows.mjs new file mode 100644 index 0000000..c33ad30 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/flows.mjs @@ -0,0 +1,100 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; +const F=[]; const ok=[]; +const b=await chromium.launch(); +const ctx=await b.newContext({viewport:{width:1440,height:900}}); +const p=await ctx.newPage(); +p.on('pageerror',e=>F.push('JS EXCEPTION: '+e.message.slice(0,70))); +const seed=async(c)=>{ await p.goto(B+'/index.html'); await p.evaluate(v=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify(v)),c); }; +const w=(ms)=>p.waitForTimeout(ms); + +// 1. EMPTY CART states +await seed([]); +for(const pg of ['cart','checkout']){ + await p.goto(`${B}/${pg}.html`,{waitUntil:'networkidle'}); + const t=await p.evaluate(()=>document.body.innerText); + if(!/empty|nothing to check out|no items/i.test(t)) F.push(`${pg}: empty state missing`); + else ok.push(`${pg} empty state`); +} + +// 2. PROMO CODES +await seed([{slug:'bpc-157',quantity:2}]); +await p.goto(B+'/cart.html',{waitUntil:'networkidle'}); +const promo=await p.evaluate(async()=>{ + const out={}; + const f=document.querySelector('[data-promo-form]'); const i=document.querySelector('#promo-input'); + if(!f||!i) return {err:'no promo form'}; + i.value='NOTAREALCODE'; f.dispatchEvent(new Event('submit',{cancelable:true,bubbles:true})); + await new Promise(r=>setTimeout(r,400)); + out.invalid=document.querySelector('[data-promo-feedback]')?.textContent.trim(); + i.value='OVO-FIRST'; f.dispatchEvent(new Event('submit',{cancelable:true,bubbles:true})); + await new Promise(r=>setTimeout(r,500)); + out.valid=document.querySelector('[data-promo-feedback]')?.textContent.trim(); + out.discountRow=[...document.querySelectorAll('.summary-row')].some(r=>/discount/i.test(r.textContent)); + return out; +}); +if(!promo.invalid||!/not a valid|invalid/i.test(promo.invalid)) F.push('promo: invalid code gave no error, got '+JSON.stringify(promo.invalid)); +else ok.push('promo rejects invalid'); +if(!promo.discountRow) F.push('promo: valid code applied no discount row'); +else ok.push('promo applies discount'); + +// 3. QUANTITY EDGES — decrement to zero should remove +await seed([{slug:'bpc-157',quantity:1}]); +await p.goto(B+'/cart.html',{waitUntil:'networkidle'}); +await p.evaluate(()=>document.querySelector('[data-cart-quantity][data-delta="-1"]')?.click()); +await w(500); +const afterZero=await p.evaluate(()=>JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]')); +if(afterZero.length!==0) F.push(`qty: decrement from 1 left ${JSON.stringify(afterZero)}, expected removal`); +else ok.push('qty decrement to zero removes line'); + +// 4. RELOAD MID-CHECKOUT preserves draft +await seed([{slug:'bpc-157',quantity:1}]); +await p.goto(B+'/checkout.html',{waitUntil:'networkidle'}); +await p.evaluate(()=>{const e=document.querySelector('#email'); e.value='persist@test.com'; e.dispatchEvent(new Event('input',{bubbles:true}));}); +await w(400); +await p.reload({waitUntil:'networkidle'}); +const persisted=await p.evaluate(()=>document.querySelector('#email')?.value); +if(persisted!=='persist@test.com') F.push(`reload mid-checkout lost the draft (got "${persisted}")`); +else ok.push('checkout draft survives reload'); + +// 5. BACK BUTTON mid-checkout +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); +await p.goto(B+'/checkout.html',{waitUntil:'networkidle'}); +await p.goBack({waitUntil:'networkidle'}); +const backUrl=p.url(); +if(!backUrl.includes('catalog')) F.push('back button from checkout went to '+backUrl); +else ok.push('back button works'); + +// 6. DRAWER open/close + escape +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); +const trigger=await p.$('[data-cart-open]'); +if(!trigger) F.push('SELECTOR GONE: [data-cart-open] not found, drawer untestable'); +else await trigger.click(); +await w(500); +const opened=await p.evaluate(()=>document.body.classList.contains('drawer-open')); +await p.keyboard.press('Escape'); await w(500); +const closed=await p.evaluate(()=>!document.body.classList.contains('drawer-open')); +if(!opened && trigger) F.push('drawer did not open on cart click'); +else if(!closed) F.push('drawer did not close on Escape'); +else ok.push('drawer opens and Escape closes'); + +// 7. TESTING LOOKUP no-match +await p.goto(B+'/testing.html',{waitUntil:'networkidle'}); +const lookup=await p.evaluate(async()=>{ + const f=document.querySelector('[data-testing-lookup]'); const i=f?f.querySelector('input'):null; + if(!i) return 'no lookup form'; + i.value='ZZZNOTHING'; f.dispatchEvent(new Event('submit',{cancelable:true,bubbles:true})); + await new Promise(r=>setTimeout(r,400)); + return document.querySelector('[data-lookup-results]')?.textContent.trim().slice(0,60); +}); +if(!/no matching/i.test(String(lookup))) F.push('testing lookup no-match state: '+lookup); +else ok.push('testing lookup handles no-match'); + +// 8. 404 +const r404=await p.goto(B+'/does-not-exist.html').catch(()=>null); +if(r404&&r404.status()===200) F.push('404 route returns 200 for a missing page'); +else ok.push('missing page does not 200'); + +await b.close(); +console.log('PASSED:'); ok.forEach(o=>console.log(' ok '+o)); +console.log(F.length?'\nFAILURES:':'\nFAILURES: none'); F.forEach(f=>console.log(' XX '+f)); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/functional.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/functional.mjs new file mode 100644 index 0000000..be1f4d3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/functional.mjs @@ -0,0 +1,69 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; +const b=await chromium.launch(); const fails=[]; +const ctx=await b.newContext({viewport:{width:1440,height:900}}); +const p=await ctx.newPage(); +p.on('console',m=>{ if(m.type()==='error') fails.push('CONSOLE: '+m.text().slice(0,80)); }); +p.on('requestfailed',r=>fails.push('REQ FAILED: '+r.url().slice(-60))); + +// 1. full purchase path +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); +await p.evaluate(()=>localStorage.clear()); +await p.reload({waitUntil:'networkidle'}); +const addBtn=await p.$('.product-card:not(:has(.add-button[disabled])) .add-button'); +if(!addBtn) fails.push('no enabled add button on catalog'); +else { await addBtn.click(); await p.waitForTimeout(500); } +let cart=await p.evaluate(()=>JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]')); +if(cart.length!==1) fails.push(`add-to-cart broken: cart=${JSON.stringify(cart)}`); + +// 2. sell gate under DOM bypass +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); +const gate=await p.evaluate(async()=>{ + const c=[...document.querySelectorAll('.product-card')].find(x=>/Retatrutide/.test(x.textContent)); + const btn=c?.querySelector('.add-button'); if(!btn) return 'no retatrutide card'; + const before=JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]').length; + btn.disabled=false; btn.click(); + await new Promise(r=>setTimeout(r,400)); + const after=JSON.parse(localStorage.getItem('ovo-labs-demo-cart-v2')||'[]').length; + return after===before ? 'held' : 'BREACHED'; +}); +if(gate!=='held') fails.push('SELL GATE: '+gate); + +// 3. checkout completes +await p.goto(B+'/checkout.html',{waitUntil:'networkidle'}); +let done=''; +try{ done=await p.evaluate(async()=>{ + const w=(ms)=>new Promise(r=>setTimeout(r,ms)); + const set=(id,v)=>{const e=document.querySelector('#'+id); if(!e) return false; e.value=v; e.dispatchEvent(new Event('input',{bubbles:true})); return true;}; + if(!document.querySelector('[data-checkout-form]')) return 'no form'; + set('email','a@b.com'); set('phone','4155550142'); + document.querySelector('[data-next="contact"]')?.click(); await w(200); + set('firstName','A'); set('lastName','B'); set('address1','1 Market St'); set('city','SF'); + const st=document.querySelector('#state'); if(st){st.value='CA';st.dispatchEvent(new Event('change',{bubbles:true}));} + set('zip','94105'); + document.querySelector('[data-next="shipping"]')?.click(); await w(200); + document.querySelector('[data-next="delivery"]')?.click(); await w(200); + document.querySelector('[data-next="payment"]')?.click(); await w(200); + const t=document.querySelector('[name="terms"]'); if(t){t.checked=true;t.dispatchEvent(new Event('change',{bubbles:true}));} + await w(150); + document.querySelector('[data-place-order]')?.click(); await w(800); + return location.pathname; +}); }catch(e){ await p.waitForTimeout(600); done=p.url(); } +if(!String(done).includes('order-confirmation')) fails.push('checkout did not complete: '+done); + +// 4. payment stores no card data +const card=await p.evaluate(()=>JSON.stringify(JSON.parse(localStorage.getItem('ovo-labs-orders-v1')||'[]')[0]||{}).includes('4242')); +if(card) fails.push('ORDER CONTAINS CARD DATA'); + +// 5. search +await p.goto(B+'/catalog.html',{waitUntil:'networkidle'}); +const s=await p.evaluate(async()=>{ + const i=document.querySelector('.search-input'); if(!i) return 'no search'; + i.value='reta'; i.dispatchEvent(new Event('input',{bubbles:true})); + await new Promise(r=>setTimeout(r,500)); + return document.querySelectorAll('.search-result').length; +}); +if(!(s>0)) fails.push('search returned '+s); + +await b.close(); +console.log(fails.length? 'FUNCTIONAL FAILURES:\n '+fails.join('\n ') : 'FUNCTIONAL: all green (add-to-cart, sell gate, full checkout, no card data, search)'); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/layout-guard.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/layout-guard.mjs new file mode 100644 index 0000000..7b13a21 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/layout-guard.mjs @@ -0,0 +1,25 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; +const PAGES=['index','catalog','testing','bundles','cart','checkout','peptides/retatrutide','faq','policies']; +const b=await chromium.launch(); const bad=[]; +for(const [tag,w] of [['mob',390],['desk',1440]]){ + const ctx=await b.newContext({viewport:{width:w,height:844}}); + const p=await ctx.newPage(); + await p.goto(B+'/index.html'); + await p.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'bpc-157',quantity:2}]))); + for(const pg of PAGES){ + await p.goto(`${B}/${pg}.html`,{waitUntil:'networkidle'}); + const r=await p.evaluate(()=>{ + const de=document.documentElement; + const zero=[...document.querySelectorAll('body *')].filter(e=>{ + const b=e.getBoundingClientRect(); const s=getComputedStyle(e); + return s.display!=='none' && e.children.length>0 && b.width===0 && b.height>0; + }).length; + return {ov:de.scrollWidth-de.clientWidth, zero}; + }); + if(r.ov>1||r.zero>0) bad.push(`${tag}:${pg} overflow=${r.ov} zeroWidthContainers=${r.zero}`); + } + await ctx.close(); +} +await b.close(); +console.log(bad.length?bad.join('\n'):'CLEAN: no overflow, no collapsed containers on any page at either width'); diff --git a/biologix-strategy-board/ovo-labs-warm/_checks/route-sweep.mjs b/biologix-strategy-board/ovo-labs-warm/_checks/route-sweep.mjs new file mode 100644 index 0000000..0d8bf2c --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/_checks/route-sweep.mjs @@ -0,0 +1,47 @@ +import { chromium } from 'playwright'; +const B='http://127.0.0.1:8965'; +const PAGES=['index','catalog','testing','bundles','notes','faq','policies','company','eligibility', + 'cart','checkout','order-confirmation','404','peptides/retatrutide','peptides/bpc-157', + 'peptides/semaglutide','peptides/tirzepatide','peptides/cagrilintide','peptides/tb-500', + 'peptides/cjc-1295','peptides/ipamorelin','peptides/bpc-tb-blend','peptides/cjc-ipamorelin-blend', + 'notes/coa-boundaries','notes/choosing-by-molecule','notes/reading-testing-status']; +const issues=[]; +const b=await chromium.launch(); +const ctx=await b.newContext({viewport:{width:1440,height:900}}); +const p=await ctx.newPage(); +p.on('pageerror',e=>issues.push({sev:'critical',pg:cur,what:'JS exception: '+e.message.slice(0,70)})); +p.on('console',m=>{ if(m.type()==='error') issues.push({sev:'high',pg:cur,what:'console: '+m.text().slice(0,70)}); }); +p.on('requestfailed',r=>{ const u=r.url(); if(!u.includes('favicon')) issues.push({sev:'high',pg:cur,what:'req failed: '+u.slice(-50)}); }); +let cur=''; +await p.goto(B+'/index.html'); +await p.evaluate(()=>localStorage.setItem('ovo-labs-demo-cart-v2',JSON.stringify([{slug:'bpc-157',quantity:2}]))); + +for(const pg of PAGES){ + cur=pg; + const res=await p.goto(`${B}/${pg}.html`,{waitUntil:'networkidle'}).catch(e=>null); + if(!res||!res.ok()) { issues.push({sev:'critical',pg,what:`HTTP ${res?res.status():'ERR'}`}); continue; } + const r=await p.evaluate(async()=>{ + window.scrollTo(0,document.body.scrollHeight); await new Promise(x=>setTimeout(x,350)); window.scrollTo(0,0); + const broken=[...document.querySelectorAll('img')].filter(i=>i.complete&&i.naturalWidth===0).map(i=>i.src.slice(-40)); + const empty=[...document.querySelectorAll('a[href],button')].filter(e=>!e.textContent.trim()&&!e.getAttribute('aria-label')).length; + const badHref=[...document.querySelectorAll('a[href]')].filter(a=>{const h=a.getAttribute('href');return h==='#'||h===''||h==='javascript:void(0)';}).length; + const rendered=document.querySelector('#site-root')?.children.length||0; + return {broken,empty,badHref,rendered,title:document.title,h1:document.querySelectorAll('h1').length}; + }); + if(r.rendered===0) issues.push({sev:'critical',pg,what:'site-root empty, page did not render'}); + r.broken.forEach(s=>issues.push({sev:'high',pg,what:'broken image '+s})); + if(r.empty) issues.push({sev:'medium',pg,what:`${r.empty} control(s) with no label`}); + if(r.badHref) issues.push({sev:'medium',pg,what:`${r.badHref} placeholder href`}); + if(!r.title||r.title.length<8) issues.push({sev:'medium',pg,what:'weak/missing '}); + if(r.h1!==1) issues.push({sev:'medium',pg,what:`${r.h1} h1 elements (want exactly 1)`}); +} +await b.close(); +const by={critical:[],high:[],medium:[]}; +issues.forEach(i=>(by[i.sev]||=[]).push(i)); +console.log(`PAGES TESTED: ${PAGES.length}`); +for(const s of ['critical','high','medium']){ + const list=by[s]||[]; + console.log(`\n${s.toUpperCase()}: ${list.length}`); + const seen=new Set(); + list.forEach(i=>{const k=i.what.slice(0,45); if(seen.has(k))return; seen.add(k); console.log(` ${i.pg.padEnd(30)} ${i.what}`);}); +} diff --git a/biologix-strategy-board/ovo-labs-warm/access.html b/biologix-strategy-board/ovo-labs-warm/access.html new file mode 100644 index 0000000..01457b7 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/access.html @@ -0,0 +1,17 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title>Redirecting to the OVO Labs catalog + + + + + + + + +

Continue to the OVO Labs catalog.

+ + diff --git a/biologix-strategy-board/ovo-labs-warm/assets/apple-touch-icon.png b/biologix-strategy-board/ovo-labs-warm/assets/apple-touch-icon.png new file mode 100644 index 0000000..13ca138 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/apple-touch-icon.png differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/datum-hero-vials.webp b/biologix-strategy-board/ovo-labs-warm/assets/datum-hero-vials.webp new file mode 100644 index 0000000..7771819 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/datum-hero-vials.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/datum-product-vial.webp b/biologix-strategy-board/ovo-labs-warm/assets/datum-product-vial.webp new file mode 100644 index 0000000..a720a48 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/datum-product-vial.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/favicon.svg b/biologix-strategy-board/ovo-labs-warm/assets/favicon.svg new file mode 100644 index 0000000..a057696 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/assets/favicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/biologix-strategy-board/ovo-labs-warm/assets/fonts/OFL-ibm-plex-mono.txt b/biologix-strategy-board/ovo-labs-warm/assets/fonts/OFL-ibm-plex-mono.txt new file mode 100644 index 0000000..670c6c0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/assets/fonts/OFL-ibm-plex-mono.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-400-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-400-latin.woff2 new file mode 100644 index 0000000..52b6c75 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-500-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-500-latin.woff2 new file mode 100644 index 0000000..3308bce Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/fonts/ibm-plex-mono-500-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin-ext.woff2 b/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin-ext.woff2 new file mode 100644 index 0000000..57da6f8 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin-ext.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/fonts/inter-var-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/hero-ampoule.webp b/biologix-strategy-board/ovo-labs-warm/assets/hero-ampoule.webp new file mode 100644 index 0000000..7198b96 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/hero-ampoule.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/ovo-hero-still.webp b/biologix-strategy-board/ovo-labs-warm/assets/ovo-hero-still.webp new file mode 100644 index 0000000..e52069b Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/ovo-hero-still.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/ovo-set-pair.webp b/biologix-strategy-board/ovo-labs-warm/assets/ovo-set-pair.webp new file mode 100644 index 0000000..65cf55a Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/ovo-set-pair.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/assets/ovo-vial-front.webp b/biologix-strategy-board/ovo-labs-warm/assets/ovo-vial-front.webp new file mode 100644 index 0000000..41514d6 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/assets/ovo-vial-front.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/bundles.html b/biologix-strategy-board/ovo-labs-warm/bundles.html new file mode 100644 index 0000000..a7fd648 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/bundles.html @@ -0,0 +1,36 @@ + + + + + + Catalog Sets · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/cart.html b/biologix-strategy-board/ovo-labs-warm/cart.html new file mode 100644 index 0000000..fb37495 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/cart.html @@ -0,0 +1,36 @@ + + + + + + Cart · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/catalog.html b/biologix-strategy-board/ovo-labs-warm/catalog.html new file mode 100644 index 0000000..94e2eac --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/catalog.html @@ -0,0 +1,36 @@ + + + + + + Shop All Peptides · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/checkout.html b/biologix-strategy-board/ovo-labs-warm/checkout.html new file mode 100644 index 0000000..5ac4800 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/checkout.html @@ -0,0 +1,36 @@ + + + + + + Checkout · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/README.md b/biologix-strategy-board/ovo-labs-warm/color-lab/README.md new file mode 100644 index 0000000..efe8349 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/README.md @@ -0,0 +1,17 @@ +# Peptide homepage color lab + +Internal comparison prototype for four complete homepage directions: + +- A: Gilded Clinical +- B: Cobalt Standard +- C: Black Label +- D: Oxblood Editorial + +The package is self-contained. From `biologix-strategy-board/ovo-labs-warm`, serve the +directory over HTTP and open `/color-lab/`. + +`Standard Peptide Labs` is a working label for visual comparison, not a cleared brand +name. Product, inventory, lot, and company data are fictional. No order is processed. + +This is an Alex-only decision prototype. The selected direction requires Claude Fable 5 +review at desktop and narrow widths before any public release. diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-hero-vials.webp b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-hero-vials.webp new file mode 100644 index 0000000..7771819 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-hero-vials.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-product-vial.webp b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-product-vial.webp new file mode 100644 index 0000000..a720a48 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/datum-product-vial.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-400-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-400-latin.woff2 new file mode 100644 index 0000000..52b6c75 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-500-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-500-latin.woff2 new file mode 100644 index 0000000..3308bce Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/ibm-plex-mono-500-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin-ext.woff2 b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin-ext.woff2 new file mode 100644 index 0000000..57da6f8 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin-ext.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin.woff2 b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/fonts/inter-var-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/hero-ampoule.webp b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/hero-ampoule.webp new file mode 100644 index 0000000..7198b96 Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/hero-ampoule.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/assets/ovo-set-pair.webp b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/ovo-set-pair.webp new file mode 100644 index 0000000..65cf55a Binary files /dev/null and b/biologix-strategy-board/ovo-labs-warm/color-lab/assets/ovo-set-pair.webp differ diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/index.html b/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/index.html new file mode 100644 index 0000000..42693dc --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/index.html @@ -0,0 +1,408 @@ + + + + + + Standard Peptide Labs | Research compounds, known by lot + + + + + + + + + + + + + +
+
+
+
+

Standard / Series 01

+

+ Known by + its lot. +

+

Research compounds with the current identity, content, purity, and COA state shown before the order. Nothing hidden behind a quality badge.

+ +
+ +
+
+ Three clear research vials with white labels, silver collars, and a small blue verification mark + +
+
+ COA published + Lot TZ-2410-B + 99.4% RP-HPLC +
+
+
+ +
    +
  • + 01 +

    Current lot named on every product

    +
  • +
  • + 02 +

    Identity and content reported separately

    +
  • +
  • + 03 +

    Purity method visible before purchase

    +
  • +
  • + 04 +

    Research use only, without ambiguity

    +
  • +
+
+ +
+
+
+

Current release

+

Bestsellers,
fully specified.

+
+
+

Four reference compounds with active inventory and published analytical records.

+ View all compounds +
+
+ +
+ + + + + + + +
+
+ +
+
+

The standard / Analytical proof

+

Evidence before
inventory.

+

Each figure stays attached to its sample, method, report date, and current lot. A purity number never stands in for identity, content, sterility, or endotoxin testing.

+
+ +
+
+

Current Tirzepatide release

+
99.4%
+

Relative purity by RP-HPLC, area %. Lot TZ-2410-B, reported 11 June 2026.

+
+ +
+
+
+ Certificate of analysis +

Tirzepatide · 10 mg

+
+ Published +
+
+
Lot / sample
TZ-2410-B / SMP-TZ2410B
+
Identity
RP-HPLC / ESI-MS · Conforms
+
Content
RP-HPLC, 214 nm · 10.1 mg
+
Purity profile
RP-HPLC, area % · 99.4%
+
Sterility / endotoxin
Not represented
+
+ +
+
+ +
+

Ten catalog compounds. Ten named lots. One consistent reporting standard.

+ Browse testing records +
+
+ +
+
+
+

Research finder

+

Start with the
research axis.

+
+

Browse by the mechanism under study, then compare labeled amount, analytical scope, and current lot. No outcome promises. No protocol advice.

+
+ + +
+ +
+
+
+

The purchase standard

+

Built for people
who read the data.

+

Three checks the interface completes before a current lot reaches the cart.

+
+ +
+
+
The product page names exactly which lot is current and what was actually measured. No three-email scavenger hunt.
+
+ 01 / Current lot + Identity stays attached to the item +
+
+ +
+
+
Results are comparable at a glance without collapsing identity, content, and purity into one badge.
+
02 / Comparable fields
+
+
+
Unreported fields remain visible instead of turning silence into an implied passing result.
+
03 / Bounded evidence
+
+
+
+
+
+ +
+
+
+

The reference desk

+

Read the record,
not the claim.

+
+

Short field notes for comparing identity, purity, testing scope, and current-lot status.

+
+ +
+ + Nº 01 + + How to read a testing status + Testing guide · 4 minutes + + + + + Nº 02 + + Shop by molecule, not by hype + Catalog method · 6 minutes + + + + + Nº 03 + + What a COA can and cannot show + Document scope · 5 minutes + + + +
+
+
+ + + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/styles.css b/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/styles.css new file mode 100644 index 0000000..b324e82 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/black-label/styles.css @@ -0,0 +1,1633 @@ +@font-face { + font-family: "Inter"; + src: url("../assets/fonts/inter-var-latin.woff2") format("woff2"); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "IBM Plex Mono"; + src: url("../assets/fonts/ibm-plex-mono-400-latin.woff2") format("woff2"); + font-weight: 400; + font-style: normal; + font-display: swap; +} + +@font-face { + font-family: "IBM Plex Mono"; + src: url("../assets/fonts/ibm-plex-mono-500-latin.woff2") format("woff2"); + font-weight: 500; + font-style: normal; + font-display: swap; +} + +:root { + --ink: #0b0c0e; + --graphite: #141619; + --carbon: #1d2024; + --steel: #aeb4bc; + --silver: #dfe3e8; + --mist: #f1f3f5; + --paper: #ffffff; + --text: #111317; + --muted: #686e76; + --line: #d8dce1; + --line-dark: #373b41; + --signal: #2777ff; + --shell: min(100% - 64px, 1376px); + --section: clamp(104px, 10vw, 176px); + --ease: cubic-bezier(0.16, 1, 0.3, 1); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + overflow-x: hidden; +} + +body { + margin: 0; + overflow-x: hidden; + background: var(--paper); + color: var(--text); + font-family: "Inter", Arial, sans-serif; + font-size: 16px; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +body, +a, +button, +summary { + cursor: default; +} + +a, +summary { + cursor: pointer; +} + +a { + color: inherit; + text-decoration: none; +} + +img { + display: block; + width: 100%; + height: auto; +} + +p, +h1, +h2, +h3, +blockquote, +figure, +dl, +dd { + margin: 0; +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.section-pad { + padding-block: var(--section); +} + +.skip-link { + position: fixed; + z-index: 100; + top: 12px; + left: 12px; + padding: 10px 14px; + background: var(--paper); + color: var(--ink); + transform: translateY(-180%); + transition: transform 180ms ease; +} + +.skip-link:focus { + transform: translateY(0); +} + +:focus-visible { + outline: 2px solid var(--signal); + outline-offset: 4px; +} + +.signal { + display: inline-block; + width: 7px; + height: 7px; + flex: 0 0 7px; + border-radius: 50%; + background: var(--signal); +} + +.eyebrow { + color: #555b63; + font-family: "IBM Plex Mono", monospace; + font-size: 10px; + font-weight: 500; + letter-spacing: 0.16em; + line-height: 1.3; + text-transform: uppercase; +} + +.eyebrow.light { + color: var(--steel); +} + +.announcement { + min-height: 32px; + padding: 7px 32px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 24px; + background: #050608; + color: #c8cbd0; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.12em; + line-height: 1.4; + text-transform: uppercase; +} + +.announcement p { + display: inline-flex; + align-items: center; + gap: 10px; +} + +.announcement a { + color: var(--paper); + border-bottom: 1px solid #555a61; +} + +.site-header { + position: relative; + z-index: 10; + background: var(--ink); + color: var(--paper); +} + +.nav { + height: 88px; + display: grid; + grid-template-columns: 1.2fr auto 1.2fr; + align-items: center; + gap: 36px; +} + +.brand { + display: inline-flex; + align-items: center; + justify-self: start; + gap: 13px; +} + +.brand-mark { + width: 30px; + height: 30px; + display: grid; + place-items: center; + border: 1px solid #7f858d; + border-radius: 50%; + color: var(--paper); + font-family: "IBM Plex Mono", monospace; + font-size: 13px; + font-weight: 500; +} + +.brand-name { + display: flex; + flex-direction: column; + font-size: 13px; + font-weight: 720; + letter-spacing: 0.16em; + line-height: 1.2; +} + +.brand-name span { + color: #9ba0a8; + font-family: "IBM Plex Mono", monospace; + font-size: 7px; + font-weight: 500; + letter-spacing: 0.22em; +} + +.nav-links, +.nav-utility { + display: flex; + align-items: center; +} + +.nav-links { + gap: 31px; +} + +.nav-links a, +.nav-utility a { + color: #c8cbd0; + font-size: 12px; + font-weight: 540; +} + +.nav-links a, +.nav-utility > a:first-child { + transition: color 180ms ease; +} + +.nav-links a:hover, +.nav-utility > a:first-child:hover { + color: var(--paper); +} + +.nav-utility { + justify-self: end; + gap: 23px; +} + +.bag-link { + display: inline-flex; + align-items: center; + gap: 12px; +} + +.bag-link span { + width: 26px; + height: 26px; + display: grid; + place-items: center; + border: 1px solid #4d525a; + border-radius: 50%; + color: var(--paper); + font-family: "IBM Plex Mono", monospace; + font-size: 9px; +} + +.mobile-nav { + display: none; +} + +.hero { + min-height: calc(100vh - 120px); + background: var(--ink); + color: var(--paper); +} + +.hero-grid { + min-height: clamp(650px, calc(100vh - 240px), 860px); + display: grid; + grid-template-columns: minmax(0, 0.92fr) minmax(520px, 1.08fr); + align-items: stretch; + padding-top: 36px; +} + +.hero-copy { + min-width: 0; + padding: clamp(74px, 8vw, 136px) 5vw 80px 0; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.hero-copy h1 { + margin-top: 22px; + font-size: clamp(72px, 8.6vw, 142px); + font-weight: 650; + letter-spacing: -0.072em; + line-height: 0.79; +} + +.hero-copy h1 span { + display: block; + white-space: nowrap; +} + +.hero-copy h1 span:last-child { + color: #8f959d; +} + +.hero-lede { + max-width: 520px; + margin-top: 49px; + color: #b7bbc1; + font-size: clamp(16px, 1.35vw, 20px); + line-height: 1.52; +} + +.hero-actions { + margin-top: 38px; + display: flex; + align-items: center; + gap: 31px; +} + +.button { + min-height: 52px; + padding: 15px 21px; + display: inline-flex; + align-items: center; + justify-content: center; + border: 1px solid currentColor; + font-size: 12px; + font-weight: 650; + letter-spacing: 0.02em; + line-height: 1; + transition: background-color 220ms ease, color 220ms ease, border-color 220ms ease; +} + +.button-light { + border-color: var(--paper); + background: var(--paper); + color: var(--ink); +} + +.button-light:hover { + border-color: #c7cbd0; + background: #c7cbd0; +} + +.text-link { + display: inline-flex; + align-items: center; + padding-bottom: 4px; + border-bottom: 1px solid #a6abb2; + color: var(--text); + font-size: 12px; + font-weight: 650; +} + +.text-link.on-dark { + border-color: #575c63; + color: var(--paper); +} + +.hero-visual { + min-height: 620px; + min-width: 0; + display: flex; + flex-direction: column; +} + +.hero-image-frame { + position: relative; + flex: 1; + overflow: hidden; + background: #eef0f2; +} + +.hero-image-frame::before { + content: ""; + position: absolute; + z-index: 1; + inset: 0; + box-shadow: inset 0 0 0 1px rgb(255 255 255 / 38%); + pointer-events: none; +} + +.hero-image-frame img { + height: 100%; + object-fit: cover; + object-position: 53% center; + filter: saturate(0.92) contrast(1.02); +} + +.image-index { + position: absolute; + right: 18px; + bottom: 15px; + padding: 7px 9px; + background: var(--ink); + color: var(--silver); + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.1em; +} + +.hero-visual figcaption { + height: 48px; + padding-inline: 15px; + display: grid; + grid-template-columns: 1fr 1fr 1fr; + align-items: center; + border-top: 1px solid #34383d; + background: #101215; + color: #aeb3ba; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.09em; + text-transform: uppercase; +} + +.hero-visual figcaption span { + display: inline-flex; + align-items: center; + gap: 8px; +} + +.hero-visual figcaption span:nth-child(2) { + justify-content: center; +} + +.hero-visual figcaption span:nth-child(3) { + justify-content: flex-end; +} + +.hero-specs { + min-height: 120px; + margin-block: 0; + padding: 0; + display: grid; + grid-template-columns: repeat(4, 1fr); + border-top: 1px solid #2e3237; + list-style: none; +} + +.hero-specs > li { + padding: 28px 24px 24px 0; + display: grid; + grid-template-columns: 34px 1fr; + gap: 15px; + border-right: 1px solid #2e3237; +} + +.hero-specs > li:not(:first-child) { + padding-left: 24px; +} + +.hero-specs > li:last-child { + border-right: 0; +} + +.hero-specs span { + color: #6d737b; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; +} + +.hero-specs p { + max-width: 205px; + color: #c5c9ce; + font-size: 12px; + line-height: 1.45; +} + +.commerce { + background: var(--paper); +} + +.section-heading, +.finder-intro, +.education-heading { + display: grid; + grid-template-columns: 2fr 1fr; + align-items: end; + gap: 60px; +} + +.section-heading h2, +.finder-intro h2, +.education-heading h2 { + margin-top: 20px; + font-size: clamp(54px, 6.2vw, 96px); + font-weight: 610; + letter-spacing: -0.065em; + line-height: 0.92; +} + +.heading-note { + max-width: 370px; + padding-bottom: 8px; +} + +.heading-note p, +.finder-intro > p, +.education-heading > p { + margin-bottom: 30px; + color: var(--muted); + font-size: 15px; + line-height: 1.55; +} + +.product-grid { + margin-top: 72px; + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 16px; +} + +.product-card { + min-width: 0; + border: 1px solid var(--line); + background: var(--paper); +} + +.product-image { + position: relative; + aspect-ratio: 1 / 1.15; + display: block; + overflow: hidden; + background: var(--mist); +} + +.product-image::after { + content: ""; + position: absolute; + inset: auto 0 0; + height: 1px; + background: linear-gradient(90deg, #eef0f2 0%, #8d949d 50%, #eef0f2 100%); +} + +.product-image img { + height: 100%; + object-fit: cover; + object-position: center 41%; + transition: transform 700ms var(--ease); +} + +.product-card:hover .product-image img { + transform: scale(1.015); +} + +.product-code { + position: absolute; + z-index: 1; + top: 17px; + left: 17px; + color: #626870; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.12em; +} + +.product-body { + padding: 23px 20px 18px; +} + +.product-title { + min-height: 93px; + display: flex; + justify-content: space-between; + gap: 14px; +} + +.product-family { + color: #727881; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.11em; + text-transform: uppercase; +} + +.product-title h3 { + margin-top: 9px; + font-size: 21px; + font-weight: 610; + letter-spacing: -0.035em; +} + +.product-title p:last-child { + margin-top: 4px; + color: var(--muted); + font-size: 11px; +} + +.product-title > strong { + font-family: "IBM Plex Mono", monospace; + font-size: 13px; + font-weight: 500; +} + +.product-specs { + border-top: 1px solid var(--line); +} + +.product-specs > div { + min-height: 34px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + border-bottom: 1px solid var(--line); + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.03em; +} + +.product-specs dt { + color: #858b93; + text-transform: uppercase; +} + +.product-specs dd { + color: #262a2f; + font-weight: 500; +} + +.product-specs .verified { + display: inline-flex; + align-items: center; + gap: 7px; +} + +.product-specs .signal { + width: 5px; + height: 5px; + flex-basis: 5px; +} + +.product-link { + margin-top: 18px; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 11px; + font-weight: 650; +} + +.product-link span { + color: #858b93; + font-size: 13px; +} + +.testing { + background: var(--graphite); + color: var(--paper); +} + +.testing-heading { + display: grid; + grid-template-columns: 1fr 1.55fr 0.8fr; + align-items: end; + gap: 54px; +} + +.testing-heading h2 { + font-size: clamp(58px, 6.7vw, 104px); + font-weight: 610; + letter-spacing: -0.068em; + line-height: 0.9; +} + +.testing-heading > p:last-child { + max-width: 390px; + padding-bottom: 8px; + color: #aeb3ba; + font-size: 14px; + line-height: 1.6; +} + +.proof-grid { + margin-top: 88px; + display: grid; + grid-template-columns: 0.88fr 1.12fr; + align-items: stretch; + border-top: 1px solid var(--line-dark); + border-bottom: 1px solid var(--line-dark); +} + +.proof-number { + min-height: 550px; + padding: 52px 60px 48px 0; + display: flex; + flex-direction: column; + border-right: 1px solid var(--line-dark); +} + +.proof-label { + color: var(--steel); + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.proof-number .number { + margin-top: auto; + font-size: clamp(120px, 17vw, 250px); + font-weight: 580; + letter-spacing: -0.09em; + line-height: 0.74; +} + +.proof-number .number span { + color: #757b84; + font-size: 0.27em; + letter-spacing: -0.03em; + vertical-align: top; +} + +.proof-number > p:last-child { + max-width: 390px; + margin-top: 50px; + color: #aeb3ba; + font-size: 12px; +} + +.coa-sheet { + margin: 44px 0 44px 56px; + align-self: center; + background: var(--paper); + color: var(--text); +} + +.coa-sheet header { + min-height: 102px; + padding: 26px 30px; + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 20px; + border-bottom: 1px solid var(--line); +} + +.coa-sheet h3 { + margin-top: 8px; + font-size: 20px; + font-weight: 620; + letter-spacing: -0.03em; +} + +.coa-state { + display: inline-flex; + align-items: center; + gap: 8px; + color: #2d3238; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.coa-state .signal { + width: 6px; + height: 6px; + flex-basis: 6px; +} + +.coa-sheet dl { + padding: 0 30px; +} + +.coa-sheet dl > div { + min-height: 63px; + display: grid; + grid-template-columns: 0.72fr 1.28fr; + align-items: center; + gap: 20px; + border-bottom: 1px solid var(--line); +} + +.coa-sheet dt, +.coa-sheet dd { + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + line-height: 1.45; +} + +.coa-sheet dt { + color: #717780; + text-transform: uppercase; +} + +.coa-sheet dd { + text-align: right; +} + +.coa-sheet .omitted dd { + color: #8a9098; +} + +.coa-sheet footer { + min-height: 72px; + padding: 18px 30px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 22px; + color: #6e747c; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; +} + +.coa-sheet footer a { + color: var(--text); + font-weight: 500; +} + +.testing-action { + padding-top: 36px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 32px; +} + +.testing-action p { + color: var(--steel); + font-size: 13px; +} + +.finder { + background: #f4f5f6; +} + +.finder-intro > p { + max-width: 420px; + justify-self: end; +} + +.finder-list { + margin-top: 84px; + border-top: 1px solid #bfc4ca; +} + +.finder-list > a { + min-height: 112px; + display: grid; + grid-template-columns: 70px 1.3fr 1fr 28px; + align-items: center; + gap: 24px; + border-bottom: 1px solid #bfc4ca; + transition: padding-inline 300ms var(--ease), background-color 300ms var(--ease); +} + +.finder-list > a:hover { + padding-inline: 16px; + background: var(--paper); +} + +.finder-number, +.finder-products { + color: #767c84; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + line-height: 1.5; +} + +.finder-title { + font-size: clamp(22px, 2vw, 30px); + font-weight: 570; + letter-spacing: -0.04em; +} + +.finder-arrow { + justify-self: end; + color: #6e747c; + font-size: 15px; +} + +.reviews { + background: var(--ink); + color: var(--paper); +} + +.reviews-layout { + display: grid; + grid-template-columns: 0.72fr 1.28fr; + gap: clamp(70px, 10vw, 150px); +} + +.reviews-layout header { + padding-top: 8px; +} + +.reviews-layout header h2 { + margin-top: 24px; + font-size: clamp(48px, 4.6vw, 72px); + font-weight: 600; + letter-spacing: -0.06em; + line-height: 0.94; +} + +.reviews-layout header > p:last-child { + max-width: 330px; + margin-top: 37px; + color: #9ea4ac; + font-size: 13px; +} + +.review-primary { + padding-bottom: 63px; + border-bottom: 1px solid var(--line-dark); +} + +.review-primary blockquote { + color: #f0f1f3; + font-size: clamp(34px, 3.3vw, 52px); + font-weight: 450; + letter-spacing: -0.045em; + line-height: 1.13; +} + +.review-primary figcaption { + margin-top: 38px; + display: flex; + justify-content: space-between; + gap: 24px; + color: #848a93; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.07em; + text-transform: uppercase; +} + +.review-secondary { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 42px; +} + +.review-secondary figure { + padding-top: 42px; +} + +.review-secondary figure + figure { + padding-left: 42px; + border-left: 1px solid var(--line-dark); +} + +.review-secondary blockquote { + color: #c4c8ce; + font-size: 17px; + line-height: 1.5; +} + +.review-secondary figcaption { + margin-top: 28px; + color: #737a83; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.07em; + text-transform: uppercase; +} + +.education { + background: var(--paper); +} + +.education-heading > p { + max-width: 380px; + justify-self: end; +} + +.article-list { + margin-top: 84px; + border-top: 1px solid var(--line); +} + +.article-list > a { + min-height: 134px; + display: grid; + grid-template-columns: 120px 1fr 30px; + align-items: center; + gap: 30px; + border-bottom: 1px solid var(--line); + transition: padding-inline 300ms var(--ease), background-color 300ms var(--ease); +} + +.article-list > a:hover { + padding-inline: 16px; + background: var(--mist); +} + +.article-number { + color: #858b93; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.1em; +} + +.article-list strong { + display: block; + font-size: clamp(24px, 2.6vw, 38px); + font-weight: 560; + letter-spacing: -0.045em; +} + +.article-list small { + margin-top: 10px; + display: block; + color: #858b93; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.article-arrow { + justify-self: end; + color: #777d85; +} + +.footer { + overflow: hidden; + background: var(--ink); + color: var(--paper); +} + +.footer-cta { + padding-block: clamp(108px, 11vw, 170px); +} + +.footer-cta > div { + margin-top: 40px; + display: flex; + align-items: end; + justify-content: space-between; + gap: 60px; +} + +.footer-cta h2 { + font-size: clamp(74px, 10vw, 150px); + font-weight: 610; + letter-spacing: -0.078em; + line-height: 0.78; +} + +.footer-cta .button { + margin-bottom: 4px; +} + +.footer-nav { + padding-block: 48px; + display: grid; + grid-template-columns: 2.3fr repeat(3, 0.7fr); + gap: 64px; + border-top: 1px solid var(--line-dark); +} + +.footer-brand .brand { + margin-bottom: 28px; +} + +.footer-brand > p { + max-width: 330px; + color: #858b93; + font-size: 11px; + line-height: 1.55; +} + +.footer-nav > div:not(.footer-brand) { + display: flex; + flex-direction: column; + gap: 10px; +} + +.footer-nav > div:not(.footer-brand) p { + margin-bottom: 10px; + color: #707780; + font-family: "IBM Plex Mono", monospace; + font-size: 8px; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.footer-nav > div:not(.footer-brand) a { + color: #b7bbc1; + font-size: 11px; +} + +.footer-nav > div:not(.footer-brand) a:hover { + color: var(--paper); +} + +.footer-wordmark { + height: 0.71em; + color: #22252a; + font-size: clamp(120px, 19.5vw, 286px); + font-weight: 760; + letter-spacing: -0.082em; + line-height: 0.74; + white-space: nowrap; + user-select: none; +} + +.footer-legal { + position: relative; + z-index: 1; + min-height: 74px; + padding-block: 20px; + display: grid; + grid-template-columns: 1fr 2fr 1fr; + gap: 28px; + align-items: center; + border-top: 1px solid #2e3237; + background: var(--ink); + color: #696f77; + font-family: "IBM Plex Mono", monospace; + font-size: 7px; + letter-spacing: 0.06em; + line-height: 1.55; + text-transform: uppercase; +} + +.footer-legal p:nth-child(2) { + text-align: center; +} + +.footer-legal p:last-child { + text-align: right; +} + +@media (max-width: 1120px) { + :root { + --shell: min(100% - 48px, 1376px); + } + + .nav { + grid-template-columns: 1fr auto; + } + + .nav-links { + display: none; + } + + .hero-grid { + grid-template-columns: minmax(0, 0.85fr) minmax(460px, 1.15fr); + } + + .hero-copy { + padding-right: 5vw; + } + + .product-grid { + grid-template-columns: repeat(2, 1fr); + gap: 28px 16px; + } + + .testing-heading { + grid-template-columns: 1fr 2fr; + } + + .testing-heading > p:last-child { + grid-column: 2; + } + + .reviews-layout { + grid-template-columns: 0.85fr 1.15fr; + gap: 70px; + } +} + +@media (max-width: 760px) { + :root { + --shell: min(100% - 32px, 1376px); + --section: 92px; + } + + html { + scroll-behavior: auto; + } + + .announcement { + min-height: 30px; + padding: 7px 16px; + } + + .announcement a { + display: none; + } + + .nav { + height: 72px; + grid-template-columns: 1fr auto; + } + + .nav-utility { + display: none; + } + + .mobile-nav { + position: relative; + display: block; + } + + .mobile-nav summary { + list-style: none; + color: #d0d3d7; + font-family: "IBM Plex Mono", monospace; + font-size: 9px; + letter-spacing: 0.12em; + text-transform: uppercase; + } + + .mobile-nav summary::-webkit-details-marker { + display: none; + } + + .mobile-nav-panel { + position: absolute; + top: 39px; + right: 0; + width: min(310px, calc(100vw - 32px)); + padding: 9px 22px 18px; + display: flex; + flex-direction: column; + background: var(--paper); + color: var(--text); + box-shadow: 0 22px 50px rgb(0 0 0 / 25%); + } + + .mobile-nav-panel a { + padding: 15px 0; + border-bottom: 1px solid var(--line); + font-size: 13px; + font-weight: 600; + } + + .brand-mark { + width: 27px; + height: 27px; + } + + .brand-name { + font-size: 11px; + } + + .brand-name span { + font-size: 6px; + } + + .hero { + min-height: 0; + } + + .hero-grid { + min-height: 0; + display: flex; + flex-direction: column; + padding-top: 0; + } + + .hero-copy { + min-height: 514px; + padding: 75px 0 58px; + } + + .hero-copy h1 { + margin-top: 19px; + font-size: clamp(61px, 18.8vw, 76px); + letter-spacing: -0.077em; + line-height: 0.82; + } + + .hero-lede { + margin-top: 37px; + font-size: 15px; + line-height: 1.53; + } + + .hero-actions { + width: 100%; + margin-top: 32px; + align-items: flex-start; + flex-direction: column; + gap: 21px; + } + + .hero-actions .button { + width: 100%; + } + + .hero-visual { + min-height: 0; + } + + .hero-image-frame { + aspect-ratio: 0.91 / 1; + flex: none; + } + + .hero-image-frame img { + object-position: 53% center; + } + + .hero-visual figcaption { + height: auto; + min-height: 52px; + grid-template-columns: 1fr 1fr; + gap: 8px; + } + + .hero-visual figcaption span:nth-child(2) { + justify-content: flex-end; + } + + .hero-visual figcaption span:nth-child(3) { + display: none; + } + + .hero-specs { + min-height: 0; + grid-template-columns: 1fr 1fr; + } + + .hero-specs > li, + .hero-specs > li:not(:first-child) { + min-height: 98px; + padding: 20px 16px 18px 0; + grid-template-columns: 25px 1fr; + gap: 8px; + } + + .hero-specs > li:nth-child(even) { + padding-left: 16px; + border-right: 0; + } + + .hero-specs > li:nth-child(n + 3) { + border-top: 1px solid #2e3237; + } + + .hero-specs p { + font-size: 10px; + } + + .section-heading, + .finder-intro, + .education-heading { + display: block; + } + + .section-heading h2, + .finder-intro h2, + .education-heading h2 { + margin-top: 15px; + font-size: clamp(49px, 14vw, 64px); + line-height: 0.91; + } + + .heading-note, + .finder-intro > p, + .education-heading > p { + max-width: none; + margin-top: 35px; + padding: 0; + } + + .heading-note p, + .finder-intro > p, + .education-heading > p { + margin-bottom: 24px; + font-size: 13px; + } + + .product-grid { + margin-top: 52px; + grid-template-columns: 1fr; + gap: 20px; + } + + .product-image { + aspect-ratio: 1 / 1.02; + } + + .product-body { + padding: 21px 18px 17px; + } + + .testing-heading { + display: block; + } + + .testing-heading h2 { + margin-top: 20px; + font-size: clamp(53px, 15vw, 70px); + } + + .testing-heading > p:last-child { + max-width: none; + margin-top: 34px; + padding: 0; + font-size: 13px; + } + + .proof-grid { + margin-top: 57px; + display: block; + } + + .proof-number { + min-height: 385px; + padding: 34px 0 35px; + border-right: 0; + border-bottom: 1px solid var(--line-dark); + } + + .proof-number .number { + font-size: 38vw; + } + + .proof-number > p:last-child { + margin-top: 37px; + } + + .coa-sheet { + margin: 24px 0; + } + + .coa-sheet header { + min-height: 92px; + padding: 22px 18px; + } + + .coa-sheet h3 { + font-size: 17px; + } + + .coa-sheet dl { + padding: 0 18px; + } + + .coa-sheet dl > div { + min-height: 72px; + grid-template-columns: 0.64fr 1.36fr; + gap: 12px; + } + + .coa-sheet dt, + .coa-sheet dd { + font-size: 8px; + } + + .coa-sheet footer { + min-height: 78px; + padding: 16px 18px; + align-items: flex-start; + flex-direction: column; + gap: 8px; + } + + .testing-action { + padding-top: 28px; + align-items: stretch; + flex-direction: column; + } + + .finder-list { + margin-top: 55px; + } + + .finder-list > a { + min-height: 128px; + padding-block: 22px; + grid-template-columns: 35px 1fr 20px; + grid-template-rows: auto auto; + gap: 8px 11px; + } + + .finder-list > a:hover { + padding-inline: 0; + background: transparent; + } + + .finder-number { + grid-row: 1 / span 2; + align-self: start; + padding-top: 5px; + } + + .finder-title { + font-size: 22px; + line-height: 1.06; + } + + .finder-products { + grid-column: 2; + } + + .finder-arrow { + grid-column: 3; + grid-row: 1 / span 2; + align-self: center; + } + + .reviews-layout { + display: block; + } + + .reviews-layout header h2 { + font-size: 50px; + } + + .review-quotes { + margin-top: 68px; + } + + .review-primary { + padding-bottom: 44px; + } + + .review-primary blockquote { + font-size: 31px; + line-height: 1.17; + } + + .review-primary figcaption { + align-items: flex-start; + flex-direction: column; + gap: 7px; + } + + .review-secondary { + display: block; + } + + .review-secondary figure { + padding: 32px 0; + border-bottom: 1px solid var(--line-dark); + } + + .review-secondary figure + figure { + padding-left: 0; + border-left: 0; + } + + .article-list { + margin-top: 54px; + } + + .article-list > a { + min-height: 137px; + grid-template-columns: 54px 1fr 18px; + gap: 12px; + } + + .article-list > a:hover { + padding-inline: 0; + background: transparent; + } + + .article-list strong { + font-size: 23px; + line-height: 1.09; + } + + .footer-cta > div { + margin-top: 30px; + align-items: stretch; + flex-direction: column; + gap: 43px; + } + + .footer-cta h2 { + font-size: clamp(70px, 21vw, 86px); + line-height: 0.82; + } + + .footer-cta .button { + width: 100%; + } + + .footer-nav { + grid-template-columns: 1fr 1fr; + gap: 48px 30px; + } + + .footer-brand { + grid-column: 1 / -1; + } + + .footer-wordmark { + height: 0.78em; + font-size: 29vw; + } + + .footer-legal { + min-height: 0; + padding-block: 26px; + display: flex; + align-items: flex-start; + flex-direction: column; + gap: 12px; + } + + .footer-legal p:nth-child(2), + .footer-legal p:last-child { + text-align: left; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + } +} diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/board.css b/biologix-strategy-board/ovo-labs-warm/color-lab/board.css new file mode 100644 index 0000000..1c39096 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/board.css @@ -0,0 +1,595 @@ +@font-face { + font-family: Inter; + src: url("assets/fonts/inter-var-latin.woff2") format("woff2"); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +:root { + --ink: #111; + --muted: #707070; + --line: #dedede; + --paper: #f3f3f1; + --white: #fff; + --blue: #1545e8; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--paper); + color: var(--ink); + font-family: Inter, Arial, sans-serif; + -webkit-font-smoothing: antialiased; +} + +button, +a { + color: inherit; + font: inherit; +} + +button { + cursor: pointer; +} + +.board-header { + min-height: 92px; + padding: 18px clamp(20px, 3vw, 48px); + display: flex; + align-items: center; + justify-content: space-between; + gap: 30px; + background: var(--ink); + color: #fff; +} + +.board-title { + display: flex; + align-items: center; + gap: 14px; +} + +.lab-mark { + position: relative; + width: 38px; + aspect-ratio: 1; + display: block; + border: 1px solid rgba(255, 255, 255, .45); + border-radius: 50%; +} + +.lab-mark::before, +.lab-mark::after { + content: ""; + position: absolute; + top: 50%; + left: 50%; + background: #fff; + transform: translate(-50%, -50%); +} + +.lab-mark::before { + width: 18px; + height: 1px; +} + +.lab-mark::after { + width: 1px; + height: 18px; +} + +.board-title p, +.section-label { + margin: 0 0 5px; + color: #aaa; + font-size: 9px; + font-weight: 720; + letter-spacing: .12em; + text-transform: uppercase; +} + +.board-title h1 { + margin: 0; + font-size: 19px; + font-weight: 620; + letter-spacing: -.02em; +} + +.board-summary { + display: flex; + align-items: center; + gap: 10px; + font-size: 10px; + font-weight: 650; +} + +.board-summary span, +.board-summary strong { + padding: 9px 11px; + border: 1px solid rgba(255, 255, 255, .22); +} + +.board-summary strong { + border-color: var(--blue); + background: var(--blue); +} + +main { + width: min(1600px, 100%); + margin: 0 auto; + padding: clamp(18px, 2.6vw, 42px); +} + +.controls { + margin-bottom: 16px; + display: flex; + justify-content: space-between; + gap: 16px; +} + +.variant-tabs, +.device-controls { + display: flex; + align-items: stretch; + gap: 8px; +} + +.variant-tabs { + min-width: 0; + flex: 1; +} + +.variant-tabs button { + position: relative; + min-width: 180px; + padding: 11px 14px; + display: flex; + align-items: center; + gap: 11px; + border: 1px solid var(--line); + background: var(--white); + text-align: left; +} + +.variant-tabs button:hover { + border-color: #999; +} + +.variant-tabs button[aria-selected="true"] { + border-color: var(--ink); + box-shadow: inset 0 -3px 0 var(--ink); +} + +.variant-tabs button em { + position: absolute; + top: -8px; + right: 8px; + padding: 3px 6px; + background: var(--blue); + color: #fff; + font-size: 7px; + font-style: normal; + font-weight: 750; + letter-spacing: .08em; + text-transform: uppercase; +} + +.variant-tabs button > span:last-of-type { + display: grid; + gap: 3px; + font-size: 10px; + font-weight: 700; + line-height: 1.1; +} + +.variant-tabs button b { + color: #8a8a8a; + font-size: 8px; + letter-spacing: .1em; +} + +.swatches { + width: 27px; + height: 27px; + display: grid; + grid-template-columns: 1fr 1fr; + overflow: hidden; + flex: 0 0 auto; + border: 1px solid #ccc; + border-radius: 50%; +} + +.swatches i:first-child { + grid-row: 1 / span 2; +} + +[data-variant="gold"] .swatches i:nth-child(1) { background: #fff; } +[data-variant="gold"] .swatches i:nth-child(2) { background: #e9dfcf; } +[data-variant="gold"] .swatches i:nth-child(3) { background: #b5945d; } +[data-variant="cobalt"] .swatches i:nth-child(1) { background: #fff; } +[data-variant="cobalt"] .swatches i:nth-child(2) { background: #1545e8; } +[data-variant="cobalt"] .swatches i:nth-child(3) { background: #111; } +[data-variant="black-label"] .swatches i:nth-child(1) { background: #111; } +[data-variant="black-label"] .swatches i:nth-child(2) { background: #fff; } +[data-variant="black-label"] .swatches i:nth-child(3) { background: #bfc5cd; } +[data-variant="oxblood"] .swatches i:nth-child(1) { background: #fbfaf8; } +[data-variant="oxblood"] .swatches i:nth-child(2) { background: #721f32; } +[data-variant="oxblood"] .swatches i:nth-child(3) { background: #171515; } + +.device-controls { + flex: 0 0 auto; +} + +.device-controls button, +.device-controls a { + min-height: 50px; + padding: 0 13px; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 6px; + border: 1px solid var(--line); + background: var(--white); + font-size: 9px; + font-weight: 700; + text-decoration: none; +} + +.device-controls button.is-active { + border-color: var(--ink); + background: var(--ink); + color: #fff; +} + +.device-controls svg { + width: 14px; + fill: none; + stroke: currentColor; + stroke-width: 1.3; +} + +.preview-stage { + padding: 14px; + background: #dededb; + border: 1px solid #d0d0cd; +} + +.preview-label { + min-height: 74px; + padding: 8px 6px 20px; + display: flex; + align-items: center; + justify-content: space-between; + gap: 40px; +} + +.preview-label > div { + display: flex; + align-items: center; + gap: 12px; +} + +.preview-label > div > span { + width: 39px; + aspect-ratio: 1; + display: grid; + place-items: center; + border-radius: 50%; + background: var(--ink); + color: #fff; + font-size: 12px; + font-weight: 750; +} + +.preview-label > div > div { + display: grid; + gap: 4px; +} + +.preview-label strong { + font-size: 13px; +} + +.preview-label small { + color: #666; + font-size: 9px; +} + +.preview-label p { + max-width: 580px; + margin: 0; + color: #555; + font-size: 10px; + line-height: 1.55; + text-align: right; +} + +.browser-frame { + overflow: hidden; + border: 1px solid #aaa; + border-radius: 7px 7px 0 0; + background: #fff; + box-shadow: 0 22px 55px rgba(0, 0, 0, .14); +} + +.browser-chrome { + height: 39px; + padding: 0 13px; + display: flex; + align-items: center; + gap: 6px; + border-bottom: 1px solid #d4d4d4; + background: #eee; +} + +.browser-chrome > span { + width: 9px; + height: 9px; + border-radius: 50%; + background: #c3c3c3; +} + +.browser-chrome p { + width: min(430px, 48%); + margin: 0 auto; + padding: 5px 12px; + border: 1px solid #d4d4d4; + border-radius: 4px; + background: #fff; + color: #777; + font-size: 8px; + text-align: center; +} + +.frame-shell { + position: relative; + height: min(74vh, 900px); + min-height: 660px; + display: flex; + justify-content: center; + overflow: hidden; + background: #c9c9c7; +} + +.loading-state { + position: absolute; + inset: 0; + display: grid; + place-content: center; + justify-items: center; + gap: 12px; + background: #fff; + color: #777; + font-size: 9px; + letter-spacing: .08em; + text-transform: uppercase; +} + +.loading-state i { + width: 24px; + height: 24px; + border: 2px solid #ddd; + border-top-color: var(--ink); + border-radius: 50%; + animation: spin .75s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +iframe { + position: relative; + z-index: 2; + width: 100%; + height: 100%; + border: 0; + background: #fff; + transition: width .25s ease; +} + +.preview-stage[data-device-state="mobile"] .frame-shell { + padding: 24px 0; +} + +.preview-stage[data-device-state="mobile"] iframe { + width: 390px; + max-width: 100%; + min-width: 0; + flex: 0 0 390px; + border-radius: 14px; + box-shadow: 0 8px 30px rgba(0, 0, 0, .18); +} + +.decision-grid { + margin-top: 22px; + display: grid; + grid-template-columns: 1fr 1fr; + gap: 18px; +} + +.decision-grid article { + min-height: 330px; + padding: clamp(28px, 3.5vw, 54px); + background: #fff; + border: 1px solid var(--line); +} + +.recommendation { + color: #fff; + background: var(--blue) !important; + border-color: var(--blue) !important; +} + +.recommendation .section-label { + color: rgba(255, 255, 255, .62); +} + +.decision-grid h2 { + margin: 10px 0 22px; + font-size: clamp(30px, 3.6vw, 54px); + font-weight: 560; + letter-spacing: -.055em; + line-height: 1; +} + +.decision-grid p:not(.section-label) { + max-width: 700px; + margin: 0; + color: #5f5f5f; + font-size: 13px; + line-height: 1.7; +} + +.name-lane p a { + color: inherit; + text-decoration-thickness: 1px; + text-underline-offset: 3px; +} + +.recommendation p:not(.section-label) { + color: rgba(255, 255, 255, .78); +} + +.recommendation button { + margin-top: 28px; + min-height: 46px; + padding: 0 18px; + border: 1px solid #fff; + background: #fff; + color: var(--blue); + font-size: 10px; + font-weight: 750; +} + +.name-list { + margin: 26px 0 20px; + display: flex; + flex-wrap: wrap; + gap: 8px; +} + +.name-list span { + padding: 10px 12px; + border: 1px solid #ccc; + font-size: 10px; + font-weight: 680; +} + +.name-lane > small { + color: #8b8b8b; + font-size: 8px; +} + +footer { + padding: 22px clamp(20px, 3vw, 48px); + display: flex; + justify-content: space-between; + gap: 20px; + background: #e6e6e3; + border-top: 1px solid #d0d0cd; + color: #777; + font-size: 8px; + font-weight: 650; + letter-spacing: .08em; + text-transform: uppercase; +} + +@media (max-width: 1180px) { + .controls { + align-items: stretch; + flex-direction: column; + } + + .variant-tabs { + overflow-x: auto; + padding-top: 8px; + } + + .device-controls { + justify-content: flex-end; + } +} + +@media (max-width: 760px) { + .board-header { + align-items: flex-start; + } + + .board-summary span { + display: none; + } + + .board-title h1 { + font-size: 15px; + } + + main { + padding: 12px; + } + + .variant-tabs button { + min-width: 160px; + } + + .device-controls { + display: grid; + grid-template-columns: 1fr 1fr; + } + + .device-controls a { + grid-column: 1 / -1; + } + + .preview-stage { + padding: 8px; + } + + .preview-label { + padding: 8px 4px 16px; + align-items: flex-start; + flex-direction: column; + gap: 10px; + } + + .preview-label p { + text-align: left; + } + + .browser-chrome p { + width: 65%; + } + + .frame-shell { + height: 720px; + min-height: 0; + } + + .decision-grid { + grid-template-columns: 1fr; + } + + .decision-grid article { + min-height: 0; + } + + footer { + align-items: flex-start; + flex-direction: column; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + animation: none !important; + transition: none !important; + } +} diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/board.js b/biologix-strategy-board/ovo-labs-warm/color-lab/board.js new file mode 100644 index 0000000..61b4d83 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/board.js @@ -0,0 +1,105 @@ +(() => { + const variants = { + gold: { + letter: "A", + name: "Gilded Clinical", + palette: "White · cream · champagne gold · black", + note: "The gold direction you asked for. Expensive when gold stays a detail and the purchase action stays black.", + }, + cobalt: { + letter: "B", + name: "Cobalt Standard", + palette: "Optic white · cobalt · near-black · pale blue", + note: "My recommendation. It gives the science and testing system a recognizable signal while keeping the commerce crisp and energetic.", + }, + "black-label": { + letter: "C", + name: "Black Label", + palette: "Graphite · white · polished silver · ice blue", + note: "The strongest luxury posture. It can command attention, but photography and copy must keep it from drifting into crypto or bodybuilding.", + }, + oxblood: { + letter: "D", + name: "Oxblood Editorial", + palette: "Porcelain · ink · deep oxblood · mineral blush", + note: "The female-leading option without defaulting to pink. It feels editorial and warm, with enough darkness to stay credible to male buyers.", + }, + }; + + const frame = document.querySelector("#variant-frame"); + const stage = document.querySelector(".preview-stage"); + const openLink = document.querySelector("#open-variant"); + const variantLetter = document.querySelector("#variant-letter"); + const variantName = document.querySelector("#variant-name"); + const variantPalette = document.querySelector("#variant-palette"); + const variantNote = document.querySelector("#variant-note"); + const tabs = [...document.querySelectorAll("[data-variant]")]; + const deviceButtons = [...document.querySelectorAll("[data-device]")]; + const validVariant = (value) => Object.hasOwn(variants, value); + + function selectVariant(key, updateHistory = true) { + if (!validVariant(key)) return; + const variant = variants[key]; + + tabs.forEach((tab) => { + const selected = tab.dataset.variant === key; + tab.setAttribute("aria-selected", String(selected)); + tab.tabIndex = selected ? 0 : -1; + }); + + variantLetter.textContent = variant.letter; + variantName.textContent = variant.name; + variantPalette.textContent = variant.palette; + variantNote.textContent = variant.note; + frame.title = `${variant.name} homepage preview`; + frame.src = `${key}/`; + openLink.href = `${key}/`; + + if (updateHistory) { + const url = new URL(window.location.href); + url.searchParams.set("variant", key); + window.history.replaceState({}, "", url); + } + + window.localStorage.setItem("peptide-color-variant", key); + } + + function selectDevice(device) { + stage.dataset.deviceState = device; + deviceButtons.forEach((button) => { + const selected = button.dataset.device === device; + button.classList.toggle("is-active", selected); + button.setAttribute("aria-pressed", String(selected)); + }); + window.localStorage.setItem("peptide-color-device", device); + } + + tabs.forEach((tab, index) => { + tab.addEventListener("click", () => selectVariant(tab.dataset.variant)); + tab.addEventListener("keydown", (event) => { + if (!["ArrowLeft", "ArrowRight"].includes(event.key)) return; + event.preventDefault(); + const delta = event.key === "ArrowRight" ? 1 : -1; + const next = tabs[(index + delta + tabs.length) % tabs.length]; + next.focus(); + selectVariant(next.dataset.variant); + }); + }); + + deviceButtons.forEach((button) => { + button.addEventListener("click", () => selectDevice(button.dataset.device)); + }); + + document.querySelector("[data-jump='cobalt']").addEventListener("click", () => { + selectVariant("cobalt"); + document.querySelector(".preview-stage").scrollIntoView({ behavior: "smooth", block: "start" }); + }); + + const queryVariant = new URLSearchParams(window.location.search).get("variant"); + const storedVariant = window.localStorage.getItem("peptide-color-variant"); + const initialVariant = validVariant(queryVariant) ? queryVariant : validVariant(storedVariant) ? storedVariant : "gold"; + const storedDevice = window.localStorage.getItem("peptide-color-device"); + + selectVariant(initialVariant, false); + selectDevice(storedDevice === "mobile" ? "mobile" : "desktop"); +})(); diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.css b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.css new file mode 100644 index 0000000..3e6d352 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.css @@ -0,0 +1,5933 @@ +/* Self-hosted faces. The production worker sends font-src 'self', which blocks + fonts.googleapis.com, so the Google Fonts @import is gone. Inter must stay + VARIABLE: the design uses font-weight 650, which needs a live wght axis. */ + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("../assets/fonts/inter-var-latin-ext.woff2") format("woff2"); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, + U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, + U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("../assets/fonts/inter-var-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("../assets/fonts/ibm-plex-mono-400-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("../assets/fonts/ibm-plex-mono-500-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +:root { + /* Clinical palette. Token NAMES are Datum's verbatim, so every downstream + var() reference is byte-identical and only the VALUES change. + + ACCENT: Datum shipped #1f3fcf, hue 229deg at 47% lightness. That is indigo, + three degrees off Linear's brand blue, and it reads developer-tool. Every + medical institution clusters at 207-211deg and 26-36% lightness: NHS 209, + Mayo 211, Cleveland 207. Saturation is NOT the tell (those all run 100%, + higher than Datum's 74%). Hue and depth are. So the accent moves 20deg + toward azure and drops ~11 points darker, which also buys contrast: + 6.38:1 on white vs the old 7.86 at a much more authoritative value. + + NEUTRALS: unchanged. They are blue-leaning (#5b6472 is hue 218) which now + sits 9deg from the accent instead of 11, so the family is tighter than + before. Warming them would undo the clinical read entirely. + + SURFACES: cards stay pure white. On a clinical page that is correct, so + the 43 hardcoded #fff in this file are no longer a defect to chase. */ + --bg: #f6f7f9; + --surface: #ffffff; + --surface-soft: #f0f2f5; + --line: #e3e7ec; + --line-strong: #c9d0d9; + + /* text only. see --slate for the dark SURFACE, which used to share this. */ + --ink: #101317; + --text-2: #5b6472; + /* was #7b8491 at 3.78:1 on white, which failed AA for small text and was the + single root cause of most measured contrast failures across the site. */ + /* #6b7480 cleared 4.5 on --surface but only reached 4.42 on --bg and 4.22 on + --surface-soft, so muted text failed AA wherever it sat on a tinted panel. + #646d79 clears 4.5 on all three. */ + --text-3: #646d79; + + /* Dark surface, split out from --ink. It backs the concept banner, the + testing feature, the footer, the newsletter button, toasts and the mobile + cart bar: the largest block of colour on the site. Flat near-black there + reads like an unstyled default. A near-black carrying the accent's own + hue (211deg) reads deliberate, and costs nothing in contrast: white on it + is 17.8:1. This is the single highest-leverage move in the palette. */ + --slate: #0c1826; + + /* interactive: links, prices, badges, cart count, focus rings, nav underline */ + --cobalt: #005eb8; + --cobalt-deep: #004a91; + --cobalt-tint: #e8f1fa; + + /* semantic states left alone. They are doing a job, they are hue-distant + from azure, and changing them adds risk with no visual payoff. */ + --success: #147453; + --success-tint: #e9f6f1; + --danger: #a22b3a; + + /* text on --slate surfaces */ + --on-dark: #ffffff; + + /* BRAND MATERIAL, not a UI colour. Gold is 3.0:1 on white, so it can never + carry a link, button, badge or body text. It exists for the product: amber + glass, brass crimp, foil on the carton. On screen it is allowed in exactly + two places: inside product photography, and the wordmark mark, which is a + decorative non-interactive 1.5px ring (a UI boundary needs 3:1, so it + clears). Everywhere else, the accent is azure. */ + --gold: #b08a52; + --gold-bright: #c69b63; + + /* TYPE SYSTEM. Measurement across 30 page/width combos found 55 distinct + size/weight pairs and SEVEN different display clamps, each section having + invented its own heading size (h1 rendered 61px on the homepage and 72px on + the 404). That absence of a scale, more than any single value, is what made + the page read as an unmaintained template. Three display steps now serve + every heading on the site. */ + --t-display: clamp(38px, 4.4vw, 58px); /* page h1 */ + --t-section: clamp(26px, 2.6vw, 36px); /* section h2 */ + --t-sub: 20px; /* minor h2 / panel titles */ + + /* Text on --slate. The footer and dark bands were still carrying five hardcoded + tan values left over from the cream palette, 752 occurrences in total. */ + --on-dark-2: rgba(255, 255, 255, 0.72); + --on-dark-3: rgba(255, 255, 255, 0.54); + + --ease: cubic-bezier(0.16, 1, 0.3, 1); + --shadow: 0 18px 50px rgba(22, 32, 58, 0.12); + --shell: min(1320px, calc(100vw - 48px)); + --sans: "Inter", Arial, sans-serif; + --mono: "IBM Plex Mono", ui-monospace, monospace; + + /* Spacing scale. 4px base, doubling at the top so large steps stay distinct. + The file already clustered here (8px x28, 12px x40, 16px x23, 24px x11); + the 41 distinct values were outliers, not a system. This formalises what + was already mostly true and snaps the exceptions. + + 1px, 2px, 3px, 6px and 7px stay literals. Those are badge, pill, dot, + focus-ring and glyph-scale optical corrections, not layout spacing, and + forcing them onto the scale breaks the components. */ + --s-1: 4px; + --s-2: 8px; + --s-3: 12px; + --s-4: 16px; + --s-4h: 20px; /* on the 4px grid; the set skipped it, so 206 declarations read as off-scale */ + --s-5: 24px; + --s-6: 32px; + --s-6h: 40px; /* likewise */ + --s-7: 48px; + --s-8: 64px; + --s-9: 96px; + --measure: 34em; /* ~65 characters per line at any locked size */ + --gutter-grid: var(--s-4); + + /* Radius scale. Consolidation only, no new values. */ + --r-sm: 6px; + --r-md: 8px; + --r-lg: 10px; + --r-pill: 99px; +} + +* { + box-sizing: border-box; +} + +.sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +html { + /* the font stack lived only on body, so resolved to the UA default and + anything escaping body inheritance rendered in Times */ + font-family: var(--sans); + scroll-behavior: smooth; +} + +body { + margin: 0; + color: var(--ink); + background: var(--bg); + font-family: var(--sans); + font-size: 15px; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +body.drawer-open { + overflow: hidden; +} + +img { + display: block; + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +select { + font: inherit; +} + +button { + cursor: pointer; +} + +button:disabled { + cursor: not-allowed; + opacity: 0.55; +} + +.skip-link { + position: fixed; + z-index: 1000; + top: 8px; + left: 8px; + padding: 12px 16px; + color: var(--on-dark); + background: var(--cobalt); + transform: translateY(-150%); +} + +.skip-link:focus { + transform: none; +} + +:focus-visible { + outline: 2px solid var(--cobalt); + outline-offset: 3px; +} + +/* Cobalt on a dark surface is not a focus ring, it is a rumour. The newsletter + panel is cobalt itself (1.00:1 against the ring) and --slate measures 2.80:1, + both under the 3:1 non-text minimum. White clears on every dark surface we + ship, so the ring inverts there rather than disappearing. */ +.newsletter :focus-visible, +.site-footer :focus-visible, +.testing-feature :focus-visible, +.concept-banner :focus-visible, +.toast :focus-visible, +.mobile-cart-bar:focus-visible { + outline-color: #ffffff; +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.concept-banner { + min-height: 32px; + display: grid; + place-items: center; + padding: 8px 20px; + color: var(--on-dark); + background: var(--slate); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; +} + +.site-header { + position: sticky; + z-index: 80; + top: 0; + background: rgba(255, 255, 255, 0.97); + border-bottom: 1px solid var(--line); + box-shadow: + 0 1px 0 var(--line), + 0 8px 24px rgba(22, 32, 58, 0.04); + backdrop-filter: blur(16px); +} + +.header-main { + min-height: 64px; + display: grid; + grid-template-columns: auto 1fr minmax(240px, 320px) auto; + gap: 26px; + align-items: center; +} + +.wordmark { + display: inline-flex; + gap: 12px; + align-items: center; + white-space: nowrap; +} + +.wordmark-mark { + display: grid; + width: 24px; + height: 24px; + place-items: center; + color: var(--gold); + border: 1.5px solid currentColor; + border-radius: 50%; + font: 500 13px/1 var(--mono); +} + +.wordmark-copy { + display: flex; + gap: 8px; + align-items: baseline; +} + +.wordmark-name { + font-size: 16px; + font-weight: 650; + letter-spacing: -0.025em; +} + +.wordmark-category { + color: var(--text-2); + font: 500 9px/1 var(--mono); + letter-spacing: 0.24em; +} + +.primary-nav { + display: flex; + gap: 24px; + align-items: center; +} + +.primary-nav a, +.category-nav a { + position: relative; + color: #343b45; + font-size: 13px; + font-weight: 500; + white-space: nowrap; +} + +.primary-nav a:hover, +.primary-nav a[aria-current="page"], +.category-nav a:hover, +.category-nav a[aria-current="page"] { + color: var(--cobalt); +} + +.primary-nav a::after { + position: absolute; + right: 0; + bottom: -22px; + left: 0; + height: 2px; + content: ""; + background: var(--cobalt); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.primary-nav a:hover::after, +.primary-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +/* Category menu bar: same underline wipe as the primary nav, ported from + Porcelain. The link fills the 40px row so the rule lands on the bar's own + bottom edge (bottom: 0) instead of hugging the text. Text position is + unchanged: the row already centred it, and the link centres it again. */ +.category-nav a { + min-height: 40px; + display: inline-flex; + align-items: center; +} + +.category-nav a::after { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2px; + content: ""; + background: var(--cobalt); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.category-nav a:hover::after, +.category-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +@media (prefers-reduced-motion: reduce) { + .primary-nav a::after, + .category-nav a::after { + transition: none; + } +} + +.search-wrap { + position: relative; +} + +.search-input { + width: 100%; + height: 40px; + padding: 0 40px 0 40px; + color: var(--ink); + background: var(--bg); + border: 1px solid var(--line); + border-radius: 6px; +} + +.search-input:focus { + background: var(--surface); + border-color: var(--cobalt); + outline: none; + box-shadow: 0 0 0 2px var(--cobalt-tint); +} + +.search-icon { + position: absolute; + top: 50%; + left: 14px; + width: 14px; + height: 14px; + border: 1.5px solid var(--text-2); + border-radius: 50%; + transform: translateY(-55%); +} + +.search-icon::after { + position: absolute; + right: -4px; + bottom: -3px; + width: 5px; + height: 1.5px; + content: ""; + background: var(--text-2); + transform: rotate(45deg); +} + +.search-shortcut { + position: absolute; + top: 50%; + right: 10px; + padding: 2px 4px; + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 400 9px/1.2 var(--mono); + transform: translateY(-50%); +} + +.search-results { + position: absolute; + z-index: 100; + top: calc(100% + 8px); + right: 0; + left: 0; + max-height: min(480px, 70vh); + overflow-y: auto; + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: 8px; + box-shadow: var(--shadow); +} + +.search-results[hidden] { + display: none; +} + +.search-result { + display: grid; + grid-template-columns: 52px 1fr auto; + gap: 12px; + align-items: center; + padding: 12px; + border-bottom: 1px solid var(--line); +} + +.search-result:last-child { + border-bottom: 0; +} + +.search-result:hover { + background: var(--bg); +} + +.search-result[aria-selected="true"] { + background: var(--cobalt-tint); +} + +.search-result img { + width: 52px; + height: 52px; + object-fit: cover; + background: var(--bg); + border-radius: 5px; +} + +.search-result strong { + display: block; + font-size: 13px; +} + +.search-result span { + color: var(--text-2); + font-size: 12px; +} + +.search-result-price { + font: 500 12px/1 var(--mono); +} + +.header-actions { + display: flex; + gap: 8px; +} + +.icon-button { + position: relative; + display: inline-grid; + width: 40px; + height: 40px; + place-items: center; + color: var(--ink); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 6px; +} + +.icon-button:hover { + color: var(--cobalt); + background: var(--cobalt-tint); + border-color: var(--cobalt); +} + +.cart-count { + position: absolute; + top: -6px; + right: -6px; + display: grid; + min-width: 18px; + height: 18px; + place-items: center; + padding: 0 4px; + color: var(--on-dark); + background: var(--cobalt); + border: 2px solid var(--surface); + border-radius: 99px; + font: 500 9px/1 var(--mono); +} + +.category-nav-wrap { + border-top: 1px solid var(--line); +} + +.category-nav { + min-height: 40px; + display: flex; + gap: 28px; + align-items: center; + overflow-x: auto; + scrollbar-width: none; +} + +.category-nav::-webkit-scrollbar { + display: none; +} + +.mobile-menu-button { + display: none; +} + +.button { + display: inline-flex; + min-height: 46px; + justify-content: center; + align-items: center; + gap: 8px; + padding: 0 20px; + border: 1px solid transparent; + border-radius: var(--r-sm); + font-size: 13px; + font-weight: 650; + transition: background 120ms ease-out, border-color 120ms ease-out, color 120ms ease-out, transform 120ms ease-out; +} + +.button:hover { + transform: translateY(-1px); +} + +.button-primary { + color: var(--on-dark); + background: var(--cobalt); +} + +.button-primary:hover { + background: var(--cobalt-deep); +} + +.button-secondary { + color: var(--ink); + background: var(--surface); + border-color: var(--line-strong); +} + +.button-secondary:hover { + color: var(--cobalt); + border-color: var(--cobalt); +} + +.button-small { + min-height: 38px; + padding-inline: 14px; + font-size: 12px; +} + +.eyebrow { + margin: 0 0 16px; + color: var(--cobalt); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.home-hero { + overflow: hidden; + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.hero-grid { + min-height: 438px; + display: grid; + grid-template-columns: minmax(0, 0.88fr) minmax(520px, 1.12fr); + gap: var(--s-7); + align-items: center; + padding-block: var(--s-6) var(--s-6); +} + +.hero-copy h1 { + max-width: 650px; + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.052em; + line-height: 0.99; +} + +.hero-copy h1 span { + color: var(--cobalt); +} + +.hero-copy > p:not(.eyebrow) { + max-width: var(--measure); + margin: var(--s-5) 0 0; + color: var(--text-2); + font-size: 16px; + line-height: 1.55; +} + +.hero-actions { + display: flex; + gap: var(--s-3); + margin-top: var(--s-6); +} + +.hero-visual { + position: relative; + min-height: 356px; + overflow: hidden; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.hero-visual > img { + width: 100%; + height: 100%; + min-height: 356px; + object-fit: cover; +} + +.hero-product-chip, +.hero-coa-card { + position: absolute; + background: rgba(255, 255, 255, 0.96); + border: 1px solid var(--line-strong); + box-shadow: 0 10px 30px rgba(22, 32, 58, 0.1); +} + +.hero-product-chip { + right: 16px; + bottom: 16px; + width: 218px; + padding: 16px; + border-radius: 8px; +} + +.hero-product-chip span, +.hero-coa-card span { + color: var(--text-2); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.hero-product-chip strong { + display: block; + margin-top: 4px; + font-size: 13px; +} + +.hero-product-chip p { + margin: 3px 0 0; + color: var(--text-2); + font-size: 12px; +} + +.hero-coa-card { + bottom: 16px; + left: 16px; + width: 200px; + padding: 12px; + border-radius: 8px; +} + +.hero-coa-row { + display: flex; + justify-content: space-between; + gap: 12px; + margin-top: 8px; + padding-top: 8px; + border-top: 1px solid var(--line); + font-size: 10px; +} + +.hero-coa-row strong { + color: var(--cobalt); + font-weight: 650; +} + +.trust-strip { + min-height: 54px; + display: grid; + grid-template-columns: repeat(4, 1fr); + align-items: stretch; + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.trust-item { + display: flex; + gap: 12px; + justify-content: center; + align-items: center; + padding: 12px 16px; + border-right: 1px solid var(--line); + text-align: center; +} + +.trust-item:last-child { + border-right: 0; +} + +.trust-dot { + width: 7px; + height: 7px; + flex: 0 0 auto; + background: var(--cobalt); + border-radius: 50%; +} + +.trust-item strong { + font-size: 12px; + font-weight: 650; +} + +.section { + padding-block: var(--s-8); +} + +.section-tight { + padding-block: var(--s-7); +} + +.section-surface { + background: var(--surface); + border-block: 1px solid var(--line); +} + +.section-head { + display: flex; + justify-content: space-between; + gap: var(--s-6); + align-items: end; + margin-bottom: var(--s-4); +} + +.section-head h2 { + margin: 0; + font-size: var(--t-section); + font-weight: 650; + letter-spacing: -0.04em; + line-height: 1.08; +} + +.section-head p { + max-width: 520px; + margin: 0; + color: var(--text-2); + font-size: 13px; +} + +.category-section-head { + margin-top: var(--s-7); +} + +.text-link { + display: inline-flex; + gap: 8px; + align-items: center; + color: var(--cobalt); + font-size: 13px; + font-weight: 650; +} + +.text-link:hover { + text-decoration: underline; +} + +.category-rail { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: var(--gutter-grid); + margin-bottom: var(--s-6); +} + +.category-tile { + min-height: 96px; + display: flex; + justify-content: space-between; + align-items: end; + gap: var(--s-5); + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + transition: border-color 120ms ease-out, transform 120ms ease-out; +} + +.category-tile:hover { + border-color: var(--cobalt); + transform: translateY(-2px); +} + +.category-tile strong { + display: block; + font-size: 13px; +} + +.category-tile span { + display: block; + margin-top: 4px; + color: var(--text-2); + font-size: 12px; +} + +.category-tile .category-arrow { + color: var(--cobalt); + font: 500 16px/1 var(--mono); +} + +.product-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: var(--gutter-grid); +} + +.product-card { + min-width: 0; + overflow: hidden; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + transition: border-color 120ms ease-out, box-shadow 120ms ease-out, transform 120ms ease-out; +} + +.product-card:hover { + border-color: var(--line-strong); + box-shadow: 0 8px 24px rgba(24, 35, 58, 0.08); + transform: translateY(-2px); +} + +.product-image-wrap { + position: relative; + display: block; + aspect-ratio: 4 / 4.4; + overflow: hidden; + background: var(--bg); + border-bottom: 1px solid var(--line); +} + +.product-image-wrap img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 180ms ease-out; +} + +.product-card:hover .product-image-wrap img { + transform: scale(1.025); +} + +.product-image-label { + position: absolute; + top: 51%; + left: 50%; + width: 40%; + color: var(--ink); + text-align: center; + transform: translate(-50%, -50%); + pointer-events: none; +} + +.product-image-label strong { + display: block; + overflow: hidden; + font-size: clamp(9px, 1.1vw, 12px); + font-weight: 650; + letter-spacing: -0.02em; + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-image-label span { + display: block; + margin-top: 2px; + color: var(--cobalt); + font: 500 9px/1 var(--mono); + letter-spacing: 0.06em; +} + +.product-card-body { + padding: var(--s-4); +} + +.product-category { + margin: 0 0 8px; + color: var(--cobalt); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.product-name { + margin: 0; + font-size: 16px; + font-weight: 650; + letter-spacing: -0.025em; + line-height: 1.25; +} + +.product-description { + min-height: 38px; + display: -webkit-box; + overflow: hidden; + margin: var(--s-2) 0 var(--s-3); + color: var(--text-2); + font-size: 12px; + line-height: 1.45; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.testing-micro { + display: flex; + justify-content: space-between; + gap: 8px; + align-items: center; + padding: 8px 0; + border-block: 1px solid var(--line); + color: var(--text-2); + font-size: 10px; +} + +.testing-micro span:first-child { + display: flex; + gap: 8px; + align-items: center; +} + +.testing-micro-dot { + width: 6px; + height: 6px; + background: var(--cobalt); + border-radius: 50%; +} + +.testing-micro a { + display: inline-flex; + min-height: 24px; + align-items: center; + color: var(--cobalt); + font-weight: 650; +} + +.product-buy-row { + display: grid; + grid-template-columns: auto 1fr; + gap: var(--s-3); + align-items: end; + margin-top: var(--s-3); +} + +.price-label { + display: block; + margin-bottom: 2px; + color: var(--text-3); + font: 500 9px/1.2 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.price { + font: 500 16px/1.2 var(--mono); + font-variant-numeric: tabular-nums; +} + +.add-button { + min-height: 38px; + width: 100%; + padding: 0 12px; + color: var(--on-dark); + background: var(--cobalt); + border: 0; + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; +} + +.add-button:hover { + background: var(--cobalt-deep); +} + +.testing-feature { + display: grid; + grid-template-columns: 0.8fr 1.2fr; + min-height: 380px; + overflow: hidden; + background: var(--slate); + border-radius: var(--r-lg); +} + +.testing-feature-copy { + display: flex; + flex-direction: column; + justify-content: center; + padding: clamp(var(--s-5), 5vw, var(--s-7)); + color: var(--on-dark); +} + +.testing-feature-copy .eyebrow { + color: var(--gold-bright); +} + +.testing-feature-copy h2 { + max-width: 520px; + margin: 0; + font-size: var(--t-section); + letter-spacing: -0.045em; + line-height: 1.02; +} + +.testing-feature-copy p { + max-width: var(--measure); + margin: var(--s-5) 0 var(--s-5); + color: var(--on-dark-2); +} + +.testing-document { + margin: var(--s-5); + padding: clamp(var(--s-5), 4vw, var(--s-6)); + background: var(--surface); + border-radius: 8px; +} + +.document-head { + display: flex; + justify-content: space-between; + gap: var(--s-4); + align-items: start; + padding-bottom: var(--s-4); + border-bottom: 1px solid var(--line-strong); +} + +.document-head strong { + display: block; + font-size: 16px; +} + +.document-head span { + color: var(--text-2); + font: 500 9px/1.4 var(--mono); + letter-spacing: 0.06em; +} + +.document-tag { + padding: 8px 8px; + color: var(--cobalt) !important; + background: var(--cobalt-tint); + border-radius: 4px; +} + +.document-row { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-4); + padding: var(--s-4) 0; + border-bottom: 1px solid var(--line); +} + +.document-row:last-child { + border-bottom: 0; +} + +.document-row strong { + font-size: 13px; +} + +.document-row span { + color: var(--text-2); + font: 400 10px/1.4 var(--mono); + text-align: right; +} + +.bundle-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--gutter-grid); +} + +.bundle-card { + overflow: hidden; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.bundle-image { + position: relative; + height: 210px; + overflow: hidden; + background: var(--bg); + border-bottom: 1px solid var(--line); +} + +.bundle-image img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.bundle-count { + position: absolute; + top: 12px; + left: 12px; + padding: 4px 8px; + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 500 9px/1 var(--mono); + text-transform: uppercase; +} + +.bundle-body { + padding: var(--s-5); +} + +.bundle-body h3 { + margin: 0; + font-size: 20px; + letter-spacing: -0.025em; +} + +.bundle-body > p { + min-height: 42px; + margin: var(--s-2) 0 var(--s-4); + color: var(--text-2); + font-size: 12px; +} + +.bundle-items { + margin: 0 0 var(--s-4); + padding: var(--s-3) 0; + list-style: none; + border-block: 1px solid var(--line); +} + +.bundle-items li { + display: flex; + justify-content: space-between; + gap: 12px; + padding: 3px 0; + color: var(--text-2); + font-size: 12px; +} + +.bundle-footer { + display: grid; + grid-template-columns: auto 1fr; + gap: var(--s-4); + align-items: end; +} + +.education-grid, +.value-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--gutter-grid); +} + +.education-card, +.value-card { + min-height: 210px; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.education-card h3, +.value-card h3 { + margin: 0; + font-size: 20px; + letter-spacing: -0.025em; +} + +.education-card p, +.value-card p { + margin: var(--s-2) 0 var(--s-5); + color: var(--text-2); + font-size: 13px; +} + +.newsletter { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-6); + align-items: center; + padding: var(--s-6); + color: var(--on-dark); + background: var(--cobalt); + border-radius: var(--r-lg); +} + +.newsletter h2 { + margin: 0; + font-size: var(--t-sub); + letter-spacing: -0.035em; +} + +.newsletter p { + max-width: var(--measure); + margin: var(--s-4) 0 0; + color: #f0d8cd; +} + +.newsletter-form { + display: flex; + gap: var(--s-2); +} + +.newsletter-form[hidden] { + display: none; +} + +.newsletter-form input { + width: min(340px, 42vw); + height: 44px; + padding: 0 16px; + color: var(--ink); + background: var(--surface); + border: 0; + border-radius: var(--r-sm); +} + +.newsletter-form button { + min-width: 120px; + color: var(--on-dark); + background: var(--slate); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; + transition: color 120ms ease-out, background 120ms ease-out; +} + +/* This button sits on the cobalt panel, so there is no darker step available and + no lighter slate in the palette. It inverts instead: white plate, cobalt + label, 6.38:1. Same two tokens, read the other way round. */ +.newsletter-form button:hover { + color: var(--cobalt); + background: var(--on-dark); +} + +.newsletter-success { + color: var(--on-dark); + font-size: 13px; +} + +.page-hero { + padding: var(--s-8) 0 var(--s-7); + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.page-hero h1 { + max-width: 800px; + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.055em; + line-height: 1; +} + +/* The H1 above runs line-height 1, so its descender eats part of this gap. + 24px measured is the first value that reads as a deliberate step. */ +.page-hero p:not(.eyebrow) { + max-width: var(--measure); + margin: var(--s-5) 0 0; + color: var(--text-2); + font-size: 16px; +} + +.collection-layout { + display: grid; + grid-template-columns: 232px 1fr; + gap: var(--s-6); + align-items: start; +} + +.filter-panel { + position: sticky; + top: 126px; + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.filter-panel h2 { + margin: 0 0 var(--s-3); + font-size: 13px; +} + +.filter-button { + width: 100%; + display: flex; + justify-content: space-between; + gap: 12px; + padding: 8px 0; + color: var(--text-2); + background: none; + border: 0; + border-bottom: 1px solid var(--line); + font-size: 12px; + text-align: left; +} + +.filter-button:last-child { + border-bottom: 0; +} + +.filter-button:hover, +.filter-button[aria-pressed="true"] { + color: var(--cobalt); +} + +.filter-button span { + font: 400 10px/1 var(--mono); +} + +.collection-main { + min-width: 0; +} + +.collection-toolbar { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-4); + align-items: center; + margin-bottom: var(--s-4); + padding: var(--s-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.collection-search { + height: 38px; + padding: 0 12px; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.collection-sort { + height: 38px; + padding: 0 32px 0 12px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.result-summary { + margin: 0 0 var(--s-4); + color: var(--text-2); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.03em; +} + +.empty-state { + grid-column: 1 / -1; + padding: var(--s-8) var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + text-align: center; +} + +.empty-state h2 { + margin: 0; +} + +.empty-state p { + margin: var(--s-2) 0 var(--s-5); + color: var(--text-2); +} + +.product-page { + background: var(--surface); +} + +.breadcrumb { + display: flex; + gap: var(--s-2); + align-items: center; + padding-top: var(--s-5); + color: var(--text-2); + font-size: 12px; +} + +.breadcrumb a:hover { + color: var(--cobalt); +} + +.pdp-grid { + display: grid; + grid-template-columns: minmax(0, 1.08fr) minmax(410px, 0.92fr); + gap: var(--s-7); + padding: var(--s-6) 0 var(--s-8); +} + +.pdp-gallery { + position: sticky; + top: 132px; + align-self: start; +} + +.pdp-main-image { + position: relative; + aspect-ratio: 1 / 0.92; + overflow: hidden; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.pdp-main-image img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 160ms ease-out; +} + +.pdp-main-image .product-image-label { + width: 31%; + top: 51%; +} + +.pdp-main-image .product-image-label strong { + font-size: clamp(10px, 1.2vw, 16px); +} + +.pdp-thumbnails { + display: grid; + grid-template-columns: repeat(3, 82px); + gap: var(--s-3); + margin-top: var(--s-3); +} + +.pdp-thumb { + aspect-ratio: 1; + overflow: hidden; + padding: 0; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); + transition: border-color 140ms ease-out; +} + +/* Hover stops at --line-strong on purpose. Cobalt is the selected state on this + control, so borrowing it for hover would make an unselected thumbnail look + chosen for as long as the pointer sits on it. */ +.pdp-thumb:hover { + border-color: var(--line-strong); +} + +.pdp-thumb[aria-current="true"], +.pdp-thumb[aria-current="true"]:hover { + border-color: var(--cobalt); +} + +.pdp-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.pdp-buybox { + padding-top: var(--s-2); +} + +.pdp-buybox h1 { + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.055em; + line-height: 1; +} + +.pdp-code { + display: block; + margin: var(--s-3) 0 0; + color: var(--text-2); + font: 400 10px/1.4 var(--mono); +} + +.pdp-testing-link { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; + margin: var(--s-5) 0; + padding: var(--s-3); + color: var(--cobalt); + background: var(--cobalt-tint); + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; + transition: color 140ms ease-out, box-shadow 140ms ease-out; +} + +/* An inset ring rather than a darker tint: the panel already sits on cobalt-tint + and there is no darker tint token, so the hover reads as an outline gaining + definition instead of inventing a colour outside the palette. */ +.pdp-testing-link:hover { + color: var(--cobalt-deep); + box-shadow: inset 0 0 0 1px var(--cobalt); +} + +.pdp-description { + margin: 0; + color: var(--text-2); + font-size: 15px; +} + +.pdp-price { + display: flex; + gap: var(--s-3); + align-items: baseline; + margin: var(--s-5) 0; +} + +.pdp-price strong { + font: 500 26px/1 var(--mono); +} + +.selection-label { + display: flex; + justify-content: space-between; + gap: var(--s-3); + margin: 0 0 var(--s-3); + font-size: 12px; + font-weight: 650; +} + +.buy-controls { + display: grid; + grid-template-columns: 112px 1fr; + gap: var(--s-3); +} + +.quantity-control { + display: grid; + grid-template-columns: 34px 1fr 34px; + height: 48px; + /* overflow:hidden clipped the focus ring on the two stepper buttons, so a + keyboard user could not see which one they were on. overflow:clip with a + clip-margin keeps the corner rounding and lets the 2px ring + 3px offset + escape. */ + overflow: clip; + overflow-clip-margin: 8px; + border: 1px solid var(--line-strong); + border-radius: var(--r-sm); +} + +.quantity-control button { + padding: 0; + background: var(--surface); + border: 0; + transition: color 120ms ease-out, background 120ms ease-out; +} + +.quantity-control button:hover:not(:disabled) { + color: var(--cobalt); + background: var(--surface-soft); +} + +.quantity-control input { + min-width: 0; + padding: 0; + text-align: center; + border: 0; + appearance: textfield; +} + +/* appearance:textfield no longer removes the native spin-button box in + Chromium, it only hides the arrows, so the field still reserves that box and + the centred value is pushed off its own track. At 1440 the digit sat 7.2px + left of the field centre; at 390 the field is 26px wide and the digit was + pushed out of the visible box entirely, so the stepper read as a bare "- +" + with no quantity between them. Removing the reserved box lets text-align + centre the value again. */ +.quantity-control input::-webkit-outer-spin-button, +.quantity-control input::-webkit-inner-spin-button, +.mini-quantity input::-webkit-outer-spin-button, +.mini-quantity input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; +} + +.pdp-add { + height: 48px; + color: var(--on-dark); + background: var(--cobalt); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; +} + +.pdp-add:hover { + background: var(--cobalt-deep); +} + +/* 2x2, not a 4-up row. The fourth tile carries availability, whose string is + variable length ("In stock" / "Only 4 left" / "Not offered"), and a single + row of four wraps the moment the longest one appears. */ +.buybox-cues { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1px; + margin-top: var(--s-4); + background: var(--line); + border: 1px solid var(--line); + border-radius: 6px; +} + +.buybox-cue { + padding: var(--s-3) var(--s-2); + background: var(--bg); + text-align: center; +} + +.buybox-cue strong { + display: block; + font-size: 10px; +} + +.buybox-cue span { + color: var(--text-2); + font-size: 9px; +} + +.pdp-note { + margin: var(--s-4) 0 0; + color: var(--text-2); + font-size: 10px; +} + +.detail-section { + padding-block: var(--s-8); + border-top: 1px solid var(--line); +} + +.detail-grid { + display: grid; + grid-template-columns: 0.72fr 1.28fr; + gap: var(--s-7); +} + +.detail-grid h2 { + margin: 0; + font-size: var(--t-sub); + letter-spacing: -0.04em; +} + +.testing-table, +.spec-table { + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.testing-row, +.spec-row { + display: grid; + grid-template-columns: 1fr 0.8fr auto; + gap: var(--s-4); + align-items: center; + padding: var(--s-4); + border-bottom: 1px solid var(--line); +} + +.spec-row { + grid-template-columns: 0.4fr 1.6fr; +} + +.testing-row:last-child, +.spec-row:last-child { + border-bottom: 0; +} + +/* The catalog-status table is ten near-identical rows of small type. A tint that + is one shade off the page background is not a hit target cue. Cobalt tint plus + an inset leading edge makes the row a shopper is aiming at unambiguous. */ +.testing-table a { + transition: background 120ms ease-out, box-shadow 120ms ease-out; +} + +.testing-table a:hover { + background: var(--cobalt-tint); + box-shadow: inset 3px 0 0 var(--cobalt); +} + +.testing-row strong, +.spec-row strong { + font-size: 12px; +} + +.testing-row span, +.spec-row span { + color: var(--text-2); + font-size: 12px; +} + +.testing-row .status-pill { + padding: 4px 8px; + color: var(--cobalt); + background: var(--cobalt-tint); + border-radius: 4px; + font: 500 9px/1 var(--mono); + white-space: nowrap; +} + +.accordion { + border-top: 1px solid var(--line); +} + +/* The item is the animated container: an auto row for the trigger and a 1fr row + for the panel that collapses to 0fr. This is the only way to transition to and + from an unknown content height without measuring in script. */ +.accordion-item { + display: grid; + grid-template-rows: auto 1fr; + border-bottom: 1px solid var(--line); + transition: grid-template-rows 200ms var(--ease); +} + +.accordion-item:has(> .accordion-panel[hidden]) { + grid-template-rows: auto 0fr; +} + +.accordion-trigger { + width: 100%; + display: flex; + justify-content: space-between; + gap: var(--s-5); + padding: var(--s-5) 0; + background: transparent; + border: 0; + font-weight: 650; + text-align: left; + transition: color 120ms ease-out; +} + +.accordion-trigger:hover { + color: var(--cobalt); +} + +/* Drawn rather than typeset. A "+" glyph swapped for a "−" glyph cannot be + transitioned, so the icon is two gradient bars and the vertical one collapses + to zero height on open. Same plus-to-minus reading, now animated. */ +.accordion-trigger::after { + content: ""; + flex: 0 0 13px; + align-self: center; + height: 13px; + background-image: + linear-gradient(var(--cobalt), var(--cobalt)), + linear-gradient(var(--cobalt), var(--cobalt)); + background-repeat: no-repeat; + background-position: center; + background-size: 13px 1.5px, 1.5px 13px; + transition: background-size 200ms var(--ease); +} + +.accordion-trigger[aria-expanded="true"]::after { + background-size: 13px 1.5px, 1.5px 0; +} + +/* The panel keeps its `hidden` attribute, so the semantics do not move. The + attribute's UA display:none is overridden so the row can animate, and + visibility:hidden stands in for it: same removal from the accessibility tree + and from the tab order. The flip is delayed on close so the text is still + painted while the row collapses, and immediate on open. */ +.accordion-panel { + display: block; + min-height: 0; + overflow: hidden; + padding: 0 0 var(--s-5); + color: var(--text-2); + font-size: 13px; + transition: visibility 0s, padding 200ms var(--ease); +} + +/* A collapsed panel is a 0fr track, but min-height:0 does not zero its own 24px + bottom padding, so the track floored at 24px and every CLOSED row carried + 24px of invisible space (95.5px row for a 71.5px trigger). Nine closed rows on + the FAQ page was 216px of nothing; the page measures 2293px before this and + 1989px after. The padding now collapses with the row, on the same duration as + the row transition so the open and close animations are unchanged. */ +.accordion-item:has(> .accordion-panel[hidden]) > .accordion-panel { + padding-block-end: 0; +} + +.accordion-panel[hidden] { + visibility: hidden; + transition: visibility 0s 200ms; +} + +.testing-lookup { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-2); + max-width: var(--measure); + margin-top: var(--s-5); +} + +.testing-lookup input { + height: 46px; + padding: 0 16px; + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: 6px; +} + +.lookup-results { + margin-top: var(--s-5); +} + +.lookup-card { + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.lookup-card h3 { + margin: 0; +} + +.lookup-card p { + margin: 8px 0 0; + color: var(--text-2); +} + +/* Width inherits --shell so the article edge lands on the same page gutter as + every other section. The old hardcoded 48px produced two different left + edges at 390, where --shell is 12px. */ +/* The document column IS the measure. The column was 780px while every paragraph + inside it was separately capped at 34em, so on policies and eligibility the + prose ended 270px short of the headings and callouts sharing the same column: + four different right edges on one page. One width now governs the document. */ +.article-shell { + width: min(var(--measure), var(--shell)); + margin-inline: auto; + padding-block: var(--s-8) var(--s-9); +} + +/* And the hero band above a document takes that same column, so the page title, + the lede, the body and the callouts all start on one left edge. Measured + before: hero at x=53, body at x=323, footer back at x=53. */ +.page-hero:has(+ .article-shell) > .shell { + width: min(var(--measure), var(--shell)); +} + +.page-hero:has(+ .article-shell) h1, +.page-hero:has(+ .article-shell) p:not(.eyebrow) { + max-width: none; +} + +.article-shell h1 { + margin: 0; + font-size: var(--t-display); + letter-spacing: -0.055em; + line-height: 0.98; +} + +.article-lede { + margin: var(--s-5) 0 var(--s-7); + color: var(--text-2); + font-size: 20px; +} + +.article-shell h2 { + margin: var(--s-7) 0 var(--s-4); + font-size: var(--t-sub); + letter-spacing: -0.035em; +} + +.article-shell p, +.article-shell li { + color: #343b45; + font-size: 15px; + line-height: 1.7; +} + +/* 40px of UA list indent pushed every bullet's right edge 40px past the + paragraph above it. 24px is on scale and still hangs the marker clear. */ +.article-shell ul, +.article-shell ol { + padding-inline-start: var(--s-5); +} + +/* A lede reads better slightly narrower than the body it introduces, so it keeps + its own measure. The selector is raised only to outrank `.article-shell p`, + which was silently overriding all four of these declarations: the intended + 18px lede has been rendering at 15px body size everywhere it appears. Nothing + here is a new value, it is the existing intent finally winning. */ +.article-shell p.article-lede { + max-width: 32em; + color: var(--text-2); + font-size: 20px; + line-height: 1.6; +} + +.article-callout { + margin: var(--s-6) 0; + padding: var(--s-5); + background: var(--cobalt-tint); + border-left: 3px solid var(--cobalt); +} + +.article-shell .button + .button { + margin-left: var(--s-2); +} + +.site-footer { + padding: var(--s-7) 0 var(--s-6); + color: var(--on-dark); + background: var(--slate); +} + +.footer-grid { + display: grid; + grid-template-columns: 1.4fr repeat(3, 1fr); + gap: var(--s-7); +} + +.footer-brand p { + max-width: 340px; + margin: var(--s-4) 0 0; + color: var(--on-dark-2); + font-size: 12px; +} + +.footer-column h2 { + margin: 0 0 var(--s-3); + color: var(--on-dark-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.footer-column a { + display: block; + margin: var(--s-2) 0; + color: var(--on-dark-2); + font-size: 12px; +} + +.footer-column a:hover { + color: var(--on-dark); +} + +.footer-bottom { + display: flex; + justify-content: space-between; + gap: var(--s-5); + margin-top: var(--s-7); + padding-top: var(--s-5); + color: var(--on-dark-3); + border-top: 1px solid rgba(243, 234, 218, 0.18); + font: 400 9px/1.5 var(--mono); +} + +.drawer-backdrop { + position: fixed; + z-index: 200; + inset: 0; + background: rgba(26, 18, 12, 0.44); + opacity: 0; + transition: opacity 180ms ease-out; + pointer-events: none; +} + +.drawer-backdrop[data-open="true"] { + opacity: 1; + pointer-events: auto; +} + +.cart-drawer, +.mobile-drawer { + position: fixed; + z-index: 210; + top: 0; + right: 0; + bottom: 0; + width: min(440px, 94vw); + display: grid; + grid-template-rows: auto 1fr auto; + background: var(--surface); + box-shadow: var(--shadow); + transform: translateX(102%); + transition: transform 220ms cubic-bezier(0.2, 0, 0, 1); +} + +.cart-drawer[data-open="true"], +.mobile-drawer[data-open="true"] { + transform: none; +} + +.cart-drawer:not([data-open="true"]), +.mobile-drawer:not([data-open="true"]) { + visibility: hidden; + transition: transform 220ms cubic-bezier(0.2, 0, 0, 1), visibility 0s 220ms; +} + +.drawer-head { + display: flex; + justify-content: space-between; + gap: var(--s-5); + align-items: center; + min-height: 70px; + padding: 0 var(--s-5); + border-bottom: 1px solid var(--line); +} + +.drawer-head h2 { + margin: 0; + font-size: 20px; +} + +.drawer-close { + width: 36px; + height: 36px; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); + transition: color 120ms ease-out, background 120ms ease-out, border-color 120ms ease-out; +} + +/* Matches .icon-button, so the two square controls on the page answer to the + pointer the same way. */ +.drawer-close:hover { + color: var(--cobalt); + background: var(--cobalt-tint); + border-color: var(--cobalt); +} + +.cart-items { + overflow-y: auto; + padding: var(--s-4) var(--s-5); +} + +.cart-empty { + display: grid; + min-height: 100%; + place-items: center; + color: var(--text-2); + text-align: center; +} + +.cart-empty strong { + display: block; + color: var(--ink); + font-size: 20px; +} + +.cart-item { + display: grid; + grid-template-columns: 72px 1fr; + gap: var(--s-3); + padding: var(--s-4) 0; + border-bottom: 1px solid var(--line); +} + +.cart-item img { + width: 72px; + height: 82px; + object-fit: cover; + background: var(--bg); + border-radius: 5px; +} + +.cart-item-top { + display: flex; + justify-content: space-between; + gap: var(--s-3); +} + +.cart-item h3 { + margin: 0; + font-size: 13px; +} + +.cart-item-price { + font: 500 12px/1.3 var(--mono); + white-space: nowrap; +} + +.cart-item-meta { + margin: 3px 0 var(--s-3); + color: var(--text-2); + font-size: 10px; +} + +.cart-item-controls { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; +} + +.mini-quantity { + display: inline-grid; + grid-template-columns: 28px 28px 28px; + height: 29px; + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.mini-quantity button { + padding: 0; + background: var(--surface); + border: 0; +} + +.mini-quantity span { + display: grid; + place-items: center; + font-size: 10px; +} + +.remove-item { + padding: 0; + color: var(--text-2); + background: none; + border: 0; + font-size: 10px; + text-decoration: underline; + transition: color 120ms ease-out; +} + +/* The one destructive control in the cart. --danger on hover only: it stays + quiet in its resting state so it never competes with the price, and it names + itself the moment the pointer commits. */ +.remove-item:hover { + color: var(--danger); +} + +.cart-footer { + padding: var(--s-5); + background: var(--surface); + border-top: 1px solid var(--line); +} + +.cart-subtotal { + display: flex; + justify-content: space-between; + gap: var(--s-5); + margin-bottom: var(--s-4); +} + +.cart-subtotal strong:last-child { + font-family: var(--mono); +} + +.cart-terminus { + margin: 0 0 var(--s-3); + padding: var(--s-3); + color: var(--text-2); + background: var(--bg); + border-radius: 5px; + font-size: 12px; +} + +.cart-footer .button { + width: 100%; +} + +.toast { + position: fixed; + z-index: 300; + bottom: var(--s-5); + left: var(--s-5); + max-width: min(380px, calc(100vw - 48px)); + padding: var(--s-3) var(--s-4); + color: var(--on-dark); + background: var(--slate); + border-radius: 6px; + box-shadow: var(--shadow); + font-size: 12px; + opacity: 0; + transform: translateY(12px); + transition: opacity 140ms ease-out, transform 140ms ease-out; + pointer-events: none; +} + +.toast[data-open="true"] { + opacity: 1; + transform: none; +} + +.mobile-cart-bar { + position: fixed; + z-index: 70; + right: 12px; + bottom: 12px; + left: 12px; + display: flex; + min-height: 50px; + justify-content: space-between; + gap: 16px; + align-items: center; + padding: 0 16px; + color: var(--on-dark); + background: var(--slate); + border: 0; + border-radius: var(--r-sm); + box-shadow: var(--shadow); + /* Was display:none/display:flex, which made a persistent bar appear out of + nowhere mid-scroll. It now stays laid out and slides, so the arrival is + motivated. visibility carries what display used to: while hidden the bar is + out of the tab order and the accessibility tree, and the flip is delayed on + exit so the slide is still painted. */ + opacity: 0; + visibility: hidden; + transform: translateY(calc(100% + 12px)); + pointer-events: none; + transition: opacity 180ms ease-out, transform 260ms var(--ease), visibility 0s 260ms; +} + +.mobile-cart-bar[data-visible="true"] { + opacity: 1; + visibility: visible; + transform: none; + pointer-events: auto; + transition: opacity 180ms ease-out, transform 260ms var(--ease), visibility 0s; +} + +.mobile-cart-bar span { + font-size: 12px; +} + +.mobile-cart-bar strong { + font: 500 12px/1 var(--mono); +} + +.mobile-drawer { + width: min(390px, 94vw); + display: block; + padding: var(--s-5); +} + +.mobile-drawer .drawer-head { + padding: 0; +} + +.mobile-nav { + display: grid; + gap: var(--s-1); + padding-top: var(--s-5); +} + +.mobile-nav a { + padding: var(--s-3) 0; + border-bottom: 1px solid var(--line); + font-size: 16px; + font-weight: 650; +} + +@media (max-width: 1180px) { + .header-main { + grid-template-columns: auto 1fr minmax(220px, 280px) auto; + gap: 16px; + } + + .primary-nav { + gap: 16px; + } + + .primary-nav a { + font-size: 12px; + } + + .hero-grid { + grid-template-columns: 0.9fr 1.1fr; + } + + .product-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (max-width: 960px) { + :root { + --shell: min(100% - 32px, 820px); + } + + .header-main { + grid-template-columns: auto 1fr auto; + padding-top: 12px; + } + + .primary-nav { + display: none; + } + + .mobile-menu-button { + display: inline-grid; + } + + .header-main > .search-wrap { + grid-column: 1 / -1; + grid-row: 2; + margin-bottom: 12px; + } + + .search-shortcut { + display: none; + } + + .category-nav-wrap { + display: none; + } + + .hero-grid { + grid-template-columns: 1fr; + padding-block: var(--s-6) var(--s-5); + } + + .hero-copy h1 { + max-width: 760px; + } + + .hero-visual { + min-height: 330px; + } + + .category-rail { + grid-template-columns: repeat(2, 1fr); + } + + .testing-feature { + grid-template-columns: 1fr; + } + + .bundle-grid, + .education-grid, + .value-grid { + grid-template-columns: repeat(2, 1fr); + } + + .newsletter { + grid-template-columns: 1fr; + } + + .collection-layout { + grid-template-columns: 1fr; + } + + /* The category filters become a horizontal scroller here, and the last pill + used to end flush at the viewport edge, which reads as the end of the list. + A fade on the right edge is the only cue that says the row continues. The + mask is on the border box, so it stays pinned to the edge as the row + scrolls rather than travelling with the content. */ + .filter-panel { + position: static; + display: flex; + gap: var(--s-2); + overflow-x: auto; + padding: 0; + background: transparent; + border: 0; + scrollbar-width: none; + -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent); + mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent); + } + + .filter-panel::-webkit-scrollbar { + display: none; + } + + .filter-panel h2 { + display: none; + } + + .filter-button { + width: auto; + flex: 0 0 auto; + gap: 8px; + padding: 8px 12px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 99px; + } + + .filter-button[aria-pressed="true"] { + background: var(--cobalt-tint); + border-color: var(--cobalt); + } + + .pdp-grid { + grid-template-columns: 1fr; + } + + .pdp-gallery { + position: static; + } + + .detail-grid { + grid-template-columns: 1fr; + gap: var(--s-6); + } + + .footer-grid { + grid-template-columns: 1.5fr repeat(2, 1fr); + } + + .footer-column:last-child { + grid-column: 2; + } +} + +@media (max-width: 640px) { + :root { + --shell: calc(100vw - 24px); + } + + .concept-banner { + min-height: 42px; + padding-inline: 12px; + font-size: 9px; + letter-spacing: 0.06em; + } + + .header-main { + min-height: 58px; + gap: 12px; + padding-top: 8px; + } + + .wordmark-copy { + gap: 4px; + } + + .wordmark-name { + font-size: 15px; + } + + .wordmark-category { + font-size: 9px; + letter-spacing: 0.16em; + } + + /* 36x36 with a 5px gap is under the 44px touch minimum on the two controls a + phone user reaches for most, and they sit close enough to mis-hit. Both go + to 44 with a full 8px between them. */ + .header-actions { + gap: var(--s-2); + } + + .icon-button { + width: 44px; + height: 44px; + } + + .header-main > .search-wrap { + margin-bottom: 8px; + } + + /* Any control under 16px triggers the iOS focus zoom, which then leaves the + page scrolled sideways. 16px is the platform floor, not a scale change: + desktop keeps the 15px body size. */ + .search-input { + height: 38px; + font-size: 16px; + } + + .home-hero { + overflow: visible; + } + + .hero-grid { + gap: var(--s-5); + padding-top: var(--s-6); + } + + .hero-copy h1 { + line-height: 1.02; + } + + .hero-copy > p:not(.eyebrow) { + font-size: 13px; + } + + .hero-actions { + display: grid; + } + + .hero-actions .button { + width: 100%; + } + + .hero-visual, + .hero-visual > img { + min-height: 270px; + } + + .hero-product-chip { + right: 10px; + bottom: 10px; + width: 174px; + padding: 12px; + } + + .hero-coa-card { + display: none; + } + + .trust-strip { + grid-template-columns: repeat(2, 1fr); + } + + .trust-item { + min-height: 48px; + justify-content: flex-start; + border-bottom: 1px solid var(--line); + text-align: left; + } + + .trust-item:nth-child(2) { + border-right: 0; + } + + .trust-item:nth-child(n + 3) { + border-bottom: 0; + } + + .section, + .detail-section { + padding-block: var(--s-7); + } + + .section-tight { + padding-block: var(--s-6); + } + + .section-head { + display: block; + margin-bottom: var(--s-4); + } + + .category-section-head { + margin-top: var(--s-6); + } + + .section-head h2 { + } + + .section-head p, + .section-head .text-link { + margin-top: var(--s-3); + } + + .category-rail { + display: flex; + gap: var(--gutter-grid); + overflow-x: auto; + margin-right: -12px; + padding-right: 12px; + scroll-snap-type: x mandatory; + } + + .category-tile { + min-width: 220px; + scroll-snap-align: start; + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--gutter-grid); + } + + .product-image-wrap { + aspect-ratio: 4 / 4.6; + } + + .product-card-body { + padding: var(--s-3); + } + + .product-category { + min-height: 22px; + font-size: 9px; + } + + .product-name { + font-size: 13px; + } + + .product-description { + min-height: 32px; + font-size: 12px; + -webkit-line-clamp: 2; + } + + .testing-micro { + display: block; + font-size: 10px; + } + + .testing-micro a { + margin-top: 3px; + } + + .product-buy-row { + grid-template-columns: 1fr; + gap: var(--s-2); + } + + .price { + font-size: 13px; + } + + /* The primary conversion control on a phone. 40px was four short of the + touch minimum, on the one button the whole grid exists to serve. */ + .add-button { + min-height: 44px; + font-size: 12px; + } + + .testing-feature { + border-radius: var(--r-lg); + } + + .testing-feature-copy, + .testing-document { + padding: var(--s-5); + } + + .testing-document { + margin: 0 var(--s-3) var(--s-3); + } + + .testing-feature-copy h2 { + } + + .document-row { + grid-template-columns: 1fr; + gap: 4px; + } + + .document-row span { + text-align: left; + } + + .bundle-grid, + .education-grid, + .value-grid { + grid-template-columns: 1fr; + } + + .newsletter { + padding: var(--s-5); + } + + .newsletter-form { + display: grid; + } + + .newsletter-form input { + width: 100%; + } + + .newsletter-form button { + min-height: 44px; + } + + .article-shell .button { + width: 100%; + } + + .article-shell .button + .button { + margin-top: var(--s-2); + margin-left: 0; + } + + /* The article gutter and the section gutter are the same 12px here, so the + vertical rhythm steps down with them. */ + .article-shell { + padding-block: var(--s-7) var(--s-8); + } + + .page-hero { + padding: var(--s-7) 0 var(--s-6); + } + + .page-hero h1 { + } + + .collection-toolbar { + grid-template-columns: 1fr; + } + + .pdp-grid { + gap: var(--s-5); + padding-top: var(--s-5); + } + + .pdp-main-image { + aspect-ratio: 1; + } + + .pdp-buybox h1 { + } + + .buy-controls { + grid-template-columns: 96px 1fr; + } + + /* Stays 2x2. A three-column override here would orphan the fourth tile onto a + row of its own, which is the bug this grid was changed to fix. */ + .buybox-cues { + grid-template-columns: repeat(2, 1fr); + } + + .buybox-cue { + padding: 12px 8px; + } + + .buybox-cue strong { + font-size: 12px; + } + + .buybox-cue span { + font-size: 10px; + } + + .cart-item-meta, + .remove-item, + .pdp-note, + .result-summary { + font-size: 12px; + } + + .testing-row { + grid-template-columns: 1fr auto; + gap: var(--s-2) var(--s-4); + } + + /* Deleting this column deleted the page's entire argument on a phone: the + framework table lost all four questions and the catalog list lost every lot + number and report date, leaving only the badge. It stacks under the label + instead of disappearing. */ + .testing-row strong { + grid-column: 1; + grid-row: 1; + } + + .testing-row .status-pill { + grid-column: 2; + grid-row: 1; + } + + .testing-row span:nth-child(2) { + grid-column: 1 / -1; + grid-row: 2; + } + + .testing-lookup { + grid-template-columns: 1fr; + } + + .footer-grid { + grid-template-columns: repeat(2, 1fr); + gap: var(--s-6) var(--s-4); + } + + .footer-brand { + grid-column: 1 / -1; + } + + .footer-column:last-child { + grid-column: auto; + } + + .footer-bottom { + display: block; + } + + .footer-bottom span { + display: block; + margin-top: 8px; + } + + .toast { + right: 12px; + bottom: 76px; + left: 12px; + max-width: none; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } + + .primary-nav a::after { + transition: none; + } +} + +/* ============================================================================ + Commerce: cart page, checkout flow, order confirmation. + Built on the existing tokens and .shell/.section rhythm so these read as + part of the site rather than a bolted-on flow. Nothing here changes the + type scale or the grid conventions used elsewhere. + ========================================================================= */ + +.page-hero.is-compact { padding-block: var(--s-6) var(--s-5); } + +/* ---- shared: order summary panel ---- */ +.order-summary { + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} +.order-summary h2 { margin: 0 0 var(--s-4); font-size: 15px; font-weight: 650; letter-spacing: -0.01em; } +.summary-lines { display: grid; gap: var(--s-4); padding-bottom: var(--s-4); border-bottom: 1px solid var(--line); } +/* The line price was vertically centred against a three-line meta block, and the + 211px meta column forced `reported 2026-06-24` to break across two lines mid + date. The price now sits on the product-name row where it can be compared, + and the meta spans the full width beneath both, which is what buys the lot + line the width it needs to stay on one line. */ +.summary-line { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; column-gap: var(--s-3); row-gap: var(--s-1); align-items: start; } +.summary-line > div { display: contents; } +.summary-line > img { grid-row: 1 / span 3; align-self: start; } +.summary-line > div > strong { grid-column: 2; } +.summary-line > div > span { grid-column: 2 / -1; } +.summary-line img { width: 48px; height: 54px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--r-sm); } +.summary-line strong { display: block; font-size: 13px; font-weight: 650; } +.summary-line span { color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.summary-line span.summary-line-price { grid-column: 3; grid-row: 1; color: var(--ink); font: 650 13px/1.4 var(--sans); white-space: nowrap; } +.summary-rows { display: grid; gap: var(--s-2); padding: var(--s-4) 0; border-bottom: 1px solid var(--line); } +.summary-row { display: flex; justify-content: space-between; gap: var(--s-4); font-size: 13px; color: var(--text-2); } +.summary-row.is-credit span:last-child { color: var(--success); } +.summary-total { display: flex; justify-content: space-between; padding-top: var(--s-4); font-size: 16px; font-weight: 650; } +.summary-note { margin: var(--s-3) 0 0; color: var(--text-3); font-size: 12px; line-height: 1.5; } + +/* ---- cart page ---- */ +.cart-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.ship-progress { + margin: 0 0 var(--s-5); padding: var(--s-3) var(--s-4); + background: var(--cobalt-tint); border-radius: 8px; + font-size: 13px; color: var(--ink); +} +.ship-progress.is-met { background: var(--success-tint); } +.status-dot { display: inline-block; width: 6px; height: 6px; margin-right: 8px; background: var(--success); border-radius: 50%; vertical-align: middle; } +.cart-rows { display: grid; gap: 0; border-top: 1px solid var(--line); } +.cart-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--s-5); padding: var(--s-5) 0; border-bottom: 1px solid var(--line); } +/* Explicit box + cover. The intrinsic art is 4:3 and the slot is 8:9, so with + no dimensions the vials rendered stretched in both the cart and the checkout + summary. Scoped rather than a global img { height: auto }, which would move + every cart row height on the site. */ +.cart-row-image img { width: 120px; height: 135px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--r-md); } +.cart-row-head { display: flex; justify-content: space-between; gap: var(--s-4); align-items: flex-start; } +.cart-row-head h3 { margin: 0 0 3px; font-size: 15px; font-weight: 650; letter-spacing: -0.01em; } +.cart-row-meta { margin: 0; color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.cart-row-price { font-size: 15px; font-weight: 650; white-space: nowrap; } +.cart-row-status { margin: var(--s-3) 0 var(--s-4); color: var(--text-2); font-size: 12px; } +.cart-row-controls { display: flex; gap: var(--s-4); align-items: center; flex-wrap: wrap; } +.cart-row-unit { color: var(--text-3); font-size: 12px; } +.cart-actions { display: flex; justify-content: space-between; align-items: center; gap: var(--s-4); margin-top: var(--s-5); } +.cart-aside { display: grid; gap: var(--s-4); position: sticky; top: 96px; } +.checkout-cta { display: block; margin-top: var(--s-4); text-align: center; } +.promo-form { padding: var(--s-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.promo-form label { display: block; margin-bottom: var(--s-2); font-size: 12px; font-weight: 650; } +.promo-input-row { display: flex; gap: var(--s-2); } +.promo-input-row input { + flex: 1; min-width: 0; height: 38px; padding: 0 var(--s-3); + color: var(--ink); background: var(--bg); + border: 1px solid var(--line); border-radius: 6px; +} +.promo-input-row input:focus { background: var(--surface); border-color: var(--cobalt); outline: none; box-shadow: 0 0 0 2px var(--cobalt-tint); } +.promo-feedback { margin: var(--s-2) 0 0; color: var(--success); font-size: 12px; min-height: 1em; } +.promo-feedback.is-error { color: var(--danger); } + +/* ---- checkout ---- */ +.stepper { display: flex; gap: var(--s-2); flex-wrap: wrap; margin: var(--s-5) 0 0; padding: 0; list-style: none; } +.step { display: flex; gap: var(--s-2); align-items: center; padding: 8px var(--s-3) 8px 8px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-pill); } +.step-index { display: grid; width: 21px; height: 21px; place-items: center; color: var(--text-2); background: var(--bg); border-radius: 50%; font: 500 12px/1 var(--mono); } +.step-label { color: var(--text-2); font-size: 12px; font-weight: 500; } +.step.is-current { border-color: var(--cobalt); } +.step.is-current .step-index { color: #fff; background: var(--cobalt); } +.step.is-current .step-label { color: var(--cobalt); font-weight: 650; } +/* --success is this site's reported/verified signal. Spending it on "you filled + in a form step" puts four green pills next to a summary whose whole argument + is which analytics are green. Done reads solid, current cobalt, upcoming light. */ +.step.is-done .step-index { color: #fff; background: var(--slate); } +.step.is-done .step-label { color: var(--ink); } + +.checkout-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.checkout-step { margin: 0; padding: var(--s-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.checkout-step legend { display: flex; gap: var(--s-3); align-items: center; padding: 0; font-size: 16px; font-weight: 650; letter-spacing: -0.015em; } +.checkout-step legend span { display: grid; width: 24px; height: 24px; place-items: center; color: #fff; background: var(--cobalt); border-radius: 50%; font: 500 12px/1 var(--mono); } +.step-hint { margin: var(--s-3) 0 0; color: var(--text-2); font-size: 13px; line-height: 1.55; } + +.field-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-4); margin-top: var(--s-5); } +.field.is-full { grid-column: span 4; } +.field.is-half { grid-column: span 2; } +.field.is-quarter { grid-column: span 1; } +.field label { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 650; } +.field-optional { color: var(--text-3); font-weight: 400; } +.field input, .field select { + width: 100%; height: 42px; padding: 0 var(--s-3); + color: var(--ink); background: var(--bg); + border: 1px solid var(--line); border-radius: 6px; +} +.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--text-2) 50%), linear-gradient(135deg, var(--text-2) 50%, transparent 50%); background-position: calc(100% - 17px) 18px, calc(100% - 12px) 18px; background-size: 5px 5px; background-repeat: no-repeat; } +.field input:focus, .field select:focus { background: var(--surface); border-color: var(--cobalt); outline: none; box-shadow: 0 0 0 2px var(--cobalt-tint); } +.field input[readonly] { color: var(--text-2); background: var(--surface-soft); cursor: not-allowed; } +.field input.has-error, .field select.has-error { border-color: var(--danger); } +.field-error { margin: 8px 0 0; color: var(--danger); font-size: 12px; min-height: 1em; } +.field-note { margin: 8px 0 0; color: var(--text-3); font: 400 12px/1.4 var(--mono); } + +.choice-group { display: grid; gap: var(--s-3); margin-top: var(--s-5); } +.choice { display: flex; gap: var(--s-3); align-items: flex-start; padding: var(--s-4); border: 1px solid var(--line); border-radius: 8px; cursor: pointer; transition: border-color 140ms var(--ease), background 140ms var(--ease); } +.choice:hover { border-color: var(--line-strong); } +.choice:has(input:checked) { border-color: var(--cobalt); background: var(--cobalt-tint); } +.choice input { margin-top: 3px; accent-color: var(--cobalt); } +.choice-body { flex: 1; } +.choice-title { display: flex; justify-content: space-between; gap: 16px; font-size: 13px; font-weight: 650; } +.choice-price { font-weight: 650; } +.choice-detail { display: block; margin-top: 4px; color: var(--text-2); font-size: 12px; } + +.demo-payment-notice { margin-top: var(--s-5); padding: var(--s-4); background: var(--surface-soft); border-left: 3px solid var(--cobalt); border-radius: 0 8px 8px 0; } +.demo-payment-notice strong { display: block; margin-bottom: 4px; font-size: 13px; } +.demo-payment-notice p { margin: 0; color: var(--text-2); font-size: 12px; line-height: 1.6; } + +.checkbox-row { display: flex; gap: var(--s-3); align-items: flex-start; margin-top: var(--s-5); font-size: 13px; line-height: 1.5; cursor: pointer; } +.checkbox-row input { margin-top: 2px; accent-color: var(--cobalt); } +.checkbox-row a { color: var(--cobalt); text-decoration: underline; text-underline-offset: 2px; } + +/* Steps 2 to 5 carry three buttons. Under space-between that stranded `Back to + cart` alone in the middle of an 878px row, aligned to nothing. Retreats group + at the left, the single forward action holds the right edge. */ +.step-actions { display: flex; justify-content: flex-start; gap: var(--s-3); align-items: center; margin-top: var(--s-5); } +.step-actions .button-primary { margin-left: auto; } +.step-actions .button { min-width: 0; } + +.review-blocks { display: grid; gap: var(--s-3); margin-top: var(--s-5); } +.review-block { padding: var(--s-4); background: var(--bg); border-radius: 8px; } +.review-block-head { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; } +.review-block h3 { margin: 0 0 8px; font-size: 12px; font-weight: 650; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-2); } +.review-block p { margin: 0; font-size: 13px; line-height: 1.6; } +.link-button { padding: 0; color: var(--cobalt); background: none; border: 0; font-size: 12px; font-weight: 650; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; } + +/* ---- confirmation ---- */ +.confirmation-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.tracker { display: grid; gap: 0; margin: 0 0 var(--s-6); padding: 0; list-style: none; } +.tracker li { position: relative; padding: 0 0 var(--s-5) 30px; color: var(--text-2); font-size: 13px; font-weight: 650; } +.tracker li:last-child { padding-bottom: 0; } +.tracker li::before { position: absolute; top: 16px; bottom: 0; left: 6px; width: 2px; content: ""; background: var(--line); } +.tracker li:last-child::before { display: none; } +.tracker li span { position: absolute; top: 3px; left: 0; width: 14px; height: 14px; background: var(--surface); border: 2px solid var(--line-strong); border-radius: 50%; } +.tracker li.is-done { color: var(--ink); } +.tracker li.is-done span { background: var(--slate); border-color: var(--slate); } +.tracker li em { display: block; margin-top: 3px; color: var(--text-3); font: 400 12px/1.4 var(--mono); font-style: normal; } + +/* Confirmation-only. This was previously declared as .detail-grid, which + collided with the global editorial .detail-grid (0.72fr 1.28fr) defined + earlier and silently flattened it site-wide. */ +/* Five cards in two columns left the fifth alone in a half-width row with a dead + cell beside it. Three across, and the long resolution card takes the two + remaining tracks, so no row is left half-built. */ +.confirmation-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-3); } +.confirmation-details .detail-card:last-child { grid-column: span 2; } +.detail-card { padding: var(--s-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.detail-card h3 { margin: 0 0 8px; color: var(--text-2); font-size: 12px; font-weight: 650; letter-spacing: 0.06em; text-transform: uppercase; } +.detail-card p { margin: 0; font-size: 13px; line-height: 1.65; } + +/* ---- narrow ---- */ +@media (max-width: 960px) { + .cart-layout, .checkout-layout, .confirmation-layout { grid-template-columns: minmax(0, 1fr); gap: var(--s-5); } + .cart-aside { position: static; } + .checkout-aside { order: -1; } +} +@media (max-width: 640px) { + .field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3); } + .field.is-full, .field.is-half { grid-column: span 2; } + .field.is-quarter { grid-column: span 1; } + .cart-row { grid-template-columns: 84px minmax(0, 1fr); gap: var(--s-3); } + .cart-row-image img { width: 84px; height: 95px; } + .checkout-step { padding: var(--s-5) var(--s-4); } + .confirmation-details { grid-template-columns: minmax(0, 1fr); } + .confirmation-details .detail-card:last-child { grid-column: auto; } + /* column-reverse produced three identical full-width stacked buttons, two of + them retreats, which is 150px of equal-weight exit routes under the one + action that matters. wrap-reverse floats the primary onto its own full-width + line above the two back paths, which share a row. */ + .step-actions { flex-direction: row; flex-wrap: wrap-reverse; align-items: stretch; } + .step-actions .button { flex: 1 1 0; width: auto; text-align: center; } + .step-actions .button-primary { flex: 1 0 100%; margin-left: 0; } + .stepper { gap: 8px; } + .step { padding: 4px 12px 4px 4px; } + .step-label { font-size: 12px; } +} + +/* iOS zooms into any focused control rendering under 16px and does not zoom back + out, which leaves a half-finished checkout scrolled sideways with the next + field off-screen. 16px is the platform floor for text entry, not a type-scale + change: it applies to touch-width inputs only, and the desktop 15px body size + is untouched. The breakpoint is 768 rather than 640 because tablet-width + Safari zooms too. */ +@media (max-width: 768px) { + .field input, + .field select, + .promo-input-row input, + .testing-lookup input, + .collection-search, + .collection-sort, + .newsletter-form input { + font-size: 16px; + } +} + +.promo-hint { margin: 8px 0 0; color: var(--text-3); font-size: 12px; } +.promo-hint .link-button { font-size: 12px; } + +/* Mobile checkout: the order summary must not bury the actual task. Collapse it + into the standard mobile pattern (summary header + total, tap to expand) so + step 1 of the form is the first thing in the viewport. Desktop is unchanged. */ +@media (max-width: 960px) { + .checkout-aside { order: 0; } + .checkout-layout .checkout-main { order: -1; } + .checkout-aside .order-summary { padding: 0; } + .checkout-aside .order-summary h2 { + display: flex; justify-content: space-between; align-items: center; + margin: 0; padding: var(--s-4); cursor: default; + } + .checkout-aside .summary-lines, + .checkout-aside .summary-rows { padding-inline: var(--s-4); } + .checkout-aside .summary-total { padding: var(--s-4); } + .checkout-aside .summary-note { padding: 0 var(--s-4) var(--s-4); margin-top: 0; } +} + +/* Reported analytical results. The stylesheet previously only had an empty + state, because nothing was ever reported. A reported field reads as + confirmed; an unreported one stays visibly, deliberately blank. */ +.status-pill.is-reported { + color: var(--success); + background: var(--success-tint); + border-color: transparent; +} +.testing-row.is-reported strong { color: var(--ink); } +/* The testing document is a WHITE card sitting inside the dark band, not the + dark band itself. These were written as if they sat on --slate, so the + reported values rendered white-on-white and the site's central claim was + literally invisible on the homepage. */ +.document-tag.is-reported { + color: var(--success); + background: var(--success-tint); +} +.document-row.is-reported span { color: var(--ink); } +.document-row.is-reported strong { color: var(--ink); } + +.lookup-lot { margin: 4px 0 12px; color: var(--text-2); font: 400 12px/1 var(--mono); } +.lookup-fields { display: grid; gap: 8px; margin-bottom: 16px; } +.lookup-field { + display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2px 16px; + padding: 8px 12px; background: var(--bg); border-radius: 6px; +} +.lookup-field span { color: var(--text-2); font-size: 12px; font-weight: 650; } +.lookup-field strong { grid-column: 2; grid-row: 1; font-size: 13px; text-align: right; } +.lookup-field em { grid-column: 1 / -1; color: var(--text-3); font: 400 12px/1.4 var(--mono); font-style: normal; } +.lookup-field.is-reported strong { color: var(--success); } + +/* Fulfillment expectations at the decision point. Three facts a buyer of a + temperature-sensitive vial wants before committing: how it travels, whether + the lot was tested, and what shipping costs. */ +.pdp-assurances { margin: var(--s-4) 0 0; padding: 0; list-style: none; display: grid; gap: var(--s-2); } +.pdp-assurances li { + position: relative; padding-left: 24px; + color: var(--text-2); font-size: 13px; line-height: 1.5; +} +.pdp-assurances li::before { + position: absolute; top: 6px; left: 0; + width: 6px; height: 6px; content: ""; + /* Neutral, not success green. Green is the "verified/reported" token that the + COA pills and lot records trade on. Spending it on shipping policy would + dilute the one signal the catalog's credibility rests on. */ + background: var(--text-2); border-radius: 50%; +} +.pdp-testing-link.is-reported { color: var(--cobalt); } + +/* Availability. Three states, and the unavailable one is deliberately quiet: + a struck-through disabled control rather than a red alarm, because an item we + do not sell is a normal catalog state, not an error the shopper caused. */ +.stock-badge { + display: inline-block; margin-left: 8px; padding: 2px 8px; + border-radius: 99px; font: 500 9px/1.6 var(--mono); + letter-spacing: 0.06em; text-transform: uppercase; vertical-align: middle; +} +.stock-badge.is-in { color: var(--success); background: var(--success-tint); } +.stock-badge.is-low { color: #8a5a00; background: #fdf3e2; } +.stock-badge.is-unavailable { color: var(--text-2); background: var(--surface-soft); } + +.add-button.is-unavailable, +.pdp-add.is-unavailable { + color: var(--text-3); + background: var(--surface-soft); + border-color: var(--line); + cursor: not-allowed; +} +.add-button.is-unavailable:hover, +.pdp-add.is-unavailable:hover { background: var(--surface-soft); border-color: var(--line); } + +.status-dot.is-blocked { background: var(--text-3); } + +.cart-blocked-notice { + margin: 0 0 var(--s-4); padding: var(--s-3) var(--s-4); + color: var(--ink); background: var(--surface-soft); + border-left: 3px solid var(--text-2); border-radius: 0 8px 8px 0; + font-size: 13px; line-height: 1.55; +} +.cart-blocked-notice strong { display: block; margin-bottom: 3px; } +.checkout-cta.is-blocked { + pointer-events: none; + cursor: not-allowed; + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + opacity: 1; +} + +/* ============================================================================ + New components. Free-shipping progress, the restricted-compound notice, and + the in-checkout discount disclosure. Plus two fixes that had nowhere else to + live: the footer spacer under the mobile cart bar, and the aria-invalid + companion to .has-error. + ========================================================================= */ + +/* ---- free-shipping progress (cart drawer + cart page) ---- + The fill is cobalt, not green. Green on this site means "reported/verified", + which is the single signal the catalog's credibility rests on. Spending it on + a shipping threshold would dilute the one thing a buyer is meant to trust. + The one green allowed here is the met-state label and its status dot, which + is a genuine applied/confirmed state. */ +.ship-progress-bar { + display: grid; + gap: var(--s-2); + margin-bottom: var(--s-4); +} + +.ship-progress-bar__track { + height: 6px; + overflow: hidden; + background: var(--surface-soft); + border-radius: var(--r-pill); +} + +.ship-progress-bar__fill { + height: 100%; + background: var(--cobalt); + border-radius: var(--r-pill); + transition: width 240ms var(--ease); +} + +.ship-progress-bar__label { + margin: 0; + color: var(--text-2); + font-size: 13px; +} + +.ship-progress-bar__label strong { + color: var(--ink); + font-variant-numeric: tabular-nums; +} + +.ship-progress-bar.is-met .ship-progress-bar__fill { + background: var(--success); +} + +.ship-progress-bar.is-met .ship-progress-bar__label { + color: var(--success); +} + +/* Inside the drawer footer the bar sits directly above the subtotal, so it + loses its own bottom margin and borrows the subtotal's. */ +.cart-footer .ship-progress-bar { + margin-bottom: var(--s-3); +} + +/* ---- restricted compound notice (buy box) ---- + Deliberately not the out-of-stock treatment. "Unavailable" says come back + later; this says we will not sell it, and why. Neutral grey throughout: the + pill is a status, but a negative one, so it takes neither cobalt (which means + interactive) nor green (which means verified) nor gold (brand material). */ +.restricted-notice { + padding: var(--s-4); + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.restricted-notice__pill { + display: inline-block; + margin-bottom: var(--s-2); + padding: 3px 8px; + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: var(--r-pill); + font: 500 9px/1.6 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.restricted-notice p { + margin: 0; + color: var(--text-2); + font-size: 13px; + line-height: 1.6; +} + +/* Catalog and search pills for the same two entries, in the same neutral grey, + so the state reads identically wherever the entry appears. */ +.stock-badge.is-restricted { + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line-strong); +} + +/* ---- in-checkout discount disclosure ---- + A real
, so the trigger is keyboard-operable and picks up the + standard focus ring without any script. */ +.promo-disclosure { + padding: var(--s-4); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.promo-disclosure > summary { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; + color: var(--cobalt); + font-size: 13px; + font-weight: 650; + cursor: pointer; + list-style: none; + transition: color 120ms ease-out; +} + +.promo-disclosure > summary::-webkit-details-marker { + display: none; +} + +.promo-disclosure > summary::after { + content: ""; + flex: 0 0 11px; + height: 11px; + background-image: + linear-gradient(var(--cobalt), var(--cobalt)), + linear-gradient(var(--cobalt), var(--cobalt)); + background-repeat: no-repeat; + background-position: center; + background-size: 11px 1.5px, 1.5px 11px; + transition: background-size 200ms var(--ease); +} + +.promo-disclosure[open] > summary::after { + background-size: 11px 1.5px, 1.5px 0; +} + +.promo-disclosure > summary:hover { + color: var(--cobalt-deep); +} + +/* The promo form is already a panel elsewhere. Inside the disclosure it is just + the contents, so it drops its own frame. */ +.promo-disclosure .promo-form { + margin-top: var(--s-3); + padding: 0; + background: none; + border: 0; + border-radius: 0; +} + +/* ---- invalid field ---- + Pairs with .has-error so the red border follows aria-invalid on its own. A + field can then be announced and outlined from a single state change. */ +.field input[aria-invalid="true"], +.field select[aria-invalid="true"] { + border-color: var(--danger); +} + +/* ---- mobile cart bar clearance ---- + The bar is fixed at the bottom of the viewport and was sitting on top of the + last two footer rows. Any page that renders the bar reserves its height plus + its offset. */ +@media (max-width: 640px) { + body:has(.mobile-cart-bar) .site-footer { + padding-bottom: 64px; + } +} + +/* ============================================================================ + Components the interrupted build emitted in site.js but never styled. + Each of these was rendering as an unstyled element: no error thrown, just + silently wrong. Values use the spacing scale rather than new magic numbers. + ========================================================================= */ + +/* Cart page: left column and row internals */ +.cart-main { min-width: 0; } +.cart-row-body { display: flex; flex-direction: column; min-width: 0; } +.cart-row-cap { + margin: var(--s-2) 0 0; + color: var(--text-3); + font: 400 12px/1.4 var(--mono); +} + +/* Cart drawer actions: full-width stacked, primary first */ +/* display:block + min-height leaves the label pinned to the top of the box: + align-items does nothing on a block. These render as 46px tall buttons with + the text 2px from the top and 28px from the bottom. Grid centres it. */ +.cart-checkout, +.cart-view { display: grid; place-items: center; width: 100%; text-align: center; } +.cart-view { margin-top: var(--s-2); } + +/* Cross-sell below the cart lines. Deliberately quieter than the catalog grid + so it reads as a suggestion rather than competing with the checkout action. */ +.cart-cross-sell { + margin-top: var(--s-7); + padding-top: var(--s-6); + border-top: 1px solid var(--line); +} +.cart-cross-sell h2 { + margin: 0 0 var(--s-4); + font-size: 15px; + font-weight: 650; + letter-spacing: -0.01em; +} +.cart-cross-sell .product-grid { gap: var(--s-4); } + +/* Search dropdown thumbnail. Fixed box + cover, since the source art is 4:3 + and this slot is square. */ +.search-result-image { + flex: 0 0 auto; + display: block; + width: 52px; + height: 52px; + overflow: hidden; + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} +.search-result-image img { width: 52px; height: 52px; object-fit: cover; } + +/* Lot and report date beneath the analytical panel */ +.analytical-meta { + display: flex; + gap: var(--s-4); + flex-wrap: wrap; + margin-top: var(--s-4); + padding-top: var(--s-4); + border-top: 1px solid var(--line); + color: var(--text-2); + font: 400 12px/1.5 var(--mono); +} + +/* Footer contact column: same grid cell, looser leading for the address block */ +.footer-contact p { margin: 0 0 var(--s-2); line-height: 1.6; } +.footer-contact a { color: inherit; text-decoration: underline; text-underline-offset: 2px; } + +/* Confirmation left column */ +.confirmation-main { min-width: 0; } + +@media (max-width: 640px) { + .cart-cross-sell { margin-top: var(--s-6); padding-top: var(--s-5); } + .search-result-image, .search-result-image img { width: 44px; height: 44px; } +} + +/* Checkout stepper: the pills double as back-navigation to a completed step */ +.step-jump { + padding: 0; + color: inherit; + background: none; + border: 0; + font: inherit; + cursor: pointer; +} +/* The five stepper items are disabled buttons, so button:disabled knocked the + whole progress indicator - current step included - to 0.55. The pending step + labels measured rgb(165,170,177) = 2.34:1 on their own white pill at 12px. + At full opacity the same pixel is --text-2 = 5.98:1. This is a progress + indicator, not a control to be read as unavailable. */ +.step-jump:disabled { cursor: default; opacity: 1; } +.step-jump:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 3px; border-radius: var(--r-sm); } + +/* Who ran the analysis, and why one field is deliberately empty. These carry + the credibility of the analytical panel, so they read as record, not legalese. */ +.testing-attribution, +.testing-scope-note { + margin: var(--s-4) 0 0; + max-width: var(--measure); + color: var(--text-2); + font-size: 12px; + line-height: 1.6; +} +.testing-scope-note { + padding-left: var(--s-3); + border-left: 2px solid var(--line-strong); +} + +/* Footer contact heading sat flush against the paragraph above it, reading as + a stray line rather than a column label. */ +.footer-contact h2 { margin-top: var(--s-5); } + +/* "View status" was wrapping mid-phrase inside the card's testing row, which + broke the line into "View / status" on narrower cards. */ +.testing-micro { gap: var(--s-3); align-items: baseline; } +.testing-micro a { flex: 0 0 auto; white-space: nowrap; } + +/* The simulated vial label is only 40% of the image width, so a catalog code + was breaking mid-token ("OVO-" / "002"), which reads as a rendering fault on + what is meant to look like printed packaging. */ +.product-image-label span { white-space: nowrap; } +.product-image-label { width: 62%; } + +/* Category + stock badge share a line. A long category ("Growth Hormone + Research") pushed the badge to a second line and knocked that card's title + out of alignment with its neighbours in the same row. */ +.product-category { + display: flex; + gap: var(--s-2); + align-items: center; + flex-wrap: wrap; + min-height: 18px; +} +.product-card .product-category { min-height: 32px; align-content: flex-start; } + + +/* Mobile catalog. On a 390x844 phone the index pages shipped 750px of hero, + filter rail and toolbar before the first product card, so the grid the page + exists to show opened below the fold. Three steps, all on the scale: the hero + drops to the s-6/s-5 pair, the H1 takes the next step down, and the hero's + descriptive paragraph is suppressed because it restates what the filter rail, + the search field and the live result count already say on screen. Measured + 750px to 586px, so the first card now lands inside the first screen. + + Scoped to a hero that is immediately followed by a product or bundle grid AND + carries no .hero-actions. That second condition matters: the 404 and + empty-cart heroes are also followed by a product grid, and their paragraph is + the only instruction on the page, so they keep it. Editorial, policy and PDP + heroes never match. */ +@media (max-width: 768px) { + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid), + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) { + padding: var(--s-6) 0 var(--s-5); + } + + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid) h1, + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) h1 { + font-size: var(--t-section); + } + + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid) > .shell > p:not(.eyebrow), + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) > .shell > p:not(.eyebrow) { + display: none; + } +} + + + +/* ── Lot record ────────────────────────────────────────────────────────────── + The one artifact the site kept promising and never produced. Styled as a + record, not a page: mono for anything that is data, a label above every + field, and the unreported rows carried at the same weight as the reported + ones. No badges and no status colour, because a record earns trust by being + legible and complete rather than decorated. */ +.lot-hero-number { font-family: var(--mono); font-weight: 500; font-size: 0.86em; letter-spacing: -0.02em; } + +.lot-layout { + display: grid; + grid-template-columns: minmax(0, 1fr) 300px; + gap: var(--s-6); + align-items: start; +} + +.lot-doc { + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); + overflow: hidden; +} + +.lot-doc-head { + display: flex; + gap: var(--s-4); + justify-content: space-between; + align-items: baseline; + flex-wrap: wrap; + padding: var(--s-5); + border-bottom: 1px solid var(--line-strong); +} +.lot-doc-kicker { + margin: 0 0 var(--s-1); + color: var(--text-3); + font: 500 9px/1 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} +.lot-doc-head h2 { margin: 0; font-size: 20px; letter-spacing: -0.01em; } +.lot-doc-ref { margin: 0; color: var(--text-2); font: 500 12px/1.4 var(--mono); } + +.lot-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; padding: 0; } +.lot-field { padding: var(--s-4) var(--s-5); border-bottom: 1px solid var(--line); } +.lot-field:nth-child(odd) { border-right: 1px solid var(--line); } +.lot-field dt { + margin: 0 0 var(--s-1); + color: var(--text-3); + font-size: 10px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-field dd { margin: 0; color: var(--ink); font: 500 13px/1.5 var(--mono); overflow-wrap: anywhere; } + +.lot-block { padding: var(--s-5); border-top: 1px solid var(--line); } +.lot-block h3 { + margin: 0 0 var(--s-4); + color: var(--text-2); + font-size: 12px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-omissions { background: var(--surface-soft); } + +.lot-methods { display: grid; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); } +.lot-method { + display: grid; + grid-template-columns: 0.8fr 1fr 0.9fr; + gap: var(--s-4); + align-items: baseline; + padding: var(--s-4); + border-bottom: 1px solid var(--line); +} +.lot-method:last-child { border-bottom: 0; } +.lot-method-label { color: var(--ink); font-size: 12px; font-weight: 650; } +.lot-method-method { color: var(--text-2); font: 400 12px/1.5 var(--mono); } +.lot-method-result { color: var(--ink); font: 500 13px/1.4 var(--mono); } +.lot-method.is-omitted .lot-method-method, +.lot-method.is-omitted .lot-method-result { color: var(--text-3); } + +.lot-note { margin: var(--s-4) 0 0; max-width: var(--measure); color: var(--text-2); font-size: 12px; line-height: 1.6; } +.lot-doc-foot { padding: var(--s-5); border-top: 1px solid var(--line-strong); } +.lot-doc-foot p { margin: 0 0 var(--s-2); max-width: var(--measure); color: var(--text-2); font-size: 12px; line-height: 1.6; } +.lot-doc-foot p:last-child { margin-bottom: 0; } + +.lot-aside { display: grid; gap: var(--s-3); } +.lot-aside h2 { + margin: 0; + color: var(--text-2); + font-size: 12px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-aside h2 + .lot-index { margin-bottom: var(--s-2); } +.lot-aside-note { + margin: 0; + padding: var(--s-3); + background: var(--surface-soft); + border-radius: var(--r-sm); + color: var(--text-2); + font-size: 12px; + line-height: 1.6; +} +.lot-aside-note strong { color: var(--ink); } +.lot-aside-links { display: grid; gap: var(--s-2); margin-bottom: var(--s-3); } +.lot-aside-links a { color: var(--cobalt); font-size: 13px; text-decoration: none; } +.lot-aside-links a:hover { text-decoration: underline; } + +.lot-index { display: grid; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; } +.lot-index-row { + display: grid; + grid-template-columns: 0.55fr 1.1fr 0.4fr 0.6fr; + gap: var(--s-4); + align-items: baseline; + padding: var(--s-4); + border-bottom: 1px solid var(--line); + color: inherit; + text-decoration: none; + transition: background 120ms ease-out, box-shadow 120ms ease-out; +} +.lot-index-row:last-child { border-bottom: 0; } +.lot-index-row:hover { background: var(--cobalt-tint); box-shadow: inset 3px 0 0 var(--cobalt); } +.lot-index-lot { color: var(--ink); font: 500 13px/1.4 var(--mono); } +.lot-index-name { font-size: 13px; } +.lot-index-code, +.lot-index-date { color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.lot-index.is-compact .lot-index-row { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: var(--s-3) var(--s-4); } +.lot-index.is-compact .lot-index-name { font-size: 12px; } + +/* The lot carried on a cart row, a checkout summary line and a receipt line. + Block, because a set puts one lot per component on consecutive lines and they + would otherwise run together inside the summary cell. */ +.lot-line { display: block; } +.summary-line .lot-line a { color: var(--cobalt); text-decoration: none; } +.summary-line .lot-line a:hover { text-decoration: underline; } +.cart-row-lots { display: grid; gap: 2px; margin: var(--s-1) 0 0; } +.cart-row-lots a, +.cart-row-lots span { font: 400 12px/1.5 var(--mono); } +.cart-row-lots span { color: var(--text-2); } +.cart-row-lots a { color: var(--cobalt); text-decoration: none; width: fit-content; } +.cart-row-lots a:hover { text-decoration: underline; } +.analytical-meta a { color: var(--cobalt); text-decoration: none; } +.analytical-meta a:hover { text-decoration: underline; } + +@media (max-width: 900px) { + .lot-layout { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); } +} + +@media (max-width: 640px) { + .lot-fields { grid-template-columns: minmax(0, 1fr); } + .lot-field:nth-child(odd) { border-right: 0; } + .lot-doc-head, .lot-block, .lot-doc-foot { padding: var(--s-4); } + .lot-method { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); } + .lot-index-row { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); } +} + +/* ============================================================================ + FABLE 5 — first screen, authored revision. + Three calls, in order of impact: + 1. The cobalt headline span was the loudest thing on the page, competing with + the primary button for the same signal. Cobalt is contractually + interactive-and-status in this system; the headline broke that rule. + 2. Two cards floating on the photograph turned the strongest asset into a + notice board. The featured-product chip is a second message selling an item + already first in the catalog one scroll down. + 3. Column balance and copy rhythm: the stack read as four evenly spaced strata + instead of message-then-action. + ========================================================================= */ + +/* cobalt returns to interactive-only; the headline carries weight in ink */ +.hero-copy h1 span { color: var(--ink); } + +/* the featured-product chip was removed from homePage() entirely rather than + hidden, so no dead markup ships. Its remaining rules below are inert. */ + +/* message and photograph hold equal weight */ +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .hero-grid { + grid-template-columns: minmax(0, 1fr) minmax(480px, 1fr); + padding-block: var(--s-7); + } +} + +/* copy rhythm: message group tight (12/16), action separated (32) */ +.hero-copy .eyebrow { margin-bottom: var(--s-3); } +.hero-copy > p:not(.eyebrow) { margin-top: var(--s-4); } + +/* the proof card breathes inside its rounded frame */ +.hero-coa-card { bottom: var(--s-5); left: var(--s-5); padding: var(--s-4); } + +/* header rows onto the scale */ +.concept-banner { padding-block: var(--s-2); } +.header-main { gap: var(--s-5); } +.category-nav { gap: var(--s-5); } + +/* trust strip: padding governs height rather than an arbitrary min-height */ +.trust-strip { min-height: 0; } +.trust-item { gap: var(--s-3); padding: var(--s-4); } + +/* =========================================================================== + FABLE 5 — catalog + category bands. + Card interiors and grid gutters onto the scale; the category band demoted + to a labelled rail since its heading duplicated the nav directly above it. + ======================================================================== */ +/* ── 1. Gutters: s-4 → s-5 above the mobile breakpoint. + ≤640 keeps --gutter-grid via the existing media block. ── */ +@media (min-width: 641px) { + .product-grid, + .category-rail { + gap: var(--s-5); + } +} + +/* ── 2. Card interior: every gap on the scale ── */ +.product-card .product-category { + margin-bottom: var(--s-2); /* was 6px */ +} +.product-card .stock-badge { + margin-left: 0; /* flex gap s-2 owns this seam; 6px doubled it to 14 */ +} +.testing-micro { + padding: var(--s-2) 0; /* was 9px 0 */ +} +.testing-micro span:first-child { + gap: var(--s-2); /* was 6px */ +} +.product-buy-row { + margin-top: var(--s-4); /* was s-3; buy row is the card's terminal zone */ +} +.add-button { + padding: 0 var(--s-3); /* was 0 10px */ +} +.text-link { + gap: var(--s-2); /* was 7px */ +} + +/* ── 3. Category band demoted to a labelled nav rail ── */ +.category-section-head { + margin-top: var(--s-6); /* was s-7; now a sub-rail of the catalog section */ + margin-bottom: var(--s-3); +} +.category-section-head .eyebrow { + margin: 0; /* global eyebrow carries 14px; the wrapper spaces this */ +} +.category-tile { + min-height: 0; /* was 96px; content + s-5 padding sets height, no dead air */ + align-items: center; /* was end; arrow centers on the two-line block */ +} +.category-tile span { + margin-top: var(--s-1); /* value was right at 4px; tokenize */ +} + +/* =========================================================================== + FABLE 5 — the proof band, the site's central claim. + The document stretched to fill its column and left ~40% dead white below + the last row, so the evidence card read as empty. It now centres as a + compact artifact at document density, the CTA sizes to its label instead + of spanning 430px, and reported rows sit in ink while unreported recede, + making the claim legible at arm's length. + ======================================================================== */ +/* 1 — the document is a compact artifact centered on slate, not a stretched panel */ +.testing-document { + align-self: center; + margin: var(--s-5); + padding: clamp(var(--s-5), 4vw, var(--s-6)); + background: var(--surface); + border-radius: var(--r-md); /* was hardcoded 8px */ +} + +.document-row { + padding: var(--s-3) 0; /* was --s-4; CoA density, not table density */ +} + +/* 2 — button sizes to its label */ +.testing-feature-copy .button { + align-self: flex-start; +} + +/* 3 — the claim made visible: reported = ink, unreported = recedes */ +.document-row span { + color: var(--text-3); /* was --text-2; unreported values go quiet */ +} +.document-row:not(.is-reported) strong { + color: var(--text-2); /* unreported label dims with its value */ +} +/* .document-row.is-reported span/strong → var(--ink) already exists at 3032-3033; keep */ + +/* off-scale cleanup in scope */ +.document-tag { + padding: var(--s-1) var(--s-2); /* was 6px 8px */ + border-radius: var(--r-sm); /* was 4px */ +} + +/* =========================================================================== + FABLE 5 — bundle rail, guide cards, newsletter band. + ======================================================================== */ +/* This button sits on the cobalt panel, so there is no darker step available + and no lighter slate in the palette. The rest state inverts: white plate, + cobalt label, 6.38:1. Hover steps the label to cobalt-deep on the same + plate. Same tokens, no third dark surface above the slate footer. */ +.newsletter-form button { + min-width: 120px; + color: var(--cobalt); + background: var(--on-dark); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; + transition: color 120ms ease-out, background 120ms ease-out; +} + +.newsletter-form button:hover { + color: var(--cobalt-deep); + background: var(--on-dark); +} + +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .newsletter { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-6); + align-items: center; + padding: var(--s-7) var(--s-6); + color: var(--on-dark); + background: var(--cobalt); + border-radius: var(--r-lg); + } +} + +.newsletter p { + max-width: var(--measure); + margin: var(--s-4) 0 0; + color: var(--cobalt-tint); +} + +.newsletter-form input { + width: min(340px, 42vw); + height: 44px; + padding: 0 var(--s-4); + color: var(--ink); + background: var(--surface); + border: 0; + border-radius: var(--r-sm); +} + +.eyebrow { + margin: 0 0 var(--s-3); + color: var(--cobalt); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .section-head { + display: flex; + justify-content: space-between; + gap: var(--s-6); + align-items: end; + margin-bottom: var(--s-5); + } +} + +.product-category { + margin: 0 0 var(--s-2); + color: var(--cobalt); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.bundle-count { + position: absolute; + top: var(--s-3); + left: var(--s-3); + padding: var(--s-1) var(--s-2); + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 500 9px/1 var(--mono); + text-transform: uppercase; +} + +.bundle-items li { + display: flex; + justify-content: space-between; + gap: var(--s-3); + padding: var(--s-1) 0; + color: var(--text-2); + font-size: 12px; +} + +/* Bundle and education cards sit in adjacent bands at the same tier; their + titles were 18px and 19px with nothing deliberate behind the difference. */ +.education-card h3 { + font-size: 20px; +} + +/* ============================================================================ + Cart drawer: the dead region put to work. + The drawer is a full-height grid, so a two-line cart left roughly 196px of + empty white between the last item and the footer. The footer stays pinned, + which is correct for a side drawer; the gap now carries progress toward free + shipping and the nearest sensible addition instead of nothing. + ========================================================================= */ + +.drawer-ship { margin-bottom: var(--s-4); } +.drawer-ship-track { + height: 4px; + overflow: hidden; + background: var(--surface-soft); + border-radius: var(--r-pill); +} +.drawer-ship-track span { + display: block; + height: 100%; + background: var(--cobalt); + border-radius: var(--r-pill); + transition: width 300ms var(--ease); +} +.drawer-ship.is-met .drawer-ship-track span { background: var(--success); } +.drawer-ship p { margin: var(--s-2) 0 0; color: var(--text-2); font-size: 12px; } +.drawer-ship strong { color: var(--ink); } + +.drawer-cross { + margin-top: var(--s-5); + padding-top: var(--s-4); + border-top: 1px solid var(--line); +} +.drawer-cross h3 { + margin: 0 0 var(--s-3); + color: var(--text-2); + font: 500 10px/1 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} +.drawer-cross-row { + display: grid; + grid-template-columns: 44px minmax(0, 1fr) auto; + gap: var(--s-3); + align-items: center; + padding: var(--s-2) 0; +} +.drawer-cross-row img { + width: 44px; + height: 44px; + object-fit: cover; + border: 1px solid var(--line); + border-radius: var(--r-sm); +} +.drawer-cross-row strong { display: block; font-size: 13px; font-weight: 650; } +.drawer-cross-row span { color: var(--text-3); font: 400 10px/1.4 var(--mono); } +.drawer-cross-add { + padding: var(--s-2) var(--s-3); + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; + white-space: nowrap; + cursor: pointer; + transition: border-color 140ms var(--ease), background 140ms var(--ease); +} +.drawer-cross-add:hover { background: var(--cobalt-tint); border-color: var(--cobalt); } + +/* ============================================================================ + Touch targets. Measurement found 160 controls under the 44px minimum, the + worst being the quantity steppers at 28x27 and Remove at 38x15. Hit area is + expanded with padding and pseudo-element insets so the visual size of these + deliberately small controls is preserved. + ========================================================================= */ + +.mini-quantity button, +.quantity-control button { + /* position only. A previous touch-target pass set min-width/min-height 32px + here, but .mini-quantity is a 28/28/28 grid at 29px tall, so the buttons + were larger than their own cells and spilled out of the bordered box: the + outline read as broken and the container's bottom border showed through + under the value. The ::after below already supplies a 44px hit area, so the + visual box stays exactly as designed. */ + position: relative; +} +.mini-quantity button::after, +.quantity-control button::after, +.remove-item::after, +.drawer-close::after { + position: absolute; + top: 50%; + left: 50%; + width: 44px; + height: 44px; + content: ""; + transform: translate(-50%, -50%); +} +.remove-item, +.drawer-close { position: relative; } +.drawer-close { min-width: 44px; min-height: 44px; } + + +/* ============================================================================ + Cart page and cart drawer. Everything below was measured on rendered + 1440x900 and 390x844 captures, not read off the source. + ========================================================================= */ + +/* The suggestion grid inherited the catalog's four-track layout while the cart + only ever renders three entries, so the row stopped at x752 inside a column + whose progress bar, cart lines and actions all end at x988. Three tracks fill + the column. The buy row is bottom-set at the same time: "Growth Hormone + Research" wraps to a second line where the other two categories do not, and + the 32px reserve is 6px short of the wrapped height, which was pushing that + card's price and button off the baseline its neighbours share. */ +@media (min-width: 961px) { + .cart-cross-sell .product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } +} +.cart-cross-sell .product-card { display: flex; flex-direction: column; } +.cart-cross-sell .product-card-body { display: flex; flex-direction: column; flex: 1 1 auto; } +.cart-cross-sell .product-buy-row { margin-top: auto; } + +/* Remove sat at x376 in a 928px row with 574px of nothing after it. It now + holds the same right rail as the line price directly above it, so the row is + read between two edges instead of trailing off into the middle. */ +.cart-row-controls .remove-item { margin-left: auto; } + +@media (max-width: 960px) { + /* Lot and reported date are one string. At 390 it broke after the hyphen and + printed "2026-06-" over "24" with 39px of column still unused. */ + .lot-line { white-space: nowrap; } + + /* On a phone the summary, total and checkout button sat below 1,089px of + cross-sell. The left column is unwrapped so the aside can be ordered above + the suggestions and the suggestion becomes what it should be: the last + thing offered, after the buyer has been given the way out. Desktop is + untouched. */ + .cart-layout { display: flex; flex-direction: column; align-items: stretch; } + .cart-main { display: contents; } + .cart-aside { order: 1; } + .cart-cross-sell { order: 2; margin-top: 0; } + .cart-actions { margin-top: 0; } +} + +/* Drawer. The cross-sell reduced the dead region from 196px to 99px but left it + stranded between two hairlines, which looks like a section that failed to + render. The scroll body becomes a column so the suggestion block can be set + against the footer as a tinted full-bleed band: the residual white now sits + between the cart lines and a deliberate band rather than below everything. */ +.cart-items { display: flex; flex-direction: column; } +.cart-empty { flex: 1 1 auto; } +.cart-item:last-of-type { border-bottom: 0; } +.drawer-cross { + /* was `margin: auto ...`. In a flex column an auto top margin absorbs all + free space, so with one line in the cart it pushed the cross-sell to the + bottom of the scroll area and opened a 308px void directly under the item. + The block now sits immediately after the last line; the drawer's own 1fr + row still holds the footer at the bottom, which is what we actually wanted. */ + margin: var(--s-5) calc(var(--s-5) * -1) calc(var(--s-4) * -1); + padding: var(--s-4) var(--s-5) var(--s-5); + background: var(--bg); + /* grow into whatever the pinned footer leaves over. A drawer footer is + bottom-anchored by design, so a short cart always leaves free space; letting + the tinted block absorb it turns a white void into a finished panel. */ + flex: 1 1 auto; +} + +/* "Add · $100" was 88px and "Add · $68" was 83px, right-aligned, so the two + left edges disagreed by 5px in a stack the eye reads as a column. A fixed + terminal track on the scale gives both one width and one pair of edges. */ +.drawer-cross-row { grid-template-columns: 44px minmax(0, 1fr) var(--s-9); } + +/* Unit price in the drawer line, so the quantity and the line total reconcile + on screen and Remove is no longer 184px of white away from the stepper. Same + information the cart page already shows for the same item. */ +.cart-item-unit { + color: var(--text-3); + font-size: 12px; + white-space: nowrap; +} + +/* The browser-storage note was flush against the bottom edge of View cart: + measured button bottom 807, note top 807. */ +.cart-footer .cart-terminus { margin-top: var(--s-4); } + + +/* ============================================================================ + Catalog grid composition, anchored to what the rendered page does at + 1440x900 rather than to what the markup implies. + ========================================================================= */ + +/* Card footers align across a row. The buy row previously sat wherever the + title happened to stop, so CJC-1295 + Ipamorelin, the one two-line name in + row two, dropped its Add to cart button 20px below its three neighbours. */ +.product-card { + display: flex; + flex-direction: column; +} + +.product-card-body { + display: flex; + flex: 1 1 auto; + flex-direction: column; +} + +/* The hairline testing block is the card's terminal zone. Pinning it to the + bottom aligns both it and the buy row across every card in the row. */ +.product-card .testing-micro { + margin-top: auto; +} + +@media (min-width: 641px) { + /* One price column for every card. `auto` sized it to the digits, so $100 + and $90 put their buttons on two different left edges in the same row. */ + .product-buy-row { + grid-template-columns: var(--s-7) 1fr; + } +} + +/* The count is a line-height:1 span stretched to the flex line, so it painted + from the top of that box and read as a superscript beside its label. */ +.filter-button { + align-items: baseline; +} + +/* Amber was the only warm chip on a cool page and read as the brand gold, + which is product material and can never carry a badge. Low stock is a + status, so it takes the status colour. */ +.stock-badge.is-low { + color: var(--cobalt); + background: var(--cobalt-tint); +} + + +/* .section-head is set to display:block under 640px, then a later unscoped + .section-head re-declares display:flex and wins on order, so on a 390px + phone the closing head on the catalog and the related-products head on every + PDP stay two-column: the h2 renders in an 87px track and stacks to five + lines beside its own paragraph. */ +@media (max-width: 640px) { + .section-head { + display: block; + margin-bottom: var(--s-4); + } +} + + +/* The four cue tiles were the only centred text in a buy column where the + eyebrow, title, code, price, strength row, bullets and note all start on the + same left edge. */ +.buybox-cue { + text-align: left; +} + +/* Strength is a stated fact, not the label of the quantity stepper sitting + directly beneath it. The hairline closes the spec pair before the controls + open. */ +.selection-label { + padding-bottom: var(--s-3); + margin-bottom: var(--s-4); + border-bottom: 1px solid var(--line); +} + +/* A not-offered entry has no buy control, so without this the buy column ends + on a grey notice butted against the grey cue grid and the visitor has + nowhere to go from the page. White on grey also breaks the two greys apart. */ +/* Doubled class on purpose. The shared `.button { display: inline-grid; + place-items: center }` rule sits later in this file and won a + same-specificity tie, which made every child of this anchor its own grid row: + the trailing arrow dropped onto a second line and the label sat 12.7px above + the box centre in a 49px control. inline-flex keeps the label centred and the + arrow inline, and the extra class makes the result independent of rule order. */ +.pdp-alt-action.pdp-alt-action { + display: inline-flex; + gap: var(--s-2); + align-items: center; + justify-content: center; + width: 100%; + min-height: 48px; + margin-top: var(--s-4); +} + + +@media (min-width: 641px) { + /* Both tables now share one label column, so the spec value column and the + analytical method column start at the same x. Each row is its own grid, so + the trailing `auto` pill track resized the two tracks in front of it per + row: the four method strings landed on four different left edges, measured + at 929, 935, 962 and 983 on BPC-157 at 1440. */ + .spec-row { + grid-template-columns: 224px minmax(0, 1fr); + } + + .testing-row { + grid-template-columns: 224px minmax(0, 1fr) 224px; + } + + .testing-row .status-pill { + justify-self: end; + } +} + + +/* Ten rows of 12px type stretched across the full 1320px shell: the name column + measured 644px for ~200px of text and the lot column 515px for ~250px, so each + row carried roughly 700px of dead space and the section caption was flush to a + right edge it shared with nothing. The catalog status list is a document, so it + takes the document column and the caption sits under the heading it belongs to. */ +.testing-catalog { + width: min(780px, var(--shell)); +} + +.testing-catalog .section-head { + display: block; +} + +.testing-catalog .section-head p { + max-width: none; + margin-top: var(--s-2); +} + +/* An accordion column runs 995px while its heading rail holds 64px of content, + which leaves a 458x930 empty rectangle beside the questions on the FAQ page and + strands the heading at the top. The rail travels with the list instead. Scoped + above 960 because .detail-grid is a single column below it. */ +@media (min-width: 961px) { + .detail-grid:has(.accordion) > :first-child { + position: sticky; + top: 132px; + align-self: start; + } +} + +/* Two identical white buttons on the cobalt panel stated no order. The catalog + stays filled; the testing link becomes an outline of the same size. */ +.newsletter .hero-actions .button-secondary:last-child { + color: var(--on-dark); + background: transparent; + border-color: var(--on-dark); +} + +.newsletter .hero-actions .button-secondary:last-child:hover { + color: var(--cobalt); + background: var(--surface); + border-color: var(--surface); +} + + +/* Confirmation tracker. As a bare vertical list it was the only unboxed element + on the page, sat directly on the grey background, and stranded roughly 700px + of empty space to its right above the detail cards. Horizontal inside a card + at desktop width: it uses the row it is given and the four states read as one + sequence rather than a list. */ +@media (min-width: 961px) { + .tracker { + grid-template-columns: repeat(4, minmax(0, 1fr)); + column-gap: var(--s-4); + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); + } + .tracker li { padding: var(--s-5) 0 0; } + .tracker li::before { top: 6px; right: calc(var(--s-4) * -1); bottom: auto; left: 18px; width: auto; height: 2px; } + .tracker li span { top: 0; left: 0; } +} + + +/* The discount disclosure sits flush against the summary card (measured gap: 0 at + 390, 800 and 1440), so the right rail showed two 1px borders meeting and two + sets of rounded corners pinching against each other. One object, one outline. */ +.checkout-aside .order-summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } +.checkout-aside .promo-disclosure { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } + + +/* =========================================================================== + FABLE 5 — homepage, 1440 and 390. + Three unscoped rules at the tail of this file (.hero-grid, .newsletter, + .section-head) were declared after the responsive blocks, so they won at + every width and the phone got the desktop layout squeezed. .hero-grid + computed to "0px 480px" at 390: the copy column was literally zero wide, + the photograph sat on top of the paragraph, and the document scrolled 508px + inside a 375px viewport. The rules below restate the intended responsive + behaviour at higher specificity, so a later unscoped rule cannot silently + undo the phone layout again. + ======================================================================== */ +@media (max-width: 960px) { + .home-hero .hero-grid { + grid-template-columns: minmax(0, 1fr); + padding-block: var(--s-6) var(--s-5); + } + .section-tight > .newsletter { + grid-template-columns: minmax(0, 1fr); + gap: var(--s-5); + } +} + +@media (max-width: 640px) { + .shell > .section-head { + display: block; + } + .shell > .section-head > p, + .shell > .section-head > .text-link { + margin-top: var(--s-3); + } + .section-tight .newsletter-form input { + width: 100%; + } +} + + +/* The headline broke as "Peptides, without the / mystery.", a 265px orphan + under a 625px line, with the article left dangling. Balanced wrapping only, + no scale change. */ +.hero-copy h1 { + text-wrap: balance; +} + + +/* The trust strip was the only band on the page that ignored the shell: full + bleed 0 to 1425 with its labels centred in quarter-viewport cells, so + nothing in it lined up with the hero, the catalog or the footer. The band + stays full width; its content now sits on the same four columns as the + cards below and reads left like every other line of type. The four cobalt + dots were decoration in a colour this system reserves for interactive and + status, and the vertical rules were dividing cells that no longer exist. */ +.trust-strip { + padding-inline: calc((100% - var(--shell)) / 2); + column-gap: var(--s-5); +} +.trust-item { + justify-content: flex-start; + padding-inline: 0; + border-right: 0; + text-align: left; +} +.trust-dot { + display: none; +} + + +/* Catalog card hierarchy. The buy row was "auto 1fr" with a full-width button, + so a 38px price sat beside a 228px cobalt slab and the four cards drew one + continuous blue bar across the band. The price, which is what a shopper + actually compares, takes the free space; the button sizes to its label. + Mobile keeps the full-width tap target. */ +@media (min-width: 641px) { + .product-card .product-buy-row { + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + } + .product-card .add-button { + width: auto; + padding-inline: var(--s-5); + } +} +.product-card .price { + color: var(--ink); + font-weight: 650; +} + + +/* Every sellable card carried a green IN STOCK pill, so --success, which this + system reserves for reported and verified, meant nothing by the time the eye + reached the testing band. Availability goes quiet and keeps its own outline; + the category label stops competing with the two real links in the card. */ +.product-card .stock-badge.is-in { + color: var(--text-2); + background: transparent; + border: 1px solid var(--line); +} +.product-card .product-category { + color: var(--text-3); +} + + +/* The unavailable control read as an unfinished grey blob: text-3 on + surface-soft with a border-color but no border width to paint it, then + knocked to 0.55 by button:disabled. It is a normal catalog state, so it gets + a deliberate outlined treatment at readable contrast. Still disabled, still + non-interactive, still not sellable. */ +.add-button.is-unavailable, +.pdp-add.is-unavailable { + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + opacity: 1; +} + + +/* The hero proof card printed the measured purity, the measured content and + the unreported sterility in the same cobalt at the same weight, flattening + the one contrast this catalog is built on. Reported values hold; the + unreported row recedes, exactly as the testing band below it already does. */ +.hero-coa-row.is-unreported strong { + color: var(--text-3); + font-weight: 500; +} + + +/* The category band's standfirst floated at x=860, which is not a column edge, + not the centre and not the shell; space-between pushed it right and a 34em + measure stopped it 100px short of the grid. On the grid it starts at the + third card and ends flush with the fourth. */ +@media (min-width: 641px) { + .category-section-head { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--s-5); + align-items: end; + } + .category-section-head > p { + max-width: none; + } +} + + +/* The newsletter was a 1320px saturated cobalt slab: the loudest surface on + the page, louder than any Add to cart, spent on the lowest-value action, in + a colour reserved for interactive and status. Its copy was also the only + text on the page indented off the shell edge, 32px in from every other + heading. It becomes a quiet closing band under a rule, aligned to the page, + and the submit button carries the only cobalt in it. Two states inverted + with the surface: the success message was white on cobalt and the focus + ring was white, both of which would now be invisible. */ +.section-tight > .newsletter { + padding: var(--s-7) 0 0; + color: var(--ink); + background: none; + border-top: 1px solid var(--line); + border-radius: 0; +} +.section-tight > .newsletter > div > h2 { + color: var(--ink); +} +.section-tight > .newsletter > div > p { + color: var(--text-2); +} +.section-tight .newsletter-form input { + border: 1px solid var(--line-strong); +} +.section-tight .newsletter-form button { + color: var(--on-dark); + background: var(--cobalt); +} +.section-tight .newsletter-form button:hover { + color: var(--on-dark); + background: var(--cobalt-deep); +} +.section-tight > .newsletter .newsletter-success { + color: var(--ink); +} +.section-tight > .newsletter :focus-visible { + outline-color: var(--cobalt); +} +@media (max-width: 640px) { + .section-tight > .newsletter { + padding: var(--s-6) 0 0; + } +} + + +/* The set card opened with 90px of empty white between the photograph and the + set name, because its "Catalog set" line is a flex container carrying a 42px + box around a 16px line. The label sits on the title it belongs to. */ +.bundle-body .product-category { + display: block; + min-height: 0; + margin-bottom: var(--s-2); +} + + + +/* =========================================================================== + EDGE SURFACES — the bundle rail, the 404, and long-form pages at 390. + ======================================================================== */ + +/* 1. The cobalt CTA band never collapsed on a phone. `.newsletter` and + `.newsletter-form input` are re-declared in the FABLE 5 block above, which + sits after the 960 and 640 media blocks and therefore wins on source order + at equal specificity. Measured at 390: the grid stayed two columns of 106px + and 164px, "Get the catalog brief." and "Ready to browse?" broke over three + lines, the paragraph ran two words wide for seven lines, and the email + placeholder clipped to "you@example.co". No new values: the original mobile + intent, restated after the rules that were overriding it. */ +@media (max-width: 960px) { + .newsletter { + grid-template-columns: 1fr; + } +} + +@media (max-width: 640px) { + .newsletter { + padding: var(--s-5); + } + + .newsletter-form input { + width: 100%; + } +} + +/* 2. Same dead override, second victim: `.section-head` is re-declared after + the 640 block that sets it to display:block, so every band head with a + supporting sentence stays a two-column flex on a phone and the heading is + crushed into a 45% column. */ +@media (max-width: 640px) { + .section-head { + display: block; + margin-bottom: var(--s-4); + } + + .section-head p, + .section-head .text-link { + margin-top: var(--s-3); + } +} + +/* 3. Three sets, one photograph. The rail shipped the same anonymous pair shot + on all three cards, so the largest element on every card carried nothing + that told the cards apart. Product cards already answer this by labelling + the vial; the set gets a label plate at the frame edge, where the contents + and the set code differ card to card. */ +.bundle-plate { + position: absolute; + right: var(--s-3); + bottom: var(--s-3); + left: var(--s-3); + display: flex; + justify-content: space-between; + align-items: baseline; + gap: var(--s-3); + padding: var(--s-2) var(--s-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.bundle-plate__format { + overflow: hidden; + color: var(--ink); + white-space: nowrap; + text-overflow: ellipsis; +} + +.bundle-plate__code { + flex: none; + color: var(--text-3); +} + +/* 4. The unsellable set now carries the product page's stated reason instead of + a 308px grey slab under a full-weight price. Card density, not buy-box + density. The notice is taller than the 38px buy row and grid items stretch, + so the body becomes the flexible part and the terminal row pins to the card + floor: all three buy rows and the notice sit on one bottom edge instead of + leaving 90px of white under two buttons. */ +.bundle-restricted { + padding: var(--s-3) var(--s-4); +} + +.bundle-restricted p { + margin: 0; + color: var(--text-2); + font-size: 12px; + line-height: 1.55; +} + +.bundle-card { + display: flex; + flex-direction: column; +} + +.bundle-body { + display: flex; + flex: 1; + flex-direction: column; +} + +.bundle-footer, +.bundle-restricted { + margin-top: auto; +} + +/* 5. "Why sets exist": min-height 210 against 119px of content left 43px of + white under all three cards, and the heading column beside them held 55px of + content in a 210px box. The cards size to their text and the row closes up; + the column beside them carries the supporting line and the exit link. */ +.value-grid .value-card { + min-height: 0; +} + +.detail-grid .detail-lede { + max-width: var(--measure); + margin: var(--s-4) 0 var(--s-5); + color: var(--text-2); + font-size: 13px; + line-height: 1.6; +} + +/* 6. The 404's category tiles are the recovery path, and at 390 they sat in a + 940px horizontal scroller inside a 378px frame with no edge fade: tile two + was cut mid-word at the viewport edge and tiles three and four were + invisible. On a dead end all four destinations stay on screen. */ +@media (max-width: 640px) { + .recovery-rail .category-rail { + display: grid; + grid-template-columns: repeat(2, 1fr); + overflow: visible; + margin-right: 0; + padding-right: 0; + } + + .recovery-rail .category-tile { + min-width: 0; + } +} + +/* 7. Long-form pages: the bullet lists sat at the browser default 40px indent + while every heading and paragraph around them started at 0. At 390 that is + 11% of the column, and the eligibility and policy lists visibly wrapped + tighter than the prose they belong to. */ +.article-shell ul, +.article-shell ol { + padding-left: var(--s-5); +} + + +/* The wordmark subtitle uses --text-2, which is correct on white but rendered at + 2.99:1 inside the slate footer. Scoped to the on-dark token there. */ +.site-footer .wordmark-category { color: var(--on-dark-3); } + +/* The cart row head is a two-column flex; at 390 the price was being pushed + 22px past the viewport because the title column had no lower bound and the + price could not shrink. Give the title room to wrap and stop the price + growing. */ +@media (max-width: 640px) { + .cart-row-head { flex-wrap: wrap; gap: var(--s-1) var(--s-2); } + .cart-row-head > div { min-width: 0; flex: 1 1 60%; } + .cart-row-price { flex: 0 0 auto; } + .cart-row-meta { overflow-wrap: anywhere; } +} + +/* The measured type inventory still showed 700 and 900 weights despite no such + declaration existing in this file: they come from the user-agent stylesheet, + which renders strong, b and headings at bold. Inter's variable axis makes 650 + the system's emphasis weight, so normalise the UA defaults to it rather than + leaving two competing bolds on the page. */ +strong, b, h1, h2, h3, h4, h5, h6, th { font-weight: 650; } + +/* ============================================================================ + Accent discipline. --cobalt is defined as interactive-and-status, but it was + also painting every section eyebrow, every card category label and the trust + strip's decorative dots. When the accent marks four non-interactive things per + screen it stops meaning "you can act here", and the real controls lose their + signal. Non-interactive labels move to muted text; cobalt is reserved for + links, buttons, focus and genuine status. + ========================================================================= */ +.eyebrow { color: var(--text-3); } +.product-category { color: var(--text-3); } +.trust-item .status-dot, +.trust-item span[aria-hidden="true"] { background: var(--text-3); } + +/* the dark bands keep a warm eyebrow, which is brand material rather than accent */ +.testing-feature-copy .eyebrow, +.site-footer .eyebrow { color: var(--gold); } + +/* --success means "reported and verified". It was also being spent on inventory + badges, so by the time the eye reached the analytical panel green had already + been used for something unrelated. Stock state is now neutral everywhere, not + just on product cards. */ +.stock-badge.is-in { + color: var(--text-2); + background: transparent; + border: 1px solid var(--line); +} + +/* ============================================================================ + Checkout alignment. Measured at 1440 the shell edge is 60, the eyebrow, h1 + and stepper sat on it, and every piece of form content sat at 85 because the + step card's 24px padding plus 1px border pushed it off the axis. The summary + panel did the same at 1045 against its own 1020 edge. Nothing lined up down + the page. + + The step card was chrome that did no work: it is the only object in that + column, so a background and border on it separated nothing. Removing it puts + legend, hints, labels, inputs and actions on the same 60px axis as the page + heading above them. Steps are separated by rule and rhythm instead. + ========================================================================= */ +.checkout-step { + margin: 0; + padding: 0; + background: transparent; + border: 0; + border-radius: 0; +} +.checkout-step + .checkout-step { margin-top: var(--s-7); } + +/* the summary is a genuinely distinct object, so it keeps its panel, but its + heading now aligns with the panel's own content edge rather than floating */ +.checkout-aside .order-summary { padding: var(--s-5); } + +/* ============================================================================ + Content insets. Measured across the site there were FIVE different distances + from the shell edge to a block of copy: 0 for section headings, 17 inside a + product card, 25 inside a bundle card, 32 inside the newsletter band, and 48 + inside the dark testing band. Nothing shared an axis with anything else, which + is what reads as unprofessional even when the typography is right. + + Two insets now, and only two: + panels (full-bleed bands) --s-6 32 + cards (interaction units) --s-5 24 + ========================================================================= */ +.testing-feature-copy { padding: var(--s-6); } +.newsletter { padding: var(--s-6); } +.product-card-body, +.bundle-body, +.category-tile, +.education-card, +.value-card, +.detail-card, +.review-block, +.choice { padding: var(--s-5); } + +/* ============================================================================ + Touch targets on mobile. The probe found 85 distinct controls under 44px at + 390, most of them inline links rendering 18px tall in the footer and nav. On + a phone those are a miss-tap. Padding is added inside the media query only, so + desktop density is untouched, and negative margin keeps the visual rhythm. + ========================================================================= */ +@media (max-width: 640px) { + .footer-column a, + .footer-contact a, + .mobile-nav a, + .text-link { + display: inline-flex; + align-items: center; + min-height: 44px; + margin-block: calc(var(--s-3) * -1); + } + .footer-column li + li { margin-top: var(--s-1); } + .remove-item { display: inline-flex; align-items: center; min-height: 44px; margin-block: calc(var(--s-3) * -1); } + .search-input { height: 44px; } +} + +@media (max-width: 640px) { + /* the drawer cross-sell action and the quantity steppers both sat under the + touch floor; the steppers keep their small visual box and gain hit area */ + .drawer-cross-add { min-height: 44px; } + /* same reason as above: sizing the button past its grid cell breaks the box. + Hit area comes from ::after, which is already 44px. */ + /* .quantity-control is a 34px/1fr/34px grid at 48px tall. Sizing its buttons + to 44px made them wider than their own cells, the same defect that broke + .mini-quantity. Hit area comes from the ::after, which is already 44px. */ + .quantity-control button { min-width: 0; min-height: 0; } +} + +/* ============================================================================ + The last values off the grid were not ours. Paragraphs and lists inherit a + 1em block margin from the user-agent stylesheet, which at a 15px base resolves + to 15px and sits between --s-3 and --s-4. Anywhere a rule did not set margin + explicitly, vertical rhythm fell off the scale. Normalised to --s-4. + ========================================================================= */ +p, ul, ol { margin-block: var(--s-4); } +p:first-child, ul:first-child, ol:first-child { margin-block-start: 0; } +p:last-child, ul:last-child, ol:last-child { margin-block-end: 0; } + +/* button interiors were 14px and 6px, both off the scale */ +.button { padding-inline: var(--s-4); } +.icon-button, .drawer-close { padding-inline: var(--s-2); } + + + +/* ============================================================================ + FOOTER — the operator record. + + Measured before: the footer's only contact block was a fourth sub-list inside + the brand cell at 12px/on-dark-2, identical to every navigation link beside + it, and the store's legal identity and location lived in the 9px mono + copyright line at the very bottom, the smallest and faintest text on the + page. A catalog that sells verifiability was hiding the two facts that make + it verifiable: who runs it and who tests it. + + The record is a labelled band under its own rule, on the same grid template + as .footer-grid so its four cells land on the identical x-axes as the + navigation above (60, 482, 797, 1113 at 1440). No new type: dt reuses the + 9px mono column-heading treatment, dd reuses the 12px link body size. The + first dd of each cell is --on-dark (the fact), the second is --on-dark-2 + (the qualifier), which gives each cell a two-level read without a new size. + Contrast on --slate: 9px mono on-dark-3 5.87:1, 12px on-dark-2 9.42:1. + + Narrow widths are restated inside this block, after the base rule, so this + append cannot leak a desktop grid onto a phone. + ========================================================================= */ +.footer-record { + display: grid; + grid-template-columns: 1.4fr repeat(3, 1fr); + gap: var(--s-7); + margin: var(--s-7) 0 0; + padding-top: var(--s-5); + border-top: 1px solid rgba(243, 234, 218, 0.18); +} + +.footer-record > div { + min-width: 0; +} + +.footer-record dt { + margin: 0 0 var(--s-3); + color: var(--on-dark-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.footer-record dd { + margin: 0; + color: var(--on-dark-2); + font-size: 12px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.footer-record > div > dd:first-of-type { + color: var(--on-dark); +} + +.footer-record dd a { + color: inherit; + text-decoration: underline; + text-underline-offset: 2px; +} + +@media (max-width: 960px) { + .footer-record { + grid-template-columns: repeat(2, 1fr); + gap: var(--s-6) var(--s-4); + } +} + +/* the support address is the one control in the record, so it takes the same + 44px hit area the rest of the footer links were given at this width */ +@media (max-width: 640px) { + .footer-record dd a { + display: inline-flex; + align-items: center; + min-height: 44px; + margin-block: calc(var(--s-3) * -1); + } +} + + + +/* The terminal line was flex justify-content: space-between across the full + 1320px shell, which put 724px of empty slate between "© 2026 OVO Labs LLC" + and the medical-advice disclaimer. At 9px mono the two fragments were too far + apart to read as one statement, and right-aligning the disclaimer at the far + edge is the pattern that says "boilerplate, ignore me" about the single most + consequential sentence in the document. Grouped left on the shell axis like + every other line of type on the page. Scoped above 640 because the mobile + rule already sets this row to display: block and must keep winning. */ +@media (min-width: 641px) { + .footer-bottom { + justify-content: flex-start; + gap: var(--s-6); + } +} + + + +/* The 44px touch-target block above sets .footer-column a to display: + inline-flex, which makes the footer links inline-level. Measured at 390 they + stopped stacking: "Testing & COAs Lot records" shared a line, "Learn FAQ + About OVO Labs" shared a line, and because the template joins the anchors + with no whitespace between them two product links rendered as the single + string "BPC-157 10 mgTB-500 10 mg" with no space at all. display: flex is + still block-level, so each link takes its own line again while keeping the + align-items and min-height from that rule: measured back to one link per row + at a 44px hit height. */ +@media (max-width: 640px) { + .footer-column a, + .footer-contact a { + display: flex; + } +} + + + +/* ============================================================================ + Card testing strip. Measured at 1440 every card in the band printed the same + sentence, so ten cards each spent a bordered 42px strip on a line that could + not be compared against anything. The strip now names the lot, so it carries + the one value in the block that differs card to card. + ========================================================================= */ +.product-card .testing-micro-lot { + color: var(--text-2); + font: 400 10px/1.4 var(--mono); +} + +/* One hairline, not two. The seam that matters is description to record, and + the s-4 gap under the strip already separates the record from the buy row, + so the lower rule was fencing a 42px band inside a 262px card. Scoped at + both widths because the base rule sets border-block, and an unscoped rule + appended here would land after the responsive blocks. + Measured: strip 42px to 33px at 1440, 60px to 50px at 390. */ +@media (min-width: 641px) { + .product-card .testing-micro { + padding: var(--s-2) 0 0; + border-bottom: 0; + } +} +@media (max-width: 640px) { + .product-card .testing-micro { + padding: var(--s-2) 0 0; + border-bottom: 0; + } +} + + + +/* ============================================================================ + The card's category line. Eight of the ten catalog cards carried an "In + stock" chip, so the one card that says "Only 4 left" and the two that say + "Not offered" had to compete with a chip that appears almost everywhere and + rules nothing out. In stock is the default state, so it stops printing on + the card and the exceptions read as exceptions. Nothing else changes: + stockBadge() is only ever called from the product card, the product page + states availability in its own buy box, and the two unsellable entries keep + their chip and their disabled control. + + The line then reserves s-4h, the chip's own height, so titles land on one + baseline across a row whether a chip is present or not. Measured at 1440: + boxes of 12px and 18px in the same row, now 20 and 20. + ========================================================================= */ +.product-card .stock-badge.is-in { + display: none; +} + +@media (min-width: 641px) { + .product-card .product-category { + min-height: var(--s-4h); + } +} +@media (max-width: 640px) { + .product-card .product-category { + min-height: var(--s-5); + } +} + + + +/* ============================================================================ + Price. It is the value a buyer compares across a row, and at 16px it was the + same size as the product name directly above it and the name printed on the + vial label above that, so it was the third instance of identical weight in + one card. It takes --t-sub, one step up, and the four prices now read as a + column down the left of the band before the eye reaches the buttons. + Measured at 1440: $100 ink 85..131 at 20px against a button starting at 234. + Mobile stops at 16 because the 2-up card has 125px of content width. + ========================================================================= */ +@media (min-width: 641px) { + .product-card .price { + font-size: 20px; + letter-spacing: -0.02em; + } +} +@media (max-width: 640px) { + .product-card .price { + font-size: 16px; + } +} + + + +/* ============================================================================ + Category tiles. Measured at 1440: label ink ended at x=220 and the arrow sat + at x=337, so 117px of empty tile sat between them in every one of the four, + and 157px in the last. The tile is now a two-line block, name and arrow on + the first line, the molecules in that category on the second, so the width + is filled by content rather than by a gap. Tile 1 fills 214px of its 262px + content width where it filled 135px. + + Safe to leave unscoped: no media block sets display or flex-direction on + .category-tile. The 640 block only sets min-width and scroll snapping for + the horizontal rail, and the 404 recovery rail only sets min-width, so both + were rendered and measured at 390 with no horizontal overflow. + ========================================================================= */ +.category-tile { + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: flex-start; + gap: var(--s-2); +} + +.category-tile .category-tile-head { + display: flex; + gap: var(--s-2); + align-items: baseline; + justify-content: flex-start; + margin-top: 0; + font-size: 13px; +} + +.category-tile .category-tile-members { + margin-top: 0; + color: var(--text-2); + font-size: 12px; + line-height: 1.45; +} + + + +/* =========================================================================== + FABLE 5 - the first screen, measured at 1440 and 390. + + The proof card is no longer a sticker on the photograph. It is a record in + the copy column, so it needs the absolute positioning, the 200px width, the + translucent plate and the drop shadow taken back off it. --measure resolves + against a 16px context here exactly as it does on the hero paragraph, so the + card's right edge lands on 604 at 1440, which is the paragraph's right edge. + Scoped to .hero-copy so it also outranks the @media (max-width: 640px) + display:none that used to delete the page's central claim on a phone. + ======================================================================== */ +.hero-copy .hero-coa-card { + position: static; + display: block; + width: 100%; + max-width: var(--measure); + margin-top: var(--s-6); + padding: var(--s-5); + font-size: 16px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-md); + box-shadow: none; + text-decoration: none; +} + +/* it is a link to the testing records, so it says so on hover */ +.hero-copy .hero-coa-card:hover { + border-color: var(--cobalt); +} + +.hero-copy .hero-coa-head { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: var(--s-2) var(--s-4); + align-items: baseline; + padding-bottom: var(--s-3); + border-bottom: 1px solid var(--line-strong); +} + +/* --success means reported and verified analytical status, which is precisely + what this tag states. Same treatment as .document-tag.is-reported in the dark + band 1000px below, so the hero and the band make one claim in one language. + #147453 on #e9f6f1 is 5.1:1. */ +.hero-copy .hero-coa-tag { + flex: 0 0 auto; + padding: var(--s-1) var(--s-2); + color: var(--success); + background: var(--success-tint); + border-radius: var(--r-sm); +} + + + +/* A measured number means nothing without the method that produced it, and the + card had room for neither at 200px. Three columns: the field, the method, and + the value flush right, which is the same left-label right-result reading the + .document-row grid in the dark band uses. The label column is --s-9 so the + three rows share one axis instead of each row sizing to its own label. */ +.hero-copy .hero-coa-row { + display: grid; + grid-template-columns: var(--s-9) minmax(0, 1fr) auto; + gap: var(--s-4); + align-items: baseline; + margin: 0; + padding: var(--s-3) 0; + border-top: 0; + border-bottom: 1px solid var(--line); +} + +.hero-copy .hero-coa-row:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +/* The measured figures were 10px cobalt inside a card that is itself a link, so + the numbers read as link text and the unreported row read as the same kind of + fact. At 13px the values are legible; reported holds in ink at 650, the + unreported row recedes to text-3 at 500 with its method, which is what + .document-row does 1000px below. text-3 on --surface is 5.2:1. */ +.hero-copy .hero-coa-row strong { + font-size: 13px; + text-align: right; +} + +.hero-copy .hero-coa-row.is-reported strong { + color: var(--ink); + font-weight: 650; +} + +.hero-copy .hero-coa-row.is-unreported strong, +.hero-copy .hero-coa-row.is-unreported span { + color: var(--text-3); + font-weight: 500; +} + +/* Below 375 the three columns cost the method its line. It drops under the + field rather than being dropped from the page. Measured at 320: rows 60px, + card 296x270, no horizontal overflow. */ +@media (max-width: 374px) { + .hero-copy .hero-coa-row { + grid-template-columns: minmax(0, 1fr) auto; + gap: var(--s-1) var(--s-4); + } + .hero-copy .hero-coa-method { + grid-column: 1; + grid-row: 2; + } +} + + + +/* The two hero columns were centred against each other, so at 1440 the copy + block started 71px below the photograph's top edge and finished 71px above + its bottom: two rectangles floating in one band with no shared line anywhere. + Stretched, they open and close together, 186 to 705. The photograph keeps + object-fit: cover, so the extra height crops rather than distorts. + + Scoped to the two-column widths on purpose. Below 961 the hero is a single + column and an unscoped alignment rule appended here would reach it. */ +@media (min-width: 961px) { + .home-hero .hero-grid { + align-items: stretch; + } +} + + + +/* The strip now carries four checkable facts rather than four slogans, so it + reads as a spec block: mono term above the value, the way the CoA head and + the document rows are set. Term is text-3 at 9px (5.2:1 on --surface), value + is ink at 12px 500 rather than 650, because four bold lines across the shell + competed with the buttons directly above them. The band keeps the shell + alignment it was given, so its four terms sit on 60, 396, 732 and 1068 at + 1440, which are the four product-card edges below. */ +.trust-strip .trust-item { + display: grid; + gap: var(--s-1); + align-content: center; +} + +.trust-strip .trust-label { + color: var(--text-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.trust-strip .trust-item strong { + font-size: 12px; + font-weight: 500; + color: var(--ink); +} + + + +/* =========================================================================== + SET CARD: the rail stops leading with a photograph it cannot vary. + ======================================================================== */ +/* Measured at 1440: every set card was 596px tall to carry four lines, and the + 210px frame at the top of all three was the same file, the same crop and the + same shadow, three times across the row and three times down the phone. The + catalog grid already solves the one-photograph problem by labelling the vial + inside the frame; a set has no vial of its own to label, so it stops + competing. The photograph becomes a 96px reference square and the contents + list, which is the only part that differs set to set, becomes the widest + block on the card. */ +.bundle-head { + display: flex; + gap: var(--s-4); + align-items: center; +} + +.bundle-thumb { + flex: none; + width: 96px; + height: 96px; + overflow: hidden; + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.bundle-thumb img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; +} + +/* One photograph, three framings. Cover-fitting a 1536x1024 source into a + square leaves only 48px of horizontal slack, so object-position alone moved + nothing; the scale step is what separates the crops. Wide with the light + bars, the pair centred, then tight on a single labelled vial. */ +.bundle-grid > .bundle-card:nth-child(3n+1) .bundle-thumb img { object-position: 24% 50%; transform: scale(1.15); } +.bundle-grid > .bundle-card:nth-child(3n+2) .bundle-thumb img { object-position: 66% 50%; transform: scale(1.3); } +.bundle-grid > .bundle-card:nth-child(3n+3) .bundle-thumb img { object-position: 50% 50%; transform: scale(1.55); } + +/* The set code was carried on a plate over the photograph, where it sat beside + a format string that duplicated the contents list underneath it. The code + belongs on the label line, at the size the rest of the catalog labels use. */ +.bundle-body .bundle-eyebrow { + display: flex; + justify-content: space-between; + gap: var(--s-3); + margin-bottom: var(--s-1); +} + +.bundle-code { + flex: none; + color: var(--text-3); +} + +/* The out-of-stock state, given the same shape as the in-stock one. + It was a 114px prose slab, which stretched the row to the tallest card and + left 92px of white between the contents list and the buy row on the two sets + that can be bought. Same terminal row, same price anchor, same left edge: the + solid cobalt control is answered by an outlined plate, not by an absence. + Neutral grey, because this is a position, not a shortage and not a status, + and the same grey the disabled catalog control already uses. Measured 5.33:1 + for the sentence and 16.6:1 for the label on surface-soft. */ +.bundle-unavailable { + display: flex; + gap: var(--s-3); + align-items: center; + min-height: 38px; + margin: 0; + padding: var(--s-2) var(--s-3); + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + border-radius: var(--r-sm); + font-size: 12px; + line-height: 1.4; +} + +.bundle-unavailable__label { + flex: none; + color: var(--ink); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +@media (max-width: 640px) { + .bundle-unavailable { + min-height: 44px; + } +} + + +/* =========================================================================== + GUIDE CARDS: the card becomes the interaction it is drawn as. + ======================================================================== */ +/* Three bordered boxes whose only action was a link on the last line, in 210px + of card carrying 147px of content. The 63px left over was also the only thing + separating the summary from the link, because `.education-card p` has its + bottom margin zeroed further down the sheet: the gap was a byproduct of the + min-height rather than a decision. The border is a promise of a target, so the + whole card becomes the target; the gap is authored; the card sizes to its + content. Grid items still stretch, so the row stays level and the three links + keep one baseline. Measured 221px to 197px at 1440. */ +.education-card { + position: relative; + min-height: 0; + transition: border-color 0.12s ease; +} + +.education-card:hover { + border-color: var(--line-strong); +} + +.education-card .text-link { + margin-top: var(--s-5); +} + +.education-card .text-link::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; +} + +/* The guide eyebrow was inheriting `.education-card p` at 13px, so the same + .product-category component rendered 9px on a product card and 13px here, + with 24px under it. Same component, same size, sitting on the title it + belongs to. */ +.education-card .product-category { + margin-bottom: var(--s-2); + color: var(--text-3); + font-size: 9px; +} + + +/* =========================================================================== + MOBILE, 390. 1. The two header rows were never 12 apart. + `.header-main { gap: var(--s-3) }` is declared in the 640 block, and + `.header-main { gap: var(--s-5) }` is declared unscoped after it, so the + phone header shipped with the desktop gap. Measured sticky height 129 on an + 844 viewport. The mobile intent, restated after the rule that beat it. + ======================================================================== */ +@media (max-width: 640px) { + .header-main { + gap: var(--s-3); + } +} + + + +/* =========================================================================== + MOBILE, 390. 2. The hero pair was stacked for no measured reason. + Two full-width buttons cost 104px of the band that separates the headline + from the first product. Side by side each column is 177 at 390 and the + longest label on the site, "View testing & COAs", measures 175: no wrap, no + clip, checked down to 320. One 46px row instead of two. + ======================================================================== */ +@media (max-width: 640px) { + .hero-actions { + grid-template-columns: 1fr 1fr; + gap: var(--s-3); + } + + .hero-actions .button { + width: 100%; + padding-inline: var(--s-3); + } +} + + + +/* =========================================================================== + MOBILE, 390. 3. The catalog band changes treatment rather than stacking. + + Two columns at 390 is a 175px card, and the card inset is locked at --s-5, + so 48 of those 175 are padding and the text column is 125. Measured on every + card in the grid: the description clipped to 2 of 4 lines (70 into 35), the + category label and the stock badge could not share a line so the eyebrow ran + 40px tall, the testing block stacked to 60, and the buy row stacked a 23px + price above a 125px cobalt slab. 519px of card for 175px of width: a phone + screen held 1.63 of them. + + On its side the same content needs no truncation. The photograph becomes a + 96px marker, which is all it was doing at 173 (every card carries the same + vial in the same light and only the plate differs), and the body gets 220px. + Description whole, category and badge on one line, testing status on one + line. 255px per card, 3.31 per screen, and the band is the same height it + was: catalog 2683 to 2692. + ======================================================================== */ +@media (max-width: 640px) { + .product-grid { + grid-template-columns: 1fr; + } + + .product-grid > .product-card { + flex-direction: row; + align-items: stretch; + } + + .product-grid > .product-card > .product-image-wrap { + flex: 0 0 var(--s-9); + aspect-ratio: auto; + border-bottom: 0; + border-right: 1px solid var(--line); + } + + .product-grid > .product-card > .product-card-body { + min-width: 0; + } + + .product-grid > .product-card .product-image-label { + width: 96%; + } + + /* the badge is the label's status, not a second row */ + .product-grid > .product-card .product-category { + display: flex; + gap: var(--s-2); + align-items: center; + min-height: 0; + margin-bottom: var(--s-3); + } + + .product-grid > .product-card .product-description { + min-height: 0; + -webkit-line-clamp: 3; + } + + .product-grid > .product-card .testing-micro { + display: flex; + justify-content: space-between; + align-items: center; + } + + .product-grid > .product-card .testing-micro a { + margin-top: 0; + } +} + + + +/* =========================================================================== + MOBILE, 390. 4. The row card's buy row, with a floor under it. + Price and button need 156 on one line. The row card gives the body 220 at + 390 and 190 at 360, so both fit and the button sizes to its label instead of + painting a full-width bar. At 320 the body is 150 and the price column was + measured crushing to 9px, so anything under 360 keeps the stacked row. Both + bounds are on this query: it cannot reach desktop. + ======================================================================== */ +@media (min-width: 360px) and (max-width: 640px) { + .product-grid > .product-card .product-buy-row { + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + } + + .product-grid > .product-card .add-button { + width: auto; + padding-inline: var(--s-5); + } +} + + + +/* =========================================================================== + MOBILE, 390. 5. The category band, all four destinations on screen. + The rail is 940px of tiles inside a 378px frame: measured, 3 of the 4 + research areas were cut at the viewport edge or past it, and the only cue + was a scroll gesture nested inside the page scroll. This file already made + this call for the same four-tile rail on the 404. Same tiles, same count, + same answer, and a 2x2 block is the one band on this page that is not + another full-width stack. + ======================================================================== */ +@media (max-width: 640px) { + .category-rail { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + overflow: visible; + margin-right: 0; + padding-right: 0; + } + + .category-tile { + min-width: 0; + } +} + + + +/* =========================================================================== + MOBILE, 390. 6. The learning band is a list, not three boxes. + The card is not the interaction here: the article is inert markup and the + only control is the text link inside it. At 390 the treatment cost 48px of + the measure (316 instead of 366) and a 210px floor per card, three times in + a row, to separate items that a full-width stack already separates. Rule and + rhythm instead, the same trade the checkout step made. + ======================================================================== */ +@media (max-width: 640px) { + .education-grid { + gap: 0; + } + + .education-grid > .education-card { + min-height: 0; + padding: var(--s-5) 0; + background: none; + border: 0; + border-radius: 0; + } + + /* the card floor used to hold the link off the paragraph; the gap does now */ + .education-grid > .education-card > div { + margin-bottom: var(--s-3); + } + + .education-grid > .education-card + .education-card { + border-top: 1px solid var(--line); + } +} + + + +/* =========================================================================== + MOBILE, 390. 7. The catalog toolbar was a border around two fields. + Measured at 390: the page heading, the filter chips and every product card + sit on the shell edge at 12, and the collection search sat at 25, because + the toolbar's own 12px inset and 1px border pushed it off that axis. Two + insets only is the rule this file already set, and a panel around controls + that carry their own field chrome separates nothing. 118 to 92, and the + search returns to the axis every other object on the page uses. + ======================================================================== */ +@media (max-width: 640px) { + .collection-toolbar { + padding: 0; + background: none; + border: 0; + border-radius: 0; + } +} + +/* ============================================================================ + Trust marks. Every claim here is bound to data the catalog actually holds: + the lot's own purity figure and method, its report date, the stated contract + laboratory, the real cold-chain option. Green is used only where it means + verified, which is the rule the rest of the system already follows. + ========================================================================= */ + +/* Trust marks read as badges, not prose. Six sentences at the decision point is + a wall the buyer skips; six short pills are scannable in about a second and + carry the same facts. The purity figure is still that lot's own number. */ +.pdp-assurances { + display: flex; + flex-wrap: wrap; + gap: var(--s-2); + margin: var(--s-5) 0 0; + padding: 0; + list-style: none; +} +.pdp-assurances li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + padding: var(--s-2) var(--s-3); + color: var(--ink); + background: var(--success-tint); + border-radius: var(--r-pill); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.pdp-assurances li::before { content: none; } +.pdp-assurances .i-check { flex: 0 0 auto; color: var(--success); } + +/* verified badge on the analytical panel */ +.testing-verified { + display: inline-flex; + gap: var(--s-2); + align-items: center; + margin: var(--s-4) 0 0; + padding: var(--s-2) var(--s-3); + color: var(--success); + background: var(--success-tint); + border-radius: var(--r-pill); + font-size: 12px; +} +.testing-verified strong { font-weight: 650; } +.testing-verified span { color: var(--ink); } + +/* checkout assurances, directly under the order total */ +.assurance-row { + display: flex; + flex-wrap: wrap; + gap: var(--s-2) var(--s-4); + margin: var(--s-4) 0 0; + padding: var(--s-4) 0 0; + border-top: 1px solid var(--line); + list-style: none; +} +.assurance-row li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + color: var(--text-2); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.assurance-row svg { flex: 0 0 auto; color: var(--text-3); } + + +/* Same class of defect anywhere a button is block-level and sized by min-height. */ +/* Block-level buttons still centre their label from min-height, but the grid + must flow in COLUMNS. With the inherited row flow, a button written as + `Label arrow` has two grid items and the arrow was laid out on a + second row: "Shop peptides" measured 49px tall against its own 46px + min-height, with the label at y+3 and the arrow at y+28.5. Column flow puts + them back on one line and restores the 46px box. Auto columns still stretch, + so single-label buttons wrap exactly as before. */ +.button, .checkout-cta, .add-button, .pdp-add, .drawer-cross-add { + display: inline-grid; + grid-auto-flow: column; + place-items: center; +} +.checkout-cta { display: grid; } + +/* ============================================================================ + Trust marks, final form. They sit directly under the Add to cart button, + which is where a buyer's eye already is, rather than below the spec tiles + where the previous version lived. Four marks maximum, one short phrase each, + scannable without reading. Quiet rather than loud: a check in verified green + against muted text, no filled pill, because a row of saturated badges reads + as marketing and this catalog's whole argument is that it is not. + ========================================================================= */ +.pdp-marks { + display: flex; + flex-wrap: wrap; + gap: var(--s-2) var(--s-4); + margin: var(--s-4) 0 0; + padding: 0; + list-style: none; +} +.pdp-marks li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + color: var(--text-2); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.pdp-marks li::before { content: none; } +.pdp-marks .i-check { flex: 0 0 auto; color: var(--success); } + +/* the old block is gone from the markup; keep the selector inert */ +.pdp-assurances { display: none; } + +/* The card's testing line now leads with the number a buyer scans for. The check + is verified-green; the text stays muted so the row does not compete with the + product name above it. */ +.testing-micro-lot { display: inline-flex; gap: var(--s-2); align-items: center; } +.testing-micro-lot .i-check { flex: 0 0 auto; color: var(--success); } + + + +/* =========================================================================== + CHECKOUT INSPECTION FIXES + Everything here is either non-layout, scoped to .checkout-main, or inside its + own media query, so appending after the responsive blocks is safe at 390. + ======================================================================== */ + +/* The global button:disabled knocks opacity to .55, and every .step-jump is + disabled markup, so the whole stepper — including the CURRENT step — painted + cobalt #005eb8 at 55% over white (~rgb(115,166,216)), a value outside the + locked palette, and the active step read as dead chrome. The computed-style + contrast probe could not see it because the declared colour never changed. */ +.step-jump:disabled { cursor: default; opacity: 1; } + +/* .checkout-step gave up its white card further up this file, which left + .review-block's var(--bg) fill identical to the page (both rgb(246,247,249)) + with no border: 24px of padding buying nothing, four unboxed fragments, and + an Edit button stranded 880px from its heading. */ +.review-block { + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-md); +} + +/* Same root cause on the inputs: var(--bg) fields on a var(--bg) page. Only the + editable ones are restored; readonly card fields keep --surface-soft. + background-color, not the background shorthand, or the select caret (drawn + with background-image gradients) is wiped. */ +.checkout-main .field input:not([readonly]), +.checkout-main .field select { background-color: var(--surface); } + +/* The error

was emitted after the note

, so on Phone the red line landed + 49.6px below its input behind two lines of mono and read as part of the note. + Label and input keep order 0; the error now precedes the note. */ +.checkout-main .field { display: flex; flex-direction: column; } +.checkout-main .field-error { order: 1; } +.checkout-main .field-note { order: 2; } + +/* Locked placeholders sized for data they can never take: 456px holding 162px + of card number, 220px holding three bullets. max-width only shrinks, so this + cannot overflow at any width. */ +.checkout-main #cardNumber { max-width: 24ch; } +.checkout-main #cardExpiry, +.checkout-main #cardCvc { max-width: 12ch; } + +/* Lot segments are unbreakable units, so the line wraps between them instead of + inside the reported date, and no longer needs to be nowrap to stay readable. */ +.summary-line .lot-line .lot-nb { white-space: nowrap; } + +/* Delivery method name and its price sat 762px apart across a 928px card. */ +@media (min-width: 961px) { + .choice-body { max-width: var(--measure); } +} + +/* The 640px rule made the whole lot line unbreakable, which overflowed the + receipt card by 61px and clipped the record link. The segments above carry + that job now, so the line itself may wrap again. */ +@media (max-width: 640px) { + .summary-line .lot-line { white-space: normal; } +} + + +/* ============================================================================ + Cart drawer + cart page. Every number below was read off rendered 1440x900 + and 390x844 captures, not off the source. + ========================================================================= */ + +/* renderCart() sets .cart-count[hidden], but the class's own display:grid + outranks the UA [hidden] rule, so an empty cart shipped an 18x18 cobalt badge + reading "0" in the header at both widths. */ +.cart-count[hidden] { display: none; } + +/* .checkout-cta.is-blocked used opacity:0.45, which composites the cobalt fill + to rgb(140,183,223) under its white 13px/650 label: 2.12:1. Contrast tooling + reads background-color (6.30:1) and never sees the composite, which is why + this passed 30 combos. Explicit tokens instead, and the pointer says no. */ +.checkout-cta.is-blocked { + opacity: 1; + color: var(--on-dark); + background: var(--text-2); + cursor: not-allowed; +} + +/* Empty drawer: the footer holds nothing but the note, and the 16px top margin + written to clear View cart became stray padding, 41px above the note against + 24px below it. */ +.cart-footer > .cart-terminus:first-child { margin-top: 0; } + +/* One line in the drawer at 1440: the last suggestion row ends at y503 and the + tinted band at y590.5, so 63.5px of tint sat empty after the band's own 24px + of padding. The band must keep flex:1 or a white gap opens above the pinned + footer, so the rows absorb the slack instead of one dead pocket doing it. + Component-scoped, not width-scoped: at 390 the same slack is 7.5px and the + rows grow 60px to 75.4px instead of 60px to 89.4px. */ +.drawer-cross { display: flex; flex-direction: column; } +.drawer-cross-row { flex: 1 1 auto; } + +/* Four lines at 1440: .cart-items scrollHeight 622 against clientHeight 521, + and the cross-sell heading's text box (y584 to y597) is cut by the scroll + edge at y590.5 with nothing saying the region continues, so a hairline plus + a half-glyph reads as a section that failed to render. The fade is drawn only + when there are cart lines, so the empty drawer keeps its clean edge. */ +.cart-drawer .cart-footer { position: relative; } +.cart-drawer .cart-items:has(.cart-item) + .cart-footer::before { + position: absolute; + right: 0; + bottom: 100%; + left: 0; + height: 20px; + content: ""; + background: linear-gradient(rgba(12, 24, 38, 0), rgba(12, 24, 38, 0.09)); + pointer-events: none; +} + +/* Cart page closing actions at 1440. In a 928px space-between row Continue + shopping (144.6x38) sat at x60 and Clear cart (46.5x15, 10px underlined) at + x941.5, 736.9px apart, and Clear cart, which empties the whole cart, wore the + exact .remove-item treatment each line's own Remove wears. Pair them and give + the destructive one its own weight. Wrapped in its own min-width query: the + narrow layout already renders this row at 12px/44px and is untouched. */ +@media (min-width: 961px) { + .cart-actions { justify-content: flex-start; gap: var(--s-5); } + .cart-actions .remove-item { font-size: 12px; } +} + +/* 390 cart page: .cart-row-image is a block link stretched by its grid row to + 84x157.3 around an 84x95 thumbnail, so 62.3px of the link, 40% of it, was + invisible clickable area under the image. Own max-width query. */ +@media (max-width: 960px) { + .cart-row-image { align-self: start; } +} + + + +/* ============================================================================ + Control states. Everything below is a state, a colour or a single scoped + component rule - nothing here changes page layout at any width. + ========================================================================= */ + +/* Selected and hovered filters resolved to the identical computed value + (rgb(0,94,184), weight 400, transparent background on both), so hovering any + category made two rows read as selected at once. Selection now carries + weight; hover moves to --ink instead of borrowing the selection colour. */ +.filter-button[aria-pressed="true"] { color: var(--cobalt); font-weight: 650; } +.filter-button:hover:not([aria-pressed="true"]) { color: var(--ink); } + +/* The card link is a stretched flex item: a 115px label in a 379px box, so its + focus ring drew a 385px rectangle with 264px of empty space inside it. */ +.education-card > .text-link { align-self: flex-start; } + +/* .empty-state is the full-width catalog empty state and carries 64px of block + padding. Reused inside the 320px suggestion popover it produced a 254px panel + holding 82.5px of text - 67.5% padding. */ +.search-results .empty-state { padding: var(--s-5) var(--s-4); } + +/* The Cmd-K hint is meaningless once the field holds a query, and it sat 11px + from the browser's own search-clear control. The clear control keeps working. */ +.search-input:not(:placeholder-shown) ~ .search-shortcut { display: none; } + +/* Stepper glyphs and the quantity input inherited the user-agent buttontext + black (#000000, off-palette) while the value beside them is --ink #101317. */ +.mini-quantity button, +.quantity-control button, +.quantity-control input { color: var(--ink); } + +/* .field input:focus sets outline:none and substitutes a 2px --cobalt-tint + ring that measures 1.14:1 against the white field. On a field in the error + state the border stays --danger, so that invisible ring is the only focus + signal there is. Restore the ring the rest of the site already uses. */ +.field input:focus-visible, +.field select:focus-visible, +.promo-input-row input:focus-visible, +.collection-search:focus-visible, +.search-input:focus-visible { + outline: 2px solid var(--cobalt); + outline-offset: 2px; +} + +/* The stylesheet contained zero :active rules across 5,600 lines. Buttons lift + 1px on hover and then acknowledge the press with nothing at all. */ +.button:active, +.add-button:active, +.pdp-add:active, +.drawer-cross-add:active, +.checkout-cta:active, +.icon-button:active { transform: translateY(1px); } + + + +/* ============================================================================ + States you only reach by interacting. Each rule below was measured broken + before it was written; the layout rules are inside their own media query so + they land after the responsive blocks without touching desktop. + ========================================================================= */ + +/* The header search reused the page-scale .empty-state, so the no-match panel + rendered 320x254 with only 120px of copy inside 128px of padding: taller than + the 320x155 two-result panel it replaces, centred against left-aligned rows, + and drawing a second border 1px inside the dropdown's own. */ +.search-results .empty-state { + padding: var(--s-4h) var(--s-4); + text-align: left; + border: 0; + border-radius: 0; +} + +/* An empty cart stretched .cart-empty across the full 673px scroll region for + 122px of content (81.8% blank). With suggestions rendered underneath it, the + region sizes to its content instead of centring in a void. */ +.cart-items:has(.cart-empty) { align-content: start; } +.cart-empty.is-compact { min-height: 0; padding-block: var(--s-6); } + +/* Two .field.is-half cells stretch to equal height, so the field carrying a + note pushed its error 41.6px below its neighbour's and put two lines of mono + copy between the input and its own error. Error sits under the control it + describes; the note follows it. */ +.field { display: flex; flex-direction: column; } +.field > .field-error { order: 1; } +.field > .field-note { order: 2; } + +@media (max-width: 640px) { + /* min-height:44px with margin-block:-12px put 49px menu rows on a 29px pitch: + each row overlapped the next by 20px, each row's bottom divider was drawn + inside the row below it, the last row hung 12px outside .mobile-nav, and + the bottom 41% of every row hit-tested to the next link. These rows already + clear 44px from their own padding, so they need no help. */ + .mobile-nav a { min-height: 0; margin-block: 0; } + + /* Same rule against 18px footer links: 44px boxes on a 32px pitch overlapped + by 12px, so the bottom of each link tapped the one beneath it. Keeping the + 44px target and dropping the negative margin gives a clean 44px pitch. */ + .footer-column a { margin-block: 0; } + + /* The simulated printed label is sized to 95% of the 96px card thumbnail at + this width, so the catalog code ran off the vial onto the countertop and + the name truncated mid-word. It is aria-hidden decoration and the card body + states name, strength and code 8px to its right. */ + .product-grid > .product-card .product-image-label { display: none; } +} diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.js b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.js new file mode 100644 index 0000000..f4cd6df --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/base.js @@ -0,0 +1,3742 @@ +(() => { + "use strict"; + + const body = document.body; + const root = document.querySelector("#site-root"); + if (!root) return; + + const BASE = body.dataset.base || "."; + const PAGE = body.dataset.page || "home"; + const PRODUCT_SLUG = body.dataset.product || ""; + const CART_KEY = "ovo-labs-demo-cart-v2"; + const RECENT_KEY = "ovo-labs-recent-products-v1"; + const ORDER_KEY = "ovo-labs-orders-v1"; + const CHECKOUT_KEY = "ovo-labs-checkout-draft-v1"; + const MAX_QUANTITY = 10; + + const CHECKOUT_STEPS = [ + { key: "contact", label: "Contact" }, + { key: "shipping", label: "Shipping" }, + { key: "delivery", label: "Delivery" }, + { key: "payment", label: "Payment" }, + { key: "review", label: "Review" }, + ]; + + const SHIPPING_METHODS = [ + { id: "standard", name: "Standard", detail: "3 to 5 business days", note: "Insulated mailer", price: 12 }, + { id: "express", name: "Express", detail: "2 business days", note: "Insulated mailer, tracked", price: 18 }, + { id: "cold", name: "Cold chain overnight", detail: "Next business day by 12:00", note: "Gel pack, temperature logger", price: 45 }, + ]; + + const PROMO_CODES = { + "OVO-FIRST": { label: "First order", type: "percent", value: 10 }, + "COLDCHAIN": { label: "Free cold chain", type: "shipping", value: 100 }, + }; + + /* Analytical records per catalog entry. + The site's whole claim is "see what is reported, see what is not", but every + field was hardcoded to "not reported", which inverted the pitch into "we have + no data". These are the reported panels. Sterility and endotoxin are left + genuinely unreported on lyophilized research material, which is both accurate + and what makes the reported-vs-not distinction visible at all. */ + const TESTING = { + "retatrutide": { lot: "RT-2411-A", date: "2026-06-18", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "99.1%"] }, + "semaglutide": { lot: "SG-2409-C", date: "2026-06-02", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "98.7%"] }, + "tirzepatide": { lot: "TZ-2410-B", date: "2026-06-11", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.1 mg"], purity: ["RP-HPLC, area %", "99.4%"] }, + "cagrilintide": { lot: "CG-2408-A", date: "2026-05-27", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "9.8 mg"], purity: ["RP-HPLC, area %", "98.2%"] }, + "bpc-157": { lot: "BP-2412-D", date: "2026-06-24", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.0 mg"], purity: ["RP-HPLC, area %", "99.0%"] }, + "tb-500": { lot: "TB-2411-B", date: "2026-06-15", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "98.9%"] }, + "ipamorelin": { lot: "IP-2410-A", date: "2026-06-08", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "5.0 mg"], purity: ["RP-HPLC, area %", "99.2%"] }, + "cjc-1295": { lot: "CJ-2409-E", date: "2026-06-04", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "5.0 mg"], purity: ["RP-HPLC, area %", "98.5%"] }, + "bpc-tb-blend": { lot: "BX-2412-A", date: "2026-06-21", identity: ["RP-HPLC / ESI-MS", "Both components conform"], content: ["RP-HPLC, 214 nm", "10.0 + 10.0 mg"], purity: ["RP-HPLC, area %", "98.4%"] }, + "cjc-ipamorelin-blend": { lot: "CX-2411-C", date: "2026-06-13", identity: ["RP-HPLC / ESI-MS", "Both components conform"], content: ["RP-HPLC, 214 nm", "5.0 + 5.0 mg"], purity: ["RP-HPLC, area %", "98.8%"] }, + }; + + /* Sample references are derived from the lot so the analytical record can name + the tested sample without a second hand-maintained table drifting out of sync. */ + function sampleReference(lot) { + return `SMP-${String(lot).replace(/-/g, "")}`; + } + + /* The lot number is the only thing that ties the vial in the box to the + analytical record on the site, so it has to be addressable and it has to + travel with the purchase. These four helpers are the whole mechanism: + resolve a lot to its catalog entry, build the record URL, and expand any + cart line into its lots. A set carries one lot per component, not a single + blended one, because that is what would be printed on the two vials. */ + function productForLot(lot) { + const key = String(lot || "").trim().toUpperCase(); + if (!key) return null; + const slug = Object.keys(TESTING).find((entry) => TESTING[entry].lot.toUpperCase() === key); + return slug ? PRODUCTS.find((product) => product.slug === slug) || null : null; + } + + function lotPath(lot) { + return path(`lot-record.html?lot=${encodeURIComponent(lot)}`); + } + + function lotTrace(slug) { + const item = ALL_CART_ITEMS.find((entry) => entry.slug === slug); + if (!item) return []; + return (item.productSlugs || [slug]) + .map((componentSlug) => { + const record = testingFor(componentSlug); + if (!record) return null; + const product = PRODUCTS.find((entry) => entry.slug === componentSlug); + return { + slug: componentSlug, + name: product ? product.name : componentSlug, + code: product ? product.code : "", + lot: record.lot, + date: record.date, + }; + }) + .filter(Boolean); + } + + /* One "Lot X, reported Y" row per component, named per component only when a + line carries more than one, so a single vial is never labelled twice. */ + function lotTraceRows(slug, options = {}) { + const { link = true } = options; + const entries = lotTrace(slug); + return entries.map((entry) => { + const label = `${entries.length > 1 ? `${escapeHtml(entry.name)} · ` : ""}Lot ${escapeHtml(entry.lot)} · reported ${escapeHtml(entry.date)}`; + return link + ? `${label}` + : `${label}`; + }); + } + + function testingFor(slug) { + return TESTING[slug] || null; + } + + /* The reported mass and the "% of label" figure used to be one hand-typed + string, so seven of ten entries contradicted their own labeled amount. The + measured mass is the only stored value now; the percentage is derived from + it against the product's labeled amount, and if either side cannot be parsed + the percentage is omitted rather than guessed. */ + function contentResult(slug) { + const record = testingFor(slug); + if (!record) return "Result not reported"; + const measured = String(record.content[1]).replace(/\s*\([^)]*\)\s*$/, "").trim(); + const product = PRODUCTS.find((entry) => entry.slug === slug); + const masses = (measured.match(/\d+(?:\.\d+)?/g) || []).map(Number); + const labeled = product ? Number.parseFloat(product.strength) : Number.NaN; + if (!masses.length || !Number.isFinite(labeled) || labeled <= 0) return measured; + const total = masses.reduce((sum, value) => sum + value, 0); + return `${measured} (${Math.round((total / labeled) * 100)}% of label)`; + } + + /* One renderer for all three surfaces that used to hardcode these rows, so a + product can never show a reported result on one page and a blank on another. */ + function testingFields(slug) { + const t = testingFor(slug); + return [ + { label: "Identity", method: t ? t.identity[0] : "Method not assigned", result: t ? t.identity[1] : "Result not reported", reported: Boolean(t) }, + { label: "Content / mass", method: t ? t.content[0] : "Method not assigned", result: t ? contentResult(slug) : "Result not reported", reported: Boolean(t) }, + { label: "Purity profile", method: t ? t.purity[0] : "Method not assigned", result: t ? t.purity[1] : "Result not reported", reported: Boolean(t) }, + { label: "Sterility / endotoxin", method: "Not represented", result: "Result not reported", reported: false }, + ]; + } + + /* Inventory. Availability is data, not markup, so a single edit here moves a + product between states and every surface follows: catalog card, PDP buy box, + search result, cart, and the checkout gate. + + unavailable = cannot be sold. Retatrutide and cagrilintide are not approved + compounds. If the operating position ever changes for a given entry, flip its + line here and nothing else needs to be touched. + + LOW_STOCK_AT is the threshold where the remaining count is surfaced. Below it + the exact number shows; above it the page just says in stock, because a + precise count on a well-stocked item is noise. */ + const LOW_STOCK_AT = 6; + + /* Restricted is a reason, not just a zero. Two compounds are not offered as a + position rather than as a stock accident, and a shopper who sees the same + grey "Unavailable" pill on both cannot tell the difference. Stock stays 0 + either way; this only carries the reason to the surfaces that show it. */ + const RESTRICTED = { + "retatrutide": + "OVO Labs does not offer retatrutide. It has no approved reference product and no established compendial standard to test against, so we cannot state what conformance would mean. The entry stays listed so the catalog is complete and the position is on the record.", + "cagrilintide": + "OVO Labs does not offer cagrilintide. It has no approved reference product and no established compendial standard to test against, so we cannot state what conformance would mean. The entry stays listed so the catalog is complete and the position is on the record.", + }; + + function restrictionFor(slug) { + return RESTRICTED[slug] || ""; + } + + const STOCK = { + "retatrutide": 0, + "cagrilintide": 0, + "tirzepatide": 24, + "semaglutide": 31, + "bpc-157": 48, + "tb-500": 12, + "cjc-1295": 37, + "ipamorelin": 52, + "cjc-ipamorelin-blend": 4, + "bpc-tb-blend": 9, + "metabolic-reference-set": 0, + "peptide-pair-set": 6, + "secretagogue-reference-set": 15, + }; + + function stockFor(slug) { + const units = STOCK[slug]; + return typeof units === "number" ? units : 0; + } + + function availability(slug) { + const units = stockFor(slug); + if (restrictionFor(slug)) { + return { state: "unavailable", units: 0, label: "Not offered", sellable: false, restricted: true }; + } + if (units <= 0) return { state: "unavailable", units: 0, label: "Unavailable", sellable: false, restricted: false }; + if (units <= LOW_STOCK_AT) return { state: "low", units, label: `Only ${units} left`, sellable: true, restricted: false }; + return { state: "in", units, label: "In stock", sellable: true, restricted: false }; + } + + /* A bundle can only be as available as its scarcest component. Without this a + set could be sold while one of the vials inside it is unavailable. */ + function bundleAvailability(bundle) { + if (!bundle || !bundle.productSlugs) return availability(bundle ? bundle.slug : ""); + /* A set that contains a compound we will not offer is itself not offered, and + must say so with the same reason rather than reading as a stock shortage. */ + if (bundle.productSlugs.some((slug) => restrictionFor(slug))) { + return { state: "unavailable", units: 0, label: "Not offered", sellable: false, restricted: true }; + } + const own = availability(bundle.slug); + if (!own.sellable) return own; + const componentUnits = bundle.productSlugs.map((slug) => stockFor(slug)); + const scarcest = Math.min(...componentUnits, own.units); + if (scarcest <= 0) return { state: "unavailable", units: 0, label: "Unavailable", sellable: false, restricted: false }; + if (scarcest <= LOW_STOCK_AT) return { state: "low", units: scarcest, label: `Only ${scarcest} left`, sellable: true, restricted: false }; + return { state: "in", units: scarcest, label: "In stock", sellable: true, restricted: false }; + } + + function availabilityFor(slug) { + const bundle = (typeof BUNDLES !== "undefined" ? BUNDLES : []).find((b) => b.slug === slug); + return bundle ? bundleAvailability(bundle) : availability(slug); + } + + /* Any line in the cart that can no longer be sold. Stock can change while a + cart sits in storage, so this is checked at render time on both the cart and + the checkout rather than trusted from when the item was added. */ + /* Curated rails are recommendations, so leading them with something that + cannot be bought wastes the strongest slot on the page. Sort is stable, so + entries keep their editorial order inside each group. The full catalog grid + still lists every entry, including the two that are not offered, so the + position on them stays visible. There it only applies to the Featured order, + and never overrides an explicit name or price sort. */ + const sellableFirst = (list) => + [...list].sort( + (a, b) => (availabilityFor(b.slug).sellable === true) - (availabilityFor(a.slug).sellable === true), + ); + + /* A cart line can go bad two different ways while it sits in storage: the + entry stops being sellable, or stock drops below the saved quantity. They + need different wording, so they are classified rather than merged. */ + function cartLineIssue(line) { + const stock = availabilityFor(line.slug); + const item = cartItemData(line.slug); + const name = item ? item.name : line.slug; + if (!stock.sellable) { + return { type: stock.restricted ? "restricted" : "unavailable", name, units: 0 }; + } + if (line.quantity > stock.units) { + return { type: "partial", name, units: stock.units }; + } + return null; + } + + function blockedCartLines() { + return cart.filter((line) => cartLineIssue(line)); + } + + /* The per-order ceiling is whichever runs out first, the order cap or the + shelf. Every quantity control reads it from here so the drawer, the cart + page and the PDP cannot disagree about where the "+" stops. */ + function cartLineCeiling(slug) { + const stock = availabilityFor(slug); + return stock.sellable ? Math.min(MAX_QUANTITY, stock.units) : 0; + } + + function cartLineAtCap(line) { + const ceiling = cartLineCeiling(line.slug); + return ceiling > 0 && line.quantity >= ceiling; + } + + function stockBadge(slug) { + const a = availabilityFor(slug); + return `${escapeHtml(a.label)}`; + } + + const TAX_RATE = 0.0725; + const FREE_SHIPPING_THRESHOLD = 500; + + const US_STATES = ["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC"]; + + const money = new Intl.NumberFormat("en-US", { + style: "currency", + currency: "USD", + maximumFractionDigits: 0, + }); + + const PRODUCTS = [ + { + slug: "retatrutide", + code: "OVO-001", + name: "Retatrutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 105, + descriptor: "Synthetic triple-agonist incretin-class research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A focused catalog entry for retatrutide research reference work. Molecule, labeled amount, format, and testing status are presented together.", + }, + { + slug: "tirzepatide", + code: "OVO-002", + name: "Tirzepatide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 100, + descriptor: "Synthetic dual incretin-receptor agonist research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A clear catalog entry for tirzepatide reference research, with labeled amount, product identity, format, and testing status in one decision block.", + }, + { + slug: "semaglutide", + code: "OVO-003", + name: "Semaglutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 90, + descriptor: "Synthetic GLP-1 receptor agonist research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A structured semaglutide catalog entry with direct access to the product’s testing status and comparison-ready product facts.", + }, + { + slug: "cagrilintide", + code: "OVO-004", + name: "Cagrilintide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 89, + descriptor: "Long-acting amylin-analogue research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A cagrilintide research catalog entry organized around identity, labeled amount, format, and testing status.", + }, + { + slug: "bpc-157", + code: "OVO-005", + name: "BPC-157", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 60, + descriptor: "Synthetic pentadecapeptide research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A BPC-157 catalog entry with a compact, neutral specification surface and visible testing status.", + }, + { + slug: "tb-500", + code: "OVO-006", + name: "TB-500", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 68, + descriptor: "Synthetic thymosin beta-4 fragment research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A TB-500 catalog entry that puts identity, labeled amount, format, price, and testing status in a single decision layout.", + }, + { + slug: "cjc-1295", + code: "OVO-007", + name: "CJC-1295", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 52, + descriptor: "Synthetic GHRH-analogue research compound.", + facts: ["5 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A CJC-1295 catalog entry built to make the exact product easy to find, compare, and inspect.", + }, + { + slug: "ipamorelin", + code: "OVO-008", + name: "Ipamorelin", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 45, + descriptor: "Synthetic growth-hormone secretagogue research compound.", + facts: ["5 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "An ipamorelin research catalog entry with simple product identification, comparable specifications, and visible testing status.", + }, + { + slug: "cjc-ipamorelin-blend", + code: "OVO-009", + name: "CJC-1295 + Ipamorelin", + category: "Peptide Blends", + categoryKey: "blends", + strength: "10 mg", + format: "Dual-compound vial", + price: 92, + descriptor: "Equal-part GHRH analogue and secretagogue research blend.", + facts: ["5 mg + 5 mg labeled", "Single-vial blend format", "Identity, content, purity reported"], + overview: + "A two-compound blend shown as its own product, with each constituent and the testing status kept explicit.", + }, + { + slug: "bpc-tb-blend", + code: "OVO-010", + name: "BPC-157 + TB-500", + category: "Peptide Blends", + categoryKey: "blends", + strength: "20 mg", + format: "Dual-compound vial", + price: 118, + descriptor: "Equal-part BPC-157 and TB-500 research blend.", + facts: ["10 mg + 10 mg labeled", "Single-vial blend format", "Identity, content, purity reported"], + overview: + "A two-compound blend with its own product identity, labeled composition, and testing status.", + }, + ]; + + const BUNDLES = [ + { + slug: "metabolic-reference-set", + code: "OVO-S01", + name: "Metabolic Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "Retatrutide + Cagrilintide", + price: 169, + descriptor: "Two distinct incretin and amylin-class research references.", + productSlugs: ["retatrutide", "cagrilintide"], + }, + { + slug: "peptide-pair-set", + code: "OVO-S02", + name: "Peptide Pair Set", + category: "Curated Set", + strength: "2 vials", + format: "BPC-157 + TB-500", + price: 108, + descriptor: "Two individually identified research peptide references.", + productSlugs: ["bpc-157", "tb-500"], + }, + { + slug: "secretagogue-reference-set", + code: "OVO-S03", + name: "Secretagogue Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "CJC-1295 + Ipamorelin", + price: 82, + descriptor: "Two separate growth-hormone research references.", + productSlugs: ["cjc-1295", "ipamorelin"], + }, + ]; + + const CATEGORIES = [ + { key: "all", name: "Shop All", note: `${PRODUCTS.length} catalog entries` }, + { key: "metabolic", name: "GLP-1 & Metabolic", note: "4 individual compounds" }, + { key: "research", name: "Research Peptides", note: "2 individual compounds" }, + { key: "growth", name: "Growth Hormone Research", note: "2 individual compounds" }, + { key: "blends", name: "Peptide Blends", note: "2 defined blends" }, + ]; + + const ARTICLES = [ + { + slug: "reading-testing-status", + kind: "Testing guide · 4 minutes", + title: "How to read a testing status", + summary: "A result, a specification, and an unreported field are three different things.", + }, + { + slug: "choosing-by-molecule", + kind: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + summary: "A practical catalog framework for comparing identity, strength, format, and evidence state.", + }, + { + slug: "coa-boundaries", + kind: "Document guide · 5 minutes", + title: "What a COA can and cannot show", + summary: "Why a document’s method and scope matter more than the letters at the top.", + }, + ]; + + const ALL_CART_ITEMS = [...PRODUCTS, ...BUNDLES]; + + const icons = { + menu: + '', + cart: + '', + arrow: '', + check: + '', + shield: + '', + lock: + '', + snow: + '', + doc: + '', + }; + + function path(relative) { + return `${BASE}/${relative}`.replace(/\/\.\//g, "/"); + } + + function productPath(product) { + return path(`peptides/${product.slug}.html`); + } + + function escapeHtml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + function track(event, properties = {}) { + const payload = { + event, + page_type: PAGE, + timestamp: new Date().toISOString(), + ...properties, + }; + window.dataLayer = window.dataLayer || []; + window.dataLayer.push(payload); + window.dispatchEvent(new CustomEvent("ovolabs:analytics", { detail: payload })); + } + + window.OvoLabsAnalytics = { + events: () => [...(window.dataLayer || [])], + clear: () => { + window.dataLayer = []; + }, + }; + + function activePage(name) { + if (name === "shop" && ["collection", "product"].includes(PAGE)) return true; + if (name === "testing" && ["testing", "lot-record"].includes(PAGE)) return true; + if (name === "bundles" && PAGE === "bundles") return true; + if (name === "learn" && ["learn", "article"].includes(PAGE)) return true; + if (name === "about" && ["about", "policy"].includes(PAGE)) return true; + return false; + } + + function header() { + const nav = [ + ["shop", "Shop", "catalog.html"], + ["bundles", "Bundles", "bundles.html"], + ["testing", "Testing & COAs", "testing.html"], + ["learn", "Learn", "notes.html"], + ]; + const categoryLinks = CATEGORIES.map( + (category) => + `${category.name}`, + ).join(""); + + return ` + +

+ Fictional concept storefront. Nothing here is real, stocked, or for sale. +
+ + `; + } + + function footer() { + return ` + + `; + } + + function drawers() { + return ` +
+ + +
+ `; + } + + function layout(main) { + root.innerHTML = `${header()}
${main}
${footer()}${drawers()}`; + } + + function productImage(product, eager = false) { + return ` + OVO Labs vial for ${escapeHtml(product.name)} + + `; + } + + function productCard(product, options = {}) { + const { eager = false } = options; + return ` +
+ + ${productImage(product, eager)} + +
+

${escapeHtml(product.category)} ${stockBadge(product.slug)}

+

${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

+

${escapeHtml(product.descriptor)}

+
+ ${(() => { const record = testingFor(product.slug); return record + ? `${icons.check}${escapeHtml(record.purity[1])} purity` + : "Testing reported per lot"; })()} + View status +
+
+
+ ${money.format(product.price)} +
+ ${(() => { const a = availabilityFor(product.slug); return a.sellable + ? `` + : ``; })()} +
+
+
+ `; + } + + function categoryRail() { + return ` + + `; + } + + function bundleCard(bundle) { + const items = bundle.productSlugs.map((slug) => PRODUCTS.find((product) => product.slug === slug)); + return ` +
+
+
+ +
+

Catalog set${escapeHtml(bundle.code)}

+

${escapeHtml(bundle.name)}

+
+
+

${escapeHtml(bundle.descriptor)}

+ + ${(() => { + const a = availabilityFor(bundle.slug); + /* A set held back on position is not a sold-out set, but it is still a + catalog position: the price stays on the record and the terminal row + keeps the same shape as the two sellable cards, so all three sets + align on one baseline instead of one card carrying a paragraph. */ + const held = items.filter((product) => restrictionFor(product.slug)).map((product) => product.name); + return ` + `; + })()} +
+
+ `; + } + + /* One derived component for the drawer and the cart page, so the two surfaces + can never disagree about how far an order sits from free shipping. The fill + is cobalt: it is progress, not a verified result, so green is not available + to it. The met label is the one allowed green, because at that point the + free shipping is applied rather than promised. */ + function shipProgressBar(subtotal, options = {}) { + const { link = false } = options; + const remaining = Math.max(0, FREE_SHIPPING_THRESHOLD - subtotal); + const met = remaining <= 0; + const percent = Math.min(100, Math.max(0, Math.round((subtotal / FREE_SHIPPING_THRESHOLD) * 100))); + const pending = `Add ${money.format(remaining)} for free standard shipping`; + return ` +
+
+
+
+ ${met + ? `

Free standard shipping applied.

` + : `

${link ? `${pending}` : pending}

`} +
+ `; + } + + function newsletter() { + return ` +
+ +
+ `; + } + + function homePage() { + /* One featured entry for the whole page. The hero chip, the hero testing card + and the testing-status document each used to pick their own subject, and + two of the three picked the entry that cannot be bought. */ + const featured = sellableFirst(PRODUCTS)[0]; + const featuredTesting = testingFor(featured.slug); + return ` +
+
+
+

Peptide research catalog

+

Peptides, without the mystery.

+

A focused catalog with clear formats and a fast path from search to cart. Every entry names what was tested and what was not.

+ + ${(() => { + /* The proof card floated on the photograph at 200px wide, and the + phone breakpoint set it to display:none, so the one contrast + this catalog is built on was a sticker at 1440 and did not + exist at 390. It moves into the copy column and becomes a + record: subject and lot, the method beside each measured value, + and the unreported row inside the same table rather than in a + footnote. Reported values hold in ink at 650, the unreported + row recedes to text-3 at 500, and the date carries the reported + tag. That is the grammar the dark testing band already uses. */ + const record = featuredTesting; + if (!record) return ""; + return ` + + + ${escapeHtml(featured.name)} · Lot ${escapeHtml(record.lot)} + Reported ${escapeHtml(record.date)} + +
+ Purity + ${escapeHtml(record.purity[0])} + ${escapeHtml(record.purity[1])} +
+
+ Content + ${escapeHtml(record.content[0])} + ${escapeHtml(record.content[1])} +
+
+ Sterility + Not represented + Not reported +
+
`; + })()} +
+
+ An OVO Labs amber peptide vial with a gold cap resting on a travertine ledge in warm window light +
+
+
+
+
Catalog10 compounds, 8 sellable
+
FormatLyophilized, 5 to 20 mg
+
PurityEvery lot 98% or higher
+
LotNamed on every cart line
+
+
+
+
+
+

Shop peptides

+

Start with the catalog.

+
+ View all products ${icons.arrow} +
+
+ ${sellableFirst(PRODUCTS) + .slice(0, 4) + .map((product, index) => productCard(product, { eager: index < 2 })) + .join("")} +
+
+
+

Shop by category

+

Browse the catalog your way.

+
+

Use broad categories when you are exploring. Use the persistent search when you already know the molecule or catalog code.

+
+ ${categoryRail()} +
+
+
+
+
+

Testing & COAs

+

See what is reported. See what is not.

+

Every product carries a testing status beside the decision. When a report exists, its methods, sample reference, date, and scope belong together. When it does not, the page says so.

+ Browse testing records +
+
+
+
+ ${escapeHtml(featured.code)} · ${escapeHtml(featured.name)} + TESTING STATUS +
+ LOT ${escapeHtml(featuredTesting ? `${featuredTesting.lot} · ${featuredTesting.date}` : "not assigned")} +
+ ${testingFields(featured.slug).map((f) => ` +
+ ${escapeHtml(f.label)} + ${escapeHtml(f.method)} · ${escapeHtml(f.result)} +
`).join("")} +
+
+
+
+
+
+
+

Curated paths

+

Reference sets

+
+ Explore every set ${icons.arrow} +
+
${sellableFirst(BUNDLES).map(bundleCard).join("")}
+
+
+
+
+
+
+

Read before comparing

+

Three useful buying lenses

+
+ Open the learning center ${icons.arrow} +
+
+ ${ARTICLES.map( + (article) => ` + + `, + ).join("")} +
+
+
+ `; + } + + function collectionPage() { + return ` +
+
+

The full catalog

+

Find the exact peptide entry.

+

Filter by research area, search by molecule or product code, then compare strength, format, testing status, and price without leaving the grid.

+
+
+
+
+ +
+
+ + + + +
+

${PRODUCTS.length} catalog entries

+ +
+
+
+
+
+
+
+
+

Not sure where to start?

+

Narrow the grid, then read the lot.

+
+

The research-area buttons, the search field and the sort control above are the filters on this page. Every entry then carries the same three reported fields, identity, content and purity, against a named lot and report date. Sterility and endotoxin stay unreported on all ten. The testing page lists every lot in one table and explains what each method does and does not establish.

+
+ Review testing & COAs ${icons.arrow} +
+
+ `; + } + + function testingPage() { + return ` +
+
+

Testing & COAs

+

Testing status belongs beside the product.

+

Search an OVO Labs product name or code to see the testing status for its current lot. Identity, content and purity are reported per lot, each with its method, sample reference and report date. Sterility and endotoxin are not represented, and no result extends past the sample and scope it names.

+
+ + + +
+
+
+
+
+
+
+

The framework

+

Four fields. Four different questions.

+

A single number cannot answer identity, amount, composition, and microbiological questions at once.

+
+
+
+
IdentityDoes the observed analytical profile match the intended compound?REPORTED PER LOT
+
Content / massHow much material is reported under the selected method?REPORTED PER LOT
+
Purity profileWhat relative composition is reported under the selected method?REPORTED PER LOT
+
Sterility / endotoxinWere separate microbiological methods represented?NOT REPRESENTED
+
+

${icons.shield}Third-party verified. Independent US laboratory.

+

Analysis performed by an independent contract laboratory in the United States. Methods, sample reference, lot and report date are shown per entry. OVO Labs does not perform its own release testing.

+
+
+
+
+ +
+
+
+
+

Read the document

+

What a COA can and cannot show

+
+
+ ${accordion([ + [ + "Does a purity result prove identity?", + "Not by itself. Identity and relative purity answer different questions and may require different analytical methods.", + ], + [ + "Does a reported result prove every vial is the same?", + "No. A result applies only to the identified sample and method scope. Sampling, chain of custody, and lot linkage remain separate questions.", + ], + [ + "Does a COA establish suitability for human use?", + "No. OVO Labs does not present human-use, safety, efficacy, clinical, administration, or preparation information.", + ], + [ + "Why show fields with no result?", + "Because a visible empty state is more informative than a badge that leaves the scope ambiguous. Identity, content and purity are reported per lot. Sterility and endotoxin are not represented on lyophilized research material, so that field stays visibly empty rather than being quietly dropped.", + ], + ])} +
+
+
+ `; + } + + function bundlesPage() { + return ` +
+
+

Catalog bundles

+

Shop catalog bundles.

+

Related products grouped for simpler browsing and one cart action. Every item remains linked to its own product and testing page.

+
+
+
+
+

Catalog bundles

+
${sellableFirst(BUNDLES).map(bundleCard).join("")}
+
+
+
+
+
+

Why sets exist

+

Reduce search work without creating ambiguity.

+

Three sets exist. Each one is a shorter route to entries that are already listed on their own, for the pairs most often evaluated together.

+

See every individual entry ${icons.arrow}

+
+
+

Separate identities

Every molecule keeps its own code, strength, product page, and testing state.

+

One cart action

The set enters the cart as one clearly labeled item with its included products listed.

+

No false savings

The set price is shown directly without fabricated list prices or countdown offers.

+
+
+
+ `; + } + + function learnPage() { + return ` +
+
+

Learning center

+

Read the facts behind the catalog.

+

Short guides for comparing peptide catalog entries, interpreting testing states, and understanding what a document’s scope does and does not establish.

+
+
+
+
+
+ ${ARTICLES.map( + (article, index) => ` + + `, + ).join("")} +
+
+
+
+
+
+

Fast answers

+

Catalog FAQ

+
+
+ ${accordion([ + ["Is OVO Labs a real company?", "No. It is a fictional, non-operational storefront concept. Nothing is stocked, sold, shipped, tested, or transacted."], + ["Why show concept prices?", "Prices make the ecommerce prototype complete enough to evaluate its hierarchy, cart states, sorting, and merchandising. They are not offers for sale."], + ["Why are there no ratings?", "No customers or reviews exist. Empty or invented social proof would make the interface less trustworthy, not more."], + ["Can I check out?", "Yes. Cart, contact, shipping, delivery method, payment review, and order confirmation all work end to end. The payment step is the one exception: no card is collected and no charge is possible."], + ])} +
+
+
+ `; + } + + function faqPage() { + return ` +
+
+

Help & details

+

Questions, answered plainly.

+

What each lot reports, what “not represented” means, how browser storage works, and exactly where this fictional store stops.

+
+
+
+
+
+

OVO Labs FAQ

+

The complete store boundary.

+
+
+ ${accordion([ + ["Can I place an order?", "You can complete the checkout and receive an order reference, which is recorded in this browser. Because OVO Labs is a fictional concept storefront, nothing is charged, stocked, shipped, or fulfilled."], + ["What does “not represented” mean?", "It means no method for that attribute was run, so there is no result to publish. On this catalog it applies to sterility and endotoxin on every entry. It does not mean the item passed, failed, or is waiting on a promised result, and no other reported field covers it."], + ["Does a COA prove a product is safe, effective, or sterile?", "No. A document supports only the measurements, sample, method, date, and scope it identifies. Unreported attributes should not be inferred."], + ["Where do the purity percentages come from?", `Each entry reports a purity figure by RP-HPLC, area %, for one identified lot, published with that lot number and the report date. Retatrutide reports ${testingFor("retatrutide").purity[1]} for lot ${testingFor("retatrutide").lot}, reported ${testingFor("retatrutide").date}. The figure describes the relative composition of the tested sample under those method conditions. It does not establish sterility, endotoxin state, or suitability for any use.`], + ["Does this catalog provide human-use information?", "No dosing, preparation, administration, safety, efficacy, medical, or human-use guidance is provided."], + ["Are the product descriptions medical advice?", "No. They identify proposed catalog references and formats only."], + ["How does search work?", "Search by peptide name, category, blend name, or catalog code such as OVO-001. Keyboard users can move through predictive results with the arrow keys."], + ["Why are there no customer reviews?", "There are no customers or order history. OVO Labs does not fabricate ratings, testimonials, or purchase activity."], + ["What information does this site store?", "Cart contents and recently viewed product codes can be stored locally in your browser. Nothing is transmitted to a company or server."], + ["How do I remove locally saved information?", "Use Clear cart in the cart drawer. You can also clear this site’s browser storage to remove all local state."], + ])} +
+
+
+
+ +
+ `; + } + + function aboutPage() { + return ` +
+
+

About OVO Labs

+

A peptide store designed around finding and deciding.

+

OVO Labs is designed around a simple idea: product information should be easy to scan, and missing evidence should be impossible to miss.

+
+
+
+
+
+

The premise

+

Retail clarity can do more work than scientific theater.

+
+
+

The strongest specialist stores help people find the right entry quickly, compare it in place, and understand the next action. OVO Labs applies that discipline without inventing operations or proof.

+
+
Catalog modelFocused selection, stable product codes, and flat product routes
+
Discovery modelPersistent search, visual category paths, filters, and related entries
+
Product modelIdentity, labeled amount, format, price, and testing status in one decision block
+
Proof modelOnly substantiated facts; no invented ratings, laboratories, results, or popularity
+
+
+
+
+
+
+
+
+

Operating principles

+

What the brand refuses to fake

+
+
+
+

No decorative proof

An analytical figure appears only with its method, lot and report date attached. Ratings, testimonials, seals, laboratory photography and quality slogans do not appear at all, and a field with no method behind it is labeled unreported rather than dressed up.

+

No urgency machinery

No stock countdown, sale timer, crossed-out anchor price, or invented best-seller ranking pushes the click.

+

No fake transaction

The full purchase path is here to evaluate, from cart to order confirmation. Payment is the deliberate exception: no card is captured and no charge is possible.

+
+
+
+
+
+
+

Who we are

+

The entity behind the catalog, in full.

+
+
+

A store that will not name itself is asking for trust it has not offered. Every line below is fictional. Every line below is stated anyway, because a concept that leaves them blank cannot be judged on the thing it claims to be.

+
+
Operating entityOVO Labs LLC, an Oregon limited liability company
+
Registered office1420 NW Marshall Street, Suite 300, Portland, Oregon 97209
+
FulfillmentOne facility in Portland. Packing, cold-chain assembly and logger sealing all happen there
+
Analytical workAn independent US contract laboratory. OVO Labs runs no release testing of its own and names the method, sample and date on every lot it reports
+
Supportsupport@ovolabs.example, Monday to Friday, 9:00 to 17:00 Pacific
+
ResponseFirst reply within one business day. Fulfillment cases get a written decision within three business days
+
Ships toUnited States only, street addresses only, from the Portland facility
+
+

Read the fulfillment and resolution policy ${icons.arrow}

+
+
+
+
+
+ +
+
+ `; + } + + function policyPage() { + return ` +
+
+

Concept boundaries

+

This storefront demonstrates an interface, not an operation.

+

OVO Labs has no company operations, products, inventory, customers, testing, fulfillment, payments, or ordering capability.

+
+
+
+

What the prototype does

+

It demonstrates ecommerce information architecture: product discovery, category filtering, predictive search, product pages, testing-status presentation, a learning center, and a browser-local demo cart.

+

What the prototype does not do

+
    +
  • It does not offer, sell, reserve, quote, or ship material.
  • +
  • It does not collect payment, customer accounts, addresses, or submitted email data.
  • +
  • It does not claim a named laboratory, an accreditation, a regulatory approval, a customer, a review, a rating, or a sales record.
  • +
  • The lots, analytical results, unit counts, prices and delivery windows shown are demonstration data for a fictional catalog, not records of material that exists.
  • +
  • It does not provide dosing, preparation, administration, clinical, therapeutic, safety, efficacy, or human-use information.
  • +
+
The cart is local. Its contents and any order reference are stored only in this browser. Checkout runs end to end without taking payment, and clearing browser storage removes both.
+

Fulfillment and resolution

+

This is the policy the concept operates under, so the checkout and the confirmation page can point at a stated position rather than an implied one.

+
    +
  • Damaged or wrong on arrival: photograph the box, the mailer and the vial label within 72 hours and open a case with the order reference.
  • +
  • Wrong item or wrong labeled amount: replacement from the same or a later lot at no cost.
  • +
  • Broken vial in transit: replacement at no cost.
  • +
  • Cold-chain logger above range: replaced regardless of vial condition.
  • +
  • Unopened vials: returnable within 14 days, refunded to the original method less outbound shipping.
  • +
  • Opened vials: not returnable, because a returned vial cannot be re-verified.
  • +
+

How a case is opened

+

One route and one thread: email the support mailbox with the order reference in the subject line. There is no phone queue and no ticket portal, because a single written thread keeps the photographs, the lot number and the decision in one place.

+

Email support@ovolabs.example

+

Send with the first message:

+
    +
  • The order reference and the catalog code.
  • +
  • The lot number printed on the vial label, which is what the claim is checked against.
  • +
  • Photographs of the outer box, the inside of the mailer, the vial, and the temperature logger if one shipped.
  • +
+

What happens next:

+
    +
  • Acknowledgement within one business day, naming anything still missing from the case.
  • +
  • A written decision within three business days of a complete case, with the reason stated.
  • +
  • Approved replacements ship on the next fulfillment day by the delivery method originally paid for, at no cost, with the new lot number quoted before dispatch.
  • +
  • Approved returns get a prepaid label and a return reference. The refund is released within five business days of the vial arriving back.
  • +
+

After 72 hours, or without the lot number, a case can still be read but cannot be settled as a transit claim, because the carrier record has closed and the condition on arrival can no longer be established.

+
None of this can be exercised. Nothing is picked, packed or shipped here, so no case can arise and the mailbox above is fictional. The terms are written out because the position a storefront takes before anything goes wrong is part of what is being evaluated.
+

Why the banner stays visible

+

The thin top notice keeps the concept status clear on every route while allowing the rest of the prototype to be evaluated as a real ecommerce design.

+

Return to the concept catalog ${icons.arrow}

+
+ `; + } + + /* eligibility.html shipped with data-page="policy", so it rendered the policies + page verbatim: two routes, one document, and a checkout consent line that + pointed at terms which did not exist. It gets its own renderer, selected off + the pathname so the shell does not have to change. */ + function eligibilityPage() { + return ` +
+
+

Eligibility

+

Who this catalog is offered to.

+

OVO Labs presents research material for laboratory and research settings only. This page states the restriction, the compounds the catalog will not sell, and where material would ship.

+
+
+
+

Who may order

+

Material is offered to laboratory and research settings, and to the people who work in them, for in vitro and research use. Placing an order is an affirmative statement that the material will be used that way.

+

Not for human or veterinary use

+

Nothing in this catalog is a drug, a supplement, a food, a cosmetic, or a medical device. It is not for human use, veterinary use, therapeutic use, diagnostic use, or household use. No dosing, preparation, administration, safety, or efficacy information is provided anywhere on this site, and none will be provided on request.

+
The consent at checkout is the same statement. Confirming it is confirming that the order is for laboratory research use only.
+

What the catalog will not sell

+

Two entries stay listed and cannot be ordered:

+
    + ${Object.keys(RESTRICTED) + .map((slug) => { + const product = PRODUCTS.find((entry) => entry.slug === slug); + return product + ? `
  • ${escapeHtml(product.name)}: ${escapeHtml(restrictionFor(slug))}
  • ` + : ""; + }) + .join("")} +
+

They are kept in the catalog rather than deleted, so the position is visible instead of silent.

+

Where it would ship

+

The concept ships within the United States only, to a street address rather than a mailbox service, from a single US fulfillment center. It does not ship internationally, because export control and import rules for research material differ per destination and this concept does not represent that work.

+

What this page is not

+

OVO Labs is a fictional concept storefront. This eligibility statement describes the rules the concept operates under. It does not create a customer relationship, a supply agreement, or a legal obligation, and no material exists to ship.

+

Read the site policies ${icons.arrow}

+
+ `; + } + + function productPage(product) { + if (!product) return notFoundPage(); + const related = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey === product.categoryKey, + ); + /* The old fallback REPLACED the true siblings with the first four catalog + entries whenever a category held fewer than three of them, so most pages + showed two entries that cannot be bought and hid the one genuine sibling. + Siblings lead, the rest of the catalog backfills, unsellable entries sink. */ + const relatedRail = sellableFirst([ + ...related, + ...PRODUCTS.filter((candidate) => candidate.slug !== product.slug && !related.includes(candidate)), + ]).slice(0, 4); + + return ` +
+ +
+ +
+

${escapeHtml(product.category)}

+

${escapeHtml(product.name)}

+ ${escapeHtml(product.code)} · ${escapeHtml(product.format)} + + ${testingFor(product.slug) + ? `Identity, content and purity reported · lot ${escapeHtml(testingFor(product.slug).lot)}` + : "Testing status: no result reported"} + +

${escapeHtml(product.overview)}

+
+ ${money.format(product.price)} +
+

Strength${escapeHtml(product.strength)}

+ ${(() => { + const stock = availabilityFor(product.slug); + /* A compound we decline to offer is a position, not a stock + shortage, so it gets a stated reason where the buy control sits + instead of a grey disabled button that reads as "sold out". */ + if (stock.restricted) { + return ` +
+ Not offered +

${escapeHtml(restrictionFor(product.slug))}

+
+ Browse entries you can order ${icons.arrow}`; + } + const ceiling = Math.max(1, Math.min(MAX_QUANTITY, stock.units)); + return ` +
+
+ + + + +
+ ${stock.sellable + ? `` + : ``} +
+ ${stock.sellable && ceiling < MAX_QUANTITY + ? `

Maximum ${ceiling} per order at current stock.

` + : ""} +
    + ${[ + /* The restricted path returns above this list, so the old + `restricted ? [...] : [...]` fork could never take its first + branch: three marks were written for the not-offered entry and + zero of them ever rendered. The dead branch is removed rather + than left implying a state this list can reach. */ + testingFor(product.slug) ? `${testingFor(product.slug).purity[1]} purity` : "Purity reported", + "Third-party tested", + "Cold chain ready", + "Free over " + money.format(FREE_SHIPPING_THRESHOLD), + ].map((label) => `
  • ${icons.check}${escapeHtml(label)}
  • `).join("")} +
`; + })()} + +
+
${escapeHtml(availabilityFor(product.slug).label)}Availability
+
${testingFor(product.slug) ? `Lot ${escapeHtml(testingFor(product.slug).lot)}` : "No lot on file"}${testingFor(product.slug) ? `Reported ${escapeHtml(testingFor(product.slug).date)}` : "No result reported"}
+
+

${availabilityFor(product.slug).restricted + ? "Nothing on this page can be added to a cart." + : "Adds this item to a browser-only cart. No order, payment, or shipment is created."}

+
+
+
+
+
+
+

Product facts

+

The comparison fields, up front.

+
+
+
Product name${escapeHtml(product.name)}
+
Catalog code${escapeHtml(product.code)}
+
Research area${escapeHtml(product.category)}
+
Labeled amount${escapeHtml(product.strength)}
+
Format${escapeHtml(product.format)}
+
Analytical state${testingFor(product.slug) ? `Identity, content, purity reported · lot ${escapeHtml(testingFor(product.slug).lot)}` : "No result reported"}
+
+
+
+
+
+
+

Testing status

+

Every missing result stays visible.

+
+
+ ${(() => { + const record = testingFor(product.slug); + return record + ? `
+

Lot ${escapeHtml(record.lot)} · sample ${escapeHtml(sampleReference(record.lot))} · reported ${escapeHtml(record.date)}

+

Open the full record for this lot ${icons.arrow}

+
` + : ""; + })()} +
+ ${testingFields(product.slug).map((f) => ` +
+ ${escapeHtml(f.label)} + ${escapeHtml(f.method)} + ${f.reported ? escapeHtml(f.result) : "NOT REPORTED"} +
`).join("")} +
+

Not represented. Lyophilized research material is not released as sterile, so no microbiological result exists to report. Do not infer sterility from the purity figure above.

+

Analysis performed by an independent contract laboratory in the United States. Methods, sample reference, lot and report date are shown per entry. OVO Labs does not perform its own release testing.

+
+
+
+
+
+
+

Storage and handling

+

What to do when the box arrives.

+
+
+

Lyophilized peptide is a dry solid. It is stable at ambient temperature for the transit window, so the standard insulated mailer is not a downgrade. Cold chain exists for the record rather than for the vial: it adds a gel pack and a sealed single-use logger with a printed 2 to 8 °C range, so the condition on arrival is documented instead of assumed.

+

Read the logger before opening the mailer. A logger above range is replaced regardless of how the vial looks, because a dry vial shows no visible sign of a heat excursion, so photograph it and open a case before use. Store unopened vials at 2 to 8 °C, upright, in the carton and away from light. The ambient tolerance covers days in transit, not months on a shelf.

+

Read the fulfillment and resolution policy ${icons.arrow}

+
+
+
+
+
+
+

Product questions

+

Know what this page means.

+
+
+ ${(() => { + /* This accordion used to open by denying the analytical panel + directly above it. The testing question now leads and reads from + the same record the panel does; availability is demoted and + explains the inventory model instead of contradicting the page. */ + const record = testingFor(product.slug); + const stock = availabilityFor(product.slug); + return accordion([ + [ + "Has this entry been tested?", + record + ? `Identity, content and purity are reported for the lot named on this page (${record.lot}, reported ${record.date}) using the methods in the analytical panel. Sterility and endotoxin are not represented, so those fields stay empty rather than being implied. A reported result applies to the identified sample under the stated method, not to every vial produced.` + : "No analytical result is reported for this entry, so every field on the panel stays visibly empty rather than being implied.", + ], + [ + "Is this entry available?", + stock.restricted + ? restrictionFor(product.slug) + : stock.sellable + ? `Stock is held per catalog entry and the buy box shows the current count. ${stock.units <= LOW_STOCK_AT ? `Only ${stock.units} remain, so the quantity control is capped at what exists.` : "The quantity control is capped at what exists, so a cart can never hold more than the count shown."}` + : "This entry is out of stock, so the buy control is closed until the count recovers. Nothing on this page reserves or backorders material.", + ], + ["What does the listed price mean?", "It lets the storefront demonstrate sorting, merchandising, cart totals, and product hierarchy. It is not an offer or quote."], + ["Where is administration information?", "It is intentionally absent. OVO Labs does not provide dosing, preparation, administration, human-use, safety, efficacy, or outcome information."], + ]); + })()} +
+
+
+
+
+
+
+

Keep comparing

+

Related catalog entries

+
+ View the full catalog ${icons.arrow} +
+
${relatedRail.map((item) => productCard(item)).join("")}
+
+
+ ${availabilityFor(product.slug).sellable + ? `` + : ""} + `; + } + + function articlePage(slug) { + const content = { + "reading-testing-status": { + eyebrow: "Testing guide · 4 minutes", + title: "How to read a testing status", + lede: "Start with the question the method is meant to answer. Then check whether a result is actually reported.", + sections: [ + ["A specification is not a result", "A specification describes an intended target or acceptance rule. A result describes what was observed for an identified sample under a stated method. One should never be styled as the other."], + ["Identity, amount, and composition are separate", "An identity method asks whether the observed profile matches the intended compound. A content or mass method asks how much is reported. A purity method describes relative composition under its method conditions. None automatically answers the others."], + ["“Not represented” is useful information", "An explicit empty field stops a shopper assuming that a badge, document icon, or quality headline stands in for evidence. Where identity, content and purity are reported per lot and sterility and endotoxin are not, the gap stays visible at the moment of comparison."], + ], + }, + "choosing-by-molecule": { + eyebrow: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + lede: "A clean catalog starts with product identity, then narrows by strength, format, code, and evidence state.", + sections: [ + ["Start with the exact entry", "Separate compounds should have separate product pages. A selector is useful for genuine strengths of the same item, not for hiding unrelated molecules inside one high-traffic page."], + ["Compare the same fields every time", "Product name, code, strength, format, price concept, and testing status should appear in predictable positions. Consistency turns a grid into a comparison tool."], + ["Use categories as a shortcut", "Research-area categories help exploration, while exact-name and product-code search help returning or expert shoppers. Both paths should reach the same canonical product page."], + ], + }, + "coa-boundaries": { + eyebrow: "Document guide · 5 minutes", + title: "What a COA can and cannot show", + lede: "The value of a certificate depends on the identified sample, the method, the result, and the scope. The title alone proves very little.", + sections: [ + ["Read the scope before the number", "A reported purity figure does not automatically establish identity, total content, sterility, endotoxin state, stability, or suitability for a particular use."], + ["Check the sample link", "A result is only useful when the document identifies the tested sample and the catalog can explain how that sample relates to the represented item."], + ["Do not fill gaps with design", "A green badge, seal, laboratory photograph, or download icon cannot replace a reported result. If a field is missing, the interface should say so directly."], + ], + }, + }[slug]; + + if (!content) return notFoundPage(); + return ` +
+

${escapeHtml(content.eyebrow)}

+

${escapeHtml(content.title)}

+

${escapeHtml(content.lede)}

+
This guide describes document and catalog structure. It does not provide medical, clinical, preparation, administration, or human-use information.
+ ${content.sections + .map(([heading, copy]) => `

${escapeHtml(heading)}

${escapeHtml(copy)}

`) + .join("")} +

Continue through the store

+

Use the testing page to inspect current concept states, or return to the catalog to compare entries using the same fields.

+

+ Explore testing & COAs + Browse products +

+
+
+
+

More from OVO Labs

Related guides

+
+ ${ARTICLES.filter((article) => article.slug !== slug) + .map( + (article) => ``, + ) + .join("")} +
+
+
+ `; + } + + /* Every product page promises a lot COA before dispatch, and until now the + document was asserted and never produced, which is the one place the site's + evidence claim was pure assertion. This is the document. It is deliberately + plain: mono for anything that is data, a label on every field, and the + unreported fields carried at the same weight as the reported ones instead + of quietly dropped. No badges, no status colour, no persuasion. */ + function lotRecordIndex(excludeLot = "", compact = false) { + const rows = PRODUCTS.filter((product) => testingFor(product.slug)) + .filter((product) => testingFor(product.slug).lot !== excludeLot) + .map((product) => { + const record = testingFor(product.slug); + return ` + + ${escapeHtml(record.lot)} + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)} + ${escapeHtml(product.code)} + Reported ${escapeHtml(record.date)} + + `; + }) + .join(""); + return `
${rows}
`; + } + + function lotRecordPage() { + const requested = (new URLSearchParams(window.location.search).get("lot") || "").trim(); + const product = productForLot(requested); + + /* No lot, or a lot this catalog has never reported, lands on the index + rather than a dead end. A record set is browsable by definition. */ + if (!product) { + track("lot_record_index", { requested_lot: requested }); + return ` + +
+
+

Lot records

+

${requested ? `No record for lot ${escapeHtml(requested)}.` : "Lot records"}

+

${requested + ? "That lot number is not in this catalog's record set. Every lot currently reported is listed below." + : "One record per reported lot. Each names the sample, the method used for each field, the result, and the fields the record does not cover."}

+
+
+
+
+ ${lotRecordIndex()} +

Analysis performed by an independent contract laboratory in the United States. OVO Labs does not perform its own release testing. No record on this site represents sterility or endotoxin.

+
+
+ `; + } + + const record = testingFor(product.slug); + const fields = testingFields(product.slug); + const reported = fields.filter((field) => field.reported); + const omitted = fields.filter((field) => !field.reported); + const sample = sampleReference(record.lot); + + track("lot_record_view", { lot: record.lot, product_code: product.code }); + + const headerFields = [ + ["Catalog entry", `${product.name} · ${product.strength}`], + ["Catalog code", product.code], + ["Lot number", record.lot], + ["Sample reference", sample], + ["Report date", record.date], + ["Material as received", product.format], + ["Analysis by", "Independent contract laboratory"], + ["Record covers", "The identified sample only"], + ] + .map(([label, value]) => `
${escapeHtml(label)}
${escapeHtml(value)}
`) + .join(""); + + const methodRows = (rows, isOmitted = false) => + rows + .map( + (field) => ` +
+ ${escapeHtml(field.label)} + ${escapeHtml(isOmitted ? "No method performed" : field.method)} + ${escapeHtml(isOmitted ? "No result exists to report" : field.result)} +
+ `, + ) + .join(""); + + return ` + +
+
+

Lot record

+

Lot ${escapeHtml(record.lot)}

+

The analytical record behind ${escapeHtml(product.name)} ${escapeHtml(product.strength)}. It states what was measured on one identified sample, and states just as plainly what it does not cover.

+
+
+
+
+
+
+
+

Analytical record

+

${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

+
+

${escapeHtml(product.code)} / ${escapeHtml(record.lot)}

+
+
${headerFields}
+
+

Methods and results

+
${methodRows(reported)}
+

Each result applies to sample ${escapeHtml(sample)} under the method named beside it. Identity, content and purity answer three different questions, so a result in one row does not stand in for another, and no row here describes any vial other than the sample identified above.

+
+
+

Not represented by this record

+
${methodRows(omitted, true)}
+

Lyophilized research material is not released as sterile, and no microbiological or endotoxin method was performed on this sample, so there is no result to report and none is implied. Do not read the purity figure above as a sterility statement. This record also does not establish suitability for human use, and OVO Labs presents no dosing, preparation, or administration information.

+
+
+

Analysis performed by an independent contract laboratory in the United States. OVO Labs does not perform its own release testing.

+

Record issued ${escapeHtml(record.date)}. If the vial label in your shipment names a lot other than ${escapeHtml(record.lot)}, photograph it and open a case before use.

+
+
+ +
+
+ `; + } + + function notFoundPage() { + return ` +
+
+

404 · Page not found

+

This catalog path does not exist.

+

Search for a molecule, return to the product grid, or use one of the main research-area categories.

+ +
+
+
+
+
+
+

Recover

+

Pick up from a known path.

+
+

Four research areas, and four catalog entries to start from. The header search also takes a molecule name or a catalog code such as OVO-002.

+
+
${categoryRail()}
+

Catalog entries

+
${sellableFirst(PRODUCTS).slice(0, 4).map((product) => productCard(product)).join("")}
+
+
+ `; + } + + function cartPage() { + const breakdown = priceBreakdown(readCheckoutDraft()); + + if (cart.length === 0) { + return ` +
+
+

Cart

+

Your cart is empty.

+

Add a compound or a defined blend from the catalog and it will appear here.

+ +
+
+
+
+
+
+

Start here

+

Start with the catalog.

+
+ View all products ${icons.arrow} +
+
${sellableFirst(PRODUCTS).slice(0, 4).map((product) => productCard(product)).join("")}
+
+
+ `; + } + + const rows = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
+ + ${escapeHtml(item.name)} + +
+
+
+

${escapeHtml(item.name)}

+

${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

+ ${(() => { + /* The lot is what a buyer can check the delivered vial label + against, so it rides the line from here to the receipt + instead of living only on the product page. */ + const lots = lotTraceRows(item.slug); + return lots.length ? `

${lots.join("")}

` : ""; + })()} +
+ ${money.format(item.price * line.quantity)} +
+

${(() => { const a = availabilityFor(item.slug); return a.sellable + ? ` ${escapeHtml(a.label)} · ships from the US fulfillment center` + : ` ${escapeHtml(a.label)} · remove to continue`; })()}

+
+
+ + ${line.quantity} + +
+ ${money.format(item.price)} each + +
+ ${cartLineAtCap(line) + ? `

Maximum ${cartLineCeiling(line.slug)} per order at current stock.

` + : ""} +
+
+ `; + }) + .join(""); + + /* Both this bar and the summary shipping line derive from the same + threshold, so they can never contradict each other on screen. */ + const freeShipBar = shipProgressBar(breakdown.subtotal, { link: true }); + + /* Cross-sell reads from the cart's own research area, so the suggestion is a + neighbour of what is already there rather than a generic four-up. Only + entries that can actually be bought are eligible. */ + const cartCategories = new Set( + cart + .map((line) => cartItemData(line.slug)) + .filter(Boolean) + .map((item) => item.categoryKey) + .filter(Boolean), + ); + const inCart = new Set(cart.map((line) => line.slug)); + const eligible = PRODUCTS.filter((entry) => !inCart.has(entry.slug) && availabilityFor(entry.slug).sellable); + const pairsWith = [ + ...eligible.filter((entry) => cartCategories.has(entry.categoryKey)), + ...eligible.filter((entry) => !cartCategories.has(entry.categoryKey)), + ].slice(0, 3); + + return ` +
+
+

Cart

+

Your cart

+
+
+
+
+
+ ${(() => { + /* "No longer available" and "we only have four of these" are not the + same problem and do not have the same fix, so the notice names + which lines are which instead of collapsing both into one word. */ + const issues = cart.map((line) => cartLineIssue(line)).filter(Boolean); + if (!issues.length) return ""; + const unsellable = issues.filter((issue) => issue.type !== "partial"); + const partial = issues.filter((issue) => issue.type === "partial"); + const parts = []; + if (unsellable.length) { + parts.push( + `${unsellable.map((issue) => escapeHtml(issue.name)).join(", ")} cannot be sold. Remove ${unsellable.length === 1 ? "it" : "them"} to continue to checkout.`, + ); + } + partial.forEach((issue) => { + parts.push(`Only ${issue.units} of ${escapeHtml(issue.name)} available. Lower the quantity to continue.`); + }); + return `
${issues.length === 1 ? "One line needs attention" : `${issues.length} lines need attention`} before checkout.${parts.join("")}
`; + })()} + ${freeShipBar} +
${rows}
+
+ Continue shopping + +
+ ${pairsWith.length + ? `
+

Pairs with your cart

+
${pairsWith.map((entry) => productCard(entry)).join("")}
+
` + : ""} +
+
+ ${orderSummaryPanel(breakdown, { + showItems: false, + cta: blockedCartLines().length + ? `Remove unavailable items` + : `Checkout · ${money.format(breakdown.total)}`, + })} +
+ +
+ + +
+

Try

+

${breakdown.promo ? `Applied: ${escapeHtml(breakdown.promo.label)}` : ""}

+
+
+
+
+ `; + } + + function checkoutField(id, label, options = {}) { + const { type = "text", autocomplete = "", placeholder = "", required = true, width = "full", value = "", inputmode = "", note = "" } = options; + return ` +
+ + + ${note ? `

${escapeHtml(note)}

` : ""} +

+
+ `; + } + + /* Digits are what a carrier needs; the punctuation is only for reading it back + to the person who typed it, so it is applied at display time and never + stored. */ + function formatPhone(value) { + const digits = String(value || "").replace(/\D/g, ""); + if (digits.length === 10) return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`; + if (digits.length === 11 && digits.startsWith("1")) return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`; + return String(value || ""); + } + + function checkoutPage() { + const blocked = blockedCartLines(); + if (blocked.length) { + return ` +
+
+

Checkout

+

${blocked.length === 1 ? "An item in your cart is" : "Items in your cart are"} no longer available.

+

${blocked.map((line) => escapeHtml(cartItemData(line.slug) ? cartItemData(line.slug).name : line.slug)).join(", ")} cannot be sold. Remove ${blocked.length === 1 ? "it" : "them"} from your cart to continue.

+ +
+
+ `; + } + if (cart.length === 0) { + return ` +
+
+

Checkout

+

There is nothing to check out.

+

Your cart is empty, so there is no order to complete.

+ +
+
+ `; + } + + const draft = readCheckoutDraft(); + const breakdown = priceBreakdown(draft); + + /* A completed step is a place you can go back to. The indicator looked + clickable and was not, so completed steps are real buttons now; the + Review step's Edit links already proved jumping backwards is safe. */ + const steps = CHECKOUT_STEPS.map( + (step, index) => ` +
  • + +
  • + `, + ).join(""); + + const deliveryOptions = SHIPPING_METHODS.map((method) => { + const free = breakdown.subtotal >= FREE_SHIPPING_THRESHOLD && method.id === "standard"; + return ` + + `; + }).join(""); + + return ` +
    +
    +

    Checkout

    +

    Complete your order

    +
      ${steps}
    +
    +
    +
    +
    +
    + +
    + 1 Contact +

    Order confirmation and tracking are sent here.

    +
    + ${checkoutField("email", "Email address", { type: "email", autocomplete: "email", placeholder: "you@company.com", width: "half", value: draft.email || "" })} + ${checkoutField("phone", "Phone", { + type: "tel", + autocomplete: "tel", + inputmode: "tel", + placeholder: "(555) 010-0199", + width: "half", + required: false, + note: "Used only if the carrier needs to reach you about a cold-chain delivery.", + value: draft.phone || "", + })} +
    +
    + Back to cart + +
    +
    + + + + + + + + + +
    +
    +
    ${orderSummaryPanel(breakdown)}
    +
    + Have a discount code? +
    + +
    + + +
    +

    ${breakdown.promo ? `Applied: ${escapeHtml(breakdown.promo.label)}` : ""}

    +
    +
    +
    +
    +
    + `; + } + + function confirmationPage() { + const orders = readOrders(); + const order = orders[0]; + + if (!order) { + return ` +
    +
    +

    Order

    +

    No recent order found.

    +

    Orders are recorded in this browser. If you cleared your storage, the reference is gone.

    + +
    +
    + `; + } + + /* The receipt carries the lot it was ordered against, and the name links + back to that record, so the vial in the box can be checked against + something rather than trusted. */ + const lines = order.items + .map( + (line) => ` +
    + ${escapeHtml(line.name)} +
    + ${escapeHtml(line.name)} + ${escapeHtml(line.code)} · ${escapeHtml(line.strength)} · Qty ${line.quantity} + ${(() => { + /* Orders placed before lots were recorded still render: the line + falls back to its single stored lot, and shows nothing at all + if it never carried one. */ + const lots = Array.isArray(line.lots) && line.lots.length + ? line.lots + : line.lot + ? [{ name: line.name, lot: line.lot, date: line.lotDate || "" }] + : []; + return lots + .map( + (entry) => + `${lots.length > 1 ? `${escapeHtml(entry.name)} · ` : ""}Lot ${escapeHtml(entry.lot)} · reported ${escapeHtml(entry.date || "")} · record`, + ) + .join(""); + })()} +
    + ${money.format(line.price * line.quantity)} +
    + `, + ) + .join(""); + + /* The receipt's primary action is the record for the lot that was actually + shipped against, so the document the site keeps promising is one click + from the order rather than a search away. */ + const orderLots = order.items.flatMap((line) => + Array.isArray(line.lots) && line.lots.length + ? line.lots + : line.lot + ? [{ name: line.name, lot: line.lot, date: line.lotDate || "" }] + : [], + ); + const firstLot = orderLots.length ? orderLots[0].lot : ""; + + const rows = [ + ["Subtotal", money.format(order.totals.subtotal)], + ...(order.totals.discount > 0 ? [["Discount", `-${money.format(order.totals.discount)}`]] : []), + [`Shipping · ${escapeHtml(order.shippingMethodName)}`, order.totals.shipping === 0 ? "Free" : money.format(order.totals.shipping)], + ["Tax", money.format(order.totals.tax)], + ] + .map(([l, v]) => `
    ${l}${v}
    `) + .join(""); + + return ` +
    +
    +

    Order ${escapeHtml(order.reference)}

    +

    Thank you, ${escapeHtml(order.firstName)}.

    +

    Your order is recorded. A confirmation would be sent to ${escapeHtml(order.email)}.

    +
    +
    +
    +
    +
    +
      +
    1. Order placed${escapeHtml(order.placedLabel)}
    2. +
    3. PreparingWithin 1 business day
    4. +
    5. Shipped${escapeHtml(order.shippingMethodDetail)}
    6. +
    7. DeliveredEstimated ${escapeHtml(order.etaLabel)}
    8. +
    + +
    +
    +

    Shipping to

    +

    ${escapeHtml(order.firstName)} ${escapeHtml(order.lastName)}
    + ${escapeHtml(order.address1)}${order.address2 ? `
    ${escapeHtml(order.address2)}` : ""}
    + ${escapeHtml(order.city)}, ${escapeHtml(order.state)} ${escapeHtml(order.zip)}

    +
    +
    +

    Delivery method

    +

    ${escapeHtml(order.shippingMethodName)}
    ${escapeHtml(order.shippingMethodDetail)}

    +
    +
    +

    Payment

    +

    Not collected.
    No charge was made for this order.

    +
    +
    +

    Contact

    +

    ${escapeHtml(order.email)}${order.phone ? `
    ${escapeHtml(formatPhone(order.phone))}` : "
    No phone provided"}

    +
    +
    +

    If something is wrong

    +

    Photograph the box, mailer, vial label and logger within 72 hours, then email support@ovolabs.example with ${escapeHtml(order.reference)} in the subject line. Acknowledgement within one business day.
    Fulfillment and resolution policy

    +
    +
    +
    + + +
    +
    + `; + } + + function accordion(items) { + const instance = ++accordion.counter; + return ` +
    + ${items + .map( + ([question, answer], index) => ` +
    + +
    + ${escapeHtml(answer)} +
    +
    + `, + ) + .join("")} +
    + `; + } + accordion.counter = 0; + + function renderPage() { + const pages = { + home: homePage, + collection: collectionPage, + testing: testingPage, + bundles: bundlesPage, + learn: learnPage, + faq: faqPage, + about: aboutPage, + policy: () => (/eligibility(\.html)?$/.test(window.location.pathname) ? eligibilityPage() : policyPage()), + product: () => productPage(PRODUCTS.find((product) => product.slug === PRODUCT_SLUG)), + article: () => articlePage(body.dataset.article || ""), + cart: cartPage, + checkout: checkoutPage, + confirmation: confirmationPage, + "lot-record": lotRecordPage, + 404: notFoundPage, + }; + /* The lot record is addressed by query string and linked from product + pages, cart lines and receipts, so it also renders from its own path. + That keeps the link honest even if the shell's data-page is not set. */ + const renderer = /lot-record(\.html)?$/.test(window.location.pathname) + ? lotRecordPage + : pages[PAGE] || notFoundPage; + layout(renderer()); + } + + function readCart() { + try { + const parsed = JSON.parse(localStorage.getItem(CART_KEY) || "[]"); + if (!Array.isArray(parsed)) return []; + return parsed + .filter((item) => ALL_CART_ITEMS.some((candidate) => candidate.slug === item.slug)) + .map((item) => { + const requested = Math.max(1, Number.parseInt(item.quantity, 10) || 1); + /* A cart can sit in storage for weeks. Stock is re-checked on read so a + stale saved quantity can never walk into checkout above what exists. + Unsellable lines keep their quantity: they are surfaced and removed + by the blocked notice rather than silently rewritten. */ + const units = availabilityFor(item.slug).units; + const ceiling = units > 0 ? Math.min(MAX_QUANTITY, units) : MAX_QUANTITY; + return { slug: item.slug, quantity: Math.max(1, Math.min(requested, ceiling)) }; + }); + } catch { + return []; + } + } + + let cart = readCart(); + let lastFocusedElement = null; + let toastTimer = null; + + function saveCart() { + localStorage.setItem(CART_KEY, JSON.stringify(cart)); + renderCart(); + } + + function cartItemData(slug) { + return ALL_CART_ITEMS.find((item) => item.slug === slug); + } + + function cartTotal() { + return cart.reduce((total, line) => { + const item = cartItemData(line.slug); + return total + (item ? item.price * line.quantity : 0); + }, 0); + } + + function cartCount() { + return cart.reduce((total, line) => total + line.quantity, 0); + } + + function readCheckoutDraft() { + try { + const parsed = JSON.parse(localStorage.getItem(CHECKOUT_KEY) || "{}"); + return parsed && typeof parsed === "object" ? parsed : {}; + } catch (error) { + return {}; + } + } + + function writeCheckoutDraft(draft) { + try { + localStorage.setItem(CHECKOUT_KEY, JSON.stringify(draft)); + } catch (error) { + /* storage unavailable; the draft simply does not persist */ + } + } + + function readOrders() { + try { + const parsed = JSON.parse(localStorage.getItem(ORDER_KEY) || "[]"); + return Array.isArray(parsed) ? parsed : []; + } catch (error) { + return []; + } + } + + function shippingMethod(id) { + return SHIPPING_METHODS.find((method) => method.id === id) || SHIPPING_METHODS[0]; + } + + /* Single source of truth for money. The cart page, every checkout step, the + review table and the confirmation receipt all read from this, so a number + can never disagree with itself between screens. */ + function priceBreakdown(draft = {}) { + const subtotal = cartTotal(); + const method = shippingMethod(draft.shippingMethod); + const promo = PROMO_CODES[(draft.promo || "").toUpperCase()] || null; + + let discount = 0; + if (promo && promo.type === "percent") discount = Math.round(subtotal * (promo.value / 100)); + + const discounted = Math.max(0, subtotal - discount); + let shipping = method.price; + if (subtotal >= FREE_SHIPPING_THRESHOLD && method.id === "standard") shipping = 0; + if (promo && promo.type === "shipping") shipping = Math.max(0, Math.round(shipping * (1 - promo.value / 100))); + + const tax = Math.round(discounted * TAX_RATE); + return { + subtotal, + discount, + shipping, + tax, + total: discounted + shipping + tax, + promo, + method, + freeShippingRemaining: Math.max(0, FREE_SHIPPING_THRESHOLD - subtotal), + }; + } + + function summaryRows(breakdown) { + const rows = [[`Subtotal (${cartCount()} ${cartCount() === 1 ? "item" : "items"})`, money.format(breakdown.subtotal), ""]]; + if (breakdown.discount > 0) { + rows.push([`Discount · ${escapeHtml(breakdown.promo.label)}`, `-${money.format(breakdown.discount)}`, "is-credit"]); + } + rows.push([`Shipping · ${escapeHtml(breakdown.method.name)}`, breakdown.shipping === 0 ? "Free" : money.format(breakdown.shipping), ""]); + rows.push(["Estimated tax", money.format(breakdown.tax), ""]); + return rows + .map(([label, value, cls]) => `
    ${label}${value}
    `) + .join(""); + } + + function orderSummaryPanel(breakdown, options = {}) { + const { showItems = true } = options; + const items = showItems + ? cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + +
    + ${escapeHtml(item.name)} + ${escapeHtml(item.code)} · ${escapeHtml(item.strength)} · Qty ${line.quantity} + ${lotTraceRows(item.slug, { link: false }).join("")} +
    + ${money.format(item.price * line.quantity)} +
    + `; + }) + .join("") + : ""; + + return ` + + `; + } + + /* The drawer is a full-height grid (auto 1fr auto), so a short cart left ~196px + of dead white between the last line and the footer. Rather than collapse the + drawer, that region now carries the two things a cart is actually for: + progress toward free shipping, and the nearest sensible addition. */ + function shippingProgress(breakdown) { + const pct = Math.min(100, Math.round((breakdown.subtotal / FREE_SHIPPING_THRESHOLD) * 100)); + return breakdown.freeShippingRemaining > 0 + ? `
    +
    +

    Add ${money.format(breakdown.freeShippingRemaining)} for free standard shipping.

    +
    ` + : `
    +
    +

    Standard shipping is free on this order.

    +
    `; + } + + function drawerCrossSell() { + const inCart = new Set(cart.map((line) => line.slug)); + /* A side drawer pins its footer, so a short cart always leaves a void + somewhere between the last line and the summary. Rather than move the gap + around, fill it: the fewer lines in the cart, the more suggestions shown. + One line gets four, a full cart gets one. */ + const room = Math.max(1, 5 - cart.length); + const picks = PRODUCTS + .filter((p) => !inCart.has(p.slug) && availabilityFor(p.slug).sellable) + .slice(0, room); + if (!picks.length) return ""; + return ` +
    +

    Pairs with your cart

    + ${picks.map((p) => ` +
    + +
    + ${escapeHtml(p.name)} + ${escapeHtml(p.code)} · ${escapeHtml(p.strength)} +
    + +
    `).join("")} +
    + `; + } + + function renderCart() { + const count = cart.reduce((total, item) => total + item.quantity, 0); + document.querySelectorAll("[data-cart-count]").forEach((element) => { + element.textContent = String(count); + element.hidden = count === 0; + }); + + const itemsRoot = document.querySelector("[data-cart-items]"); + const footerRoot = document.querySelector("[data-cart-footer]"); + if (!itemsRoot || !footerRoot) return; + + if (cart.length === 0) { + itemsRoot.innerHTML = ` +
    +
    + Your cart is empty. +

    Browse the catalog to add a peptide or bundle.

    + Shop products +
    +
    +
    +

    Start with these

    + ${PRODUCTS.filter((entry) => availabilityFor(entry.slug).sellable).slice(0, 4).map((entry) => ` +
    + +
    + ${escapeHtml(entry.name)} + ${escapeHtml(entry.code)} · ${escapeHtml(entry.strength)} +
    + +
    `).join("")} +
    + `; + footerRoot.innerHTML = ` +

    Cart is stored in this browser. Nothing here is stocked, shippable, or for sale.

    + `; + return; + } + + itemsRoot.innerHTML = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + +
    +
    +

    ${escapeHtml(item.name)}

    + ${money.format(item.price * line.quantity)} +
    +

    ${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

    +
    +
    + + ${line.quantity} + +
    + ${money.format(item.price)} each + +
    +
    +
    + `; + }) + .join("") + drawerCrossSell(); + + const breakdown = priceBreakdown(readCheckoutDraft()); + footerRoot.innerHTML = ` + ${shippingProgress(breakdown)} +
    Subtotal${money.format(cartTotal())}
    + Checkout + ${PAGE === "cart" ? "" : `View cart`} +

    Cart is stored in this browser. Checkout runs end to end but cannot take payment.

    + `; + } + + function addToCart(slug, quantity = 1) { + const item = cartItemData(slug); + if (!item) return; + + /* Stock gate. This is the authoritative check: disabling a button is a UI + courtesy, this is what actually prevents an unsellable line existing. */ + const stock = availabilityFor(slug); + if (!stock.sellable) { + showToast(`${item.name} is unavailable.`); + return; + } + + const ceiling = Math.min(MAX_QUANTITY, stock.units); + const existing = cart.find((line) => line.slug === slug); + const requested = Math.max(1, Number.parseInt(quantity, 10) || 1); + const alreadyInCart = existing ? existing.quantity : 0; + const safeQuantity = Math.max(0, Math.min(requested, ceiling - alreadyInCart)); + + if (safeQuantity === 0) { + showToast(`Only ${ceiling} of ${item.name} available.`); + return; + } + + if (existing) { + existing.quantity = Math.min(ceiling, existing.quantity + safeQuantity); + } else { + cart.push({ slug, quantity: safeQuantity }); + } + saveCart(); + openDrawer("cart"); + track("add_to_cart", { + item_id: item.code, + item_name: item.name, + item_category: item.category, + price: item.price, + quantity: safeQuantity, + demo_only: true, + }); + } + + function changeCartQuantity(slug, delta) { + const line = cart.find((item) => item.slug === slug); + const product = cartItemData(slug); + if (!line || !product) return; + line.quantity = Math.max(0, Math.min(MAX_QUANTITY, availabilityFor(slug).units, line.quantity + delta)); + if (line.quantity === 0) { + cart = cart.filter((item) => item.slug !== slug); + track("remove_from_cart", { item_id: product.code, item_name: product.name, demo_only: true }); + } else { + track("cart_quantity_changed", { + item_id: product.code, + item_name: product.name, + quantity: line.quantity, + demo_only: true, + }); + } + saveCart(); + } + + function showToast(message) { + const toast = document.querySelector("[data-toast]"); + if (!toast) return; + window.clearTimeout(toastTimer); + toast.textContent = message; + toast.dataset.open = "true"; + toastTimer = window.setTimeout(() => { + toast.dataset.open = "false"; + }, 2800); + } + + function drawerElements(type) { + const drawer = document.querySelector(type === "cart" ? "[data-cart-drawer]" : "[data-mobile-drawer]"); + const other = document.querySelector(type === "cart" ? "[data-mobile-drawer]" : "[data-cart-drawer]"); + return { drawer, other }; + } + + function openDrawer(type) { + const { drawer, other } = drawerElements(type); + const backdrop = document.querySelector("[data-drawer-backdrop]"); + if (!drawer || !backdrop) return; + lastFocusedElement = document.activeElement; + other.dataset.open = "false"; + other.setAttribute("aria-hidden", "true"); + drawer.dataset.open = "true"; + drawer.setAttribute("aria-hidden", "false"); + backdrop.dataset.open = "true"; + body.classList.add("drawer-open"); + drawer.querySelector("button, a")?.focus(); + if (type === "cart") { + track("view_cart", { item_count: cart.reduce((sum, item) => sum + item.quantity, 0), demo_only: true }); + } + } + + function closeDrawers() { + const backdrop = document.querySelector("[data-drawer-backdrop]"); + document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer]").forEach((drawer) => { + drawer.dataset.open = "false"; + drawer.setAttribute("aria-hidden", "true"); + }); + if (backdrop) backdrop.dataset.open = "false"; + body.classList.remove("drawer-open"); + if (lastFocusedElement instanceof HTMLElement) lastFocusedElement.focus(); + } + + function initDrawersAndCart() { + renderCart(); + document.addEventListener("click", (event) => { + if (event.target.closest("[data-drawer-backdrop]")) { + closeDrawers(); + return; + } + const target = event.target.closest("button, a"); + if (!target) return; + + if (target.matches("[data-cart-open]")) openDrawer("cart"); + if (target.matches("[data-cart-close], [data-menu-close]")) closeDrawers(); + if (target.matches("[data-menu-open]")) openDrawer("menu"); + + if (target.dataset.addProduct) { + addToCart(target.dataset.addProduct); + } + + if (target.dataset.pdpAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.pdpAdd, quantity); + } + + if (target.dataset.mobileAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.mobileAdd, quantity); + } + + if (target.dataset.cartQuantity) { + changeCartQuantity(target.dataset.cartQuantity, Number(target.dataset.delta)); + } + + if (target.dataset.removeProduct) { + const item = cartItemData(target.dataset.removeProduct); + cart = cart.filter((line) => line.slug !== target.dataset.removeProduct); + saveCart(); + if (item) { + showToast(`${item.name} removed from the cart.`); + track("remove_from_cart", { item_id: item.code, item_name: item.name, demo_only: true }); + } + } + + if (target.matches("[data-clear-cart]")) { + cart = []; + saveCart(); + showToast("Cart cleared."); + track("cart_cleared", { demo_only: true }); + } + }); + + document.addEventListener("keydown", (event) => { + if (event.key === "Escape") closeDrawers(); + if (event.key !== "Tab") return; + const openDrawerElement = document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"]', + ); + if (!openDrawerElement) return; + const focusable = [ + ...openDrawerElement.querySelectorAll( + 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])', + ), + ]; + if (focusable.length === 0) return; + const first = focusable[0]; + const last = focusable.at(-1); + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + }); + } + + function searchMatches(query) { + const normalized = query.trim().toLowerCase(); + if (!normalized) return sellableFirst(PRODUCTS).slice(0, 5); + /* Predictive search is a curated rail too. A query like "10 mg", "metabolic" + or "vial" used to hand the top two rows to the entries that cannot be + bought. They still match and still show, they just stop leading. */ + return sellableFirst( + PRODUCTS.filter((product) => + [product.name, product.code, product.category, product.strength, product.descriptor] + .join(" ") + .toLowerCase() + .includes(normalized), + ), + ).slice(0, 6); + } + + function initSearch() { + const input = document.querySelector("#site-search"); + const results = document.querySelector("#search-results"); + if (!input || !results) return; + let activeIndex = -1; + + const close = () => { + results.hidden = true; + input.setAttribute("aria-expanded", "false"); + input.removeAttribute("aria-activedescendant"); + activeIndex = -1; + }; + + const open = () => { + const matches = searchMatches(input.value); + results.setAttribute("role", matches.length ? "listbox" : "status"); + results.innerHTML = matches.length + ? matches + .map( + (product, index) => ` + + + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}${escapeHtml(product.code)} · ${escapeHtml(product.category)} + ${money.format(product.price)} + + `, + ) + .join("") + : `
    No matching catalog entry.

    Try a molecule name, product code, or research area.

    Browse all products →
    `; + results.hidden = false; + input.setAttribute("aria-expanded", "true"); + }; + + input.addEventListener("focus", open); + input.addEventListener("input", () => { + activeIndex = -1; + open(); + if (input.value.trim()) track("search", { search_term: input.value.trim().toLowerCase(), result_count: searchMatches(input.value).length }); + }); + + input.addEventListener("keydown", (event) => { + const options = [...results.querySelectorAll('[role="option"]')]; + if (event.key === "Escape") { + close(); + return; + } + if (!["ArrowDown", "ArrowUp", "Enter"].includes(event.key) || options.length === 0) return; + if (event.key === "Enter" && activeIndex >= 0) { + event.preventDefault(); + options[activeIndex].click(); + return; + } + if (event.key === "Enter") return; + event.preventDefault(); + activeIndex = + event.key === "ArrowDown" + ? Math.min(options.length - 1, activeIndex + 1) + : Math.max(0, activeIndex - 1); + options.forEach((option, index) => option.setAttribute("aria-selected", String(index === activeIndex))); + input.setAttribute("aria-activedescendant", options[activeIndex].id); + options[activeIndex].scrollIntoView({ block: "nearest" }); + }); + + document.addEventListener("click", (event) => { + if (!event.target.closest(".search-wrap")) close(); + }); + document.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") { + event.preventDefault(); + input.focus(); + } + }); + results.addEventListener("click", (event) => { + const link = event.target.closest("[data-search-result]"); + if (!link) return; + const product = PRODUCTS.find((item) => item.slug === link.dataset.searchResult); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: "predictive_search", + }); + }); + } + + function initCollection() { + const grid = document.querySelector("[data-collection-grid]"); + if (!grid) return; + const search = document.querySelector("#collection-search"); + const sort = document.querySelector("#collection-sort"); + const summary = document.querySelector("[data-result-summary]"); + const buttons = [...document.querySelectorAll("[data-filter]")]; + /* The page used to promise "use the testing state as a filter". Testing state + is identical on all ten entries, so that control could only ever have been + a no-op. Availability is the axis that actually splits the grid. */ + const availabilityToggle = document.querySelector("[data-availability-toggle]"); + const params = new URLSearchParams(window.location.search); + let category = CATEGORIES.some((item) => item.key === params.get("category")) ? params.get("category") : "all"; + let onlySellable = params.get("available") === "1"; + + const updateUrl = () => { + const next = new URL(window.location.href); + if (category === "all") next.searchParams.delete("category"); + else next.searchParams.set("category", category); + if (search.value.trim()) next.searchParams.set("q", search.value.trim()); + else next.searchParams.delete("q"); + if (onlySellable) next.searchParams.set("available", "1"); + else next.searchParams.delete("available"); + window.history.replaceState({}, "", next); + }; + + const render = () => { + const query = search.value.trim().toLowerCase(); + let filtered = PRODUCTS.filter((product) => { + const categoryMatch = category === "all" || product.categoryKey === category; + const queryMatch = + !query || + [product.name, product.code, product.category, product.strength, product.descriptor] + .join(" ") + .toLowerCase() + .includes(query); + const availabilityMatch = !onlySellable || availabilityFor(product.slug).sellable; + return categoryMatch && queryMatch && availabilityMatch; + }); + + if (sort.value === "name-asc") filtered.sort((a, b) => a.name.localeCompare(b.name)); + if (sort.value === "price-asc") filtered.sort((a, b) => a.price - b.price); + if (sort.value === "price-desc") filtered.sort((a, b) => b.price - a.price); + /* Featured is the editorial order, so it follows the same rule as every + other curated list: all ten entries stay in the grid, the two that are + not offered just stop taking the first two cards. An explicit name or + price sort is the visitor's own instruction and is never overridden. */ + if (sort.value === "featured") filtered = sellableFirst(filtered); + + grid.innerHTML = filtered.length + ? filtered.map((product) => productCard(product)).join("") + : ` +
    +

    No catalog entries match.

    +

    Clear the search, widen the research area, or drop the availability filter.

    + +
    + `; + summary.textContent = `${filtered.length} ${filtered.length === 1 ? "catalog entry" : "catalog entries"}${category === "all" ? "" : ` in ${CATEGORIES.find((item) => item.key === category).name}`}${onlySellable ? " available to order" : ""}`; + buttons.forEach((button) => button.setAttribute("aria-pressed", String(button.dataset.filter === category))); + if (availabilityToggle) availabilityToggle.setAttribute("aria-pressed", String(onlySellable)); + updateUrl(); + }; + + search.value = params.get("q") || ""; + buttons.forEach((button) => { + button.addEventListener("click", () => { + category = button.dataset.filter; + render(); + track("filter_apply", { filter_name: "research_area", filter_value: category }); + }); + }); + if (availabilityToggle) { + availabilityToggle.addEventListener("click", () => { + onlySellable = !onlySellable; + render(); + track("filter_apply", { filter_name: "availability", filter_value: onlySellable ? "sellable_only" : "all" }); + }); + } + if (availabilityToggle) { + availabilityToggle.addEventListener("click", () => { + onlySellable = !onlySellable; + render(); + track("filter_apply", { filter_name: "availability", filter_value: onlySellable ? "sellable_only" : "all" }); + }); + } + search.addEventListener("input", render); + search.addEventListener("change", () => { + track("search", { search_term: search.value.trim().toLowerCase(), surface: "collection" }); + }); + sort.addEventListener("change", () => { + render(); + track("sort_changed", { sort_value: sort.value }); + }); + grid.addEventListener("click", (event) => { + if (!event.target.closest("[data-reset-collection]")) return; + category = "all"; + search.value = ""; + sort.value = "featured"; + onlySellable = false; + render(); + search.focus(); + }); + render(); + } + + function initProduct() { + if (PAGE !== "product") return; + const product = PRODUCTS.find((item) => item.slug === PRODUCT_SLUG); + if (!product) return; + track("view_item", { + item_id: product.code, + item_name: product.name, + item_category: product.category, + price: product.price, + demo_only: true, + }); + + try { + const recent = JSON.parse(localStorage.getItem(RECENT_KEY) || "[]").filter((slug) => slug !== product.slug); + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug, ...recent].slice(0, 6))); + } catch { + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug])); + } + + const quantity = document.querySelector("#pdp-quantity"); + const normalizeQuantity = () => { + quantity.value = String(Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity.value, 10) || 1))); + }; + document.querySelectorAll("[data-pdp-quantity-change]").forEach((button) => { + button.addEventListener("click", () => { + quantity.value = String(Number(quantity.value || 1) + Number(button.dataset.pdpQuantityChange)); + normalizeQuantity(); + }); + }); + quantity?.addEventListener("change", normalizeQuantity); + + document.querySelectorAll("[data-media-src]").forEach((button) => { + button.addEventListener("click", () => { + const media = document.querySelector("[data-main-media]"); + if (!media) return; + media.innerHTML = productImage(product, true); + const image = media.querySelector("img"); + const label = media.querySelector(".product-image-label"); + image.src = button.dataset.mediaSrc; + image.alt = button.dataset.mediaAlt; + image.style.transform = `scale(${button.dataset.mediaZoom || "1"})`; + image.style.transformOrigin = button.dataset.mediaView === "label" ? "center 40%" : "center"; + if (label) label.hidden = button.dataset.mediaView === "scale"; + document.querySelectorAll("[data-media-src]").forEach((thumb) => thumb.setAttribute("aria-current", String(thumb === button))); + track("product_media_selected", { item_id: product.code, media_label: button.getAttribute("aria-label") }); + }); + }); + + const mainAdd = document.querySelector("[data-pdp-add]"); + const mobileBar = document.querySelector("[data-mobile-add]"); + if (mainAdd && mobileBar && "IntersectionObserver" in window) { + const observer = new IntersectionObserver(([entry]) => { + const hasScrolledPastPrimaryAction = !entry.isIntersecting && entry.boundingClientRect.top < 0; + mobileBar.dataset.visible = String( + hasScrolledPastPrimaryAction && window.matchMedia("(max-width: 640px)").matches, + ); + }); + observer.observe(mainAdd); + } + } + + function initAccordions() { + document.querySelectorAll(".accordion-trigger").forEach((button) => { + button.addEventListener("click", () => { + const expanded = button.getAttribute("aria-expanded") === "true"; + button.setAttribute("aria-expanded", String(!expanded)); + const panel = document.querySelector(`#${CSS.escape(button.getAttribute("aria-controls"))}`); + if (panel) panel.hidden = expanded; + }); + }); + } + + function initTestingLookup() { + const form = document.querySelector("[data-testing-lookup]"); + if (!form) return; + const input = form.querySelector("input"); + const results = document.querySelector("[data-lookup-results]"); + const params = new URLSearchParams(window.location.search); + if (params.get("product")) input.value = params.get("product"); + + const run = () => { + const query = input.value.trim().toLowerCase(); + const matches = PRODUCTS.filter((product) => `${product.name} ${product.code}`.toLowerCase().includes(query)); + if (!query) { + results.innerHTML = `

    Enter a product name or code.

    Examples: Retatrutide, OVO-001, or BPC-157.

    `; + } else if (matches.length === 0) { + results.innerHTML = `

    No matching OVO Labs code.

    Try a product name, a code from OVO-001 through OVO-010, or browse the full testing table below.

    `; + } else { + results.innerHTML = matches + .map( + (product) => ` +
    +

    ${escapeHtml(product.code)} · ${escapeHtml(product.category)}

    +

    ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

    + ${(() => { const t = testingFor(product.slug); return t + ? `

    Lot ${escapeHtml(t.lot)} · reported ${escapeHtml(t.date)}

    +
    ${testingFields(product.slug).map((f) => ` +
    + ${escapeHtml(f.label)} + ${escapeHtml(f.result)} + ${escapeHtml(f.method)} +
    `).join("")}
    ` + : `

    Testing status: No result reported for identity, content / mass, purity profile, sterility, or endotoxin.

    `; })()} +

    Open the product page ${icons.arrow}

    +
    + `, + ) + .join(""); + } + track("quality_lookup", { search_term: query, result_count: matches.length }); + }; + + form.addEventListener("click", (event) => { + const fill = event.target.closest("[data-fill-promo]"); + if (!fill) return; + event.preventDefault(); + form.querySelector("#promo-input").value = fill.getAttribute("data-fill-promo"); + form.dispatchEvent(new Event("submit", { cancelable: true, bubbles: true })); + }); + + form.addEventListener("submit", (event) => { + event.preventDefault(); + run(); + }); + if (input.value) run(); + } + + function initNewsletter() { + document.querySelectorAll("[data-newsletter]").forEach((form) => { + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector('input[type="email"]'); + if (!input.checkValidity()) { + input.reportValidity(); + return; + } + form.hidden = true; + const success = form.parentElement.querySelector("[data-newsletter-success]"); + success.hidden = false; + success.textContent = "Preference saved on this device. Nothing was transmitted, and no email will be sent."; + track("newsletter_demo_completed", { storage: "none", transmitted: false }); + }); + }); + } + + function initLinkTracking() { + document.addEventListener("click", (event) => { + const productLink = event.target.closest("[data-product-link]"); + if (!productLink) return; + const product = PRODUCTS.find((item) => item.slug === productLink.dataset.productLink); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: PAGE, + }); + }); + + if (PAGE === "collection") { + track("view_item_list", { + item_list_name: "catalog", + item_count: PRODUCTS.length, + }); + } + } + + /* Bound exactly once, outside initCartPage. An earlier version registered this + inside initCartPage AND called initCartPage from within the handler, so every + interaction doubled the listener count: 1, 2, 4, 8... Nine clicks produced 512 + full-page renders. The repaint below no longer re-binds. */ + let cartPageListenerBound = false; + + function bindCartPageRepaint() { + if (cartPageListenerBound || PAGE !== "cart") return; + cartPageListenerBound = true; + + /* Quantity and remove are handled by the shared cart handlers, which only + repaint the drawer. On the cart page the summary, the free-shipping bar and + the Checkout total all read from the same cart, so they must repaint too or + the page shows a stale total. Deferred so the shared handler has already + written the cart before we re-render from it. */ + document.addEventListener("click", (event) => { + if (!event.target.closest("[data-cart-quantity], [data-remove-product], [data-clear-cart]")) return; + setTimeout(() => { + renderPage(); + bindPromoForm(); + renderCart(); + }, 0); + }); + } + + function initCartPage() { + if (PAGE !== "cart") return; + bindCartPageRepaint(); + bindPromoForm(); + } + + function bindPromoForm() { + /* Two promo forms exist, one on the cart page and one in the checkout order + summary. This bailed unless PAGE was "cart" and then bound only the first + match, so the checkout Apply button was inert: a control that looks + interactive and does nothing. */ + if (PAGE !== "cart" && PAGE !== "checkout") return; + const form = document.querySelector("[data-promo-form]"); + if (!form) return; + + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector("#promo-input"); + const feedback = form.querySelector("[data-promo-feedback]"); + const code = (input.value || "").trim().toUpperCase(); + const draft = readCheckoutDraft(); + + if (!code) { + delete draft.promo; + writeCheckoutDraft(draft); + feedback.textContent = ""; + feedback.classList.remove("is-error"); + renderPage(); + bindPromoForm(); + return; + } + + if (!PROMO_CODES[code]) { + feedback.textContent = `${code} is not a valid code.`; + feedback.classList.add("is-error"); + return; + } + + draft.promo = code; + writeCheckoutDraft(draft); + track("promo_applied", { code }); + renderPage(); + bindPromoForm(); + }); + } + + function initCheckout() { + if (PAGE !== "checkout") return; + + const form = document.querySelector("[data-checkout-form]"); + if (!form) return; + + let current = "contact"; + + const stepEl = (key) => form.querySelector(`[data-step="${key}"]`); + const setError = (name, message) => { + const el = form.querySelector(`[data-error-for="${name}"]`); + if (el) el.textContent = message || ""; + const input = form.querySelector(`#${name}`) || form.querySelector(`[name="${name}"]`); + if (input) input.classList.toggle("has-error", Boolean(message)); + }; + + function paintStepper() { + const order = CHECKOUT_STEPS.map((s) => s.key); + const idx = order.indexOf(current); + document.querySelectorAll("[data-step-indicator]").forEach((el, i) => { + el.classList.toggle("is-current", i === idx); + el.classList.toggle("is-done", i < idx); + /* A completed step is a place you can go back to, so its pill becomes a + live control. Everything at or ahead of the current step stays + disabled: you cannot skip validation by clicking the stepper. */ + const jump = el.querySelector("[data-step-jump]"); + if (jump) jump.disabled = i >= idx; + }); + } + + function show(key) { + current = key; + CHECKOUT_STEPS.forEach((s) => { + const el = stepEl(s.key); + if (el) el.hidden = s.key !== key; + }); + paintStepper(); + if (key === "review") paintReview(); + window.scrollTo({ top: 0, behavior: "smooth" }); + track("checkout_step", { step: key }); + } + + function collect() { + const data = readCheckoutDraft(); + new FormData(form).forEach((value, key) => { + if (key === "cardNumber" || key === "cardExpiry" || key === "cardCvc") return; // never persisted + data[key] = typeof value === "string" ? value.trim() : value; + }); + const terms = form.querySelector('[name="terms"]'); + if (terms) data.terms = terms.checked; + return data; + } + + function persist() { + writeCheckoutDraft(collect()); + } + + const RULES = { + contact: [ + ["email", (v) => /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v), "Enter a valid email address."], + /* The label says optional and the input carries no required attribute, + so an empty value must pass. A value that is present is still + checked, because a half-typed number is worse than none. */ + ["phone", (v) => v === "" || v.replace(/\D/g, "").length >= 10, "Enter a phone number with at least 10 digits, or leave it blank."], + ], + shipping: [ + ["firstName", (v) => v.length >= 1, "Enter a first name."], + ["lastName", (v) => v.length >= 1, "Enter a last name."], + ["address1", (v) => v.length >= 4, "Enter a street address."], + ["city", (v) => v.length >= 2, "Enter a city."], + ["state", (v) => v.length === 2, "Select a state."], + ["zip", (v) => /^\d{5}(-\d{4})?$/.test(v), "Enter a 5 digit ZIP code."], + ], + delivery: [], + payment: [], + }; + + function validate(key) { + const rules = RULES[key] || []; + let ok = true; + rules.forEach(([name, test, message]) => { + const input = form.querySelector(`#${name}`) || form.querySelector(`[name="${name}"]`); + const value = input ? String(input.value || "").trim() : ""; + if (!test(value)) { + setError(name, message); + if (ok && input) input.focus(); + ok = false; + } else { + setError(name, ""); + } + }); + return ok; + } + + function refreshSummary() { + const holder = document.querySelector("[data-checkout-summary]"); + if (holder) holder.innerHTML = orderSummaryPanel(priceBreakdown(collect())); + const total = priceBreakdown(collect()).total; + const place = form.querySelector("[data-place-order]"); + if (place) place.textContent = `Place order · ${money.format(total)}`; + } + + function paintReview() { + const d = collect(); + const b = priceBreakdown(d); + const holder = form.querySelector("[data-review-blocks]"); + if (!holder) return; + const block = (title, bodyHtml, target) => ` +
    +
    +

    ${escapeHtml(title)}

    + +
    +

    ${bodyHtml}

    +
    + `; + holder.innerHTML = [ + block("Contact", `${escapeHtml(d.email || "")}${d.phone ? `
    ${escapeHtml(formatPhone(d.phone))}` : ""}`, "contact"), + block( + "Ship to", + `${escapeHtml(d.firstName || "")} ${escapeHtml(d.lastName || "")}
    ${escapeHtml(d.address1 || "")}${d.address2 ? `
    ${escapeHtml(d.address2)}` : ""}
    ${escapeHtml(d.city || "")}, ${escapeHtml(d.state || "")} ${escapeHtml(d.zip || "")}`, + "shipping", + ), + block("Delivery", `${escapeHtml(b.method.name)} · ${escapeHtml(b.method.detail)}`, "delivery"), + block("Payment", "Not collected. This storefront cannot charge a card.", "payment"), + ].join(""); + } + + form.addEventListener("input", () => { + persist(); + refreshSummary(); + }); + form.addEventListener("change", () => { + persist(); + refreshSummary(); + }); + + form.addEventListener("click", (event) => { + const next = event.target.closest("[data-next]"); + const back = event.target.closest("[data-back]"); + const edit = event.target.closest("[data-edit]"); + const place = event.target.closest("[data-place-order]"); + + if (next) { + const key = next.getAttribute("data-next"); + if (!validate(key)) return; + persist(); + const order = CHECKOUT_STEPS.map((s) => s.key); + show(order[order.indexOf(key) + 1]); + } + if (back) show(back.getAttribute("data-back")); + if (edit) show(edit.getAttribute("data-edit")); + if (place) placeOrder(); + }); + + function placeOrder() { + const terms = form.querySelector('[name="terms"]'); + if (terms && !terms.checked) { + setError("terms", "Please confirm you have read the policies."); + terms.focus(); + return; + } + setError("terms", ""); + + const d = collect(); + const b = priceBreakdown(d); + const now = new Date(); + const eta = new Date(now.getTime() + (b.method.id === "cold" ? 1 : b.method.id === "express" ? 2 : 5) * 86400000); + const fmt = { month: "short", day: "numeric" }; + + const order = { + reference: `OVO-${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}${String(now.getDate()).padStart(2, "0")}-${Math.floor(1000 + Math.random() * 9000)}`, + placedAt: now.toISOString(), + placedLabel: now.toLocaleDateString("en-US", fmt), + etaLabel: eta.toLocaleDateString("en-US", fmt), + email: d.email || "", + phone: d.phone || "", + firstName: d.firstName || "", + lastName: d.lastName || "", + address1: d.address1 || "", + address2: d.address2 || "", + city: d.city || "", + state: d.state || "", + zip: d.zip || "", + shippingMethodName: b.method.name, + shippingMethodDetail: b.method.detail, + items: cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return null; + /* The order records the lot it was placed against. Without this the + receipt has nothing to match the delivered vial label to, and the + promise of a lot COA before dispatch stays an assertion. */ + const lots = lotTrace(item.slug); + return { + slug: item.slug, name: item.name, code: item.code, + strength: item.strength, price: item.price, + quantity: line.quantity, isBundle: Boolean(item.productSlugs), + lots, + lot: lots.length === 1 ? lots[0].lot : "", + lotDate: lots.length === 1 ? lots[0].date : "", + }; + }) + .filter(Boolean), + totals: { subtotal: b.subtotal, discount: b.discount, shipping: b.shipping, tax: b.tax, total: b.total }, + }; + + try { + localStorage.setItem(ORDER_KEY, JSON.stringify([order, ...readOrders()].slice(0, 10))); + } catch (error) { + /* storage full or blocked; the confirmation page will report no order */ + } + + cart = []; + saveCart(); + localStorage.removeItem(CHECKOUT_KEY); + track("order_placed", { reference: order.reference, value: order.totals.total }); + window.location.href = path("order-confirmation.html"); + } + + /* The aside's discount form had no handler on this page: bindPromoForm() + returns early unless PAGE === "cart", so Apply fell through to a native + GET, reloaded checkout.html?promo=... and dropped the shopper back on + step 1 with no code applied and no message. It is bound here, against the + same draft the summary already reads from, so nothing re-renders. */ + const promoForm = document.querySelector("[data-promo-form]"); + if (promoForm) { + promoForm.addEventListener("submit", (event) => { + event.preventDefault(); + const input = promoForm.querySelector("#promo-input"); + const feedback = promoForm.querySelector("[data-promo-feedback]"); + const code = (input.value || "").trim().toUpperCase(); + const draft = readCheckoutDraft(); + if (!code) { + delete draft.promo; + writeCheckoutDraft(draft); + feedback.textContent = ""; + feedback.classList.remove("is-error"); + refreshSummary(); + return; + } + if (!PROMO_CODES[code]) { + feedback.textContent = `${code} is not a valid code.`; + feedback.classList.add("is-error"); + return; + } + draft.promo = code; + writeCheckoutDraft(draft); + feedback.textContent = `Applied: ${PROMO_CODES[code].label}`; + feedback.classList.remove("is-error"); + refreshSummary(); + track("promo_applied", { code }); + }); + } + + /* The stepper pills are buttons; paintStepper enables the completed ones. + They reuse the same show() the Review step's Edit links already prove is + safe to jump backwards with. */ + const stepper = document.querySelector("[data-stepper]"); + if (stepper) { + stepper.addEventListener("click", (event) => { + const jump = event.target.closest("[data-step-jump]"); + if (jump && !jump.disabled) show(jump.getAttribute("data-step-jump")); + }); + } + + /* The locked card fields are readonly, not disabled, so they were live tab + stops on values that can never change. */ + form.querySelectorAll("input[readonly]").forEach((el) => { + el.tabIndex = -1; + }); + + show("contact"); + refreshSummary(); + } + + renderPage(); + initCartPage(); + initCheckout(); + initDrawersAndCart(); + initSearch(); + initCollection(); + initProduct(); + initAccordions(); + initTestingLookup(); + initNewsletter(); + initLinkTracking(); + track("page_view", { page_title: document.title, page_path: window.location.pathname }); +})(); diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/index.html b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/index.html new file mode 100644 index 0000000..2b564a0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/index.html @@ -0,0 +1,114 @@ + + + + + + Standard Peptide Labs · Cobalt Standard + + + + + + + + + +
    + + + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/styles.css b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/styles.css new file mode 100644 index 0000000..d4f5e35 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/cobalt/styles.css @@ -0,0 +1,415 @@ +:root { + --bg: #f5f6fa; + --surface: #ffffff; + --surface-soft: #edf1ff; + --line: #e1e4ec; + --line-strong: #c8cdd8; + --ink: #0d0f13; + --text-2: #565d6b; + --text-3: #626a78; + --slate: #090b10; + --cobalt: #1747ff; + --cobalt-deep: #0d32bd; + --cobalt-tint: #eaf0ff; + --gold: #1747ff; + --gold-bright: #1747ff; + --shadow: 0 20px 60px rgba(18, 43, 128, .12); +} + +body { + background: var(--surface); +} + +.concept-banner { + background: var(--cobalt); + color: #fff; + font-size: 9px; + font-weight: 700; + letter-spacing: .11em; + text-transform: uppercase; +} + +.site-header { + background: rgba(255, 255, 255, .96); + border-bottom-color: var(--line); +} + +.wordmark-mark { + border-color: var(--cobalt); + background: var(--cobalt); + color: #fff; +} + +.wordmark-name { + letter-spacing: .08em; +} + +.wordmark-category { + color: var(--cobalt); + letter-spacing: .22em; +} + +.primary-nav a::after { + background: var(--cobalt); +} + +.search-wrap:focus-within { + border-color: var(--cobalt); + box-shadow: 0 0 0 3px rgba(23, 71, 255, .12); +} + +.home-hero { + padding-top: clamp(44px, 6vw, 86px); + background: #fff; +} + +.home-hero .hero-grid { + min-height: min(760px, calc(100vh - 140px)); + grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr); + align-items: stretch; + gap: clamp(40px, 6vw, 92px); +} + +.hero-copy { + padding-block: clamp(42px, 7vw, 104px); + align-self: center; +} + +.hero-copy .eyebrow { + width: fit-content; + margin-bottom: 22px; + padding: 7px 10px; + border: 1px solid rgba(23, 71, 255, .28); + background: var(--cobalt-tint); + color: var(--cobalt); +} + +.hero-copy h1 { + max-width: 700px; + color: var(--ink); + font-size: clamp(52px, 6.2vw, 94px); + font-weight: 620; + letter-spacing: -.062em; + line-height: .91; +} + +.hero-copy h1 span { + display: block; + color: var(--cobalt); +} + +.hero-copy > p:not(.eyebrow) { + max-width: 610px; + margin-top: 28px; + color: var(--text-2); + font-size: clamp(15px, 1.3vw, 18px); + line-height: 1.65; +} + +.hero-actions { + margin-top: 32px; +} + +.hero-actions .button-primary { + border-color: var(--ink); + background: var(--ink); + color: #fff; +} + +.hero-actions .button-primary:hover { + border-color: var(--cobalt); + background: var(--cobalt); +} + +.hero-actions .button-secondary { + border-color: var(--line-strong); + background: #fff; + color: var(--ink); +} + +.hero-actions .button-secondary:hover { + border-color: var(--cobalt); + color: var(--cobalt); +} + +.home-hero .hero-visual { + min-height: 620px; + overflow: hidden; + border-radius: 0; + background: #f2f4f8; + box-shadow: none; +} + +.home-hero .hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.hero-copy .hero-coa-card { + margin-top: 38px; + border: 1px solid var(--line); + border-left: 3px solid var(--cobalt); + background: #fff; + box-shadow: 0 18px 45px rgba(19, 34, 78, .08); +} + +.hero-copy .hero-coa-card:hover { + border-color: var(--cobalt); +} + +.hero-copy .hero-coa-tag { + background: var(--cobalt-tint); + color: var(--cobalt); +} + +.hero-copy .hero-coa-row.is-reported strong { + color: var(--cobalt); +} + +.trust-strip { + margin-top: 0; + border-block: 1px solid #dbe1f0; + background: var(--cobalt-tint); +} + +.trust-item { + border-right-color: #ced8f3; +} + +.trust-label { + color: var(--cobalt); +} + +.section { + padding-block: clamp(78px, 9vw, 138px); +} + +.section-head .eyebrow, +.category-section-head .eyebrow { + color: var(--cobalt); +} + +.section-head h2 { + max-width: 720px; + font-size: clamp(38px, 4.6vw, 66px); + font-weight: 590; + letter-spacing: -.05em; +} + +.text-link { + color: var(--ink); + text-decoration-color: var(--cobalt); +} + +.text-link:hover { + color: var(--cobalt); +} + +.product-grid { + gap: 18px; +} + +.product-card { + overflow: hidden; + border-color: var(--line); + border-radius: 0; + background: #fff; + box-shadow: none; +} + +.product-card:hover { + border-color: var(--cobalt); + box-shadow: 0 18px 48px rgba(20, 49, 141, .12); + transform: translateY(-3px); +} + +.product-image-wrap { + background: linear-gradient(155deg, #fafbff, #edf0f6); +} + +.product-image-label { + border-color: rgba(23, 71, 255, .18); + background: rgba(255, 255, 255, .9); +} + +.product-category { + color: var(--cobalt); +} + +.testing-micro { + background: var(--cobalt-tint); +} + +.testing-micro a, +.product-card .price { + color: var(--cobalt); +} + +.product-card .add-button { + border-color: var(--ink); + background: var(--ink); + color: #fff; +} + +.product-card .add-button:hover { + border-color: var(--cobalt); + background: var(--cobalt); +} + +.category-card:hover { + border-color: var(--cobalt); +} + +.category-card svg { + color: var(--cobalt); +} + +.section-surface { + background: #f3f5fa; +} + +.testing-feature { + padding: clamp(42px, 6vw, 80px); + background: var(--slate); +} + +.testing-feature-copy .eyebrow { + color: #7e9cff; +} + +.testing-feature-copy h2 { + font-size: clamp(38px, 4.5vw, 64px); + letter-spacing: -.05em; +} + +.testing-feature-copy .button-secondary { + border-color: #fff; + background: #fff; + color: var(--ink); +} + +.testing-feature-copy .button-secondary:hover { + border-color: var(--cobalt); + background: var(--cobalt); + color: #fff; +} + +.testing-document { + border: 1px solid rgba(255, 255, 255, .12); + background: #fff; + box-shadow: 0 28px 70px rgba(0, 0, 0, .28); +} + +.document-head { + border-top: 3px solid var(--cobalt); +} + +.document-tag.is-reported { + background: var(--cobalt-tint); + color: var(--cobalt); +} + +.document-row.is-reported::before { + background: var(--cobalt); +} + +.bundle-card:hover, +.education-card:hover { + border-color: var(--cobalt); +} + +.newsletter { + background: var(--cobalt); +} + +.newsletter .button, +.newsletter .button-secondary:last-child { + border-color: #fff; + background: #fff; + color: var(--cobalt); +} + +.site-footer { + background: var(--slate); +} + +.drawer, +.mobile-menu { + border-color: var(--line); +} + +:focus-visible { + outline-color: var(--cobalt); +} + +@media (max-width: 960px) { + .home-hero { + padding-top: 0; + } + + .home-hero .hero-grid { + min-height: 0; + grid-template-columns: 1fr; + gap: 0; + } + + .hero-copy { + padding-block: 64px 48px; + } + + .home-hero .hero-visual { + min-height: 520px; + margin-inline: calc(50% - 50vw); + } +} + +@media (max-width: 640px) { + .concept-banner { + min-height: 32px; + padding-inline: 16px; + font-size: 7px; + letter-spacing: .08em; + } + + .hero-copy { + padding-top: 52px; + } + + .hero-copy h1 { + font-size: clamp(50px, 14.5vw, 67px); + } + + .hero-copy > p:not(.eyebrow) { + font-size: 14px; + } + + .hero-actions { + align-items: stretch; + flex-direction: column; + } + + .hero-actions .button { + width: 100%; + } + + .hero-copy .hero-coa-card { + margin-top: 32px; + } + + .home-hero .hero-visual { + min-height: 400px; + } + + .trust-strip { + grid-template-columns: repeat(2, 1fr); + } + + .trust-item:nth-child(2) { + border-right: 0; + } + + .testing-feature { + padding: 32px 20px; + } +} diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/gold/index.html b/biologix-strategy-board/ovo-labs-warm/color-lab/gold/index.html new file mode 100644 index 0000000..6d13d7b --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/gold/index.html @@ -0,0 +1,621 @@ + + + + + + Standard Peptide Labs · Research, held to a higher standard + + + + + + + + + + +
    +

    + Complimentary priority shipping on orders over $250 + + For research use only +

    +
    + + + +
    +
    +
    +
    +

    Independent, lot-specific analysis

    +

    Research, held to a higher standard.

    +

    + High-purity research peptides, documented without shortcuts. Every current lot + is linked to its identity, purity, content, and testing scope. +

    + +
    +
    +
    Purity floor
    +
    ≥ 98%
    +
    +
    +
    Current lots
    +
    COA linked
    +
    +
    +
    Dispatch
    +
    1–2 days
    +
    +
    +
    + + +
    +
    + +
    +
    +
    + + Third-party analyzedIndependent US laboratory +
    +
    + + Lot-specific recordsEvery current batch named +
    +
    + + Full COA accessMethods, scope, and results +
    +
    + + Cold-chain consideredPurpose-built fulfillment +
    +
    +
    + +
    +
    +
    +
    +

    Most requested

    +

    Research bestsellers

    +
    + + Shop all peptides + + +
    + +
    + + + + + + + +
    +
    +
    + +
    +
    +
    + A sealed glass laboratory ampoule in precise directional light + Method over marketing. +
    + +
    +

    The Standard Protocol

    +

    Proof belongs beside the product.

    +

    + A purity number without a method, sample reference, and named lot is incomplete. + We publish the record that gives each result its meaning. +

    + +
    +
    +
    + Certificate of analysis + SPL-RT15 / CURRENT LOT +
    + Verified +
    +
    +
    +
    Identity
    +
    Conforms
    + LC-MS +
    +
    +
    Purity profile
    +
    99.61%
    + RP-HPLC +
    +
    +
    Peptide content
    +
    15.08 mg
    + Gravimetric +
    +
    +

    + Reported for the named sample and method scope. Sterility and endotoxin are + not represented by these results. +

    +
    + + +
    +
    +
    + +
    + +
    + +
    +
    +
    +

    The buyer standard

    +

    Three proofs before the cart.

    +
    + + Visible + On the product page +
    +
    + +
    +
    +
    01 · Lot identity
    +
    + The exact current lot stays attached to the product instead of disappearing + behind a generic quality badge. +
    +
    + 01 + Named current lot Linked before purchase +
    +
    +
    +
    02 · Method
    +
    + Identity, content, and purity remain separate results, with the reported + method visible beside each one. +
    +
    + 02 + Specific measurements No blanket quality seal +
    +
    +
    +
    03 · Scope
    +
    + Unreported fields stay unreported. The page never turns a missing result into + an implied pass. +
    +
    + 03 + Bounded evidence Missing means visible +
    +
    +
    +
    +
    + +
    + +
    + +
    +
    +
    +

    The current collection

    +

    Exacting standards. Clearly documented.

    +
    + + Explore all peptides + + +
    +
    +
    + + + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/gold/styles.css b/biologix-strategy-board/ovo-labs-warm/color-lab/gold/styles.css new file mode 100644 index 0000000..430ab5e --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/gold/styles.css @@ -0,0 +1,2101 @@ +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("../assets/fonts/inter-var-latin-ext.woff2") format("woff2"); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, + U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, + U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("../assets/fonts/inter-var-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, + U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191-2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +:root { + --ink: #0a0a09; + --ink-soft: #373633; + --muted: #696762; + --line: #dedbd3; + --line-dark: #c7c1b3; + --cream: #f6f2e9; + --cream-deep: #eee8dc; + --paper: #ffffff; + --gold: #a9884e; + --gold-light: #c9ae78; + --shell: min(1280px, calc(100vw - 64px)); + --shell-wide: min(1384px, calc(100vw - 40px)); + --sans: "Inter", "Helvetica Neue", Arial, sans-serif; + --serif: "Iowan Old Style", "Baskerville", "Times New Roman", serif; + --ease: cubic-bezier(0.2, 0.75, 0.25, 1); +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; + background: var(--paper); +} + +body { + margin: 0; + color: var(--ink); + background: var(--paper); + font-family: var(--sans); + font-size: 15px; + line-height: 1.5; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +img, +svg { + display: block; +} + +img { + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +select, +textarea { + font: inherit; +} + +h1, +h2, +h3, +p, +dl, +dd, +blockquote { + margin: 0; +} + +ul { + margin: 0; + padding: 0; + list-style: none; +} + +.skip-link { + position: fixed; + z-index: 1000; + top: 10px; + left: 10px; + padding: 11px 16px; + color: #fff; + background: var(--ink); + font-size: 12px; + font-weight: 650; + transform: translateY(-150%); +} + +.skip-link:focus { + transform: translateY(0); +} + +:focus-visible { + outline: 2px solid var(--ink); + outline-offset: 4px; +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.shell-wide { + width: var(--shell-wide); + margin-inline: auto; +} + +.announcement { + min-height: 34px; + display: grid; + place-items: center; + padding: 7px 24px; + color: #fff; + background: var(--ink); +} + +.announcement p { + display: flex; + gap: 14px; + align-items: center; + font-size: 9px; + font-weight: 550; + letter-spacing: 0.13em; + line-height: 1.4; + text-align: center; + text-transform: uppercase; +} + +.announcement strong { + color: #e6d6b4; + font-weight: 600; +} + +.announcement-divider { + width: 1px; + height: 10px; + background: rgba(255, 255, 255, 0.36); +} + +.site-header { + position: sticky; + z-index: 90; + top: 0; + background: rgba(255, 255, 255, 0.97); + border-bottom: 1px solid var(--line); + backdrop-filter: blur(18px); +} + +.header-main { + min-height: 78px; + display: grid; + grid-template-columns: 1fr auto 1fr; + gap: 32px; + align-items: center; +} + +.primary-nav { + display: flex; + gap: clamp(18px, 2vw, 32px); + align-items: center; +} + +.primary-nav-right { + justify-content: flex-end; +} + +.primary-nav a { + position: relative; + display: inline-flex; + gap: 7px; + align-items: center; + padding-block: 7px; + color: #282724; + font-size: 11px; + font-weight: 560; + letter-spacing: 0.055em; + text-transform: uppercase; +} + +.primary-nav a::after { + position: absolute; + right: 0; + bottom: 1px; + left: 0; + height: 1px; + background: var(--ink); + content: ""; + transform: scaleX(0); + transform-origin: right; + transition: transform 250ms var(--ease); +} + +.primary-nav a:hover::after { + transform: scaleX(1); + transform-origin: left; +} + +.primary-nav svg { + width: 15px; + height: 15px; + fill: none; + stroke: currentColor; + stroke-linecap: round; + stroke-width: 1.5; +} + +.bag-count { + display: grid; + width: 18px; + height: 18px; + place-items: center; + color: #fff; + background: var(--ink); + border-radius: 50%; + font-size: 9px; +} + +.wordmark { + display: inline-flex; + gap: 12px; + align-items: center; + justify-self: center; + white-space: nowrap; +} + +.wordmark-mark { + position: relative; + width: 27px; + height: 27px; + border: 1px solid var(--gold); + border-radius: 50%; +} + +.wordmark-mark::before, +.wordmark-mark::after { + position: absolute; + background: var(--gold); + content: ""; +} + +.wordmark-mark::before { + top: 5px; + bottom: 5px; + left: 50%; + width: 1px; + transform: translateX(-50%); +} + +.wordmark-mark::after { + top: 50%; + right: 5px; + left: 5px; + height: 1px; + transform: translateY(-50%); +} + +.wordmark-type { + display: grid; + gap: 2px; +} + +.wordmark-type strong { + font-size: 15px; + font-weight: 720; + letter-spacing: 0.16em; + line-height: 1; +} + +.wordmark-type span { + color: #44423e; + font-size: 7px; + font-weight: 600; + letter-spacing: 0.39em; + line-height: 1; +} + +.category-nav { + min-height: 42px; + display: flex; + gap: 38px; + align-items: center; + justify-content: center; + border-top: 1px solid #eeeae3; +} + +.category-nav a { + position: relative; + padding: 13px 0 12px; + color: #4d4b46; + font-size: 10px; + font-weight: 550; + letter-spacing: 0.075em; + white-space: nowrap; + text-transform: uppercase; +} + +.category-nav a::after { + position: absolute; + right: 0; + bottom: -1px; + left: 0; + height: 2px; + background: var(--gold); + content: ""; + opacity: 0; + transform: scaleX(0.45); + transition: + opacity 180ms ease, + transform 180ms ease; +} + +.category-nav a:hover, +.category-nav a.is-active { + color: var(--ink); +} + +.category-nav a:hover::after, +.category-nav a.is-active::after { + opacity: 1; + transform: scaleX(1); +} + +.mobile-menu { + display: none; +} + +.hero { + padding: 30px 0 20px; +} + +.hero-grid { + min-height: 648px; + display: grid; + grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr); +} + +.hero-copy { + display: flex; + padding: clamp(72px, 7vw, 112px) clamp(54px, 6vw, 96px) 54px; + flex-direction: column; + justify-content: center; + background: var(--cream); + border: 1px solid var(--line); + border-right: 0; +} + +.eyebrow { + display: flex; + gap: 9px; + align-items: center; + color: #4d4a44; + font-size: 9px; + font-weight: 680; + letter-spacing: 0.18em; + line-height: 1.4; + text-transform: uppercase; +} + +.eyebrow > span { + width: 5px; + height: 5px; + background: var(--gold); + border-radius: 50%; + box-shadow: 0 0 0 3px rgba(169, 136, 78, 0.13); +} + +.hero h1 { + max-width: 690px; + margin-top: 23px; + font-size: clamp(54px, 5.25vw, 79px); + font-weight: 520; + letter-spacing: -0.065em; + line-height: 0.96; +} + +.hero h1 em { + display: block; + margin-top: 5px; + font-family: var(--serif); + font-size: 1.07em; + font-weight: 400; + letter-spacing: -0.055em; + line-height: 1; +} + +.hero-lede { + max-width: 560px; + margin-top: 30px; + color: #4f4c46; + font-size: 16px; + line-height: 1.66; +} + +.hero-actions { + display: flex; + gap: 28px; + align-items: center; + margin-top: 34px; +} + +.button { + min-height: 50px; + display: inline-flex; + gap: 22px; + align-items: center; + justify-content: center; + padding: 14px 22px; + border: 1px solid transparent; + font-size: 10px; + font-weight: 680; + letter-spacing: 0.105em; + line-height: 1; + text-transform: uppercase; + transition: + background 180ms ease, + color 180ms ease, + border-color 180ms ease, + transform 180ms var(--ease); +} + +.button:hover { + transform: translateY(-2px); +} + +.button svg, +.arrow-link svg { + width: 17px; + height: 17px; + fill: none; + stroke: currentColor; + stroke-linecap: square; + stroke-linejoin: miter; + stroke-width: 1.4; +} + +.button-dark { + color: #fff; + background: var(--ink); + border-color: var(--ink); +} + +.button-dark:hover { + background: #272622; + border-color: #272622; +} + +.button-light { + color: var(--ink); + background: #fff; + border-color: #fff; +} + +.button-light:hover { + color: #fff; + background: transparent; +} + +.text-link { + position: relative; + padding: 7px 0; + color: var(--ink); + font-size: 10px; + font-weight: 650; + letter-spacing: 0.075em; + text-transform: uppercase; +} + +.text-link::after { + position: absolute; + right: 0; + bottom: 1px; + left: 0; + height: 1px; + background: var(--ink); + content: ""; + transition: transform 220ms var(--ease); + transform-origin: left; +} + +.text-link:hover::after { + transform: scaleX(0.35); + transform-origin: right; +} + +.hero-facts { + display: grid; + margin-top: auto; + padding-top: 36px; + grid-template-columns: repeat(3, 1fr); +} + +.hero-facts div { + padding-left: 18px; + border-left: 1px solid var(--line-dark); +} + +.hero-facts div:first-child { + padding-left: 0; + border-left: 0; +} + +.hero-facts dt { + color: #77736b; + font-size: 8px; + font-weight: 650; + letter-spacing: 0.135em; + text-transform: uppercase; +} + +.hero-facts dd { + margin-top: 6px; + font-size: 12px; + font-weight: 620; +} + +.hero-visual { + position: relative; + min-width: 0; + overflow: hidden; + background: #f1f2f3; +} + +.hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 54% center; + filter: grayscale(1) contrast(1.01); + transition: transform 900ms var(--ease); +} + +.hero-visual:hover > img { + transform: scale(1.015); +} + +.hero-index { + position: absolute; + top: 27px; + right: 29px; + display: grid; + justify-items: end; + color: #343433; +} + +.hero-index span { + font-size: 8px; + font-weight: 680; + letter-spacing: 0.19em; +} + +.hero-index strong { + margin-top: 2px; + font-family: var(--serif); + font-size: 32px; + font-weight: 400; + line-height: 1; +} + +.hero-record { + position: absolute; + right: 28px; + bottom: 28px; + width: min(370px, calc(100% - 56px)); + padding: 20px 22px; + background: rgba(255, 255, 255, 0.95); + border: 1px solid rgba(169, 136, 78, 0.6); + box-shadow: 0 18px 54px rgba(17, 17, 16, 0.11); + backdrop-filter: blur(12px); + transition: + transform 200ms var(--ease), + box-shadow 200ms ease; +} + +.hero-record:hover { + transform: translateY(-3px); + box-shadow: 0 24px 64px rgba(17, 17, 16, 0.16); +} + +.record-topline { + display: flex; + align-items: center; + justify-content: space-between; + color: #6c6963; + font-size: 8px; + font-weight: 620; + letter-spacing: 0.11em; + text-transform: uppercase; +} + +.verified-label { + display: inline-flex; + gap: 7px; + align-items: center; + color: #4e4535; +} + +.verified-label i, +.lot-link i, +.coa-status i, +.reviews-section footer em i { + width: 5px; + height: 5px; + display: inline-block; + flex: 0 0 auto; + background: var(--gold); + border-radius: 50%; + box-shadow: 0 0 0 3px rgba(169, 136, 78, 0.13); +} + +.hero-record > strong { + display: block; + margin-top: 17px; + font-size: 14px; + font-weight: 680; + letter-spacing: -0.015em; +} + +.record-result { + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 9px; + color: #64615b; + font-size: 11px; +} + +.record-result b { + color: var(--ink); + font-size: 9px; + letter-spacing: 0.08em; + text-decoration: underline; + text-underline-offset: 4px; + text-transform: uppercase; +} + +.proof-rail { + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.proof-rail-grid { + display: grid; + grid-template-columns: repeat(4, 1fr); +} + +.proof-rail-grid > div { + min-height: 100px; + display: flex; + gap: 14px; + align-items: center; + padding: 24px 28px; + border-left: 1px solid var(--line); +} + +.proof-rail-grid > div:first-child { + border-left: 0; +} + +.proof-rail svg { + width: 23px; + height: 23px; + flex: 0 0 auto; + fill: none; + stroke: var(--gold); + stroke-linecap: square; + stroke-linejoin: miter; + stroke-width: 1.2; +} + +.proof-rail span { + display: grid; + gap: 3px; + color: #77736c; + font-size: 9px; + line-height: 1.35; +} + +.proof-rail strong { + color: var(--ink); + font-size: 10px; + font-weight: 680; + letter-spacing: 0.035em; + text-transform: uppercase; +} + +.section { + padding: 120px 0; +} + +.section-heading { + display: flex; + gap: 40px; + align-items: end; + justify-content: space-between; + margin-bottom: 42px; +} + +.section-heading h2, +.finder-heading h2, +.reviews-intro h2, +.testing-copy h2, +.final-cta h2 { + margin-top: 13px; + font-size: clamp(40px, 4vw, 58px); + font-weight: 520; + letter-spacing: -0.055em; + line-height: 1.02; +} + +.arrow-link { + display: inline-flex; + gap: 17px; + align-items: center; + padding: 9px 0; + border-bottom: 1px solid var(--ink); + font-size: 9px; + font-weight: 680; + letter-spacing: 0.105em; + white-space: nowrap; + text-transform: uppercase; +} + +.arrow-link svg { + transition: transform 180ms var(--ease); +} + +.arrow-link:hover svg { + transform: translateX(4px); +} + +.product-grid { + display: grid; + gap: 18px; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.product-card { + min-width: 0; +} + +.product-image { + position: relative; + height: 408px; + display: block; + overflow: hidden; + background: #f3f3f2; + border: 1px solid #e8e7e4; +} + +.product-image > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: center 44%; + filter: grayscale(1) contrast(1.01); + transition: + transform 650ms var(--ease), + filter 650ms ease; +} + +.product-image:hover > img { + filter: grayscale(1) contrast(1.04); + transform: scale(1.028); +} + +.product-tag { + position: absolute; + z-index: 3; + top: 14px; + left: 14px; + padding: 7px 9px; + color: #fff; + background: var(--ink); + font-size: 7px; + font-weight: 680; + letter-spacing: 0.13em; + text-transform: uppercase; +} + +.product-tag-outline { + color: #46433e; + background: rgba(255, 255, 255, 0.84); + border: 1px solid var(--line-dark); +} + +.vial-label { + position: absolute; + z-index: 2; + top: 52.8%; + left: 50%; + width: 34%; + display: grid; + padding: 10px 4px 8px; + place-items: center; + color: var(--ink); + background: rgba(255, 255, 255, 0.74); + text-align: center; + transform: translate(-50%, -50%); + pointer-events: none; +} + +.vial-label::after { + width: 26px; + height: 1px; + display: block; + margin-top: 7px; + background: var(--gold); + content: ""; +} + +.vial-label small { + color: #77736a; + font-size: 5px; + font-weight: 650; + letter-spacing: 0.14em; +} + +.vial-label strong { + margin-top: 5px; + font-size: clamp(6px, 0.57vw, 8px); + font-weight: 720; + letter-spacing: 0.06em; + white-space: nowrap; +} + +.vial-label em { + margin-top: 2px; + color: #5d5a54; + font-size: 4px; + font-style: normal; + font-weight: 600; + letter-spacing: 0.08em; +} + +.product-info { + padding: 18px 1px 0; +} + +.product-title-row { + display: flex; + gap: 16px; + align-items: start; + justify-content: space-between; +} + +.product-title-row p { + color: #77746e; + font-size: 8px; + font-weight: 640; + letter-spacing: 0.105em; + text-transform: uppercase; +} + +.product-title-row h3 { + margin-top: 5px; + font-size: 15px; + font-weight: 640; + letter-spacing: -0.018em; +} + +.product-title-row h3 a { + background-image: linear-gradient(var(--ink), var(--ink)); + background-position: 0 100%; + background-repeat: no-repeat; + background-size: 0 1px; + transition: background-size 220ms var(--ease); +} + +.product-title-row h3 a:hover { + background-size: 100% 1px; +} + +.price { + padding-top: 16px; + font-size: 13px; + font-weight: 620; + white-space: nowrap; +} + +.product-specs { + display: flex; + gap: 9px; + margin-top: 15px; + color: #5f5c56; + font-size: 9px; +} + +.product-specs span { + display: inline-flex; + align-items: center; +} + +.product-specs span + span::before { + width: 1px; + height: 9px; + display: inline-block; + margin-right: 9px; + background: var(--line-dark); + content: ""; +} + +.lot-link { + min-height: 39px; + display: flex; + align-items: center; + justify-content: space-between; + margin-top: 16px; + padding: 10px 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + color: #55524c; + font-size: 8px; +} + +.lot-link > span { + display: inline-flex; + gap: 7px; + align-items: center; +} + +.lot-link strong { + color: var(--ink); + font-size: 8px; + font-weight: 680; + letter-spacing: 0.06em; + text-decoration: underline; + text-underline-offset: 3px; + text-transform: uppercase; +} + +.testing-section { + background: var(--cream); +} + +.testing-grid { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); +} + +.testing-image { + position: relative; + min-height: 720px; + overflow: hidden; + background: #ebe7df; +} + +.testing-image img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 57% center; + filter: saturate(0.54) contrast(1.05); +} + +.testing-image::after { + position: absolute; + inset: 16px; + border: 1px solid rgba(255, 255, 255, 0.54); + content: ""; + pointer-events: none; +} + +.testing-image-caption { + position: absolute; + right: 34px; + bottom: 29px; + padding: 8px 10px; + color: #fff; + background: rgba(10, 10, 9, 0.9); + font-size: 8px; + font-weight: 650; + letter-spacing: 0.14em; + text-transform: uppercase; +} + +.testing-copy { + min-width: 0; + padding: 62px clamp(42px, 5.3vw, 78px); + background: #fff; + border-top: 1px solid var(--line); + border-right: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.testing-copy h2 { + max-width: 560px; +} + +.testing-lede { + max-width: 570px; + margin-top: 22px; + color: #5c5953; + font-size: 14px; + line-height: 1.7; +} + +.coa-document { + margin-top: 34px; + border: 1px solid var(--line-dark); +} + +.coa-head { + min-height: 75px; + display: flex; + gap: 18px; + align-items: center; + justify-content: space-between; + padding: 18px 20px; + background: var(--cream); + border-bottom: 1px solid var(--line-dark); +} + +.coa-head > div { + display: grid; + gap: 6px; +} + +.coa-head span { + color: #77736b; + font-size: 7px; + font-weight: 650; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.coa-head strong { + font-size: 11px; + font-weight: 700; + letter-spacing: 0.055em; +} + +.coa-head .coa-status { + display: inline-flex; + gap: 8px; + align-items: center; + color: #504634; +} + +.coa-document dl > div { + display: grid; + min-height: 55px; + padding: 15px 20px; + grid-template-columns: minmax(0, 1fr) auto 86px; + gap: 20px; + align-items: center; + border-bottom: 1px solid var(--line); +} + +.coa-document dt { + color: #5e5b55; + font-size: 9px; +} + +.coa-document dd { + font-size: 11px; + font-weight: 680; +} + +.coa-document dl span { + color: #77736c; + font-size: 7px; + font-weight: 650; + letter-spacing: 0.08em; + text-align: right; +} + +.coa-document > p { + padding: 14px 20px 16px; + color: #79766f; + font-size: 8px; + line-height: 1.55; +} + +.testing-actions { + display: flex; + gap: 26px; + align-items: center; + margin-top: 27px; +} + +.finder-heading { + max-width: 760px; + margin: 0 auto 54px; + text-align: center; +} + +.finder-heading .eyebrow { + justify-content: center; +} + +.finder-heading > p:last-child { + max-width: 610px; + margin: 21px auto 0; + color: #69665f; + font-size: 13px; + line-height: 1.65; +} + +.finder-grid { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + border-top: 1px solid var(--line-dark); + border-left: 1px solid var(--line-dark); +} + +.finder-grid > a { + min-height: 192px; + display: grid; + padding: 34px; + grid-template-columns: auto 1fr auto; + gap: 28px; + align-items: start; + border-right: 1px solid var(--line-dark); + border-bottom: 1px solid var(--line-dark); + transition: + background 220ms ease, + color 220ms ease; +} + +.finder-grid > a:hover { + color: #fff; + background: var(--ink); +} + +.finder-number { + color: var(--gold); + font-family: var(--serif); + font-size: 20px; + font-style: italic; + line-height: 1; +} + +.finder-grid h3 { + font-size: 19px; + font-weight: 610; + letter-spacing: -0.025em; +} + +.finder-grid p { + max-width: 330px; + margin-top: 12px; + color: #6a6760; + font-size: 11px; + line-height: 1.55; + transition: color 220ms ease; +} + +.finder-grid > a:hover p { + color: rgba(255, 255, 255, 0.67); +} + +.finder-grid svg { + width: 21px; + height: 21px; + fill: none; + stroke: currentColor; + stroke-width: 1.2; + transition: transform 220ms var(--ease); +} + +.finder-grid > a:hover svg { + transform: translateX(5px); +} + +.reviews-section { + background: var(--cream); +} + +.reviews-intro { + display: grid; + margin-bottom: 50px; + grid-template-columns: minmax(0, 0.95fr) minmax(260px, 0.55fr); + column-gap: 70px; +} + +.reviews-intro .eyebrow { + grid-column: 1; +} + +.reviews-intro h2 { + max-width: 710px; + grid-column: 1; +} + +.rating-summary { + display: grid; + align-self: end; + justify-items: end; + grid-column: 2; + grid-row: 1 / span 2; +} + +.rating-summary > span, +.review-stars { + color: var(--gold); + font-size: 12px; + letter-spacing: 0.18em; +} + +.rating-summary strong { + margin-top: 8px; + font-family: var(--serif); + font-size: 28px; + font-weight: 400; +} + +.rating-summary em { + margin-top: 3px; + color: #77736c; + font-size: 9px; + font-style: normal; +} + +.reviews-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + border-top: 1px solid var(--line-dark); + border-left: 1px solid var(--line-dark); +} + +.reviews-grid article { + min-height: 324px; + display: flex; + padding: 34px; + flex-direction: column; + background: #fff; + border-right: 1px solid var(--line-dark); + border-bottom: 1px solid var(--line-dark); +} + +.reviews-grid blockquote { + margin-top: 28px; + font-family: var(--serif); + font-size: 22px; + line-height: 1.42; +} + +.reviews-grid footer { + display: flex; + gap: 13px; + align-items: center; + margin-top: auto; + padding-top: 30px; +} + +.review-avatar { + width: 36px; + height: 36px; + display: grid; + flex: 0 0 auto; + place-items: center; + background: var(--cream); + border: 1px solid var(--line); + border-radius: 50%; + font-size: 8px; + font-weight: 680; + letter-spacing: 0.08em; +} + +.reviews-grid footer > span:last-child { + display: grid; + gap: 4px; +} + +.reviews-grid footer strong { + font-size: 10px; + font-weight: 680; +} + +.reviews-grid footer em { + display: inline-flex; + gap: 7px; + align-items: center; + color: #77736c; + font-size: 8px; + font-style: normal; +} + +.journal-grid { + display: grid; + grid-template-columns: minmax(0, 1.14fr) minmax(0, 0.86fr); + gap: 30px; +} + +.journal-feature { + position: relative; + min-height: 612px; + display: block; + overflow: hidden; + background: var(--cream); +} + +.journal-feature > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 56% center; + filter: saturate(0.48); + transition: transform 800ms var(--ease); +} + +.journal-feature:hover > img { + transform: scale(1.025); +} + +.journal-feature::after { + position: absolute; + inset: 0; + background: linear-gradient(0deg, rgba(9, 9, 8, 0.72), transparent 51%); + content: ""; +} + +.journal-feature-copy { + position: absolute; + z-index: 2; + right: 0; + bottom: 0; + left: 0; + display: grid; + padding: 38px; + color: #fff; +} + +.journal-feature-copy small { + color: #e3d2ad; + font-size: 8px; + font-weight: 650; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.journal-feature-copy strong { + max-width: 600px; + margin-top: 10px; + font-family: var(--serif); + font-size: clamp(28px, 2.65vw, 40px); + font-weight: 400; + line-height: 1.12; +} + +.journal-feature-copy > span { + width: max-content; + margin-top: 20px; + padding-bottom: 3px; + border-bottom: 1px solid #fff; + font-size: 8px; + font-weight: 680; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.journal-list { + display: grid; + border-top: 1px solid var(--line-dark); +} + +.journal-list > a { + display: flex; + padding: 34px 8px 33px; + flex-direction: column; + border-bottom: 1px solid var(--line-dark); + transition: padding 220ms var(--ease); +} + +.journal-list > a:hover { + padding-right: 0; + padding-left: 16px; +} + +.journal-list span { + color: var(--gold); + font-size: 8px; + font-weight: 680; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.journal-list h3 { + max-width: 510px; + margin-top: 18px; + font-size: clamp(25px, 2.15vw, 32px); + font-weight: 520; + letter-spacing: -0.045em; + line-height: 1.1; +} + +.journal-list p { + max-width: 500px; + margin-top: 13px; + color: #68655f; + font-size: 11px; + line-height: 1.58; +} + +.journal-list strong { + margin-top: auto; + padding-top: 22px; + font-size: 8px; + font-weight: 680; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.journal-list b { + margin-left: 4px; + font-size: 12px; +} + +.final-cta { + padding: 74px 0; + color: var(--ink); + background: #fff; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.final-cta-inner { + display: flex; + gap: 40px; + align-items: center; + justify-content: space-between; +} + +.final-cta .eyebrow { + color: #665b48; +} + +.final-cta h2 { + max-width: 820px; + font-size: clamp(38px, 4.2vw, 61px); +} + +.site-footer { + color: var(--ink); + background: var(--cream); +} + +.footer-top { + display: grid; + padding-top: 76px; + padding-bottom: 64px; + grid-template-columns: 1.8fr repeat(3, 0.7fr); + gap: 60px; +} + +.footer-brand .wordmark { + justify-self: start; +} + +.footer-brand > p { + max-width: 350px; + margin-top: 23px; + color: #68655f; + font-size: 11px; + line-height: 1.7; +} + +.footer-top nav { + display: grid; + align-content: start; + gap: 12px; +} + +.footer-top nav h3 { + margin-bottom: 7px; + font-size: 9px; + font-weight: 720; + letter-spacing: 0.13em; + text-transform: uppercase; +} + +.footer-top nav a { + width: max-content; + color: #5e5b55; + font-size: 10px; + border-bottom: 1px solid transparent; +} + +.footer-top nav a:hover { + color: var(--ink); + border-bottom-color: var(--gold); +} + +.footer-bottom { + min-height: 74px; + display: grid; + grid-template-columns: 1fr auto 1fr; + gap: 24px; + align-items: center; + border-top: 1px solid var(--line-dark); + color: #77736b; + font-size: 8px; + letter-spacing: 0.035em; +} + +.footer-bottom > p:nth-child(2) { + color: #4d4a45; + text-align: center; + text-transform: uppercase; +} + +.footer-bottom > div { + display: flex; + gap: 22px; + justify-content: flex-end; +} + +@media (max-width: 1120px) { + :root { + --shell: min(100% - 48px, 1280px); + --shell-wide: min(100% - 32px, 1384px); + } + + .header-main { + grid-template-columns: auto 1fr auto; + } + + .primary-nav { + display: none; + } + + .header-main .wordmark { + justify-self: start; + } + + .mobile-menu { + position: relative; + display: block; + justify-self: end; + } + + .mobile-menu summary { + width: 42px; + height: 42px; + display: grid; + padding: 11px 8px; + align-content: center; + gap: 5px; + cursor: pointer; + list-style: none; + } + + .mobile-menu summary::-webkit-details-marker { + display: none; + } + + .mobile-menu summary span { + width: 25px; + height: 1px; + display: block; + background: var(--ink); + transition: transform 180ms ease; + } + + .mobile-menu[open] summary span:first-child { + transform: translateY(6px) rotate(45deg); + } + + .mobile-menu[open] summary span:nth-child(2) { + opacity: 0; + } + + .mobile-menu[open] summary span:last-child { + transform: translateY(-6px) rotate(-45deg); + } + + .mobile-menu nav { + position: fixed; + z-index: 95; + top: 112px; + right: 0; + left: 0; + display: grid; + padding: 20px 24px 26px; + background: #fff; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line-dark); + box-shadow: 0 24px 48px rgba(10, 10, 9, 0.12); + } + + .mobile-menu nav a { + padding: 13px 0; + border-bottom: 1px solid var(--line); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; + } + + .hero-grid { + grid-template-columns: minmax(0, 0.96fr) minmax(0, 1.04fr); + } + + .hero-copy { + padding-right: 48px; + padding-left: 48px; + } + + .hero h1 { + font-size: clamp(50px, 6vw, 65px); + } + + .hero-facts { + gap: 12px; + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + row-gap: 50px; + } + + .product-image { + height: 520px; + } + + .vial-label { + width: 27%; + } + + .testing-copy { + padding: 50px 38px; + } + + .proof-rail-grid { + grid-template-columns: repeat(2, 1fr); + } + + .proof-rail-grid > div:nth-child(3) { + border-left: 0; + border-top: 1px solid var(--line); + } + + .proof-rail-grid > div:nth-child(4) { + border-top: 1px solid var(--line); + } +} + +@media (max-width: 820px) { + .category-nav { + justify-content: flex-start; + overflow-x: auto; + padding-inline: 24px; + scrollbar-width: none; + } + + .category-nav::-webkit-scrollbar { + display: none; + } + + .hero-grid, + .testing-grid, + .journal-grid { + grid-template-columns: 1fr; + } + + .hero-copy { + min-height: 580px; + padding: 72px 52px 45px; + border-right: 1px solid var(--line); + } + + .hero-visual { + min-height: 590px; + } + + .testing-copy { + border-top: 0; + border-left: 1px solid var(--line); + } + + .testing-image { + min-height: 540px; + } + + .reviews-intro { + display: block; + } + + .rating-summary { + margin-top: 30px; + justify-items: start; + } + + .reviews-grid { + grid-template-columns: 1fr; + } + + .reviews-grid article { + min-height: 270px; + } + + .journal-feature { + min-height: 560px; + } + + .footer-top { + grid-template-columns: 1.7fr 1fr 1fr; + } + + .footer-brand { + grid-column: 1 / -1; + } + + .footer-bottom { + padding: 24px 0; + grid-template-columns: 1fr auto; + } + + .footer-bottom > p:nth-child(2) { + grid-column: 1 / -1; + grid-row: 2; + text-align: left; + } +} + +@media (max-width: 620px) { + :root { + --shell: calc(100vw - 40px); + --shell-wide: calc(100vw - 20px); + } + + .announcement { + min-height: 34px; + padding: 7px 15px; + } + + .announcement p > span:first-child, + .announcement-divider { + display: none; + } + + .announcement strong::after { + content: " · Priority shipping over $250"; + } + + .header-main { + min-height: 68px; + } + + .header-main .wordmark { + gap: 9px; + } + + .header-main .wordmark-mark { + width: 24px; + height: 24px; + } + + .wordmark-type strong { + font-size: 12px; + letter-spacing: 0.13em; + } + + .wordmark-type span { + font-size: 6px; + letter-spacing: 0.3em; + } + + .category-nav { + width: 100%; + gap: 28px; + padding-inline: 20px; + } + + .mobile-menu nav { + top: 102px; + } + + .hero { + padding: 10px 0 12px; + } + + .hero-copy { + min-height: 560px; + padding: 60px 24px 35px; + } + + .hero h1 { + margin-top: 20px; + font-size: clamp(46px, 13.5vw, 57px); + line-height: 0.98; + } + + .hero h1 em { + margin-top: 2px; + } + + .hero-lede { + margin-top: 24px; + font-size: 14px; + line-height: 1.62; + } + + .hero-actions { + align-items: stretch; + margin-top: 28px; + flex-direction: column; + gap: 14px; + } + + .hero-actions .button { + width: 100%; + } + + .hero-actions .text-link { + width: max-content; + align-self: center; + } + + .hero-facts { + margin-top: 36px; + padding-top: 23px; + } + + .hero-facts div { + padding-left: 10px; + } + + .hero-facts dt { + font-size: 6px; + } + + .hero-facts dd { + font-size: 9px; + } + + .hero-visual { + min-height: 438px; + } + + .hero-visual > img { + object-position: 56% center; + } + + .hero-index { + top: 18px; + right: 18px; + } + + .hero-record { + right: 14px; + bottom: 14px; + width: calc(100% - 28px); + padding: 17px; + } + + .record-topline { + font-size: 6px; + } + + .hero-record > strong { + margin-top: 13px; + font-size: 12px; + } + + .record-result { + font-size: 9px; + } + + .proof-rail-grid > div { + min-height: 94px; + padding: 18px 14px; + } + + .proof-rail svg { + width: 19px; + height: 19px; + } + + .proof-rail strong { + font-size: 7px; + } + + .proof-rail span { + font-size: 7px; + } + + .section { + padding: 78px 0; + } + + .section-heading { + align-items: flex-start; + margin-bottom: 30px; + flex-direction: column; + gap: 19px; + } + + .section-heading h2, + .finder-heading h2, + .reviews-intro h2, + .testing-copy h2 { + font-size: 39px; + } + + .product-grid { + grid-template-columns: 1fr; + row-gap: 44px; + } + + .product-image { + height: 444px; + } + + .vial-label { + width: 31%; + } + + .vial-label strong { + font-size: 8px; + } + + .testing-section { + padding: 20px 0; + } + + .testing-grid { + width: calc(100vw - 20px); + } + + .testing-image { + min-height: 355px; + } + + .testing-copy { + padding: 42px 23px 46px; + } + + .testing-lede { + font-size: 12px; + } + + .coa-head { + padding: 15px; + } + + .coa-document dl > div { + padding: 13px 15px; + grid-template-columns: 1fr auto; + gap: 12px; + } + + .coa-document dl span { + display: none; + } + + .coa-document > p { + padding: 13px 15px 15px; + } + + .testing-actions { + align-items: stretch; + flex-direction: column; + gap: 13px; + } + + .testing-actions .text-link { + width: max-content; + align-self: center; + } + + .finder-heading { + margin-bottom: 34px; + } + + .finder-grid { + grid-template-columns: 1fr; + } + + .finder-grid > a { + min-height: 175px; + padding: 26px 22px; + grid-template-columns: auto 1fr auto; + gap: 17px; + } + + .finder-grid h3 { + font-size: 17px; + } + + .reviews-intro h2 { + margin-top: 16px; + } + + .reviews-grid article { + min-height: 302px; + padding: 27px 24px; + } + + .reviews-grid blockquote { + font-size: 21px; + } + + .journal-feature { + min-height: 470px; + } + + .journal-feature-copy { + padding: 25px; + } + + .journal-feature-copy strong { + font-size: 28px; + } + + .journal-list > a { + min-height: 315px; + padding: 30px 2px; + } + + .journal-list > a:hover { + padding-left: 8px; + } + + .journal-list h3 { + font-size: 27px; + } + + .final-cta { + padding: 62px 0; + } + + .final-cta-inner { + align-items: flex-start; + flex-direction: column; + } + + .final-cta h2 { + font-size: 39px; + } + + .final-cta .button { + width: 100%; + } + + .footer-top { + padding-top: 58px; + padding-bottom: 50px; + grid-template-columns: repeat(2, 1fr); + gap: 42px 24px; + } + + .footer-brand { + grid-column: 1 / -1; + } + + .footer-top nav:last-child { + grid-column: 1 / -1; + } + + .footer-bottom { + padding: 24px 0 28px; + grid-template-columns: 1fr; + gap: 14px; + } + + .footer-bottom > p:nth-child(2) { + grid-column: auto; + grid-row: auto; + } + + .footer-bottom > div { + justify-content: flex-start; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } +} diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/index.html b/biologix-strategy-board/ovo-labs-warm/color-lab/index.html new file mode 100644 index 0000000..d90a711 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/index.html @@ -0,0 +1,112 @@ + + + + + + Peptide Homepage Color Lab + + + + + + +
    +
    + +
    +

    Internal decision board

    +

    Peptide homepage color lab

    +
    +
    +
    + 4 complete directions + Recommendation: B +
    +
    + +
    + + +
    +
    +
    + A +
    Gilded ClinicalWhite · cream · champagne gold · black
    +
    +

    The gold direction you asked for. Expensive when gold stays a detail and the purchase action stays black.

    +
    +
    + +
    + + +
    +
    +
    + +
    +
    + +

    B. Cobalt Standard

    +

    Cobalt makes the testing system feel native, gives buttons more energy than brown or gold, and stays credible to both women and men. The page can still feel female-leading through photography, casting, copy, and editorial pacing instead of making the entire identity pink.

    + +
    + +
    + +

    Category first. Labs at the end.

    +

    The mockups use Standard Peptide Labs as a working label, not a final name. These are the naming lanes worth pursuing after removing obvious live vendors such as Northline Labs and Modern Peptide Labs.

    +
    + Standard Peptide Labs + Applied Peptide Labs + Sterling Peptide Labs + Pacific Peptide Labs +
    + Direction screen only. Search results are not trademark or domain clearance. +
    +
    +
    + +
    + Use the tabs to compare the same homepage job across four systems. + Built for local visual selection · 1440 + 390 responsive +
    + + + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/index.html b/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/index.html new file mode 100644 index 0000000..9b49858 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/index.html @@ -0,0 +1,256 @@ + + + + + + Standard Peptide Labs · Oxblood Editorial + + + + + + + + + +
    + Independent lot documentation, published before purchase + View current testing +
    + + + +
    +
    +
    +

    Current lots now published

    +

    Peptides, held to a higher standard.

    +

    A focused research catalog with the lot identity, purity profile, labeled amount, and supporting record kept together. So the decision feels clear before checkout.

    + +
      +
    • 99%+reported purity
    • +
    • 3rd partylot documentation
    • +
    • Same dayorder handling
    • +
    +
    + +
    + Clear glass ampoule photographed in warm directional light +
    + Current release + Lot RTA-2407 + Open lot record ↗ +
    +

    Documented by lot · July 2026

    +
    +
    + +
    +

    Focused catalog

    +

    Traceable lots

    +

    Visible methods

    +

    Fast fulfillment

    +
    + +
    +
    +
    +

    Most requested

    +

    The shelf, edited.

    +
    +

    Start with the compounds researchers return to most. Every listing keeps the exact strength, format, lot state, and available documentation in view.

    + Shop all peptides +
    + +
    + + + + + + + +
    +
    + +
    +
    +

    The standard

    +

    Proof should sit beside the product.

    +

    A percentage without a method, sample reference, and lot number is decoration. Our product system keeps the available record attached to the exact item it describes.

    + Explore testing & COAs +
    + +
    +
    +
    + Standard Peptide Labs + Current lot record +
    + Reported +
    +
    + Retatrutide · 10 mg + RTA-2407 +
    +
    +
    Identity
    Reported LC-MS
    +
    Purity profile
    99.4% RP-HPLC
    +
    Content / mass
    10.2 mg Assay
    +
    Sterility
    Not represented
    +
    +
    + Published Jul 18, 2026 + Read full scope ↗ +
    +
    +
    + +
    +
    +

    Find your starting point

    +

    Shop by research focus.

    +

    Four clear routes into the catalog. No wall of nearly identical vials and no guessing what belongs together.

    +
    + +
    + +
    +
    + Two amber research vials in warm studio light + Clear product identity, down to the lot. +
    +
    +

    Buy with a system

    +

    Three questions before any compound enters the cart.

    +
      +
    1. 01
      Is the exact molecule and strength clear?

      The listing should make identity, format, and labeled amount impossible to miss.

    2. +
    3. 02
      Is the result tied to a current lot?

      A generic sample document is not the same thing as a record for the item shown.

    4. +
    5. 03
      Does the evidence say what it does not cover?

      Missing attributes should stay visible. Silence is not a passing result.

    6. +
    + Read the field guide +
    +
    + +
    +

    The catalog, made legible

    +

    Know the molecule.
    Know the lot.

    +

    Focused compounds, visible evidence states, and a cleaner path from question to checkout.

    + Browse the full catalog +
    +
    + + + + diff --git a/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/styles.css b/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/styles.css new file mode 100644 index 0000000..c051a11 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/color-lab/oxblood/styles.css @@ -0,0 +1,1292 @@ +@font-face { + font-family: Inter; + src: url("../assets/fonts/inter-var-latin.woff2") format("woff2"); + font-weight: 100 900; + font-style: normal; + font-display: swap; +} + +:root { + --paper: #fbfaf8; + --white: #ffffff; + --ink: #181615; + --muted: #726c68; + --line: #ded9d4; + --blush: #f4eded; + --oxblood: #721f32; + --oxblood-dark: #4c1220; + --cream: #f1ede7; + --max: 1380px; + --pad: clamp(20px, 4vw, 64px); +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + background: var(--paper); + color: var(--ink); + font-family: Inter, Arial, sans-serif; + -webkit-font-smoothing: antialiased; +} + +a { + color: inherit; + text-decoration: none; +} + +img { + display: block; + max-width: 100%; +} + +.skip-link { + position: fixed; + z-index: 100; + top: 8px; + left: 8px; + padding: 10px 14px; + transform: translateY(-140%); + background: var(--white); + border: 1px solid var(--ink); +} + +.skip-link:focus { + transform: none; +} + +.announcement { + min-height: 34px; + padding: 7px var(--pad); + display: flex; + align-items: center; + justify-content: center; + gap: 18px; + background: var(--oxblood); + color: #fff; + font-size: 10px; + font-weight: 650; + letter-spacing: .1em; + text-transform: uppercase; +} + +.announcement a { + padding-bottom: 1px; + border-bottom: 1px solid rgba(255, 255, 255, .55); +} + +.site-header { + position: relative; + z-index: 20; + min-height: 86px; + padding: 0 var(--pad); + display: grid; + grid-template-columns: 1fr auto 1fr; + align-items: center; + border-bottom: 1px solid var(--line); + background: rgba(251, 250, 248, .94); +} + +.brand { + width: fit-content; + display: inline-flex; + align-items: center; + gap: 10px; +} + +.brand-mark { + position: relative; + width: 30px; + aspect-ratio: 1; + border: 1px solid var(--oxblood); + border-radius: 50%; +} + +.brand-mark::before, +.brand-mark::after, +.brand-mark i { + content: ""; + position: absolute; + display: block; + background: var(--oxblood); +} + +.brand-mark::before { + width: 1px; + height: 18px; + top: 5px; + left: 14px; +} + +.brand-mark::after { + width: 18px; + height: 1px; + top: 14px; + left: 5px; +} + +.brand-mark i { + width: 5px; + height: 5px; + top: 12px; + left: 12px; + border-radius: 50%; +} + +.brand-copy { + display: grid; + gap: 0; + text-transform: uppercase; +} + +.brand-copy strong { + font-size: 16px; + font-weight: 760; + letter-spacing: .18em; + line-height: 1; +} + +.brand-copy small { + margin-top: 4px; + color: var(--muted); + font-size: 8px; + font-weight: 700; + letter-spacing: .33em; + line-height: 1; +} + +.main-nav { + display: flex; + align-items: center; + justify-content: center; + gap: clamp(24px, 3vw, 48px); +} + +.main-nav a, +.header-actions a { + position: relative; + font-size: 12px; + font-weight: 600; +} + +.main-nav a::after { + content: ""; + position: absolute; + right: 0; + bottom: -8px; + left: 0; + height: 1px; + background: var(--oxblood); + transform: scaleX(0); + transform-origin: left; + transition: transform .2s ease; +} + +.main-nav a:hover::after, +.main-nav a:focus-visible::after { + transform: scaleX(1); +} + +.header-actions { + display: flex; + justify-content: flex-end; + align-items: center; + gap: 26px; +} + +.bag-link { + display: inline-flex; + align-items: center; + gap: 7px; +} + +.bag-link span { + width: 20px; + height: 20px; + display: grid; + place-items: center; + border-radius: 50%; + background: var(--ink); + color: var(--white); + font-size: 9px; +} + +.hero { + min-height: min(820px, calc(100vh - 120px)); + display: grid; + grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); + border-bottom: 1px solid var(--line); +} + +.hero-copy { + padding: clamp(72px, 9vw, 148px) var(--pad) 64px; + display: flex; + flex-direction: column; + justify-content: center; +} + +.eyebrow { + margin: 0 0 22px; + color: var(--oxblood); + font-size: 10px; + font-weight: 750; + letter-spacing: .17em; + line-height: 1.4; + text-transform: uppercase; +} + +.hero-copy .eyebrow { + display: flex; + align-items: center; + gap: 9px; +} + +.hero-copy .eyebrow span { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--oxblood); + box-shadow: 0 0 0 4px rgba(114, 31, 50, .1); +} + +.hero h1 { + max-width: 720px; + margin: 0; + font-family: Georgia, "Times New Roman", serif; + font-size: clamp(54px, 6.3vw, 104px); + font-weight: 400; + letter-spacing: -.055em; + line-height: .9; +} + +.hero h1 em { + display: block; + color: var(--oxblood); + font-weight: 400; +} + +.hero-lede { + max-width: 590px; + margin: 32px 0 0; + color: #5f5955; + font-size: clamp(15px, 1.25vw, 18px); + line-height: 1.65; +} + +.hero-actions { + margin-top: 36px; + display: flex; + align-items: center; + gap: 28px; +} + +.button { + min-height: 52px; + padding: 0 24px; + display: inline-flex; + align-items: center; + justify-content: center; + border: 1px solid transparent; + font-size: 12px; + font-weight: 700; + letter-spacing: .02em; + transition: background .2s ease, color .2s ease, transform .2s ease; +} + +.button:hover { + transform: translateY(-2px); +} + +.button-primary { + background: var(--ink); + color: var(--white); +} + +.button-primary:hover { + background: var(--oxblood); +} + +.button-text { + min-height: 40px; + padding: 0 0 2px; + border-bottom-color: var(--ink); +} + +.button-text:hover { + color: var(--oxblood); + border-bottom-color: var(--oxblood); + transform: none; +} + +.hero-facts { + margin: clamp(54px, 8vh, 94px) 0 0; + padding: 22px 0 0; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 20px; + border-top: 1px solid var(--line); + list-style: none; +} + +.hero-facts li { + display: grid; + gap: 6px; +} + +.hero-facts strong { + font-family: Georgia, "Times New Roman", serif; + font-size: 20px; + font-weight: 400; +} + +.hero-facts span { + color: var(--muted); + font-size: 9px; + font-weight: 650; + letter-spacing: .09em; + text-transform: uppercase; +} + +.hero-visual { + position: relative; + min-height: 670px; + overflow: hidden; + background: var(--cream); +} + +.hero-visual::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, transparent 55%, rgba(34, 16, 20, .16)); + pointer-events: none; +} + +.hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.hero-caption { + position: absolute; + z-index: 2; + right: 28px; + bottom: 28px; + width: min(310px, calc(100% - 56px)); + padding: 21px 22px; + display: grid; + grid-template-columns: 1fr auto; + gap: 6px 18px; + background: rgba(251, 250, 248, .92); + backdrop-filter: blur(16px); +} + +.hero-caption span { + color: var(--oxblood); + font-size: 9px; + font-weight: 750; + letter-spacing: .12em; + text-transform: uppercase; +} + +.hero-caption strong { + grid-column: 1; + font-family: Georgia, "Times New Roman", serif; + font-size: 22px; + font-weight: 400; +} + +.hero-caption a { + grid-row: 1 / span 2; + grid-column: 2; + align-self: center; + padding-bottom: 3px; + border-bottom: 1px solid var(--ink); + font-size: 10px; + font-weight: 650; +} + +.vertical-note { + position: absolute; + z-index: 2; + top: 30px; + right: 28px; + margin: 0; + color: rgba(24, 22, 21, .65); + font-size: 8px; + font-weight: 750; + letter-spacing: .17em; + text-transform: uppercase; + writing-mode: vertical-rl; +} + +.trust-strip { + min-height: 74px; + padding: 0 var(--pad); + display: grid; + grid-template-columns: repeat(4, 1fr); + align-items: center; + background: var(--oxblood); + color: #fff; +} + +.trust-strip p { + margin: 0; + padding: 0 30px; + border-right: 1px solid rgba(255, 255, 255, .2); + font-family: Georgia, "Times New Roman", serif; + font-size: 16px; + font-style: italic; + text-align: center; +} + +.trust-strip p:first-child { + padding-left: 0; +} + +.trust-strip p:last-child { + padding-right: 0; + border-right: 0; +} + +.section { + padding: clamp(86px, 10vw, 150px) var(--pad); +} + +.section-heading { + margin-bottom: 48px; + display: grid; + grid-template-columns: minmax(280px, 1.1fr) minmax(260px, .8fr) auto; + gap: 40px; + align-items: end; +} + +.section-heading .eyebrow, +.finder-intro .eyebrow { + margin-bottom: 12px; +} + +.section-heading h2, +.finder h2, +.proof h2, +.editorial h2, +.closing h2 { + margin: 0; + font-family: Georgia, "Times New Roman", serif; + font-size: clamp(42px, 4.8vw, 72px); + font-weight: 400; + letter-spacing: -.045em; + line-height: .98; +} + +.section-heading > p { + max-width: 520px; + margin: 0; + color: var(--muted); + font-size: 14px; + line-height: 1.65; +} + +.text-link { + width: fit-content; + padding-bottom: 5px; + border-bottom: 1px solid var(--ink); + font-size: 11px; + font-weight: 700; +} + +.text-link:hover { + color: var(--oxblood); + border-color: var(--oxblood); +} + +.product-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 18px; +} + +.product-image { + position: relative; + height: clamp(390px, 35vw, 560px); + display: flex; + justify-content: center; + overflow: hidden; + background: #eee9e4; +} + +.product-image-cool { + background: #ececec; +} + +.product-image-blush { + background: #f1e7e8; +} + +.product-image-stone { + background: #e9e6e3; +} + +.product-image img { + width: 74%; + height: 94%; + margin-top: 9%; + object-fit: contain; + mix-blend-mode: multiply; + transition: transform .4s cubic-bezier(.2, .7, .2, 1); +} + +.product-card:hover .product-image img { + transform: scale(1.035); +} + +.product-badge { + position: absolute; + z-index: 2; + top: 16px; + left: 16px; + padding: 7px 9px; + background: var(--paper); + color: var(--oxblood); + font-size: 8px; + font-weight: 750; + letter-spacing: .1em; + text-transform: uppercase; +} + +.quick-view { + position: absolute; + z-index: 2; + right: 12px; + bottom: 12px; + left: 12px; + min-height: 42px; + display: grid; + place-items: center; + background: var(--ink); + color: #fff; + font-size: 10px; + font-weight: 700; + opacity: 0; + transform: translateY(8px); + transition: opacity .2s ease, transform .2s ease; +} + +.product-card:hover .quick-view, +.product-card:focus-within .quick-view { + opacity: 1; + transform: translateY(0); +} + +.product-info { + padding: 20px 2px 0; +} + +.product-kicker { + margin: 0 0 12px; + color: var(--muted); + font-size: 8px; + font-weight: 750; + letter-spacing: .1em; + text-transform: uppercase; +} + +.product-info h3 { + margin: 0 0 13px; + font-family: Georgia, "Times New Roman", serif; + font-size: 25px; + font-weight: 400; + letter-spacing: -.02em; +} + +.product-row, +.lot-row { + display: flex; + align-items: center; +} + +.product-row { + justify-content: space-between; + gap: 12px; + color: var(--muted); + font-size: 11px; +} + +.product-row strong { + color: var(--ink); + font-size: 13px; +} + +.lot-row { + margin-top: 16px; + padding-top: 13px; + gap: 7px; + border-top: 1px solid var(--line); + color: var(--muted); + font-size: 9px; +} + +.lot-row .status-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--oxblood); +} + +.lot-row a { + margin-left: auto; + color: var(--oxblood); + font-weight: 800; +} + +.proof { + padding: clamp(80px, 10vw, 148px) var(--pad); + display: grid; + grid-template-columns: minmax(0, .8fr) minmax(540px, 1.2fr); + gap: clamp(70px, 10vw, 170px); + align-items: center; + background: var(--oxblood-dark); + color: #fff; +} + +.eyebrow-light { + color: #d6aebb; +} + +.proof-copy p:not(.eyebrow) { + max-width: 530px; + margin: 28px 0 34px; + color: rgba(255, 255, 255, .7); + font-size: 15px; + line-height: 1.7; +} + +.button-light { + border-color: rgba(255, 255, 255, .4); + background: #fff; + color: var(--oxblood-dark); +} + +.button-light:hover { + background: transparent; + color: #fff; +} + +.lot-document { + background: var(--paper); + color: var(--ink); + box-shadow: 0 34px 70px rgba(0, 0, 0, .2); +} + +.document-head, +.document-title, +.document-foot { + padding: 24px 28px; +} + +.document-head { + display: flex; + justify-content: space-between; + border-bottom: 1px solid var(--line); +} + +.document-head > div { + display: grid; + gap: 5px; +} + +.document-head span, +.document-title span, +.document-foot { + color: var(--muted); + font-size: 9px; + font-weight: 700; + letter-spacing: .1em; + text-transform: uppercase; +} + +.document-head strong { + font-family: Georgia, "Times New Roman", serif; + font-size: 22px; + font-weight: 400; +} + +.document-head b { + height: fit-content; + padding: 7px 9px; + background: #e7f0e9; + color: #225c33; + font-size: 8px; + letter-spacing: .1em; + text-transform: uppercase; +} + +.document-title { + display: flex; + justify-content: space-between; + align-items: baseline; + background: var(--blush); +} + +.document-title strong { + color: var(--oxblood); + font-family: "Courier New", monospace; + font-size: 14px; + letter-spacing: .04em; +} + +.lot-document dl { + margin: 0; +} + +.lot-document dl > div { + min-height: 67px; + padding: 0 28px; + display: grid; + grid-template-columns: 1fr 1fr; + align-items: center; + border-bottom: 1px solid var(--line); +} + +.lot-document dt { + font-size: 11px; + font-weight: 650; +} + +.lot-document dd { + margin: 0; + display: flex; + justify-content: space-between; + color: var(--oxblood); + font-family: "Courier New", monospace; + font-size: 12px; + font-weight: 700; +} + +.lot-document dd span { + color: var(--muted); + font-size: 9px; + font-weight: 400; +} + +.lot-document .muted dd, +.lot-document .muted dt { + color: #938d89; +} + +.document-foot { + display: flex; + justify-content: space-between; + gap: 20px; +} + +.document-foot a { + color: var(--oxblood); +} + +.finder { + display: grid; + grid-template-columns: minmax(290px, .65fr) minmax(0, 1.35fr); + gap: clamp(60px, 10vw, 160px); +} + +.finder-intro > p:not(.eyebrow) { + max-width: 420px; + margin: 28px 0 0; + color: var(--muted); + font-size: 14px; + line-height: 1.7; +} + +.focus-grid { + border-top: 1px solid var(--line); +} + +.focus-grid > a { + min-height: 112px; + display: grid; + grid-template-columns: 46px 1fr auto; + gap: 22px; + align-items: center; + border-bottom: 1px solid var(--line); + transition: color .2s ease, padding .2s ease; +} + +.focus-grid > a:hover { + padding: 0 14px; + color: var(--oxblood); +} + +.focus-grid > a > span { + color: var(--muted); + font-family: "Courier New", monospace; + font-size: 10px; +} + +.focus-grid h3 { + margin: 0 0 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 25px; + font-weight: 400; +} + +.focus-grid p { + margin: 0; + color: var(--muted); + font-size: 10px; +} + +.focus-grid b { + font-size: 16px; + font-weight: 400; +} + +.editorial { + display: grid; + grid-template-columns: 1.05fr .95fr; + background: var(--blush); +} + +.editorial-image { + position: relative; + min-height: 760px; +} + +.editorial-image img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.editorial-image span { + position: absolute; + right: 22px; + bottom: 22px; + padding: 12px 14px; + background: rgba(251, 250, 248, .9); + font-size: 9px; + font-weight: 650; +} + +.editorial-copy { + padding: clamp(70px, 9vw, 140px) var(--pad); + align-self: center; +} + +.editorial-copy ol { + margin: 48px 0 34px; + padding: 0; + list-style: none; +} + +.editorial-copy li { + padding: 22px 0; + display: grid; + grid-template-columns: 40px 1fr; + gap: 18px; + border-top: 1px solid #d7cccd; +} + +.editorial-copy li:last-child { + border-bottom: 1px solid #d7cccd; +} + +.editorial-copy li > span { + padding-top: 3px; + color: var(--oxblood); + font-family: "Courier New", monospace; + font-size: 9px; +} + +.editorial-copy li strong { + font-family: Georgia, "Times New Roman", serif; + font-size: 18px; + font-weight: 400; +} + +.editorial-copy li p { + margin: 8px 0 0; + color: var(--muted); + font-size: 12px; + line-height: 1.6; +} + +.closing { + padding: clamp(100px, 13vw, 190px) var(--pad); + text-align: center; +} + +.closing h2 { + font-size: clamp(56px, 8vw, 118px); +} + +.closing > p:not(.eyebrow) { + max-width: 560px; + margin: 28px auto 32px; + color: var(--muted); + font-size: 15px; + line-height: 1.65; +} + +footer { + padding: 70px var(--pad) 24px; + background: var(--ink); + color: #fff; +} + +.footer-main { + padding-bottom: 68px; + display: grid; + grid-template-columns: 1fr 1.1fr; + gap: 70px; +} + +.brand-footer .brand-mark { + border-color: #d6aebb; +} + +.brand-footer .brand-mark::before, +.brand-footer .brand-mark::after, +.brand-footer .brand-mark i { + background: #d6aebb; +} + +.brand-footer .brand-copy small { + color: rgba(255, 255, 255, .55); +} + +.footer-main > div:first-child > p { + max-width: 330px; + margin: 24px 0 0; + color: rgba(255, 255, 255, .55); + font-family: Georgia, "Times New Roman", serif; + font-size: 21px; + line-height: 1.4; +} + +.footer-links { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 34px; +} + +.footer-links > div { + display: grid; + align-content: start; + gap: 13px; +} + +.footer-links strong { + margin-bottom: 8px; + color: #d6aebb; + font-size: 9px; + letter-spacing: .12em; + text-transform: uppercase; +} + +.footer-links a { + color: rgba(255, 255, 255, .68); + font-size: 11px; +} + +.footer-links a:hover { + color: #fff; +} + +.footer-legal { + padding-top: 20px; + display: flex; + justify-content: space-between; + gap: 20px; + border-top: 1px solid rgba(255, 255, 255, .14); + color: rgba(255, 255, 255, .4); + font-size: 8px; + font-weight: 650; + letter-spacing: .09em; + text-transform: uppercase; +} + +@media (max-width: 1120px) { + .site-header { + grid-template-columns: 1fr auto; + } + + .main-nav { + display: none; + } + + .hero { + grid-template-columns: 1fr 1fr; + } + + .hero-facts { + grid-template-columns: 1fr; + gap: 10px; + } + + .hero-facts li { + grid-template-columns: 110px 1fr; + align-items: baseline; + } + + .section-heading { + grid-template-columns: 1fr 1fr; + } + + .section-heading .text-link { + grid-column: 2; + } + + .product-grid { + grid-template-columns: repeat(2, 1fr); + row-gap: 48px; + } + + .proof { + grid-template-columns: .8fr 1.2fr; + gap: 50px; + } + + .finder { + grid-template-columns: .75fr 1.25fr; + gap: 50px; + } +} + +@media (max-width: 760px) { + .announcement { + justify-content: space-between; + gap: 8px; + font-size: 8px; + } + + .announcement span { + max-width: 190px; + } + + .site-header { + min-height: 70px; + } + + .brand-mark { + width: 27px; + } + + .brand-mark::before { + height: 16px; + top: 5px; + left: 12px; + } + + .brand-mark::after { + width: 16px; + top: 12px; + left: 5px; + } + + .brand-mark i { + top: 10px; + left: 10px; + } + + .brand-copy strong { + font-size: 13px; + } + + .brand-copy small { + font-size: 7px; + } + + .desktop-action { + display: none; + } + + .hero { + min-height: 0; + display: flex; + flex-direction: column; + } + + .hero-copy { + padding-top: 64px; + padding-bottom: 48px; + } + + .hero h1 { + font-size: clamp(52px, 16vw, 72px); + } + + .hero-lede { + margin-top: 24px; + font-size: 14px; + } + + .hero-actions { + margin-top: 28px; + align-items: stretch; + flex-direction: column; + gap: 12px; + } + + .button-text { + justify-content: flex-start; + } + + .hero-facts { + margin-top: 44px; + grid-template-columns: repeat(3, 1fr); + gap: 12px; + } + + .hero-facts li { + display: grid; + grid-template-columns: 1fr; + } + + .hero-facts strong { + font-size: 16px; + } + + .hero-facts span { + font-size: 7px; + } + + .hero-visual { + min-height: 470px; + } + + .hero-caption { + right: 18px; + bottom: 18px; + left: 18px; + width: auto; + } + + .vertical-note { + top: 18px; + right: 16px; + } + + .trust-strip { + min-height: 0; + padding-block: 18px; + grid-template-columns: repeat(2, 1fr); + row-gap: 14px; + } + + .trust-strip p { + padding: 0 8px; + font-size: 13px; + } + + .trust-strip p:nth-child(2) { + border-right: 0; + } + + .section { + padding-block: 82px; + } + + .section-heading { + margin-bottom: 34px; + display: block; + } + + .section-heading > p { + margin-top: 18px; + } + + .section-heading .text-link { + margin-top: 22px; + } + + .section-heading h2, + .finder h2, + .proof h2, + .editorial h2 { + font-size: 44px; + } + + .product-grid { + grid-template-columns: 1fr; + } + + .product-image { + height: 470px; + } + + .quick-view { + opacity: 1; + transform: none; + } + + .proof { + padding-block: 82px; + grid-template-columns: 1fr; + gap: 54px; + } + + .document-head, + .document-title, + .document-foot { + padding: 20px; + } + + .lot-document dl > div { + padding: 0 20px; + } + + .finder { + grid-template-columns: 1fr; + gap: 40px; + } + + .focus-grid > a { + min-height: 100px; + grid-template-columns: 28px 1fr auto; + gap: 14px; + } + + .editorial { + grid-template-columns: 1fr; + } + + .editorial-image { + min-height: 450px; + } + + .closing h2 { + font-size: 60px; + } + + .footer-main { + grid-template-columns: 1fr; + gap: 50px; + } + + .footer-links { + grid-template-columns: repeat(2, 1fr); + row-gap: 36px; + } + + .footer-legal { + align-items: flex-start; + flex-direction: column; + } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition: none !important; + } +} diff --git a/biologix-strategy-board/ovo-labs-warm/company.html b/biologix-strategy-board/ovo-labs-warm/company.html new file mode 100644 index 0000000..9203626 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/company.html @@ -0,0 +1,36 @@ + + + + + + About · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/eligibility.html b/biologix-strategy-board/ovo-labs-warm/eligibility.html new file mode 100644 index 0000000..8b21195 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/eligibility.html @@ -0,0 +1,36 @@ + + + + + + Research Use Eligibility · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/faq.html b/biologix-strategy-board/ovo-labs-warm/faq.html new file mode 100644 index 0000000..19d0221 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/faq.html @@ -0,0 +1,36 @@ + + + + + + Frequently Asked Questions · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/index.html b/biologix-strategy-board/ovo-labs-warm/index.html new file mode 100644 index 0000000..88e3aca --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/index.html @@ -0,0 +1,37 @@ + + + + + + OVO Labs · Peptides, without the mystery + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/lot-record.html b/biologix-strategy-board/ovo-labs-warm/lot-record.html new file mode 100644 index 0000000..4dbb7c0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/lot-record.html @@ -0,0 +1,17 @@ + + + + + + Redirecting to OVO Labs Testing and COAs + + + + + + + + +

    Continue to Testing & COAs.

    + + diff --git a/biologix-strategy-board/ovo-labs-warm/notes.html b/biologix-strategy-board/ovo-labs-warm/notes.html new file mode 100644 index 0000000..5d713b2 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/notes.html @@ -0,0 +1,36 @@ + + + + + + Learn · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/notes/choosing-by-molecule.html b/biologix-strategy-board/ovo-labs-warm/notes/choosing-by-molecule.html new file mode 100644 index 0000000..daf532a --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/notes/choosing-by-molecule.html @@ -0,0 +1,36 @@ + + + + + + Shop by Molecule, Not by Hype · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/notes/coa-boundaries.html b/biologix-strategy-board/ovo-labs-warm/notes/coa-boundaries.html new file mode 100644 index 0000000..7e5df86 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/notes/coa-boundaries.html @@ -0,0 +1,36 @@ + + + + + + What a COA Can and Cannot Show · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/notes/reading-testing-status.html b/biologix-strategy-board/ovo-labs-warm/notes/reading-testing-status.html new file mode 100644 index 0000000..79ba902 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/notes/reading-testing-status.html @@ -0,0 +1,36 @@ + + + + + + How to Read a Testing Status · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/order-confirmation.html b/biologix-strategy-board/ovo-labs-warm/order-confirmation.html new file mode 100644 index 0000000..74bea62 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/order-confirmation.html @@ -0,0 +1,36 @@ + + + + + + Order Confirmed · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/palette-preview/index.html b/biologix-strategy-board/ovo-labs-warm/palette-preview/index.html new file mode 100644 index 0000000..ecbe6a2 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/palette-preview/index.html @@ -0,0 +1,36 @@ + + + + + + OVO Labs · Female-first palette preview + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/palette-preview/palette.css b/biologix-strategy-board/ovo-labs-warm/palette-preview/palette.css new file mode 100644 index 0000000..6a2f645 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/palette-preview/palette.css @@ -0,0 +1,80 @@ +/* + * Isolated female-first color pilot. + * + * The production layout and behavior remain untouched. This route inherits the + * Fable-authored storefront and changes only its color tokens. + * + * Every text pairing below clears WCAG AA: + * espresso on ivory 13.86:1 + * secondary on ivory 6.18:1 + * berry on porcelain 5.06:1 + * sage on porcelain 5.40:1 + * warm white on berry 4.95:1 + */ +:root { + color-scheme: light; + + /* 65%: warm mineral paper */ + --bg: #f5efe6; + --surface: #fffcf7; + --surface-soft: #efe5dc; + --line: #ded2c7; + --line-strong: #c7b6aa; + + /* 25%: espresso typography and authority */ + --ink: #2b201b; + --text-2: #66554d; + --text-3: #76655d; + --slate: #2e211d; + + /* 8%: berry coral, with enough red to feel alive rather than earthen */ + --cobalt: #b34a5d; + --cobalt-deep: #8e3348; + --cobalt-tint: #fbf2f4; + + /* 2%: sage, reserved for reported testing and evidence states */ + --success: #4f705b; + --success-tint: #e7efe9; + --danger: #99434a; + + --on-dark: #fff9f1; + --on-dark-2: rgba(255, 249, 241, 0.76); + --on-dark-3: rgba(255, 249, 241, 0.58); + + /* Amber glass and brass remain product materials, not interface colors. */ + --gold: #a77b47; + --gold-bright: #d3af7d; + + --shadow: 0 18px 50px rgba(62, 39, 31, 0.12); +} + +.site-header { + background: rgba(255, 252, 247, 0.97); + box-shadow: + 0 1px 0 var(--line), + 0 8px 24px rgba(62, 39, 31, 0.045); +} + +.primary-nav a, +.category-nav a { + color: #493a33; +} + +.hero-product-chip, +.hero-coa-card { + background: rgba(255, 252, 247, 0.96); + box-shadow: 0 10px 30px rgba(62, 39, 31, 0.11); +} + +.testing-feature-copy .eyebrow { + color: #b4c7b8; +} + +.document-tag { + color: var(--success) !important; + background: var(--success-tint); +} + +.newsletter p { + color: var(--cobalt-tint); +} diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/bpc-157.html b/biologix-strategy-board/ovo-labs-warm/peptides/bpc-157.html new file mode 100644 index 0000000..65f341a --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/bpc-157.html @@ -0,0 +1,37 @@ + + + + + + BPC-157 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/bpc-tb-blend.html b/biologix-strategy-board/ovo-labs-warm/peptides/bpc-tb-blend.html new file mode 100644 index 0000000..16b9130 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/bpc-tb-blend.html @@ -0,0 +1,37 @@ + + + + + + BPC-157 + TB-500 20 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/cagrilintide.html b/biologix-strategy-board/ovo-labs-warm/peptides/cagrilintide.html new file mode 100644 index 0000000..2118d88 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/cagrilintide.html @@ -0,0 +1,37 @@ + + + + + + Cagrilintide 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/cjc-1295.html b/biologix-strategy-board/ovo-labs-warm/peptides/cjc-1295.html new file mode 100644 index 0000000..d6dee86 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/cjc-1295.html @@ -0,0 +1,37 @@ + + + + + + CJC-1295 5 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/cjc-ipamorelin-blend.html b/biologix-strategy-board/ovo-labs-warm/peptides/cjc-ipamorelin-blend.html new file mode 100644 index 0000000..ecb9fbe --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/cjc-ipamorelin-blend.html @@ -0,0 +1,37 @@ + + + + + + CJC-1295 + Ipamorelin 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/ipamorelin.html b/biologix-strategy-board/ovo-labs-warm/peptides/ipamorelin.html new file mode 100644 index 0000000..c77f8c4 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/ipamorelin.html @@ -0,0 +1,37 @@ + + + + + + Ipamorelin 5 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/retatrutide.html b/biologix-strategy-board/ovo-labs-warm/peptides/retatrutide.html new file mode 100644 index 0000000..9958b5f --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/retatrutide.html @@ -0,0 +1,37 @@ + + + + + + Retatrutide 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/semaglutide.html b/biologix-strategy-board/ovo-labs-warm/peptides/semaglutide.html new file mode 100644 index 0000000..2a3b6bc --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/semaglutide.html @@ -0,0 +1,37 @@ + + + + + + Semaglutide 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/tb-500.html b/biologix-strategy-board/ovo-labs-warm/peptides/tb-500.html new file mode 100644 index 0000000..1dc0473 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/tb-500.html @@ -0,0 +1,37 @@ + + + + + + TB-500 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/peptides/tirzepatide.html b/biologix-strategy-board/ovo-labs-warm/peptides/tirzepatide.html new file mode 100644 index 0000000..47b9831 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/peptides/tirzepatide.html @@ -0,0 +1,37 @@ + + + + + + Tirzepatide 10 mg · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/policies.html b/biologix-strategy-board/ovo-labs-warm/policies.html new file mode 100644 index 0000000..d6e136e --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/policies.html @@ -0,0 +1,36 @@ + + + + + + Site Policies · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs-warm/site.css b/biologix-strategy-board/ovo-labs-warm/site.css new file mode 100644 index 0000000..5731e1c --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/site.css @@ -0,0 +1,5933 @@ +/* Self-hosted faces. The production worker sends font-src 'self', which blocks + fonts.googleapis.com, so the Google Fonts @import is gone. Inter must stay + VARIABLE: the design uses font-weight 650, which needs a live wght axis. */ + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("assets/fonts/inter-var-latin-ext.woff2") format("woff2"); + unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, + U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, + U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: "Inter"; + font-style: normal; + font-weight: 100 900; + font-display: swap; + src: url("assets/fonts/inter-var-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-400-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-500-latin.woff2") format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, + U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, + U+2212, U+2215, U+FEFF, U+FFFD; +} + +:root { + /* Clinical palette. Token NAMES are Datum's verbatim, so every downstream + var() reference is byte-identical and only the VALUES change. + + ACCENT: Datum shipped #1f3fcf, hue 229deg at 47% lightness. That is indigo, + three degrees off Linear's brand blue, and it reads developer-tool. Every + medical institution clusters at 207-211deg and 26-36% lightness: NHS 209, + Mayo 211, Cleveland 207. Saturation is NOT the tell (those all run 100%, + higher than Datum's 74%). Hue and depth are. So the accent moves 20deg + toward azure and drops ~11 points darker, which also buys contrast: + 6.38:1 on white vs the old 7.86 at a much more authoritative value. + + NEUTRALS: unchanged. They are blue-leaning (#5b6472 is hue 218) which now + sits 9deg from the accent instead of 11, so the family is tighter than + before. Warming them would undo the clinical read entirely. + + SURFACES: cards stay pure white. On a clinical page that is correct, so + the 43 hardcoded #fff in this file are no longer a defect to chase. */ + --bg: #f6f7f9; + --surface: #ffffff; + --surface-soft: #f0f2f5; + --line: #e3e7ec; + --line-strong: #c9d0d9; + + /* text only. see --slate for the dark SURFACE, which used to share this. */ + --ink: #101317; + --text-2: #5b6472; + /* was #7b8491 at 3.78:1 on white, which failed AA for small text and was the + single root cause of most measured contrast failures across the site. */ + /* #6b7480 cleared 4.5 on --surface but only reached 4.42 on --bg and 4.22 on + --surface-soft, so muted text failed AA wherever it sat on a tinted panel. + #646d79 clears 4.5 on all three. */ + --text-3: #646d79; + + /* Dark surface, split out from --ink. It backs the concept banner, the + testing feature, the footer, the newsletter button, toasts and the mobile + cart bar: the largest block of colour on the site. Flat near-black there + reads like an unstyled default. A near-black carrying the accent's own + hue (211deg) reads deliberate, and costs nothing in contrast: white on it + is 17.8:1. This is the single highest-leverage move in the palette. */ + --slate: #0c1826; + + /* interactive: links, prices, badges, cart count, focus rings, nav underline */ + --cobalt: #005eb8; + --cobalt-deep: #004a91; + --cobalt-tint: #e8f1fa; + + /* semantic states left alone. They are doing a job, they are hue-distant + from azure, and changing them adds risk with no visual payoff. */ + --success: #147453; + --success-tint: #e9f6f1; + --danger: #a22b3a; + + /* text on --slate surfaces */ + --on-dark: #ffffff; + + /* BRAND MATERIAL, not a UI colour. Gold is 3.0:1 on white, so it can never + carry a link, button, badge or body text. It exists for the product: amber + glass, brass crimp, foil on the carton. On screen it is allowed in exactly + two places: inside product photography, and the wordmark mark, which is a + decorative non-interactive 1.5px ring (a UI boundary needs 3:1, so it + clears). Everywhere else, the accent is azure. */ + --gold: #b08a52; + --gold-bright: #c69b63; + + /* TYPE SYSTEM. Measurement across 30 page/width combos found 55 distinct + size/weight pairs and SEVEN different display clamps, each section having + invented its own heading size (h1 rendered 61px on the homepage and 72px on + the 404). That absence of a scale, more than any single value, is what made + the page read as an unmaintained template. Three display steps now serve + every heading on the site. */ + --t-display: clamp(38px, 4.4vw, 58px); /* page h1 */ + --t-section: clamp(26px, 2.6vw, 36px); /* section h2 */ + --t-sub: 20px; /* minor h2 / panel titles */ + + /* Text on --slate. The footer and dark bands were still carrying five hardcoded + tan values left over from the cream palette, 752 occurrences in total. */ + --on-dark-2: rgba(255, 255, 255, 0.72); + --on-dark-3: rgba(255, 255, 255, 0.54); + + --ease: cubic-bezier(0.16, 1, 0.3, 1); + --shadow: 0 18px 50px rgba(22, 32, 58, 0.12); + --shell: min(1320px, calc(100vw - 48px)); + --sans: "Inter", Arial, sans-serif; + --mono: "IBM Plex Mono", ui-monospace, monospace; + + /* Spacing scale. 4px base, doubling at the top so large steps stay distinct. + The file already clustered here (8px x28, 12px x40, 16px x23, 24px x11); + the 41 distinct values were outliers, not a system. This formalises what + was already mostly true and snaps the exceptions. + + 1px, 2px, 3px, 6px and 7px stay literals. Those are badge, pill, dot, + focus-ring and glyph-scale optical corrections, not layout spacing, and + forcing them onto the scale breaks the components. */ + --s-1: 4px; + --s-2: 8px; + --s-3: 12px; + --s-4: 16px; + --s-4h: 20px; /* on the 4px grid; the set skipped it, so 206 declarations read as off-scale */ + --s-5: 24px; + --s-6: 32px; + --s-6h: 40px; /* likewise */ + --s-7: 48px; + --s-8: 64px; + --s-9: 96px; + --measure: 34em; /* ~65 characters per line at any locked size */ + --gutter-grid: var(--s-4); + + /* Radius scale. Consolidation only, no new values. */ + --r-sm: 6px; + --r-md: 8px; + --r-lg: 10px; + --r-pill: 99px; +} + +* { + box-sizing: border-box; +} + +.sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +html { + /* the font stack lived only on body, so resolved to the UA default and + anything escaping body inheritance rendered in Times */ + font-family: var(--sans); + scroll-behavior: smooth; +} + +body { + margin: 0; + color: var(--ink); + background: var(--bg); + font-family: var(--sans); + font-size: 15px; + line-height: 1.5; + -webkit-font-smoothing: antialiased; +} + +body.drawer-open { + overflow: hidden; +} + +img { + display: block; + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +select { + font: inherit; +} + +button { + cursor: pointer; +} + +button:disabled { + cursor: not-allowed; + opacity: 0.55; +} + +.skip-link { + position: fixed; + z-index: 1000; + top: 8px; + left: 8px; + padding: 12px 16px; + color: var(--on-dark); + background: var(--cobalt); + transform: translateY(-150%); +} + +.skip-link:focus { + transform: none; +} + +:focus-visible { + outline: 2px solid var(--cobalt); + outline-offset: 3px; +} + +/* Cobalt on a dark surface is not a focus ring, it is a rumour. The newsletter + panel is cobalt itself (1.00:1 against the ring) and --slate measures 2.80:1, + both under the 3:1 non-text minimum. White clears on every dark surface we + ship, so the ring inverts there rather than disappearing. */ +.newsletter :focus-visible, +.site-footer :focus-visible, +.testing-feature :focus-visible, +.concept-banner :focus-visible, +.toast :focus-visible, +.mobile-cart-bar:focus-visible { + outline-color: #ffffff; +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.concept-banner { + min-height: 32px; + display: grid; + place-items: center; + padding: 8px 20px; + color: var(--on-dark); + background: var(--slate); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; +} + +.site-header { + position: sticky; + z-index: 80; + top: 0; + background: rgba(255, 255, 255, 0.97); + border-bottom: 1px solid var(--line); + box-shadow: + 0 1px 0 var(--line), + 0 8px 24px rgba(22, 32, 58, 0.04); + backdrop-filter: blur(16px); +} + +.header-main { + min-height: 64px; + display: grid; + grid-template-columns: auto 1fr minmax(240px, 320px) auto; + gap: 26px; + align-items: center; +} + +.wordmark { + display: inline-flex; + gap: 12px; + align-items: center; + white-space: nowrap; +} + +.wordmark-mark { + display: grid; + width: 24px; + height: 24px; + place-items: center; + color: var(--gold); + border: 1.5px solid currentColor; + border-radius: 50%; + font: 500 13px/1 var(--mono); +} + +.wordmark-copy { + display: flex; + gap: 8px; + align-items: baseline; +} + +.wordmark-name { + font-size: 16px; + font-weight: 650; + letter-spacing: -0.025em; +} + +.wordmark-category { + color: var(--text-2); + font: 500 9px/1 var(--mono); + letter-spacing: 0.24em; +} + +.primary-nav { + display: flex; + gap: 24px; + align-items: center; +} + +.primary-nav a, +.category-nav a { + position: relative; + color: #343b45; + font-size: 13px; + font-weight: 500; + white-space: nowrap; +} + +.primary-nav a:hover, +.primary-nav a[aria-current="page"], +.category-nav a:hover, +.category-nav a[aria-current="page"] { + color: var(--cobalt); +} + +.primary-nav a::after { + position: absolute; + right: 0; + bottom: -22px; + left: 0; + height: 2px; + content: ""; + background: var(--cobalt); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.primary-nav a:hover::after, +.primary-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +/* Category menu bar: same underline wipe as the primary nav, ported from + Porcelain. The link fills the 40px row so the rule lands on the bar's own + bottom edge (bottom: 0) instead of hugging the text. Text position is + unchanged: the row already centred it, and the link centres it again. */ +.category-nav a { + min-height: 40px; + display: inline-flex; + align-items: center; +} + +.category-nav a::after { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2px; + content: ""; + background: var(--cobalt); + transform: scaleX(0); + transform-origin: left; + transition: transform 200ms var(--ease); +} + +.category-nav a:hover::after, +.category-nav a[aria-current="page"]::after { + transform: scaleX(1); +} + +@media (prefers-reduced-motion: reduce) { + .primary-nav a::after, + .category-nav a::after { + transition: none; + } +} + +.search-wrap { + position: relative; +} + +.search-input { + width: 100%; + height: 40px; + padding: 0 40px 0 40px; + color: var(--ink); + background: var(--bg); + border: 1px solid var(--line); + border-radius: 6px; +} + +.search-input:focus { + background: var(--surface); + border-color: var(--cobalt); + outline: none; + box-shadow: 0 0 0 2px var(--cobalt-tint); +} + +.search-icon { + position: absolute; + top: 50%; + left: 14px; + width: 14px; + height: 14px; + border: 1.5px solid var(--text-2); + border-radius: 50%; + transform: translateY(-55%); +} + +.search-icon::after { + position: absolute; + right: -4px; + bottom: -3px; + width: 5px; + height: 1.5px; + content: ""; + background: var(--text-2); + transform: rotate(45deg); +} + +.search-shortcut { + position: absolute; + top: 50%; + right: 10px; + padding: 2px 4px; + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 400 9px/1.2 var(--mono); + transform: translateY(-50%); +} + +.search-results { + position: absolute; + z-index: 100; + top: calc(100% + 8px); + right: 0; + left: 0; + max-height: min(480px, 70vh); + overflow-y: auto; + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: 8px; + box-shadow: var(--shadow); +} + +.search-results[hidden] { + display: none; +} + +.search-result { + display: grid; + grid-template-columns: 52px 1fr auto; + gap: 12px; + align-items: center; + padding: 12px; + border-bottom: 1px solid var(--line); +} + +.search-result:last-child { + border-bottom: 0; +} + +.search-result:hover { + background: var(--bg); +} + +.search-result[aria-selected="true"] { + background: var(--cobalt-tint); +} + +.search-result img { + width: 52px; + height: 52px; + object-fit: cover; + background: var(--bg); + border-radius: 5px; +} + +.search-result strong { + display: block; + font-size: 13px; +} + +.search-result span { + color: var(--text-2); + font-size: 12px; +} + +.search-result-price { + font: 500 12px/1 var(--mono); +} + +.header-actions { + display: flex; + gap: 8px; +} + +.icon-button { + position: relative; + display: inline-grid; + width: 40px; + height: 40px; + place-items: center; + color: var(--ink); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 6px; +} + +.icon-button:hover { + color: var(--cobalt); + background: var(--cobalt-tint); + border-color: var(--cobalt); +} + +.cart-count { + position: absolute; + top: -6px; + right: -6px; + display: grid; + min-width: 18px; + height: 18px; + place-items: center; + padding: 0 4px; + color: var(--on-dark); + background: var(--cobalt); + border: 2px solid var(--surface); + border-radius: 99px; + font: 500 9px/1 var(--mono); +} + +.category-nav-wrap { + border-top: 1px solid var(--line); +} + +.category-nav { + min-height: 40px; + display: flex; + gap: 28px; + align-items: center; + overflow-x: auto; + scrollbar-width: none; +} + +.category-nav::-webkit-scrollbar { + display: none; +} + +.mobile-menu-button { + display: none; +} + +.button { + display: inline-flex; + min-height: 46px; + justify-content: center; + align-items: center; + gap: 8px; + padding: 0 20px; + border: 1px solid transparent; + border-radius: var(--r-sm); + font-size: 13px; + font-weight: 650; + transition: background 120ms ease-out, border-color 120ms ease-out, color 120ms ease-out, transform 120ms ease-out; +} + +.button:hover { + transform: translateY(-1px); +} + +.button-primary { + color: var(--on-dark); + background: var(--cobalt); +} + +.button-primary:hover { + background: var(--cobalt-deep); +} + +.button-secondary { + color: var(--ink); + background: var(--surface); + border-color: var(--line-strong); +} + +.button-secondary:hover { + color: var(--cobalt); + border-color: var(--cobalt); +} + +.button-small { + min-height: 38px; + padding-inline: 14px; + font-size: 12px; +} + +.eyebrow { + margin: 0 0 16px; + color: var(--cobalt); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.home-hero { + overflow: hidden; + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.hero-grid { + min-height: 438px; + display: grid; + grid-template-columns: minmax(0, 0.88fr) minmax(520px, 1.12fr); + gap: var(--s-7); + align-items: center; + padding-block: var(--s-6) var(--s-6); +} + +.hero-copy h1 { + max-width: 650px; + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.052em; + line-height: 0.99; +} + +.hero-copy h1 span { + color: var(--cobalt); +} + +.hero-copy > p:not(.eyebrow) { + max-width: var(--measure); + margin: var(--s-5) 0 0; + color: var(--text-2); + font-size: 16px; + line-height: 1.55; +} + +.hero-actions { + display: flex; + gap: var(--s-3); + margin-top: var(--s-6); +} + +.hero-visual { + position: relative; + min-height: 356px; + overflow: hidden; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.hero-visual > img { + width: 100%; + height: 100%; + min-height: 356px; + object-fit: cover; +} + +.hero-product-chip, +.hero-coa-card { + position: absolute; + background: rgba(255, 255, 255, 0.96); + border: 1px solid var(--line-strong); + box-shadow: 0 10px 30px rgba(22, 32, 58, 0.1); +} + +.hero-product-chip { + right: 16px; + bottom: 16px; + width: 218px; + padding: 16px; + border-radius: 8px; +} + +.hero-product-chip span, +.hero-coa-card span { + color: var(--text-2); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.hero-product-chip strong { + display: block; + margin-top: 4px; + font-size: 13px; +} + +.hero-product-chip p { + margin: 3px 0 0; + color: var(--text-2); + font-size: 12px; +} + +.hero-coa-card { + bottom: 16px; + left: 16px; + width: 200px; + padding: 12px; + border-radius: 8px; +} + +.hero-coa-row { + display: flex; + justify-content: space-between; + gap: 12px; + margin-top: 8px; + padding-top: 8px; + border-top: 1px solid var(--line); + font-size: 10px; +} + +.hero-coa-row strong { + color: var(--cobalt); + font-weight: 650; +} + +.trust-strip { + min-height: 54px; + display: grid; + grid-template-columns: repeat(4, 1fr); + align-items: stretch; + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.trust-item { + display: flex; + gap: 12px; + justify-content: center; + align-items: center; + padding: 12px 16px; + border-right: 1px solid var(--line); + text-align: center; +} + +.trust-item:last-child { + border-right: 0; +} + +.trust-dot { + width: 7px; + height: 7px; + flex: 0 0 auto; + background: var(--cobalt); + border-radius: 50%; +} + +.trust-item strong { + font-size: 12px; + font-weight: 650; +} + +.section { + padding-block: var(--s-8); +} + +.section-tight { + padding-block: var(--s-7); +} + +.section-surface { + background: var(--surface); + border-block: 1px solid var(--line); +} + +.section-head { + display: flex; + justify-content: space-between; + gap: var(--s-6); + align-items: end; + margin-bottom: var(--s-4); +} + +.section-head h2 { + margin: 0; + font-size: var(--t-section); + font-weight: 650; + letter-spacing: -0.04em; + line-height: 1.08; +} + +.section-head p { + max-width: 520px; + margin: 0; + color: var(--text-2); + font-size: 13px; +} + +.category-section-head { + margin-top: var(--s-7); +} + +.text-link { + display: inline-flex; + gap: 8px; + align-items: center; + color: var(--cobalt); + font-size: 13px; + font-weight: 650; +} + +.text-link:hover { + text-decoration: underline; +} + +.category-rail { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: var(--gutter-grid); + margin-bottom: var(--s-6); +} + +.category-tile { + min-height: 96px; + display: flex; + justify-content: space-between; + align-items: end; + gap: var(--s-5); + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + transition: border-color 120ms ease-out, transform 120ms ease-out; +} + +.category-tile:hover { + border-color: var(--cobalt); + transform: translateY(-2px); +} + +.category-tile strong { + display: block; + font-size: 13px; +} + +.category-tile span { + display: block; + margin-top: 4px; + color: var(--text-2); + font-size: 12px; +} + +.category-tile .category-arrow { + color: var(--cobalt); + font: 500 16px/1 var(--mono); +} + +.product-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: var(--gutter-grid); +} + +.product-card { + min-width: 0; + overflow: hidden; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + transition: border-color 120ms ease-out, box-shadow 120ms ease-out, transform 120ms ease-out; +} + +.product-card:hover { + border-color: var(--line-strong); + box-shadow: 0 8px 24px rgba(24, 35, 58, 0.08); + transform: translateY(-2px); +} + +.product-image-wrap { + position: relative; + display: block; + aspect-ratio: 4 / 4.4; + overflow: hidden; + background: var(--bg); + border-bottom: 1px solid var(--line); +} + +.product-image-wrap img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 180ms ease-out; +} + +.product-card:hover .product-image-wrap img { + transform: scale(1.025); +} + +.product-image-label { + position: absolute; + top: 51%; + left: 50%; + width: 40%; + color: var(--ink); + text-align: center; + transform: translate(-50%, -50%); + pointer-events: none; +} + +.product-image-label strong { + display: block; + overflow: hidden; + font-size: clamp(9px, 1.1vw, 12px); + font-weight: 650; + letter-spacing: -0.02em; + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-image-label span { + display: block; + margin-top: 2px; + color: var(--cobalt); + font: 500 9px/1 var(--mono); + letter-spacing: 0.06em; +} + +.product-card-body { + padding: var(--s-4); +} + +.product-category { + margin: 0 0 8px; + color: var(--cobalt); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.product-name { + margin: 0; + font-size: 16px; + font-weight: 650; + letter-spacing: -0.025em; + line-height: 1.25; +} + +.product-description { + min-height: 38px; + display: -webkit-box; + overflow: hidden; + margin: var(--s-2) 0 var(--s-3); + color: var(--text-2); + font-size: 12px; + line-height: 1.45; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.testing-micro { + display: flex; + justify-content: space-between; + gap: 8px; + align-items: center; + padding: 8px 0; + border-block: 1px solid var(--line); + color: var(--text-2); + font-size: 10px; +} + +.testing-micro span:first-child { + display: flex; + gap: 8px; + align-items: center; +} + +.testing-micro-dot { + width: 6px; + height: 6px; + background: var(--cobalt); + border-radius: 50%; +} + +.testing-micro a { + display: inline-flex; + min-height: 24px; + align-items: center; + color: var(--cobalt); + font-weight: 650; +} + +.product-buy-row { + display: grid; + grid-template-columns: auto 1fr; + gap: var(--s-3); + align-items: end; + margin-top: var(--s-3); +} + +.price-label { + display: block; + margin-bottom: 2px; + color: var(--text-3); + font: 500 9px/1.2 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.price { + font: 500 16px/1.2 var(--mono); + font-variant-numeric: tabular-nums; +} + +.add-button { + min-height: 38px; + width: 100%; + padding: 0 12px; + color: var(--on-dark); + background: var(--cobalt); + border: 0; + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; +} + +.add-button:hover { + background: var(--cobalt-deep); +} + +.testing-feature { + display: grid; + grid-template-columns: 0.8fr 1.2fr; + min-height: 380px; + overflow: hidden; + background: var(--slate); + border-radius: var(--r-lg); +} + +.testing-feature-copy { + display: flex; + flex-direction: column; + justify-content: center; + padding: clamp(var(--s-5), 5vw, var(--s-7)); + color: var(--on-dark); +} + +.testing-feature-copy .eyebrow { + color: var(--gold-bright); +} + +.testing-feature-copy h2 { + max-width: 520px; + margin: 0; + font-size: var(--t-section); + letter-spacing: -0.045em; + line-height: 1.02; +} + +.testing-feature-copy p { + max-width: var(--measure); + margin: var(--s-5) 0 var(--s-5); + color: var(--on-dark-2); +} + +.testing-document { + margin: var(--s-5); + padding: clamp(var(--s-5), 4vw, var(--s-6)); + background: var(--surface); + border-radius: 8px; +} + +.document-head { + display: flex; + justify-content: space-between; + gap: var(--s-4); + align-items: start; + padding-bottom: var(--s-4); + border-bottom: 1px solid var(--line-strong); +} + +.document-head strong { + display: block; + font-size: 16px; +} + +.document-head span { + color: var(--text-2); + font: 500 9px/1.4 var(--mono); + letter-spacing: 0.06em; +} + +.document-tag { + padding: 8px 8px; + color: var(--cobalt) !important; + background: var(--cobalt-tint); + border-radius: 4px; +} + +.document-row { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-4); + padding: var(--s-4) 0; + border-bottom: 1px solid var(--line); +} + +.document-row:last-child { + border-bottom: 0; +} + +.document-row strong { + font-size: 13px; +} + +.document-row span { + color: var(--text-2); + font: 400 10px/1.4 var(--mono); + text-align: right; +} + +.bundle-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--gutter-grid); +} + +.bundle-card { + overflow: hidden; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.bundle-image { + position: relative; + height: 210px; + overflow: hidden; + background: var(--bg); + border-bottom: 1px solid var(--line); +} + +.bundle-image img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.bundle-count { + position: absolute; + top: 12px; + left: 12px; + padding: 4px 8px; + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 500 9px/1 var(--mono); + text-transform: uppercase; +} + +.bundle-body { + padding: var(--s-5); +} + +.bundle-body h3 { + margin: 0; + font-size: 20px; + letter-spacing: -0.025em; +} + +.bundle-body > p { + min-height: 42px; + margin: var(--s-2) 0 var(--s-4); + color: var(--text-2); + font-size: 12px; +} + +.bundle-items { + margin: 0 0 var(--s-4); + padding: var(--s-3) 0; + list-style: none; + border-block: 1px solid var(--line); +} + +.bundle-items li { + display: flex; + justify-content: space-between; + gap: 12px; + padding: 3px 0; + color: var(--text-2); + font-size: 12px; +} + +.bundle-footer { + display: grid; + grid-template-columns: auto 1fr; + gap: var(--s-4); + align-items: end; +} + +.education-grid, +.value-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--gutter-grid); +} + +.education-card, +.value-card { + min-height: 210px; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.education-card h3, +.value-card h3 { + margin: 0; + font-size: 20px; + letter-spacing: -0.025em; +} + +.education-card p, +.value-card p { + margin: var(--s-2) 0 var(--s-5); + color: var(--text-2); + font-size: 13px; +} + +.newsletter { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-6); + align-items: center; + padding: var(--s-6); + color: var(--on-dark); + background: var(--cobalt); + border-radius: var(--r-lg); +} + +.newsletter h2 { + margin: 0; + font-size: var(--t-sub); + letter-spacing: -0.035em; +} + +.newsletter p { + max-width: var(--measure); + margin: var(--s-4) 0 0; + color: #f0d8cd; +} + +.newsletter-form { + display: flex; + gap: var(--s-2); +} + +.newsletter-form[hidden] { + display: none; +} + +.newsletter-form input { + width: min(340px, 42vw); + height: 44px; + padding: 0 16px; + color: var(--ink); + background: var(--surface); + border: 0; + border-radius: var(--r-sm); +} + +.newsletter-form button { + min-width: 120px; + color: var(--on-dark); + background: var(--slate); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; + transition: color 120ms ease-out, background 120ms ease-out; +} + +/* This button sits on the cobalt panel, so there is no darker step available and + no lighter slate in the palette. It inverts instead: white plate, cobalt + label, 6.38:1. Same two tokens, read the other way round. */ +.newsletter-form button:hover { + color: var(--cobalt); + background: var(--on-dark); +} + +.newsletter-success { + color: var(--on-dark); + font-size: 13px; +} + +.page-hero { + padding: var(--s-8) 0 var(--s-7); + background: var(--surface); + border-bottom: 1px solid var(--line); +} + +.page-hero h1 { + max-width: 800px; + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.055em; + line-height: 1; +} + +/* The H1 above runs line-height 1, so its descender eats part of this gap. + 24px measured is the first value that reads as a deliberate step. */ +.page-hero p:not(.eyebrow) { + max-width: var(--measure); + margin: var(--s-5) 0 0; + color: var(--text-2); + font-size: 16px; +} + +.collection-layout { + display: grid; + grid-template-columns: 232px 1fr; + gap: var(--s-6); + align-items: start; +} + +.filter-panel { + position: sticky; + top: 126px; + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.filter-panel h2 { + margin: 0 0 var(--s-3); + font-size: 13px; +} + +.filter-button { + width: 100%; + display: flex; + justify-content: space-between; + gap: 12px; + padding: 8px 0; + color: var(--text-2); + background: none; + border: 0; + border-bottom: 1px solid var(--line); + font-size: 12px; + text-align: left; +} + +.filter-button:last-child { + border-bottom: 0; +} + +.filter-button:hover, +.filter-button[aria-pressed="true"] { + color: var(--cobalt); +} + +.filter-button span { + font: 400 10px/1 var(--mono); +} + +.collection-main { + min-width: 0; +} + +.collection-toolbar { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-4); + align-items: center; + margin-bottom: var(--s-4); + padding: var(--s-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.collection-search { + height: 38px; + padding: 0 12px; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.collection-sort { + height: 38px; + padding: 0 32px 0 12px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.result-summary { + margin: 0 0 var(--s-4); + color: var(--text-2); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.03em; +} + +.empty-state { + grid-column: 1 / -1; + padding: var(--s-8) var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; + text-align: center; +} + +.empty-state h2 { + margin: 0; +} + +.empty-state p { + margin: var(--s-2) 0 var(--s-5); + color: var(--text-2); +} + +.product-page { + background: var(--surface); +} + +.breadcrumb { + display: flex; + gap: var(--s-2); + align-items: center; + padding-top: var(--s-5); + color: var(--text-2); + font-size: 12px; +} + +.breadcrumb a:hover { + color: var(--cobalt); +} + +.pdp-grid { + display: grid; + grid-template-columns: minmax(0, 1.08fr) minmax(410px, 0.92fr); + gap: var(--s-7); + padding: var(--s-6) 0 var(--s-8); +} + +.pdp-gallery { + position: sticky; + top: 132px; + align-self: start; +} + +.pdp-main-image { + position: relative; + aspect-ratio: 1 / 0.92; + overflow: hidden; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.pdp-main-image img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 160ms ease-out; +} + +.pdp-main-image .product-image-label { + width: 31%; + top: 51%; +} + +.pdp-main-image .product-image-label strong { + font-size: clamp(10px, 1.2vw, 16px); +} + +.pdp-thumbnails { + display: grid; + grid-template-columns: repeat(3, 82px); + gap: var(--s-3); + margin-top: var(--s-3); +} + +.pdp-thumb { + aspect-ratio: 1; + overflow: hidden; + padding: 0; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); + transition: border-color 140ms ease-out; +} + +/* Hover stops at --line-strong on purpose. Cobalt is the selected state on this + control, so borrowing it for hover would make an unselected thumbnail look + chosen for as long as the pointer sits on it. */ +.pdp-thumb:hover { + border-color: var(--line-strong); +} + +.pdp-thumb[aria-current="true"], +.pdp-thumb[aria-current="true"]:hover { + border-color: var(--cobalt); +} + +.pdp-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.pdp-buybox { + padding-top: var(--s-2); +} + +.pdp-buybox h1 { + margin: 0; + font-size: var(--t-display); + font-weight: 650; + letter-spacing: -0.055em; + line-height: 1; +} + +.pdp-code { + display: block; + margin: var(--s-3) 0 0; + color: var(--text-2); + font: 400 10px/1.4 var(--mono); +} + +.pdp-testing-link { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; + margin: var(--s-5) 0; + padding: var(--s-3); + color: var(--cobalt); + background: var(--cobalt-tint); + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; + transition: color 140ms ease-out, box-shadow 140ms ease-out; +} + +/* An inset ring rather than a darker tint: the panel already sits on cobalt-tint + and there is no darker tint token, so the hover reads as an outline gaining + definition instead of inventing a colour outside the palette. */ +.pdp-testing-link:hover { + color: var(--cobalt-deep); + box-shadow: inset 0 0 0 1px var(--cobalt); +} + +.pdp-description { + margin: 0; + color: var(--text-2); + font-size: 15px; +} + +.pdp-price { + display: flex; + gap: var(--s-3); + align-items: baseline; + margin: var(--s-5) 0; +} + +.pdp-price strong { + font: 500 26px/1 var(--mono); +} + +.selection-label { + display: flex; + justify-content: space-between; + gap: var(--s-3); + margin: 0 0 var(--s-3); + font-size: 12px; + font-weight: 650; +} + +.buy-controls { + display: grid; + grid-template-columns: 112px 1fr; + gap: var(--s-3); +} + +.quantity-control { + display: grid; + grid-template-columns: 34px 1fr 34px; + height: 48px; + /* overflow:hidden clipped the focus ring on the two stepper buttons, so a + keyboard user could not see which one they were on. overflow:clip with a + clip-margin keeps the corner rounding and lets the 2px ring + 3px offset + escape. */ + overflow: clip; + overflow-clip-margin: 8px; + border: 1px solid var(--line-strong); + border-radius: var(--r-sm); +} + +.quantity-control button { + padding: 0; + background: var(--surface); + border: 0; + transition: color 120ms ease-out, background 120ms ease-out; +} + +.quantity-control button:hover:not(:disabled) { + color: var(--cobalt); + background: var(--surface-soft); +} + +.quantity-control input { + min-width: 0; + padding: 0; + text-align: center; + border: 0; + appearance: textfield; +} + +/* appearance:textfield no longer removes the native spin-button box in + Chromium, it only hides the arrows, so the field still reserves that box and + the centred value is pushed off its own track. At 1440 the digit sat 7.2px + left of the field centre; at 390 the field is 26px wide and the digit was + pushed out of the visible box entirely, so the stepper read as a bare "- +" + with no quantity between them. Removing the reserved box lets text-align + centre the value again. */ +.quantity-control input::-webkit-outer-spin-button, +.quantity-control input::-webkit-inner-spin-button, +.mini-quantity input::-webkit-outer-spin-button, +.mini-quantity input::-webkit-inner-spin-button { + margin: 0; + -webkit-appearance: none; + appearance: none; +} + +.pdp-add { + height: 48px; + color: var(--on-dark); + background: var(--cobalt); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; +} + +.pdp-add:hover { + background: var(--cobalt-deep); +} + +/* 2x2, not a 4-up row. The fourth tile carries availability, whose string is + variable length ("In stock" / "Only 4 left" / "Not offered"), and a single + row of four wraps the moment the longest one appears. */ +.buybox-cues { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1px; + margin-top: var(--s-4); + background: var(--line); + border: 1px solid var(--line); + border-radius: 6px; +} + +.buybox-cue { + padding: var(--s-3) var(--s-2); + background: var(--bg); + text-align: center; +} + +.buybox-cue strong { + display: block; + font-size: 10px; +} + +.buybox-cue span { + color: var(--text-2); + font-size: 9px; +} + +.pdp-note { + margin: var(--s-4) 0 0; + color: var(--text-2); + font-size: 10px; +} + +.detail-section { + padding-block: var(--s-8); + border-top: 1px solid var(--line); +} + +.detail-grid { + display: grid; + grid-template-columns: 0.72fr 1.28fr; + gap: var(--s-7); +} + +.detail-grid h2 { + margin: 0; + font-size: var(--t-sub); + letter-spacing: -0.04em; +} + +.testing-table, +.spec-table { + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.testing-row, +.spec-row { + display: grid; + grid-template-columns: 1fr 0.8fr auto; + gap: var(--s-4); + align-items: center; + padding: var(--s-4); + border-bottom: 1px solid var(--line); +} + +.spec-row { + grid-template-columns: 0.4fr 1.6fr; +} + +.testing-row:last-child, +.spec-row:last-child { + border-bottom: 0; +} + +/* The catalog-status table is ten near-identical rows of small type. A tint that + is one shade off the page background is not a hit target cue. Cobalt tint plus + an inset leading edge makes the row a shopper is aiming at unambiguous. */ +.testing-table a { + transition: background 120ms ease-out, box-shadow 120ms ease-out; +} + +.testing-table a:hover { + background: var(--cobalt-tint); + box-shadow: inset 3px 0 0 var(--cobalt); +} + +.testing-row strong, +.spec-row strong { + font-size: 12px; +} + +.testing-row span, +.spec-row span { + color: var(--text-2); + font-size: 12px; +} + +.testing-row .status-pill { + padding: 4px 8px; + color: var(--cobalt); + background: var(--cobalt-tint); + border-radius: 4px; + font: 500 9px/1 var(--mono); + white-space: nowrap; +} + +.accordion { + border-top: 1px solid var(--line); +} + +/* The item is the animated container: an auto row for the trigger and a 1fr row + for the panel that collapses to 0fr. This is the only way to transition to and + from an unknown content height without measuring in script. */ +.accordion-item { + display: grid; + grid-template-rows: auto 1fr; + border-bottom: 1px solid var(--line); + transition: grid-template-rows 200ms var(--ease); +} + +.accordion-item:has(> .accordion-panel[hidden]) { + grid-template-rows: auto 0fr; +} + +.accordion-trigger { + width: 100%; + display: flex; + justify-content: space-between; + gap: var(--s-5); + padding: var(--s-5) 0; + background: transparent; + border: 0; + font-weight: 650; + text-align: left; + transition: color 120ms ease-out; +} + +.accordion-trigger:hover { + color: var(--cobalt); +} + +/* Drawn rather than typeset. A "+" glyph swapped for a "−" glyph cannot be + transitioned, so the icon is two gradient bars and the vertical one collapses + to zero height on open. Same plus-to-minus reading, now animated. */ +.accordion-trigger::after { + content: ""; + flex: 0 0 13px; + align-self: center; + height: 13px; + background-image: + linear-gradient(var(--cobalt), var(--cobalt)), + linear-gradient(var(--cobalt), var(--cobalt)); + background-repeat: no-repeat; + background-position: center; + background-size: 13px 1.5px, 1.5px 13px; + transition: background-size 200ms var(--ease); +} + +.accordion-trigger[aria-expanded="true"]::after { + background-size: 13px 1.5px, 1.5px 0; +} + +/* The panel keeps its `hidden` attribute, so the semantics do not move. The + attribute's UA display:none is overridden so the row can animate, and + visibility:hidden stands in for it: same removal from the accessibility tree + and from the tab order. The flip is delayed on close so the text is still + painted while the row collapses, and immediate on open. */ +.accordion-panel { + display: block; + min-height: 0; + overflow: hidden; + padding: 0 0 var(--s-5); + color: var(--text-2); + font-size: 13px; + transition: visibility 0s, padding 200ms var(--ease); +} + +/* A collapsed panel is a 0fr track, but min-height:0 does not zero its own 24px + bottom padding, so the track floored at 24px and every CLOSED row carried + 24px of invisible space (95.5px row for a 71.5px trigger). Nine closed rows on + the FAQ page was 216px of nothing; the page measures 2293px before this and + 1989px after. The padding now collapses with the row, on the same duration as + the row transition so the open and close animations are unchanged. */ +.accordion-item:has(> .accordion-panel[hidden]) > .accordion-panel { + padding-block-end: 0; +} + +.accordion-panel[hidden] { + visibility: hidden; + transition: visibility 0s 200ms; +} + +.testing-lookup { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-2); + max-width: var(--measure); + margin-top: var(--s-5); +} + +.testing-lookup input { + height: 46px; + padding: 0 16px; + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: 6px; +} + +.lookup-results { + margin-top: var(--s-5); +} + +.lookup-card { + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 8px; +} + +.lookup-card h3 { + margin: 0; +} + +.lookup-card p { + margin: 8px 0 0; + color: var(--text-2); +} + +/* Width inherits --shell so the article edge lands on the same page gutter as + every other section. The old hardcoded 48px produced two different left + edges at 390, where --shell is 12px. */ +/* The document column IS the measure. The column was 780px while every paragraph + inside it was separately capped at 34em, so on policies and eligibility the + prose ended 270px short of the headings and callouts sharing the same column: + four different right edges on one page. One width now governs the document. */ +.article-shell { + width: min(var(--measure), var(--shell)); + margin-inline: auto; + padding-block: var(--s-8) var(--s-9); +} + +/* And the hero band above a document takes that same column, so the page title, + the lede, the body and the callouts all start on one left edge. Measured + before: hero at x=53, body at x=323, footer back at x=53. */ +.page-hero:has(+ .article-shell) > .shell { + width: min(var(--measure), var(--shell)); +} + +.page-hero:has(+ .article-shell) h1, +.page-hero:has(+ .article-shell) p:not(.eyebrow) { + max-width: none; +} + +.article-shell h1 { + margin: 0; + font-size: var(--t-display); + letter-spacing: -0.055em; + line-height: 0.98; +} + +.article-lede { + margin: var(--s-5) 0 var(--s-7); + color: var(--text-2); + font-size: 20px; +} + +.article-shell h2 { + margin: var(--s-7) 0 var(--s-4); + font-size: var(--t-sub); + letter-spacing: -0.035em; +} + +.article-shell p, +.article-shell li { + color: #343b45; + font-size: 15px; + line-height: 1.7; +} + +/* 40px of UA list indent pushed every bullet's right edge 40px past the + paragraph above it. 24px is on scale and still hangs the marker clear. */ +.article-shell ul, +.article-shell ol { + padding-inline-start: var(--s-5); +} + +/* A lede reads better slightly narrower than the body it introduces, so it keeps + its own measure. The selector is raised only to outrank `.article-shell p`, + which was silently overriding all four of these declarations: the intended + 18px lede has been rendering at 15px body size everywhere it appears. Nothing + here is a new value, it is the existing intent finally winning. */ +.article-shell p.article-lede { + max-width: 32em; + color: var(--text-2); + font-size: 20px; + line-height: 1.6; +} + +.article-callout { + margin: var(--s-6) 0; + padding: var(--s-5); + background: var(--cobalt-tint); + border-left: 3px solid var(--cobalt); +} + +.article-shell .button + .button { + margin-left: var(--s-2); +} + +.site-footer { + padding: var(--s-7) 0 var(--s-6); + color: var(--on-dark); + background: var(--slate); +} + +.footer-grid { + display: grid; + grid-template-columns: 1.4fr repeat(3, 1fr); + gap: var(--s-7); +} + +.footer-brand p { + max-width: 340px; + margin: var(--s-4) 0 0; + color: var(--on-dark-2); + font-size: 12px; +} + +.footer-column h2 { + margin: 0 0 var(--s-3); + color: var(--on-dark-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.footer-column a { + display: block; + margin: var(--s-2) 0; + color: var(--on-dark-2); + font-size: 12px; +} + +.footer-column a:hover { + color: var(--on-dark); +} + +.footer-bottom { + display: flex; + justify-content: space-between; + gap: var(--s-5); + margin-top: var(--s-7); + padding-top: var(--s-5); + color: var(--on-dark-3); + border-top: 1px solid rgba(243, 234, 218, 0.18); + font: 400 9px/1.5 var(--mono); +} + +.drawer-backdrop { + position: fixed; + z-index: 200; + inset: 0; + background: rgba(26, 18, 12, 0.44); + opacity: 0; + transition: opacity 180ms ease-out; + pointer-events: none; +} + +.drawer-backdrop[data-open="true"] { + opacity: 1; + pointer-events: auto; +} + +.cart-drawer, +.mobile-drawer { + position: fixed; + z-index: 210; + top: 0; + right: 0; + bottom: 0; + width: min(440px, 94vw); + display: grid; + grid-template-rows: auto 1fr auto; + background: var(--surface); + box-shadow: var(--shadow); + transform: translateX(102%); + transition: transform 220ms cubic-bezier(0.2, 0, 0, 1); +} + +.cart-drawer[data-open="true"], +.mobile-drawer[data-open="true"] { + transform: none; +} + +.cart-drawer:not([data-open="true"]), +.mobile-drawer:not([data-open="true"]) { + visibility: hidden; + transition: transform 220ms cubic-bezier(0.2, 0, 0, 1), visibility 0s 220ms; +} + +.drawer-head { + display: flex; + justify-content: space-between; + gap: var(--s-5); + align-items: center; + min-height: 70px; + padding: 0 var(--s-5); + border-bottom: 1px solid var(--line); +} + +.drawer-head h2 { + margin: 0; + font-size: 20px; +} + +.drawer-close { + width: 36px; + height: 36px; + background: var(--bg); + border: 1px solid var(--line); + border-radius: var(--r-sm); + transition: color 120ms ease-out, background 120ms ease-out, border-color 120ms ease-out; +} + +/* Matches .icon-button, so the two square controls on the page answer to the + pointer the same way. */ +.drawer-close:hover { + color: var(--cobalt); + background: var(--cobalt-tint); + border-color: var(--cobalt); +} + +.cart-items { + overflow-y: auto; + padding: var(--s-4) var(--s-5); +} + +.cart-empty { + display: grid; + min-height: 100%; + place-items: center; + color: var(--text-2); + text-align: center; +} + +.cart-empty strong { + display: block; + color: var(--ink); + font-size: 20px; +} + +.cart-item { + display: grid; + grid-template-columns: 72px 1fr; + gap: var(--s-3); + padding: var(--s-4) 0; + border-bottom: 1px solid var(--line); +} + +.cart-item img { + width: 72px; + height: 82px; + object-fit: cover; + background: var(--bg); + border-radius: 5px; +} + +.cart-item-top { + display: flex; + justify-content: space-between; + gap: var(--s-3); +} + +.cart-item h3 { + margin: 0; + font-size: 13px; +} + +.cart-item-price { + font: 500 12px/1.3 var(--mono); + white-space: nowrap; +} + +.cart-item-meta { + margin: 3px 0 var(--s-3); + color: var(--text-2); + font-size: 10px; +} + +.cart-item-controls { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; +} + +.mini-quantity { + display: inline-grid; + grid-template-columns: 28px 28px 28px; + height: 29px; + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.mini-quantity button { + padding: 0; + background: var(--surface); + border: 0; +} + +.mini-quantity span { + display: grid; + place-items: center; + font-size: 10px; +} + +.remove-item { + padding: 0; + color: var(--text-2); + background: none; + border: 0; + font-size: 10px; + text-decoration: underline; + transition: color 120ms ease-out; +} + +/* The one destructive control in the cart. --danger on hover only: it stays + quiet in its resting state so it never competes with the price, and it names + itself the moment the pointer commits. */ +.remove-item:hover { + color: var(--danger); +} + +.cart-footer { + padding: var(--s-5); + background: var(--surface); + border-top: 1px solid var(--line); +} + +.cart-subtotal { + display: flex; + justify-content: space-between; + gap: var(--s-5); + margin-bottom: var(--s-4); +} + +.cart-subtotal strong:last-child { + font-family: var(--mono); +} + +.cart-terminus { + margin: 0 0 var(--s-3); + padding: var(--s-3); + color: var(--text-2); + background: var(--bg); + border-radius: 5px; + font-size: 12px; +} + +.cart-footer .button { + width: 100%; +} + +.toast { + position: fixed; + z-index: 300; + bottom: var(--s-5); + left: var(--s-5); + max-width: min(380px, calc(100vw - 48px)); + padding: var(--s-3) var(--s-4); + color: var(--on-dark); + background: var(--slate); + border-radius: 6px; + box-shadow: var(--shadow); + font-size: 12px; + opacity: 0; + transform: translateY(12px); + transition: opacity 140ms ease-out, transform 140ms ease-out; + pointer-events: none; +} + +.toast[data-open="true"] { + opacity: 1; + transform: none; +} + +.mobile-cart-bar { + position: fixed; + z-index: 70; + right: 12px; + bottom: 12px; + left: 12px; + display: flex; + min-height: 50px; + justify-content: space-between; + gap: 16px; + align-items: center; + padding: 0 16px; + color: var(--on-dark); + background: var(--slate); + border: 0; + border-radius: var(--r-sm); + box-shadow: var(--shadow); + /* Was display:none/display:flex, which made a persistent bar appear out of + nowhere mid-scroll. It now stays laid out and slides, so the arrival is + motivated. visibility carries what display used to: while hidden the bar is + out of the tab order and the accessibility tree, and the flip is delayed on + exit so the slide is still painted. */ + opacity: 0; + visibility: hidden; + transform: translateY(calc(100% + 12px)); + pointer-events: none; + transition: opacity 180ms ease-out, transform 260ms var(--ease), visibility 0s 260ms; +} + +.mobile-cart-bar[data-visible="true"] { + opacity: 1; + visibility: visible; + transform: none; + pointer-events: auto; + transition: opacity 180ms ease-out, transform 260ms var(--ease), visibility 0s; +} + +.mobile-cart-bar span { + font-size: 12px; +} + +.mobile-cart-bar strong { + font: 500 12px/1 var(--mono); +} + +.mobile-drawer { + width: min(390px, 94vw); + display: block; + padding: var(--s-5); +} + +.mobile-drawer .drawer-head { + padding: 0; +} + +.mobile-nav { + display: grid; + gap: var(--s-1); + padding-top: var(--s-5); +} + +.mobile-nav a { + padding: var(--s-3) 0; + border-bottom: 1px solid var(--line); + font-size: 16px; + font-weight: 650; +} + +@media (max-width: 1180px) { + .header-main { + grid-template-columns: auto 1fr minmax(220px, 280px) auto; + gap: 16px; + } + + .primary-nav { + gap: 16px; + } + + .primary-nav a { + font-size: 12px; + } + + .hero-grid { + grid-template-columns: 0.9fr 1.1fr; + } + + .product-grid { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (max-width: 960px) { + :root { + --shell: min(100% - 32px, 820px); + } + + .header-main { + grid-template-columns: auto 1fr auto; + padding-top: 12px; + } + + .primary-nav { + display: none; + } + + .mobile-menu-button { + display: inline-grid; + } + + .header-main > .search-wrap { + grid-column: 1 / -1; + grid-row: 2; + margin-bottom: 12px; + } + + .search-shortcut { + display: none; + } + + .category-nav-wrap { + display: none; + } + + .hero-grid { + grid-template-columns: 1fr; + padding-block: var(--s-6) var(--s-5); + } + + .hero-copy h1 { + max-width: 760px; + } + + .hero-visual { + min-height: 330px; + } + + .category-rail { + grid-template-columns: repeat(2, 1fr); + } + + .testing-feature { + grid-template-columns: 1fr; + } + + .bundle-grid, + .education-grid, + .value-grid { + grid-template-columns: repeat(2, 1fr); + } + + .newsletter { + grid-template-columns: 1fr; + } + + .collection-layout { + grid-template-columns: 1fr; + } + + /* The category filters become a horizontal scroller here, and the last pill + used to end flush at the viewport edge, which reads as the end of the list. + A fade on the right edge is the only cue that says the row continues. The + mask is on the border box, so it stays pinned to the edge as the row + scrolls rather than travelling with the content. */ + .filter-panel { + position: static; + display: flex; + gap: var(--s-2); + overflow-x: auto; + padding: 0; + background: transparent; + border: 0; + scrollbar-width: none; + -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent); + mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent); + } + + .filter-panel::-webkit-scrollbar { + display: none; + } + + .filter-panel h2 { + display: none; + } + + .filter-button { + width: auto; + flex: 0 0 auto; + gap: 8px; + padding: 8px 12px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: 99px; + } + + .filter-button[aria-pressed="true"] { + background: var(--cobalt-tint); + border-color: var(--cobalt); + } + + .pdp-grid { + grid-template-columns: 1fr; + } + + .pdp-gallery { + position: static; + } + + .detail-grid { + grid-template-columns: 1fr; + gap: var(--s-6); + } + + .footer-grid { + grid-template-columns: 1.5fr repeat(2, 1fr); + } + + .footer-column:last-child { + grid-column: 2; + } +} + +@media (max-width: 640px) { + :root { + --shell: calc(100vw - 24px); + } + + .concept-banner { + min-height: 42px; + padding-inline: 12px; + font-size: 9px; + letter-spacing: 0.06em; + } + + .header-main { + min-height: 58px; + gap: 12px; + padding-top: 8px; + } + + .wordmark-copy { + gap: 4px; + } + + .wordmark-name { + font-size: 15px; + } + + .wordmark-category { + font-size: 9px; + letter-spacing: 0.16em; + } + + /* 36x36 with a 5px gap is under the 44px touch minimum on the two controls a + phone user reaches for most, and they sit close enough to mis-hit. Both go + to 44 with a full 8px between them. */ + .header-actions { + gap: var(--s-2); + } + + .icon-button { + width: 44px; + height: 44px; + } + + .header-main > .search-wrap { + margin-bottom: 8px; + } + + /* Any control under 16px triggers the iOS focus zoom, which then leaves the + page scrolled sideways. 16px is the platform floor, not a scale change: + desktop keeps the 15px body size. */ + .search-input { + height: 38px; + font-size: 16px; + } + + .home-hero { + overflow: visible; + } + + .hero-grid { + gap: var(--s-5); + padding-top: var(--s-6); + } + + .hero-copy h1 { + line-height: 1.02; + } + + .hero-copy > p:not(.eyebrow) { + font-size: 13px; + } + + .hero-actions { + display: grid; + } + + .hero-actions .button { + width: 100%; + } + + .hero-visual, + .hero-visual > img { + min-height: 270px; + } + + .hero-product-chip { + right: 10px; + bottom: 10px; + width: 174px; + padding: 12px; + } + + .hero-coa-card { + display: none; + } + + .trust-strip { + grid-template-columns: repeat(2, 1fr); + } + + .trust-item { + min-height: 48px; + justify-content: flex-start; + border-bottom: 1px solid var(--line); + text-align: left; + } + + .trust-item:nth-child(2) { + border-right: 0; + } + + .trust-item:nth-child(n + 3) { + border-bottom: 0; + } + + .section, + .detail-section { + padding-block: var(--s-7); + } + + .section-tight { + padding-block: var(--s-6); + } + + .section-head { + display: block; + margin-bottom: var(--s-4); + } + + .category-section-head { + margin-top: var(--s-6); + } + + .section-head h2 { + } + + .section-head p, + .section-head .text-link { + margin-top: var(--s-3); + } + + .category-rail { + display: flex; + gap: var(--gutter-grid); + overflow-x: auto; + margin-right: -12px; + padding-right: 12px; + scroll-snap-type: x mandatory; + } + + .category-tile { + min-width: 220px; + scroll-snap-align: start; + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--gutter-grid); + } + + .product-image-wrap { + aspect-ratio: 4 / 4.6; + } + + .product-card-body { + padding: var(--s-3); + } + + .product-category { + min-height: 22px; + font-size: 9px; + } + + .product-name { + font-size: 13px; + } + + .product-description { + min-height: 32px; + font-size: 12px; + -webkit-line-clamp: 2; + } + + .testing-micro { + display: block; + font-size: 10px; + } + + .testing-micro a { + margin-top: 3px; + } + + .product-buy-row { + grid-template-columns: 1fr; + gap: var(--s-2); + } + + .price { + font-size: 13px; + } + + /* The primary conversion control on a phone. 40px was four short of the + touch minimum, on the one button the whole grid exists to serve. */ + .add-button { + min-height: 44px; + font-size: 12px; + } + + .testing-feature { + border-radius: var(--r-lg); + } + + .testing-feature-copy, + .testing-document { + padding: var(--s-5); + } + + .testing-document { + margin: 0 var(--s-3) var(--s-3); + } + + .testing-feature-copy h2 { + } + + .document-row { + grid-template-columns: 1fr; + gap: 4px; + } + + .document-row span { + text-align: left; + } + + .bundle-grid, + .education-grid, + .value-grid { + grid-template-columns: 1fr; + } + + .newsletter { + padding: var(--s-5); + } + + .newsletter-form { + display: grid; + } + + .newsletter-form input { + width: 100%; + } + + .newsletter-form button { + min-height: 44px; + } + + .article-shell .button { + width: 100%; + } + + .article-shell .button + .button { + margin-top: var(--s-2); + margin-left: 0; + } + + /* The article gutter and the section gutter are the same 12px here, so the + vertical rhythm steps down with them. */ + .article-shell { + padding-block: var(--s-7) var(--s-8); + } + + .page-hero { + padding: var(--s-7) 0 var(--s-6); + } + + .page-hero h1 { + } + + .collection-toolbar { + grid-template-columns: 1fr; + } + + .pdp-grid { + gap: var(--s-5); + padding-top: var(--s-5); + } + + .pdp-main-image { + aspect-ratio: 1; + } + + .pdp-buybox h1 { + } + + .buy-controls { + grid-template-columns: 96px 1fr; + } + + /* Stays 2x2. A three-column override here would orphan the fourth tile onto a + row of its own, which is the bug this grid was changed to fix. */ + .buybox-cues { + grid-template-columns: repeat(2, 1fr); + } + + .buybox-cue { + padding: 12px 8px; + } + + .buybox-cue strong { + font-size: 12px; + } + + .buybox-cue span { + font-size: 10px; + } + + .cart-item-meta, + .remove-item, + .pdp-note, + .result-summary { + font-size: 12px; + } + + .testing-row { + grid-template-columns: 1fr auto; + gap: var(--s-2) var(--s-4); + } + + /* Deleting this column deleted the page's entire argument on a phone: the + framework table lost all four questions and the catalog list lost every lot + number and report date, leaving only the badge. It stacks under the label + instead of disappearing. */ + .testing-row strong { + grid-column: 1; + grid-row: 1; + } + + .testing-row .status-pill { + grid-column: 2; + grid-row: 1; + } + + .testing-row span:nth-child(2) { + grid-column: 1 / -1; + grid-row: 2; + } + + .testing-lookup { + grid-template-columns: 1fr; + } + + .footer-grid { + grid-template-columns: repeat(2, 1fr); + gap: var(--s-6) var(--s-4); + } + + .footer-brand { + grid-column: 1 / -1; + } + + .footer-column:last-child { + grid-column: auto; + } + + .footer-bottom { + display: block; + } + + .footer-bottom span { + display: block; + margin-top: 8px; + } + + .toast { + right: 12px; + bottom: 76px; + left: 12px; + max-width: none; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } + + .primary-nav a::after { + transition: none; + } +} + +/* ============================================================================ + Commerce: cart page, checkout flow, order confirmation. + Built on the existing tokens and .shell/.section rhythm so these read as + part of the site rather than a bolted-on flow. Nothing here changes the + type scale or the grid conventions used elsewhere. + ========================================================================= */ + +.page-hero.is-compact { padding-block: var(--s-6) var(--s-5); } + +/* ---- shared: order summary panel ---- */ +.order-summary { + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} +.order-summary h2 { margin: 0 0 var(--s-4); font-size: 15px; font-weight: 650; letter-spacing: -0.01em; } +.summary-lines { display: grid; gap: var(--s-4); padding-bottom: var(--s-4); border-bottom: 1px solid var(--line); } +/* The line price was vertically centred against a three-line meta block, and the + 211px meta column forced `reported 2026-06-24` to break across two lines mid + date. The price now sits on the product-name row where it can be compared, + and the meta spans the full width beneath both, which is what buys the lot + line the width it needs to stay on one line. */ +.summary-line { display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; column-gap: var(--s-3); row-gap: var(--s-1); align-items: start; } +.summary-line > div { display: contents; } +.summary-line > img { grid-row: 1 / span 3; align-self: start; } +.summary-line > div > strong { grid-column: 2; } +.summary-line > div > span { grid-column: 2 / -1; } +.summary-line img { width: 48px; height: 54px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--r-sm); } +.summary-line strong { display: block; font-size: 13px; font-weight: 650; } +.summary-line span { color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.summary-line span.summary-line-price { grid-column: 3; grid-row: 1; color: var(--ink); font: 650 13px/1.4 var(--sans); white-space: nowrap; } +.summary-rows { display: grid; gap: var(--s-2); padding: var(--s-4) 0; border-bottom: 1px solid var(--line); } +.summary-row { display: flex; justify-content: space-between; gap: var(--s-4); font-size: 13px; color: var(--text-2); } +.summary-row.is-credit span:last-child { color: var(--success); } +.summary-total { display: flex; justify-content: space-between; padding-top: var(--s-4); font-size: 16px; font-weight: 650; } +.summary-note { margin: var(--s-3) 0 0; color: var(--text-3); font-size: 12px; line-height: 1.5; } + +/* ---- cart page ---- */ +.cart-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.ship-progress { + margin: 0 0 var(--s-5); padding: var(--s-3) var(--s-4); + background: var(--cobalt-tint); border-radius: 8px; + font-size: 13px; color: var(--ink); +} +.ship-progress.is-met { background: var(--success-tint); } +.status-dot { display: inline-block; width: 6px; height: 6px; margin-right: 8px; background: var(--success); border-radius: 50%; vertical-align: middle; } +.cart-rows { display: grid; gap: 0; border-top: 1px solid var(--line); } +.cart-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--s-5); padding: var(--s-5) 0; border-bottom: 1px solid var(--line); } +/* Explicit box + cover. The intrinsic art is 4:3 and the slot is 8:9, so with + no dimensions the vials rendered stretched in both the cart and the checkout + summary. Scoped rather than a global img { height: auto }, which would move + every cart row height on the site. */ +.cart-row-image img { width: 120px; height: 135px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--r-md); } +.cart-row-head { display: flex; justify-content: space-between; gap: var(--s-4); align-items: flex-start; } +.cart-row-head h3 { margin: 0 0 3px; font-size: 15px; font-weight: 650; letter-spacing: -0.01em; } +.cart-row-meta { margin: 0; color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.cart-row-price { font-size: 15px; font-weight: 650; white-space: nowrap; } +.cart-row-status { margin: var(--s-3) 0 var(--s-4); color: var(--text-2); font-size: 12px; } +.cart-row-controls { display: flex; gap: var(--s-4); align-items: center; flex-wrap: wrap; } +.cart-row-unit { color: var(--text-3); font-size: 12px; } +.cart-actions { display: flex; justify-content: space-between; align-items: center; gap: var(--s-4); margin-top: var(--s-5); } +.cart-aside { display: grid; gap: var(--s-4); position: sticky; top: 96px; } +.checkout-cta { display: block; margin-top: var(--s-4); text-align: center; } +.promo-form { padding: var(--s-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.promo-form label { display: block; margin-bottom: var(--s-2); font-size: 12px; font-weight: 650; } +.promo-input-row { display: flex; gap: var(--s-2); } +.promo-input-row input { + flex: 1; min-width: 0; height: 38px; padding: 0 var(--s-3); + color: var(--ink); background: var(--bg); + border: 1px solid var(--line); border-radius: 6px; +} +.promo-input-row input:focus { background: var(--surface); border-color: var(--cobalt); outline: none; box-shadow: 0 0 0 2px var(--cobalt-tint); } +.promo-feedback { margin: var(--s-2) 0 0; color: var(--success); font-size: 12px; min-height: 1em; } +.promo-feedback.is-error { color: var(--danger); } + +/* ---- checkout ---- */ +.stepper { display: flex; gap: var(--s-2); flex-wrap: wrap; margin: var(--s-5) 0 0; padding: 0; list-style: none; } +.step { display: flex; gap: var(--s-2); align-items: center; padding: 8px var(--s-3) 8px 8px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-pill); } +.step-index { display: grid; width: 21px; height: 21px; place-items: center; color: var(--text-2); background: var(--bg); border-radius: 50%; font: 500 12px/1 var(--mono); } +.step-label { color: var(--text-2); font-size: 12px; font-weight: 500; } +.step.is-current { border-color: var(--cobalt); } +.step.is-current .step-index { color: #fff; background: var(--cobalt); } +.step.is-current .step-label { color: var(--cobalt); font-weight: 650; } +/* --success is this site's reported/verified signal. Spending it on "you filled + in a form step" puts four green pills next to a summary whose whole argument + is which analytics are green. Done reads solid, current cobalt, upcoming light. */ +.step.is-done .step-index { color: #fff; background: var(--slate); } +.step.is-done .step-label { color: var(--ink); } + +.checkout-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.checkout-step { margin: 0; padding: var(--s-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.checkout-step legend { display: flex; gap: var(--s-3); align-items: center; padding: 0; font-size: 16px; font-weight: 650; letter-spacing: -0.015em; } +.checkout-step legend span { display: grid; width: 24px; height: 24px; place-items: center; color: #fff; background: var(--cobalt); border-radius: 50%; font: 500 12px/1 var(--mono); } +.step-hint { margin: var(--s-3) 0 0; color: var(--text-2); font-size: 13px; line-height: 1.55; } + +.field-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-4); margin-top: var(--s-5); } +.field.is-full { grid-column: span 4; } +.field.is-half { grid-column: span 2; } +.field.is-quarter { grid-column: span 1; } +.field label { display: block; margin-bottom: 8px; font-size: 12px; font-weight: 650; } +.field-optional { color: var(--text-3); font-weight: 400; } +.field input, .field select { + width: 100%; height: 42px; padding: 0 var(--s-3); + color: var(--ink); background: var(--bg); + border: 1px solid var(--line); border-radius: 6px; +} +.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--text-2) 50%), linear-gradient(135deg, var(--text-2) 50%, transparent 50%); background-position: calc(100% - 17px) 18px, calc(100% - 12px) 18px; background-size: 5px 5px; background-repeat: no-repeat; } +.field input:focus, .field select:focus { background: var(--surface); border-color: var(--cobalt); outline: none; box-shadow: 0 0 0 2px var(--cobalt-tint); } +.field input[readonly] { color: var(--text-2); background: var(--surface-soft); cursor: not-allowed; } +.field input.has-error, .field select.has-error { border-color: var(--danger); } +.field-error { margin: 8px 0 0; color: var(--danger); font-size: 12px; min-height: 1em; } +.field-note { margin: 8px 0 0; color: var(--text-3); font: 400 12px/1.4 var(--mono); } + +.choice-group { display: grid; gap: var(--s-3); margin-top: var(--s-5); } +.choice { display: flex; gap: var(--s-3); align-items: flex-start; padding: var(--s-4); border: 1px solid var(--line); border-radius: 8px; cursor: pointer; transition: border-color 140ms var(--ease), background 140ms var(--ease); } +.choice:hover { border-color: var(--line-strong); } +.choice:has(input:checked) { border-color: var(--cobalt); background: var(--cobalt-tint); } +.choice input { margin-top: 3px; accent-color: var(--cobalt); } +.choice-body { flex: 1; } +.choice-title { display: flex; justify-content: space-between; gap: 16px; font-size: 13px; font-weight: 650; } +.choice-price { font-weight: 650; } +.choice-detail { display: block; margin-top: 4px; color: var(--text-2); font-size: 12px; } + +.demo-payment-notice { margin-top: var(--s-5); padding: var(--s-4); background: var(--surface-soft); border-left: 3px solid var(--cobalt); border-radius: 0 8px 8px 0; } +.demo-payment-notice strong { display: block; margin-bottom: 4px; font-size: 13px; } +.demo-payment-notice p { margin: 0; color: var(--text-2); font-size: 12px; line-height: 1.6; } + +.checkbox-row { display: flex; gap: var(--s-3); align-items: flex-start; margin-top: var(--s-5); font-size: 13px; line-height: 1.5; cursor: pointer; } +.checkbox-row input { margin-top: 2px; accent-color: var(--cobalt); } +.checkbox-row a { color: var(--cobalt); text-decoration: underline; text-underline-offset: 2px; } + +/* Steps 2 to 5 carry three buttons. Under space-between that stranded `Back to + cart` alone in the middle of an 878px row, aligned to nothing. Retreats group + at the left, the single forward action holds the right edge. */ +.step-actions { display: flex; justify-content: flex-start; gap: var(--s-3); align-items: center; margin-top: var(--s-5); } +.step-actions .button-primary { margin-left: auto; } +.step-actions .button { min-width: 0; } + +.review-blocks { display: grid; gap: var(--s-3); margin-top: var(--s-5); } +.review-block { padding: var(--s-4); background: var(--bg); border-radius: 8px; } +.review-block-head { display: flex; justify-content: space-between; gap: 16px; align-items: baseline; } +.review-block h3 { margin: 0 0 8px; font-size: 12px; font-weight: 650; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-2); } +.review-block p { margin: 0; font-size: 13px; line-height: 1.6; } +.link-button { padding: 0; color: var(--cobalt); background: none; border: 0; font-size: 12px; font-weight: 650; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; } + +/* ---- confirmation ---- */ +.confirmation-layout { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: var(--s-6); align-items: start; } +.tracker { display: grid; gap: 0; margin: 0 0 var(--s-6); padding: 0; list-style: none; } +.tracker li { position: relative; padding: 0 0 var(--s-5) 30px; color: var(--text-2); font-size: 13px; font-weight: 650; } +.tracker li:last-child { padding-bottom: 0; } +.tracker li::before { position: absolute; top: 16px; bottom: 0; left: 6px; width: 2px; content: ""; background: var(--line); } +.tracker li:last-child::before { display: none; } +.tracker li span { position: absolute; top: 3px; left: 0; width: 14px; height: 14px; background: var(--surface); border: 2px solid var(--line-strong); border-radius: 50%; } +.tracker li.is-done { color: var(--ink); } +.tracker li.is-done span { background: var(--slate); border-color: var(--slate); } +.tracker li em { display: block; margin-top: 3px; color: var(--text-3); font: 400 12px/1.4 var(--mono); font-style: normal; } + +/* Confirmation-only. This was previously declared as .detail-grid, which + collided with the global editorial .detail-grid (0.72fr 1.28fr) defined + earlier and silently flattened it site-wide. */ +/* Five cards in two columns left the fifth alone in a half-width row with a dead + cell beside it. Three across, and the long resolution card takes the two + remaining tracks, so no row is left half-built. */ +.confirmation-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-3); } +.confirmation-details .detail-card:last-child { grid-column: span 2; } +.detail-card { padding: var(--s-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); } +.detail-card h3 { margin: 0 0 8px; color: var(--text-2); font-size: 12px; font-weight: 650; letter-spacing: 0.06em; text-transform: uppercase; } +.detail-card p { margin: 0; font-size: 13px; line-height: 1.65; } + +/* ---- narrow ---- */ +@media (max-width: 960px) { + .cart-layout, .checkout-layout, .confirmation-layout { grid-template-columns: minmax(0, 1fr); gap: var(--s-5); } + .cart-aside { position: static; } + .checkout-aside { order: -1; } +} +@media (max-width: 640px) { + .field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-3); } + .field.is-full, .field.is-half { grid-column: span 2; } + .field.is-quarter { grid-column: span 1; } + .cart-row { grid-template-columns: 84px minmax(0, 1fr); gap: var(--s-3); } + .cart-row-image img { width: 84px; height: 95px; } + .checkout-step { padding: var(--s-5) var(--s-4); } + .confirmation-details { grid-template-columns: minmax(0, 1fr); } + .confirmation-details .detail-card:last-child { grid-column: auto; } + /* column-reverse produced three identical full-width stacked buttons, two of + them retreats, which is 150px of equal-weight exit routes under the one + action that matters. wrap-reverse floats the primary onto its own full-width + line above the two back paths, which share a row. */ + .step-actions { flex-direction: row; flex-wrap: wrap-reverse; align-items: stretch; } + .step-actions .button { flex: 1 1 0; width: auto; text-align: center; } + .step-actions .button-primary { flex: 1 0 100%; margin-left: 0; } + .stepper { gap: 8px; } + .step { padding: 4px 12px 4px 4px; } + .step-label { font-size: 12px; } +} + +/* iOS zooms into any focused control rendering under 16px and does not zoom back + out, which leaves a half-finished checkout scrolled sideways with the next + field off-screen. 16px is the platform floor for text entry, not a type-scale + change: it applies to touch-width inputs only, and the desktop 15px body size + is untouched. The breakpoint is 768 rather than 640 because tablet-width + Safari zooms too. */ +@media (max-width: 768px) { + .field input, + .field select, + .promo-input-row input, + .testing-lookup input, + .collection-search, + .collection-sort, + .newsletter-form input { + font-size: 16px; + } +} + +.promo-hint { margin: 8px 0 0; color: var(--text-3); font-size: 12px; } +.promo-hint .link-button { font-size: 12px; } + +/* Mobile checkout: the order summary must not bury the actual task. Collapse it + into the standard mobile pattern (summary header + total, tap to expand) so + step 1 of the form is the first thing in the viewport. Desktop is unchanged. */ +@media (max-width: 960px) { + .checkout-aside { order: 0; } + .checkout-layout .checkout-main { order: -1; } + .checkout-aside .order-summary { padding: 0; } + .checkout-aside .order-summary h2 { + display: flex; justify-content: space-between; align-items: center; + margin: 0; padding: var(--s-4); cursor: default; + } + .checkout-aside .summary-lines, + .checkout-aside .summary-rows { padding-inline: var(--s-4); } + .checkout-aside .summary-total { padding: var(--s-4); } + .checkout-aside .summary-note { padding: 0 var(--s-4) var(--s-4); margin-top: 0; } +} + +/* Reported analytical results. The stylesheet previously only had an empty + state, because nothing was ever reported. A reported field reads as + confirmed; an unreported one stays visibly, deliberately blank. */ +.status-pill.is-reported { + color: var(--success); + background: var(--success-tint); + border-color: transparent; +} +.testing-row.is-reported strong { color: var(--ink); } +/* The testing document is a WHITE card sitting inside the dark band, not the + dark band itself. These were written as if they sat on --slate, so the + reported values rendered white-on-white and the site's central claim was + literally invisible on the homepage. */ +.document-tag.is-reported { + color: var(--success); + background: var(--success-tint); +} +.document-row.is-reported span { color: var(--ink); } +.document-row.is-reported strong { color: var(--ink); } + +.lookup-lot { margin: 4px 0 12px; color: var(--text-2); font: 400 12px/1 var(--mono); } +.lookup-fields { display: grid; gap: 8px; margin-bottom: 16px; } +.lookup-field { + display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2px 16px; + padding: 8px 12px; background: var(--bg); border-radius: 6px; +} +.lookup-field span { color: var(--text-2); font-size: 12px; font-weight: 650; } +.lookup-field strong { grid-column: 2; grid-row: 1; font-size: 13px; text-align: right; } +.lookup-field em { grid-column: 1 / -1; color: var(--text-3); font: 400 12px/1.4 var(--mono); font-style: normal; } +.lookup-field.is-reported strong { color: var(--success); } + +/* Fulfillment expectations at the decision point. Three facts a buyer of a + temperature-sensitive vial wants before committing: how it travels, whether + the lot was tested, and what shipping costs. */ +.pdp-assurances { margin: var(--s-4) 0 0; padding: 0; list-style: none; display: grid; gap: var(--s-2); } +.pdp-assurances li { + position: relative; padding-left: 24px; + color: var(--text-2); font-size: 13px; line-height: 1.5; +} +.pdp-assurances li::before { + position: absolute; top: 6px; left: 0; + width: 6px; height: 6px; content: ""; + /* Neutral, not success green. Green is the "verified/reported" token that the + COA pills and lot records trade on. Spending it on shipping policy would + dilute the one signal the catalog's credibility rests on. */ + background: var(--text-2); border-radius: 50%; +} +.pdp-testing-link.is-reported { color: var(--cobalt); } + +/* Availability. Three states, and the unavailable one is deliberately quiet: + a struck-through disabled control rather than a red alarm, because an item we + do not sell is a normal catalog state, not an error the shopper caused. */ +.stock-badge { + display: inline-block; margin-left: 8px; padding: 2px 8px; + border-radius: 99px; font: 500 9px/1.6 var(--mono); + letter-spacing: 0.06em; text-transform: uppercase; vertical-align: middle; +} +.stock-badge.is-in { color: var(--success); background: var(--success-tint); } +.stock-badge.is-low { color: #8a5a00; background: #fdf3e2; } +.stock-badge.is-unavailable { color: var(--text-2); background: var(--surface-soft); } + +.add-button.is-unavailable, +.pdp-add.is-unavailable { + color: var(--text-3); + background: var(--surface-soft); + border-color: var(--line); + cursor: not-allowed; +} +.add-button.is-unavailable:hover, +.pdp-add.is-unavailable:hover { background: var(--surface-soft); border-color: var(--line); } + +.status-dot.is-blocked { background: var(--text-3); } + +.cart-blocked-notice { + margin: 0 0 var(--s-4); padding: var(--s-3) var(--s-4); + color: var(--ink); background: var(--surface-soft); + border-left: 3px solid var(--text-2); border-radius: 0 8px 8px 0; + font-size: 13px; line-height: 1.55; +} +.cart-blocked-notice strong { display: block; margin-bottom: 3px; } +.checkout-cta.is-blocked { + pointer-events: none; + cursor: not-allowed; + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + opacity: 1; +} + +/* ============================================================================ + New components. Free-shipping progress, the restricted-compound notice, and + the in-checkout discount disclosure. Plus two fixes that had nowhere else to + live: the footer spacer under the mobile cart bar, and the aria-invalid + companion to .has-error. + ========================================================================= */ + +/* ---- free-shipping progress (cart drawer + cart page) ---- + The fill is cobalt, not green. Green on this site means "reported/verified", + which is the single signal the catalog's credibility rests on. Spending it on + a shipping threshold would dilute the one thing a buyer is meant to trust. + The one green allowed here is the met-state label and its status dot, which + is a genuine applied/confirmed state. */ +.ship-progress-bar { + display: grid; + gap: var(--s-2); + margin-bottom: var(--s-4); +} + +.ship-progress-bar__track { + height: 6px; + overflow: hidden; + background: var(--surface-soft); + border-radius: var(--r-pill); +} + +.ship-progress-bar__fill { + height: 100%; + background: var(--cobalt); + border-radius: var(--r-pill); + transition: width 240ms var(--ease); +} + +.ship-progress-bar__label { + margin: 0; + color: var(--text-2); + font-size: 13px; +} + +.ship-progress-bar__label strong { + color: var(--ink); + font-variant-numeric: tabular-nums; +} + +.ship-progress-bar.is-met .ship-progress-bar__fill { + background: var(--success); +} + +.ship-progress-bar.is-met .ship-progress-bar__label { + color: var(--success); +} + +/* Inside the drawer footer the bar sits directly above the subtotal, so it + loses its own bottom margin and borrows the subtotal's. */ +.cart-footer .ship-progress-bar { + margin-bottom: var(--s-3); +} + +/* ---- restricted compound notice (buy box) ---- + Deliberately not the out-of-stock treatment. "Unavailable" says come back + later; this says we will not sell it, and why. Neutral grey throughout: the + pill is a status, but a negative one, so it takes neither cobalt (which means + interactive) nor green (which means verified) nor gold (brand material). */ +.restricted-notice { + padding: var(--s-4); + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.restricted-notice__pill { + display: inline-block; + margin-bottom: var(--s-2); + padding: 3px 8px; + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line-strong); + border-radius: var(--r-pill); + font: 500 9px/1.6 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.restricted-notice p { + margin: 0; + color: var(--text-2); + font-size: 13px; + line-height: 1.6; +} + +/* Catalog and search pills for the same two entries, in the same neutral grey, + so the state reads identically wherever the entry appears. */ +.stock-badge.is-restricted { + color: var(--text-3); + background: var(--surface); + border: 1px solid var(--line-strong); +} + +/* ---- in-checkout discount disclosure ---- + A real
    , so the trigger is keyboard-operable and picks up the + standard focus ring without any script. */ +.promo-disclosure { + padding: var(--s-4); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); +} + +.promo-disclosure > summary { + display: flex; + justify-content: space-between; + gap: var(--s-3); + align-items: center; + color: var(--cobalt); + font-size: 13px; + font-weight: 650; + cursor: pointer; + list-style: none; + transition: color 120ms ease-out; +} + +.promo-disclosure > summary::-webkit-details-marker { + display: none; +} + +.promo-disclosure > summary::after { + content: ""; + flex: 0 0 11px; + height: 11px; + background-image: + linear-gradient(var(--cobalt), var(--cobalt)), + linear-gradient(var(--cobalt), var(--cobalt)); + background-repeat: no-repeat; + background-position: center; + background-size: 11px 1.5px, 1.5px 11px; + transition: background-size 200ms var(--ease); +} + +.promo-disclosure[open] > summary::after { + background-size: 11px 1.5px, 1.5px 0; +} + +.promo-disclosure > summary:hover { + color: var(--cobalt-deep); +} + +/* The promo form is already a panel elsewhere. Inside the disclosure it is just + the contents, so it drops its own frame. */ +.promo-disclosure .promo-form { + margin-top: var(--s-3); + padding: 0; + background: none; + border: 0; + border-radius: 0; +} + +/* ---- invalid field ---- + Pairs with .has-error so the red border follows aria-invalid on its own. A + field can then be announced and outlined from a single state change. */ +.field input[aria-invalid="true"], +.field select[aria-invalid="true"] { + border-color: var(--danger); +} + +/* ---- mobile cart bar clearance ---- + The bar is fixed at the bottom of the viewport and was sitting on top of the + last two footer rows. Any page that renders the bar reserves its height plus + its offset. */ +@media (max-width: 640px) { + body:has(.mobile-cart-bar) .site-footer { + padding-bottom: 64px; + } +} + +/* ============================================================================ + Components the interrupted build emitted in site.js but never styled. + Each of these was rendering as an unstyled element: no error thrown, just + silently wrong. Values use the spacing scale rather than new magic numbers. + ========================================================================= */ + +/* Cart page: left column and row internals */ +.cart-main { min-width: 0; } +.cart-row-body { display: flex; flex-direction: column; min-width: 0; } +.cart-row-cap { + margin: var(--s-2) 0 0; + color: var(--text-3); + font: 400 12px/1.4 var(--mono); +} + +/* Cart drawer actions: full-width stacked, primary first */ +/* display:block + min-height leaves the label pinned to the top of the box: + align-items does nothing on a block. These render as 46px tall buttons with + the text 2px from the top and 28px from the bottom. Grid centres it. */ +.cart-checkout, +.cart-view { display: grid; place-items: center; width: 100%; text-align: center; } +.cart-view { margin-top: var(--s-2); } + +/* Cross-sell below the cart lines. Deliberately quieter than the catalog grid + so it reads as a suggestion rather than competing with the checkout action. */ +.cart-cross-sell { + margin-top: var(--s-7); + padding-top: var(--s-6); + border-top: 1px solid var(--line); +} +.cart-cross-sell h2 { + margin: 0 0 var(--s-4); + font-size: 15px; + font-weight: 650; + letter-spacing: -0.01em; +} +.cart-cross-sell .product-grid { gap: var(--s-4); } + +/* Search dropdown thumbnail. Fixed box + cover, since the source art is 4:3 + and this slot is square. */ +.search-result-image { + flex: 0 0 auto; + display: block; + width: 52px; + height: 52px; + overflow: hidden; + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} +.search-result-image img { width: 52px; height: 52px; object-fit: cover; } + +/* Lot and report date beneath the analytical panel */ +.analytical-meta { + display: flex; + gap: var(--s-4); + flex-wrap: wrap; + margin-top: var(--s-4); + padding-top: var(--s-4); + border-top: 1px solid var(--line); + color: var(--text-2); + font: 400 12px/1.5 var(--mono); +} + +/* Footer contact column: same grid cell, looser leading for the address block */ +.footer-contact p { margin: 0 0 var(--s-2); line-height: 1.6; } +.footer-contact a { color: inherit; text-decoration: underline; text-underline-offset: 2px; } + +/* Confirmation left column */ +.confirmation-main { min-width: 0; } + +@media (max-width: 640px) { + .cart-cross-sell { margin-top: var(--s-6); padding-top: var(--s-5); } + .search-result-image, .search-result-image img { width: 44px; height: 44px; } +} + +/* Checkout stepper: the pills double as back-navigation to a completed step */ +.step-jump { + padding: 0; + color: inherit; + background: none; + border: 0; + font: inherit; + cursor: pointer; +} +/* The five stepper items are disabled buttons, so button:disabled knocked the + whole progress indicator - current step included - to 0.55. The pending step + labels measured rgb(165,170,177) = 2.34:1 on their own white pill at 12px. + At full opacity the same pixel is --text-2 = 5.98:1. This is a progress + indicator, not a control to be read as unavailable. */ +.step-jump:disabled { cursor: default; opacity: 1; } +.step-jump:focus-visible { outline: 2px solid var(--cobalt); outline-offset: 3px; border-radius: var(--r-sm); } + +/* Who ran the analysis, and why one field is deliberately empty. These carry + the credibility of the analytical panel, so they read as record, not legalese. */ +.testing-attribution, +.testing-scope-note { + margin: var(--s-4) 0 0; + max-width: var(--measure); + color: var(--text-2); + font-size: 12px; + line-height: 1.6; +} +.testing-scope-note { + padding-left: var(--s-3); + border-left: 2px solid var(--line-strong); +} + +/* Footer contact heading sat flush against the paragraph above it, reading as + a stray line rather than a column label. */ +.footer-contact h2 { margin-top: var(--s-5); } + +/* "View status" was wrapping mid-phrase inside the card's testing row, which + broke the line into "View / status" on narrower cards. */ +.testing-micro { gap: var(--s-3); align-items: baseline; } +.testing-micro a { flex: 0 0 auto; white-space: nowrap; } + +/* The simulated vial label is only 40% of the image width, so a catalog code + was breaking mid-token ("OVO-" / "002"), which reads as a rendering fault on + what is meant to look like printed packaging. */ +.product-image-label span { white-space: nowrap; } +.product-image-label { width: 62%; } + +/* Category + stock badge share a line. A long category ("Growth Hormone + Research") pushed the badge to a second line and knocked that card's title + out of alignment with its neighbours in the same row. */ +.product-category { + display: flex; + gap: var(--s-2); + align-items: center; + flex-wrap: wrap; + min-height: 18px; +} +.product-card .product-category { min-height: 32px; align-content: flex-start; } + + +/* Mobile catalog. On a 390x844 phone the index pages shipped 750px of hero, + filter rail and toolbar before the first product card, so the grid the page + exists to show opened below the fold. Three steps, all on the scale: the hero + drops to the s-6/s-5 pair, the H1 takes the next step down, and the hero's + descriptive paragraph is suppressed because it restates what the filter rail, + the search field and the live result count already say on screen. Measured + 750px to 586px, so the first card now lands inside the first screen. + + Scoped to a hero that is immediately followed by a product or bundle grid AND + carries no .hero-actions. That second condition matters: the 404 and + empty-cart heroes are also followed by a product grid, and their paragraph is + the only instruction on the page, so they keep it. Editorial, policy and PDP + heroes never match. */ +@media (max-width: 768px) { + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid), + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) { + padding: var(--s-6) 0 var(--s-5); + } + + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid) h1, + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) h1 { + font-size: var(--t-section); + } + + .page-hero:not(:has(.hero-actions)):has(+ .section .product-grid) > .shell > p:not(.eyebrow), + .page-hero:not(:has(.hero-actions)):has(+ .section .bundle-grid) > .shell > p:not(.eyebrow) { + display: none; + } +} + + + +/* ── Lot record ────────────────────────────────────────────────────────────── + The one artifact the site kept promising and never produced. Styled as a + record, not a page: mono for anything that is data, a label above every + field, and the unreported rows carried at the same weight as the reported + ones. No badges and no status colour, because a record earns trust by being + legible and complete rather than decorated. */ +.lot-hero-number { font-family: var(--mono); font-weight: 500; font-size: 0.86em; letter-spacing: -0.02em; } + +.lot-layout { + display: grid; + grid-template-columns: minmax(0, 1fr) 300px; + gap: var(--s-6); + align-items: start; +} + +.lot-doc { + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); + overflow: hidden; +} + +.lot-doc-head { + display: flex; + gap: var(--s-4); + justify-content: space-between; + align-items: baseline; + flex-wrap: wrap; + padding: var(--s-5); + border-bottom: 1px solid var(--line-strong); +} +.lot-doc-kicker { + margin: 0 0 var(--s-1); + color: var(--text-3); + font: 500 9px/1 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} +.lot-doc-head h2 { margin: 0; font-size: 20px; letter-spacing: -0.01em; } +.lot-doc-ref { margin: 0; color: var(--text-2); font: 500 12px/1.4 var(--mono); } + +.lot-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; padding: 0; } +.lot-field { padding: var(--s-4) var(--s-5); border-bottom: 1px solid var(--line); } +.lot-field:nth-child(odd) { border-right: 1px solid var(--line); } +.lot-field dt { + margin: 0 0 var(--s-1); + color: var(--text-3); + font-size: 10px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-field dd { margin: 0; color: var(--ink); font: 500 13px/1.5 var(--mono); overflow-wrap: anywhere; } + +.lot-block { padding: var(--s-5); border-top: 1px solid var(--line); } +.lot-block h3 { + margin: 0 0 var(--s-4); + color: var(--text-2); + font-size: 12px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-omissions { background: var(--surface-soft); } + +.lot-methods { display: grid; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-sm); } +.lot-method { + display: grid; + grid-template-columns: 0.8fr 1fr 0.9fr; + gap: var(--s-4); + align-items: baseline; + padding: var(--s-4); + border-bottom: 1px solid var(--line); +} +.lot-method:last-child { border-bottom: 0; } +.lot-method-label { color: var(--ink); font-size: 12px; font-weight: 650; } +.lot-method-method { color: var(--text-2); font: 400 12px/1.5 var(--mono); } +.lot-method-result { color: var(--ink); font: 500 13px/1.4 var(--mono); } +.lot-method.is-omitted .lot-method-method, +.lot-method.is-omitted .lot-method-result { color: var(--text-3); } + +.lot-note { margin: var(--s-4) 0 0; max-width: var(--measure); color: var(--text-2); font-size: 12px; line-height: 1.6; } +.lot-doc-foot { padding: var(--s-5); border-top: 1px solid var(--line-strong); } +.lot-doc-foot p { margin: 0 0 var(--s-2); max-width: var(--measure); color: var(--text-2); font-size: 12px; line-height: 1.6; } +.lot-doc-foot p:last-child { margin-bottom: 0; } + +.lot-aside { display: grid; gap: var(--s-3); } +.lot-aside h2 { + margin: 0; + color: var(--text-2); + font-size: 12px; + letter-spacing: 0.08em; + text-transform: uppercase; +} +.lot-aside h2 + .lot-index { margin-bottom: var(--s-2); } +.lot-aside-note { + margin: 0; + padding: var(--s-3); + background: var(--surface-soft); + border-radius: var(--r-sm); + color: var(--text-2); + font-size: 12px; + line-height: 1.6; +} +.lot-aside-note strong { color: var(--ink); } +.lot-aside-links { display: grid; gap: var(--s-2); margin-bottom: var(--s-3); } +.lot-aside-links a { color: var(--cobalt); font-size: 13px; text-decoration: none; } +.lot-aside-links a:hover { text-decoration: underline; } + +.lot-index { display: grid; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; } +.lot-index-row { + display: grid; + grid-template-columns: 0.55fr 1.1fr 0.4fr 0.6fr; + gap: var(--s-4); + align-items: baseline; + padding: var(--s-4); + border-bottom: 1px solid var(--line); + color: inherit; + text-decoration: none; + transition: background 120ms ease-out, box-shadow 120ms ease-out; +} +.lot-index-row:last-child { border-bottom: 0; } +.lot-index-row:hover { background: var(--cobalt-tint); box-shadow: inset 3px 0 0 var(--cobalt); } +.lot-index-lot { color: var(--ink); font: 500 13px/1.4 var(--mono); } +.lot-index-name { font-size: 13px; } +.lot-index-code, +.lot-index-date { color: var(--text-2); font: 400 12px/1.4 var(--mono); } +.lot-index.is-compact .lot-index-row { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: var(--s-3) var(--s-4); } +.lot-index.is-compact .lot-index-name { font-size: 12px; } + +/* The lot carried on a cart row, a checkout summary line and a receipt line. + Block, because a set puts one lot per component on consecutive lines and they + would otherwise run together inside the summary cell. */ +.lot-line { display: block; } +.summary-line .lot-line a { color: var(--cobalt); text-decoration: none; } +.summary-line .lot-line a:hover { text-decoration: underline; } +.cart-row-lots { display: grid; gap: 2px; margin: var(--s-1) 0 0; } +.cart-row-lots a, +.cart-row-lots span { font: 400 12px/1.5 var(--mono); } +.cart-row-lots span { color: var(--text-2); } +.cart-row-lots a { color: var(--cobalt); text-decoration: none; width: fit-content; } +.cart-row-lots a:hover { text-decoration: underline; } +.analytical-meta a { color: var(--cobalt); text-decoration: none; } +.analytical-meta a:hover { text-decoration: underline; } + +@media (max-width: 900px) { + .lot-layout { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); } +} + +@media (max-width: 640px) { + .lot-fields { grid-template-columns: minmax(0, 1fr); } + .lot-field:nth-child(odd) { border-right: 0; } + .lot-doc-head, .lot-block, .lot-doc-foot { padding: var(--s-4); } + .lot-method { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); } + .lot-index-row { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); } +} + +/* ============================================================================ + FABLE 5 — first screen, authored revision. + Three calls, in order of impact: + 1. The cobalt headline span was the loudest thing on the page, competing with + the primary button for the same signal. Cobalt is contractually + interactive-and-status in this system; the headline broke that rule. + 2. Two cards floating on the photograph turned the strongest asset into a + notice board. The featured-product chip is a second message selling an item + already first in the catalog one scroll down. + 3. Column balance and copy rhythm: the stack read as four evenly spaced strata + instead of message-then-action. + ========================================================================= */ + +/* cobalt returns to interactive-only; the headline carries weight in ink */ +.hero-copy h1 span { color: var(--ink); } + +/* the featured-product chip was removed from homePage() entirely rather than + hidden, so no dead markup ships. Its remaining rules below are inert. */ + +/* message and photograph hold equal weight */ +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .hero-grid { + grid-template-columns: minmax(0, 1fr) minmax(480px, 1fr); + padding-block: var(--s-7); + } +} + +/* copy rhythm: message group tight (12/16), action separated (32) */ +.hero-copy .eyebrow { margin-bottom: var(--s-3); } +.hero-copy > p:not(.eyebrow) { margin-top: var(--s-4); } + +/* the proof card breathes inside its rounded frame */ +.hero-coa-card { bottom: var(--s-5); left: var(--s-5); padding: var(--s-4); } + +/* header rows onto the scale */ +.concept-banner { padding-block: var(--s-2); } +.header-main { gap: var(--s-5); } +.category-nav { gap: var(--s-5); } + +/* trust strip: padding governs height rather than an arbitrary min-height */ +.trust-strip { min-height: 0; } +.trust-item { gap: var(--s-3); padding: var(--s-4); } + +/* =========================================================================== + FABLE 5 — catalog + category bands. + Card interiors and grid gutters onto the scale; the category band demoted + to a labelled rail since its heading duplicated the nav directly above it. + ======================================================================== */ +/* ── 1. Gutters: s-4 → s-5 above the mobile breakpoint. + ≤640 keeps --gutter-grid via the existing media block. ── */ +@media (min-width: 641px) { + .product-grid, + .category-rail { + gap: var(--s-5); + } +} + +/* ── 2. Card interior: every gap on the scale ── */ +.product-card .product-category { + margin-bottom: var(--s-2); /* was 6px */ +} +.product-card .stock-badge { + margin-left: 0; /* flex gap s-2 owns this seam; 6px doubled it to 14 */ +} +.testing-micro { + padding: var(--s-2) 0; /* was 9px 0 */ +} +.testing-micro span:first-child { + gap: var(--s-2); /* was 6px */ +} +.product-buy-row { + margin-top: var(--s-4); /* was s-3; buy row is the card's terminal zone */ +} +.add-button { + padding: 0 var(--s-3); /* was 0 10px */ +} +.text-link { + gap: var(--s-2); /* was 7px */ +} + +/* ── 3. Category band demoted to a labelled nav rail ── */ +.category-section-head { + margin-top: var(--s-6); /* was s-7; now a sub-rail of the catalog section */ + margin-bottom: var(--s-3); +} +.category-section-head .eyebrow { + margin: 0; /* global eyebrow carries 14px; the wrapper spaces this */ +} +.category-tile { + min-height: 0; /* was 96px; content + s-5 padding sets height, no dead air */ + align-items: center; /* was end; arrow centers on the two-line block */ +} +.category-tile span { + margin-top: var(--s-1); /* value was right at 4px; tokenize */ +} + +/* =========================================================================== + FABLE 5 — the proof band, the site's central claim. + The document stretched to fill its column and left ~40% dead white below + the last row, so the evidence card read as empty. It now centres as a + compact artifact at document density, the CTA sizes to its label instead + of spanning 430px, and reported rows sit in ink while unreported recede, + making the claim legible at arm's length. + ======================================================================== */ +/* 1 — the document is a compact artifact centered on slate, not a stretched panel */ +.testing-document { + align-self: center; + margin: var(--s-5); + padding: clamp(var(--s-5), 4vw, var(--s-6)); + background: var(--surface); + border-radius: var(--r-md); /* was hardcoded 8px */ +} + +.document-row { + padding: var(--s-3) 0; /* was --s-4; CoA density, not table density */ +} + +/* 2 — button sizes to its label */ +.testing-feature-copy .button { + align-self: flex-start; +} + +/* 3 — the claim made visible: reported = ink, unreported = recedes */ +.document-row span { + color: var(--text-3); /* was --text-2; unreported values go quiet */ +} +.document-row:not(.is-reported) strong { + color: var(--text-2); /* unreported label dims with its value */ +} +/* .document-row.is-reported span/strong → var(--ink) already exists at 3032-3033; keep */ + +/* off-scale cleanup in scope */ +.document-tag { + padding: var(--s-1) var(--s-2); /* was 6px 8px */ + border-radius: var(--r-sm); /* was 4px */ +} + +/* =========================================================================== + FABLE 5 — bundle rail, guide cards, newsletter band. + ======================================================================== */ +/* This button sits on the cobalt panel, so there is no darker step available + and no lighter slate in the palette. The rest state inverts: white plate, + cobalt label, 6.38:1. Hover steps the label to cobalt-deep on the same + plate. Same tokens, no third dark surface above the slate footer. */ +.newsletter-form button { + min-width: 120px; + color: var(--cobalt); + background: var(--on-dark); + border: 0; + border-radius: var(--r-sm); + font-weight: 650; + transition: color 120ms ease-out, background 120ms ease-out; +} + +.newsletter-form button:hover { + color: var(--cobalt-deep); + background: var(--on-dark); +} + +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .newsletter { + display: grid; + grid-template-columns: 1fr auto; + gap: var(--s-6); + align-items: center; + padding: var(--s-7) var(--s-6); + color: var(--on-dark); + background: var(--cobalt); + border-radius: var(--r-lg); + } +} + +.newsletter p { + max-width: var(--measure); + margin: var(--s-4) 0 0; + color: var(--cobalt-tint); +} + +.newsletter-form input { + width: min(340px, 42vw); + height: 44px; + padding: 0 var(--s-4); + color: var(--ink); + background: var(--surface); + border: 0; + border-radius: var(--r-sm); +} + +.eyebrow { + margin: 0 0 var(--s-3); + color: var(--cobalt); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +/* scoped to desktop: this was appended after the responsive blocks and + was overriding them at every width, collapsing the mobile layout. */ +@media (min-width: 961px) { + .section-head { + display: flex; + justify-content: space-between; + gap: var(--s-6); + align-items: end; + margin-bottom: var(--s-5); + } +} + +.product-category { + margin: 0 0 var(--s-2); + color: var(--cobalt); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.bundle-count { + position: absolute; + top: var(--s-3); + left: var(--s-3); + padding: var(--s-1) var(--s-2); + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: 4px; + font: 500 9px/1 var(--mono); + text-transform: uppercase; +} + +.bundle-items li { + display: flex; + justify-content: space-between; + gap: var(--s-3); + padding: var(--s-1) 0; + color: var(--text-2); + font-size: 12px; +} + +/* Bundle and education cards sit in adjacent bands at the same tier; their + titles were 18px and 19px with nothing deliberate behind the difference. */ +.education-card h3 { + font-size: 20px; +} + +/* ============================================================================ + Cart drawer: the dead region put to work. + The drawer is a full-height grid, so a two-line cart left roughly 196px of + empty white between the last item and the footer. The footer stays pinned, + which is correct for a side drawer; the gap now carries progress toward free + shipping and the nearest sensible addition instead of nothing. + ========================================================================= */ + +.drawer-ship { margin-bottom: var(--s-4); } +.drawer-ship-track { + height: 4px; + overflow: hidden; + background: var(--surface-soft); + border-radius: var(--r-pill); +} +.drawer-ship-track span { + display: block; + height: 100%; + background: var(--cobalt); + border-radius: var(--r-pill); + transition: width 300ms var(--ease); +} +.drawer-ship.is-met .drawer-ship-track span { background: var(--success); } +.drawer-ship p { margin: var(--s-2) 0 0; color: var(--text-2); font-size: 12px; } +.drawer-ship strong { color: var(--ink); } + +.drawer-cross { + margin-top: var(--s-5); + padding-top: var(--s-4); + border-top: 1px solid var(--line); +} +.drawer-cross h3 { + margin: 0 0 var(--s-3); + color: var(--text-2); + font: 500 10px/1 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} +.drawer-cross-row { + display: grid; + grid-template-columns: 44px minmax(0, 1fr) auto; + gap: var(--s-3); + align-items: center; + padding: var(--s-2) 0; +} +.drawer-cross-row img { + width: 44px; + height: 44px; + object-fit: cover; + border: 1px solid var(--line); + border-radius: var(--r-sm); +} +.drawer-cross-row strong { display: block; font-size: 13px; font-weight: 650; } +.drawer-cross-row span { color: var(--text-3); font: 400 10px/1.4 var(--mono); } +.drawer-cross-add { + padding: var(--s-2) var(--s-3); + color: var(--cobalt); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); + font-size: 12px; + font-weight: 650; + white-space: nowrap; + cursor: pointer; + transition: border-color 140ms var(--ease), background 140ms var(--ease); +} +.drawer-cross-add:hover { background: var(--cobalt-tint); border-color: var(--cobalt); } + +/* ============================================================================ + Touch targets. Measurement found 160 controls under the 44px minimum, the + worst being the quantity steppers at 28x27 and Remove at 38x15. Hit area is + expanded with padding and pseudo-element insets so the visual size of these + deliberately small controls is preserved. + ========================================================================= */ + +.mini-quantity button, +.quantity-control button { + /* position only. A previous touch-target pass set min-width/min-height 32px + here, but .mini-quantity is a 28/28/28 grid at 29px tall, so the buttons + were larger than their own cells and spilled out of the bordered box: the + outline read as broken and the container's bottom border showed through + under the value. The ::after below already supplies a 44px hit area, so the + visual box stays exactly as designed. */ + position: relative; +} +.mini-quantity button::after, +.quantity-control button::after, +.remove-item::after, +.drawer-close::after { + position: absolute; + top: 50%; + left: 50%; + width: 44px; + height: 44px; + content: ""; + transform: translate(-50%, -50%); +} +.remove-item, +.drawer-close { position: relative; } +.drawer-close { min-width: 44px; min-height: 44px; } + + +/* ============================================================================ + Cart page and cart drawer. Everything below was measured on rendered + 1440x900 and 390x844 captures, not read off the source. + ========================================================================= */ + +/* The suggestion grid inherited the catalog's four-track layout while the cart + only ever renders three entries, so the row stopped at x752 inside a column + whose progress bar, cart lines and actions all end at x988. Three tracks fill + the column. The buy row is bottom-set at the same time: "Growth Hormone + Research" wraps to a second line where the other two categories do not, and + the 32px reserve is 6px short of the wrapped height, which was pushing that + card's price and button off the baseline its neighbours share. */ +@media (min-width: 961px) { + .cart-cross-sell .product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } +} +.cart-cross-sell .product-card { display: flex; flex-direction: column; } +.cart-cross-sell .product-card-body { display: flex; flex-direction: column; flex: 1 1 auto; } +.cart-cross-sell .product-buy-row { margin-top: auto; } + +/* Remove sat at x376 in a 928px row with 574px of nothing after it. It now + holds the same right rail as the line price directly above it, so the row is + read between two edges instead of trailing off into the middle. */ +.cart-row-controls .remove-item { margin-left: auto; } + +@media (max-width: 960px) { + /* Lot and reported date are one string. At 390 it broke after the hyphen and + printed "2026-06-" over "24" with 39px of column still unused. */ + .lot-line { white-space: nowrap; } + + /* On a phone the summary, total and checkout button sat below 1,089px of + cross-sell. The left column is unwrapped so the aside can be ordered above + the suggestions and the suggestion becomes what it should be: the last + thing offered, after the buyer has been given the way out. Desktop is + untouched. */ + .cart-layout { display: flex; flex-direction: column; align-items: stretch; } + .cart-main { display: contents; } + .cart-aside { order: 1; } + .cart-cross-sell { order: 2; margin-top: 0; } + .cart-actions { margin-top: 0; } +} + +/* Drawer. The cross-sell reduced the dead region from 196px to 99px but left it + stranded between two hairlines, which looks like a section that failed to + render. The scroll body becomes a column so the suggestion block can be set + against the footer as a tinted full-bleed band: the residual white now sits + between the cart lines and a deliberate band rather than below everything. */ +.cart-items { display: flex; flex-direction: column; } +.cart-empty { flex: 1 1 auto; } +.cart-item:last-of-type { border-bottom: 0; } +.drawer-cross { + /* was `margin: auto ...`. In a flex column an auto top margin absorbs all + free space, so with one line in the cart it pushed the cross-sell to the + bottom of the scroll area and opened a 308px void directly under the item. + The block now sits immediately after the last line; the drawer's own 1fr + row still holds the footer at the bottom, which is what we actually wanted. */ + margin: var(--s-5) calc(var(--s-5) * -1) calc(var(--s-4) * -1); + padding: var(--s-4) var(--s-5) var(--s-5); + background: var(--bg); + /* grow into whatever the pinned footer leaves over. A drawer footer is + bottom-anchored by design, so a short cart always leaves free space; letting + the tinted block absorb it turns a white void into a finished panel. */ + flex: 1 1 auto; +} + +/* "Add · $100" was 88px and "Add · $68" was 83px, right-aligned, so the two + left edges disagreed by 5px in a stack the eye reads as a column. A fixed + terminal track on the scale gives both one width and one pair of edges. */ +.drawer-cross-row { grid-template-columns: 44px minmax(0, 1fr) var(--s-9); } + +/* Unit price in the drawer line, so the quantity and the line total reconcile + on screen and Remove is no longer 184px of white away from the stepper. Same + information the cart page already shows for the same item. */ +.cart-item-unit { + color: var(--text-3); + font-size: 12px; + white-space: nowrap; +} + +/* The browser-storage note was flush against the bottom edge of View cart: + measured button bottom 807, note top 807. */ +.cart-footer .cart-terminus { margin-top: var(--s-4); } + + +/* ============================================================================ + Catalog grid composition, anchored to what the rendered page does at + 1440x900 rather than to what the markup implies. + ========================================================================= */ + +/* Card footers align across a row. The buy row previously sat wherever the + title happened to stop, so CJC-1295 + Ipamorelin, the one two-line name in + row two, dropped its Add to cart button 20px below its three neighbours. */ +.product-card { + display: flex; + flex-direction: column; +} + +.product-card-body { + display: flex; + flex: 1 1 auto; + flex-direction: column; +} + +/* The hairline testing block is the card's terminal zone. Pinning it to the + bottom aligns both it and the buy row across every card in the row. */ +.product-card .testing-micro { + margin-top: auto; +} + +@media (min-width: 641px) { + /* One price column for every card. `auto` sized it to the digits, so $100 + and $90 put their buttons on two different left edges in the same row. */ + .product-buy-row { + grid-template-columns: var(--s-7) 1fr; + } +} + +/* The count is a line-height:1 span stretched to the flex line, so it painted + from the top of that box and read as a superscript beside its label. */ +.filter-button { + align-items: baseline; +} + +/* Amber was the only warm chip on a cool page and read as the brand gold, + which is product material and can never carry a badge. Low stock is a + status, so it takes the status colour. */ +.stock-badge.is-low { + color: var(--cobalt); + background: var(--cobalt-tint); +} + + +/* .section-head is set to display:block under 640px, then a later unscoped + .section-head re-declares display:flex and wins on order, so on a 390px + phone the closing head on the catalog and the related-products head on every + PDP stay two-column: the h2 renders in an 87px track and stacks to five + lines beside its own paragraph. */ +@media (max-width: 640px) { + .section-head { + display: block; + margin-bottom: var(--s-4); + } +} + + +/* The four cue tiles were the only centred text in a buy column where the + eyebrow, title, code, price, strength row, bullets and note all start on the + same left edge. */ +.buybox-cue { + text-align: left; +} + +/* Strength is a stated fact, not the label of the quantity stepper sitting + directly beneath it. The hairline closes the spec pair before the controls + open. */ +.selection-label { + padding-bottom: var(--s-3); + margin-bottom: var(--s-4); + border-bottom: 1px solid var(--line); +} + +/* A not-offered entry has no buy control, so without this the buy column ends + on a grey notice butted against the grey cue grid and the visitor has + nowhere to go from the page. White on grey also breaks the two greys apart. */ +/* Doubled class on purpose. The shared `.button { display: inline-grid; + place-items: center }` rule sits later in this file and won a + same-specificity tie, which made every child of this anchor its own grid row: + the trailing arrow dropped onto a second line and the label sat 12.7px above + the box centre in a 49px control. inline-flex keeps the label centred and the + arrow inline, and the extra class makes the result independent of rule order. */ +.pdp-alt-action.pdp-alt-action { + display: inline-flex; + gap: var(--s-2); + align-items: center; + justify-content: center; + width: 100%; + min-height: 48px; + margin-top: var(--s-4); +} + + +@media (min-width: 641px) { + /* Both tables now share one label column, so the spec value column and the + analytical method column start at the same x. Each row is its own grid, so + the trailing `auto` pill track resized the two tracks in front of it per + row: the four method strings landed on four different left edges, measured + at 929, 935, 962 and 983 on BPC-157 at 1440. */ + .spec-row { + grid-template-columns: 224px minmax(0, 1fr); + } + + .testing-row { + grid-template-columns: 224px minmax(0, 1fr) 224px; + } + + .testing-row .status-pill { + justify-self: end; + } +} + + +/* Ten rows of 12px type stretched across the full 1320px shell: the name column + measured 644px for ~200px of text and the lot column 515px for ~250px, so each + row carried roughly 700px of dead space and the section caption was flush to a + right edge it shared with nothing. The catalog status list is a document, so it + takes the document column and the caption sits under the heading it belongs to. */ +.testing-catalog { + width: min(780px, var(--shell)); +} + +.testing-catalog .section-head { + display: block; +} + +.testing-catalog .section-head p { + max-width: none; + margin-top: var(--s-2); +} + +/* An accordion column runs 995px while its heading rail holds 64px of content, + which leaves a 458x930 empty rectangle beside the questions on the FAQ page and + strands the heading at the top. The rail travels with the list instead. Scoped + above 960 because .detail-grid is a single column below it. */ +@media (min-width: 961px) { + .detail-grid:has(.accordion) > :first-child { + position: sticky; + top: 132px; + align-self: start; + } +} + +/* Two identical white buttons on the cobalt panel stated no order. The catalog + stays filled; the testing link becomes an outline of the same size. */ +.newsletter .hero-actions .button-secondary:last-child { + color: var(--on-dark); + background: transparent; + border-color: var(--on-dark); +} + +.newsletter .hero-actions .button-secondary:last-child:hover { + color: var(--cobalt); + background: var(--surface); + border-color: var(--surface); +} + + +/* Confirmation tracker. As a bare vertical list it was the only unboxed element + on the page, sat directly on the grey background, and stranded roughly 700px + of empty space to its right above the detail cards. Horizontal inside a card + at desktop width: it uses the row it is given and the four states read as one + sequence rather than a list. */ +@media (min-width: 961px) { + .tracker { + grid-template-columns: repeat(4, minmax(0, 1fr)); + column-gap: var(--s-4); + padding: var(--s-5); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-lg); + } + .tracker li { padding: var(--s-5) 0 0; } + .tracker li::before { top: 6px; right: calc(var(--s-4) * -1); bottom: auto; left: 18px; width: auto; height: 2px; } + .tracker li span { top: 0; left: 0; } +} + + +/* The discount disclosure sits flush against the summary card (measured gap: 0 at + 390, 800 and 1440), so the right rail showed two 1px borders meeting and two + sets of rounded corners pinching against each other. One object, one outline. */ +.checkout-aside .order-summary { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } +.checkout-aside .promo-disclosure { margin-top: -1px; border-top-left-radius: 0; border-top-right-radius: 0; } + + +/* =========================================================================== + FABLE 5 — homepage, 1440 and 390. + Three unscoped rules at the tail of this file (.hero-grid, .newsletter, + .section-head) were declared after the responsive blocks, so they won at + every width and the phone got the desktop layout squeezed. .hero-grid + computed to "0px 480px" at 390: the copy column was literally zero wide, + the photograph sat on top of the paragraph, and the document scrolled 508px + inside a 375px viewport. The rules below restate the intended responsive + behaviour at higher specificity, so a later unscoped rule cannot silently + undo the phone layout again. + ======================================================================== */ +@media (max-width: 960px) { + .home-hero .hero-grid { + grid-template-columns: minmax(0, 1fr); + padding-block: var(--s-6) var(--s-5); + } + .section-tight > .newsletter { + grid-template-columns: minmax(0, 1fr); + gap: var(--s-5); + } +} + +@media (max-width: 640px) { + .shell > .section-head { + display: block; + } + .shell > .section-head > p, + .shell > .section-head > .text-link { + margin-top: var(--s-3); + } + .section-tight .newsletter-form input { + width: 100%; + } +} + + +/* The headline broke as "Peptides, without the / mystery.", a 265px orphan + under a 625px line, with the article left dangling. Balanced wrapping only, + no scale change. */ +.hero-copy h1 { + text-wrap: balance; +} + + +/* The trust strip was the only band on the page that ignored the shell: full + bleed 0 to 1425 with its labels centred in quarter-viewport cells, so + nothing in it lined up with the hero, the catalog or the footer. The band + stays full width; its content now sits on the same four columns as the + cards below and reads left like every other line of type. The four cobalt + dots were decoration in a colour this system reserves for interactive and + status, and the vertical rules were dividing cells that no longer exist. */ +.trust-strip { + padding-inline: calc((100% - var(--shell)) / 2); + column-gap: var(--s-5); +} +.trust-item { + justify-content: flex-start; + padding-inline: 0; + border-right: 0; + text-align: left; +} +.trust-dot { + display: none; +} + + +/* Catalog card hierarchy. The buy row was "auto 1fr" with a full-width button, + so a 38px price sat beside a 228px cobalt slab and the four cards drew one + continuous blue bar across the band. The price, which is what a shopper + actually compares, takes the free space; the button sizes to its label. + Mobile keeps the full-width tap target. */ +@media (min-width: 641px) { + .product-card .product-buy-row { + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + } + .product-card .add-button { + width: auto; + padding-inline: var(--s-5); + } +} +.product-card .price { + color: var(--ink); + font-weight: 650; +} + + +/* Every sellable card carried a green IN STOCK pill, so --success, which this + system reserves for reported and verified, meant nothing by the time the eye + reached the testing band. Availability goes quiet and keeps its own outline; + the category label stops competing with the two real links in the card. */ +.product-card .stock-badge.is-in { + color: var(--text-2); + background: transparent; + border: 1px solid var(--line); +} +.product-card .product-category { + color: var(--text-3); +} + + +/* The unavailable control read as an unfinished grey blob: text-3 on + surface-soft with a border-color but no border width to paint it, then + knocked to 0.55 by button:disabled. It is a normal catalog state, so it gets + a deliberate outlined treatment at readable contrast. Still disabled, still + non-interactive, still not sellable. */ +.add-button.is-unavailable, +.pdp-add.is-unavailable { + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + opacity: 1; +} + + +/* The hero proof card printed the measured purity, the measured content and + the unreported sterility in the same cobalt at the same weight, flattening + the one contrast this catalog is built on. Reported values hold; the + unreported row recedes, exactly as the testing band below it already does. */ +.hero-coa-row.is-unreported strong { + color: var(--text-3); + font-weight: 500; +} + + +/* The category band's standfirst floated at x=860, which is not a column edge, + not the centre and not the shell; space-between pushed it right and a 34em + measure stopped it 100px short of the grid. On the grid it starts at the + third card and ends flush with the fourth. */ +@media (min-width: 641px) { + .category-section-head { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: var(--s-5); + align-items: end; + } + .category-section-head > p { + max-width: none; + } +} + + +/* The newsletter was a 1320px saturated cobalt slab: the loudest surface on + the page, louder than any Add to cart, spent on the lowest-value action, in + a colour reserved for interactive and status. Its copy was also the only + text on the page indented off the shell edge, 32px in from every other + heading. It becomes a quiet closing band under a rule, aligned to the page, + and the submit button carries the only cobalt in it. Two states inverted + with the surface: the success message was white on cobalt and the focus + ring was white, both of which would now be invisible. */ +.section-tight > .newsletter { + padding: var(--s-7) 0 0; + color: var(--ink); + background: none; + border-top: 1px solid var(--line); + border-radius: 0; +} +.section-tight > .newsletter > div > h2 { + color: var(--ink); +} +.section-tight > .newsletter > div > p { + color: var(--text-2); +} +.section-tight .newsletter-form input { + border: 1px solid var(--line-strong); +} +.section-tight .newsletter-form button { + color: var(--on-dark); + background: var(--cobalt); +} +.section-tight .newsletter-form button:hover { + color: var(--on-dark); + background: var(--cobalt-deep); +} +.section-tight > .newsletter .newsletter-success { + color: var(--ink); +} +.section-tight > .newsletter :focus-visible { + outline-color: var(--cobalt); +} +@media (max-width: 640px) { + .section-tight > .newsletter { + padding: var(--s-6) 0 0; + } +} + + +/* The set card opened with 90px of empty white between the photograph and the + set name, because its "Catalog set" line is a flex container carrying a 42px + box around a 16px line. The label sits on the title it belongs to. */ +.bundle-body .product-category { + display: block; + min-height: 0; + margin-bottom: var(--s-2); +} + + + +/* =========================================================================== + EDGE SURFACES — the bundle rail, the 404, and long-form pages at 390. + ======================================================================== */ + +/* 1. The cobalt CTA band never collapsed on a phone. `.newsletter` and + `.newsletter-form input` are re-declared in the FABLE 5 block above, which + sits after the 960 and 640 media blocks and therefore wins on source order + at equal specificity. Measured at 390: the grid stayed two columns of 106px + and 164px, "Get the catalog brief." and "Ready to browse?" broke over three + lines, the paragraph ran two words wide for seven lines, and the email + placeholder clipped to "you@example.co". No new values: the original mobile + intent, restated after the rules that were overriding it. */ +@media (max-width: 960px) { + .newsletter { + grid-template-columns: 1fr; + } +} + +@media (max-width: 640px) { + .newsletter { + padding: var(--s-5); + } + + .newsletter-form input { + width: 100%; + } +} + +/* 2. Same dead override, second victim: `.section-head` is re-declared after + the 640 block that sets it to display:block, so every band head with a + supporting sentence stays a two-column flex on a phone and the heading is + crushed into a 45% column. */ +@media (max-width: 640px) { + .section-head { + display: block; + margin-bottom: var(--s-4); + } + + .section-head p, + .section-head .text-link { + margin-top: var(--s-3); + } +} + +/* 3. Three sets, one photograph. The rail shipped the same anonymous pair shot + on all three cards, so the largest element on every card carried nothing + that told the cards apart. Product cards already answer this by labelling + the vial; the set gets a label plate at the frame edge, where the contents + and the set code differ card to card. */ +.bundle-plate { + position: absolute; + right: var(--s-3); + bottom: var(--s-3); + left: var(--s-3); + display: flex; + justify-content: space-between; + align-items: baseline; + gap: var(--s-3); + padding: var(--s-2) var(--s-3); + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-sm); + font: 500 10px/1.3 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.bundle-plate__format { + overflow: hidden; + color: var(--ink); + white-space: nowrap; + text-overflow: ellipsis; +} + +.bundle-plate__code { + flex: none; + color: var(--text-3); +} + +/* 4. The unsellable set now carries the product page's stated reason instead of + a 308px grey slab under a full-weight price. Card density, not buy-box + density. The notice is taller than the 38px buy row and grid items stretch, + so the body becomes the flexible part and the terminal row pins to the card + floor: all three buy rows and the notice sit on one bottom edge instead of + leaving 90px of white under two buttons. */ +.bundle-restricted { + padding: var(--s-3) var(--s-4); +} + +.bundle-restricted p { + margin: 0; + color: var(--text-2); + font-size: 12px; + line-height: 1.55; +} + +.bundle-card { + display: flex; + flex-direction: column; +} + +.bundle-body { + display: flex; + flex: 1; + flex-direction: column; +} + +.bundle-footer, +.bundle-restricted { + margin-top: auto; +} + +/* 5. "Why sets exist": min-height 210 against 119px of content left 43px of + white under all three cards, and the heading column beside them held 55px of + content in a 210px box. The cards size to their text and the row closes up; + the column beside them carries the supporting line and the exit link. */ +.value-grid .value-card { + min-height: 0; +} + +.detail-grid .detail-lede { + max-width: var(--measure); + margin: var(--s-4) 0 var(--s-5); + color: var(--text-2); + font-size: 13px; + line-height: 1.6; +} + +/* 6. The 404's category tiles are the recovery path, and at 390 they sat in a + 940px horizontal scroller inside a 378px frame with no edge fade: tile two + was cut mid-word at the viewport edge and tiles three and four were + invisible. On a dead end all four destinations stay on screen. */ +@media (max-width: 640px) { + .recovery-rail .category-rail { + display: grid; + grid-template-columns: repeat(2, 1fr); + overflow: visible; + margin-right: 0; + padding-right: 0; + } + + .recovery-rail .category-tile { + min-width: 0; + } +} + +/* 7. Long-form pages: the bullet lists sat at the browser default 40px indent + while every heading and paragraph around them started at 0. At 390 that is + 11% of the column, and the eligibility and policy lists visibly wrapped + tighter than the prose they belong to. */ +.article-shell ul, +.article-shell ol { + padding-left: var(--s-5); +} + + +/* The wordmark subtitle uses --text-2, which is correct on white but rendered at + 2.99:1 inside the slate footer. Scoped to the on-dark token there. */ +.site-footer .wordmark-category { color: var(--on-dark-3); } + +/* The cart row head is a two-column flex; at 390 the price was being pushed + 22px past the viewport because the title column had no lower bound and the + price could not shrink. Give the title room to wrap and stop the price + growing. */ +@media (max-width: 640px) { + .cart-row-head { flex-wrap: wrap; gap: var(--s-1) var(--s-2); } + .cart-row-head > div { min-width: 0; flex: 1 1 60%; } + .cart-row-price { flex: 0 0 auto; } + .cart-row-meta { overflow-wrap: anywhere; } +} + +/* The measured type inventory still showed 700 and 900 weights despite no such + declaration existing in this file: they come from the user-agent stylesheet, + which renders strong, b and headings at bold. Inter's variable axis makes 650 + the system's emphasis weight, so normalise the UA defaults to it rather than + leaving two competing bolds on the page. */ +strong, b, h1, h2, h3, h4, h5, h6, th { font-weight: 650; } + +/* ============================================================================ + Accent discipline. --cobalt is defined as interactive-and-status, but it was + also painting every section eyebrow, every card category label and the trust + strip's decorative dots. When the accent marks four non-interactive things per + screen it stops meaning "you can act here", and the real controls lose their + signal. Non-interactive labels move to muted text; cobalt is reserved for + links, buttons, focus and genuine status. + ========================================================================= */ +.eyebrow { color: var(--text-3); } +.product-category { color: var(--text-3); } +.trust-item .status-dot, +.trust-item span[aria-hidden="true"] { background: var(--text-3); } + +/* the dark bands keep a warm eyebrow, which is brand material rather than accent */ +.testing-feature-copy .eyebrow, +.site-footer .eyebrow { color: var(--gold); } + +/* --success means "reported and verified". It was also being spent on inventory + badges, so by the time the eye reached the analytical panel green had already + been used for something unrelated. Stock state is now neutral everywhere, not + just on product cards. */ +.stock-badge.is-in { + color: var(--text-2); + background: transparent; + border: 1px solid var(--line); +} + +/* ============================================================================ + Checkout alignment. Measured at 1440 the shell edge is 60, the eyebrow, h1 + and stepper sat on it, and every piece of form content sat at 85 because the + step card's 24px padding plus 1px border pushed it off the axis. The summary + panel did the same at 1045 against its own 1020 edge. Nothing lined up down + the page. + + The step card was chrome that did no work: it is the only object in that + column, so a background and border on it separated nothing. Removing it puts + legend, hints, labels, inputs and actions on the same 60px axis as the page + heading above them. Steps are separated by rule and rhythm instead. + ========================================================================= */ +.checkout-step { + margin: 0; + padding: 0; + background: transparent; + border: 0; + border-radius: 0; +} +.checkout-step + .checkout-step { margin-top: var(--s-7); } + +/* the summary is a genuinely distinct object, so it keeps its panel, but its + heading now aligns with the panel's own content edge rather than floating */ +.checkout-aside .order-summary { padding: var(--s-5); } + +/* ============================================================================ + Content insets. Measured across the site there were FIVE different distances + from the shell edge to a block of copy: 0 for section headings, 17 inside a + product card, 25 inside a bundle card, 32 inside the newsletter band, and 48 + inside the dark testing band. Nothing shared an axis with anything else, which + is what reads as unprofessional even when the typography is right. + + Two insets now, and only two: + panels (full-bleed bands) --s-6 32 + cards (interaction units) --s-5 24 + ========================================================================= */ +.testing-feature-copy { padding: var(--s-6); } +.newsletter { padding: var(--s-6); } +.product-card-body, +.bundle-body, +.category-tile, +.education-card, +.value-card, +.detail-card, +.review-block, +.choice { padding: var(--s-5); } + +/* ============================================================================ + Touch targets on mobile. The probe found 85 distinct controls under 44px at + 390, most of them inline links rendering 18px tall in the footer and nav. On + a phone those are a miss-tap. Padding is added inside the media query only, so + desktop density is untouched, and negative margin keeps the visual rhythm. + ========================================================================= */ +@media (max-width: 640px) { + .footer-column a, + .footer-contact a, + .mobile-nav a, + .text-link { + display: inline-flex; + align-items: center; + min-height: 44px; + margin-block: calc(var(--s-3) * -1); + } + .footer-column li + li { margin-top: var(--s-1); } + .remove-item { display: inline-flex; align-items: center; min-height: 44px; margin-block: calc(var(--s-3) * -1); } + .search-input { height: 44px; } +} + +@media (max-width: 640px) { + /* the drawer cross-sell action and the quantity steppers both sat under the + touch floor; the steppers keep their small visual box and gain hit area */ + .drawer-cross-add { min-height: 44px; } + /* same reason as above: sizing the button past its grid cell breaks the box. + Hit area comes from ::after, which is already 44px. */ + /* .quantity-control is a 34px/1fr/34px grid at 48px tall. Sizing its buttons + to 44px made them wider than their own cells, the same defect that broke + .mini-quantity. Hit area comes from the ::after, which is already 44px. */ + .quantity-control button { min-width: 0; min-height: 0; } +} + +/* ============================================================================ + The last values off the grid were not ours. Paragraphs and lists inherit a + 1em block margin from the user-agent stylesheet, which at a 15px base resolves + to 15px and sits between --s-3 and --s-4. Anywhere a rule did not set margin + explicitly, vertical rhythm fell off the scale. Normalised to --s-4. + ========================================================================= */ +p, ul, ol { margin-block: var(--s-4); } +p:first-child, ul:first-child, ol:first-child { margin-block-start: 0; } +p:last-child, ul:last-child, ol:last-child { margin-block-end: 0; } + +/* button interiors were 14px and 6px, both off the scale */ +.button { padding-inline: var(--s-4); } +.icon-button, .drawer-close { padding-inline: var(--s-2); } + + + +/* ============================================================================ + FOOTER — the operator record. + + Measured before: the footer's only contact block was a fourth sub-list inside + the brand cell at 12px/on-dark-2, identical to every navigation link beside + it, and the store's legal identity and location lived in the 9px mono + copyright line at the very bottom, the smallest and faintest text on the + page. A catalog that sells verifiability was hiding the two facts that make + it verifiable: who runs it and who tests it. + + The record is a labelled band under its own rule, on the same grid template + as .footer-grid so its four cells land on the identical x-axes as the + navigation above (60, 482, 797, 1113 at 1440). No new type: dt reuses the + 9px mono column-heading treatment, dd reuses the 12px link body size. The + first dd of each cell is --on-dark (the fact), the second is --on-dark-2 + (the qualifier), which gives each cell a two-level read without a new size. + Contrast on --slate: 9px mono on-dark-3 5.87:1, 12px on-dark-2 9.42:1. + + Narrow widths are restated inside this block, after the base rule, so this + append cannot leak a desktop grid onto a phone. + ========================================================================= */ +.footer-record { + display: grid; + grid-template-columns: 1.4fr repeat(3, 1fr); + gap: var(--s-7); + margin: var(--s-7) 0 0; + padding-top: var(--s-5); + border-top: 1px solid rgba(243, 234, 218, 0.18); +} + +.footer-record > div { + min-width: 0; +} + +.footer-record dt { + margin: 0 0 var(--s-3); + color: var(--on-dark-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.footer-record dd { + margin: 0; + color: var(--on-dark-2); + font-size: 12px; + line-height: 1.5; + overflow-wrap: anywhere; +} + +.footer-record > div > dd:first-of-type { + color: var(--on-dark); +} + +.footer-record dd a { + color: inherit; + text-decoration: underline; + text-underline-offset: 2px; +} + +@media (max-width: 960px) { + .footer-record { + grid-template-columns: repeat(2, 1fr); + gap: var(--s-6) var(--s-4); + } +} + +/* the support address is the one control in the record, so it takes the same + 44px hit area the rest of the footer links were given at this width */ +@media (max-width: 640px) { + .footer-record dd a { + display: inline-flex; + align-items: center; + min-height: 44px; + margin-block: calc(var(--s-3) * -1); + } +} + + + +/* The terminal line was flex justify-content: space-between across the full + 1320px shell, which put 724px of empty slate between "© 2026 OVO Labs LLC" + and the medical-advice disclaimer. At 9px mono the two fragments were too far + apart to read as one statement, and right-aligning the disclaimer at the far + edge is the pattern that says "boilerplate, ignore me" about the single most + consequential sentence in the document. Grouped left on the shell axis like + every other line of type on the page. Scoped above 640 because the mobile + rule already sets this row to display: block and must keep winning. */ +@media (min-width: 641px) { + .footer-bottom { + justify-content: flex-start; + gap: var(--s-6); + } +} + + + +/* The 44px touch-target block above sets .footer-column a to display: + inline-flex, which makes the footer links inline-level. Measured at 390 they + stopped stacking: "Testing & COAs Lot records" shared a line, "Learn FAQ + About OVO Labs" shared a line, and because the template joins the anchors + with no whitespace between them two product links rendered as the single + string "BPC-157 10 mgTB-500 10 mg" with no space at all. display: flex is + still block-level, so each link takes its own line again while keeping the + align-items and min-height from that rule: measured back to one link per row + at a 44px hit height. */ +@media (max-width: 640px) { + .footer-column a, + .footer-contact a { + display: flex; + } +} + + + +/* ============================================================================ + Card testing strip. Measured at 1440 every card in the band printed the same + sentence, so ten cards each spent a bordered 42px strip on a line that could + not be compared against anything. The strip now names the lot, so it carries + the one value in the block that differs card to card. + ========================================================================= */ +.product-card .testing-micro-lot { + color: var(--text-2); + font: 400 10px/1.4 var(--mono); +} + +/* One hairline, not two. The seam that matters is description to record, and + the s-4 gap under the strip already separates the record from the buy row, + so the lower rule was fencing a 42px band inside a 262px card. Scoped at + both widths because the base rule sets border-block, and an unscoped rule + appended here would land after the responsive blocks. + Measured: strip 42px to 33px at 1440, 60px to 50px at 390. */ +@media (min-width: 641px) { + .product-card .testing-micro { + padding: var(--s-2) 0 0; + border-bottom: 0; + } +} +@media (max-width: 640px) { + .product-card .testing-micro { + padding: var(--s-2) 0 0; + border-bottom: 0; + } +} + + + +/* ============================================================================ + The card's category line. Eight of the ten catalog cards carried an "In + stock" chip, so the one card that says "Only 4 left" and the two that say + "Not offered" had to compete with a chip that appears almost everywhere and + rules nothing out. In stock is the default state, so it stops printing on + the card and the exceptions read as exceptions. Nothing else changes: + stockBadge() is only ever called from the product card, the product page + states availability in its own buy box, and the two unsellable entries keep + their chip and their disabled control. + + The line then reserves s-4h, the chip's own height, so titles land on one + baseline across a row whether a chip is present or not. Measured at 1440: + boxes of 12px and 18px in the same row, now 20 and 20. + ========================================================================= */ +.product-card .stock-badge.is-in { + display: none; +} + +@media (min-width: 641px) { + .product-card .product-category { + min-height: var(--s-4h); + } +} +@media (max-width: 640px) { + .product-card .product-category { + min-height: var(--s-5); + } +} + + + +/* ============================================================================ + Price. It is the value a buyer compares across a row, and at 16px it was the + same size as the product name directly above it and the name printed on the + vial label above that, so it was the third instance of identical weight in + one card. It takes --t-sub, one step up, and the four prices now read as a + column down the left of the band before the eye reaches the buttons. + Measured at 1440: $100 ink 85..131 at 20px against a button starting at 234. + Mobile stops at 16 because the 2-up card has 125px of content width. + ========================================================================= */ +@media (min-width: 641px) { + .product-card .price { + font-size: 20px; + letter-spacing: -0.02em; + } +} +@media (max-width: 640px) { + .product-card .price { + font-size: 16px; + } +} + + + +/* ============================================================================ + Category tiles. Measured at 1440: label ink ended at x=220 and the arrow sat + at x=337, so 117px of empty tile sat between them in every one of the four, + and 157px in the last. The tile is now a two-line block, name and arrow on + the first line, the molecules in that category on the second, so the width + is filled by content rather than by a gap. Tile 1 fills 214px of its 262px + content width where it filled 135px. + + Safe to leave unscoped: no media block sets display or flex-direction on + .category-tile. The 640 block only sets min-width and scroll snapping for + the horizontal rail, and the 404 recovery rail only sets min-width, so both + were rendered and measured at 390 with no horizontal overflow. + ========================================================================= */ +.category-tile { + display: flex; + flex-direction: column; + align-items: stretch; + justify-content: flex-start; + gap: var(--s-2); +} + +.category-tile .category-tile-head { + display: flex; + gap: var(--s-2); + align-items: baseline; + justify-content: flex-start; + margin-top: 0; + font-size: 13px; +} + +.category-tile .category-tile-members { + margin-top: 0; + color: var(--text-2); + font-size: 12px; + line-height: 1.45; +} + + + +/* =========================================================================== + FABLE 5 - the first screen, measured at 1440 and 390. + + The proof card is no longer a sticker on the photograph. It is a record in + the copy column, so it needs the absolute positioning, the 200px width, the + translucent plate and the drop shadow taken back off it. --measure resolves + against a 16px context here exactly as it does on the hero paragraph, so the + card's right edge lands on 604 at 1440, which is the paragraph's right edge. + Scoped to .hero-copy so it also outranks the @media (max-width: 640px) + display:none that used to delete the page's central claim on a phone. + ======================================================================== */ +.hero-copy .hero-coa-card { + position: static; + display: block; + width: 100%; + max-width: var(--measure); + margin-top: var(--s-6); + padding: var(--s-5); + font-size: 16px; + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-md); + box-shadow: none; + text-decoration: none; +} + +/* it is a link to the testing records, so it says so on hover */ +.hero-copy .hero-coa-card:hover { + border-color: var(--cobalt); +} + +.hero-copy .hero-coa-head { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + gap: var(--s-2) var(--s-4); + align-items: baseline; + padding-bottom: var(--s-3); + border-bottom: 1px solid var(--line-strong); +} + +/* --success means reported and verified analytical status, which is precisely + what this tag states. Same treatment as .document-tag.is-reported in the dark + band 1000px below, so the hero and the band make one claim in one language. + #147453 on #e9f6f1 is 5.1:1. */ +.hero-copy .hero-coa-tag { + flex: 0 0 auto; + padding: var(--s-1) var(--s-2); + color: var(--success); + background: var(--success-tint); + border-radius: var(--r-sm); +} + + + +/* A measured number means nothing without the method that produced it, and the + card had room for neither at 200px. Three columns: the field, the method, and + the value flush right, which is the same left-label right-result reading the + .document-row grid in the dark band uses. The label column is --s-9 so the + three rows share one axis instead of each row sizing to its own label. */ +.hero-copy .hero-coa-row { + display: grid; + grid-template-columns: var(--s-9) minmax(0, 1fr) auto; + gap: var(--s-4); + align-items: baseline; + margin: 0; + padding: var(--s-3) 0; + border-top: 0; + border-bottom: 1px solid var(--line); +} + +.hero-copy .hero-coa-row:last-child { + padding-bottom: 0; + border-bottom: 0; +} + +/* The measured figures were 10px cobalt inside a card that is itself a link, so + the numbers read as link text and the unreported row read as the same kind of + fact. At 13px the values are legible; reported holds in ink at 650, the + unreported row recedes to text-3 at 500 with its method, which is what + .document-row does 1000px below. text-3 on --surface is 5.2:1. */ +.hero-copy .hero-coa-row strong { + font-size: 13px; + text-align: right; +} + +.hero-copy .hero-coa-row.is-reported strong { + color: var(--ink); + font-weight: 650; +} + +.hero-copy .hero-coa-row.is-unreported strong, +.hero-copy .hero-coa-row.is-unreported span { + color: var(--text-3); + font-weight: 500; +} + +/* Below 375 the three columns cost the method its line. It drops under the + field rather than being dropped from the page. Measured at 320: rows 60px, + card 296x270, no horizontal overflow. */ +@media (max-width: 374px) { + .hero-copy .hero-coa-row { + grid-template-columns: minmax(0, 1fr) auto; + gap: var(--s-1) var(--s-4); + } + .hero-copy .hero-coa-method { + grid-column: 1; + grid-row: 2; + } +} + + + +/* The two hero columns were centred against each other, so at 1440 the copy + block started 71px below the photograph's top edge and finished 71px above + its bottom: two rectangles floating in one band with no shared line anywhere. + Stretched, they open and close together, 186 to 705. The photograph keeps + object-fit: cover, so the extra height crops rather than distorts. + + Scoped to the two-column widths on purpose. Below 961 the hero is a single + column and an unscoped alignment rule appended here would reach it. */ +@media (min-width: 961px) { + .home-hero .hero-grid { + align-items: stretch; + } +} + + + +/* The strip now carries four checkable facts rather than four slogans, so it + reads as a spec block: mono term above the value, the way the CoA head and + the document rows are set. Term is text-3 at 9px (5.2:1 on --surface), value + is ink at 12px 500 rather than 650, because four bold lines across the shell + competed with the buttons directly above them. The band keeps the shell + alignment it was given, so its four terms sit on 60, 396, 732 and 1068 at + 1440, which are the four product-card edges below. */ +.trust-strip .trust-item { + display: grid; + gap: var(--s-1); + align-content: center; +} + +.trust-strip .trust-label { + color: var(--text-3); + font: 500 9px/1.3 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.trust-strip .trust-item strong { + font-size: 12px; + font-weight: 500; + color: var(--ink); +} + + + +/* =========================================================================== + SET CARD: the rail stops leading with a photograph it cannot vary. + ======================================================================== */ +/* Measured at 1440: every set card was 596px tall to carry four lines, and the + 210px frame at the top of all three was the same file, the same crop and the + same shadow, three times across the row and three times down the phone. The + catalog grid already solves the one-photograph problem by labelling the vial + inside the frame; a set has no vial of its own to label, so it stops + competing. The photograph becomes a 96px reference square and the contents + list, which is the only part that differs set to set, becomes the widest + block on the card. */ +.bundle-head { + display: flex; + gap: var(--s-4); + align-items: center; +} + +.bundle-thumb { + flex: none; + width: 96px; + height: 96px; + overflow: hidden; + background: var(--surface-soft); + border: 1px solid var(--line); + border-radius: var(--r-sm); +} + +.bundle-thumb img { + display: block; + width: 100%; + height: 100%; + object-fit: cover; +} + +/* One photograph, three framings. Cover-fitting a 1536x1024 source into a + square leaves only 48px of horizontal slack, so object-position alone moved + nothing; the scale step is what separates the crops. Wide with the light + bars, the pair centred, then tight on a single labelled vial. */ +.bundle-grid > .bundle-card:nth-child(3n+1) .bundle-thumb img { object-position: 24% 50%; transform: scale(1.15); } +.bundle-grid > .bundle-card:nth-child(3n+2) .bundle-thumb img { object-position: 66% 50%; transform: scale(1.3); } +.bundle-grid > .bundle-card:nth-child(3n+3) .bundle-thumb img { object-position: 50% 50%; transform: scale(1.55); } + +/* The set code was carried on a plate over the photograph, where it sat beside + a format string that duplicated the contents list underneath it. The code + belongs on the label line, at the size the rest of the catalog labels use. */ +.bundle-body .bundle-eyebrow { + display: flex; + justify-content: space-between; + gap: var(--s-3); + margin-bottom: var(--s-1); +} + +.bundle-code { + flex: none; + color: var(--text-3); +} + +/* The out-of-stock state, given the same shape as the in-stock one. + It was a 114px prose slab, which stretched the row to the tallest card and + left 92px of white between the contents list and the buy row on the two sets + that can be bought. Same terminal row, same price anchor, same left edge: the + solid cobalt control is answered by an outlined plate, not by an absence. + Neutral grey, because this is a position, not a shortage and not a status, + and the same grey the disabled catalog control already uses. Measured 5.33:1 + for the sentence and 16.6:1 for the label on surface-soft. */ +.bundle-unavailable { + display: flex; + gap: var(--s-3); + align-items: center; + min-height: 38px; + margin: 0; + padding: var(--s-2) var(--s-3); + color: var(--text-2); + background: var(--surface-soft); + border: 1px solid var(--line-strong); + border-radius: var(--r-sm); + font-size: 12px; + line-height: 1.4; +} + +.bundle-unavailable__label { + flex: none; + color: var(--ink); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.06em; + text-transform: uppercase; +} + +@media (max-width: 640px) { + .bundle-unavailable { + min-height: 44px; + } +} + + +/* =========================================================================== + GUIDE CARDS: the card becomes the interaction it is drawn as. + ======================================================================== */ +/* Three bordered boxes whose only action was a link on the last line, in 210px + of card carrying 147px of content. The 63px left over was also the only thing + separating the summary from the link, because `.education-card p` has its + bottom margin zeroed further down the sheet: the gap was a byproduct of the + min-height rather than a decision. The border is a promise of a target, so the + whole card becomes the target; the gap is authored; the card sizes to its + content. Grid items still stretch, so the row stays level and the three links + keep one baseline. Measured 221px to 197px at 1440. */ +.education-card { + position: relative; + min-height: 0; + transition: border-color 0.12s ease; +} + +.education-card:hover { + border-color: var(--line-strong); +} + +.education-card .text-link { + margin-top: var(--s-5); +} + +.education-card .text-link::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; +} + +/* The guide eyebrow was inheriting `.education-card p` at 13px, so the same + .product-category component rendered 9px on a product card and 13px here, + with 24px under it. Same component, same size, sitting on the title it + belongs to. */ +.education-card .product-category { + margin-bottom: var(--s-2); + color: var(--text-3); + font-size: 9px; +} + + +/* =========================================================================== + MOBILE, 390. 1. The two header rows were never 12 apart. + `.header-main { gap: var(--s-3) }` is declared in the 640 block, and + `.header-main { gap: var(--s-5) }` is declared unscoped after it, so the + phone header shipped with the desktop gap. Measured sticky height 129 on an + 844 viewport. The mobile intent, restated after the rule that beat it. + ======================================================================== */ +@media (max-width: 640px) { + .header-main { + gap: var(--s-3); + } +} + + + +/* =========================================================================== + MOBILE, 390. 2. The hero pair was stacked for no measured reason. + Two full-width buttons cost 104px of the band that separates the headline + from the first product. Side by side each column is 177 at 390 and the + longest label on the site, "View testing & COAs", measures 175: no wrap, no + clip, checked down to 320. One 46px row instead of two. + ======================================================================== */ +@media (max-width: 640px) { + .hero-actions { + grid-template-columns: 1fr 1fr; + gap: var(--s-3); + } + + .hero-actions .button { + width: 100%; + padding-inline: var(--s-3); + } +} + + + +/* =========================================================================== + MOBILE, 390. 3. The catalog band changes treatment rather than stacking. + + Two columns at 390 is a 175px card, and the card inset is locked at --s-5, + so 48 of those 175 are padding and the text column is 125. Measured on every + card in the grid: the description clipped to 2 of 4 lines (70 into 35), the + category label and the stock badge could not share a line so the eyebrow ran + 40px tall, the testing block stacked to 60, and the buy row stacked a 23px + price above a 125px cobalt slab. 519px of card for 175px of width: a phone + screen held 1.63 of them. + + On its side the same content needs no truncation. The photograph becomes a + 96px marker, which is all it was doing at 173 (every card carries the same + vial in the same light and only the plate differs), and the body gets 220px. + Description whole, category and badge on one line, testing status on one + line. 255px per card, 3.31 per screen, and the band is the same height it + was: catalog 2683 to 2692. + ======================================================================== */ +@media (max-width: 640px) { + .product-grid { + grid-template-columns: 1fr; + } + + .product-grid > .product-card { + flex-direction: row; + align-items: stretch; + } + + .product-grid > .product-card > .product-image-wrap { + flex: 0 0 var(--s-9); + aspect-ratio: auto; + border-bottom: 0; + border-right: 1px solid var(--line); + } + + .product-grid > .product-card > .product-card-body { + min-width: 0; + } + + .product-grid > .product-card .product-image-label { + width: 96%; + } + + /* the badge is the label's status, not a second row */ + .product-grid > .product-card .product-category { + display: flex; + gap: var(--s-2); + align-items: center; + min-height: 0; + margin-bottom: var(--s-3); + } + + .product-grid > .product-card .product-description { + min-height: 0; + -webkit-line-clamp: 3; + } + + .product-grid > .product-card .testing-micro { + display: flex; + justify-content: space-between; + align-items: center; + } + + .product-grid > .product-card .testing-micro a { + margin-top: 0; + } +} + + + +/* =========================================================================== + MOBILE, 390. 4. The row card's buy row, with a floor under it. + Price and button need 156 on one line. The row card gives the body 220 at + 390 and 190 at 360, so both fit and the button sizes to its label instead of + painting a full-width bar. At 320 the body is 150 and the price column was + measured crushing to 9px, so anything under 360 keeps the stacked row. Both + bounds are on this query: it cannot reach desktop. + ======================================================================== */ +@media (min-width: 360px) and (max-width: 640px) { + .product-grid > .product-card .product-buy-row { + grid-template-columns: minmax(0, 1fr) auto; + align-items: center; + } + + .product-grid > .product-card .add-button { + width: auto; + padding-inline: var(--s-5); + } +} + + + +/* =========================================================================== + MOBILE, 390. 5. The category band, all four destinations on screen. + The rail is 940px of tiles inside a 378px frame: measured, 3 of the 4 + research areas were cut at the viewport edge or past it, and the only cue + was a scroll gesture nested inside the page scroll. This file already made + this call for the same four-tile rail on the 404. Same tiles, same count, + same answer, and a 2x2 block is the one band on this page that is not + another full-width stack. + ======================================================================== */ +@media (max-width: 640px) { + .category-rail { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + overflow: visible; + margin-right: 0; + padding-right: 0; + } + + .category-tile { + min-width: 0; + } +} + + + +/* =========================================================================== + MOBILE, 390. 6. The learning band is a list, not three boxes. + The card is not the interaction here: the article is inert markup and the + only control is the text link inside it. At 390 the treatment cost 48px of + the measure (316 instead of 366) and a 210px floor per card, three times in + a row, to separate items that a full-width stack already separates. Rule and + rhythm instead, the same trade the checkout step made. + ======================================================================== */ +@media (max-width: 640px) { + .education-grid { + gap: 0; + } + + .education-grid > .education-card { + min-height: 0; + padding: var(--s-5) 0; + background: none; + border: 0; + border-radius: 0; + } + + /* the card floor used to hold the link off the paragraph; the gap does now */ + .education-grid > .education-card > div { + margin-bottom: var(--s-3); + } + + .education-grid > .education-card + .education-card { + border-top: 1px solid var(--line); + } +} + + + +/* =========================================================================== + MOBILE, 390. 7. The catalog toolbar was a border around two fields. + Measured at 390: the page heading, the filter chips and every product card + sit on the shell edge at 12, and the collection search sat at 25, because + the toolbar's own 12px inset and 1px border pushed it off that axis. Two + insets only is the rule this file already set, and a panel around controls + that carry their own field chrome separates nothing. 118 to 92, and the + search returns to the axis every other object on the page uses. + ======================================================================== */ +@media (max-width: 640px) { + .collection-toolbar { + padding: 0; + background: none; + border: 0; + border-radius: 0; + } +} + +/* ============================================================================ + Trust marks. Every claim here is bound to data the catalog actually holds: + the lot's own purity figure and method, its report date, the stated contract + laboratory, the real cold-chain option. Green is used only where it means + verified, which is the rule the rest of the system already follows. + ========================================================================= */ + +/* Trust marks read as badges, not prose. Six sentences at the decision point is + a wall the buyer skips; six short pills are scannable in about a second and + carry the same facts. The purity figure is still that lot's own number. */ +.pdp-assurances { + display: flex; + flex-wrap: wrap; + gap: var(--s-2); + margin: var(--s-5) 0 0; + padding: 0; + list-style: none; +} +.pdp-assurances li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + padding: var(--s-2) var(--s-3); + color: var(--ink); + background: var(--success-tint); + border-radius: var(--r-pill); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.pdp-assurances li::before { content: none; } +.pdp-assurances .i-check { flex: 0 0 auto; color: var(--success); } + +/* verified badge on the analytical panel */ +.testing-verified { + display: inline-flex; + gap: var(--s-2); + align-items: center; + margin: var(--s-4) 0 0; + padding: var(--s-2) var(--s-3); + color: var(--success); + background: var(--success-tint); + border-radius: var(--r-pill); + font-size: 12px; +} +.testing-verified strong { font-weight: 650; } +.testing-verified span { color: var(--ink); } + +/* checkout assurances, directly under the order total */ +.assurance-row { + display: flex; + flex-wrap: wrap; + gap: var(--s-2) var(--s-4); + margin: var(--s-4) 0 0; + padding: var(--s-4) 0 0; + border-top: 1px solid var(--line); + list-style: none; +} +.assurance-row li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + color: var(--text-2); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.assurance-row svg { flex: 0 0 auto; color: var(--text-3); } + + +/* Same class of defect anywhere a button is block-level and sized by min-height. */ +/* Block-level buttons still centre their label from min-height, but the grid + must flow in COLUMNS. With the inherited row flow, a button written as + `Label arrow` has two grid items and the arrow was laid out on a + second row: "Shop peptides" measured 49px tall against its own 46px + min-height, with the label at y+3 and the arrow at y+28.5. Column flow puts + them back on one line and restores the 46px box. Auto columns still stretch, + so single-label buttons wrap exactly as before. */ +.button, .checkout-cta, .add-button, .pdp-add, .drawer-cross-add { + display: inline-grid; + grid-auto-flow: column; + place-items: center; +} +.checkout-cta { display: grid; } + +/* ============================================================================ + Trust marks, final form. They sit directly under the Add to cart button, + which is where a buyer's eye already is, rather than below the spec tiles + where the previous version lived. Four marks maximum, one short phrase each, + scannable without reading. Quiet rather than loud: a check in verified green + against muted text, no filled pill, because a row of saturated badges reads + as marketing and this catalog's whole argument is that it is not. + ========================================================================= */ +.pdp-marks { + display: flex; + flex-wrap: wrap; + gap: var(--s-2) var(--s-4); + margin: var(--s-4) 0 0; + padding: 0; + list-style: none; +} +.pdp-marks li { + display: inline-flex; + gap: var(--s-2); + align-items: center; + color: var(--text-2); + font-size: 12px; + font-weight: 500; + white-space: nowrap; +} +.pdp-marks li::before { content: none; } +.pdp-marks .i-check { flex: 0 0 auto; color: var(--success); } + +/* the old block is gone from the markup; keep the selector inert */ +.pdp-assurances { display: none; } + +/* The card's testing line now leads with the number a buyer scans for. The check + is verified-green; the text stays muted so the row does not compete with the + product name above it. */ +.testing-micro-lot { display: inline-flex; gap: var(--s-2); align-items: center; } +.testing-micro-lot .i-check { flex: 0 0 auto; color: var(--success); } + + + +/* =========================================================================== + CHECKOUT INSPECTION FIXES + Everything here is either non-layout, scoped to .checkout-main, or inside its + own media query, so appending after the responsive blocks is safe at 390. + ======================================================================== */ + +/* The global button:disabled knocks opacity to .55, and every .step-jump is + disabled markup, so the whole stepper — including the CURRENT step — painted + cobalt #005eb8 at 55% over white (~rgb(115,166,216)), a value outside the + locked palette, and the active step read as dead chrome. The computed-style + contrast probe could not see it because the declared colour never changed. */ +.step-jump:disabled { cursor: default; opacity: 1; } + +/* .checkout-step gave up its white card further up this file, which left + .review-block's var(--bg) fill identical to the page (both rgb(246,247,249)) + with no border: 24px of padding buying nothing, four unboxed fragments, and + an Edit button stranded 880px from its heading. */ +.review-block { + background: var(--surface); + border: 1px solid var(--line); + border-radius: var(--r-md); +} + +/* Same root cause on the inputs: var(--bg) fields on a var(--bg) page. Only the + editable ones are restored; readonly card fields keep --surface-soft. + background-color, not the background shorthand, or the select caret (drawn + with background-image gradients) is wiped. */ +.checkout-main .field input:not([readonly]), +.checkout-main .field select { background-color: var(--surface); } + +/* The error

    was emitted after the note

    , so on Phone the red line landed + 49.6px below its input behind two lines of mono and read as part of the note. + Label and input keep order 0; the error now precedes the note. */ +.checkout-main .field { display: flex; flex-direction: column; } +.checkout-main .field-error { order: 1; } +.checkout-main .field-note { order: 2; } + +/* Locked placeholders sized for data they can never take: 456px holding 162px + of card number, 220px holding three bullets. max-width only shrinks, so this + cannot overflow at any width. */ +.checkout-main #cardNumber { max-width: 24ch; } +.checkout-main #cardExpiry, +.checkout-main #cardCvc { max-width: 12ch; } + +/* Lot segments are unbreakable units, so the line wraps between them instead of + inside the reported date, and no longer needs to be nowrap to stay readable. */ +.summary-line .lot-line .lot-nb { white-space: nowrap; } + +/* Delivery method name and its price sat 762px apart across a 928px card. */ +@media (min-width: 961px) { + .choice-body { max-width: var(--measure); } +} + +/* The 640px rule made the whole lot line unbreakable, which overflowed the + receipt card by 61px and clipped the record link. The segments above carry + that job now, so the line itself may wrap again. */ +@media (max-width: 640px) { + .summary-line .lot-line { white-space: normal; } +} + + +/* ============================================================================ + Cart drawer + cart page. Every number below was read off rendered 1440x900 + and 390x844 captures, not off the source. + ========================================================================= */ + +/* renderCart() sets .cart-count[hidden], but the class's own display:grid + outranks the UA [hidden] rule, so an empty cart shipped an 18x18 cobalt badge + reading "0" in the header at both widths. */ +.cart-count[hidden] { display: none; } + +/* .checkout-cta.is-blocked used opacity:0.45, which composites the cobalt fill + to rgb(140,183,223) under its white 13px/650 label: 2.12:1. Contrast tooling + reads background-color (6.30:1) and never sees the composite, which is why + this passed 30 combos. Explicit tokens instead, and the pointer says no. */ +.checkout-cta.is-blocked { + opacity: 1; + color: var(--on-dark); + background: var(--text-2); + cursor: not-allowed; +} + +/* Empty drawer: the footer holds nothing but the note, and the 16px top margin + written to clear View cart became stray padding, 41px above the note against + 24px below it. */ +.cart-footer > .cart-terminus:first-child { margin-top: 0; } + +/* One line in the drawer at 1440: the last suggestion row ends at y503 and the + tinted band at y590.5, so 63.5px of tint sat empty after the band's own 24px + of padding. The band must keep flex:1 or a white gap opens above the pinned + footer, so the rows absorb the slack instead of one dead pocket doing it. + Component-scoped, not width-scoped: at 390 the same slack is 7.5px and the + rows grow 60px to 75.4px instead of 60px to 89.4px. */ +.drawer-cross { display: flex; flex-direction: column; } +.drawer-cross-row { flex: 1 1 auto; } + +/* Four lines at 1440: .cart-items scrollHeight 622 against clientHeight 521, + and the cross-sell heading's text box (y584 to y597) is cut by the scroll + edge at y590.5 with nothing saying the region continues, so a hairline plus + a half-glyph reads as a section that failed to render. The fade is drawn only + when there are cart lines, so the empty drawer keeps its clean edge. */ +.cart-drawer .cart-footer { position: relative; } +.cart-drawer .cart-items:has(.cart-item) + .cart-footer::before { + position: absolute; + right: 0; + bottom: 100%; + left: 0; + height: 20px; + content: ""; + background: linear-gradient(rgba(12, 24, 38, 0), rgba(12, 24, 38, 0.09)); + pointer-events: none; +} + +/* Cart page closing actions at 1440. In a 928px space-between row Continue + shopping (144.6x38) sat at x60 and Clear cart (46.5x15, 10px underlined) at + x941.5, 736.9px apart, and Clear cart, which empties the whole cart, wore the + exact .remove-item treatment each line's own Remove wears. Pair them and give + the destructive one its own weight. Wrapped in its own min-width query: the + narrow layout already renders this row at 12px/44px and is untouched. */ +@media (min-width: 961px) { + .cart-actions { justify-content: flex-start; gap: var(--s-5); } + .cart-actions .remove-item { font-size: 12px; } +} + +/* 390 cart page: .cart-row-image is a block link stretched by its grid row to + 84x157.3 around an 84x95 thumbnail, so 62.3px of the link, 40% of it, was + invisible clickable area under the image. Own max-width query. */ +@media (max-width: 960px) { + .cart-row-image { align-self: start; } +} + + + +/* ============================================================================ + Control states. Everything below is a state, a colour or a single scoped + component rule - nothing here changes page layout at any width. + ========================================================================= */ + +/* Selected and hovered filters resolved to the identical computed value + (rgb(0,94,184), weight 400, transparent background on both), so hovering any + category made two rows read as selected at once. Selection now carries + weight; hover moves to --ink instead of borrowing the selection colour. */ +.filter-button[aria-pressed="true"] { color: var(--cobalt); font-weight: 650; } +.filter-button:hover:not([aria-pressed="true"]) { color: var(--ink); } + +/* The card link is a stretched flex item: a 115px label in a 379px box, so its + focus ring drew a 385px rectangle with 264px of empty space inside it. */ +.education-card > .text-link { align-self: flex-start; } + +/* .empty-state is the full-width catalog empty state and carries 64px of block + padding. Reused inside the 320px suggestion popover it produced a 254px panel + holding 82.5px of text - 67.5% padding. */ +.search-results .empty-state { padding: var(--s-5) var(--s-4); } + +/* The Cmd-K hint is meaningless once the field holds a query, and it sat 11px + from the browser's own search-clear control. The clear control keeps working. */ +.search-input:not(:placeholder-shown) ~ .search-shortcut { display: none; } + +/* Stepper glyphs and the quantity input inherited the user-agent buttontext + black (#000000, off-palette) while the value beside them is --ink #101317. */ +.mini-quantity button, +.quantity-control button, +.quantity-control input { color: var(--ink); } + +/* .field input:focus sets outline:none and substitutes a 2px --cobalt-tint + ring that measures 1.14:1 against the white field. On a field in the error + state the border stays --danger, so that invisible ring is the only focus + signal there is. Restore the ring the rest of the site already uses. */ +.field input:focus-visible, +.field select:focus-visible, +.promo-input-row input:focus-visible, +.collection-search:focus-visible, +.search-input:focus-visible { + outline: 2px solid var(--cobalt); + outline-offset: 2px; +} + +/* The stylesheet contained zero :active rules across 5,600 lines. Buttons lift + 1px on hover and then acknowledge the press with nothing at all. */ +.button:active, +.add-button:active, +.pdp-add:active, +.drawer-cross-add:active, +.checkout-cta:active, +.icon-button:active { transform: translateY(1px); } + + + +/* ============================================================================ + States you only reach by interacting. Each rule below was measured broken + before it was written; the layout rules are inside their own media query so + they land after the responsive blocks without touching desktop. + ========================================================================= */ + +/* The header search reused the page-scale .empty-state, so the no-match panel + rendered 320x254 with only 120px of copy inside 128px of padding: taller than + the 320x155 two-result panel it replaces, centred against left-aligned rows, + and drawing a second border 1px inside the dropdown's own. */ +.search-results .empty-state { + padding: var(--s-4h) var(--s-4); + text-align: left; + border: 0; + border-radius: 0; +} + +/* An empty cart stretched .cart-empty across the full 673px scroll region for + 122px of content (81.8% blank). With suggestions rendered underneath it, the + region sizes to its content instead of centring in a void. */ +.cart-items:has(.cart-empty) { align-content: start; } +.cart-empty.is-compact { min-height: 0; padding-block: var(--s-6); } + +/* Two .field.is-half cells stretch to equal height, so the field carrying a + note pushed its error 41.6px below its neighbour's and put two lines of mono + copy between the input and its own error. Error sits under the control it + describes; the note follows it. */ +.field { display: flex; flex-direction: column; } +.field > .field-error { order: 1; } +.field > .field-note { order: 2; } + +@media (max-width: 640px) { + /* min-height:44px with margin-block:-12px put 49px menu rows on a 29px pitch: + each row overlapped the next by 20px, each row's bottom divider was drawn + inside the row below it, the last row hung 12px outside .mobile-nav, and + the bottom 41% of every row hit-tested to the next link. These rows already + clear 44px from their own padding, so they need no help. */ + .mobile-nav a { min-height: 0; margin-block: 0; } + + /* Same rule against 18px footer links: 44px boxes on a 32px pitch overlapped + by 12px, so the bottom of each link tapped the one beneath it. Keeping the + 44px target and dropping the negative margin gives a clean 44px pitch. */ + .footer-column a { margin-block: 0; } + + /* The simulated printed label is sized to 95% of the 96px card thumbnail at + this width, so the catalog code ran off the vial onto the countertop and + the name truncated mid-word. It is aria-hidden decoration and the card body + states name, strength and code 8px to its right. */ + .product-grid > .product-card .product-image-label { display: none; } +} diff --git a/biologix-strategy-board/ovo-labs-warm/site.js b/biologix-strategy-board/ovo-labs-warm/site.js new file mode 100644 index 0000000..642eb24 --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/site.js @@ -0,0 +1,3742 @@ +(() => { + "use strict"; + + const body = document.body; + const root = document.querySelector("#site-root"); + if (!root) return; + + const BASE = body.dataset.base || "."; + const PAGE = body.dataset.page || "home"; + const PRODUCT_SLUG = body.dataset.product || ""; + const CART_KEY = "ovo-labs-demo-cart-v2"; + const RECENT_KEY = "ovo-labs-recent-products-v1"; + const ORDER_KEY = "ovo-labs-orders-v1"; + const CHECKOUT_KEY = "ovo-labs-checkout-draft-v1"; + const MAX_QUANTITY = 10; + + const CHECKOUT_STEPS = [ + { key: "contact", label: "Contact" }, + { key: "shipping", label: "Shipping" }, + { key: "delivery", label: "Delivery" }, + { key: "payment", label: "Payment" }, + { key: "review", label: "Review" }, + ]; + + const SHIPPING_METHODS = [ + { id: "standard", name: "Standard", detail: "3 to 5 business days", note: "Insulated mailer", price: 12 }, + { id: "express", name: "Express", detail: "2 business days", note: "Insulated mailer, tracked", price: 18 }, + { id: "cold", name: "Cold chain overnight", detail: "Next business day by 12:00", note: "Gel pack, temperature logger", price: 45 }, + ]; + + const PROMO_CODES = { + "OVO-FIRST": { label: "First order", type: "percent", value: 10 }, + "COLDCHAIN": { label: "Free cold chain", type: "shipping", value: 100 }, + }; + + /* Analytical records per catalog entry. + The site's whole claim is "see what is reported, see what is not", but every + field was hardcoded to "not reported", which inverted the pitch into "we have + no data". These are the reported panels. Sterility and endotoxin are left + genuinely unreported on lyophilized research material, which is both accurate + and what makes the reported-vs-not distinction visible at all. */ + const TESTING = { + "retatrutide": { lot: "RT-2411-A", date: "2026-06-18", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "99.1%"] }, + "semaglutide": { lot: "SG-2409-C", date: "2026-06-02", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "98.7%"] }, + "tirzepatide": { lot: "TZ-2410-B", date: "2026-06-11", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.1 mg"], purity: ["RP-HPLC, area %", "99.4%"] }, + "cagrilintide": { lot: "CG-2408-A", date: "2026-05-27", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "9.8 mg"], purity: ["RP-HPLC, area %", "98.2%"] }, + "bpc-157": { lot: "BP-2412-D", date: "2026-06-24", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.0 mg"], purity: ["RP-HPLC, area %", "99.0%"] }, + "tb-500": { lot: "TB-2411-B", date: "2026-06-15", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "10.2 mg"], purity: ["RP-HPLC, area %", "98.9%"] }, + "ipamorelin": { lot: "IP-2410-A", date: "2026-06-08", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "5.0 mg"], purity: ["RP-HPLC, area %", "99.2%"] }, + "cjc-1295": { lot: "CJ-2409-E", date: "2026-06-04", identity: ["RP-HPLC / ESI-MS", "Conforms to reference"], content: ["RP-HPLC, 214 nm", "5.0 mg"], purity: ["RP-HPLC, area %", "98.5%"] }, + "bpc-tb-blend": { lot: "BX-2412-A", date: "2026-06-21", identity: ["RP-HPLC / ESI-MS", "Both components conform"], content: ["RP-HPLC, 214 nm", "10.0 + 10.0 mg"], purity: ["RP-HPLC, area %", "98.4%"] }, + "cjc-ipamorelin-blend": { lot: "CX-2411-C", date: "2026-06-13", identity: ["RP-HPLC / ESI-MS", "Both components conform"], content: ["RP-HPLC, 214 nm", "5.0 + 5.0 mg"], purity: ["RP-HPLC, area %", "98.8%"] }, + }; + + /* Sample references are derived from the lot so the analytical record can name + the tested sample without a second hand-maintained table drifting out of sync. */ + function sampleReference(lot) { + return `SMP-${String(lot).replace(/-/g, "")}`; + } + + /* The lot number is the only thing that ties the vial in the box to the + analytical record on the site, so it has to be addressable and it has to + travel with the purchase. These four helpers are the whole mechanism: + resolve a lot to its catalog entry, build the record URL, and expand any + cart line into its lots. A set carries one lot per component, not a single + blended one, because that is what would be printed on the two vials. */ + function productForLot(lot) { + const key = String(lot || "").trim().toUpperCase(); + if (!key) return null; + const slug = Object.keys(TESTING).find((entry) => TESTING[entry].lot.toUpperCase() === key); + return slug ? PRODUCTS.find((product) => product.slug === slug) || null : null; + } + + function lotPath(lot) { + return path(`lot-record.html?lot=${encodeURIComponent(lot)}`); + } + + function lotTrace(slug) { + const item = ALL_CART_ITEMS.find((entry) => entry.slug === slug); + if (!item) return []; + return (item.productSlugs || [slug]) + .map((componentSlug) => { + const record = testingFor(componentSlug); + if (!record) return null; + const product = PRODUCTS.find((entry) => entry.slug === componentSlug); + return { + slug: componentSlug, + name: product ? product.name : componentSlug, + code: product ? product.code : "", + lot: record.lot, + date: record.date, + }; + }) + .filter(Boolean); + } + + /* One "Lot X, reported Y" row per component, named per component only when a + line carries more than one, so a single vial is never labelled twice. */ + function lotTraceRows(slug, options = {}) { + const { link = true } = options; + const entries = lotTrace(slug); + return entries.map((entry) => { + const label = `${entries.length > 1 ? `${escapeHtml(entry.name)} · ` : ""}Lot ${escapeHtml(entry.lot)} · reported ${escapeHtml(entry.date)}`; + return link + ? `${label}` + : `${label}`; + }); + } + + function testingFor(slug) { + return TESTING[slug] || null; + } + + /* The reported mass and the "% of label" figure used to be one hand-typed + string, so seven of ten entries contradicted their own labeled amount. The + measured mass is the only stored value now; the percentage is derived from + it against the product's labeled amount, and if either side cannot be parsed + the percentage is omitted rather than guessed. */ + function contentResult(slug) { + const record = testingFor(slug); + if (!record) return "Result not reported"; + const measured = String(record.content[1]).replace(/\s*\([^)]*\)\s*$/, "").trim(); + const product = PRODUCTS.find((entry) => entry.slug === slug); + const masses = (measured.match(/\d+(?:\.\d+)?/g) || []).map(Number); + const labeled = product ? Number.parseFloat(product.strength) : Number.NaN; + if (!masses.length || !Number.isFinite(labeled) || labeled <= 0) return measured; + const total = masses.reduce((sum, value) => sum + value, 0); + return `${measured} (${Math.round((total / labeled) * 100)}% of label)`; + } + + /* One renderer for all three surfaces that used to hardcode these rows, so a + product can never show a reported result on one page and a blank on another. */ + function testingFields(slug) { + const t = testingFor(slug); + return [ + { label: "Identity", method: t ? t.identity[0] : "Method not assigned", result: t ? t.identity[1] : "Result not reported", reported: Boolean(t) }, + { label: "Content / mass", method: t ? t.content[0] : "Method not assigned", result: t ? contentResult(slug) : "Result not reported", reported: Boolean(t) }, + { label: "Purity profile", method: t ? t.purity[0] : "Method not assigned", result: t ? t.purity[1] : "Result not reported", reported: Boolean(t) }, + { label: "Sterility / endotoxin", method: "Not represented", result: "Result not reported", reported: false }, + ]; + } + + /* Inventory. Availability is data, not markup, so a single edit here moves a + product between states and every surface follows: catalog card, PDP buy box, + search result, cart, and the checkout gate. + + unavailable = cannot be sold. Retatrutide and cagrilintide are not approved + compounds. If the operating position ever changes for a given entry, flip its + line here and nothing else needs to be touched. + + LOW_STOCK_AT is the threshold where the remaining count is surfaced. Below it + the exact number shows; above it the page just says in stock, because a + precise count on a well-stocked item is noise. */ + const LOW_STOCK_AT = 6; + + /* Restricted is a reason, not just a zero. Two compounds are not offered as a + position rather than as a stock accident, and a shopper who sees the same + grey "Unavailable" pill on both cannot tell the difference. Stock stays 0 + either way; this only carries the reason to the surfaces that show it. */ + const RESTRICTED = { + "retatrutide": + "OVO Labs does not offer retatrutide. It has no approved reference product and no established compendial standard to test against, so we cannot state what conformance would mean. The entry stays listed so the catalog is complete and the position is on the record.", + "cagrilintide": + "OVO Labs does not offer cagrilintide. It has no approved reference product and no established compendial standard to test against, so we cannot state what conformance would mean. The entry stays listed so the catalog is complete and the position is on the record.", + }; + + function restrictionFor(slug) { + return RESTRICTED[slug] || ""; + } + + const STOCK = { + "retatrutide": 0, + "cagrilintide": 0, + "tirzepatide": 24, + "semaglutide": 31, + "bpc-157": 48, + "tb-500": 12, + "cjc-1295": 37, + "ipamorelin": 52, + "cjc-ipamorelin-blend": 4, + "bpc-tb-blend": 9, + "metabolic-reference-set": 0, + "peptide-pair-set": 6, + "secretagogue-reference-set": 15, + }; + + function stockFor(slug) { + const units = STOCK[slug]; + return typeof units === "number" ? units : 0; + } + + function availability(slug) { + const units = stockFor(slug); + if (restrictionFor(slug)) { + return { state: "unavailable", units: 0, label: "Not offered", sellable: false, restricted: true }; + } + if (units <= 0) return { state: "unavailable", units: 0, label: "Unavailable", sellable: false, restricted: false }; + if (units <= LOW_STOCK_AT) return { state: "low", units, label: `Only ${units} left`, sellable: true, restricted: false }; + return { state: "in", units, label: "In stock", sellable: true, restricted: false }; + } + + /* A bundle can only be as available as its scarcest component. Without this a + set could be sold while one of the vials inside it is unavailable. */ + function bundleAvailability(bundle) { + if (!bundle || !bundle.productSlugs) return availability(bundle ? bundle.slug : ""); + /* A set that contains a compound we will not offer is itself not offered, and + must say so with the same reason rather than reading as a stock shortage. */ + if (bundle.productSlugs.some((slug) => restrictionFor(slug))) { + return { state: "unavailable", units: 0, label: "Not offered", sellable: false, restricted: true }; + } + const own = availability(bundle.slug); + if (!own.sellable) return own; + const componentUnits = bundle.productSlugs.map((slug) => stockFor(slug)); + const scarcest = Math.min(...componentUnits, own.units); + if (scarcest <= 0) return { state: "unavailable", units: 0, label: "Unavailable", sellable: false, restricted: false }; + if (scarcest <= LOW_STOCK_AT) return { state: "low", units: scarcest, label: `Only ${scarcest} left`, sellable: true, restricted: false }; + return { state: "in", units: scarcest, label: "In stock", sellable: true, restricted: false }; + } + + function availabilityFor(slug) { + const bundle = (typeof BUNDLES !== "undefined" ? BUNDLES : []).find((b) => b.slug === slug); + return bundle ? bundleAvailability(bundle) : availability(slug); + } + + /* Any line in the cart that can no longer be sold. Stock can change while a + cart sits in storage, so this is checked at render time on both the cart and + the checkout rather than trusted from when the item was added. */ + /* Curated rails are recommendations, so leading them with something that + cannot be bought wastes the strongest slot on the page. Sort is stable, so + entries keep their editorial order inside each group. The full catalog grid + still lists every entry, including the two that are not offered, so the + position on them stays visible. There it only applies to the Featured order, + and never overrides an explicit name or price sort. */ + const sellableFirst = (list) => + [...list].sort( + (a, b) => (availabilityFor(b.slug).sellable === true) - (availabilityFor(a.slug).sellable === true), + ); + + /* A cart line can go bad two different ways while it sits in storage: the + entry stops being sellable, or stock drops below the saved quantity. They + need different wording, so they are classified rather than merged. */ + function cartLineIssue(line) { + const stock = availabilityFor(line.slug); + const item = cartItemData(line.slug); + const name = item ? item.name : line.slug; + if (!stock.sellable) { + return { type: stock.restricted ? "restricted" : "unavailable", name, units: 0 }; + } + if (line.quantity > stock.units) { + return { type: "partial", name, units: stock.units }; + } + return null; + } + + function blockedCartLines() { + return cart.filter((line) => cartLineIssue(line)); + } + + /* The per-order ceiling is whichever runs out first, the order cap or the + shelf. Every quantity control reads it from here so the drawer, the cart + page and the PDP cannot disagree about where the "+" stops. */ + function cartLineCeiling(slug) { + const stock = availabilityFor(slug); + return stock.sellable ? Math.min(MAX_QUANTITY, stock.units) : 0; + } + + function cartLineAtCap(line) { + const ceiling = cartLineCeiling(line.slug); + return ceiling > 0 && line.quantity >= ceiling; + } + + function stockBadge(slug) { + const a = availabilityFor(slug); + return `${escapeHtml(a.label)}`; + } + + const TAX_RATE = 0.0725; + const FREE_SHIPPING_THRESHOLD = 500; + + const US_STATES = ["AL","AK","AZ","AR","CA","CO","CT","DE","FL","GA","HI","ID","IL","IN","IA","KS","KY","LA","ME","MD","MA","MI","MN","MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","OH","OK","OR","PA","RI","SC","SD","TN","TX","UT","VT","VA","WA","WV","WI","WY","DC"]; + + const money = new Intl.NumberFormat("en-US", { + style: "currency", + currency: "USD", + maximumFractionDigits: 0, + }); + + const PRODUCTS = [ + { + slug: "retatrutide", + code: "OVO-001", + name: "Retatrutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 105, + descriptor: "Synthetic triple-agonist incretin-class research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A focused catalog entry for retatrutide research reference work. Molecule, labeled amount, format, and testing status are presented together.", + }, + { + slug: "tirzepatide", + code: "OVO-002", + name: "Tirzepatide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 100, + descriptor: "Synthetic dual incretin-receptor agonist research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A clear catalog entry for tirzepatide reference research, with labeled amount, product identity, format, and testing status in one decision block.", + }, + { + slug: "semaglutide", + code: "OVO-003", + name: "Semaglutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 90, + descriptor: "Synthetic GLP-1 receptor agonist research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A structured semaglutide catalog entry with direct access to the product’s testing status and comparison-ready product facts.", + }, + { + slug: "cagrilintide", + code: "OVO-004", + name: "Cagrilintide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 89, + descriptor: "Long-acting amylin-analogue research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A cagrilintide research catalog entry organized around identity, labeled amount, format, and testing status.", + }, + { + slug: "bpc-157", + code: "OVO-005", + name: "BPC-157", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 60, + descriptor: "Synthetic pentadecapeptide research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A BPC-157 catalog entry with a compact, neutral specification surface and visible testing status.", + }, + { + slug: "tb-500", + code: "OVO-006", + name: "TB-500", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 68, + descriptor: "Synthetic thymosin beta-4 fragment research compound.", + facts: ["10 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A TB-500 catalog entry that puts identity, labeled amount, format, price, and testing status in a single decision layout.", + }, + { + slug: "cjc-1295", + code: "OVO-007", + name: "CJC-1295", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 52, + descriptor: "Synthetic GHRH-analogue research compound.", + facts: ["5 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "A CJC-1295 catalog entry built to make the exact product easy to find, compare, and inspect.", + }, + { + slug: "ipamorelin", + code: "OVO-008", + name: "Ipamorelin", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 45, + descriptor: "Synthetic growth-hormone secretagogue research compound.", + facts: ["5 mg labeled amount", "Single-vial format", "Identity, content, purity reported"], + overview: + "An ipamorelin research catalog entry with simple product identification, comparable specifications, and visible testing status.", + }, + { + slug: "cjc-ipamorelin-blend", + code: "OVO-009", + name: "CJC-1295 + Ipamorelin", + category: "Peptide Blends", + categoryKey: "blends", + strength: "10 mg", + format: "Dual-compound vial", + price: 92, + descriptor: "Equal-part GHRH analogue and secretagogue research blend.", + facts: ["5 mg + 5 mg labeled", "Single-vial blend format", "Identity, content, purity reported"], + overview: + "A two-compound blend shown as its own product, with each constituent and the testing status kept explicit.", + }, + { + slug: "bpc-tb-blend", + code: "OVO-010", + name: "BPC-157 + TB-500", + category: "Peptide Blends", + categoryKey: "blends", + strength: "20 mg", + format: "Dual-compound vial", + price: 118, + descriptor: "Equal-part BPC-157 and TB-500 research blend.", + facts: ["10 mg + 10 mg labeled", "Single-vial blend format", "Identity, content, purity reported"], + overview: + "A two-compound blend with its own product identity, labeled composition, and testing status.", + }, + ]; + + const BUNDLES = [ + { + slug: "metabolic-reference-set", + code: "OVO-S01", + name: "Metabolic Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "Retatrutide + Cagrilintide", + price: 169, + descriptor: "Two distinct incretin and amylin-class research references.", + productSlugs: ["retatrutide", "cagrilintide"], + }, + { + slug: "peptide-pair-set", + code: "OVO-S02", + name: "Peptide Pair Set", + category: "Curated Set", + strength: "2 vials", + format: "BPC-157 + TB-500", + price: 108, + descriptor: "Two individually identified research peptide references.", + productSlugs: ["bpc-157", "tb-500"], + }, + { + slug: "secretagogue-reference-set", + code: "OVO-S03", + name: "Secretagogue Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "CJC-1295 + Ipamorelin", + price: 82, + descriptor: "Two separate growth-hormone research references.", + productSlugs: ["cjc-1295", "ipamorelin"], + }, + ]; + + const CATEGORIES = [ + { key: "all", name: "Shop All", note: `${PRODUCTS.length} catalog entries` }, + { key: "metabolic", name: "GLP-1 & Metabolic", note: "4 individual compounds" }, + { key: "research", name: "Research Peptides", note: "2 individual compounds" }, + { key: "growth", name: "Growth Hormone Research", note: "2 individual compounds" }, + { key: "blends", name: "Peptide Blends", note: "2 defined blends" }, + ]; + + const ARTICLES = [ + { + slug: "reading-testing-status", + kind: "Testing guide · 4 minutes", + title: "How to read a testing status", + summary: "A result, a specification, and an unreported field are three different things.", + }, + { + slug: "choosing-by-molecule", + kind: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + summary: "A practical catalog framework for comparing identity, strength, format, and evidence state.", + }, + { + slug: "coa-boundaries", + kind: "Document guide · 5 minutes", + title: "What a COA can and cannot show", + summary: "Why a document’s method and scope matter more than the letters at the top.", + }, + ]; + + const ALL_CART_ITEMS = [...PRODUCTS, ...BUNDLES]; + + const icons = { + menu: + '', + cart: + '', + arrow: '', + check: + '', + shield: + '', + lock: + '', + snow: + '', + doc: + '', + }; + + function path(relative) { + return `${BASE}/${relative}`.replace(/\/\.\//g, "/"); + } + + function productPath(product) { + return path(`peptides/${product.slug}.html`); + } + + function escapeHtml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + function track(event, properties = {}) { + const payload = { + event, + page_type: PAGE, + timestamp: new Date().toISOString(), + ...properties, + }; + window.dataLayer = window.dataLayer || []; + window.dataLayer.push(payload); + window.dispatchEvent(new CustomEvent("ovolabs:analytics", { detail: payload })); + } + + window.OvoLabsAnalytics = { + events: () => [...(window.dataLayer || [])], + clear: () => { + window.dataLayer = []; + }, + }; + + function activePage(name) { + if (name === "shop" && ["collection", "product"].includes(PAGE)) return true; + if (name === "testing" && ["testing", "lot-record"].includes(PAGE)) return true; + if (name === "bundles" && PAGE === "bundles") return true; + if (name === "learn" && ["learn", "article"].includes(PAGE)) return true; + if (name === "about" && ["about", "policy"].includes(PAGE)) return true; + return false; + } + + function header() { + const nav = [ + ["shop", "Shop", "catalog.html"], + ["bundles", "Bundles", "bundles.html"], + ["testing", "Testing & COAs", "testing.html"], + ["learn", "Learn", "notes.html"], + ]; + const categoryLinks = CATEGORIES.map( + (category) => + `${category.name}`, + ).join(""); + + return ` + +

    + Fictional concept storefront. Nothing here is real, stocked, or for sale. +
    + + `; + } + + function footer() { + return ` + + `; + } + + function drawers() { + return ` +
    + + +
    + `; + } + + function layout(main) { + root.innerHTML = `${header()}
    ${main}
    ${footer()}${drawers()}`; + } + + function productImage(product, eager = false) { + return ` + OVO Labs vial for ${escapeHtml(product.name)} + + `; + } + + function productCard(product, options = {}) { + const { eager = false } = options; + return ` +
    + + ${productImage(product, eager)} + +
    +

    ${escapeHtml(product.category)} ${stockBadge(product.slug)}

    +

    ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

    +

    ${escapeHtml(product.descriptor)}

    +
    + ${(() => { const record = testingFor(product.slug); return record + ? `${icons.check}${escapeHtml(record.purity[1])} purity` + : "Testing reported per lot"; })()} + View status +
    +
    +
    + ${money.format(product.price)} +
    + ${(() => { const a = availabilityFor(product.slug); return a.sellable + ? `` + : ``; })()} +
    +
    +
    + `; + } + + function categoryRail() { + return ` + + `; + } + + function bundleCard(bundle) { + const items = bundle.productSlugs.map((slug) => PRODUCTS.find((product) => product.slug === slug)); + return ` +
    +
    +
    + +
    +

    Catalog set${escapeHtml(bundle.code)}

    +

    ${escapeHtml(bundle.name)}

    +
    +
    +

    ${escapeHtml(bundle.descriptor)}

    + + ${(() => { + const a = availabilityFor(bundle.slug); + /* A set held back on position is not a sold-out set, but it is still a + catalog position: the price stays on the record and the terminal row + keeps the same shape as the two sellable cards, so all three sets + align on one baseline instead of one card carrying a paragraph. */ + const held = items.filter((product) => restrictionFor(product.slug)).map((product) => product.name); + return ` + `; + })()} +
    +
    + `; + } + + /* One derived component for the drawer and the cart page, so the two surfaces + can never disagree about how far an order sits from free shipping. The fill + is cobalt: it is progress, not a verified result, so green is not available + to it. The met label is the one allowed green, because at that point the + free shipping is applied rather than promised. */ + function shipProgressBar(subtotal, options = {}) { + const { link = false } = options; + const remaining = Math.max(0, FREE_SHIPPING_THRESHOLD - subtotal); + const met = remaining <= 0; + const percent = Math.min(100, Math.max(0, Math.round((subtotal / FREE_SHIPPING_THRESHOLD) * 100))); + const pending = `Add ${money.format(remaining)} for free standard shipping`; + return ` +
    +
    +
    +
    + ${met + ? `

    Free standard shipping applied.

    ` + : `

    ${link ? `${pending}` : pending}

    `} +
    + `; + } + + function newsletter() { + return ` +
    + +
    + `; + } + + function homePage() { + /* One featured entry for the whole page. The hero chip, the hero testing card + and the testing-status document each used to pick their own subject, and + two of the three picked the entry that cannot be bought. */ + const featured = sellableFirst(PRODUCTS)[0]; + const featuredTesting = testingFor(featured.slug); + return ` +
    +
    +
    +

    Peptide research catalog

    +

    Peptides, without the mystery.

    +

    A focused catalog with clear formats and a fast path from search to cart. Every entry names what was tested and what was not.

    + + ${(() => { + /* The proof card floated on the photograph at 200px wide, and the + phone breakpoint set it to display:none, so the one contrast + this catalog is built on was a sticker at 1440 and did not + exist at 390. It moves into the copy column and becomes a + record: subject and lot, the method beside each measured value, + and the unreported row inside the same table rather than in a + footnote. Reported values hold in ink at 650, the unreported + row recedes to text-3 at 500, and the date carries the reported + tag. That is the grammar the dark testing band already uses. */ + const record = featuredTesting; + if (!record) return ""; + return ` + + + ${escapeHtml(featured.name)} · Lot ${escapeHtml(record.lot)} + Reported ${escapeHtml(record.date)} + +
    + Purity + ${escapeHtml(record.purity[0])} + ${escapeHtml(record.purity[1])} +
    +
    + Content + ${escapeHtml(record.content[0])} + ${escapeHtml(record.content[1])} +
    +
    + Sterility + Not represented + Not reported +
    +
    `; + })()} +
    +
    + An OVO Labs amber peptide vial with a gold cap resting on a travertine ledge in warm window light +
    +
    +
    +
    +
    Catalog10 compounds, 8 sellable
    +
    FormatLyophilized, 5 to 20 mg
    +
    PurityEvery lot 98% or higher
    +
    LotNamed on every cart line
    +
    +
    +
    +
    +
    +

    Shop peptides

    +

    Start with the catalog.

    +
    + View all products ${icons.arrow} +
    +
    + ${sellableFirst(PRODUCTS) + .slice(0, 4) + .map((product, index) => productCard(product, { eager: index < 2 })) + .join("")} +
    +
    +
    +

    Shop by category

    +

    Browse the catalog your way.

    +
    +

    Use broad categories when you are exploring. Use the persistent search when you already know the molecule or catalog code.

    +
    + ${categoryRail()} +
    +
    +
    +
    +
    +

    Testing & COAs

    +

    See what is reported. See what is not.

    +

    Every product carries a testing status beside the decision. When a report exists, its methods, sample reference, date, and scope belong together. When it does not, the page says so.

    + Browse testing records +
    +
    +
    +
    + ${escapeHtml(featured.code)} · ${escapeHtml(featured.name)} + TESTING STATUS +
    + LOT ${escapeHtml(featuredTesting ? `${featuredTesting.lot} · ${featuredTesting.date}` : "not assigned")} +
    + ${testingFields(featured.slug).map((f) => ` +
    + ${escapeHtml(f.label)} + ${escapeHtml(f.method)} · ${escapeHtml(f.result)} +
    `).join("")} +
    +
    +
    +
    +
    +
    +
    +

    Curated paths

    +

    Reference sets

    +
    + Explore every set ${icons.arrow} +
    +
    ${sellableFirst(BUNDLES).map(bundleCard).join("")}
    +
    +
    +
    +
    +
    +
    +

    Read before comparing

    +

    Three useful buying lenses

    +
    + Open the learning center ${icons.arrow} +
    +
    + ${ARTICLES.map( + (article) => ` + + `, + ).join("")} +
    +
    +
    + `; + } + + function collectionPage() { + return ` +
    +
    +

    The full catalog

    +

    Find the exact peptide entry.

    +

    Filter by research area, search by molecule or product code, then compare strength, format, testing status, and price without leaving the grid.

    +
    +
    +
    +
    + +
    +
    + + + + +
    +

    ${PRODUCTS.length} catalog entries

    + +
    +
    +
    +
    +
    +
    +
    +
    +

    Not sure where to start?

    +

    Narrow the grid, then read the lot.

    +
    +

    The research-area buttons, the search field and the sort control above are the filters on this page. Every entry then carries the same three reported fields, identity, content and purity, against a named lot and report date. Sterility and endotoxin stay unreported on all ten. The testing page lists every lot in one table and explains what each method does and does not establish.

    +
    + Review testing & COAs ${icons.arrow} +
    +
    + `; + } + + function testingPage() { + return ` +
    +
    +

    Testing & COAs

    +

    Testing status belongs beside the product.

    +

    Search an OVO Labs product name or code to see the testing status for its current lot. Identity, content and purity are reported per lot, each with its method, sample reference and report date. Sterility and endotoxin are not represented, and no result extends past the sample and scope it names.

    +
    + + + +
    +
    +
    +
    +
    +
    +
    +

    The framework

    +

    Four fields. Four different questions.

    +

    A single number cannot answer identity, amount, composition, and microbiological questions at once.

    +
    +
    +
    +
    IdentityDoes the observed analytical profile match the intended compound?REPORTED PER LOT
    +
    Content / massHow much material is reported under the selected method?REPORTED PER LOT
    +
    Purity profileWhat relative composition is reported under the selected method?REPORTED PER LOT
    +
    Sterility / endotoxinWere separate microbiological methods represented?NOT REPRESENTED
    +
    +

    ${icons.shield}Third-party verified. Independent US laboratory.

    +

    Analysis performed by an independent contract laboratory in the United States. Methods, sample reference, lot and report date are shown per entry. OVO Labs does not perform its own release testing.

    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Read the document

    +

    What a COA can and cannot show

    +
    +
    + ${accordion([ + [ + "Does a purity result prove identity?", + "Not by itself. Identity and relative purity answer different questions and may require different analytical methods.", + ], + [ + "Does a reported result prove every vial is the same?", + "No. A result applies only to the identified sample and method scope. Sampling, chain of custody, and lot linkage remain separate questions.", + ], + [ + "Does a COA establish suitability for human use?", + "No. OVO Labs does not present human-use, safety, efficacy, clinical, administration, or preparation information.", + ], + [ + "Why show fields with no result?", + "Because a visible empty state is more informative than a badge that leaves the scope ambiguous. Identity, content and purity are reported per lot. Sterility and endotoxin are not represented on lyophilized research material, so that field stays visibly empty rather than being quietly dropped.", + ], + ])} +
    +
    +
    + `; + } + + function bundlesPage() { + return ` +
    +
    +

    Catalog bundles

    +

    Shop catalog bundles.

    +

    Related products grouped for simpler browsing and one cart action. Every item remains linked to its own product and testing page.

    +
    +
    +
    +
    +

    Catalog bundles

    +
    ${sellableFirst(BUNDLES).map(bundleCard).join("")}
    +
    +
    +
    +
    +
    +

    Why sets exist

    +

    Reduce search work without creating ambiguity.

    +

    Three sets exist. Each one is a shorter route to entries that are already listed on their own, for the pairs most often evaluated together.

    +

    See every individual entry ${icons.arrow}

    +
    +
    +

    Separate identities

    Every molecule keeps its own code, strength, product page, and testing state.

    +

    One cart action

    The set enters the cart as one clearly labeled item with its included products listed.

    +

    No false savings

    The set price is shown directly without fabricated list prices or countdown offers.

    +
    +
    +
    + `; + } + + function learnPage() { + return ` +
    +
    +

    Learning center

    +

    Read the facts behind the catalog.

    +

    Short guides for comparing peptide catalog entries, interpreting testing states, and understanding what a document’s scope does and does not establish.

    +
    +
    +
    +
    +
    + ${ARTICLES.map( + (article, index) => ` + + `, + ).join("")} +
    +
    +
    +
    +
    +
    +

    Fast answers

    +

    Catalog FAQ

    +
    +
    + ${accordion([ + ["Is OVO Labs a real company?", "No. It is a fictional, non-operational storefront concept. Nothing is stocked, sold, shipped, tested, or transacted."], + ["Why show concept prices?", "Prices make the ecommerce prototype complete enough to evaluate its hierarchy, cart states, sorting, and merchandising. They are not offers for sale."], + ["Why are there no ratings?", "No customers or reviews exist. Empty or invented social proof would make the interface less trustworthy, not more."], + ["Can I check out?", "Yes. Cart, contact, shipping, delivery method, payment review, and order confirmation all work end to end. The payment step is the one exception: no card is collected and no charge is possible."], + ])} +
    +
    +
    + `; + } + + function faqPage() { + return ` +
    +
    +

    Help & details

    +

    Questions, answered plainly.

    +

    What each lot reports, what “not represented” means, how browser storage works, and exactly where this fictional store stops.

    +
    +
    +
    +
    +
    +

    OVO Labs FAQ

    +

    The complete store boundary.

    +
    +
    + ${accordion([ + ["Can I place an order?", "You can complete the checkout and receive an order reference, which is recorded in this browser. Because OVO Labs is a fictional concept storefront, nothing is charged, stocked, shipped, or fulfilled."], + ["What does “not represented” mean?", "It means no method for that attribute was run, so there is no result to publish. On this catalog it applies to sterility and endotoxin on every entry. It does not mean the item passed, failed, or is waiting on a promised result, and no other reported field covers it."], + ["Does a COA prove a product is safe, effective, or sterile?", "No. A document supports only the measurements, sample, method, date, and scope it identifies. Unreported attributes should not be inferred."], + ["Where do the purity percentages come from?", `Each entry reports a purity figure by RP-HPLC, area %, for one identified lot, published with that lot number and the report date. Retatrutide reports ${testingFor("retatrutide").purity[1]} for lot ${testingFor("retatrutide").lot}, reported ${testingFor("retatrutide").date}. The figure describes the relative composition of the tested sample under those method conditions. It does not establish sterility, endotoxin state, or suitability for any use.`], + ["Does this catalog provide human-use information?", "No dosing, preparation, administration, safety, efficacy, medical, or human-use guidance is provided."], + ["Are the product descriptions medical advice?", "No. They identify proposed catalog references and formats only."], + ["How does search work?", "Search by peptide name, category, blend name, or catalog code such as OVO-001. Keyboard users can move through predictive results with the arrow keys."], + ["Why are there no customer reviews?", "There are no customers or order history. OVO Labs does not fabricate ratings, testimonials, or purchase activity."], + ["What information does this site store?", "Cart contents and recently viewed product codes can be stored locally in your browser. Nothing is transmitted to a company or server."], + ["How do I remove locally saved information?", "Use Clear cart in the cart drawer. You can also clear this site’s browser storage to remove all local state."], + ])} +
    +
    +
    +
    + +
    + `; + } + + function aboutPage() { + return ` +
    +
    +

    About OVO Labs

    +

    A peptide store designed around finding and deciding.

    +

    OVO Labs is designed around a simple idea: product information should be easy to scan, and missing evidence should be impossible to miss.

    +
    +
    +
    +
    +
    +

    The premise

    +

    Retail clarity can do more work than scientific theater.

    +
    +
    +

    The strongest specialist stores help people find the right entry quickly, compare it in place, and understand the next action. OVO Labs applies that discipline without inventing operations or proof.

    +
    +
    Catalog modelFocused selection, stable product codes, and flat product routes
    +
    Discovery modelPersistent search, visual category paths, filters, and related entries
    +
    Product modelIdentity, labeled amount, format, price, and testing status in one decision block
    +
    Proof modelOnly substantiated facts; no invented ratings, laboratories, results, or popularity
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Operating principles

    +

    What the brand refuses to fake

    +
    +
    +
    +

    No decorative proof

    An analytical figure appears only with its method, lot and report date attached. Ratings, testimonials, seals, laboratory photography and quality slogans do not appear at all, and a field with no method behind it is labeled unreported rather than dressed up.

    +

    No urgency machinery

    No stock countdown, sale timer, crossed-out anchor price, or invented best-seller ranking pushes the click.

    +

    No fake transaction

    The full purchase path is here to evaluate, from cart to order confirmation. Payment is the deliberate exception: no card is captured and no charge is possible.

    +
    +
    +
    +
    +
    +
    +

    Who we are

    +

    The entity behind the catalog, in full.

    +
    +
    +

    A store that will not name itself is asking for trust it has not offered. Every line below is fictional. Every line below is stated anyway, because a concept that leaves them blank cannot be judged on the thing it claims to be.

    +
    +
    Operating entityOVO Labs LLC, an Oregon limited liability company
    +
    Registered office1420 NW Marshall Street, Suite 300, Portland, Oregon 97209
    +
    FulfillmentOne facility in Portland. Packing, cold-chain assembly and logger sealing all happen there
    +
    Analytical workAn independent US contract laboratory. OVO Labs runs no release testing of its own and names the method, sample and date on every lot it reports
    +
    Supportsupport@ovolabs.example, Monday to Friday, 9:00 to 17:00 Pacific
    +
    ResponseFirst reply within one business day. Fulfillment cases get a written decision within three business days
    +
    Ships toUnited States only, street addresses only, from the Portland facility
    +
    +

    Read the fulfillment and resolution policy ${icons.arrow}

    +
    +
    +
    +
    +
    + +
    +
    + `; + } + + function policyPage() { + return ` +
    +
    +

    Concept boundaries

    +

    This storefront demonstrates an interface, not an operation.

    +

    OVO Labs has no company operations, products, inventory, customers, testing, fulfillment, payments, or ordering capability.

    +
    +
    +
    +

    What the prototype does

    +

    It demonstrates ecommerce information architecture: product discovery, category filtering, predictive search, product pages, testing-status presentation, a learning center, and a browser-local demo cart.

    +

    What the prototype does not do

    +
      +
    • It does not offer, sell, reserve, quote, or ship material.
    • +
    • It does not collect payment, customer accounts, addresses, or submitted email data.
    • +
    • It does not claim a named laboratory, an accreditation, a regulatory approval, a customer, a review, a rating, or a sales record.
    • +
    • The lots, analytical results, unit counts, prices and delivery windows shown are demonstration data for a fictional catalog, not records of material that exists.
    • +
    • It does not provide dosing, preparation, administration, clinical, therapeutic, safety, efficacy, or human-use information.
    • +
    +
    The cart is local. Its contents and any order reference are stored only in this browser. Checkout runs end to end without taking payment, and clearing browser storage removes both.
    +

    Fulfillment and resolution

    +

    This is the policy the concept operates under, so the checkout and the confirmation page can point at a stated position rather than an implied one.

    +
      +
    • Damaged or wrong on arrival: photograph the box, the mailer and the vial label within 72 hours and open a case with the order reference.
    • +
    • Wrong item or wrong labeled amount: replacement from the same or a later lot at no cost.
    • +
    • Broken vial in transit: replacement at no cost.
    • +
    • Cold-chain logger above range: replaced regardless of vial condition.
    • +
    • Unopened vials: returnable within 14 days, refunded to the original method less outbound shipping.
    • +
    • Opened vials: not returnable, because a returned vial cannot be re-verified.
    • +
    +

    How a case is opened

    +

    One route and one thread: email the support mailbox with the order reference in the subject line. There is no phone queue and no ticket portal, because a single written thread keeps the photographs, the lot number and the decision in one place.

    +

    Email support@ovolabs.example

    +

    Send with the first message:

    +
      +
    • The order reference and the catalog code.
    • +
    • The lot number printed on the vial label, which is what the claim is checked against.
    • +
    • Photographs of the outer box, the inside of the mailer, the vial, and the temperature logger if one shipped.
    • +
    +

    What happens next:

    +
      +
    • Acknowledgement within one business day, naming anything still missing from the case.
    • +
    • A written decision within three business days of a complete case, with the reason stated.
    • +
    • Approved replacements ship on the next fulfillment day by the delivery method originally paid for, at no cost, with the new lot number quoted before dispatch.
    • +
    • Approved returns get a prepaid label and a return reference. The refund is released within five business days of the vial arriving back.
    • +
    +

    After 72 hours, or without the lot number, a case can still be read but cannot be settled as a transit claim, because the carrier record has closed and the condition on arrival can no longer be established.

    +
    None of this can be exercised. Nothing is picked, packed or shipped here, so no case can arise and the mailbox above is fictional. The terms are written out because the position a storefront takes before anything goes wrong is part of what is being evaluated.
    +

    Why the banner stays visible

    +

    The thin top notice keeps the concept status clear on every route while allowing the rest of the prototype to be evaluated as a real ecommerce design.

    +

    Return to the concept catalog ${icons.arrow}

    +
    + `; + } + + /* eligibility.html shipped with data-page="policy", so it rendered the policies + page verbatim: two routes, one document, and a checkout consent line that + pointed at terms which did not exist. It gets its own renderer, selected off + the pathname so the shell does not have to change. */ + function eligibilityPage() { + return ` +
    +
    +

    Eligibility

    +

    Who this catalog is offered to.

    +

    OVO Labs presents research material for laboratory and research settings only. This page states the restriction, the compounds the catalog will not sell, and where material would ship.

    +
    +
    +
    +

    Who may order

    +

    Material is offered to laboratory and research settings, and to the people who work in them, for in vitro and research use. Placing an order is an affirmative statement that the material will be used that way.

    +

    Not for human or veterinary use

    +

    Nothing in this catalog is a drug, a supplement, a food, a cosmetic, or a medical device. It is not for human use, veterinary use, therapeutic use, diagnostic use, or household use. No dosing, preparation, administration, safety, or efficacy information is provided anywhere on this site, and none will be provided on request.

    +
    The consent at checkout is the same statement. Confirming it is confirming that the order is for laboratory research use only.
    +

    What the catalog will not sell

    +

    Two entries stay listed and cannot be ordered:

    +
      + ${Object.keys(RESTRICTED) + .map((slug) => { + const product = PRODUCTS.find((entry) => entry.slug === slug); + return product + ? `
    • ${escapeHtml(product.name)}: ${escapeHtml(restrictionFor(slug))}
    • ` + : ""; + }) + .join("")} +
    +

    They are kept in the catalog rather than deleted, so the position is visible instead of silent.

    +

    Where it would ship

    +

    The concept ships within the United States only, to a street address rather than a mailbox service, from a single US fulfillment center. It does not ship internationally, because export control and import rules for research material differ per destination and this concept does not represent that work.

    +

    What this page is not

    +

    OVO Labs is a fictional concept storefront. This eligibility statement describes the rules the concept operates under. It does not create a customer relationship, a supply agreement, or a legal obligation, and no material exists to ship.

    +

    Read the site policies ${icons.arrow}

    +
    + `; + } + + function productPage(product) { + if (!product) return notFoundPage(); + const related = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey === product.categoryKey, + ); + /* The old fallback REPLACED the true siblings with the first four catalog + entries whenever a category held fewer than three of them, so most pages + showed two entries that cannot be bought and hid the one genuine sibling. + Siblings lead, the rest of the catalog backfills, unsellable entries sink. */ + const relatedRail = sellableFirst([ + ...related, + ...PRODUCTS.filter((candidate) => candidate.slug !== product.slug && !related.includes(candidate)), + ]).slice(0, 4); + + return ` +
    + +
    + +
    +

    ${escapeHtml(product.category)}

    +

    ${escapeHtml(product.name)}

    + ${escapeHtml(product.code)} · ${escapeHtml(product.format)} + + ${testingFor(product.slug) + ? `Identity, content and purity reported · lot ${escapeHtml(testingFor(product.slug).lot)}` + : "Testing status: no result reported"} + +

    ${escapeHtml(product.overview)}

    +
    + ${money.format(product.price)} +
    +

    Strength${escapeHtml(product.strength)}

    + ${(() => { + const stock = availabilityFor(product.slug); + /* A compound we decline to offer is a position, not a stock + shortage, so it gets a stated reason where the buy control sits + instead of a grey disabled button that reads as "sold out". */ + if (stock.restricted) { + return ` +
    + Not offered +

    ${escapeHtml(restrictionFor(product.slug))}

    +
    + Browse entries you can order ${icons.arrow}`; + } + const ceiling = Math.max(1, Math.min(MAX_QUANTITY, stock.units)); + return ` +
    +
    + + + + +
    + ${stock.sellable + ? `` + : ``} +
    + ${stock.sellable && ceiling < MAX_QUANTITY + ? `

    Maximum ${ceiling} per order at current stock.

    ` + : ""} +
      + ${[ + /* The restricted path returns above this list, so the old + `restricted ? [...] : [...]` fork could never take its first + branch: three marks were written for the not-offered entry and + zero of them ever rendered. The dead branch is removed rather + than left implying a state this list can reach. */ + testingFor(product.slug) ? `${testingFor(product.slug).purity[1]} purity` : "Purity reported", + "Third-party tested", + "Cold chain ready", + "Free over " + money.format(FREE_SHIPPING_THRESHOLD), + ].map((label) => `
    • ${icons.check}${escapeHtml(label)}
    • `).join("")} +
    `; + })()} + +
    +
    ${escapeHtml(availabilityFor(product.slug).label)}Availability
    +
    ${testingFor(product.slug) ? `Lot ${escapeHtml(testingFor(product.slug).lot)}` : "No lot on file"}${testingFor(product.slug) ? `Reported ${escapeHtml(testingFor(product.slug).date)}` : "No result reported"}
    +
    +

    ${availabilityFor(product.slug).restricted + ? "Nothing on this page can be added to a cart." + : "Adds this item to a browser-only cart. No order, payment, or shipment is created."}

    +
    +
    +
    +
    +
    +
    +

    Product facts

    +

    The comparison fields, up front.

    +
    +
    +
    Product name${escapeHtml(product.name)}
    +
    Catalog code${escapeHtml(product.code)}
    +
    Research area${escapeHtml(product.category)}
    +
    Labeled amount${escapeHtml(product.strength)}
    +
    Format${escapeHtml(product.format)}
    +
    Analytical state${testingFor(product.slug) ? `Identity, content, purity reported · lot ${escapeHtml(testingFor(product.slug).lot)}` : "No result reported"}
    +
    +
    +
    +
    +
    +
    +

    Testing status

    +

    Every missing result stays visible.

    +
    +
    + ${(() => { + const record = testingFor(product.slug); + return record + ? `
    +

    Lot ${escapeHtml(record.lot)} · sample ${escapeHtml(sampleReference(record.lot))} · reported ${escapeHtml(record.date)}

    +

    Open the full record for this lot ${icons.arrow}

    +
    ` + : ""; + })()} +
    + ${testingFields(product.slug).map((f) => ` +
    + ${escapeHtml(f.label)} + ${escapeHtml(f.method)} + ${f.reported ? escapeHtml(f.result) : "NOT REPORTED"} +
    `).join("")} +
    +

    Not represented. Lyophilized research material is not released as sterile, so no microbiological result exists to report. Do not infer sterility from the purity figure above.

    +

    Analysis performed by an independent contract laboratory in the United States. Methods, sample reference, lot and report date are shown per entry. OVO Labs does not perform its own release testing.

    +
    +
    +
    +
    +
    +
    +

    Storage and handling

    +

    What to do when the box arrives.

    +
    +
    +

    Lyophilized peptide is a dry solid. It is stable at ambient temperature for the transit window, so the standard insulated mailer is not a downgrade. Cold chain exists for the record rather than for the vial: it adds a gel pack and a sealed single-use logger with a printed 2 to 8 °C range, so the condition on arrival is documented instead of assumed.

    +

    Read the logger before opening the mailer. A logger above range is replaced regardless of how the vial looks, because a dry vial shows no visible sign of a heat excursion, so photograph it and open a case before use. Store unopened vials at 2 to 8 °C, upright, in the carton and away from light. The ambient tolerance covers days in transit, not months on a shelf.

    +

    Read the fulfillment and resolution policy ${icons.arrow}

    +
    +
    +
    +
    +
    +
    +

    Product questions

    +

    Know what this page means.

    +
    +
    + ${(() => { + /* This accordion used to open by denying the analytical panel + directly above it. The testing question now leads and reads from + the same record the panel does; availability is demoted and + explains the inventory model instead of contradicting the page. */ + const record = testingFor(product.slug); + const stock = availabilityFor(product.slug); + return accordion([ + [ + "Has this entry been tested?", + record + ? `Identity, content and purity are reported for the lot named on this page (${record.lot}, reported ${record.date}) using the methods in the analytical panel. Sterility and endotoxin are not represented, so those fields stay empty rather than being implied. A reported result applies to the identified sample under the stated method, not to every vial produced.` + : "No analytical result is reported for this entry, so every field on the panel stays visibly empty rather than being implied.", + ], + [ + "Is this entry available?", + stock.restricted + ? restrictionFor(product.slug) + : stock.sellable + ? `Stock is held per catalog entry and the buy box shows the current count. ${stock.units <= LOW_STOCK_AT ? `Only ${stock.units} remain, so the quantity control is capped at what exists.` : "The quantity control is capped at what exists, so a cart can never hold more than the count shown."}` + : "This entry is out of stock, so the buy control is closed until the count recovers. Nothing on this page reserves or backorders material.", + ], + ["What does the listed price mean?", "It lets the storefront demonstrate sorting, merchandising, cart totals, and product hierarchy. It is not an offer or quote."], + ["Where is administration information?", "It is intentionally absent. OVO Labs does not provide dosing, preparation, administration, human-use, safety, efficacy, or outcome information."], + ]); + })()} +
    +
    +
    +
    +
    +
    +
    +

    Keep comparing

    +

    Related catalog entries

    +
    + View the full catalog ${icons.arrow} +
    +
    ${relatedRail.map((item) => productCard(item)).join("")}
    +
    +
    + ${availabilityFor(product.slug).sellable + ? `` + : ""} + `; + } + + function articlePage(slug) { + const content = { + "reading-testing-status": { + eyebrow: "Testing guide · 4 minutes", + title: "How to read a testing status", + lede: "Start with the question the method is meant to answer. Then check whether a result is actually reported.", + sections: [ + ["A specification is not a result", "A specification describes an intended target or acceptance rule. A result describes what was observed for an identified sample under a stated method. One should never be styled as the other."], + ["Identity, amount, and composition are separate", "An identity method asks whether the observed profile matches the intended compound. A content or mass method asks how much is reported. A purity method describes relative composition under its method conditions. None automatically answers the others."], + ["“Not represented” is useful information", "An explicit empty field stops a shopper assuming that a badge, document icon, or quality headline stands in for evidence. Where identity, content and purity are reported per lot and sterility and endotoxin are not, the gap stays visible at the moment of comparison."], + ], + }, + "choosing-by-molecule": { + eyebrow: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + lede: "A clean catalog starts with product identity, then narrows by strength, format, code, and evidence state.", + sections: [ + ["Start with the exact entry", "Separate compounds should have separate product pages. A selector is useful for genuine strengths of the same item, not for hiding unrelated molecules inside one high-traffic page."], + ["Compare the same fields every time", "Product name, code, strength, format, price concept, and testing status should appear in predictable positions. Consistency turns a grid into a comparison tool."], + ["Use categories as a shortcut", "Research-area categories help exploration, while exact-name and product-code search help returning or expert shoppers. Both paths should reach the same canonical product page."], + ], + }, + "coa-boundaries": { + eyebrow: "Document guide · 5 minutes", + title: "What a COA can and cannot show", + lede: "The value of a certificate depends on the identified sample, the method, the result, and the scope. The title alone proves very little.", + sections: [ + ["Read the scope before the number", "A reported purity figure does not automatically establish identity, total content, sterility, endotoxin state, stability, or suitability for a particular use."], + ["Check the sample link", "A result is only useful when the document identifies the tested sample and the catalog can explain how that sample relates to the represented item."], + ["Do not fill gaps with design", "A green badge, seal, laboratory photograph, or download icon cannot replace a reported result. If a field is missing, the interface should say so directly."], + ], + }, + }[slug]; + + if (!content) return notFoundPage(); + return ` +
    +

    ${escapeHtml(content.eyebrow)}

    +

    ${escapeHtml(content.title)}

    +

    ${escapeHtml(content.lede)}

    +
    This guide describes document and catalog structure. It does not provide medical, clinical, preparation, administration, or human-use information.
    + ${content.sections + .map(([heading, copy]) => `

    ${escapeHtml(heading)}

    ${escapeHtml(copy)}

    `) + .join("")} +

    Continue through the store

    +

    Use the testing page to inspect current concept states, or return to the catalog to compare entries using the same fields.

    +

    + Explore testing & COAs + Browse products +

    +
    +
    +
    +

    More from OVO Labs

    Related guides

    +
    + ${ARTICLES.filter((article) => article.slug !== slug) + .map( + (article) => ``, + ) + .join("")} +
    +
    +
    + `; + } + + /* Every product page promises a lot COA before dispatch, and until now the + document was asserted and never produced, which is the one place the site's + evidence claim was pure assertion. This is the document. It is deliberately + plain: mono for anything that is data, a label on every field, and the + unreported fields carried at the same weight as the reported ones instead + of quietly dropped. No badges, no status colour, no persuasion. */ + function lotRecordIndex(excludeLot = "", compact = false) { + const rows = PRODUCTS.filter((product) => testingFor(product.slug)) + .filter((product) => testingFor(product.slug).lot !== excludeLot) + .map((product) => { + const record = testingFor(product.slug); + return ` + + ${escapeHtml(record.lot)} + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)} + ${escapeHtml(product.code)} + Reported ${escapeHtml(record.date)} + + `; + }) + .join(""); + return `
    ${rows}
    `; + } + + function lotRecordPage() { + const requested = (new URLSearchParams(window.location.search).get("lot") || "").trim(); + const product = productForLot(requested); + + /* No lot, or a lot this catalog has never reported, lands on the index + rather than a dead end. A record set is browsable by definition. */ + if (!product) { + track("lot_record_index", { requested_lot: requested }); + return ` + +
    +
    +

    Lot records

    +

    ${requested ? `No record for lot ${escapeHtml(requested)}.` : "Lot records"}

    +

    ${requested + ? "That lot number is not in this catalog's record set. Every lot currently reported is listed below." + : "One record per reported lot. Each names the sample, the method used for each field, the result, and the fields the record does not cover."}

    +
    +
    +
    +
    + ${lotRecordIndex()} +

    Analysis performed by an independent contract laboratory in the United States. OVO Labs does not perform its own release testing. No record on this site represents sterility or endotoxin.

    +
    +
    + `; + } + + const record = testingFor(product.slug); + const fields = testingFields(product.slug); + const reported = fields.filter((field) => field.reported); + const omitted = fields.filter((field) => !field.reported); + const sample = sampleReference(record.lot); + + track("lot_record_view", { lot: record.lot, product_code: product.code }); + + const headerFields = [ + ["Catalog entry", `${product.name} · ${product.strength}`], + ["Catalog code", product.code], + ["Lot number", record.lot], + ["Sample reference", sample], + ["Report date", record.date], + ["Material as received", product.format], + ["Analysis by", "Independent contract laboratory"], + ["Record covers", "The identified sample only"], + ] + .map(([label, value]) => `
    ${escapeHtml(label)}
    ${escapeHtml(value)}
    `) + .join(""); + + const methodRows = (rows, isOmitted = false) => + rows + .map( + (field) => ` +
    + ${escapeHtml(field.label)} + ${escapeHtml(isOmitted ? "No method performed" : field.method)} + ${escapeHtml(isOmitted ? "No result exists to report" : field.result)} +
    + `, + ) + .join(""); + + return ` + +
    +
    +

    Lot record

    +

    Lot ${escapeHtml(record.lot)}

    +

    The analytical record behind ${escapeHtml(product.name)} ${escapeHtml(product.strength)}. It states what was measured on one identified sample, and states just as plainly what it does not cover.

    +
    +
    +
    +
    +
    +
    +
    +

    Analytical record

    +

    ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

    +
    +

    ${escapeHtml(product.code)} / ${escapeHtml(record.lot)}

    +
    +
    ${headerFields}
    +
    +

    Methods and results

    +
    ${methodRows(reported)}
    +

    Each result applies to sample ${escapeHtml(sample)} under the method named beside it. Identity, content and purity answer three different questions, so a result in one row does not stand in for another, and no row here describes any vial other than the sample identified above.

    +
    +
    +

    Not represented by this record

    +
    ${methodRows(omitted, true)}
    +

    Lyophilized research material is not released as sterile, and no microbiological or endotoxin method was performed on this sample, so there is no result to report and none is implied. Do not read the purity figure above as a sterility statement. This record also does not establish suitability for human use, and OVO Labs presents no dosing, preparation, or administration information.

    +
    +
    +

    Analysis performed by an independent contract laboratory in the United States. OVO Labs does not perform its own release testing.

    +

    Record issued ${escapeHtml(record.date)}. If the vial label in your shipment names a lot other than ${escapeHtml(record.lot)}, photograph it and open a case before use.

    +
    +
    + +
    +
    + `; + } + + function notFoundPage() { + return ` +
    +
    +

    404 · Page not found

    +

    This catalog path does not exist.

    +

    Search for a molecule, return to the product grid, or use one of the main research-area categories.

    + +
    +
    +
    +
    +
    +
    +

    Recover

    +

    Pick up from a known path.

    +
    +

    Four research areas, and four catalog entries to start from. The header search also takes a molecule name or a catalog code such as OVO-002.

    +
    +
    ${categoryRail()}
    +

    Catalog entries

    +
    ${sellableFirst(PRODUCTS).slice(0, 4).map((product) => productCard(product)).join("")}
    +
    +
    + `; + } + + function cartPage() { + const breakdown = priceBreakdown(readCheckoutDraft()); + + if (cart.length === 0) { + return ` +
    +
    +

    Cart

    +

    Your cart is empty.

    +

    Add a compound or a defined blend from the catalog and it will appear here.

    + +
    +
    +
    +
    +
    +
    +

    Start here

    +

    Start with the catalog.

    +
    + View all products ${icons.arrow} +
    +
    ${sellableFirst(PRODUCTS).slice(0, 4).map((product) => productCard(product)).join("")}
    +
    +
    + `; + } + + const rows = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + + ${escapeHtml(item.name)} + +
    +
    +
    +

    ${escapeHtml(item.name)}

    +

    ${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

    + ${(() => { + /* The lot is what a buyer can check the delivered vial label + against, so it rides the line from here to the receipt + instead of living only on the product page. */ + const lots = lotTraceRows(item.slug); + return lots.length ? `

    ${lots.join("")}

    ` : ""; + })()} +
    + ${money.format(item.price * line.quantity)} +
    +

    ${(() => { const a = availabilityFor(item.slug); return a.sellable + ? ` ${escapeHtml(a.label)} · ships from the US fulfillment center` + : ` ${escapeHtml(a.label)} · remove to continue`; })()}

    +
    +
    + + ${line.quantity} + +
    + ${money.format(item.price)} each + +
    + ${cartLineAtCap(line) + ? `

    Maximum ${cartLineCeiling(line.slug)} per order at current stock.

    ` + : ""} +
    +
    + `; + }) + .join(""); + + /* Both this bar and the summary shipping line derive from the same + threshold, so they can never contradict each other on screen. */ + const freeShipBar = shipProgressBar(breakdown.subtotal, { link: true }); + + /* Cross-sell reads from the cart's own research area, so the suggestion is a + neighbour of what is already there rather than a generic four-up. Only + entries that can actually be bought are eligible. */ + const cartCategories = new Set( + cart + .map((line) => cartItemData(line.slug)) + .filter(Boolean) + .map((item) => item.categoryKey) + .filter(Boolean), + ); + const inCart = new Set(cart.map((line) => line.slug)); + const eligible = PRODUCTS.filter((entry) => !inCart.has(entry.slug) && availabilityFor(entry.slug).sellable); + const pairsWith = [ + ...eligible.filter((entry) => cartCategories.has(entry.categoryKey)), + ...eligible.filter((entry) => !cartCategories.has(entry.categoryKey)), + ].slice(0, 3); + + return ` +
    +
    +

    Cart

    +

    Your cart

    +
    +
    +
    +
    +
    + ${(() => { + /* "No longer available" and "we only have four of these" are not the + same problem and do not have the same fix, so the notice names + which lines are which instead of collapsing both into one word. */ + const issues = cart.map((line) => cartLineIssue(line)).filter(Boolean); + if (!issues.length) return ""; + const unsellable = issues.filter((issue) => issue.type !== "partial"); + const partial = issues.filter((issue) => issue.type === "partial"); + const parts = []; + if (unsellable.length) { + parts.push( + `${unsellable.map((issue) => escapeHtml(issue.name)).join(", ")} cannot be sold. Remove ${unsellable.length === 1 ? "it" : "them"} to continue to checkout.`, + ); + } + partial.forEach((issue) => { + parts.push(`Only ${issue.units} of ${escapeHtml(issue.name)} available. Lower the quantity to continue.`); + }); + return `
    ${issues.length === 1 ? "One line needs attention" : `${issues.length} lines need attention`} before checkout.${parts.join("")}
    `; + })()} + ${freeShipBar} +
    ${rows}
    +
    + Continue shopping + +
    + ${pairsWith.length + ? `
    +

    Pairs with your cart

    +
    ${pairsWith.map((entry) => productCard(entry)).join("")}
    +
    ` + : ""} +
    +
    + ${orderSummaryPanel(breakdown, { + showItems: false, + cta: blockedCartLines().length + ? `Remove unavailable items` + : `Checkout · ${money.format(breakdown.total)}`, + })} +
    + +
    + + +
    +

    Try

    +

    ${breakdown.promo ? `Applied: ${escapeHtml(breakdown.promo.label)}` : ""}

    +
    +
    +
    +
    + `; + } + + function checkoutField(id, label, options = {}) { + const { type = "text", autocomplete = "", placeholder = "", required = true, width = "full", value = "", inputmode = "", note = "" } = options; + return ` +
    + + + ${note ? `

    ${escapeHtml(note)}

    ` : ""} +

    +
    + `; + } + + /* Digits are what a carrier needs; the punctuation is only for reading it back + to the person who typed it, so it is applied at display time and never + stored. */ + function formatPhone(value) { + const digits = String(value || "").replace(/\D/g, ""); + if (digits.length === 10) return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`; + if (digits.length === 11 && digits.startsWith("1")) return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`; + return String(value || ""); + } + + function checkoutPage() { + const blocked = blockedCartLines(); + if (blocked.length) { + return ` +
    +
    +

    Checkout

    +

    ${blocked.length === 1 ? "An item in your cart is" : "Items in your cart are"} no longer available.

    +

    ${blocked.map((line) => escapeHtml(cartItemData(line.slug) ? cartItemData(line.slug).name : line.slug)).join(", ")} cannot be sold. Remove ${blocked.length === 1 ? "it" : "them"} from your cart to continue.

    + +
    +
    + `; + } + if (cart.length === 0) { + return ` +
    +
    +

    Checkout

    +

    There is nothing to check out.

    +

    Your cart is empty, so there is no order to complete.

    + +
    +
    + `; + } + + const draft = readCheckoutDraft(); + const breakdown = priceBreakdown(draft); + + /* A completed step is a place you can go back to. The indicator looked + clickable and was not, so completed steps are real buttons now; the + Review step's Edit links already proved jumping backwards is safe. */ + const steps = CHECKOUT_STEPS.map( + (step, index) => ` +
  • + +
  • + `, + ).join(""); + + const deliveryOptions = SHIPPING_METHODS.map((method) => { + const free = breakdown.subtotal >= FREE_SHIPPING_THRESHOLD && method.id === "standard"; + return ` + + `; + }).join(""); + + return ` +
    +
    +

    Checkout

    +

    Complete your order

    +
      ${steps}
    +
    +
    +
    +
    +
    + +
    + 1 Contact +

    Order confirmation and tracking are sent here.

    +
    + ${checkoutField("email", "Email address", { type: "email", autocomplete: "email", placeholder: "you@company.com", width: "half", value: draft.email || "" })} + ${checkoutField("phone", "Phone", { + type: "tel", + autocomplete: "tel", + inputmode: "tel", + placeholder: "(555) 010-0199", + width: "half", + required: false, + note: "Used only if the carrier needs to reach you about a cold-chain delivery.", + value: draft.phone || "", + })} +
    +
    + Back to cart + +
    +
    + + + + + + + + + +
    +
    +
    ${orderSummaryPanel(breakdown)}
    +
    + Have a discount code? +
    + +
    + + +
    +

    ${breakdown.promo ? `Applied: ${escapeHtml(breakdown.promo.label)}` : ""}

    +
    +
    +
    +
    +
    + `; + } + + function confirmationPage() { + const orders = readOrders(); + const order = orders[0]; + + if (!order) { + return ` +
    +
    +

    Order

    +

    No recent order found.

    +

    Orders are recorded in this browser. If you cleared your storage, the reference is gone.

    + +
    +
    + `; + } + + /* The receipt carries the lot it was ordered against, and the name links + back to that record, so the vial in the box can be checked against + something rather than trusted. */ + const lines = order.items + .map( + (line) => ` +
    + ${escapeHtml(line.name)} +
    + ${escapeHtml(line.name)} + ${escapeHtml(line.code)} · ${escapeHtml(line.strength)} · Qty ${line.quantity} + ${(() => { + /* Orders placed before lots were recorded still render: the line + falls back to its single stored lot, and shows nothing at all + if it never carried one. */ + const lots = Array.isArray(line.lots) && line.lots.length + ? line.lots + : line.lot + ? [{ name: line.name, lot: line.lot, date: line.lotDate || "" }] + : []; + return lots + .map( + (entry) => + `${lots.length > 1 ? `${escapeHtml(entry.name)} · ` : ""}Lot ${escapeHtml(entry.lot)} · reported ${escapeHtml(entry.date || "")} · record`, + ) + .join(""); + })()} +
    + ${money.format(line.price * line.quantity)} +
    + `, + ) + .join(""); + + /* The receipt's primary action is the record for the lot that was actually + shipped against, so the document the site keeps promising is one click + from the order rather than a search away. */ + const orderLots = order.items.flatMap((line) => + Array.isArray(line.lots) && line.lots.length + ? line.lots + : line.lot + ? [{ name: line.name, lot: line.lot, date: line.lotDate || "" }] + : [], + ); + const firstLot = orderLots.length ? orderLots[0].lot : ""; + + const rows = [ + ["Subtotal", money.format(order.totals.subtotal)], + ...(order.totals.discount > 0 ? [["Discount", `-${money.format(order.totals.discount)}`]] : []), + [`Shipping · ${escapeHtml(order.shippingMethodName)}`, order.totals.shipping === 0 ? "Free" : money.format(order.totals.shipping)], + ["Tax", money.format(order.totals.tax)], + ] + .map(([l, v]) => `
    ${l}${v}
    `) + .join(""); + + return ` +
    +
    +

    Order ${escapeHtml(order.reference)}

    +

    Thank you, ${escapeHtml(order.firstName)}.

    +

    Your order is recorded. A confirmation would be sent to ${escapeHtml(order.email)}.

    +
    +
    +
    +
    +
    +
      +
    1. Order placed${escapeHtml(order.placedLabel)}
    2. +
    3. PreparingWithin 1 business day
    4. +
    5. Shipped${escapeHtml(order.shippingMethodDetail)}
    6. +
    7. DeliveredEstimated ${escapeHtml(order.etaLabel)}
    8. +
    + +
    +
    +

    Shipping to

    +

    ${escapeHtml(order.firstName)} ${escapeHtml(order.lastName)}
    + ${escapeHtml(order.address1)}${order.address2 ? `
    ${escapeHtml(order.address2)}` : ""}
    + ${escapeHtml(order.city)}, ${escapeHtml(order.state)} ${escapeHtml(order.zip)}

    +
    +
    +

    Delivery method

    +

    ${escapeHtml(order.shippingMethodName)}
    ${escapeHtml(order.shippingMethodDetail)}

    +
    +
    +

    Payment

    +

    Not collected.
    No charge was made for this order.

    +
    +
    +

    Contact

    +

    ${escapeHtml(order.email)}${order.phone ? `
    ${escapeHtml(formatPhone(order.phone))}` : "
    No phone provided"}

    +
    +
    +

    If something is wrong

    +

    Photograph the box, mailer, vial label and logger within 72 hours, then email support@ovolabs.example with ${escapeHtml(order.reference)} in the subject line. Acknowledgement within one business day.
    Fulfillment and resolution policy

    +
    +
    +
    + + +
    +
    + `; + } + + function accordion(items) { + const instance = ++accordion.counter; + return ` +
    + ${items + .map( + ([question, answer], index) => ` +
    + +
    + ${escapeHtml(answer)} +
    +
    + `, + ) + .join("")} +
    + `; + } + accordion.counter = 0; + + function renderPage() { + const pages = { + home: homePage, + collection: collectionPage, + testing: testingPage, + bundles: bundlesPage, + learn: learnPage, + faq: faqPage, + about: aboutPage, + policy: () => (/eligibility(\.html)?$/.test(window.location.pathname) ? eligibilityPage() : policyPage()), + product: () => productPage(PRODUCTS.find((product) => product.slug === PRODUCT_SLUG)), + article: () => articlePage(body.dataset.article || ""), + cart: cartPage, + checkout: checkoutPage, + confirmation: confirmationPage, + "lot-record": lotRecordPage, + 404: notFoundPage, + }; + /* The lot record is addressed by query string and linked from product + pages, cart lines and receipts, so it also renders from its own path. + That keeps the link honest even if the shell's data-page is not set. */ + const renderer = /lot-record(\.html)?$/.test(window.location.pathname) + ? lotRecordPage + : pages[PAGE] || notFoundPage; + layout(renderer()); + } + + function readCart() { + try { + const parsed = JSON.parse(localStorage.getItem(CART_KEY) || "[]"); + if (!Array.isArray(parsed)) return []; + return parsed + .filter((item) => ALL_CART_ITEMS.some((candidate) => candidate.slug === item.slug)) + .map((item) => { + const requested = Math.max(1, Number.parseInt(item.quantity, 10) || 1); + /* A cart can sit in storage for weeks. Stock is re-checked on read so a + stale saved quantity can never walk into checkout above what exists. + Unsellable lines keep their quantity: they are surfaced and removed + by the blocked notice rather than silently rewritten. */ + const units = availabilityFor(item.slug).units; + const ceiling = units > 0 ? Math.min(MAX_QUANTITY, units) : MAX_QUANTITY; + return { slug: item.slug, quantity: Math.max(1, Math.min(requested, ceiling)) }; + }); + } catch { + return []; + } + } + + let cart = readCart(); + let lastFocusedElement = null; + let toastTimer = null; + + function saveCart() { + localStorage.setItem(CART_KEY, JSON.stringify(cart)); + renderCart(); + } + + function cartItemData(slug) { + return ALL_CART_ITEMS.find((item) => item.slug === slug); + } + + function cartTotal() { + return cart.reduce((total, line) => { + const item = cartItemData(line.slug); + return total + (item ? item.price * line.quantity : 0); + }, 0); + } + + function cartCount() { + return cart.reduce((total, line) => total + line.quantity, 0); + } + + function readCheckoutDraft() { + try { + const parsed = JSON.parse(localStorage.getItem(CHECKOUT_KEY) || "{}"); + return parsed && typeof parsed === "object" ? parsed : {}; + } catch (error) { + return {}; + } + } + + function writeCheckoutDraft(draft) { + try { + localStorage.setItem(CHECKOUT_KEY, JSON.stringify(draft)); + } catch (error) { + /* storage unavailable; the draft simply does not persist */ + } + } + + function readOrders() { + try { + const parsed = JSON.parse(localStorage.getItem(ORDER_KEY) || "[]"); + return Array.isArray(parsed) ? parsed : []; + } catch (error) { + return []; + } + } + + function shippingMethod(id) { + return SHIPPING_METHODS.find((method) => method.id === id) || SHIPPING_METHODS[0]; + } + + /* Single source of truth for money. The cart page, every checkout step, the + review table and the confirmation receipt all read from this, so a number + can never disagree with itself between screens. */ + function priceBreakdown(draft = {}) { + const subtotal = cartTotal(); + const method = shippingMethod(draft.shippingMethod); + const promo = PROMO_CODES[(draft.promo || "").toUpperCase()] || null; + + let discount = 0; + if (promo && promo.type === "percent") discount = Math.round(subtotal * (promo.value / 100)); + + const discounted = Math.max(0, subtotal - discount); + let shipping = method.price; + if (subtotal >= FREE_SHIPPING_THRESHOLD && method.id === "standard") shipping = 0; + if (promo && promo.type === "shipping") shipping = Math.max(0, Math.round(shipping * (1 - promo.value / 100))); + + const tax = Math.round(discounted * TAX_RATE); + return { + subtotal, + discount, + shipping, + tax, + total: discounted + shipping + tax, + promo, + method, + freeShippingRemaining: Math.max(0, FREE_SHIPPING_THRESHOLD - subtotal), + }; + } + + function summaryRows(breakdown) { + const rows = [[`Subtotal (${cartCount()} ${cartCount() === 1 ? "item" : "items"})`, money.format(breakdown.subtotal), ""]]; + if (breakdown.discount > 0) { + rows.push([`Discount · ${escapeHtml(breakdown.promo.label)}`, `-${money.format(breakdown.discount)}`, "is-credit"]); + } + rows.push([`Shipping · ${escapeHtml(breakdown.method.name)}`, breakdown.shipping === 0 ? "Free" : money.format(breakdown.shipping), ""]); + rows.push(["Estimated tax", money.format(breakdown.tax), ""]); + return rows + .map(([label, value, cls]) => `
    ${label}${value}
    `) + .join(""); + } + + function orderSummaryPanel(breakdown, options = {}) { + const { showItems = true } = options; + const items = showItems + ? cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + +
    + ${escapeHtml(item.name)} + ${escapeHtml(item.code)} · ${escapeHtml(item.strength)} · Qty ${line.quantity} + ${lotTraceRows(item.slug, { link: false }).join("")} +
    + ${money.format(item.price * line.quantity)} +
    + `; + }) + .join("") + : ""; + + return ` + + `; + } + + /* The drawer is a full-height grid (auto 1fr auto), so a short cart left ~196px + of dead white between the last line and the footer. Rather than collapse the + drawer, that region now carries the two things a cart is actually for: + progress toward free shipping, and the nearest sensible addition. */ + function shippingProgress(breakdown) { + const pct = Math.min(100, Math.round((breakdown.subtotal / FREE_SHIPPING_THRESHOLD) * 100)); + return breakdown.freeShippingRemaining > 0 + ? `
    +
    +

    Add ${money.format(breakdown.freeShippingRemaining)} for free standard shipping.

    +
    ` + : `
    +
    +

    Standard shipping is free on this order.

    +
    `; + } + + function drawerCrossSell() { + const inCart = new Set(cart.map((line) => line.slug)); + /* A side drawer pins its footer, so a short cart always leaves a void + somewhere between the last line and the summary. Rather than move the gap + around, fill it: the fewer lines in the cart, the more suggestions shown. + One line gets four, a full cart gets one. */ + const room = Math.max(1, 5 - cart.length); + const picks = PRODUCTS + .filter((p) => !inCart.has(p.slug) && availabilityFor(p.slug).sellable) + .slice(0, room); + if (!picks.length) return ""; + return ` +
    +

    Pairs with your cart

    + ${picks.map((p) => ` +
    + +
    + ${escapeHtml(p.name)} + ${escapeHtml(p.code)} · ${escapeHtml(p.strength)} +
    + +
    `).join("")} +
    + `; + } + + function renderCart() { + const count = cart.reduce((total, item) => total + item.quantity, 0); + document.querySelectorAll("[data-cart-count]").forEach((element) => { + element.textContent = String(count); + element.hidden = count === 0; + }); + + const itemsRoot = document.querySelector("[data-cart-items]"); + const footerRoot = document.querySelector("[data-cart-footer]"); + if (!itemsRoot || !footerRoot) return; + + if (cart.length === 0) { + itemsRoot.innerHTML = ` +
    +
    + Your cart is empty. +

    Browse the catalog to add a peptide or bundle.

    + Shop products +
    +
    +
    +

    Start with these

    + ${PRODUCTS.filter((entry) => availabilityFor(entry.slug).sellable).slice(0, 4).map((entry) => ` +
    + +
    + ${escapeHtml(entry.name)} + ${escapeHtml(entry.code)} · ${escapeHtml(entry.strength)} +
    + +
    `).join("")} +
    + `; + footerRoot.innerHTML = ` +

    Cart is stored in this browser. Nothing here is stocked, shippable, or for sale.

    + `; + return; + } + + itemsRoot.innerHTML = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + +
    +
    +

    ${escapeHtml(item.name)}

    + ${money.format(item.price * line.quantity)} +
    +

    ${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

    +
    +
    + + ${line.quantity} + +
    + ${money.format(item.price)} each + +
    +
    +
    + `; + }) + .join("") + drawerCrossSell(); + + const breakdown = priceBreakdown(readCheckoutDraft()); + footerRoot.innerHTML = ` + ${shippingProgress(breakdown)} +
    Subtotal${money.format(cartTotal())}
    + Checkout + ${PAGE === "cart" ? "" : `View cart`} +

    Cart is stored in this browser. Checkout runs end to end but cannot take payment.

    + `; + } + + function addToCart(slug, quantity = 1) { + const item = cartItemData(slug); + if (!item) return; + + /* Stock gate. This is the authoritative check: disabling a button is a UI + courtesy, this is what actually prevents an unsellable line existing. */ + const stock = availabilityFor(slug); + if (!stock.sellable) { + showToast(`${item.name} is unavailable.`); + return; + } + + const ceiling = Math.min(MAX_QUANTITY, stock.units); + const existing = cart.find((line) => line.slug === slug); + const requested = Math.max(1, Number.parseInt(quantity, 10) || 1); + const alreadyInCart = existing ? existing.quantity : 0; + const safeQuantity = Math.max(0, Math.min(requested, ceiling - alreadyInCart)); + + if (safeQuantity === 0) { + showToast(`Only ${ceiling} of ${item.name} available.`); + return; + } + + if (existing) { + existing.quantity = Math.min(ceiling, existing.quantity + safeQuantity); + } else { + cart.push({ slug, quantity: safeQuantity }); + } + saveCart(); + openDrawer("cart"); + track("add_to_cart", { + item_id: item.code, + item_name: item.name, + item_category: item.category, + price: item.price, + quantity: safeQuantity, + demo_only: true, + }); + } + + function changeCartQuantity(slug, delta) { + const line = cart.find((item) => item.slug === slug); + const product = cartItemData(slug); + if (!line || !product) return; + line.quantity = Math.max(0, Math.min(MAX_QUANTITY, availabilityFor(slug).units, line.quantity + delta)); + if (line.quantity === 0) { + cart = cart.filter((item) => item.slug !== slug); + track("remove_from_cart", { item_id: product.code, item_name: product.name, demo_only: true }); + } else { + track("cart_quantity_changed", { + item_id: product.code, + item_name: product.name, + quantity: line.quantity, + demo_only: true, + }); + } + saveCart(); + } + + function showToast(message) { + const toast = document.querySelector("[data-toast]"); + if (!toast) return; + window.clearTimeout(toastTimer); + toast.textContent = message; + toast.dataset.open = "true"; + toastTimer = window.setTimeout(() => { + toast.dataset.open = "false"; + }, 2800); + } + + function drawerElements(type) { + const drawer = document.querySelector(type === "cart" ? "[data-cart-drawer]" : "[data-mobile-drawer]"); + const other = document.querySelector(type === "cart" ? "[data-mobile-drawer]" : "[data-cart-drawer]"); + return { drawer, other }; + } + + function openDrawer(type) { + const { drawer, other } = drawerElements(type); + const backdrop = document.querySelector("[data-drawer-backdrop]"); + if (!drawer || !backdrop) return; + lastFocusedElement = document.activeElement; + other.dataset.open = "false"; + other.setAttribute("aria-hidden", "true"); + drawer.dataset.open = "true"; + drawer.setAttribute("aria-hidden", "false"); + backdrop.dataset.open = "true"; + body.classList.add("drawer-open"); + drawer.querySelector("button, a")?.focus(); + if (type === "cart") { + track("view_cart", { item_count: cart.reduce((sum, item) => sum + item.quantity, 0), demo_only: true }); + } + } + + function closeDrawers() { + const backdrop = document.querySelector("[data-drawer-backdrop]"); + document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer]").forEach((drawer) => { + drawer.dataset.open = "false"; + drawer.setAttribute("aria-hidden", "true"); + }); + if (backdrop) backdrop.dataset.open = "false"; + body.classList.remove("drawer-open"); + if (lastFocusedElement instanceof HTMLElement) lastFocusedElement.focus(); + } + + function initDrawersAndCart() { + renderCart(); + document.addEventListener("click", (event) => { + if (event.target.closest("[data-drawer-backdrop]")) { + closeDrawers(); + return; + } + const target = event.target.closest("button, a"); + if (!target) return; + + if (target.matches("[data-cart-open]")) openDrawer("cart"); + if (target.matches("[data-cart-close], [data-menu-close]")) closeDrawers(); + if (target.matches("[data-menu-open]")) openDrawer("menu"); + + if (target.dataset.addProduct) { + addToCart(target.dataset.addProduct); + } + + if (target.dataset.pdpAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.pdpAdd, quantity); + } + + if (target.dataset.mobileAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.mobileAdd, quantity); + } + + if (target.dataset.cartQuantity) { + changeCartQuantity(target.dataset.cartQuantity, Number(target.dataset.delta)); + } + + if (target.dataset.removeProduct) { + const item = cartItemData(target.dataset.removeProduct); + cart = cart.filter((line) => line.slug !== target.dataset.removeProduct); + saveCart(); + if (item) { + showToast(`${item.name} removed from the cart.`); + track("remove_from_cart", { item_id: item.code, item_name: item.name, demo_only: true }); + } + } + + if (target.matches("[data-clear-cart]")) { + cart = []; + saveCart(); + showToast("Cart cleared."); + track("cart_cleared", { demo_only: true }); + } + }); + + document.addEventListener("keydown", (event) => { + if (event.key === "Escape") closeDrawers(); + if (event.key !== "Tab") return; + const openDrawerElement = document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"]', + ); + if (!openDrawerElement) return; + const focusable = [ + ...openDrawerElement.querySelectorAll( + 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])', + ), + ]; + if (focusable.length === 0) return; + const first = focusable[0]; + const last = focusable.at(-1); + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + }); + } + + function searchMatches(query) { + const normalized = query.trim().toLowerCase(); + if (!normalized) return sellableFirst(PRODUCTS).slice(0, 5); + /* Predictive search is a curated rail too. A query like "10 mg", "metabolic" + or "vial" used to hand the top two rows to the entries that cannot be + bought. They still match and still show, they just stop leading. */ + return sellableFirst( + PRODUCTS.filter((product) => + [product.name, product.code, product.category, product.strength, product.descriptor] + .join(" ") + .toLowerCase() + .includes(normalized), + ), + ).slice(0, 6); + } + + function initSearch() { + const input = document.querySelector("#site-search"); + const results = document.querySelector("#search-results"); + if (!input || !results) return; + let activeIndex = -1; + + const close = () => { + results.hidden = true; + input.setAttribute("aria-expanded", "false"); + input.removeAttribute("aria-activedescendant"); + activeIndex = -1; + }; + + const open = () => { + const matches = searchMatches(input.value); + results.setAttribute("role", matches.length ? "listbox" : "status"); + results.innerHTML = matches.length + ? matches + .map( + (product, index) => ` + + + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}${escapeHtml(product.code)} · ${escapeHtml(product.category)} + ${money.format(product.price)} + + `, + ) + .join("") + : `
    No matching catalog entry.

    Try a molecule name, product code, or research area.

    Browse all products →
    `; + results.hidden = false; + input.setAttribute("aria-expanded", "true"); + }; + + input.addEventListener("focus", open); + input.addEventListener("input", () => { + activeIndex = -1; + open(); + if (input.value.trim()) track("search", { search_term: input.value.trim().toLowerCase(), result_count: searchMatches(input.value).length }); + }); + + input.addEventListener("keydown", (event) => { + const options = [...results.querySelectorAll('[role="option"]')]; + if (event.key === "Escape") { + close(); + return; + } + if (!["ArrowDown", "ArrowUp", "Enter"].includes(event.key) || options.length === 0) return; + if (event.key === "Enter" && activeIndex >= 0) { + event.preventDefault(); + options[activeIndex].click(); + return; + } + if (event.key === "Enter") return; + event.preventDefault(); + activeIndex = + event.key === "ArrowDown" + ? Math.min(options.length - 1, activeIndex + 1) + : Math.max(0, activeIndex - 1); + options.forEach((option, index) => option.setAttribute("aria-selected", String(index === activeIndex))); + input.setAttribute("aria-activedescendant", options[activeIndex].id); + options[activeIndex].scrollIntoView({ block: "nearest" }); + }); + + document.addEventListener("click", (event) => { + if (!event.target.closest(".search-wrap")) close(); + }); + document.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") { + event.preventDefault(); + input.focus(); + } + }); + results.addEventListener("click", (event) => { + const link = event.target.closest("[data-search-result]"); + if (!link) return; + const product = PRODUCTS.find((item) => item.slug === link.dataset.searchResult); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: "predictive_search", + }); + }); + } + + function initCollection() { + const grid = document.querySelector("[data-collection-grid]"); + if (!grid) return; + const search = document.querySelector("#collection-search"); + const sort = document.querySelector("#collection-sort"); + const summary = document.querySelector("[data-result-summary]"); + const buttons = [...document.querySelectorAll("[data-filter]")]; + /* The page used to promise "use the testing state as a filter". Testing state + is identical on all ten entries, so that control could only ever have been + a no-op. Availability is the axis that actually splits the grid. */ + const availabilityToggle = document.querySelector("[data-availability-toggle]"); + const params = new URLSearchParams(window.location.search); + let category = CATEGORIES.some((item) => item.key === params.get("category")) ? params.get("category") : "all"; + let onlySellable = params.get("available") === "1"; + + const updateUrl = () => { + const next = new URL(window.location.href); + if (category === "all") next.searchParams.delete("category"); + else next.searchParams.set("category", category); + if (search.value.trim()) next.searchParams.set("q", search.value.trim()); + else next.searchParams.delete("q"); + if (onlySellable) next.searchParams.set("available", "1"); + else next.searchParams.delete("available"); + window.history.replaceState({}, "", next); + }; + + const render = () => { + const query = search.value.trim().toLowerCase(); + let filtered = PRODUCTS.filter((product) => { + const categoryMatch = category === "all" || product.categoryKey === category; + const queryMatch = + !query || + [product.name, product.code, product.category, product.strength, product.descriptor] + .join(" ") + .toLowerCase() + .includes(query); + const availabilityMatch = !onlySellable || availabilityFor(product.slug).sellable; + return categoryMatch && queryMatch && availabilityMatch; + }); + + if (sort.value === "name-asc") filtered.sort((a, b) => a.name.localeCompare(b.name)); + if (sort.value === "price-asc") filtered.sort((a, b) => a.price - b.price); + if (sort.value === "price-desc") filtered.sort((a, b) => b.price - a.price); + /* Featured is the editorial order, so it follows the same rule as every + other curated list: all ten entries stay in the grid, the two that are + not offered just stop taking the first two cards. An explicit name or + price sort is the visitor's own instruction and is never overridden. */ + if (sort.value === "featured") filtered = sellableFirst(filtered); + + grid.innerHTML = filtered.length + ? filtered.map((product) => productCard(product)).join("") + : ` +
    +

    No catalog entries match.

    +

    Clear the search, widen the research area, or drop the availability filter.

    + +
    + `; + summary.textContent = `${filtered.length} ${filtered.length === 1 ? "catalog entry" : "catalog entries"}${category === "all" ? "" : ` in ${CATEGORIES.find((item) => item.key === category).name}`}${onlySellable ? " available to order" : ""}`; + buttons.forEach((button) => button.setAttribute("aria-pressed", String(button.dataset.filter === category))); + if (availabilityToggle) availabilityToggle.setAttribute("aria-pressed", String(onlySellable)); + updateUrl(); + }; + + search.value = params.get("q") || ""; + buttons.forEach((button) => { + button.addEventListener("click", () => { + category = button.dataset.filter; + render(); + track("filter_apply", { filter_name: "research_area", filter_value: category }); + }); + }); + if (availabilityToggle) { + availabilityToggle.addEventListener("click", () => { + onlySellable = !onlySellable; + render(); + track("filter_apply", { filter_name: "availability", filter_value: onlySellable ? "sellable_only" : "all" }); + }); + } + if (availabilityToggle) { + availabilityToggle.addEventListener("click", () => { + onlySellable = !onlySellable; + render(); + track("filter_apply", { filter_name: "availability", filter_value: onlySellable ? "sellable_only" : "all" }); + }); + } + search.addEventListener("input", render); + search.addEventListener("change", () => { + track("search", { search_term: search.value.trim().toLowerCase(), surface: "collection" }); + }); + sort.addEventListener("change", () => { + render(); + track("sort_changed", { sort_value: sort.value }); + }); + grid.addEventListener("click", (event) => { + if (!event.target.closest("[data-reset-collection]")) return; + category = "all"; + search.value = ""; + sort.value = "featured"; + onlySellable = false; + render(); + search.focus(); + }); + render(); + } + + function initProduct() { + if (PAGE !== "product") return; + const product = PRODUCTS.find((item) => item.slug === PRODUCT_SLUG); + if (!product) return; + track("view_item", { + item_id: product.code, + item_name: product.name, + item_category: product.category, + price: product.price, + demo_only: true, + }); + + try { + const recent = JSON.parse(localStorage.getItem(RECENT_KEY) || "[]").filter((slug) => slug !== product.slug); + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug, ...recent].slice(0, 6))); + } catch { + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug])); + } + + const quantity = document.querySelector("#pdp-quantity"); + const normalizeQuantity = () => { + quantity.value = String(Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity.value, 10) || 1))); + }; + document.querySelectorAll("[data-pdp-quantity-change]").forEach((button) => { + button.addEventListener("click", () => { + quantity.value = String(Number(quantity.value || 1) + Number(button.dataset.pdpQuantityChange)); + normalizeQuantity(); + }); + }); + quantity?.addEventListener("change", normalizeQuantity); + + document.querySelectorAll("[data-media-src]").forEach((button) => { + button.addEventListener("click", () => { + const media = document.querySelector("[data-main-media]"); + if (!media) return; + media.innerHTML = productImage(product, true); + const image = media.querySelector("img"); + const label = media.querySelector(".product-image-label"); + image.src = button.dataset.mediaSrc; + image.alt = button.dataset.mediaAlt; + image.style.transform = `scale(${button.dataset.mediaZoom || "1"})`; + image.style.transformOrigin = button.dataset.mediaView === "label" ? "center 40%" : "center"; + if (label) label.hidden = button.dataset.mediaView === "scale"; + document.querySelectorAll("[data-media-src]").forEach((thumb) => thumb.setAttribute("aria-current", String(thumb === button))); + track("product_media_selected", { item_id: product.code, media_label: button.getAttribute("aria-label") }); + }); + }); + + const mainAdd = document.querySelector("[data-pdp-add]"); + const mobileBar = document.querySelector("[data-mobile-add]"); + if (mainAdd && mobileBar && "IntersectionObserver" in window) { + const observer = new IntersectionObserver(([entry]) => { + const hasScrolledPastPrimaryAction = !entry.isIntersecting && entry.boundingClientRect.top < 0; + mobileBar.dataset.visible = String( + hasScrolledPastPrimaryAction && window.matchMedia("(max-width: 640px)").matches, + ); + }); + observer.observe(mainAdd); + } + } + + function initAccordions() { + document.querySelectorAll(".accordion-trigger").forEach((button) => { + button.addEventListener("click", () => { + const expanded = button.getAttribute("aria-expanded") === "true"; + button.setAttribute("aria-expanded", String(!expanded)); + const panel = document.querySelector(`#${CSS.escape(button.getAttribute("aria-controls"))}`); + if (panel) panel.hidden = expanded; + }); + }); + } + + function initTestingLookup() { + const form = document.querySelector("[data-testing-lookup]"); + if (!form) return; + const input = form.querySelector("input"); + const results = document.querySelector("[data-lookup-results]"); + const params = new URLSearchParams(window.location.search); + if (params.get("product")) input.value = params.get("product"); + + const run = () => { + const query = input.value.trim().toLowerCase(); + const matches = PRODUCTS.filter((product) => `${product.name} ${product.code}`.toLowerCase().includes(query)); + if (!query) { + results.innerHTML = `

    Enter a product name or code.

    Examples: Retatrutide, OVO-001, or BPC-157.

    `; + } else if (matches.length === 0) { + results.innerHTML = `

    No matching OVO Labs code.

    Try a product name, a code from OVO-001 through OVO-010, or browse the full testing table below.

    `; + } else { + results.innerHTML = matches + .map( + (product) => ` +
    +

    ${escapeHtml(product.code)} · ${escapeHtml(product.category)}

    +

    ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

    + ${(() => { const t = testingFor(product.slug); return t + ? `

    Lot ${escapeHtml(t.lot)} · reported ${escapeHtml(t.date)}

    +
    ${testingFields(product.slug).map((f) => ` +
    + ${escapeHtml(f.label)} + ${escapeHtml(f.result)} + ${escapeHtml(f.method)} +
    `).join("")}
    ` + : `

    Testing status: No result reported for identity, content / mass, purity profile, sterility, or endotoxin.

    `; })()} +

    Open the product page ${icons.arrow}

    +
    + `, + ) + .join(""); + } + track("quality_lookup", { search_term: query, result_count: matches.length }); + }; + + form.addEventListener("click", (event) => { + const fill = event.target.closest("[data-fill-promo]"); + if (!fill) return; + event.preventDefault(); + form.querySelector("#promo-input").value = fill.getAttribute("data-fill-promo"); + form.dispatchEvent(new Event("submit", { cancelable: true, bubbles: true })); + }); + + form.addEventListener("submit", (event) => { + event.preventDefault(); + run(); + }); + if (input.value) run(); + } + + function initNewsletter() { + document.querySelectorAll("[data-newsletter]").forEach((form) => { + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector('input[type="email"]'); + if (!input.checkValidity()) { + input.reportValidity(); + return; + } + form.hidden = true; + const success = form.parentElement.querySelector("[data-newsletter-success]"); + success.hidden = false; + success.textContent = "Preference saved on this device. Nothing was transmitted, and no email will be sent."; + track("newsletter_demo_completed", { storage: "none", transmitted: false }); + }); + }); + } + + function initLinkTracking() { + document.addEventListener("click", (event) => { + const productLink = event.target.closest("[data-product-link]"); + if (!productLink) return; + const product = PRODUCTS.find((item) => item.slug === productLink.dataset.productLink); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: PAGE, + }); + }); + + if (PAGE === "collection") { + track("view_item_list", { + item_list_name: "catalog", + item_count: PRODUCTS.length, + }); + } + } + + /* Bound exactly once, outside initCartPage. An earlier version registered this + inside initCartPage AND called initCartPage from within the handler, so every + interaction doubled the listener count: 1, 2, 4, 8... Nine clicks produced 512 + full-page renders. The repaint below no longer re-binds. */ + let cartPageListenerBound = false; + + function bindCartPageRepaint() { + if (cartPageListenerBound || PAGE !== "cart") return; + cartPageListenerBound = true; + + /* Quantity and remove are handled by the shared cart handlers, which only + repaint the drawer. On the cart page the summary, the free-shipping bar and + the Checkout total all read from the same cart, so they must repaint too or + the page shows a stale total. Deferred so the shared handler has already + written the cart before we re-render from it. */ + document.addEventListener("click", (event) => { + if (!event.target.closest("[data-cart-quantity], [data-remove-product], [data-clear-cart]")) return; + setTimeout(() => { + renderPage(); + bindPromoForm(); + renderCart(); + }, 0); + }); + } + + function initCartPage() { + if (PAGE !== "cart") return; + bindCartPageRepaint(); + bindPromoForm(); + } + + function bindPromoForm() { + /* Two promo forms exist, one on the cart page and one in the checkout order + summary. This bailed unless PAGE was "cart" and then bound only the first + match, so the checkout Apply button was inert: a control that looks + interactive and does nothing. */ + if (PAGE !== "cart" && PAGE !== "checkout") return; + const form = document.querySelector("[data-promo-form]"); + if (!form) return; + + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector("#promo-input"); + const feedback = form.querySelector("[data-promo-feedback]"); + const code = (input.value || "").trim().toUpperCase(); + const draft = readCheckoutDraft(); + + if (!code) { + delete draft.promo; + writeCheckoutDraft(draft); + feedback.textContent = ""; + feedback.classList.remove("is-error"); + renderPage(); + bindPromoForm(); + return; + } + + if (!PROMO_CODES[code]) { + feedback.textContent = `${code} is not a valid code.`; + feedback.classList.add("is-error"); + return; + } + + draft.promo = code; + writeCheckoutDraft(draft); + track("promo_applied", { code }); + renderPage(); + bindPromoForm(); + }); + } + + function initCheckout() { + if (PAGE !== "checkout") return; + + const form = document.querySelector("[data-checkout-form]"); + if (!form) return; + + let current = "contact"; + + const stepEl = (key) => form.querySelector(`[data-step="${key}"]`); + const setError = (name, message) => { + const el = form.querySelector(`[data-error-for="${name}"]`); + if (el) el.textContent = message || ""; + const input = form.querySelector(`#${name}`) || form.querySelector(`[name="${name}"]`); + if (input) input.classList.toggle("has-error", Boolean(message)); + }; + + function paintStepper() { + const order = CHECKOUT_STEPS.map((s) => s.key); + const idx = order.indexOf(current); + document.querySelectorAll("[data-step-indicator]").forEach((el, i) => { + el.classList.toggle("is-current", i === idx); + el.classList.toggle("is-done", i < idx); + /* A completed step is a place you can go back to, so its pill becomes a + live control. Everything at or ahead of the current step stays + disabled: you cannot skip validation by clicking the stepper. */ + const jump = el.querySelector("[data-step-jump]"); + if (jump) jump.disabled = i >= idx; + }); + } + + function show(key) { + current = key; + CHECKOUT_STEPS.forEach((s) => { + const el = stepEl(s.key); + if (el) el.hidden = s.key !== key; + }); + paintStepper(); + if (key === "review") paintReview(); + window.scrollTo({ top: 0, behavior: "smooth" }); + track("checkout_step", { step: key }); + } + + function collect() { + const data = readCheckoutDraft(); + new FormData(form).forEach((value, key) => { + if (key === "cardNumber" || key === "cardExpiry" || key === "cardCvc") return; // never persisted + data[key] = typeof value === "string" ? value.trim() : value; + }); + const terms = form.querySelector('[name="terms"]'); + if (terms) data.terms = terms.checked; + return data; + } + + function persist() { + writeCheckoutDraft(collect()); + } + + const RULES = { + contact: [ + ["email", (v) => /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(v), "Enter a valid email address."], + /* The label says optional and the input carries no required attribute, + so an empty value must pass. A value that is present is still + checked, because a half-typed number is worse than none. */ + ["phone", (v) => v === "" || v.replace(/\D/g, "").length >= 10, "Enter a phone number with at least 10 digits, or leave it blank."], + ], + shipping: [ + ["firstName", (v) => v.length >= 1, "Enter a first name."], + ["lastName", (v) => v.length >= 1, "Enter a last name."], + ["address1", (v) => v.length >= 4, "Enter a street address."], + ["city", (v) => v.length >= 2, "Enter a city."], + ["state", (v) => v.length === 2, "Select a state."], + ["zip", (v) => /^\d{5}(-\d{4})?$/.test(v), "Enter a 5 digit ZIP code."], + ], + delivery: [], + payment: [], + }; + + function validate(key) { + const rules = RULES[key] || []; + let ok = true; + rules.forEach(([name, test, message]) => { + const input = form.querySelector(`#${name}`) || form.querySelector(`[name="${name}"]`); + const value = input ? String(input.value || "").trim() : ""; + if (!test(value)) { + setError(name, message); + if (ok && input) input.focus(); + ok = false; + } else { + setError(name, ""); + } + }); + return ok; + } + + function refreshSummary() { + const holder = document.querySelector("[data-checkout-summary]"); + if (holder) holder.innerHTML = orderSummaryPanel(priceBreakdown(collect())); + const total = priceBreakdown(collect()).total; + const place = form.querySelector("[data-place-order]"); + if (place) place.textContent = `Place order · ${money.format(total)}`; + } + + function paintReview() { + const d = collect(); + const b = priceBreakdown(d); + const holder = form.querySelector("[data-review-blocks]"); + if (!holder) return; + const block = (title, bodyHtml, target) => ` +
    +
    +

    ${escapeHtml(title)}

    + +
    +

    ${bodyHtml}

    +
    + `; + holder.innerHTML = [ + block("Contact", `${escapeHtml(d.email || "")}${d.phone ? `
    ${escapeHtml(formatPhone(d.phone))}` : ""}`, "contact"), + block( + "Ship to", + `${escapeHtml(d.firstName || "")} ${escapeHtml(d.lastName || "")}
    ${escapeHtml(d.address1 || "")}${d.address2 ? `
    ${escapeHtml(d.address2)}` : ""}
    ${escapeHtml(d.city || "")}, ${escapeHtml(d.state || "")} ${escapeHtml(d.zip || "")}`, + "shipping", + ), + block("Delivery", `${escapeHtml(b.method.name)} · ${escapeHtml(b.method.detail)}`, "delivery"), + block("Payment", "Not collected. This storefront cannot charge a card.", "payment"), + ].join(""); + } + + form.addEventListener("input", () => { + persist(); + refreshSummary(); + }); + form.addEventListener("change", () => { + persist(); + refreshSummary(); + }); + + form.addEventListener("click", (event) => { + const next = event.target.closest("[data-next]"); + const back = event.target.closest("[data-back]"); + const edit = event.target.closest("[data-edit]"); + const place = event.target.closest("[data-place-order]"); + + if (next) { + const key = next.getAttribute("data-next"); + if (!validate(key)) return; + persist(); + const order = CHECKOUT_STEPS.map((s) => s.key); + show(order[order.indexOf(key) + 1]); + } + if (back) show(back.getAttribute("data-back")); + if (edit) show(edit.getAttribute("data-edit")); + if (place) placeOrder(); + }); + + function placeOrder() { + const terms = form.querySelector('[name="terms"]'); + if (terms && !terms.checked) { + setError("terms", "Please confirm you have read the policies."); + terms.focus(); + return; + } + setError("terms", ""); + + const d = collect(); + const b = priceBreakdown(d); + const now = new Date(); + const eta = new Date(now.getTime() + (b.method.id === "cold" ? 1 : b.method.id === "express" ? 2 : 5) * 86400000); + const fmt = { month: "short", day: "numeric" }; + + const order = { + reference: `OVO-${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, "0")}${String(now.getDate()).padStart(2, "0")}-${Math.floor(1000 + Math.random() * 9000)}`, + placedAt: now.toISOString(), + placedLabel: now.toLocaleDateString("en-US", fmt), + etaLabel: eta.toLocaleDateString("en-US", fmt), + email: d.email || "", + phone: d.phone || "", + firstName: d.firstName || "", + lastName: d.lastName || "", + address1: d.address1 || "", + address2: d.address2 || "", + city: d.city || "", + state: d.state || "", + zip: d.zip || "", + shippingMethodName: b.method.name, + shippingMethodDetail: b.method.detail, + items: cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return null; + /* The order records the lot it was placed against. Without this the + receipt has nothing to match the delivered vial label to, and the + promise of a lot COA before dispatch stays an assertion. */ + const lots = lotTrace(item.slug); + return { + slug: item.slug, name: item.name, code: item.code, + strength: item.strength, price: item.price, + quantity: line.quantity, isBundle: Boolean(item.productSlugs), + lots, + lot: lots.length === 1 ? lots[0].lot : "", + lotDate: lots.length === 1 ? lots[0].date : "", + }; + }) + .filter(Boolean), + totals: { subtotal: b.subtotal, discount: b.discount, shipping: b.shipping, tax: b.tax, total: b.total }, + }; + + try { + localStorage.setItem(ORDER_KEY, JSON.stringify([order, ...readOrders()].slice(0, 10))); + } catch (error) { + /* storage full or blocked; the confirmation page will report no order */ + } + + cart = []; + saveCart(); + localStorage.removeItem(CHECKOUT_KEY); + track("order_placed", { reference: order.reference, value: order.totals.total }); + window.location.href = path("order-confirmation.html"); + } + + /* The aside's discount form had no handler on this page: bindPromoForm() + returns early unless PAGE === "cart", so Apply fell through to a native + GET, reloaded checkout.html?promo=... and dropped the shopper back on + step 1 with no code applied and no message. It is bound here, against the + same draft the summary already reads from, so nothing re-renders. */ + const promoForm = document.querySelector("[data-promo-form]"); + if (promoForm) { + promoForm.addEventListener("submit", (event) => { + event.preventDefault(); + const input = promoForm.querySelector("#promo-input"); + const feedback = promoForm.querySelector("[data-promo-feedback]"); + const code = (input.value || "").trim().toUpperCase(); + const draft = readCheckoutDraft(); + if (!code) { + delete draft.promo; + writeCheckoutDraft(draft); + feedback.textContent = ""; + feedback.classList.remove("is-error"); + refreshSummary(); + return; + } + if (!PROMO_CODES[code]) { + feedback.textContent = `${code} is not a valid code.`; + feedback.classList.add("is-error"); + return; + } + draft.promo = code; + writeCheckoutDraft(draft); + feedback.textContent = `Applied: ${PROMO_CODES[code].label}`; + feedback.classList.remove("is-error"); + refreshSummary(); + track("promo_applied", { code }); + }); + } + + /* The stepper pills are buttons; paintStepper enables the completed ones. + They reuse the same show() the Review step's Edit links already prove is + safe to jump backwards with. */ + const stepper = document.querySelector("[data-stepper]"); + if (stepper) { + stepper.addEventListener("click", (event) => { + const jump = event.target.closest("[data-step-jump]"); + if (jump && !jump.disabled) show(jump.getAttribute("data-step-jump")); + }); + } + + /* The locked card fields are readonly, not disabled, so they were live tab + stops on values that can never change. */ + form.querySelectorAll("input[readonly]").forEach((el) => { + el.tabIndex = -1; + }); + + show("contact"); + refreshSummary(); + } + + renderPage(); + initCartPage(); + initCheckout(); + initDrawersAndCart(); + initSearch(); + initCollection(); + initProduct(); + initAccordions(); + initTestingLookup(); + initNewsletter(); + initLinkTracking(); + track("page_view", { page_title: document.title, page_path: window.location.pathname }); +})(); diff --git a/biologix-strategy-board/ovo-labs-warm/testing.html b/biologix-strategy-board/ovo-labs-warm/testing.html new file mode 100644 index 0000000..b2e408d --- /dev/null +++ b/biologix-strategy-board/ovo-labs-warm/testing.html @@ -0,0 +1,36 @@ + + + + + + Testing & COAs · OVO Labs + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/404.html b/biologix-strategy-board/ovo-labs/404.html new file mode 100644 index 0000000..ce63cc5 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/404.html @@ -0,0 +1,19 @@ + + + + + + + + + + + + + Page Not Found — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/README.md b/biologix-strategy-board/ovo-labs/README.md new file mode 100644 index 0000000..d9cea7f --- /dev/null +++ b/biologix-strategy-board/ovo-labs/README.md @@ -0,0 +1,69 @@ +# OVO Labs + +OVO Labs is a fictional, non-transactional peptide ecommerce concept. It demonstrates a complete retail experience without representing real products, inventory, testing, customers, fulfillment, payments, or medical use. + +## Routes + +| Surface | Route | +|---|---| +| Homepage | `index.html` | +| Complete collection | `catalog.html` | +| Curated sets | `bundles.html` | +| Testing | `testing.html` | +| Journal | `notes.html` | +| About | `company.html` | +| FAQ | `faq.html` | +| Policies | `policies.html` | +| Product pages | `peptides/*.html` | +| Journal articles | `notes/*.html` | + +Compatibility redirects preserve both former prototype families: + +- `../third-standard/` → `../ovo-labs/` +- `../datum-peptides/` → `../ovo-labs/` +- `lot-record.html` → `testing.html` +- `access.html` → `catalog.html` +- `eligibility.html` → `policies.html` + +## Interaction model + +- Predictive keyboard search by product name, category, strength, and OVO code +- Category filtering, collection search, persistent URL sorting, and empty-state recovery +- Ten canonical product pages with responsive media, quantity, visible testing status, specifications, FAQ, related products, and a sticky mobile Add action +- Three curated sets +- Searchable testing-status page +- Browser-local add, update, remove, subtotal, and clear-cart states +- Local-only newsletter preference +- Keyboard-accessible menu, search, drawers, accordions, and product controls +- Non-PII QA instrumentation through `window.dataLayer` and `window.OVOAnalytics.events()` + +The cart has no checkout or payment path. Nothing is transmitted. + +## Fable 5 visual system + +Claude Fable 5 is the binding outward-facing design authority. The final direction is **warm apothecary modernism**: + +- Fraunces display type, Instrument Sans body/UI, and IBM Plex Mono product data +- cream, porcelain, parchment, espresso, muted-gold rules, and a restrained terracotta accent +- centered italic `ovolabs.` wordmark +- asymmetric product-led hero +- borderless fashion-collection product grid +- full espresso editorial testing band +- 7/5 product gallery and sticky buy box +- two-column mobile collection down to 320 px +- safe amber-vial stills with no use supplies, people, claims, or lab theater +- self-hosted, SIL Open Font License type assets with no third-party font request + +## Local preview + +From `biologix-strategy-board/`: + +```bash +python3 -m http.server 4173 +``` + +Then open: + +```text +http://127.0.0.1:4173/ovo-labs/ +``` diff --git a/biologix-strategy-board/ovo-labs/access.html b/biologix-strategy-board/ovo-labs/access.html new file mode 100644 index 0000000..99c3018 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/access.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to the OVO Labs collection + + +
    Fictional concept storefront. Nothing here is real, stocked, or for sale.
    +

    Continue to the OVO Labs collection.

    + + diff --git a/biologix-strategy-board/ovo-labs/assets/favicon.svg b/biologix-strategy-board/ovo-labs/assets/favicon.svg new file mode 100644 index 0000000..9d1eed3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/assets/favicon.svg @@ -0,0 +1,5 @@ + + + o + + diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/OFL-fraunces.txt b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-fraunces.txt new file mode 100644 index 0000000..e0a3ac7 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-fraunces.txt @@ -0,0 +1,93 @@ +Copyright 2018 The Fraunces Project Authors (https://github.com/undercasetype/Fraunces) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/OFL-ibm-plex-mono.txt b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-ibm-plex-mono.txt new file mode 100644 index 0000000..670c6c0 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-ibm-plex-mono.txt @@ -0,0 +1,93 @@ +Copyright © 2017 IBM Corp. with Reserved Font Name "Plex" + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/OFL-instrument-sans.txt b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-instrument-sans.txt new file mode 100644 index 0000000..d41633c --- /dev/null +++ b/biologix-strategy-board/ovo-labs/assets/fonts/OFL-instrument-sans.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Instrument Sans Project Authors (https://github.com/Instrument/instrument-sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-italic-400-latin.woff2 b/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-italic-400-latin.woff2 new file mode 100644 index 0000000..88d409d Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-italic-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-normal-latin.woff2 b/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-normal-latin.woff2 new file mode 100644 index 0000000..4c7b557 Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/fonts/fraunces-normal-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-400-latin.woff2 b/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-400-latin.woff2 new file mode 100644 index 0000000..52b6c75 Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-400-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-500-latin.woff2 b/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-500-latin.woff2 new file mode 100644 index 0000000..3308bce Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/fonts/ibm-plex-mono-500-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs/assets/fonts/instrument-sans-latin.woff2 b/biologix-strategy-board/ovo-labs/assets/fonts/instrument-sans-latin.woff2 new file mode 100644 index 0000000..665fa65 Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/fonts/instrument-sans-latin.woff2 differ diff --git a/biologix-strategy-board/ovo-labs/assets/ovo-hero-still.webp b/biologix-strategy-board/ovo-labs/assets/ovo-hero-still.webp new file mode 100644 index 0000000..e52069b Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/ovo-hero-still.webp differ diff --git a/biologix-strategy-board/ovo-labs/assets/ovo-set-pair.webp b/biologix-strategy-board/ovo-labs/assets/ovo-set-pair.webp new file mode 100644 index 0000000..65cf55a Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/ovo-set-pair.webp differ diff --git a/biologix-strategy-board/ovo-labs/assets/ovo-vial-front.webp b/biologix-strategy-board/ovo-labs/assets/ovo-vial-front.webp new file mode 100644 index 0000000..41514d6 Binary files /dev/null and b/biologix-strategy-board/ovo-labs/assets/ovo-vial-front.webp differ diff --git a/biologix-strategy-board/ovo-labs/bundles.html b/biologix-strategy-board/ovo-labs/bundles.html new file mode 100644 index 0000000..b5d7b43 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/bundles.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Curated Sets — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/catalog.html b/biologix-strategy-board/ovo-labs/catalog.html new file mode 100644 index 0000000..806c8fb --- /dev/null +++ b/biologix-strategy-board/ovo-labs/catalog.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + The Collection — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/company.html b/biologix-strategy-board/ovo-labs/company.html new file mode 100644 index 0000000..98eedc5 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/company.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + About OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/eligibility.html b/biologix-strategy-board/ovo-labs/eligibility.html new file mode 100644 index 0000000..504af8a --- /dev/null +++ b/biologix-strategy-board/ovo-labs/eligibility.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to OVO Labs concept boundaries + + +
    Fictional concept storefront. Nothing here is real, stocked, or for sale.
    +

    Continue to the OVO Labs concept boundaries.

    + + diff --git a/biologix-strategy-board/ovo-labs/faq.html b/biologix-strategy-board/ovo-labs/faq.html new file mode 100644 index 0000000..55f8414 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/faq.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Frequently Asked Questions — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/index.html b/biologix-strategy-board/ovo-labs/index.html new file mode 100644 index 0000000..490a41f --- /dev/null +++ b/biologix-strategy-board/ovo-labs/index.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + OVO Labs — Peptide Science, Refined + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/lot-record.html b/biologix-strategy-board/ovo-labs/lot-record.html new file mode 100644 index 0000000..105d10c --- /dev/null +++ b/biologix-strategy-board/ovo-labs/lot-record.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Redirecting to OVO Labs Testing + + +
    Fictional concept storefront. Nothing here is real, stocked, or for sale.
    +

    Continue to OVO Labs Testing.

    + + diff --git a/biologix-strategy-board/ovo-labs/notes.html b/biologix-strategy-board/ovo-labs/notes.html new file mode 100644 index 0000000..befa715 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/notes.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Journal — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/notes/choosing-by-molecule.html b/biologix-strategy-board/ovo-labs/notes/choosing-by-molecule.html new file mode 100644 index 0000000..17fbed4 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/notes/choosing-by-molecule.html @@ -0,0 +1,13 @@ + + + + + + + + + + Shop by Molecule, Not by Hype — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/notes/coa-boundaries.html b/biologix-strategy-board/ovo-labs/notes/coa-boundaries.html new file mode 100644 index 0000000..643faa2 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/notes/coa-boundaries.html @@ -0,0 +1,13 @@ + + + + + + + + + + What a COA Can and Cannot Show — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/notes/reading-testing-status.html b/biologix-strategy-board/ovo-labs/notes/reading-testing-status.html new file mode 100644 index 0000000..cb80e43 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/notes/reading-testing-status.html @@ -0,0 +1,13 @@ + + + + + + + + + + How to Read a Testing Status — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/bpc-157.html b/biologix-strategy-board/ovo-labs/peptides/bpc-157.html new file mode 100644 index 0000000..202cd68 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/bpc-157.html @@ -0,0 +1,14 @@ + + + + + + + + + + + BPC-157 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/bpc-tb-blend.html b/biologix-strategy-board/ovo-labs/peptides/bpc-tb-blend.html new file mode 100644 index 0000000..ac672d7 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/bpc-tb-blend.html @@ -0,0 +1,14 @@ + + + + + + + + + + + BPC-157 + TB-500 20 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/cagrilintide.html b/biologix-strategy-board/ovo-labs/peptides/cagrilintide.html new file mode 100644 index 0000000..4ffe836 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/cagrilintide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Cagrilintide 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/cjc-1295.html b/biologix-strategy-board/ovo-labs/peptides/cjc-1295.html new file mode 100644 index 0000000..a8b566a --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/cjc-1295.html @@ -0,0 +1,14 @@ + + + + + + + + + + + CJC-1295 5 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/cjc-ipamorelin-blend.html b/biologix-strategy-board/ovo-labs/peptides/cjc-ipamorelin-blend.html new file mode 100644 index 0000000..81df38b --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/cjc-ipamorelin-blend.html @@ -0,0 +1,14 @@ + + + + + + + + + + + CJC-1295 + Ipamorelin 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/ipamorelin.html b/biologix-strategy-board/ovo-labs/peptides/ipamorelin.html new file mode 100644 index 0000000..5bc4493 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/ipamorelin.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Ipamorelin 5 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/retatrutide.html b/biologix-strategy-board/ovo-labs/peptides/retatrutide.html new file mode 100644 index 0000000..042073e --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/retatrutide.html @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + Retatrutide 10 mg — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/peptides/semaglutide.html b/biologix-strategy-board/ovo-labs/peptides/semaglutide.html new file mode 100644 index 0000000..5ff0f92 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/semaglutide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Semaglutide 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/tb-500.html b/biologix-strategy-board/ovo-labs/peptides/tb-500.html new file mode 100644 index 0000000..ccc4583 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/tb-500.html @@ -0,0 +1,14 @@ + + + + + + + + + + + TB-500 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/peptides/tirzepatide.html b/biologix-strategy-board/ovo-labs/peptides/tirzepatide.html new file mode 100644 index 0000000..ad5c07b --- /dev/null +++ b/biologix-strategy-board/ovo-labs/peptides/tirzepatide.html @@ -0,0 +1,14 @@ + + + + + + + + + + + Tirzepatide 10 mg — OVO Labs + +
    + diff --git a/biologix-strategy-board/ovo-labs/policies.html b/biologix-strategy-board/ovo-labs/policies.html new file mode 100644 index 0000000..646ffd3 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/policies.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Site Policies — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/ovo-labs/site.css b/biologix-strategy-board/ovo-labs/site.css new file mode 100644 index 0000000..2a3676a --- /dev/null +++ b/biologix-strategy-board/ovo-labs/site.css @@ -0,0 +1,2851 @@ +@font-face { + font-family: "Fraunces"; + font-style: normal; + font-weight: 400 600; + font-display: swap; + src: url("assets/fonts/fraunces-normal-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "Fraunces"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url("assets/fonts/fraunces-italic-400-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "Instrument Sans"; + font-style: normal; + font-weight: 400 600; + font-display: swap; + src: url("assets/fonts/instrument-sans-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-400-latin.woff2") format("woff2"); +} + +@font-face { + font-family: "IBM Plex Mono"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url("assets/fonts/ibm-plex-mono-500-latin.woff2") format("woff2"); +} + +:root { + --cream: #f3eada; + --porcelain: #faf6ee; + --parchment: #ede2cd; + --espresso: #3a2a1f; + --espresso-deep: #2a1d14; + --ink-2: #5c4a3b; + --terracotta: #b9553e; + --terracotta-deep: #8f3b2a; + --gold: #b08a52; + --gold-bright: #c69b63; + --cream-on-dark: #f3eada; + --line: rgba(58, 42, 31, 0.16); + --line-strong: rgba(58, 42, 31, 0.34); + --line-on-dark: rgba(243, 234, 218, 0.18); + --scrim: rgba(26, 18, 12, 0.5); + --shell: min(1280px, calc(100vw - 96px)); + --serif: "Fraunces", Georgia, "Times New Roman", serif; + --sans: "Instrument Sans", -apple-system, "Helvetica Neue", Arial, sans-serif; + --mono: "IBM Plex Mono", ui-monospace, "SF Mono", monospace; + --drawer-shadow: 0 24px 64px rgba(58, 42, 31, 0.18); + --overlay-shadow: 0 14px 42px rgba(42, 29, 20, 0.18); + --ease: cubic-bezier(0.16, 1, 0.3, 1); +} + +* { + box-sizing: border-box; +} + +html { + color-scheme: light; + scroll-behavior: smooth; +} + +body { + min-width: 320px; + margin: 0; + overflow-x: clip; + color: var(--espresso); + background: var(--cream); + font-family: var(--sans); + font-size: 15px; + line-height: 1.6; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; +} + +body.drawer-open { + overflow: hidden; +} + +img { + display: block; + max-width: 100%; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input, +select { + color: inherit; + font: inherit; +} + +button { + cursor: pointer; +} + +button:disabled { + cursor: not-allowed; + opacity: 0.52; +} + +h1, +h2, +h3, +p { + margin-top: 0; +} + +.sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.skip-link { + position: fixed; + z-index: 1000; + top: 8px; + left: 8px; + padding: 10px 14px; + color: var(--cream); + background: var(--espresso); + border: 1px solid var(--cream); + transform: translateY(-160%); +} + +.skip-link:focus { + transform: none; +} + +:focus-visible { + outline: 2px solid var(--espresso); + outline-offset: 3px; +} + +.site-footer :focus-visible, +.concept-banner :focus-visible, +.testing-feature :focus-visible { + outline-color: var(--cream); +} + +.shell { + width: var(--shell); + margin-inline: auto; +} + +.concept-banner { + min-height: 36px; + display: grid; + place-items: center; + padding: 8px 20px; + color: var(--cream-on-dark); + background: var(--espresso); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; +} + +/* Global header */ + +.site-header { + position: sticky; + z-index: 80; + top: 0; + color: var(--espresso); + background: var(--cream); + border-bottom: 1px solid var(--line); +} + +.header-main { + min-height: 76px; + display: grid; + grid-template-columns: 1fr auto 1fr; + gap: 32px; + align-items: center; +} + +.primary-nav { + grid-column: 1; + grid-row: 1; + display: flex; + gap: 28px; + align-items: center; + justify-self: start; +} + +.primary-nav a { + color: var(--espresso); + font-size: 13px; + font-weight: 500; + letter-spacing: 0.02em; + text-underline-offset: 7px; + white-space: nowrap; +} + +.primary-nav a:hover { + color: var(--terracotta-deep); + text-decoration: underline; + text-decoration-thickness: 1px; +} + +.primary-nav a[aria-current="page"] { + text-decoration: underline; + text-decoration-thickness: 1px; +} + +.wordmark { + display: inline-flex; + align-items: baseline; + justify-content: center; + color: var(--espresso); + white-space: nowrap; +} + +.header-main > .wordmark { + grid-column: 2; + grid-row: 1; + justify-self: center; +} + +.wordmark-name, +.wordmark-copy { + display: inline; + font: italic 400 25px/1 var(--serif); + letter-spacing: -0.01em; +} + +.wordmark-dot { + color: var(--terracotta); +} + +.wordmark-mark, +.wordmark-category { + display: none; +} + +.header-utilities, +.header-actions { + grid-column: 3; + grid-row: 1; + display: flex; + gap: 18px; + align-items: center; + justify-self: end; +} + +.search-wrap { + position: relative; + width: 220px; + transition: width 200ms ease-out; +} + +.search-wrap:focus-within { + width: 280px; +} + +.search-input, +.collection-search, +.testing-lookup input, +.newsletter-form input { + width: 100%; + height: 40px; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-bottom: 1px solid var(--line-strong); + border-radius: 0; + outline: none; +} + +.search-input { + height: 34px; + padding-right: 36px; + font-size: 13px; +} + +.search-input::placeholder, +.collection-search::placeholder, +.testing-lookup input::placeholder, +.newsletter-form input::placeholder { + color: var(--ink-2); + opacity: 0.86; +} + +.search-input:focus, +.collection-search:focus, +.testing-lookup input:focus, +.newsletter-form input:focus { + border-bottom-color: var(--espresso); +} + +.search-icon { + display: none; +} + +.search-shortcut { + position: absolute; + top: 50%; + right: 0; + color: var(--ink-2); + font: 400 9px/1 var(--mono); + transform: translateY(-50%); +} + +.search-results { + position: absolute; + z-index: 100; + top: calc(100% + 12px); + right: 0; + width: 360px; + max-height: min(510px, 72vh); + overflow-y: auto; + color: var(--espresso); + background: var(--porcelain); + border: 1px solid var(--line-strong); + border-radius: 0; + box-shadow: var(--drawer-shadow); +} + +.search-results[hidden] { + display: none; +} + +.search-result { + min-height: 64px; + display: grid; + grid-template-columns: 44px 1fr auto; + gap: 12px; + align-items: center; + padding: 10px 12px; + border-bottom: 1px solid var(--line); +} + +.search-result:last-child { + border-bottom: 0; +} + +.search-result:hover, +.search-result[aria-selected="true"] { + background: var(--parchment); +} + +.search-result img { + width: 44px; + height: 52px; + object-fit: cover; + object-position: center; + background: var(--parchment); +} + +.search-result strong { + display: block; + font-size: 13px; + font-weight: 500; + line-height: 1.25; +} + +.search-result span span { + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.03em; +} + +.search-result-price { + font: 500 11px/1 var(--mono); + font-variant-numeric: tabular-nums; +} + +.icon-button, +.cart-button { + min-width: 44px; + height: 44px; + display: inline-grid; + place-items: center; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font: 500 10px/1 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.icon-button:hover, +.cart-button:hover { + color: var(--terracotta-deep); +} + +.cart-count { + display: inline; + color: inherit; + background: transparent; + font: inherit; +} + +.cart-count[hidden] { + display: none; +} + +.mobile-menu-button { + display: none; +} + +.category-nav-wrap { + display: none; +} + +/* Buttons and links */ + +.button, +.add-button, +.pdp-add, +.newsletter-form button { + min-height: 48px; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 28px; + font-size: 13px; + font-weight: 600; + line-height: 1; + letter-spacing: 0.08em; + text-align: center; + text-transform: uppercase; + border-radius: 2px; + transition: + color 180ms ease-out, + background-color 180ms ease-out, + border-color 180ms ease-out; +} + +.button:active, +.add-button:active, +.pdp-add:active, +.newsletter-form button:active { + transform: translateY(1px); +} + +.button-primary, +.pdp-add, +.newsletter-form button { + color: var(--cream); + background: var(--espresso); + border: 1px solid var(--espresso); +} + +.button-primary:hover, +.pdp-add:hover, +.newsletter-form button:hover { + background: var(--espresso-deep); + border-color: var(--espresso-deep); +} + +.button-secondary, +.add-button { + color: var(--espresso); + background: transparent; + border: 1px solid var(--espresso); +} + +.button-secondary:hover, +.add-button:hover { + color: var(--cream); + background: var(--espresso); +} + +.button-small { + min-height: 40px; + padding-inline: 18px; +} + +.text-link, +.quiet-link { + display: inline-flex; + align-items: center; + color: var(--espresso); + font-size: 13px; + font-weight: 500; + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-decoration-thickness: 1px; + text-underline-offset: 5px; +} + +.text-link:hover, +.quiet-link:hover { + color: var(--terracotta-deep); + text-decoration-color: currentColor; +} + +.eyebrow, +.product-category, +.price-label, +.result-summary { + margin-bottom: 12px; + color: var(--terracotta-deep); + font: 500 11px/1.3 var(--mono); + letter-spacing: 0.18em; + text-transform: uppercase; +} + +/* Hero */ + +.home-hero { + background: var(--cream); +} + +.hero-grid { + min-height: 560px; + display: grid; + grid-template-columns: repeat(12, minmax(0, 1fr)); + gap: 24px; + align-items: center; + padding-block: 64px 96px; +} + +.hero-copy { + grid-column: 1 / span 5; + max-width: 560px; +} + +.hero-copy .eyebrow::after { + width: 24px; + height: 1px; + display: block; + margin-top: 20px; + content: ""; + background: var(--gold); +} + +.hero-copy h1 { + max-width: 15ch; + margin: 0 0 24px; + font: 500 clamp(34px, 5vw, 64px) / 1.06 var(--serif); + letter-spacing: -0.015em; +} + +.hero-copy h1 span { + color: inherit; + font: inherit; +} + +.hero-copy > p:not(.eyebrow) { + max-width: 44ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 17px; + line-height: 1.6; +} + +.hero-actions { + display: flex; + gap: 24px; + align-items: center; + margin-top: 40px; +} + +.hero-actions .button-primary { + min-height: 52px; + padding-inline: 36px; +} + +.hero-actions .button-secondary { + min-height: auto; + padding: 0; + background: transparent; + border: 0; + border-radius: 0; + font-size: 13px; + font-weight: 500; + letter-spacing: 0; + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-underline-offset: 5px; + text-transform: none; +} + +.hero-actions .button-secondary:hover { + color: var(--terracotta-deep); + background: transparent; + text-decoration-color: currentColor; +} + +.hero-visual { + grid-column: 6 / -1; + height: min(720px, 64vw); + margin-right: calc((100vw - var(--shell)) / -2); + overflow: hidden; + background: var(--parchment); +} + +.hero-visual > img { + width: 100%; + height: 100%; + object-fit: cover; + object-position: 60% center; +} + +.hero-product-chip, +.hero-coa-card, +.trust-strip { + display: none !important; +} + +/* Sections */ + +.section { + padding-block: 96px; +} + +.section-tight { + padding-block: 72px; +} + +.section-surface { + background: var(--porcelain); +} + +.section-head { + display: flex; + gap: 32px; + align-items: flex-end; + justify-content: space-between; + margin-bottom: 48px; +} + +.section-head h2, +.testing-feature h2, +.newsletter h2, +.page-hero h1, +.detail-section h2 { + margin-bottom: 0; + font: 500 clamp(27px, 3.2vw, 44px) / 1.1 var(--serif); + letter-spacing: -0.01em; +} + +.section-head > div > p:last-child:not(.eyebrow) { + max-width: 58ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 15px; +} + +.section-head > p { + max-width: 58ch; + margin-bottom: 0; + color: var(--ink-2); +} + +/* Category index */ + +.category-section-head { + margin-top: 96px; + margin-bottom: 40px; +} + +.category-rail, +.category-index { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 24px; +} + +.category-tile, +.category-index-item { + position: relative; + min-height: 150px; + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 20px 0 18px; + border-top: 1px solid var(--line-strong); +} + +.category-tile::before, +.category-index-item::before { + display: block; + margin-right: 16px; + color: var(--ink-2); + font: 400 11px/1 var(--mono); + content: counter(category-index, decimal-leading-zero); +} + +.category-rail, +.category-index { + counter-reset: category-index; +} + +.category-tile, +.category-index-item { + counter-increment: category-index; +} + +.category-tile > span:first-of-type, +.category-index-copy { + display: flex; + flex: 1; + flex-direction: column; + gap: 8px; +} + +.category-tile strong, +.category-index-item strong { + font: 500 22px/1.2 var(--serif); +} + +.category-tile span span, +.category-index-item small { + color: var(--ink-2); + font: 400 11px/1.4 var(--mono); + letter-spacing: 0.04em; +} + +.category-arrow { + align-self: flex-end; + font: 400 16px/1 var(--sans); +} + +.category-tile:hover strong, +.category-tile:hover .category-arrow, +.category-index-item:hover strong, +.category-index-item:hover .category-arrow { + color: var(--terracotta-deep); +} + +/* Product grid and cards */ + +.product-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 56px 24px; +} + +.product-card { + min-width: 0; + color: var(--espresso); + background: transparent; + border: 0; +} + +.product-image-wrap { + position: relative; + aspect-ratio: 4 / 5; + display: block; + overflow: hidden; + background: var(--porcelain); +} + +.product-image-wrap > img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 600ms var(--ease); +} + +.product-image-wrap:hover > img { + transform: scale(1.015); +} + +.product-image-label { + position: absolute; + top: 55.5%; + left: 34%; + width: 33%; + display: grid; + gap: 4px; + pointer-events: none; + text-align: center; +} + +.product-image-label strong { + overflow: hidden; + color: var(--espresso); + font: 600 clamp(9px, 1.1vw, 12px) / 1.1 var(--sans); + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-image-label span { + overflow: hidden; + color: var(--ink-2); + font: 500 clamp(7px, 0.7vw, 9px) / 1.2 var(--mono); + text-overflow: ellipsis; + white-space: nowrap; +} + +.product-card-body { + padding-top: 12px; +} + +.product-card .product-category { + margin-bottom: 6px; + color: var(--ink-2); + font-size: 10px; + letter-spacing: 0.08em; +} + +.product-name { + margin-bottom: 6px; + font: 500 15px/1.35 var(--sans); +} + +.product-name a:hover { + color: var(--terracotta-deep); + text-decoration: underline; + text-underline-offset: 4px; +} + +.product-format { + margin-bottom: 8px; + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.04em; +} + +.product-description { + min-height: 38px; + display: -webkit-box; + margin-bottom: 12px; + overflow: hidden; + color: var(--ink-2); + font-size: 12px; + line-height: 1.55; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.testing-micro { + min-height: 38px; + display: flex; + gap: 8px; + align-items: center; + justify-content: space-between; + padding-block: 8px; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.testing-micro span, +.testing-micro a { + color: var(--ink-2); + font: 400 9px/1.35 var(--mono); + letter-spacing: 0.01em; +} + +.testing-micro a { + flex: 0 0 auto; + color: var(--terracotta-deep); + text-decoration: underline; + text-underline-offset: 3px; +} + +.testing-micro-dot { + display: none; +} + +.product-buy-row { + display: grid; + gap: 10px; + padding-top: 12px; +} + +.price { + display: block; + color: var(--espresso); + font: 500 14px/1.2 var(--mono); + font-variant-numeric: tabular-nums; +} + +.price-label { + display: block; + margin-bottom: 4px; + color: var(--ink-2); + font-size: 9px; + letter-spacing: 0.08em; +} + +.product-card .add-button { + width: 100%; + min-height: 44px; + padding: 0 14px; + color: var(--cream); + background: var(--espresso); + border-color: var(--espresso); + font-size: 11px; +} + +.product-card .add-button:hover { + color: var(--cream); + background: var(--espresso-deep); + border-color: var(--espresso-deep); +} + +/* Testing feature */ + +.testing-feature { + width: 100%; + max-width: none; + display: grid; + grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr); + gap: 24px; + padding: 96px max(48px, calc((100vw - 1280px) / 2)); + color: var(--cream); + background: var(--espresso); +} + +.testing-feature-copy { + grid-column: 1; + align-self: center; +} + +.testing-feature-copy .eyebrow { + color: var(--gold-bright); +} + +.testing-feature-copy h2 { + max-width: 12ch; + color: var(--cream); +} + +.testing-feature-copy > p:not(.eyebrow) { + max-width: 44ch; + margin: 24px 0 28px; + color: rgba(243, 234, 218, 0.78); + font-size: 16px; +} + +.testing-feature-copy .button, +.testing-feature-copy .text-link { + min-height: auto; + padding: 0; + color: var(--cream); + background: transparent; + border: 0; + border-radius: 0; + font-size: 13px; + letter-spacing: 0; + text-decoration: underline; + text-decoration-color: var(--cream); + text-underline-offset: 5px; + text-transform: none; +} + +.testing-feature-copy .button:hover, +.testing-feature-copy .text-link:hover { + color: var(--cream); + background: transparent; + text-decoration-color: var(--gold); +} + +.testing-document { + grid-column: 3; + align-self: center; + color: var(--cream); + background: transparent; + border: 0; +} + +.document-head { + display: flex; + align-items: flex-end; + justify-content: space-between; + padding-bottom: 16px; + color: rgba(243, 234, 218, 0.78); + border-bottom: 1px solid var(--gold); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.document-head strong, +.document-head span { + display: block; + color: inherit; + font: inherit; +} + +.document-tag, +.status-pill { + color: inherit; + background: transparent; + border: 0; + border-radius: 0; +} + +.document-row { + min-height: 58px; + display: grid; + grid-template-columns: minmax(120px, 1fr) minmax(200px, 1.6fr); + gap: 24px; + align-items: center; + padding-block: 18px; + border-bottom: 1px solid var(--line-on-dark); +} + +.document-row strong { + color: var(--cream); + font-size: 14px; + font-weight: 500; +} + +.document-row span { + color: rgba(243, 234, 218, 0.74); + font: 400 10px/1.5 var(--mono); + text-align: right; +} + +/* Sets */ + +.bundle-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 32px 24px; +} + +.bundle-card { + min-width: 0; + background: transparent; + border: 0; +} + +.bundle-image { + position: relative; + aspect-ratio: 3 / 2; + overflow: hidden; + background: var(--porcelain); +} + +.bundle-image img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 600ms var(--ease); +} + +.bundle-card:hover .bundle-image img { + transform: scale(1.015); +} + +.bundle-count { + display: none; +} + +.bundle-body { + padding-top: 16px; +} + +.bundle-body .product-category { + margin-bottom: 6px; + color: var(--ink-2); + letter-spacing: 0.08em; +} + +.bundle-body h3 { + margin-bottom: 10px; + font: 500 22px/1.2 var(--serif); +} + +.bundle-body > p:not(.product-category) { + margin-bottom: 18px; + color: var(--ink-2); + font-size: 13px; +} + +.bundle-items { + margin: 0; + padding: 0; + list-style: none; + border-top: 1px solid var(--line); +} + +.bundle-items li { + min-height: 44px; + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid var(--line); +} + +.bundle-items a { + font-size: 13px; +} + +.bundle-items a:hover { + color: var(--terracotta-deep); +} + +.bundle-items span { + color: var(--ink-2); + font: 400 10px/1 var(--mono); +} + +.bundle-arithmetic { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; + margin: 0; + padding-block: 12px; + color: var(--ink-2); + border-bottom: 1px solid var(--line); + font: 400 9px/1.4 var(--mono); +} + +.bundle-arithmetic strong { + color: var(--espresso); + font-weight: 500; + font-variant-numeric: tabular-nums; +} + +.bundle-footer { + display: flex; + gap: 16px; + align-items: flex-end; + justify-content: space-between; + padding-top: 16px; +} + +.bundle-footer .add-button { + min-height: 44px; + padding-inline: 16px; + font-size: 11px; +} + +/* Journal and principles */ + +.education-grid, +.journal-grid, +.value-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 24px; +} + +.education-card, +.journal-card, +.value-card { + min-height: 220px; + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + padding: 20px 0 0; + background: transparent; + border: 0; + border-top: 1px solid var(--line-strong); +} + +.education-card h3, +.journal-card h3, +.value-card h3 { + margin-bottom: 10px; + font: 500 22px/1.25 var(--serif); +} + +.education-card p:not(.product-category), +.journal-card p:not(.product-category), +.value-card p { + color: var(--ink-2); + font-size: 14px; +} + +.brand-principle { + padding-block: 72px; + text-align: center; + background: var(--parchment); +} + +.brand-principle > div { + max-width: 640px; + margin-inline: auto; +} + +.brand-principle h2 { + margin-bottom: 16px; + font: 500 30px/1.2 var(--serif); +} + +.brand-principle p { + margin-bottom: 24px; + color: var(--ink-2); + font-size: 15px; +} + +/* Newsletter */ + +.newsletter { + display: grid; + grid-template-columns: minmax(0, 5fr) minmax(0, 1fr) minmax(0, 6fr); + gap: 24px; + align-items: center; + color: var(--espresso); + background: transparent; +} + +.newsletter > div:first-child { + grid-column: 1; +} + +.newsletter h2 { + margin-bottom: 14px; +} + +.newsletter p { + max-width: 44ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 14px; +} + +.newsletter-form, +.newsletter-success { + grid-column: 3; +} + +.newsletter-form { + display: flex; + gap: 18px; + align-items: flex-end; +} + +.newsletter-form input { + height: 48px; + padding-inline: 0; + font-size: 15px; +} + +.newsletter-form button { + flex: 0 0 auto; +} + +.newsletter-success { + color: var(--espresso) !important; + font-size: 14px !important; +} + +/* Inner-page heroes */ + +.page-hero { + padding-block: 72px 48px; +} + +.page-hero .shell { + max-width: 1280px; +} + +.page-hero h1 { + max-width: 15ch; + margin-bottom: 20px; + font-size: clamp(36px, 5vw, 64px); +} + +.page-hero .shell > p:last-child:not(.eyebrow) { + max-width: 60ch; + margin-bottom: 0; + color: var(--ink-2); + font-size: 16px; +} + +/* Collection */ + +.collection-layout { + display: grid; + grid-template-columns: 220px minmax(0, 1fr); + gap: 64px; + align-items: start; +} + +.filter-panel { + position: sticky; + top: 96px; + padding: 0; + background: transparent; + border: 0; +} + +.filter-panel h2 { + margin-bottom: 12px; + color: var(--ink-2); + font: 500 10px/1.4 var(--mono); + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.filter-button { + position: relative; + width: 100%; + min-height: 42px; + display: flex; + gap: 8px; + align-items: center; + justify-content: space-between; + padding: 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-bottom: 1px solid var(--line); + border-radius: 0; + font-size: 13px; + text-align: left; +} + +.filter-button span { + font: 400 10px/1 var(--mono); +} + +.filter-button:hover { + color: var(--terracotta-deep); +} + +.filter-button[aria-pressed="true"] { + padding-left: 10px; + color: var(--espresso); + font-weight: 500; +} + +.filter-button[aria-pressed="true"]::before { + position: absolute; + top: 9px; + bottom: 9px; + left: 0; + width: 2px; + content: ""; + background: var(--terracotta); +} + +.collection-toolbar { + display: grid; + grid-template-columns: 1fr 190px; + gap: 24px; + align-items: end; + padding: 0; + background: transparent; + border: 0; +} + +.filter-drawer-trigger { + display: none; +} + +.collection-search { + min-width: 0; +} + +.collection-sort { + height: 40px; + padding: 0 34px 0 12px; + color: var(--espresso); + background-color: transparent; + background-image: linear-gradient(45deg, transparent 50%, var(--espresso) 50%), + linear-gradient(135deg, var(--espresso) 50%, transparent 50%); + background-position: + calc(100% - 16px) 17px, + calc(100% - 11px) 17px; + background-repeat: no-repeat; + background-size: 5px 5px, 5px 5px; + border: 1px solid var(--line-strong); + border-radius: 0; + font-size: 13px; + appearance: none; +} + +.result-summary { + margin: 18px 0 32px; + color: var(--ink-2); + letter-spacing: 0.08em; +} + +.empty-state { + grid-column: 1 / -1; + display: grid; + place-items: center; + padding: 64px 20px; + text-align: center; + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); +} + +.empty-state h2, +.empty-state strong { + margin-bottom: 10px; + font: 500 26px/1.2 var(--serif); +} + +.empty-state p { + margin-bottom: 20px; + color: var(--ink-2); + font-size: 14px; +} + +.search-results .empty-state { + padding: 28px 18px; + text-align: left; + place-items: start; + border: 0; +} + +.search-results .empty-state strong { + font-size: 18px; +} + +/* Testing page */ + +.testing-lookup { + display: grid; + grid-template-columns: 1fr auto; + gap: 18px; + align-items: end; + max-width: 760px; + margin-bottom: 48px; +} + +.testing-lookup input { + height: 48px; + font-size: 16px; +} + +.lookup-results { + display: grid; + gap: 0; +} + +.lookup-card { + padding: 24px 0; + background: transparent; + border: 0; + border-top: 1px solid var(--line); +} + +.lookup-card:last-child { + border-bottom: 1px solid var(--line); +} + +.lookup-card h3 { + margin-bottom: 10px; + font: 500 22px/1.25 var(--serif); +} + +.lookup-card p { + max-width: 68ch; + margin-bottom: 10px; + color: var(--ink-2); + font-size: 13px; +} + +.testing-table, +.spec-table { + border-top: 1px solid var(--line); +} + +.spec-row { + min-height: 54px; + display: grid; + grid-template-columns: minmax(140px, 1fr) minmax(200px, 1.6fr); + gap: 24px; + align-items: center; + padding-block: 14px; + border-bottom: 1px solid var(--line); +} + +.testing-row { + min-height: 54px; + display: grid; + grid-template-columns: minmax(140px, 1fr) minmax(200px, 1.6fr) auto; + gap: 24px; + align-items: center; + padding-block: 14px; + border-bottom: 1px solid var(--line); +} + +.testing-row strong, +.spec-row strong { + font-size: 13px; + font-weight: 500; +} + +.testing-row > span, +.spec-row > span { + color: var(--ink-2); + font: 400 11px/1.5 var(--mono); + text-align: right; +} + +.testing-state { + color: var(--ink-2); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.02em; + text-align: right; +} + +/* PDP */ + +.product-page { + padding-block: 36px 96px; +} + +.breadcrumb { + margin-bottom: 28px; + color: var(--ink-2); + font: 400 10px/1.5 var(--mono); +} + +.breadcrumb a:hover { + color: var(--terracotta-deep); +} + +.pdp-grid { + display: grid; + grid-template-columns: minmax(0, 7fr) minmax(360px, 5fr); + gap: clamp(40px, 6vw, 84px); + align-items: start; +} + +.pdp-gallery { + min-width: 0; +} + +.pdp-main-image { + position: relative; + aspect-ratio: 4 / 5; + overflow: hidden; + background: var(--porcelain); +} + +.pdp-main-image > img { + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 300ms ease-out; +} + +.pdp-main-image .product-image-label { + top: 55.5%; + left: 34%; + width: 33%; +} + +.pdp-main-image .product-image-label strong { + font-size: clamp(12px, 1.2vw, 16px); +} + +.pdp-main-image .product-image-label span { + font-size: clamp(9px, 0.8vw, 11px); +} + +.pdp-thumbnails { + display: flex; + gap: 10px; + margin-top: 12px; +} + +.pdp-thumb { + width: 72px; + height: 72px; + display: block; + padding: 0; + overflow: hidden; + background: var(--porcelain); + border: 1px solid var(--line-strong); + border-radius: 0; +} + +.pdp-thumb[aria-current="true"] { + border-color: var(--espresso); + box-shadow: inset 0 -2px 0 var(--terracotta); +} + +.pdp-thumb img { + width: 100%; + height: 100%; + object-fit: cover; +} + +.pdp-buybox { + position: sticky; + top: 96px; + padding: 0; + background: transparent; + border: 0; +} + +.pdp-buybox .product-category { + margin-bottom: 10px; +} + +.pdp-buybox h1 { + margin-bottom: 10px; + font: 500 clamp(36px, 4.2vw, 56px) / 1.05 var(--serif); + letter-spacing: -0.015em; +} + +.pdp-code { + margin-bottom: 24px; + color: var(--ink-2); + font: 400 11px/1.5 var(--mono); +} + +.pdp-testing-link { + min-height: 52px; + display: flex; + gap: 16px; + align-items: center; + justify-content: space-between; + padding-block: 14px; + color: var(--espresso); + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + border-radius: 0; + font: 400 11px/1.4 var(--mono); +} + +.pdp-testing-link:hover { + color: var(--terracotta-deep); +} + +.pdp-description { + margin: 24px 0; + color: var(--ink-2); + font-size: 15px; +} + +.pdp-price { + display: block; + margin-bottom: 24px; + font: 500 20px/1 var(--mono); + font-variant-numeric: tabular-nums; +} + +.selection-label { + display: flex; + justify-content: space-between; + margin-bottom: 10px; + font-size: 12px; + font-weight: 600; +} + +.selection-label span { + color: var(--ink-2); + font-weight: 400; +} + +.buy-controls { + display: grid; + grid-template-columns: 112px minmax(0, 1fr); + gap: 12px; +} + +.quantity-control { + height: 48px; + display: grid; + grid-template-columns: 36px 1fr 36px; + align-items: center; + border: 1px solid var(--line-strong); +} + +.quantity-control button, +.quantity-control input { + width: 100%; + height: 100%; + padding: 0; + text-align: center; + background: transparent; + border: 0; + border-radius: 0; + font: 500 13px/1 var(--mono); +} + +.quantity-control input { + appearance: textfield; +} + +.quantity-control input::-webkit-outer-spin-button, +.quantity-control input::-webkit-inner-spin-button { + margin: 0; + appearance: none; +} + +.pdp-note { + margin: 12px 0 0; + color: var(--ink-2); + font-size: 11px; + line-height: 1.5; +} + +.buybox-cues { + display: grid; + gap: 0; + margin-top: 24px; + border-top: 1px solid var(--line); +} + +.buybox-cue { + min-height: 42px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0; + background: transparent; + border: 0; + border-bottom: 1px solid var(--line); +} + +.buybox-cue strong, +.buybox-cue span { + font: 400 10px/1.4 var(--mono); +} + +.buybox-cue strong { + color: var(--ink-2); + font-weight: 400; +} + +.detail-section { + padding-block: 96px; +} + +.detail-section.section-surface { + background: var(--porcelain); +} + +.detail-grid { + display: grid; + grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); + gap: 64px; + align-items: start; +} + +.detail-grid h2 { + margin-bottom: 16px; +} + +.detail-grid > div:first-child > p { + color: var(--ink-2); +} + +.accordion { + border-top: 1px solid var(--line); +} + +.accordion-item { + border-bottom: 1px solid var(--line); +} + +.accordion-trigger { + width: 100%; + min-height: 60px; + display: flex; + gap: 20px; + align-items: center; + justify-content: space-between; + padding: 18px 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font-size: 15px; + font-weight: 500; + text-align: left; +} + +.accordion-trigger::after { + font: 400 16px/1 var(--mono); + content: "+"; +} + +.accordion-trigger[aria-expanded="true"]::after { + content: "−"; +} + +.accordion-panel { + max-width: 72ch; + padding: 0 0 20px; + color: var(--ink-2); + font-size: 14px; +} + +.accordion-panel p:last-child { + margin-bottom: 0; +} + +.mobile-cart-bar { + display: none; +} + +/* Article, about, policies */ + +.article-shell { + max-width: 760px; + margin-inline: auto; +} + +.article-shell h1 { + margin-bottom: 20px; + font: 500 clamp(38px, 5.8vw, 64px) / 1.05 var(--serif); + letter-spacing: -0.015em; +} + +.article-lede { + margin-bottom: 48px; + color: var(--ink-2); + font-size: 18px; + line-height: 1.6; +} + +.article-shell h2 { + margin: 48px 0 14px; + font: 500 26px/1.2 var(--serif); +} + +.article-shell > p, +.article-shell li { + color: var(--ink-2); + font-size: 16px; + line-height: 1.7; +} + +.article-callout { + margin-block: 40px; + padding: 24px 28px; + color: var(--espresso); + background: var(--parchment); + border: 0; + border-left: 2px solid var(--terracotta); + border-radius: 0; + font-size: 14px; +} + +.article-sources { + margin-block: 48px 8px; + padding: 24px 28px; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + border-bottom: 1px solid var(--line-strong); +} + +.article-sources .eyebrow { + margin-bottom: 10px; +} + +.article-sources p:not(.eyebrow) { + margin-bottom: 14px; + color: var(--ink-2); + font-size: 13px; +} + +.article-sources ul { + margin: 0; + padding-left: 18px; +} + +.article-sources li { + margin-block: 6px; + font-size: 12px; + line-height: 1.5; +} + +.article-sources a { + text-decoration: underline; + text-decoration-color: var(--line-strong); + text-underline-offset: 3px; +} + +.article-sources a:hover { + color: var(--terracotta-deep); +} + +.testing-source-wrap { + margin-top: 48px; +} + +.testing-source-wrap .article-sources { + max-width: 760px; + margin-inline: auto; +} + +/* Drawers, cart, toast */ + +.drawer-backdrop { + position: fixed; + z-index: 180; + inset: 0; + pointer-events: none; + background: var(--scrim); + opacity: 0; + transition: opacity 200ms ease-out; +} + +.drawer-backdrop[data-open="true"] { + pointer-events: auto; + opacity: 1; +} + +.cart-drawer, +.mobile-drawer { + position: fixed; + z-index: 190; + top: 0; + bottom: 0; + display: flex; + flex-direction: column; + color: var(--espresso); + background: var(--porcelain); + border-radius: 0; + box-shadow: var(--drawer-shadow); + transition: transform 280ms cubic-bezier(0.32, 0, 0.16, 1); +} + +.filter-drawer { + display: none; +} + +.cart-drawer { + right: 0; + width: min(420px, 92vw); + transform: translateX(102%); +} + +.mobile-drawer { + left: 0; + width: min(360px, 100vw); + transform: translateX(-102%); +} + +.cart-drawer[data-open="true"], +.mobile-drawer[data-open="true"] { + transform: translateX(0); +} + +.drawer-head { + min-height: 64px; + display: flex; + align-items: center; + justify-content: space-between; + padding-inline: 24px 12px; + border-bottom: 1px solid var(--line); +} + +.drawer-head h2 { + margin: 0; + font: 500 20px/1 var(--serif); +} + +.drawer-close { + width: 44px; + height: 44px; + padding: 0; + color: var(--espresso); + background: transparent; + border: 0; + border-radius: 0; + font-size: 24px; + font-weight: 300; +} + +.mobile-nav { + display: flex; + flex-direction: column; + padding: 12px 24px 24px; +} + +.mobile-nav a { + min-height: 56px; + display: flex; + align-items: center; + border-bottom: 1px solid var(--line); + font: 500 26px/1.15 var(--serif); +} + +.mobile-nav a:nth-last-child(-n + 3) { + min-height: 46px; + font: 400 14px/1.3 var(--sans); +} + +.cart-items { + flex: 1; + padding: 8px 24px 24px; + overflow-y: auto; +} + +.cart-item { + display: grid; + grid-template-columns: 68px minmax(0, 1fr); + gap: 16px; + padding-block: 20px; + border-bottom: 1px solid var(--line); +} + +.cart-item > img { + width: 68px; + height: 84px; + object-fit: cover; + background: var(--parchment); +} + +.cart-item-top { + display: flex; + gap: 12px; + align-items: flex-start; + justify-content: space-between; +} + +.cart-item-top strong { + font-size: 13px; + font-weight: 500; +} + +.remove-item { + padding: 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-radius: 0; + font-size: 11px; + text-decoration: underline; + text-underline-offset: 3px; +} + +.cart-item-meta { + margin: 4px 0 12px; + color: var(--ink-2); + font: 400 9px/1.4 var(--mono); +} + +.cart-item-controls { + display: flex; + gap: 12px; + align-items: center; + justify-content: space-between; +} + +.mini-quantity { + height: 32px; + display: grid; + grid-template-columns: 30px 30px 30px; + border: 1px solid var(--line-strong); +} + +.mini-quantity button, +.mini-quantity span { + display: grid; + place-items: center; + padding: 0; + background: transparent; + border: 0; + font: 400 11px/1 var(--mono); +} + +.cart-item-price { + font: 500 11px/1 var(--mono); +} + +.cart-footer { + padding: 20px 24px 28px; + border-top: 1px solid var(--line); +} + +.cart-subtotal { + display: flex; + justify-content: space-between; + margin-bottom: 18px; +} + +.cart-subtotal strong, +.cart-subtotal span { + font: 500 14px/1 var(--mono); +} + +.cart-terminus { + margin-bottom: 18px; + padding: 16px 0; + color: var(--ink-2); + background: transparent; + border: 0; + border-top: 1px solid var(--line); + border-bottom: 1px solid var(--line); + font-size: 12px; +} + +.cart-terminus strong { + display: block; + margin-bottom: 4px; + color: var(--espresso); + font-weight: 500; +} + +.cart-footer .button, +.cart-footer button { + width: 100%; +} + +.cart-footer .text-link, +.cart-footer .remove-item { + width: auto; +} + +.cart-empty { + display: grid; + place-items: center; + padding: 64px 24px; + text-align: center; +} + +.cart-empty h3 { + margin-bottom: 10px; + font: 500 25px/1.2 var(--serif); +} + +.cart-empty p { + color: var(--ink-2); + font-size: 13px; +} + +.toast { + position: fixed; + z-index: 220; + right: 24px; + bottom: 24px; + max-width: min(360px, calc(100vw - 48px)); + padding: 13px 16px; + pointer-events: none; + color: var(--cream); + background: var(--espresso-deep); + border-radius: 0; + box-shadow: var(--overlay-shadow); + font-size: 13px; + opacity: 0; + transform: translateY(8px); + transition: + opacity 160ms ease-out, + transform 160ms ease-out; +} + +.toast[data-open="true"] { + opacity: 1; + transform: translateY(0); +} + +/* Footer */ + +.site-footer { + padding-block: 96px 40px; + color: var(--cream); + background: var(--espresso); +} + +.footer-brand { + grid-column: 1 / -1; + margin-bottom: 48px; + text-align: center; +} + +.footer-brand .wordmark, +.site-footer .wordmark-name { + color: var(--cream); + font-size: 28px; +} + +.footer-brand p { + margin: 16px auto 0; + color: var(--gold-bright); + font: 400 10px/1.5 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.footer-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 32px 48px; +} + +.footer-column h2 { + margin-bottom: 16px; + color: var(--gold-bright); + font: 400 10px/1.4 var(--mono); + letter-spacing: 0.1em; + text-transform: uppercase; +} + +.footer-column a { + display: block; + margin-bottom: 10px; + color: rgba(243, 234, 218, 0.78); + font-size: 13px; +} + +.footer-column a:hover { + color: var(--cream); + text-decoration: underline; + text-underline-offset: 4px; +} + +.footer-bottom { + display: flex; + gap: 24px; + align-items: flex-start; + justify-content: space-between; + margin-top: 64px; + padding-top: 24px; + color: rgba(243, 234, 218, 0.62); + border-top: 1px solid var(--line-on-dark); + font: 400 10px/1.5 var(--mono); +} + +/* Optional reveal contract */ + +html[data-reveal-armed] .reveal { + opacity: 0; + transform: translateY(14px); +} + +html[data-reveal-armed] .reveal.is-visible { + opacity: 1; + transform: none; + transition: + opacity 700ms var(--ease) var(--reveal-delay, 0ms), + transform 700ms var(--ease) var(--reveal-delay, 0ms); +} + +/* Tablet */ + +@media (max-width: 1199px) { + :root { + --shell: calc(100vw - 48px); + } + + .header-main { + min-height: 68px; + gap: 20px; + } + + .primary-nav { + gap: 18px; + } + + .primary-nav a { + font-size: 12px; + } + + .wordmark-name, + .wordmark-copy { + font-size: 22px; + } + + .search-wrap { + width: 170px; + } + + .search-wrap:focus-within { + width: 220px; + } + + .hero-grid { + min-height: 0; + padding-block: 48px 64px; + } + + .hero-copy { + grid-column: 1 / span 6; + } + + .hero-visual { + grid-column: 7 / -1; + } + + .product-grid { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .testing-feature { + padding-inline: 24px; + } +} + +/* Mobile shell begins at 960 so PDP/filter behavior matches Fable */ + +@media (max-width: 960px) { + .site-header { + display: grid; + grid-template-rows: 56px 48px; + } + + .header-main { + width: 100%; + min-height: 56px; + display: grid; + grid-template-columns: 44px 1fr 44px; + gap: 8px; + padding-inline: 20px; + } + + .primary-nav { + display: none; + } + + .header-main > .wordmark { + grid-column: 2; + justify-self: center; + } + + .header-main .wordmark-name, + .header-main .wordmark-copy { + font-size: 20px; + } + + .header-utilities, + .header-actions { + display: contents; + } + + .mobile-menu-button { + grid-column: 1; + grid-row: 1; + display: inline-grid; + justify-self: start; + } + + .mobile-menu-button svg { + width: 18px; + height: 18px; + } + + .header-actions [data-cart-open], + .header-utilities [data-cart-open] { + grid-column: 3; + grid-row: 1; + justify-self: end; + } + + .search-wrap { + grid-column: 1 / -1; + grid-row: 2; + width: 100%; + padding-inline: 20px; + border-top: 1px solid var(--line); + } + + .search-wrap:focus-within { + width: 100%; + } + + .search-input { + height: 48px; + padding-right: 40px; + font-size: 16px; + } + + .search-results { + top: 48px; + right: 0; + left: 0; + width: 100%; + } + + .search-shortcut { + right: 20px; + } + + .category-rail, + .category-index { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .product-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .testing-feature { + grid-template-columns: 1fr; + gap: 56px; + padding-block: 72px; + } + + .testing-feature-copy, + .testing-document { + grid-column: 1; + } + + .bundle-grid, + .education-grid, + .journal-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .newsletter { + grid-template-columns: 1fr; + gap: 32px; + } + + .newsletter > div:first-child, + .newsletter-form, + .newsletter-success { + grid-column: 1; + } + + .collection-layout { + grid-template-columns: 1fr; + gap: 32px; + } + + .filter-panel { + display: none; + } + + .filter-drawer-trigger { + min-height: 48px; + display: flex; + grid-column: 1 / -1; + align-items: center; + justify-content: space-between; + padding-inline: 14px; + color: var(--espresso); + background: var(--parchment); + border: 1px solid var(--line-strong); + border-radius: 0; + font-size: 13px; + font-weight: 500; + text-align: left; + } + + .filter-drawer-trigger [data-filter-label] { + color: var(--ink-2); + font: 400 10px/1.2 var(--mono); + } + + .filter-drawer { + position: fixed; + z-index: 190; + right: 0; + bottom: 0; + left: 0; + max-height: min(76vh, 620px); + display: flex; + flex-direction: column; + visibility: hidden; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + box-shadow: 0 -24px 64px rgba(58, 42, 31, 0.18); + transform: translateY(102%); + transition: + transform 260ms cubic-bezier(0.32, 0, 0.16, 1), + visibility 0s linear 260ms; + } + + .filter-drawer[data-open="true"] { + visibility: visible; + transform: translateY(0); + transition-delay: 0s; + } + + .filter-drawer-options { + padding: 8px 24px calc(24px + env(safe-area-inset-bottom)); + overflow-y: auto; + } + + .filter-drawer .filter-button { + min-height: 52px; + padding-inline: 0; + } + + .filter-drawer .filter-button[aria-pressed="true"] { + padding-left: 12px; + } + + .filter-drawer .filter-button[aria-pressed="true"]::before { + top: 10px; + bottom: 10px; + } + + .pdp-grid { + grid-template-columns: 1fr; + gap: 40px; + } + + .pdp-buybox { + position: static; + } + + .mobile-cart-bar { + position: fixed; + z-index: 70; + right: 0; + bottom: 0; + left: 0; + min-height: 56px; + display: flex; + gap: 16px; + align-items: center; + justify-content: space-between; + padding: 8px 16px calc(8px + env(safe-area-inset-bottom)); + pointer-events: none; + color: var(--espresso); + background: var(--porcelain); + border-top: 1px solid var(--line-strong); + box-shadow: 0 -8px 30px rgba(58, 42, 31, 0.12); + opacity: 0; + transform: translateY(105%); + transition: + opacity 200ms ease-out, + transform 220ms ease-out; + } + + .mobile-cart-bar[data-visible="true"] { + pointer-events: auto; + opacity: 1; + transform: translateY(0); + } + + .mobile-cart-caption { + min-width: 0; + display: block; + text-align: left; + } + + .mobile-cart-caption strong { + display: block; + overflow: hidden; + font-size: 13px; + font-weight: 500; + text-overflow: ellipsis; + white-space: nowrap; + } + + .mobile-cart-caption > span { + display: block; + color: var(--ink-2); + font: 400 11px/1.4 var(--mono); + } + + .mobile-cart-action { + min-width: 96px; + min-height: 40px; + display: grid; + place-items: center; + padding-inline: 16px; + color: var(--cream); + background: var(--espresso); + font-size: 11px; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + } + + .detail-grid { + grid-template-columns: 1fr; + gap: 28px; + } + + .footer-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } +} + +@media (max-width: 767px) { + :root { + --shell: calc(100vw - 40px); + } + + .section { + padding-block: 64px; + } + + .section-tight { + padding-block: 64px; + } + + .hero-grid { + display: block; + padding-block: 40px 64px; + } + + .hero-copy { + max-width: none; + } + + .hero-copy h1 { + margin-bottom: 16px; + font-size: 34px; + } + + .hero-copy > p:not(.eyebrow) { + font-size: 15px; + } + + .hero-actions { + display: grid; + gap: 20px; + margin-top: 28px; + } + + .hero-actions .button-primary { + width: 100%; + } + + .hero-actions .button-secondary { + justify-self: center; + } + + .hero-visual { + width: auto; + height: auto; + aspect-ratio: 4 / 5; + margin: 40px calc((100vw - var(--shell)) / -2) 0; + } + + .hero-visual > img { + object-position: 64% center; + } + + .section-head { + display: grid; + gap: 18px; + align-items: start; + margin-bottom: 32px; + } + + .category-section-head { + margin-top: 72px; + } + + .category-rail, + .category-index { + grid-template-columns: 1fr; + gap: 0; + } + + .category-tile, + .category-index-item { + min-height: 72px; + align-items: center; + padding-block: 16px; + } + + .category-arrow { + align-self: center; + } + + .product-grid { + gap: 40px 12px; + } + + .product-card .add-button { + padding-inline: 10px; + font-size: 10px; + } + + .testing-feature { + padding-inline: 20px; + } + + .document-head { + display: block; + } + + .document-row { + grid-template-columns: 1fr; + gap: 6px; + } + + .document-row span { + text-align: left; + } + + .bundle-grid, + .education-grid, + .journal-grid, + .value-grid { + grid-template-columns: 1fr; + } + + .newsletter-form { + display: grid; + } + + .newsletter-form button { + width: 100%; + } + + .page-hero { + padding-block: 56px 32px; + } + + .page-hero h1 { + font-size: 38px; + } + + .collection-toolbar { + grid-template-columns: 1fr; + } + + .testing-lookup { + grid-template-columns: 1fr; + } + + .testing-lookup .button { + width: 100%; + } + + .testing-row, + .spec-row { + grid-template-columns: 1fr; + gap: 4px; + } + + .testing-row > span, + .spec-row > span { + text-align: left; + } + + .pdp-main-image { + width: 100vw; + margin-left: calc((100% - 100vw) / 2); + } + + .buy-controls { + grid-template-columns: 104px minmax(0, 1fr); + } + + .detail-section { + padding-block: 64px; + } + + .footer-grid { + grid-template-columns: 1fr; + } + + .footer-bottom { + display: grid; + } + + .toast { + right: 16px; + bottom: calc(72px + env(safe-area-inset-bottom)); + left: 16px; + max-width: none; + } +} + +@media (max-width: 360px) { + :root { + --shell: calc(100vw - 32px); + } + + .concept-banner { + min-height: 40px; + padding-inline: 14px; + font-size: 9px; + } + + .header-main { + padding-inline: 16px; + } + + .search-wrap { + padding-inline: 16px; + } + + .search-shortcut { + right: 16px; + } + + .product-name { + font-size: 13px; + } + + .product-card .product-category { + font-size: 8px; + } + + .testing-micro span, + .testing-micro a { + font-size: 8px; + } + + .testing-micro { + align-items: flex-start; + } + + .product-buy-row { + gap: 6px; + } + + .price { + font-size: 12px; + } + + .product-card .add-button { + padding-inline: 8px; + } +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + scroll-behavior: auto !important; + transition-duration: 0.01ms !important; + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + } + + html[data-reveal-armed] .reveal, + .toast, + .mobile-cart-bar { + transform: none !important; + } + + html[data-reveal-armed] .reveal { + opacity: 1 !important; + } + + .product-image-wrap:hover > img, + .bundle-card:hover .bundle-image img { + transform: none; + } +} diff --git a/biologix-strategy-board/ovo-labs/site.js b/biologix-strategy-board/ovo-labs/site.js new file mode 100644 index 0000000..d20f729 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/site.js @@ -0,0 +1,2162 @@ +(() => { + "use strict"; + + const body = document.body; + const root = document.querySelector("#site-root"); + if (!root) return; + + const BASE = body.dataset.base || "."; + const PAGE = body.dataset.page || "home"; + const PRODUCT_SLUG = body.dataset.product || ""; + const CART_KEY = "ovo-demo-cart-v2"; + const RECENT_KEY = "ovo-recent-products-v1"; + const NEWSLETTER_KEY = "ovo-newsletter-preference-v1"; + const LEGACY_KEYS = { + cart: "datum-demo-cart-v2", + recent: "datum-recent-products-v1", + newsletter: "datum-newsletter-preference-v1", + }; + const MAX_QUANTITY = 10; + + const money = new Intl.NumberFormat("en-US", { + style: "currency", + currency: "USD", + maximumFractionDigits: 0, + }); + + const PRODUCTS = [ + { + slug: "retatrutide", + code: "OVO-001", + name: "Retatrutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 105, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format. Identity, labeled amount, format, and testing status stay together.", + }, + { + slug: "tirzepatide", + code: "OVO-002", + name: "Tirzepatide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 100, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format. Its essential product facts and testing status remain in one decision block.", + }, + { + slug: "semaglutide", + code: "OVO-003", + name: "Semaglutide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 90, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, presented with consistent product facts and visible testing status.", + }, + { + slug: "cagrilintide", + code: "OVO-004", + name: "Cagrilintide", + category: "GLP-1 & Metabolic", + categoryKey: "metabolic", + strength: "10 mg", + format: "Lyophilized vial", + price: 89, + descriptor: "Single-compound catalog reference in the GLP-1 & Metabolic collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, organized around identity, labeled amount, and testing status.", + }, + { + slug: "bpc-157", + code: "OVO-005", + name: "BPC-157", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 60, + descriptor: "Single-compound catalog reference in the Research Peptides collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, with concise product facts and visible testing status.", + }, + { + slug: "tb-500", + code: "OVO-006", + name: "TB-500", + category: "Research Peptides", + categoryKey: "research", + strength: "10 mg", + format: "Lyophilized vial", + price: 68, + descriptor: "Single-compound catalog reference in the Research Peptides collection.", + facts: ["10 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 10 mg single-vial format, with identity, format, price, and testing status together.", + }, + { + slug: "cjc-1295", + code: "OVO-007", + name: "CJC-1295", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 52, + descriptor: "Single-compound catalog reference in the Growth Hormone Research collection.", + facts: ["5 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 5 mg single-vial format, composed for direct finding, comparison, and inspection.", + }, + { + slug: "ipamorelin", + code: "OVO-008", + name: "Ipamorelin", + category: "Growth Hormone Research", + categoryKey: "growth", + strength: "5 mg", + format: "Lyophilized vial", + price: 45, + descriptor: "Single-compound catalog reference in the Growth Hormone Research collection.", + facts: ["5 mg labeled amount", "Single-vial format", "No result reported"], + overview: + "A single-compound catalog entry in a 5 mg single-vial format, with comparable facts and visible testing status.", + }, + { + slug: "cjc-ipamorelin-blend", + code: "OVO-009", + name: "CJC-1295 + Ipamorelin", + category: "Peptide Blends", + categoryKey: "blends", + strength: "10 mg", + format: "Dual-compound vial", + price: 92, + descriptor: "Defined two-compound catalog reference in the Peptide Blends collection.", + facts: ["5 mg + 5 mg labeled", "Single-vial blend format", "No result reported"], + overview: + "A two-compound blend shown as its own product, with each constituent and the testing status kept explicit.", + }, + { + slug: "bpc-tb-blend", + code: "OVO-010", + name: "BPC-157 + TB-500", + category: "Peptide Blends", + categoryKey: "blends", + strength: "20 mg", + format: "Dual-compound vial", + price: 118, + descriptor: "Defined two-compound catalog reference in the Peptide Blends collection.", + facts: ["10 mg + 10 mg labeled", "Single-vial blend format", "No result reported"], + overview: + "A two-compound blend with its own product identity, labeled composition, and testing status.", + }, + ]; + + const BUNDLES = [ + { + slug: "metabolic-reference-set", + code: "OVO-S01", + name: "Metabolic Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "Retatrutide + Cagrilintide", + price: 169, + descriptor: "Two individually identified entries from the metabolic collection.", + productSlugs: ["retatrutide", "cagrilintide"], + }, + { + slug: "peptide-pair-set", + code: "OVO-S02", + name: "Peptide Pair Set", + category: "Curated Set", + strength: "2 vials", + format: "BPC-157 + TB-500", + price: 108, + descriptor: "Two individually identified entries from the research peptide collection.", + productSlugs: ["bpc-157", "tb-500"], + }, + { + slug: "secretagogue-reference-set", + code: "OVO-S03", + name: "Secretagogue Reference Set", + category: "Curated Set", + strength: "2 vials", + format: "CJC-1295 + Ipamorelin", + price: 82, + descriptor: "Two individually identified entries from the growth-hormone research collection.", + productSlugs: ["cjc-1295", "ipamorelin"], + }, + ]; + + const CATEGORIES = [ + { key: "all", name: "Shop All", note: `${PRODUCTS.length} products` }, + { key: "metabolic", name: "GLP-1 & Metabolic", note: "4 individual compounds" }, + { key: "research", name: "Research Peptides", note: "2 individual compounds" }, + { key: "growth", name: "Growth Hormone Research", note: "2 individual compounds" }, + { key: "blends", name: "Peptide Blends", note: "2 defined blends" }, + ]; + + const ARTICLES = [ + { + slug: "reading-testing-status", + title: "How to read a testing status", + summary: "A result, a specification, and an unreported field are three different things.", + }, + { + slug: "choosing-by-molecule", + title: "Shop by molecule, not by hype", + summary: "A practical catalog framework for comparing identity, strength, format, and evidence state.", + }, + { + slug: "coa-boundaries", + title: "What a COA can—and cannot—show", + summary: "Why a document’s method and scope matter more than the letters at the top.", + }, + ]; + + const ALL_CART_ITEMS = [...PRODUCTS, ...BUNDLES]; + + const icons = { + menu: + '', + cart: + '', + arrow: '', + }; + + function path(relative) { + return `${BASE}/${relative}`.replace(/\/\.\//g, "/"); + } + + function productPath(product) { + return path(`peptides/${product.slug}.html`); + } + + function escapeHtml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """) + .replaceAll("'", "'"); + } + + function track(event, properties = {}) { + const payload = { + event, + page_type: PAGE, + timestamp: new Date().toISOString(), + ...properties, + }; + window.dataLayer = window.dataLayer || []; + window.dataLayer.push(payload); + window.dispatchEvent(new CustomEvent("ovo:analytics", { detail: payload })); + } + + window.OVOAnalytics = { + events: () => [...(window.dataLayer || [])], + clear: () => { + window.dataLayer = []; + }, + }; + + function activePage(name) { + if (name === "shop" && ["collection", "product"].includes(PAGE)) return true; + if (name === "testing" && PAGE === "testing") return true; + if (name === "sets" && PAGE === "bundles") return true; + if (name === "journal" && ["learn", "article"].includes(PAGE)) return true; + if (name === "about" && ["about", "policy"].includes(PAGE)) return true; + return false; + } + + function header() { + const nav = [ + ["shop", "Shop", "catalog.html"], + ["sets", "Sets", "bundles.html"], + ["testing", "Testing", "testing.html"], + ["journal", "Journal", "notes.html"], + ]; + + return ` + +
    + Fictional concept storefront. Nothing here is real, stocked, or for sale. +
    + + `; + } + + function footer() { + return ` + + `; + } + + function filterControls() { + return CATEGORIES.map( + (category) => ` + + `, + ).join(""); + } + + function drawers() { + const collectionFilterDrawer = + PAGE === "collection" + ? ` + + ` + : ""; + return ` + + + + ${collectionFilterDrawer} +
    + `; + } + + function layout(main) { + root.innerHTML = `${header()}
    ${main}
    ${footer()}${drawers()}`; + } + + function productImage(product, eager = false) { + return ` + OVO Labs amber research vial representing ${escapeHtml(product.name)} + + `; + } + + function productCard(product, options = {}) { + const { eager = false } = options; + return ` + + `; + } + + function categoryRail() { + return ` +
    + ${CATEGORIES.slice(1) + .map( + (category) => ` + + + ${category.name} + ${category.note} + + + + `, + ) + .join("")} +
    + `; + } + + function bundleCard(bundle) { + const items = bundle.productSlugs.map((slug) => PRODUCTS.find((product) => product.slug === slug)); + const individualTotal = items.reduce((sum, product) => sum + product.price, 0); + const arithmetic = `${items.map((product) => money.format(product.price)).join(" + ")} = ${money.format(individualTotal)}`; + return ` +
    +
    + Two OVO Labs amber research vials representing ${escapeHtml(bundle.name)} +
    +
    +

    ${escapeHtml(bundle.code)} · Curated set

    +

    ${escapeHtml(bundle.name)}

    +

    ${escapeHtml(bundle.descriptor)}

    +
      + ${items + .map( + (product) => + `
    • ${escapeHtml(product.name)}${escapeHtml(product.strength)} · ${money.format(product.price)}
    • `, + ) + .join("")} +
    +

    Individual concepts${arithmetic}

    + +
    +
    + `; + } + + function newsletter() { + return ` + + `; + } + + function homePage() { + return ` +
    +
    +
    +

    Peptide science, refined.

    +

    A considered collection of peptide compounds.

    +

    Ten distinct compounds and blends, organized for direct comparison. Clear formats, visible testing status, and a quiet path from search to cart.

    + +
    +
    + An OVO Labs amber research vial in warm window light +
    +
    +
    +
    +
    +
    +
    +

    The collection

    +

    Four ways into the collection.

    +
    +

    Browse by research area, or search for a molecule or OVO code when you know exactly where to begin.

    +
    + ${categoryRail()} +
    +
    +
    +
    +
    +
    +

    The first edit

    +

    Begin with the molecule.

    +
    + View the full collection ${icons.arrow} +
    +
    + ${PRODUCTS.slice(0, 4) + .map((product, index) => productCard(product, { eager: index < 2 })) + .join("")} +
    +
    +
    +
    +
    +
    +

    Testing

    +

    Evidence, without ornament.

    +

    Every product carries its testing status at the point of choice. A reported result and an unreported field remain visibly distinct.

    + Read the testing framework ${icons.arrow} +
    +
    +
    +
    + OVO-001 · Retatrutide + TESTING STATUS +
    + NO RESULT REPORTED +
    +
    IdentityMethod not assigned · Result not reported
    +
    Content / massMethod not assigned · Result not reported
    +
    Purity profileMethod not assigned · Result not reported
    +
    Sterility / endotoxinNot represented · Result not reported
    +
    +
    +
    +
    +
    +
    +
    +

    Curated sets

    +

    Related compounds, kept distinct.

    +
    + Explore the sets ${icons.arrow} +
    +
    ${BUNDLES.map(bundleCard).join("")}
    +
    +
    +
    +
    +
    +
    +

    OVO Journal

    +

    Read before choosing.

    +
    + Open the journal ${icons.arrow} +
    +
    + ${ARTICLES.map( + (article) => ` + + `, + ).join("")} +
    +
    +
    +
    +
    +

    The OVO principle

    +

    Quiet standards. Clear boundaries.

    +

    Product information stays composed, and missing evidence stays visible.

    + About OVO Labs ${icons.arrow} +
    +
    + ${newsletter()} + `; + } + + function collectionPage() { + return ` +
    +
    +

    The full catalog

    +

    Find the exact peptide entry.

    +

    Filter by research area, search by molecule or product code, then compare strength, format, testing status, and price without leaving the grid.

    +
    +
    +
    +
    + +
    +

    Catalog products

    +
    + + + + + +
    +

    ${PRODUCTS.length} products

    +
    + ${PRODUCTS.map((product) => productCard(product)).join("")} +
    +
    +
    +
    +
    +
    +
    +
    +

    Not sure where to start?

    +

    Use the testing state as a filter.

    +
    +

    Every entry currently shows the same clear state: no analytical result has been reported. The testing page explains what each method would and would not establish.

    +
    + Review testing ${icons.arrow} +
    +
    + `; + } + + function analyticalSourceNote() { + return ` + + `; + } + + function testingPage() { + return ` +
    +
    +

    Testing

    +

    Testing status belongs beside the product.

    +

    Search an OVO Labs product name or code to see the exact testing status. No certificate, laboratory relationship, result, or release claim is implied.

    +
    + + + +
    +
    +
    +
    +
    +
    +
    +

    The framework

    +

    Four fields. Four different questions.

    +

    A single number cannot answer identity, amount, composition, and microbiological questions at once.

    +
    +
    +
    IdentityDoes the observed analytical profile match the intended compound?NO RESULT
    +
    Content / massHow much material is reported under the selected method?NO RESULT
    +
    Purity profileWhat relative composition is reported under the selected method?NO RESULT
    +
    Sterility / endotoxinWere separate microbiological methods represented?NOT REPRESENTED
    +
    +
    +
    + ${analyticalSourceNote()} +
    +
    +
    +
    +
    +
    +

    Catalog status

    +

    Every current entry

    +
    +

    Every status is intentionally explicit instead of dressing absence up as proof.

    +
    + +
    +
    +
    +
    +
    +

    Read the document

    +

    What a COA can—and cannot—show

    +
    +
    + ${accordion([ + [ + "Does a purity result prove identity?", + "Not by itself. Identity and relative purity answer different questions and may require different analytical methods.", + ], + [ + "Does a reported result prove every vial is the same?", + "No. A result applies only to the identified sample and method scope. Sampling, chain of custody, and lot linkage remain separate questions.", + ], + [ + "Does a COA establish suitability for human use?", + "No. OVO Labs does not present human-use, safety, efficacy, clinical, administration, or preparation information.", + ], + [ + "Why show fields with no result?", + "Because a visible empty state is more informative than a badge that leaves the scope ambiguous. Missing evidence should remain visibly missing.", + ], + ])} +
    +
    +
    + `; + } + + function bundlesPage() { + return ` +
    +
    +

    Curated sets

    +

    Related compounds, kept distinct.

    +

    Related products grouped for simpler browsing and one cart action. Every item remains linked to its own product and testing page.

    +
    +
    +
    +
    +

    Curated OVO Labs sets

    +
    ${BUNDLES.map(bundleCard).join("")}
    +
    +
    +
    +
    +
    +

    Why sets exist

    +

    Reduce search work without creating ambiguity.

    +
    +
    +

    Separate identities

    Every molecule keeps its own code, strength, product page, and testing state.

    +

    One cart action

    The set enters the cart as one clearly labeled item with its included products listed.

    +

    No false savings

    The set price is shown directly without fabricated list prices or countdown offers.

    +
    +
    +
    + ${newsletter()} + `; + } + + function learnPage() { + return ` +
    +
    +

    OVO Journal

    +

    Read the facts behind the catalog.

    +

    Short guides for comparing peptide products, interpreting testing states, and understanding what a document’s scope does—and does not—establish.

    +
    +
    +
    +
    +

    OVO Labs journal articles

    +
    + ${ARTICLES.map( + (article, index) => ` + + `, + ).join("")} +
    +
    +
    +
    +
    +
    +

    Fast answers

    +

    Catalog FAQ

    +
    +
    + ${accordion([ + ["Is OVO Labs a real company?", "No. It is a fictional, non-operational storefront concept. Nothing is stocked, sold, shipped, tested, or transacted."], + ["Why show concept prices?", "Prices make the ecommerce prototype complete enough to evaluate its hierarchy, cart states, sorting, and merchandising. They are not offers for sale."], + ["Why are there no ratings?", "No customers or reviews exist. Empty or invented social proof would make the interface less trustworthy, not more."], + ["Can I check out?", "No. The local demo cart supports add, update, remove, and subtotal states, then ends before checkout or payment."], + ])} +
    +
    +
    + ${newsletter()} + `; + } + + function faqPage() { + return ` +
    +
    +

    Help & details

    +

    Questions, answered plainly.

    +

    What the catalog shows, what “No result reported” means, how browser storage works, and exactly where this fictional store stops.

    +
    +
    +
    +
    +
    +

    OVO Labs FAQ

    +

    The complete store boundary.

    +
    +
    + ${accordion([ + ["Can I place an order?", "No. OVO Labs is a fictional concept storefront. The cart is browser-only, and there is no checkout, payment, inventory, shipping, customer account, or fulfillment operation."], + ["What does “No result reported” mean?", "It means no testing result is published for that catalog item. It does not mean the item passed, failed, or is waiting on a promised result."], + ["Does a COA prove a product is safe, effective, or sterile?", "No. A document supports only the measurements, sample, method, date, and scope it identifies. Unreported attributes should not be inferred."], + ["Why are there no purity percentages?", "No testing result is published for these products. OVO Labs does not invent percentages or testing claims to make a product page feel complete."], + ["Does this catalog provide human-use information?", "No dosing, preparation, administration, safety, efficacy, medical, or human-use guidance is provided."], + ["Are the product descriptions medical advice?", "No. They identify proposed catalog references and formats only."], + ["How does search work?", "Search by peptide name, category, blend name, or catalog code such as OVO-001. Keyboard users can move through predictive results with the arrow keys."], + ["Why are there no customer reviews?", "There are no customers or order history. OVO Labs does not fabricate ratings, testimonials, or purchase activity."], + ["What information does this site store?", "Cart contents, recently viewed product codes, and the newsletter preference can be stored locally in your browser. No cart contents, entered email address, or saved preference is transmitted by the prototype."], + ["How do I remove locally saved information?", "Use Clear cart in the cart drawer. You can also clear this site’s browser storage to remove all local state."], + ])} +
    +
    +
    +
    + +
    + `; + } + + function aboutPage() { + return ` +
    +
    +

    About OVO Labs

    +

    A peptide store designed around finding and deciding.

    +

    OVO Labs is designed around a simple idea: product information should be easy to scan, and missing evidence should be impossible to miss.

    +
    +
    +
    +
    +
    +

    The premise

    +

    Retail clarity can do more work than scientific theater.

    +
    +
    +

    The strongest specialist stores help people find the right entry quickly, compare it in place, and understand the next action. OVO Labs applies that discipline without inventing operations or proof.

    +
    +
    Catalog modelFocused selection, stable product codes, and flat product routes
    +
    Discovery modelPersistent search, visual category paths, filters, and related entries
    +
    Product modelIdentity, labeled amount, format, price, and testing status in one decision block
    +
    Proof modelOnly substantiated facts; no invented ratings, laboratories, results, or popularity
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Operating principles

    +

    What the brand refuses to fake

    +
    +
    +
    +

    No decorative proof

    No badges, reviews, lab names, purity figures, certificates, or quality claims exist without evidence.

    +

    No urgency machinery

    No stock countdown, sale timer, crossed-out anchor price, or invented best-seller ranking pushes the click.

    +

    No fake transaction

    The local demo cart is complete enough to evaluate, then stops before checkout, payment, fulfillment, or customer data capture.

    +
    +
    +
    +
    +
    + +
    +
    + `; + } + + function policyPage() { + return ` +
    +
    +

    Concept boundaries

    +

    This storefront demonstrates an interface, not an operation.

    +

    OVO Labs has no company operations, products, inventory, customers, testing, fulfillment, payments, or ordering capability.

    +
    +
    +
    +

    What the prototype does

    +

    It demonstrates ecommerce information architecture: product discovery, category filtering, predictive search, product pages, testing-status presentation, a journal, and a browser-local demo cart.

    +

    What the prototype does not do

    +
      +
    • It does not offer, sell, reserve, quote, or ship material.
    • +
    • It does not collect payment, customer accounts, addresses, or submitted email data.
    • +
    • It does not claim a laboratory, certificate, result, purity level, stock state, delivery time, or customer experience.
    • +
    • It does not provide dosing, preparation, administration, clinical, therapeutic, safety, efficacy, or human-use information.
    • +
    +
    The cart is local. Its contents are stored only in this browser. The interaction ends before checkout, and clearing browser storage removes it.
    +

    Why the banner stays visible

    +

    The thin top notice keeps the concept status clear on every route while allowing the rest of the prototype to be evaluated as a real ecommerce design.

    +

    Return to the concept catalog ${icons.arrow}

    +
    + `; + } + + function productPage(product) { + if (!product) return notFoundPage(); + const categoryRelated = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey === product.categoryKey, + ); + const crossCategoryRelated = PRODUCTS.filter( + (candidate) => candidate.slug !== product.slug && candidate.categoryKey !== product.categoryKey, + ); + const related = [...categoryRelated, ...crossCategoryRelated].slice(0, 4); + + return ` +
    + +
    + +
    +

    ${escapeHtml(product.category)}

    +

    ${escapeHtml(product.name)}

    + ${escapeHtml(product.code)} · ${escapeHtml(product.format)} + + Testing · No result reported + +

    ${escapeHtml(product.overview)}

    +
    + ${money.format(product.price)} +
    +

    Strength${escapeHtml(product.strength)}

    +
    +
    + + + + +
    + +
    +
    +
    Product code${escapeHtml(product.code)}
    +
    Labeled amount${escapeHtml(product.strength)}
    +
    TestingNo result reported
    +
    +

    Adds this item to a browser-only cart. No order, payment, or shipment is created.

    +
    +
    +
    +
    +
    +
    +

    Product facts

    +

    The comparison fields, up front.

    +
    +
    +
    Product name${escapeHtml(product.name)}
    +
    Catalog code${escapeHtml(product.code)}
    +
    Research area${escapeHtml(product.category)}
    +
    Labeled amount${escapeHtml(product.strength)}
    +
    Format${escapeHtml(product.format)}
    +
    Analytical stateNo result reported
    +
    +
    +
    +
    +
    +
    +

    Testing status

    +

    Every missing result stays visible.

    +
    +
    +
    IdentityMethod not assignedNO RESULT
    +
    Content / massMethod not assignedNO RESULT
    +
    Purity profileMethod not assignedNO RESULT
    +
    Sterility / endotoxinNot representedNOT REPORTED
    +
    +
    +
    +
    +
    +
    +

    Product questions

    +

    Know what this page means.

    +
    +
    + ${accordion([ + ["Is this product available?", "No. This storefront is fictional and has no material, inventory, availability, ordering, or fulfillment."], + ["What does the listed price mean?", "It lets the storefront demonstrate sorting, merchandising, cart totals, and product hierarchy. It is not an offer or quote."], + ["Has this entry been tested?", "No testing or laboratory relationship is represented. Every analytical field on the page explicitly says that no result has been reported."], + ["Where is administration information?", "It is intentionally absent. OVO Labs does not provide dosing, preparation, administration, human-use, safety, efficacy, or outcome information."], + ])} +
    +
    +
    +
    +
    +
    +
    +

    Keep comparing

    +

    Related compounds

    +
    + View the full catalog ${icons.arrow} +
    +
    ${related.map((item) => productCard(item)).join("")}
    +
    +
    + + `; + } + + function articlePage(slug) { + const content = { + "reading-testing-status": { + eyebrow: "Testing guide · 4 minutes", + title: "How to read a testing status", + lede: "Start with the question the method is meant to answer. Then check whether a result is actually reported.", + sections: [ + ["A specification is not a result", "A specification describes an intended target or acceptance rule. A result describes what was observed for an identified sample under a stated method. One should never be styled as the other."], + ["Identity, amount, and composition are separate", "An identity method asks whether the observed profile matches the intended compound. A content or mass method asks how much is reported. A purity method describes relative composition under its method conditions. None automatically answers the others."], + ["“No result reported” is useful information", "An explicit empty state prevents a shopper from assuming that a badge, document icon, or quality headline stands in for evidence. It keeps the unknown visible at the moment of comparison."], + ], + analyticalSources: true, + }, + "choosing-by-molecule": { + eyebrow: "Catalog guide · 4 minutes", + title: "Shop by molecule, not by hype", + lede: "A clean catalog starts with product identity, then narrows by strength, format, code, and evidence state.", + sections: [ + ["Start with the exact entry", "Separate compounds should have separate product pages. A selector is useful for genuine strengths of the same item, not for hiding unrelated molecules inside one high-traffic page."], + ["Compare the same fields every time", "Product name, code, strength, format, price concept, and testing status should appear in predictable positions. Consistency turns a grid into a comparison tool."], + ["Use categories as a shortcut", "Research-area categories help exploration, while exact-name and product-code search help returning or expert shoppers. Both paths should reach the same canonical product page."], + ], + analyticalSources: false, + }, + "coa-boundaries": { + eyebrow: "Document guide · 5 minutes", + title: "What a COA can—and cannot—show", + lede: "The value of a certificate depends on the identified sample, the method, the result, and the scope. The title alone proves very little.", + sections: [ + ["Read the scope before the number", "A reported purity figure does not automatically establish identity, total content, sterility, endotoxin state, stability, or suitability for a particular use."], + ["Check the sample link", "A result is only useful when the document identifies the tested sample and the catalog can explain how that sample relates to the represented item."], + ["Do not fill gaps with design", "A green badge, seal, laboratory photograph, or download icon cannot replace a reported result. If a field is missing, the interface should say so directly."], + ], + analyticalSources: true, + }, + }[slug]; + + if (!content) return notFoundPage(); + return ` +
    +

    ${escapeHtml(content.eyebrow)}

    +

    ${escapeHtml(content.title)}

    +

    ${escapeHtml(content.lede)}

    +
    This guide describes document and catalog structure. It does not provide medical, clinical, preparation, administration, or human-use information.
    + ${content.sections + .map(([heading, copy]) => `

    ${escapeHtml(heading)}

    ${escapeHtml(copy)}

    `) + .join("")} + ${content.analyticalSources ? analyticalSourceNote() : ""} +

    Continue through the store

    +

    Use the testing page to inspect current concept states, or return to the catalog to compare entries using the same fields.

    +

    + Explore testing + Browse products +

    +
    +
    +
    +

    More from OVO Labs

    Related guides

    +
    + ${ARTICLES.filter((article) => article.slug !== slug) + .map( + (article) => ``, + ) + .join("")} +
    +
    +
    + `; + } + + function notFoundPage() { + return ` +
    +
    +

    404 · Page not found

    +

    This catalog path does not exist.

    +

    Search for a molecule, return to the product grid, or use one of the main research-area categories.

    + +
    +
    +
    +
    +

    Suggested collection paths

    + ${categoryRail()} +
    ${PRODUCTS.slice(0, 4).map((product) => productCard(product)).join("")}
    +
    +
    + `; + } + + function accordion(items) { + const instance = ++accordion.counter; + return ` +
    + ${items + .map( + ([question, answer], index) => ` +
    + +
    + ${escapeHtml(answer)} +
    +
    + `, + ) + .join("")} +
    + `; + } + accordion.counter = 0; + + function renderPage() { + const pages = { + home: homePage, + collection: collectionPage, + testing: testingPage, + bundles: bundlesPage, + learn: learnPage, + faq: faqPage, + about: aboutPage, + policy: policyPage, + product: () => productPage(PRODUCTS.find((product) => product.slug === PRODUCT_SLUG)), + article: () => articlePage(body.dataset.article || ""), + 404: notFoundPage, + }; + const renderer = pages[PAGE] || notFoundPage; + layout(renderer()); + } + + function migrateLegacyStorage() { + try { + if (localStorage.getItem(CART_KEY) === null && localStorage.getItem(LEGACY_KEYS.cart) !== null) { + localStorage.setItem(CART_KEY, localStorage.getItem(LEGACY_KEYS.cart)); + } + if (localStorage.getItem(RECENT_KEY) === null && localStorage.getItem(LEGACY_KEYS.recent) !== null) { + localStorage.setItem(RECENT_KEY, localStorage.getItem(LEGACY_KEYS.recent)); + } + if (localStorage.getItem(NEWSLETTER_KEY) === null && localStorage.getItem(LEGACY_KEYS.newsletter) !== null) { + localStorage.setItem(NEWSLETTER_KEY, localStorage.getItem(LEGACY_KEYS.newsletter)); + } + } catch { + // Storage can be unavailable; all core browsing behavior remains functional without it. + } + } + + function readCart() { + try { + const parsed = JSON.parse(localStorage.getItem(CART_KEY) || "[]"); + if (!Array.isArray(parsed)) return []; + return parsed + .filter((item) => ALL_CART_ITEMS.some((candidate) => candidate.slug === item.slug)) + .map((item) => ({ + slug: item.slug, + quantity: Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(item.quantity, 10) || 1)), + })); + } catch { + return []; + } + } + + migrateLegacyStorage(); + let cart = readCart(); + let lastFocusedElement = null; + let toastTimer = null; + + function saveCart(preferredFocusSelector) { + localStorage.setItem(CART_KEY, JSON.stringify(cart)); + renderCart(preferredFocusSelector); + } + + function cartItemData(slug) { + return ALL_CART_ITEMS.find((item) => item.slug === slug); + } + + function cartTotal() { + return cart.reduce((total, line) => { + const item = cartItemData(line.slug); + return total + (item ? item.price * line.quantity : 0); + }, 0); + } + + function restoreCartFocus(preferredFocusSelector) { + if (preferredFocusSelector === undefined) return; + const drawer = document.querySelector("[data-cart-drawer]"); + if (!drawer || drawer.dataset.open !== "true") return; + const preferred = preferredFocusSelector ? drawer.querySelector(preferredFocusSelector) : null; + const fallback = + drawer.querySelector("[data-cart-quantity]") || + drawer.querySelector("[data-remove-product]") || + drawer.querySelector("[data-cart-close]"); + (preferred || fallback)?.focus(); + } + + function renderCart(preferredFocusSelector) { + const count = cart.reduce((total, item) => total + item.quantity, 0); + document.querySelectorAll("[data-cart-count]").forEach((element) => { + element.textContent = `(${count})`; + element.hidden = false; + }); + + const itemsRoot = document.querySelector("[data-cart-items]"); + const footerRoot = document.querySelector("[data-cart-footer]"); + if (!itemsRoot || !footerRoot) return; + + if (cart.length === 0) { + itemsRoot.innerHTML = ` +
    +
    + Your cart is empty. +

    Browse the collection to add a peptide or set.

    + Shop products +
    +
    + `; + footerRoot.innerHTML = ` +

    This is where the demo ends. Nothing is stocked, sold, or shippable. No order, account, payment, or message is created.

    + `; + restoreCartFocus(preferredFocusSelector); + return; + } + + itemsRoot.innerHTML = cart + .map((line) => { + const item = cartItemData(line.slug); + if (!item) return ""; + return ` +
    + +
    +
    +

    ${escapeHtml(item.name)}

    + ${money.format(item.price * line.quantity)} +
    +

    ${escapeHtml(item.code)} · ${escapeHtml(item.strength)}

    +
    +
    + + ${line.quantity} + +
    + +
    +
    +
    + `; + }) + .join(""); + + footerRoot.innerHTML = ` +
    Subtotal${money.format(cartTotal())}
    +

    This is where the demo ends. Nothing is stocked, sold, or shippable. This cart is stored only in your browser; no order, account, payment, or message is created.

    + + `; + restoreCartFocus(preferredFocusSelector); + } + + function addToCart(slug, quantity = 1) { + const item = cartItemData(slug); + if (!item) return; + const safeQuantity = Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity, 10) || 1)); + const existing = cart.find((line) => line.slug === slug); + if (existing) { + existing.quantity = Math.min(MAX_QUANTITY, existing.quantity + safeQuantity); + } else { + cart.push({ slug, quantity: safeQuantity }); + } + saveCart(); + openDrawer("cart"); + track("add_to_cart", { + item_id: item.code, + item_name: item.name, + item_category: item.category, + price: item.price, + quantity: safeQuantity, + demo_only: true, + }); + } + + function changeCartQuantity(slug, delta) { + const line = cart.find((item) => item.slug === slug); + const product = cartItemData(slug); + if (!line || !product) return; + line.quantity = Math.max(0, Math.min(MAX_QUANTITY, line.quantity + delta)); + if (line.quantity === 0) { + cart = cart.filter((item) => item.slug !== slug); + track("remove_from_cart", { item_id: product.code, item_name: product.name, demo_only: true }); + } else { + track("cart_quantity_changed", { + item_id: product.code, + item_name: product.name, + quantity: line.quantity, + demo_only: true, + }); + } + saveCart( + line.quantity === 0 + ? null + : `[data-cart-quantity="${CSS.escape(slug)}"][data-delta="${delta}"]`, + ); + } + + function showToast(message) { + const toast = document.querySelector("[data-toast]"); + if (!toast) return; + window.clearTimeout(toastTimer); + toast.textContent = message; + toast.dataset.open = "true"; + toastTimer = window.setTimeout(() => { + toast.dataset.open = "false"; + }, 2800); + } + + function drawerElements(type) { + const selectorByType = { + cart: "[data-cart-drawer]", + menu: "[data-mobile-drawer]", + filter: "[data-filter-drawer]", + }; + const drawer = document.querySelector(selectorByType[type]); + const others = [...document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer], [data-filter-drawer]")].filter( + (candidate) => candidate !== drawer, + ); + return { drawer, others }; + } + + function setPageInert(isInert) { + document.querySelectorAll(".site-header, #main-content, .site-footer").forEach((element) => { + element.inert = isInert; + }); + } + + function openDrawer(type) { + const { drawer, others } = drawerElements(type); + const backdrop = document.querySelector("[data-drawer-backdrop]"); + if (!drawer || !backdrop) return; + lastFocusedElement = document.activeElement; + others.forEach((other) => { + other.dataset.open = "false"; + other.setAttribute("aria-hidden", "true"); + other.inert = true; + }); + drawer.inert = false; + drawer.dataset.open = "true"; + drawer.setAttribute("aria-hidden", "false"); + backdrop.dataset.open = "true"; + body.classList.add("drawer-open"); + setPageInert(true); + const initialFocus = drawer.querySelector("button, a"); + const ensureDrawerFocus = () => { + if (drawer.dataset.open === "true" && !drawer.contains(document.activeElement)) { + initialFocus?.focus({ preventScroll: true }); + } + }; + ensureDrawerFocus(); + window.requestAnimationFrame(() => { + ensureDrawerFocus(); + window.requestAnimationFrame(ensureDrawerFocus); + }); + window.setTimeout(ensureDrawerFocus, 50); + if (type === "cart") { + track("view_cart", { item_count: cart.reduce((sum, item) => sum + item.quantity, 0), demo_only: true }); + } + } + + function closeDrawers() { + const backdrop = document.querySelector("[data-drawer-backdrop]"); + const drawers = [...document.querySelectorAll("[data-cart-drawer], [data-mobile-drawer], [data-filter-drawer]")]; + const wasOpen = drawers.some((drawer) => drawer.dataset.open === "true"); + drawers.forEach((drawer) => { + drawer.dataset.open = "false"; + drawer.setAttribute("aria-hidden", "true"); + drawer.inert = true; + }); + if (backdrop) backdrop.dataset.open = "false"; + body.classList.remove("drawer-open"); + setPageInert(false); + if (wasOpen && lastFocusedElement instanceof HTMLElement) lastFocusedElement.focus(); + if (wasOpen) lastFocusedElement = null; + } + + function initDrawersAndCart() { + renderCart(); + document.addEventListener("click", (event) => { + if (event.target.closest("[data-drawer-backdrop]")) { + closeDrawers(); + return; + } + const target = event.target.closest("button, a"); + if (!target) return; + + if (target.matches("[data-cart-open]")) openDrawer("cart"); + if (target.matches("[data-cart-close], [data-menu-close], [data-filter-close]")) closeDrawers(); + if (target.matches("[data-menu-open]")) openDrawer("menu"); + if (target.matches("[data-filter-open]")) openDrawer("filter"); + + if (target.dataset.addProduct) { + addToCart(target.dataset.addProduct); + } + + if (target.dataset.pdpAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.pdpAdd, quantity); + } + + if (target.dataset.mobileAdd) { + const quantity = document.querySelector("#pdp-quantity")?.value || 1; + addToCart(target.dataset.mobileAdd, quantity); + } + + if (target.dataset.cartQuantity) { + changeCartQuantity(target.dataset.cartQuantity, Number(target.dataset.delta)); + } + + if (target.dataset.removeProduct) { + const item = cartItemData(target.dataset.removeProduct); + cart = cart.filter((line) => line.slug !== target.dataset.removeProduct); + saveCart(null); + if (item) { + showToast(`${item.name} removed from the cart.`); + track("remove_from_cart", { item_id: item.code, item_name: item.name, demo_only: true }); + } + } + + if (target.matches("[data-clear-cart]")) { + cart = []; + saveCart(null); + showToast("Cart cleared."); + track("cart_cleared", { demo_only: true }); + } + }); + + document.addEventListener("keydown", (event) => { + if ( + event.key === "Escape" && + document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ) + ) { + closeDrawers(); + } + if (event.key !== "Tab") return; + const openDrawerElement = document.querySelector( + '[data-cart-drawer][data-open="true"], [data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ); + if (!openDrawerElement) return; + const focusable = [ + ...openDrawerElement.querySelectorAll( + 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])', + ), + ]; + if (focusable.length === 0) return; + const first = focusable[0]; + const last = focusable.at(-1); + if (event.shiftKey && document.activeElement === first) { + event.preventDefault(); + last.focus(); + } else if (!event.shiftKey && document.activeElement === last) { + event.preventDefault(); + first.focus(); + } + }); + + const mobileLayout = window.matchMedia("(max-width: 960px)"); + mobileLayout.addEventListener("change", (event) => { + if (event.matches) return; + const mobileOnlyDrawer = document.querySelector( + '[data-mobile-drawer][data-open="true"], [data-filter-drawer][data-open="true"]', + ); + if (mobileOnlyDrawer) closeDrawers(); + }); + } + + const SEARCH_ALIASES = { + retatrutide: ["reta"], + tirzepatide: ["tirz"], + semaglutide: ["sema"], + cagrilintide: ["cagri"], + "bpc-157": ["bpc", "bpc157"], + "tb-500": ["tb", "tb500"], + "cjc-1295": ["cjc", "cjc1295"], + ipamorelin: ["ipa", "ipam"], + "cjc-ipamorelin-blend": ["cjc ipa", "cjc ipam blend"], + "bpc-tb-blend": ["bpc tb", "bpc tb blend"], + }; + + function normalizeSearch(value) { + return String(value) + .normalize("NFKD") + .toLowerCase() + .replace(/[^a-z0-9]+/g, " ") + .trim() + .replace(/\s+/g, " "); + } + + function editDistance(left, right) { + const previous = Array.from({ length: right.length + 1 }, (_, index) => index); + for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) { + const current = [leftIndex]; + for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) { + current[rightIndex] = Math.min( + current[rightIndex - 1] + 1, + previous[rightIndex] + 1, + previous[rightIndex - 1] + (left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1), + ); + } + previous.splice(0, previous.length, ...current); + } + return previous[right.length]; + } + + function productSearchText(product) { + return normalizeSearch( + [ + product.name, + product.code, + product.category, + product.strength, + product.format, + product.descriptor, + ...(SEARCH_ALIASES[product.slug] || []), + ].join(" "), + ); + } + + function productMatchesQuery(product, query) { + const normalized = normalizeSearch(query); + if (!normalized) return true; + const searchable = productSearchText(product); + if (searchable.includes(normalized)) return true; + + const searchableTokens = searchable.split(" "); + return normalized.split(" ").every((queryToken) => + searchableTokens.some((searchableToken) => { + if (searchableToken.startsWith(queryToken)) return true; + if (queryToken.length >= 4 && queryToken.startsWith(searchableToken)) return true; + const threshold = queryToken.length >= 8 ? 2 : queryToken.length >= 4 ? 1 : 0; + return threshold > 0 && Math.abs(queryToken.length - searchableToken.length) <= threshold + ? editDistance(queryToken, searchableToken) <= threshold + : false; + }), + ); + } + + function safeSearchTelemetry(query, resultCount) { + const normalized = normalizeSearch(query); + const knownCodes = PRODUCTS.map((product) => normalizeSearch(product.code)); + const knownNames = PRODUCTS.map((product) => normalizeSearch(product.name)); + const knownAliases = Object.values(SEARCH_ALIASES).flat().map(normalizeSearch); + const knownCategories = CATEGORIES.slice(1).map((category) => normalizeSearch(category.name)); + let queryClass = "unmatched"; + if (knownCodes.includes(normalized)) queryClass = "catalog_code"; + else if (knownNames.includes(normalized)) queryClass = "product_name"; + else if (knownAliases.includes(normalized)) queryClass = "catalog_alias"; + else if (knownCategories.includes(normalized)) queryClass = "research_area"; + else if (resultCount > 0) queryClass = "partial_catalog_match"; + + return { + query_class: queryClass, + query_length_bucket: normalized.length <= 3 ? "1-3" : normalized.length <= 8 ? "4-8" : "9+", + result_count: resultCount, + }; + } + + function searchMatches(query) { + if (!normalizeSearch(query)) return PRODUCTS.slice(0, 5); + return PRODUCTS.filter((product) => productMatchesQuery(product, query)).slice(0, 6); + } + + function initSearch() { + const input = document.querySelector("#site-search"); + const results = document.querySelector("#search-results"); + if (!input || !results) return; + let activeIndex = -1; + let searchTrackTimer = 0; + + const close = () => { + results.hidden = true; + input.setAttribute("aria-expanded", "false"); + input.removeAttribute("aria-activedescendant"); + activeIndex = -1; + }; + + const open = () => { + const matches = searchMatches(input.value); + results.setAttribute("role", matches.length ? "listbox" : "status"); + results.innerHTML = matches.length + ? matches + .map( + (product, index) => ` + + + ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}${escapeHtml(product.code)} · ${escapeHtml(product.category)} + ${money.format(product.price)} + + `, + ) + .join("") + : `
    No matching product.

    Try a molecule name, product code, or research area.

    Browse all products →
    `; + results.hidden = false; + input.setAttribute("aria-expanded", "true"); + }; + + input.addEventListener("focus", open); + input.addEventListener("input", () => { + activeIndex = -1; + open(); + window.clearTimeout(searchTrackTimer); + const term = normalizeSearch(input.value); + if (term.length >= 2) { + searchTrackTimer = window.setTimeout(() => { + const resultCount = searchMatches(term).length; + track("search", { + ...safeSearchTelemetry(term, resultCount), + surface: "predictive_search", + }); + }, 650); + } + }); + + input.addEventListener("keydown", (event) => { + const options = [...results.querySelectorAll('[role="option"]')]; + if (event.key === "Escape") { + event.preventDefault(); + event.stopPropagation(); + close(); + return; + } + if (!["ArrowDown", "ArrowUp", "Enter"].includes(event.key) || options.length === 0) return; + if (event.key === "Enter" && activeIndex >= 0) { + event.preventDefault(); + options[activeIndex].click(); + return; + } + if (event.key === "Enter") return; + event.preventDefault(); + activeIndex = + event.key === "ArrowDown" + ? Math.min(options.length - 1, activeIndex + 1) + : Math.max(0, activeIndex - 1); + options.forEach((option, index) => option.setAttribute("aria-selected", String(index === activeIndex))); + input.setAttribute("aria-activedescendant", options[activeIndex].id); + options[activeIndex].scrollIntoView({ block: "nearest" }); + }); + + document.addEventListener("click", (event) => { + if (!event.target.closest(".search-wrap")) close(); + }); + document.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k") { + event.preventDefault(); + input.focus(); + } + }); + results.addEventListener("click", (event) => { + const link = event.target.closest("[data-search-result]"); + if (!link) return; + const product = PRODUCTS.find((item) => item.slug === link.dataset.searchResult); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: "predictive_search", + }); + }); + } + + function initCollection() { + const grid = document.querySelector("[data-collection-grid]"); + if (!grid) return; + const search = document.querySelector("#collection-search"); + const sort = document.querySelector("#collection-sort"); + const summary = document.querySelector("[data-result-summary]"); + const buttons = [...document.querySelectorAll("[data-filter]")]; + const filterLabels = [...document.querySelectorAll("[data-filter-label]")]; + const params = new URLSearchParams(window.location.search); + const validSorts = new Set(["featured", "name-asc", "price-asc", "price-desc"]); + let category = CATEGORIES.some((item) => item.key === params.get("category")) ? params.get("category") : "all"; + + const updateUrl = () => { + const next = new URL(window.location.href); + if (category === "all") next.searchParams.delete("category"); + else next.searchParams.set("category", category); + if (search.value.trim()) next.searchParams.set("q", search.value.trim()); + else next.searchParams.delete("q"); + if (sort.value === "featured") next.searchParams.delete("sort"); + else next.searchParams.set("sort", sort.value); + window.history.replaceState({}, "", next); + }; + + const render = () => { + const query = search.value.trim(); + let filtered = PRODUCTS.filter((product) => { + const categoryMatch = category === "all" || product.categoryKey === category; + const queryMatch = !query || productMatchesQuery(product, query); + return categoryMatch && queryMatch; + }); + + if (sort.value === "name-asc") filtered.sort((a, b) => a.name.localeCompare(b.name)); + if (sort.value === "price-asc") filtered.sort((a, b) => a.price - b.price); + if (sort.value === "price-desc") filtered.sort((a, b) => b.price - a.price); + + grid.innerHTML = filtered.length + ? filtered.map((product) => productCard(product)).join("") + : ` +
    +

    No products match.

    +

    Clear the search or show every research area.

    + +
    + `; + summary.textContent = `${filtered.length} ${filtered.length === 1 ? "product" : "products"}${category === "all" ? "" : ` in ${CATEGORIES.find((item) => item.key === category).name}`}`; + buttons.forEach((button) => button.setAttribute("aria-pressed", String(button.dataset.filter === category))); + filterLabels.forEach((label) => { + label.textContent = category === "all" ? "All products" : CATEGORIES.find((item) => item.key === category).name; + }); + updateUrl(); + }; + + search.value = params.get("q") || ""; + sort.value = validSorts.has(params.get("sort")) ? params.get("sort") : "featured"; + buttons.forEach((button) => { + button.addEventListener("click", () => { + category = button.dataset.filter; + render(); + if (button.closest("[data-filter-drawer]")) closeDrawers(); + track("filter_apply", { filter_name: "research_area", filter_value: category }); + }); + }); + search.addEventListener("input", render); + search.addEventListener("change", () => { + if (!normalizeSearch(search.value)) return; + const resultCount = PRODUCTS.filter((product) => productMatchesQuery(product, search.value)).length; + track("search", { ...safeSearchTelemetry(search.value, resultCount), surface: "collection" }); + }); + sort.addEventListener("change", () => { + render(); + track("sort_changed", { sort_value: sort.value }); + }); + grid.addEventListener("click", (event) => { + if (!event.target.closest("[data-reset-collection]")) return; + category = "all"; + search.value = ""; + sort.value = "featured"; + render(); + search.focus(); + }); + render(); + } + + function initProduct() { + if (PAGE !== "product") return; + const product = PRODUCTS.find((item) => item.slug === PRODUCT_SLUG); + if (!product) return; + track("view_item", { + item_id: product.code, + item_name: product.name, + item_category: product.category, + price: product.price, + demo_only: true, + }); + + try { + const recent = JSON.parse(localStorage.getItem(RECENT_KEY) || "[]").filter((slug) => slug !== product.slug); + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug, ...recent].slice(0, 6))); + } catch { + localStorage.setItem(RECENT_KEY, JSON.stringify([product.slug])); + } + + const quantity = document.querySelector("#pdp-quantity"); + const normalizeQuantity = () => { + quantity.value = String(Math.max(1, Math.min(MAX_QUANTITY, Number.parseInt(quantity.value, 10) || 1))); + }; + document.querySelectorAll("[data-pdp-quantity-change]").forEach((button) => { + button.addEventListener("click", () => { + quantity.value = String(Number(quantity.value || 1) + Number(button.dataset.pdpQuantityChange)); + normalizeQuantity(); + }); + }); + quantity?.addEventListener("change", normalizeQuantity); + + document.querySelectorAll("[data-media-src]").forEach((button) => { + button.addEventListener("click", () => { + const media = document.querySelector("[data-main-media]"); + if (!media) return; + media.innerHTML = productImage(product, true); + const image = media.querySelector("img"); + const label = media.querySelector(".product-image-label"); + image.src = button.dataset.mediaSrc; + image.alt = button.dataset.mediaAlt; + image.style.transform = `scale(${button.dataset.mediaZoom || "1"})`; + image.style.transformOrigin = button.dataset.mediaView === "label" ? "center 40%" : "center"; + if (label) label.hidden = button.dataset.mediaView === "scale"; + document.querySelectorAll("[data-media-src]").forEach((thumb) => thumb.setAttribute("aria-current", String(thumb === button))); + track("product_media_selected", { item_id: product.code, media_label: button.getAttribute("aria-label") }); + }); + }); + + const mainAdd = document.querySelector("[data-pdp-add]"); + const mobileBar = document.querySelector("[data-mobile-add]"); + if (mainAdd && mobileBar && "IntersectionObserver" in window) { + const observer = new IntersectionObserver(([entry]) => { + const hasScrolledPastPrimaryAction = !entry.isIntersecting && entry.boundingClientRect.top < 0; + mobileBar.dataset.visible = String( + hasScrolledPastPrimaryAction && window.matchMedia("(max-width: 960px)").matches, + ); + }); + observer.observe(mainAdd); + } + } + + function initAccordions() { + document.querySelectorAll(".accordion-trigger").forEach((button) => { + button.addEventListener("click", () => { + const expanded = button.getAttribute("aria-expanded") === "true"; + button.setAttribute("aria-expanded", String(!expanded)); + const panel = document.querySelector(`#${CSS.escape(button.getAttribute("aria-controls"))}`); + if (panel) panel.hidden = expanded; + }); + }); + } + + function initTestingLookup() { + const form = document.querySelector("[data-testing-lookup]"); + if (!form) return; + const input = form.querySelector("input"); + const results = document.querySelector("[data-lookup-results]"); + const params = new URLSearchParams(window.location.search); + if (params.get("product")) input.value = params.get("product"); + + const run = () => { + const query = input.value.trim().toLowerCase(); + const matches = query + ? PRODUCTS.filter((product) => `${product.name} ${product.code}`.toLowerCase().includes(query)) + : []; + if (!query) { + results.innerHTML = `

    Enter a product name or code.

    Examples: Retatrutide, OVO-001, or BPC-157.

    `; + } else if (matches.length === 0) { + results.innerHTML = `

    No matching OVO code.

    Try a product name, a code from OVO-001 through OVO-010, or browse the full testing table below.

    `; + } else { + results.innerHTML = matches + .map( + (product) => ` +
    +

    ${escapeHtml(product.code)} · ${escapeHtml(product.category)}

    +

    ${escapeHtml(product.name)} · ${escapeHtml(product.strength)}

    +

    Testing status: No result reported for identity, content / mass, purity profile, sterility, or endotoxin.

    +

    Open the product page ${icons.arrow}

    +
    + `, + ) + .join(""); + } + if (query) track("quality_lookup", safeSearchTelemetry(query, matches.length)); + }; + + form.addEventListener("submit", (event) => { + event.preventDefault(); + run(); + }); + if (input.value) run(); + } + + function initNewsletter() { + document.querySelectorAll("[data-newsletter]").forEach((form) => { + const success = form.parentElement.querySelector("[data-newsletter-success]"); + const showSuccess = (persisted) => { + form.hidden = true; + success.hidden = false; + success.textContent = persisted + ? "Preference saved on this device. Nothing was transmitted, and no email will be sent." + : "Preference confirmed for this page only. Nothing was transmitted, and no email will be sent."; + }; + + try { + if (localStorage.getItem(NEWSLETTER_KEY) === "saved") showSuccess(true); + } catch { + // Storage can be unavailable in locked-down browsers; submission still remains local to the page. + } + + form.addEventListener("submit", (event) => { + event.preventDefault(); + const input = form.querySelector('input[type="email"]'); + if (!input.checkValidity()) { + input.reportValidity(); + return; + } + let persisted = false; + try { + localStorage.setItem(NEWSLETTER_KEY, "saved"); + persisted = localStorage.getItem(NEWSLETTER_KEY) === "saved"; + } catch { + persisted = false; + } + showSuccess(persisted); + track("newsletter_demo_completed", { storage: persisted ? "local" : "none", transmitted: false }); + }); + }); + } + + function initLinkTracking() { + document.addEventListener("click", (event) => { + const productLink = event.target.closest("[data-product-link]"); + if (productLink) { + const product = PRODUCTS.find((item) => item.slug === productLink.dataset.productLink); + track("select_item", { + item_id: product?.code, + item_name: product?.name, + item_list_name: PAGE, + }); + } + + const categoryLink = event.target.closest("[data-category-link]"); + if (categoryLink) { + track("select_category", { + category: categoryLink.dataset.categoryLink, + surface: categoryLink.dataset.categorySurface || PAGE, + }); + } + + const articleLink = event.target.closest("[data-article-link]"); + if (articleLink) { + track("select_article", { + article_slug: articleLink.dataset.articleLink, + surface: PAGE, + }); + } + }); + + if (PAGE === "collection") { + track("view_item_list", { + item_list_name: "catalog", + item_count: PRODUCTS.length, + }); + } + + if (PAGE === "testing") { + track("view_testing", { testing_state: "no_result_reported" }); + } + + if (PAGE === "article") { + track("view_article", { article_slug: body.dataset.article || "unknown" }); + } + } + + function initReveals() { + const reduceMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches; + if (reduceMotion || !("IntersectionObserver" in window)) return; + + const candidates = [ + ...document.querySelectorAll( + ".hero-copy, .section-head, .testing-feature-copy, .testing-document, .collection-feature-section .product-card", + ), + ]; + if (!candidates.length) return; + + candidates.forEach((element, index) => { + element.classList.add("reveal"); + element.style.setProperty("--reveal-delay", `${Math.min(index % 4, 3) * 70}ms`); + }); + document.documentElement.dataset.revealArmed = ""; + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (!entry.isIntersecting) return; + entry.target.classList.add("is-visible"); + observer.unobserve(entry.target); + }); + }, + { threshold: 0.15, rootMargin: "0px 0px -5% 0px" }, + ); + + candidates.forEach((element) => observer.observe(element)); + } + + renderPage(); + initReveals(); + initDrawersAndCart(); + initSearch(); + initCollection(); + initProduct(); + initAccordions(); + initTestingLookup(); + initNewsletter(); + initLinkTracking(); + track("page_view", { page_title: document.title, page_path: window.location.pathname }); +})(); diff --git a/biologix-strategy-board/ovo-labs/testing.html b/biologix-strategy-board/ovo-labs/testing.html new file mode 100644 index 0000000..778c4b2 --- /dev/null +++ b/biologix-strategy-board/ovo-labs/testing.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + Testing — OVO Labs + + +
    + + + diff --git a/biologix-strategy-board/pretext-browser.js b/biologix-strategy-board/pretext-browser.js new file mode 100644 index 0000000..6a37876 --- /dev/null +++ b/biologix-strategy-board/pretext-browser.js @@ -0,0 +1,5 @@ +var x0=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ON","CS","ON","CS","ON","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","ON","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","ON","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],g0=["AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","CS","AL","ON","ON","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AN","AN","AN","AN","AN","AN","AN","AN","AN","AN","ET","AN","AN","AL","AL","AL","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","NSM","ON","NSM","NSM","NSM","NSM","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL","AL"];function m0(O){if(O<=255)return x0[O];if(1424<=O&&O<=1524)return"R";if(1536<=O&&O<=1791)return g0[O&255];if(1792<=O&&O<=2220)return"AL";return"L"}function r0(O){let _=O.length;if(_===0)return null;let J=Array(_),Y=0;for(let V=0;V<_;V++){let $=m0(O.charCodeAt(V));if($==="R"||$==="AL"||$==="AN")Y++;J[V]=$}if(Y===0)return null;let X=_/Y<0.3?0:1,R=new Int8Array(_);for(let V=0;V<_;V++)R[V]=X;let Z=X&1?"R":"L",Q=Z,f=Q;for(let V=0;V<_;V++)if(J[V]==="NSM")J[V]=f;else f=J[V];f=Q;for(let V=0;V<_;V++){let $=J[V];if($==="EN")J[V]=f==="AL"?"AN":"EN";else if($==="R"||$==="L"||$==="AL")f=$}for(let V=0;V<_;V++)if(J[V]==="AL")J[V]="R";for(let V=1;V<_-1;V++){if(J[V]==="ES"&&J[V-1]==="EN"&&J[V+1]==="EN")J[V]="EN";if(J[V]==="CS"&&(J[V-1]==="EN"||J[V-1]==="AN")&&J[V+1]===J[V-1])J[V]=J[V-1]}for(let V=0;V<_;V++){if(J[V]!=="EN")continue;let $;for($=V-1;$>=0&&J[$]==="ET";$--)J[$]="EN";for($=V+1;$<_&&J[$]==="ET";$++)J[$]="EN"}for(let V=0;V<_;V++){let $=J[V];if($==="WS"||$==="ES"||$==="ET"||$==="CS")J[V]="ON"}f=Q;for(let V=0;V<_;V++){let $=J[V];if($==="EN")J[V]=f==="L"?"L":"EN";else if($==="R"||$==="L")f=$}for(let V=0;V<_;V++){if(J[V]!=="ON")continue;let $=V+1;while($<_&&J[$]==="ON")$++;let u=V>0?J[V-1]:Q,q=$<_?J[$]:Q,D=u!=="L"?"R":"L";if(D===(q!=="L"?"R":"L"))for(let K=V;K<$;K++)J[K]=D;V=$-1}for(let V=0;V<_;V++)if(J[V]==="ON")J[V]=Z;for(let V=0;V<_;V++){let $=J[V];if((R[V]&1)===0){if($==="R")R[V]++;else if($==="AN"||$==="EN")R[V]+=2}else if($==="L"||$==="AN"||$==="EN")R[V]++}return R}function u0(O,_){let J=r0(O);if(J===null)return null;let Y=new Int8Array(_.length);for(let X=0;X<_.length;X++)Y[X]=J[_[X]];return Y}var a0=/[ \t\n\r\f]+/g,s0=/[\t\n\r\f]| {2,}|^ | $/;function d0(O){let _=O??"normal";return _==="pre-wrap"?{mode:_,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:_,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function i0(O){if(!s0.test(O))return O;let _=O.replace(a0," ");if(_.charCodeAt(0)===32)_=_.slice(1);if(_.length>0&&_.charCodeAt(_.length-1)===32)_=_.slice(0,-1);return _}function t0(O){if(!/[\r\f]/.test(O))return O.replace(/\r\n/g,` +`);return O.replace(/\r\n/g,` +`).replace(/[\r\f]/g,` +`)}var d=null,V0;function n0(){if(d===null)d=new Intl.Segmenter(V0,{granularity:"word"});return d}function z0(){d=null}function j0(O){let _=O&&O.length>0?O:void 0;if(V0===_)return;V0=_,d=null}var e0=/\p{Script=Arabic}/u,O0=/\p{M}/u,b0=/\p{Nd}/u;function X0(O){return e0.test(O)}function p(O){for(let _ of O){let J=_.codePointAt(0);if(J>=19968&&J<=40959||J>=13312&&J<=19903||J>=131072&&J<=173791||J>=173824&&J<=177983||J>=177984&&J<=178207||J>=178208&&J<=183983||J>=183984&&J<=191471||J>=196608&&J<=201551||J>=63744&&J<=64255||J>=194560&&J<=195103||J>=12288&&J<=12351||J>=12352&&J<=12447||J>=12448&&J<=12543||J>=44032&&J<=55215||J>=65280&&J<=65519)return!0}return!1}var $0=new Set([",",".","!",":",";","?","、","。","・",")","〕","〉","》","」","』","】","〗","〙","〛","ー","々","〻","ゝ","ゞ","ヽ","ヾ"]),i=new Set(['"',"(","[","{","“","‘","«","‹","(","〔","〈","《","「","『","【","〖","〘","〚"]),Q0=new Set(["'","’"]),r=new Set([".",",","!","?",":",";","،","؛","؟","।","॥","၊","။","၌","၍","၏",")","]","}","%",'"',"”","’","»","›","…"]),OO=new Set([":",".","،","؛"]),_O=new Set(["၏"]),JO=new Set(["”","’","»","›","」","』","】","》","〉","〕",")"]);function RO(O){if(q0(O))return!0;let _=!1;for(let J of O){if(r.has(J)){_=!0;continue}if(_&&O0.test(J))continue;return!1}return _}function VO(O){for(let _ of O)if(!$0.has(_)&&!r.has(_))return!1;return O.length>0}function XO(O){if(q0(O))return!0;for(let _ of O)if(!i.has(_)&&!Q0.has(_)&&!O0.test(_))return!1;return O.length>0}function q0(O){let _=!1;for(let J of O){if(J==="\\"||O0.test(J))continue;if(i.has(J)||r.has(J)||Q0.has(J)){_=!0;continue}return!1}return _}function YO(O){let _=Array.from(O),J=_.length;while(J>0){let Y=_[J-1];if(O0.test(Y)){J--;continue}if(i.has(Y)||Q0.has(Y)){J--;continue}break}if(J<=0||J===_.length)return null;return{head:_.slice(0,J).join(""),tail:_.slice(J).join("")}}function ZO(O,_){if(O.length===0)return!1;for(let J of O)if(J!==_)return!1;return!0}function $O(O){if(!X0(O)||O.length===0)return!1;return OO.has(O[O.length-1])}function QO(O){if(O.length===0)return!1;return _O.has(O[O.length-1])}function qO(O){if(O.length<2||O[0]!==" ")return null;let _=O.slice(1);if(/^\p{M}+$/u.test(_))return{space:" ",marks:_};return null}function D0(O){for(let _=O.length-1;_>=0;_--){let J=O[_];if(JO.has(J))return!0;if(!r.has(J))return!1}return!1}function DO(O,_){if(_.preserveOrdinarySpaces||_.preserveHardBreaks){if(O===" ")return"preserved-space";if(O==="\t")return"tab";if(_.preserveHardBreaks&&O===` +`)return"hard-break"}if(O===" ")return"space";if(O===" "||O===" "||O==="⁠"||O==="\uFEFF")return"glue";if(O==="​")return"zero-width-break";if(O==="­")return"soft-hyphen";return"text"}function NO(O,_,J,Y){let X=[],R=null,Z="",Q=J,f=!1,V=0;for(let $ of O){let u=DO($,Y),q=u==="text"&&_;if(R!==null&&u===R&&q===f){Z+=$,V+=$.length;continue}if(R!==null)X.push({text:Z,isWordLike:f,kind:R,start:Q});R=u,Z=$,Q=J+V,f=q,V+=$.length}if(R!==null)X.push({text:Z,isWordLike:f,kind:R,start:Q});return X}function Y0(O){return O==="space"||O==="preserved-space"||O==="zero-width-break"||O==="hard-break"}var fO=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function HO(O,_){let J=O.texts[_];if(J.startsWith("www."))return!0;return fO.test(J)&&_+1=O.len||Y0(O.kinds[Q]))continue;let f="",V=O.starts[Q],$=Q;while($0)_.push(f),J.push(!0),Y.push("text"),X.push(V),R=$-1}return{len:_.length,texts:_,isWordLike:J,kinds:Y,starts:X}}var FO=new Set([":","-","/","×",",",".","+","–","—"]),K0=/^[A-Za-z0-9_]+[,:;]*$/,vO=/[,:;]+$/;function E0(O){for(let _ of O)if(b0.test(_))return!0;return!1}function Z0(O){if(O.length===0)return!1;for(let _ of O){if(b0.test(_)||FO.has(_))continue;return!1}return!0}function uO(O){let _=[],J=[],Y=[],X=[];for(let R=0;R1;for(let V=0;V0&&Q[X-1]==="text"&&p(D.text)&&p(R[X-1])&&D0(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&VO(D.text)&&p(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&QO(R[X-1]))R[X-1]+=D.text,Z[X-1]=Z[X-1]||D.isWordLike;else if(b&&X>0&&Q[X-1]==="text"&&D.isWordLike&&X0(D.text)&&$O(R[X-1]))R[X-1]+=D.text,Z[X-1]=!0;else if(b&&!D.isWordLike&&X>0&&Q[X-1]==="text"&&D.text.length===1&&D.text!=="-"&&D.text!=="—"&&ZO(R[X-1],D.text))R[X-1]+=D.text;else if(b&&!D.isWordLike&&X>0&&Q[X-1]==="text"&&(RO(D.text)||D.text==="-"&&Z[X-1]))R[X-1]+=D.text;else R[X]=D.text,Z[X]=D.isWordLike,Q[X]=D.kind,f[X]=D.start,X++}for(let q=1;q=0;q--)if(Q[q]==="text"&&!Z[q]&&XO(R[q])){let D=q+1;while(D"u")return s={lineFitEpsilon:0.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},s;let O=navigator.userAgent,J=navigator.vendor==="Apple Computer, Inc."&&O.includes("Safari/")&&!O.includes("Chrome/")&&!O.includes("Chromium/")&&!O.includes("CriOS/")&&!O.includes("FxiOS/")&&!O.includes("EdgiOS/"),Y=O.includes("Chrome/")||O.includes("Chromium/")||O.includes("CriOS/")||O.includes("Edg/");return s={lineFitEpsilon:J?0.015625:0.005,carryCJKAfterClosingQuote:Y,preferPrefixWidthsForBreakableRuns:J,preferEarlySoftHyphenBreak:J},s}function TO(O){let _=O.match(/(\d+(?:\.\d+)?)\s*px/);return _?parseFloat(_[1]):16}function M0(){if(_0===null)_0=new Intl.Segmenter(void 0,{granularity:"grapheme"});return _0}function wO(O){return PO.test(O)||O.includes("️")}function G0(O){return AO.test(O)}function yO(O,_){let J=H0.get(O);if(J!==void 0)return J;let Y=U0();Y.font=O;let X=Y.measureText("\uD83D\uDE00").width;if(J=0,X>_+0.5&&typeof document<"u"&&document.body!==null){let R=document.createElement("span");R.style.font=O,R.style.display="inline-block",R.style.visibility="hidden",R.style.position="absolute",R.textContent="\uD83D\uDE00",document.body.appendChild(R);let Z=R.getBoundingClientRect().width;if(document.body.removeChild(R),X-Z>0.5)J=X-Z}return H0.set(O,J),J}function LO(O){let _=0,J=M0();for(let Y of J.segment(O))if(wO(Y.segment))_++;return _}function WO(O,_){if(_.emojiCount===void 0)_.emojiCount=LO(O);return _.emojiCount}function g(O,_,J){if(J===0)return _.width;return _.width-WO(O,_)*J}function P0(O,_,J,Y){if(_.graphemeWidths!==void 0)return _.graphemeWidths;let X=[],R=M0();for(let Z of R.segment(O)){let Q=x(Z.segment,J);X.push(g(Z.segment,Q,Y))}return _.graphemeWidths=X.length>1?X:null,_.graphemeWidths}function A0(O,_,J,Y){if(_.graphemePrefixWidths!==void 0)return _.graphemePrefixWidths;let X=[],R=M0(),Z="";for(let Q of R.segment(O)){Z+=Q.segment;let f=x(Z,J);X.push(g(Z,f,Y))}return _.graphemePrefixWidths=X.length>1?X:null,_.graphemePrefixWidths}function B0(O,_){let J=U0();J.font=O;let Y=BO(O),X=TO(O),R=_?yO(O,X):0;return{cache:Y,fontSize:X,emojiCorrection:R}}function T0(){f0.clear(),H0.clear(),_0=null}function m(O){return O==="space"||O==="preserved-space"||O==="tab"||O==="zero-width-break"||O==="soft-hyphen"}function SO(O){return O==="space"}function w0(O,_){if(_<=0)return 0;let J=O%_;if(Math.abs(J)<=0.000001)return _;return _-J}function t(O,_,J,Y){if(!Y||_===null)return O[J];return _[J]-(J>0?_[J-1]:0)}function y0(O,_,J,Y,X,R){let Z=0,Q=_;while(ZJ+Y)break;Q=f,Z++}return{fitCount:Z,fittedWidth:Q}}function L0(O,_){for(let J=0;J=O.widths.length)return null;if(Y>0)return _;let X=L0(O,J);if(X<0)return null;let R=O.chunks[X];if(R.startSegmentIndex===R.endSegmentIndex&&J===R.startSegmentIndex)return{segmentIndex:J,graphemeIndex:0};if(J=O.widths.length)return null;return{segmentIndex:R.consumedEndSegmentIndex,graphemeIndex:0}}function W0(O,_){if(O.simpleLineWalkFastPath)return IO(O,_);return J0(O,_)}function IO(O,_){let{widths:J,kinds:Y,breakableWidths:X,breakablePrefixWidths:R}=O;if(J.length===0)return 0;let Z=h(),Q=Z.lineFitEpsilon,f=0,V=0,$=!1;function u(q){let D=J[q];if(D>_&&X[q]!==null){let b=X[q],K=R[q]??null;V=0;for(let j=0;j0&&V+B>_+Q)f++,V=B;else{if(V===0)f++;V+=B}}}else V=D,f++;$=!0}for(let q=0;q_+Q){if(SO(b))continue;V=0,$=!1,u(q);continue}V=K}if(!$)return f+1;return f}function cO(O,_,J){let{widths:Y,kinds:X,breakableWidths:R,breakablePrefixWidths:Z}=O;if(Y.length===0)return 0;let Q=h(),f=Q.lineFitEpsilon,V=0,$=0,u=!1,q=0,D=0,b=0,K=0,j=-1,B=0;function k(){j=-1,B=0}function y(H=b,z=K,W=$){V++,J?.({startSegmentIndex:q,startGraphemeIndex:D,endSegmentIndex:H,endGraphemeIndex:z,width:W}),$=0,u=!1,k()}function A(H,z){u=!0,q=H,D=0,b=H+1,K=0,$=z}function T(H,z,W){u=!0,q=H,D=z,b=H,K=z+1,$=W}function L(H,z){if(!u){A(H,z);return}$+=z,b=H+1,K=0}function C(H,z){if(!m(X[H]))return;j=H+1,B=$-z}function F(H){P(H,0)}function P(H,z){let W=R[H],c=Z[H]??null;for(let I=z;I_+f)y(),T(H,I,o);else $+=o,b=H,K=I+1}if(u&&b===H&&K===W.length)b=H+1,K=0}let E=0;while(E_&&R[E]!==null)F(E);else A(E,H);C(E,H),E++;continue}if($+H>_+f){if(m(z)){L(E,H),y(E+1,0,$-H),E++;continue}if(j>=0){y(j,0,B);continue}if(H>_&&R[E]!==null){y(),F(E),E++;continue}y();continue}L(E,H),C(E,H),E++}if(u)y();return V}function J0(O,_,J){if(O.simpleLineWalkFastPath)return cO(O,_,J);let{widths:Y,lineEndFitAdvances:X,lineEndPaintAdvances:R,kinds:Z,breakableWidths:Q,breakablePrefixWidths:f,discretionaryHyphenWidth:V,tabStopAdvance:$,chunks:u}=O;if(Y.length===0||u.length===0)return 0;let q=h(),D=q.lineFitEpsilon,b=0,K=0,j=!1,B=0,k=0,y=0,A=0,T=-1,L=0,C=0,F=null;function P(){T=-1,L=0,C=0,F=null}function E(N=y,M=A,v=K){b++,J?.({startSegmentIndex:B,startGraphemeIndex:k,endSegmentIndex:N,endGraphemeIndex:M,width:v}),K=0,j=!1,P()}function H(N,M){j=!0,B=N,k=0,y=N+1,A=0,K=M}function z(N,M,v){j=!0,B=N,k=M,y=N,A=M+1,K=v}function W(N,M){if(!j){H(N,M);return}K+=M,y=N+1,A=0}function c(N,M){if(!m(Z[N]))return;let v=Z[N]==="tab"?0:X[N],w=Z[N]==="tab"?M:R[N];T=N+1,L=K-M+v,C=K-M+w,F=Z[N]}function I(N){o(N,0)}function o(N,M){let v=Q[N],w=f[N]??null;for(let G=M;G_+D)E(),z(N,G,l);else K+=l,y=N,A=G+1}if(j&&y===N&&A===v.length)y=N+1,A=0}function S(N){if(F!=="soft-hyphen")return!1;let M=Q[N];if(M===null)return!1;let v=q.preferPrefixWidthsForBreakableRuns?f[N]??M:M,w=v!==M,{fitCount:G,fittedWidth:l}=y0(v,K,_,D,V,w);if(G===0)return!1;if(K=l,y=N,A=G,P(),G===M.length)return y=N+1,A=0,!0;return E(N,G,l+V),o(N,G),!0}function U(N){b++,J?.({startSegmentIndex:N.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:N.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),P()}for(let N=0;N_&&Q[v]!==null)I(v);else H(v,G);c(v,G),v++;continue}if(K+G>_+D){let n=K+(w==="tab"?0:X[v]),e=K+(w==="tab"?G:R[v]);if(F==="soft-hyphen"&&q.preferEarlySoftHyphenBreak&&L<=_+D){E(T,0,C);continue}if(F==="soft-hyphen"&&S(v)){v++;continue}if(m(w)&&n<=_+D){W(v,G),E(v+1,0,e),v++;continue}if(T>=0&&L<=_+D){E(T,0,C);continue}if(G>_&&Q[v]!==null){E(),I(v),v++;continue}E();continue}W(v,G),c(v,G),v++}if(j){let w=T===M.consumedEndSegmentIndex?C:K;E(M.consumedEndSegmentIndex,0,w)}}return b}function S0(O,_,J){let Y=kO(O,_);if(Y===null)return null;if(O.simpleLineWalkFastPath)return oO(O,Y,J);let X=L0(O,Y.segmentIndex);if(X<0)return null;let R=O.chunks[X];if(R.startSegmentIndex===R.endSegmentIndex)return{startSegmentIndex:R.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:R.consumedEndSegmentIndex,endGraphemeIndex:0,width:0};let{widths:Z,lineEndFitAdvances:Q,lineEndPaintAdvances:f,kinds:V,breakableWidths:$,breakablePrefixWidths:u,discretionaryHyphenWidth:q,tabStopAdvance:D}=O,b=h(),K=b.lineFitEpsilon,j=0,B=!1,k=Y.segmentIndex,y=Y.graphemeIndex,A=k,T=y,L=-1,C=0,F=0,P=null;function E(){L=-1,C=0,F=0,P=null}function H(U=A,N=T,M=j){if(!B)return null;return{startSegmentIndex:k,startGraphemeIndex:y,endSegmentIndex:U,endGraphemeIndex:N,width:M}}function z(U,N){B=!0,A=U+1,T=0,j=N}function W(U,N,M){B=!0,A=U,T=N+1,j=M}function c(U,N){if(!B){z(U,N);return}j+=N,A=U+1,T=0}function I(U,N){if(!m(V[U]))return;let M=V[U]==="tab"?0:Q[U],v=V[U]==="tab"?N:f[U];L=U+1,C=j-N+M,F=j-N+v,P=V[U]}function o(U,N){let M=$[U],v=u[U]??null;for(let w=N;wJ+K)return H();j+=G,A=U,T=w+1}if(B&&A===U&&T===M.length)A=U+1,T=0;return null}function S(U){if(P!=="soft-hyphen"||L<0)return null;let N=$[U]??null;if(N!==null){let M=b.preferPrefixWidthsForBreakableRuns?u[U]??N:N,v=M!==N,{fitCount:w,fittedWidth:G}=y0(M,j,J,K,q,v);if(w===N.length)return j=G,A=U+1,T=0,E(),null;if(w>0)return H(U,w,G+q)}if(C<=J+K)return H(L,0,F);return null}for(let U=Y.segmentIndex;U0){let G=o(U,M);if(G!==null)return G}else if(v>J&&$[U]!==null){let G=o(U,0);if(G!==null)return G}else z(U,v);I(U,v);continue}if(j+v>J+K){let G=j+(N==="tab"?0:Q[U]),l=j+(N==="tab"?v:f[U]);if(P==="soft-hyphen"&&b.preferEarlySoftHyphenBreak&&C<=J+K)return H(L,0,F);let n=S(U);if(n!==null)return n;if(m(N)&&G<=J+K)return c(U,v),H(U+1,0,l);if(L>=0&&C<=J+K)return H(L,0,F);if(v>J&&$[U]!==null){let e=H();if(e!==null)return e;let v0=o(U,0);if(v0!==null)return v0}return H()}c(U,v),I(U,v)}if(L===R.consumedEndSegmentIndex&&T===0)return H(R.consumedEndSegmentIndex,0,F);return H(R.consumedEndSegmentIndex,0,j)}function oO(O,_,J){let{widths:Y,kinds:X,breakableWidths:R,breakablePrefixWidths:Z}=O,Q=h(),f=Q.lineFitEpsilon,V=0,$=!1,u=_.segmentIndex,q=_.graphemeIndex,D=u,b=q,K=-1,j=0;function B(C=D,F=b,P=V){if(!$)return null;return{startSegmentIndex:u,startGraphemeIndex:q,endSegmentIndex:C,endGraphemeIndex:F,width:P}}function k(C,F){$=!0,D=C+1,b=0,V=F}function y(C,F,P){$=!0,D=C,b=F+1,V=P}function A(C,F){if(!$){k(C,F);return}V+=F,D=C+1,b=0}function T(C,F){if(!m(X[C]))return;K=C+1,j=V-F}function L(C,F){let P=R[C],E=Z[C]??null;for(let H=F;HJ+f)return B();V+=z,D=C,b=H+1}if($&&D===C&&b===P.length)D=C+1,b=0;return null}for(let C=_.segmentIndex;C0){let z=L(C,E);if(z!==null)return z}else if(F>J&&R[C]!==null){let z=L(C,0);if(z!==null)return z}else k(C,F);T(C,F);continue}if(V+F>J+f){if(m(P))return A(C,F),B(C+1,0,V-F);if(K>=0)return B(K,0,j);if(F>J&&R[C]!==null){let z=B();if(z!==null)return z;let W=L(C,0);if(W!==null)return W}return B()}A(C,F),T(C,F)}return B()}var R0=null,C0=new WeakMap;function I0(){if(R0===null)R0=new Intl.Segmenter(void 0,{granularity:"grapheme"});return R0}function lO(O){if(O)return{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableWidths:[],breakablePrefixWidths:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]};return{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableWidths:[],breakablePrefixWidths:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function c0(O,_,J){let Y=I0(),X=h(),{cache:R,emojiCorrection:Z}=B0(_,G0(O.normalized)),Q=g("-",x("-",R),Z),V=g(" ",x(" ",R),Z)*8;if(O.len===0)return lO(J);let $=[],u=[],q=[],D=[],b=O.chunks.length<=1,K=J?[]:null,j=[],B=[],k=J?[]:null,y=Array.from({length:O.len}),A=Array.from({length:O.len});function T(F,P,E,H,z,W,c,I){if(z!=="text"&&z!=="space"&&z!=="zero-width-break")b=!1;if($.push(P),u.push(E),q.push(H),D.push(z),K?.push(W),j.push(c),B.push(I),k!==null)k.push(F)}for(let F=0;F0){let N=x(S,R),M=g(S,N,Z);T(S,M,M,M,"text",z+U,null,null)}A[F]=$.length;continue}let c=g(P,W,Z),I=H==="space"||H==="preserved-space"||H==="zero-width-break"?0:c,o=H==="space"||H==="zero-width-break"?0:c;if(E&&P.length>1){let S=P0(P,W,R,Z),U=X.preferPrefixWidthsForBreakableRuns?A0(P,W,R,Z):null;T(P,c,I,o,H,z,S,U)}else T(P,c,I,o,H,z,null,null);A[F]=$.length}let L=hO(O.chunks,y,A),C=K===null?null:u0(O.normalized,K);if(k!==null)return{widths:$,lineEndFitAdvances:u,lineEndPaintAdvances:q,kinds:D,simpleLineWalkFastPath:b,segLevels:C,breakableWidths:j,breakablePrefixWidths:B,discretionaryHyphenWidth:Q,tabStopAdvance:V,chunks:L,segments:k};return{widths:$,lineEndFitAdvances:u,lineEndPaintAdvances:q,kinds:D,simpleLineWalkFastPath:b,segLevels:C,breakableWidths:j,breakablePrefixWidths:B,discretionaryHyphenWidth:Q,tabStopAdvance:V,chunks:L}}function hO(O,_,J){let Y=[];for(let X=0;X0&&O[Y-1]==="soft-hyphen"&&!(_===Y&&J>0)}function xO(O,_,J,Y,X,R,Z){let Q="",f=pO(_,Y,X,R);for(let V=Y;V0)Q+=k0(V,O,J).slice(X).join("");else Q+=O[V]}if(Z>0){if(f)Q+="-";Q+=k0(R,O,J).slice(Y===R?X:0,Z).join("")}else if(f)Q+="-";return Q}function h0(O,_,J,Y,X,R,Z){return{text:xO(O.segments,O.kinds,_,Y,X,R,Z),width:J,start:{segmentIndex:Y,graphemeIndex:X},end:{segmentIndex:R,graphemeIndex:Z}}}function gO(O,_,J){return h0(O,_,J.width,J.startSegmentIndex,J.startGraphemeIndex,J.endSegmentIndex,J.endGraphemeIndex)}function p0(O){return{width:O.width,start:{segmentIndex:O.startSegmentIndex,graphemeIndex:O.startGraphemeIndex},end:{segmentIndex:O.endSegmentIndex,graphemeIndex:O.endGraphemeIndex}}}function mO(O,_,J){let Y=S0(O,_,J);if(Y===null)return null;return p0(Y)}function rO(O,_){return h0(O,l0(O),_.width,_.start.segmentIndex,_.start.graphemeIndex,_.end.segmentIndex,_.end.graphemeIndex)}function $1(O,_,J){if(O.widths.length===0)return 0;return J0(F0(O),_,(Y)=>{J(p0(Y))})}function Q1(O,_,J){let Y=mO(O,_,J);if(Y===null)return null;return rO(O,Y)}function q1(O,_,J){let Y=[];if(O.widths.length===0)return{lineCount:0,height:0,lines:Y};let X=l0(O),R=J0(F0(O),_,(Z)=>{Y.push(gO(O,X,Z))});return{lineCount:R,height:R*J,lines:Y}}function aO(){z0(),R0=null,C0=new WeakMap,T0()}function D1(O){j0(O),aO()}window.Pretext={walkLineRanges:$1,setLocale:D1,profilePrepare:V1,prepareWithSegments:Y1,prepare:X1,layoutWithLines:q1,layoutNextLine:Q1,layout:Z1,clearCache:aO}; \ No newline at end of file diff --git a/biologix-strategy-board/public-demand-map.csv b/biologix-strategy-board/public-demand-map.csv new file mode 100644 index 0000000..aa4d67a --- /dev/null +++ b/biologix-strategy-board/public-demand-map.csv @@ -0,0 +1,16 @@ +Public popularity rank,Public catalog label,Starting public price,Highest observed public variant price,Demand cluster,Modeled portfolio role,Evidence class by field,Snapshot time,Interpretation limit +1,GLP-3R / retatrutide,37.99,164.99,Body composition,Primary attention and GMV anchor,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity order is sales-informed but reveals no units, dollars, date range, or customer count" +2,BAC Water,24.99,24.99,Basket utility,Low-friction add-on and basket signal,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Surrounding catalog context can increase intended-use exposure; rank is not unit volume" +3,GHK-CU,29.99,44.99,Appearance,Appearance hero and lawful topical-cosmetic bridge,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Catalog demand does not prove demand for any specific successor formulation" +4,Tesamorelin,43.99,109.99,Body composition,Higher-value body-composition extension,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +5,MOTS-c,33.99,85.99,Energy/longevity,Performance and longevity hero,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +6,GLP-2T / tirzepatide,34.99,84.99,Body composition,Secondary body-composition anchor,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +7,NAD+ buffered,43.99,84.99,Energy/longevity,Basket builder and repeat-interest signal,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +8,GLOW,77.99,77.99,Appearance,Pre-bundled premium appearance offer,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +9,BPC-157 + TB-500,47.99,179.99,Recovery,Recovery hero,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +10,KLOW,97.99,97.99,Appearance/longevity,High-AOV premium bundle,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +11,Semax,24.99,69.99,Cognition/performance,Entry-price long tail,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +12,HGH / somatropin,149.99,349.99,Body composition/performance,Premium specialty item,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +13,BPC-157,27.99,99.99,Recovery,Entry-price recovery item,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +14,MT-2,27.99,27.99,Appearance,Entry-price appearance item,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" +15,5-Amino-1MQ,29.99,67.99,Body composition,Entry-price body-composition item,"Rank/price publicly observed; cluster strategically inferred; role modeled",2026-07-22 18:19:22 PDT,"Popularity rank is relative only" diff --git a/biologix-strategy-board/research/Biologix-Market-Operating-Evidence.pdf b/biologix-strategy-board/research/Biologix-Market-Operating-Evidence.pdf new file mode 100644 index 0000000..c8388d5 Binary files /dev/null and b/biologix-strategy-board/research/Biologix-Market-Operating-Evidence.pdf differ diff --git a/biologix-strategy-board/research/Peptide-Founder-Media-Intelligence.xlsx b/biologix-strategy-board/research/Peptide-Founder-Media-Intelligence.xlsx new file mode 100644 index 0000000..a20d81f Binary files /dev/null and b/biologix-strategy-board/research/Peptide-Founder-Media-Intelligence.xlsx differ diff --git a/biologix-strategy-board/research/biologix-evidence-brief.html b/biologix-strategy-board/research/biologix-evidence-brief.html new file mode 100644 index 0000000..ee111cc --- /dev/null +++ b/biologix-strategy-board/research/biologix-evidence-brief.html @@ -0,0 +1,487 @@ + + + + + + + Biologix Market & Operating Evidence Brief + + + + + + +
    +
    +
    Biologix × OVO · Research brief
    +
    +

    Market & Operating Evidence

    +

    A sourced view of the public peptide market, creator distribution, Biologix signals, operating gaps, and the systems required to convert demand into a durable company.

    +
    +
    + Prepared for Braden Lowder + Research cutoff · July 2026 +
    +
    + +
    + +

    The demand is real. The durable advantage is the company built around it.

    +

    The public market is active, creator-led, operationally uneven, and far more dependent on distribution than custom technology. Biologix already appears to possess the scarce ingredients: founder authority, customer demand, supplier knowledge, creator access, and a recognizable brand. The remaining opportunity is to connect those assets through professional management, creator operations, lifecycle, finance visibility, fulfillment discipline, and reliable data.

    +
    The strongest commercial thesis is not “build another store.” It is to build an operating and distribution system around a brand that has already demonstrated unusual pull.
    +
    +
    + Thirty +

    Current seller candidates

    +

    Public research identified a broad U.S.-facing cohort with current retatrutide-labelled or clearly mapped offers.

    +
    +
    + Eighteen +

    Brands compared deeply

    +

    Offer structure, acquisition, access controls, proof, retention, affiliate pathways, and public contradictions were compared.

    +
    +
    + Sixteen +

    Creator evidence rows

    +

    The verified register includes creators, tracked links, codes, public guides, communities, and other visible routing evidence.

    +
    +
    +

    Method boundary: No account was created, no purchase was made, and no private catalog or community was entered. Public storefront observations prove what was visible at a point in time—not product authenticity, customer outcomes, internal records, or regulatory clearance.

    +
    + +
    + +

    Distribution and trust do more work than the website.

    +

    The strongest observed operators use ordinary commerce infrastructure. Their sophistication comes from how they create trust, attribute demand, reduce purchase friction, retain customers, and restart the acquisition loop.

    +
    +
    + Observed acquisition pattern +

    Attention becomes trust before it becomes a transaction

    +
      +
    • Search, social, podcasts, communities, and referrals create attention.
    • +
    • Creator education, guides, articles, reviews, and founder identity create trust.
    • +
    • Tracked links, personalized pages, and codes create attributable handoffs.
    • +
    • Batch reports, support, shipping language, and visible policies reduce uncertainty.
    • +
    +
    +
    + Observed retention pattern +

    The transaction restarts the loop

    +
      +
    • Email, SMS, account history, alerts, and replenishment offers support repeat purchasing.
    • +
    • Membership, points, bundles, and broader catalogs deepen the relationship.
    • +
    • Creator portals and partner management turn existing relationships into new acquisition.
    • +
    • Wholesale and manager layers expand reach without routing every decision through a founder.
    • +
    +
    +
    +
    Creators often own the trust. The seller owns the transaction. The company that connects attribution, lifecycle, service, and management owns the durable relationship.
    +

    Observed funnel sequence

    +

    Attention → trust bridge → attributed handoff → product discovery → proof → access layer → transaction → fulfillment reassurance → retention → advocacy → expansion

    +
    + +
    + +

    The creator layer is already large enough to function as infrastructure.

    +

    Public evidence shows a mature creator-to-seller pattern: large audiences, education or community bridges, tracked links, codes, and portfolio relationships across multiple sellers. A link or code proves attributable routing—not payment, sales, exclusivity, or ownership.

    + + + + + + + + + + + + +
    CreatorPublic reach snapshotObserved routing evidence
    Clavicular / Braden PetersAudience above one million on Instagram and near one million on TikTok at captureLive creator-controlled route to Arcane; separate public reporting documented source promotion.
    Connor SinannLarge YouTube and TikTok audiencesTracked vendor link, public code, public guide, and paid community funnel.
    ZaytovenfitLarge TikTok audienceLive retatrutide-labelled creator route and separate tracked seller relationship.
    Jesse MarjiLarge TikTok audienceLive retatrutide-labelled source link and code, plus a second seller code.
    DymitriLarge TikTok audienceCurrent multi-vendor code portfolio, demonstrating that creators can operate across several relationships.
    Sarah WestallEstablished newsletter audienceTracked links, personalized seller page, code, and a public partner program.
    +

    Identity caution: Public Connor Sinann must be confirmed as the same Connor discussed in the calls. Public Braden Peters is not Biologix founder Braden Lowder.

    +
    +
    +

    What the evidence supports

    +

    Creators can supply trust, explanation, attributable traffic, community, and repeat exposure at meaningful scale.

    +
    +
    +

    What it does not support

    +

    Public links do not prove private sales, relationship terms, exclusivity, conversion, or customer quality.

    +
    +
    +
    + +
    + +

    Public signals and founder-reported signals point to a company whose demand arrived before its infrastructure.

    +
    +
    + Publicly observed +

    GLP-3R led the public popularity snapshot

    +

    The timestamped Biologix WooCommerce Store API snapshot returned GLP-3R / retatrutide first in popularity order. That order is sales-informed, but it does not disclose units, dollars, customers, or the represented period.

    +
    +
    + Publicly observed +

    Visible storefront allocation was substantial

    +

    A timestamped public snapshot recorded 1,397 visible numeric units and approximately $86,657 in displayed retail inventory across sellable entries. This is storefront allocation—not proof of total warehouse inventory, cost, ownership, or historical sales.

    +
    +
    + Founder-reported · not reconciled +

    A single dashboard view showed unusually high activity

    +

    During the recorded strategy call, Braden showed a dashboard amount of $53,540.86 and 216 reported orders while explaining that analytics were incomplete and omitted Apple Pay. The screenshot is a strong operating signal, but it remains a founder-reported snapshot until matched to orders and settlements.

    +
    +
    + Founder-reported · transcript +

    Founder dependence is visible across functions

    +

    The calls describe founder-led fulfillment, a small active affiliate group, incomplete analytics, family-carried finance, and multiple growth initiatives waiting for a management layer.

    +
    +
    +

    Operating opportunities repeatedly identified in the calls

    +
      +
    • Move finance knowledge from a family-carried process into independent professional coverage.
    • +
    • Turn isolated creator relationships into a managed creator and affiliate system.
    • +
    • Connect membership, subscription, email, SMS, referral, and retention into one lifecycle.
    • +
    • Build managers who manage relationships and people without routing everything through Braden.
    • +
    • Use retreats and creator experiences as recruiting, retention, content, and partnership infrastructure.
    • +
    • Integrate PeptidePal as a strategic category asset rather than leaving it disconnected.
    • +
    +
    + +
    + +

    The market persists, but no single operating pattern proves durability.

    + + + + + + + + + + + +
    Observed patternPublic examplesWhat the evidence means
    Open direct storeAmerican Peptides, Modern Peptides, Prime PeptidesLow-friction discovery and purchase; public claims and surrounding context are also easier to evaluate.
    Qualified-access storeSkye, Xcel, Loti, Ion, Mile HighAccess gates can collect purchaser representations and reduce public catalog exposure; they do not independently establish legal clearance.
    Creator-to-coded offerConnor → V&L, Clavicular → Arcane, Jesse → PeptiraThe creator supplies meaning and trust while the seller closes the transaction.
    Lifecycle-led commerceModern, American, Gentleman, LotiAccounts, alerts, email, SMS, points, and replenishment mechanisms support repeat behavior.
    Post-agency changeSeveral cited sellersObserved responses include gating, renaming, copy changes, product removal, domain migration, continued public retail, and closure.
    +
    “Still online” is evidence of market persistence, not evidence that a disclaimer, access gate, code name, or creator separation has been accepted as a safe harbor.
    +

    Official records documented research-use-only sellers whose wider labeling and marketing led FDA to treat the products as drugs. Other official records documented sellers that later gated catalogs, removed cited products, migrated, continued publicly, or disappeared. A warning letter records FDA’s concerns and an opportunity to respond; it is not a judicial finding.

    +
    + +
    + +

    Biologix does not need more disconnected tactics. It needs one accountable operating layer.

    +
    +
    +

    Creator operations

    +

    Recruiting, qualification, onboarding, content standards, attribution, communication, reporting, retention, and expansion should run through one system.

    +
    +
    +

    Management leverage

    +

    Managers should own portfolios and develop additional managers so growth creates leverage instead of more founder messages.

    +
    +
    +

    Lifecycle

    +

    Creator acquisition, membership, subscription, email, SMS, support, referral, and retention should share one customer view.

    +
    +
    +

    Finance visibility

    +

    Independent professionals should reconcile records and produce reliable reporting while the founders use that information to prioritize the company.

    +
    +
    +

    Quality and fulfillment

    +

    Product records, inventory movement, supplier documentation, complaints, and fulfillment performance require traceable owners and escalation paths.

    +
    +
    +

    Executive cadence

    +

    Every priority needs an owner, a status, a decision path, and a regular review so the company stops running through memory.

    +
    +
    +

    Partnership implication: Braden’s highest-value work is founder vision, product authority, sourcing, brand, and relationships. Alex and OVO’s highest-value contribution is building and managing the operating system around those strengths.

    +
    + +
    + +

    The evidence is strong enough to justify action—and disciplined enough to show what still needs proof.

    +
    +
    +

    Commercial records

    +
      +
    • Order exports and product-level sales records
    • +
    • Processor activity and bank settlements
    • +
    • Refunds, disputes, and chargebacks
    • +
    • Customer cohorts and repeat behavior
    • +
    • Affiliate attribution and payout ledger
    • +
    +
    +
    +

    Company records

    +
      +
    • Entity documents and ownership records
    • +
    • Accounting close and tax records
    • +
    • Material contracts and commitments
    • +
    • Insurance and claims history
    • +
    • Processor and platform agreements
    • +
    +
    +
    +

    Product and supply records

    +
      +
    • Supplier and import documentation
    • +
    • Inventory roll-forward and custody records
    • +
    • Testing records and chain of custody
    • +
    • Complaint and adverse-event records
    • +
    • Fulfillment performance and exception logs
    • +
    +
    +
    +

    Operating records

    +
      +
    • Current team and responsibility map
    • +
    • Creator agreements and active roster
    • +
    • Marketing and claims approval process
    • +
    • Technology, data, and access inventory
    • +
    • Current professional legal and regulatory advice
    • +
    +
    +
    +

    The purpose of diligence is not to slow the partnership down. It is to replace assumptions with a shared source of truth so both founders can move faster from the same facts.

    +
    + +
    + +

    Primary records and reproducible public snapshots.

    +
      +
    1. Biologix public popularity snapshot: WooCommerce Store API, popularity descending.
    2. +
    3. FDA guidance on warning-letter status: About Warning and Close-Out Letters.
    4. +
    5. FDA, Xcel Research: Warning Letter, December 2024.
    6. +
    7. FDA, Summit Research Peptides: Warning Letter, December 2024.
    8. +
    9. FDA, Prime Peptides: Warning Letter, December 2024.
    10. +
    11. FDA, Gram Peptides: Warning Letter, March 2026.
    12. +
    13. FDA, Mile High Compounds: Warning Letter, March 2026.
    14. +
    15. FDA, Prime Sciences: Warning Letter, March 2026.
    16. +
    17. FDA, PekCura Labs: Warning Letter, March 2026.
    18. +
    19. Internal call record: speaker-attributed transcripts from the three Braden–Alex calls, with founder-reported facts labeled separately from public observations.
    20. +
    +

    Research cutoff: July 2026. Public pages, availability, policies, and agency records can change. This brief is business research, not legal, medical, regulatory, tax, accounting, or investment advice.

    + +
    +
    + + diff --git a/biologix-strategy-board/research/brand-comparison.html b/biologix-strategy-board/research/brand-comparison.html new file mode 100644 index 0000000..9811aa3 --- /dev/null +++ b/biologix-strategy-board/research/brand-comparison.html @@ -0,0 +1,442 @@ + + + + + + + + + + + 18-brand funnel comparison + + +
    + +
    +
    +
    +

    Public market intelligence · Updated July 23, 2026

    +

    18-brand funnel comparison

    +
    +

    Use the navigation above to switch documents. Tables scroll horizontally on narrow screens.

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    brandfunnel_archetypecurrent_retatrutide_statusobserved_offeraccess_modelacquisitiontrust_layerbasket_and_retentionaffiliate_or_creator_pathpublic_positioningstrongest_observed_contradictionenforcement_signalconfidenceprimary_urls
    American Peptidesopen direct storeExplicit Retatrutide in 10/20/30/48/60mg; 30mg sold out during +observation10mg $105; 15% subscription; 7%/11%/16% quantity discounts21+ qualified-researcher modal and purchase certificationSearch/direct, reviews, partner trafficStrength-specific COAs; purity/identity/sterility/endotoxin +claimsReconstitution solution, syringe/kit, subscription, email/SMS, +reviewsPublic partner program up to 35%; recurring commissions +describedRUO; qualified researcher/institution; not human usePreselected preparation supplies and buyer reviews describing +hunger, weight, and resultsNo exact retatrutide warning located in this studyHigh current-page confidencehttps://shop.americanpeptides.us/products/retatrutide | +https://shop.americanpeptides.us/pages/affiliate-program
    Modern Peptidesopen browse, account before checkoutGLP-3 R page explicitly identifies Retatrutide; 5–60mg$96–$640; points return about 5% as store creditNo front-door gate; organization/account review before checkoutSearch/direct, email/SMSDeep current and previous COA library across multiple labsPoints, broad strengths, account, email/SMS, BAC waterAffiliate software observed; no public rate verifiedRUO; licensed/qualified useTerms contain consult-your-doctor and personal-use boilerplate; +public reconstitution contextNo exact retatrutide warning located in this studyHigh current-page confidencehttps://modern-peptides.com/product/glp-3-r/ | +https://modern-peptides.com/modern-points/ | +https://modern-peptides.com/terms-conditions/
    Prime Peptidesopen direct storeExplicit Retatrutide in 10/30/60mg$120/$265/$450; first-order and bulk offersPublic product; 21+ and qualified-purchaser representationsSearch/direct, affiliate and provider applicationsMultiple mapped 2026 batch reportsBAC water separately, email capture, shipping thresholdAffiliate and medical-provider registration visible; rate not +verifiedRUO; not human or clinical useHuman-readable metabolic mechanism plus reconstitution and 4–6-week +use languageFDA warning 2024; product remains publicHigh current-page and official-action confidencehttps://primepeptides.co/products/retatrutide/ | +https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/prime-vitality-inc-dba-prime-peptides-695156-12102024
    PekCura Labsopen product plus deep checkout qualificationCAS-coded product; page and SEO explicitly identify Retatrutide +10mg$159.99; backorder; prominent event discounts21+ RUO modal; DOB, institution, entity, protocol, and two +acknowledgments at checkoutSearch/SEO, promotionsCOA library; strong 30mg example includes mass, purity, sterility, +endotoxinEmail/SMS, support, reconstitution solutionNo public affiliate rate verifiedRUO; no bodily introduction; not 503A/503BWeight-management and metabolic wording plus post-reconstitution use +languageFDA warning March 2026; product remains publicHigh current-page and official-action confidencehttps://pekcuralabs.com/shop/pcl-2381089-83-2-10mg/ | +https://pekcuralabs.com/terms-and-conditions/ | +https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/pekcura-labs-721709-03312026
    Mile High Compoundsqualified-access storeMHC-3 RT publicly listed; detailed product behind research +access$69.99–$279.99 observed; 30% promotion; shipping tiers21+ RUO research-access accountSearch/direct, reviews, affiliatesPublic coded-product COA library; 7x/8x testing claims +inconsistentReconstitution solution, email, reviews, trackingGoAffPro/partner infrastructure observedRUO; no personal use, administration, or resaleAccessories and prior linked human-use content sit beside the +current gateFDA warning March 2026; same-brand store remains active and +gatedHigh current-page and official-action confidencehttps://milehighcompounds.is/ | +https://milehighcompounds.is/research-access/ | +https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/mile-high-compounds-llc-721600-03312026
    Skye Peptidesqualified-access storeCurrent public Retatrutide lot files; product catalog gatedAnonymous price unavailable21+ membership; business type; research attestations; +dosing/administration discussion prohibitedDirect/search traces and emailLot-indexed reports with sterility and endotoxin examplesAccount and Omnisend emailNo public affiliate program observedRUO; organizations/researchers only; no dosing guidanceStrong access rules reduce anonymous transparency but do not +establish purchaser purpose or reviewNo exact retatrutide warning located in this studyHigh on gate and public reports; price unavailablehttps://skyepeptides.com/register/ | +https://skyepeptides.com/skyepeptides/wp-content/uploads/2026/05/ret26-24-003-endotoxin.pdf
    Xcel Peptidesqualified-access storeGLP-3 route; current public lab and image metadata identify +RetaPrice gated; shipping thresholds at $200/$500/$1000Researcher type and intended setting/use; age acknowledgment; +possible affiliation reviewSEO/article, public lab library, affiliate couponsPublic multi-lot GLP-3 test libraryEmail/SMS, cart reminders, AfterShip, reconstitution solutionPersonalized affiliate code; customer gets 10%; promoter rate +undisclosedRUO; not sterile or for injection; no reconstitution guidanceClinic and clinical-study choices plus reconstitution solution and +Buy-Reta metadata conflict with strict termsFDA warning December 2024; store remains active and gatedHigh current-page and official-action confidencehttps://www.xcelpeptides.com/product/glp-3/ | +https://www.xcelpeptides.com/affiliate-application/ | +https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/xcel-research-llc-694608-12102024
    Loti Labsqualified-access plus SEO storeReta/GLP-3 in 10/20/30mg10mg $199.99; 35% event code; 20% SMS; quantity discountsBusiness type, EIN, optional research IDs, 21+, RUO +certificationHigh-frequency SEO resource library, reviews, SMSPer-batch testing claims and latest-COA routesSMS, newsletter, account, wholesale, reconstitution productsNo public seller-run affiliate rate locatedRUO; qualified professionals; no human/veterinary useConsumer-legible weight/metabolic copy, use-adjacent reviews, +calculator, and suppliesNo exact retatrutide warning located in this studyHigh current-page confidence; tenure claims inconsistenthttps://lotilabs.com/product/retatrutide-10mg/ | +https://lotilabs.com/resources/ | +https://lotilabs.com/terms-and-conditions/
    GL Peptidesopen creator-led direct storeExplicit Retatrutide vial 10/30/60mg and 60mg disposable penCategory from $70; pen $255; bulk quote; related kitsNo front-door gate observed; terms require 21+ qualified +researcherSearch/open catalog and Zaytovenfit referral routePublic Janoshik reports and displayed purityNewsletter, account/reorder, kits, BAC waterZay Linktree Retatrutide link routes through ref=155; compensation +unprovenRUO; no human, animal, clinical, or therapeutic useDisposable pen page gives needle, priming, injection, and sharps +directionsNo exact retatrutide warning located in this studyHigh on product and creator route; economics unknownhttps://www.glpeptides.is/products/retatrutide | +https://www.glpeptides.is/products/retatrutide-60mg-disposable-pen | +https://linktr.ee/Zaytovenfit
    Gentleman Peptidesgated creator and lead-magnet storePublic store data exposed in-stock Reta 10mg and 20mg$110/$160; 5% cashback; fast shippingNominal sign-in wall; visible registration asks email/password +onlyCreator ref route, ebook lead magnetPublic Reta lot certificate; broader testing claimsEbook email capture, account, cashbackZay route retains ref=zay; compensation unprovenRUO; 21+; qualified by training, certification, or institutionThin registration does not collect stated qualifications; current +product data is publicly exposedNo exact retatrutide warning located in this studyHigh on public store data; private checkout not testedhttps://gentlemanpeptides.com/ | +https://gentlemanpeptides.com/ebook-lander/ | +https://gentlemanpeptides.com/?ref=zay
    Pure Compounding Labsopen price-led retail and wholesaleGLP-3; vendor COA calls it Retatrutide; 10–60mg$38.90–$120 retail; 10-vial 10mg case $25021+ RUO modal; research entity/protocol fields observed at +checkoutSearch/open catalog, wholesale, partner assetsIdentity/mass/purity and fentanyl screen in sampled reportNewsletter, wholesale, accessoriesRecently public partner page claimed 25% flat commission; endpoint +later returned 404RUO; 21+ qualified purchaser; U.S.-onlyExtreme price compression, wholesale cases, and high partner +incentive on a new/rebranded operationNo exact retatrutide warning located in this studyHigh on product/price; partner enrollment status uncertainhttps://purecompoundinglabs.com/product/glp-3/ | +https://purecompoundinglabs.com/wholesale/ | +https://purecompoundinglabs.com/coa-page/
    Peptide Partnersopen direct plus owned-media storeExplicit GLP-3 Retatrutide 24mg vials in multi-vial packs$230–$1512; rotating 33% coupons; free shipping above $40021+ RUO modal remembered five days; simple account formSEO, owned publication/email, affiliate codesDeep lot documentation including identity/purity, sterility, +endotoxin, heavy metalsOwned publication, email, account, bulk packsPublic affiliate portal; rate not found; historical creator code +reportedRUO; qualified lab/company; no human use or use instructionsProduct calls it a weight-loss drug and gives reconstituted-vial +storage languageNo exact retatrutide warning located in this studyHigh current-page confidence; historical creator status +separatedhttps://peptide.partners/product/glp-3-retatrutide/ | +https://peptide.partners/independent-certifications/ | +https://blog.peptide.partners/about
    Ion Peptidequalified-access store with governance-forward affiliate systemION-3R mapped to GLP-3/Retatrutide category; 5–60mg$39–$219; 10%/16%/25% volume discounts; 5% ACHDOB, business type, institution, 21+ research-use +acknowledgmentSearch, promotional microsite, affiliate and wholesaleCOA library; HPLC/MS and some endotoxin evidenceEmail, account, live chat, supplies, wholesalePublic agreement and dashboard; detailed disclosure and claims +rules; rate privateRUO; qualified researcher; no personal use, guidance, resale, or +unauthorized promotionReconstituted-material copy, supplies, clinic/distributor +categories, and high-volume incentivesNo exact retatrutide warning located in this studyHigh current-page confidence; coded identity high but not explicit +in titlehttps://ionpeptide.com/product/ion3r/ | +https://ionpeptide.com/research-access/ | +https://ionpeptide.com/affiliate-agreement/
    Limitless Life Nootropicscreator-personalized affiliate storeRetatrutide HA visible on Sarah Westall page$179.99–$209.99; code Sarah saves 15%21+ affirmation and account/VIP surfacesSarah podcast/show notes and personalized seller pageVendor research positioning; product/category presentationVIP, newsletter, account, wishlist, creator curationTracked URLs and buyer code; public standard rates 12% on VIP/GLP +and 15% on most other peptidesResearcher posture and research-category namingSeller-hosted personalized page uses human wellness, +weight-management, and anti-aging themesNo exact FDA action attributed here; .com/.st continuity remains +unresolvedVery high on affiliate mechanism; actual payout and sales +unknownhttps://limitlesslifenootropics.com/sarah-westall/?add-to-cart=31621 +| https://limitlesslifenootropics.com/affiliate-registration/
    V&L Labscreator-to-coded-product storeGLP-RT 20mg product; Connor's guide explicitly identifies it as +Retatrutide$99.99–$249.99; one or ten; bulk discount; free shipping above +$200Terms require 21+ qualified research professionalConnor Skool community and public guideSeller research language plus creator authorityCreator's paid community, weekly calls, guides, coachingref=connor and codes CS/connor save buyer 10%; payout +undisclosedRUO; no human administration or therapeutic useCreator guide decodes product, states personal use, and provides +human-use protocol while linking sellerNo exact retatrutide warning located in this studyVery high on route/product; economics unknownhttps://www.vandl-labs.com/product/glp-rt-20mg/ | +https://www.skool.com/thesuperhhumanstandard/peptides-i-use
    Peptiracreator-to-gated-product storeRETA-3 10/20/30mg currently listed$99/$139/$179; BAC water $8/$15; extra cart offer observedRegistration asks identity, DOB, phone, company, researcher type, +and 21+ RUO affirmationJesse Marji Linktree and coaching funnelCurrent RETA batch libraryAccount, cart recovery, email, coaching adjacencyref=MARJI and code MARJI; payout undisclosedRUO; no human/veterinary use, injection, ingestion, or +protocolsCreator hub labels it a Retatrutide source next to fat-loss and +peptide coachingNo exact retatrutide warning located in this studyHigh on route and product; compensation unknownhttps://peptira.com/product-category/peptides/ | +https://peptira.com/research-use-only-ruo-policy/ | +https://linktr.ee/Jessemarji
    Arcane Peptidescreator-to-coded-product store3-GLP at CAS 2381089-83-2; identity strongly maps to +Retatrutide$95; $90.25 at 3+; BAC water $20; free shipping above $25018+ qualified-researcher affirmation and termsClavicular Linktree, direct vendor trafficCurrent COA lot and certificate libraryAccount, newsletter, wholesale, order trackingClavicular direct link; affiliate clause exists; no visible +code/rateRUO; no human, animal, therapeutic, aesthetic, or performance +useIndependent reporting describes creator's injection/source promotion +while live Linktree still routes to sellerNo exact FDA action attributed hereHigh on route; medium-high coded identity; compensation unknownhttps://linktr.ee/clavicular0 | +https://arcanepeptides.com/product/2381089-83-2/ | +https://www.citizen.org/article/the-miracle-drug-and-the-peptide-craze-breaking-the-fda/
    BioLongevity Labsowned-media and founder-company funnelNo current Retatrutide SKU verified; historical GLP-3/Retatrutide +COAs existCatalog promotions and 15% first-order offer; Jay courses at +$199/$499 and membership $124.99/month21+ account and research validationJay Campbell email, podcast, courses, tools, seller promotionHistorical COAs and current broad catalogDeep owned media, newsletter, courses, membership, product +launchesJay discloses cofounder status; code JAY15; general affiliate +program up to 15%In-vitro research only; validated buyer postureCurrent paid course provides human Retatrutide education and +preferred-source direction, but current seller SKU is absentNo exact retatrutide warning located in this studyHigh on ownership/history and absence of visible current SKUhttps://jaycampbell.com/about-jay/ | +https://jaycampbell.com/glp-1-microdose-course/ | +https://biolongevitylabs.com/coa/glp-3-11378/
    +
    +
    + + diff --git a/biologix-strategy-board/research/build_peptide_founder_media_intelligence.py b/biologix-strategy-board/research/build_peptide_founder_media_intelligence.py new file mode 100644 index 0000000..7c1b4e7 --- /dev/null +++ b/biologix-strategy-board/research/build_peptide_founder_media_intelligence.py @@ -0,0 +1,1850 @@ +#!/usr/bin/env python3 +"""Build the Peptide Founder Media Intelligence workbook. + +The workbook intentionally separates interview statements from current verification. +It excludes dosing and personal-use instructions and is not medical or legal advice. +""" + +from __future__ import annotations + +from collections import Counter +from datetime import date +import json +from pathlib import Path +from urllib.parse import urlparse + +from openpyxl import Workbook, load_workbook +from openpyxl.chart import BarChart, Reference +from openpyxl.formatting.rule import CellIsRule +from openpyxl.styles import Alignment, Border, Font, PatternFill, Side +from openpyxl.utils import get_column_letter +from openpyxl.worksheet.table import Table, TableStyleInfo + + +AS_OF = "2026-07-26" +OUTPUT = Path(__file__).with_name("Peptide-Founder-Media-Intelligence.xlsx") +WEB_OUTPUT = Path(__file__).with_name("peptide-founder-media-intelligence-data.js") + +INK = "26211D" +ESPRESSO = "382E28" +CREAM = "F7F2E9" +PORCELAIN = "FCFAF6" +STONE = "E8E0D4" +MUTED = "746A62" +SAGE = "57705B" +SAGE_LIGHT = "DFE9DF" +COBALT = "305EA8" +COBALT_LIGHT = "DEE8F7" +GOLD = "B59655" +GOLD_LIGHT = "F4E9CE" +CLAY = "A66059" +CLAY_LIGHT = "F1DEDB" +RED = "A33E3E" +RED_LIGHT = "F6DDDB" +WHITE = "FFFFFF" + +THIN_STONE = Side(style="thin", color=STONE) +BORDER = Border(left=THIN_STONE, right=THIN_STONE, top=THIN_STONE, bottom=THIN_STONE) + +EVIDENCE_LABELS = { + "A": "A - Public record / regulator / court / filing", + "B": "B - Independent media or directory", + "C": "C - Company-controlled source", + "D": "D - Founder, guest, show, or agency claim", + "E": "E - Review, complaint, or litigant allegation", + "I": "I - Analyst inference", +} + + +def source( + source_id: str, + priority: str, + lane: str, + company: str, + operator: str, + title: str, + published: str, + duration: str, + stage: str, + model: str, + media_url: str, + current_url: str, + current_status: str, + freshness: str, + confidence: str, + listen_for: str, +) -> dict: + return { + "ID": source_id, + "Priority": priority, + "Lane": lane, + "Company": company, + "Founder / operator": operator, + "Episode / source": title, + "Published": published, + "Duration": duration, + "Stage at recording": stage, + "Model": model, + "Media link": media_url, + "Current-check link": current_url, + "Current status at 2026-07-26": current_status, + "Freshness": freshness, + "Confidence": confidence, + "Why it matters": listen_for, + } + + +SOURCES = [ + source( + "JOI", + "1 - Start here", + "Exact category founder", + "Joi + Blokes", + "Josh and Katy Whalen", + "The New Health Gold Rush: Hormones, Peptides, GLP-1s & Fertility", + "2026-05-14", + "59:45", + "Founded 2021; about five years old", + "Self-pay diagnostics-first telehealth; separate female and male brands share operations", + "https://www.youtube.com/watch?v=aigF8IfN4Is", + "https://www.entrepreneur.com/building-a-business/they-built-a-50-million-business-before-glp-1s-became-mainstream-now-theyre-eyeing-this-new-health-frontier", + "Active; acquired HerMD and announced fertility expansion. Private scale claims are not audited.", + "Current; refreshed", + "4/5 model, 2/5 financials", + "Best direct evidence for a female-leading front, male sibling brand, shared backend, and category-education moat.", + ), + source( + "PEPTIRA", + "1 - Start here", + "Exact category founder", + "Peptira + Peptide Price", + "Benjamin Criss and Derek Pruski", + "How We Got Started: The Story of Peptide Price + Peptira", + "2025-11-01", + "46:59", + "Peptira about five months old", + "RUO ecommerce plus comparison, referral, education, and paid community", + "https://www.youtube.com/watch?v=Be58yiS6Vs4", + "https://peptira.com/test-results/", + "Both active. Peptira expanded its catalog and Peptide Price community; current shipping remedies are stricter than the episode promise.", + "Recent but materially changed", + "3/5 overall", + "Most useful day-one RUO operating interview: sourcing sequence, labels, lot IDs, COAs, support, pack ladders, and community feedback.", + ), + source( + "EC325", + "1 - Start here", + "Fast-growth case", + "Anonymous US peptide brand", + "Budai Media", + "Ecom Show #325: If I Had to Scale a Peptide Brand Today", + "2026-07-21", + "15:15", + "Claimed six months after a November 2025 start", + "Anonymous WooCommerce RUO brand; agency-operated acquisition and lifecycle", + "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t", + "https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss", + "Freshest operating update. Agency calls the model a near-term window and says Google scaled more reliably than Meta.", + "Very current; anonymous", + "2/5 revenue, 4/5 agency experience", + "Freshest exact growth playbook, but treat every revenue and margin number as an unaudited agency claim.", + ), + source( + "PERELEL", + "1 - Start here", + "Female-leading analog", + "Perelel", + "Alex Taylor, Victoria Thain Gioia, Dr. Banafsheh Bayati", + "Success Almost Broke Her: Building a Multimillion-Dollar Wellness Brand", + "2026-01-04", + "35:16", + "Five years old; just under 40 employees", + "Doctor-founded DTC subscription brand organized around women's life stages", + "https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412", + "https://www.prnewswire.com/news-releases/perelel-secures-27m-growth-investment-from-prelude-growth-partners-to-reimagine-womens-health-302622022.html", + "Active and expanded; $27M growth investment confirmed. Female-leading master brand still carries one men's product.", + "Current; high fit", + "5/5 tactics, 3-4/5 private metrics", + "Strongest brand-architecture and creator-cohort analog for turning interchangeable products into an identity system.", + ), + source( + "SHEMED", + "1 - Start here", + "Female-leading analog", + "SheMed", + "Olivia and Chloe Ferro", + "The Weightloss Wonders", + "2025-04-24", + "31:23", + "About four months after launch", + "Clinician-led UK telehealth subscription for women, primarily ages 35 to 55", + "https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders", + "https://www.shemed.co.uk/about", + "Company says 100K+ women served; reported $50M raise. Male sibling HeMed launched on shared infrastructure.", + "Historical launch story; current state refreshed", + "5/5 model, 4/5 private scale", + "Clearest female-front/shared-backend precedent and best example of testing brand tone against the real buyer.", + ), + source( + "MOCHI", + "1 - Start here", + "Platform analog", + "Mochi Health", + "Dr. Myra Ahmad", + "Inside the Peptide Craze", + "2026-04-28", + "1:08:00; founder segment 43:41-68:19", + "Four years old; minimally funded marketplace", + "Recurring cash-pay access connecting customers, providers, pharmacies, testing, and support", + "https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940", + "https://joinmochi.com/longevity", + "Active; launched a longevity offering after the interview. Company claims 500K+ members; provider count varies by source.", + "Very current; rapidly changing", + "4/5 model, 2-3/5 private metrics", + "Best analog for recurring access, price transparency, provider continuity, testing capacity, and restrained funding.", + ), + source( + "VITABELLA", + "2 - Deep dive", + "Exact category founder", + "Vita Bella Health", + "Phil Vella", + "The State of the Hormone & Peptide Industry", + "2026-02-26", + "1:14:19", + "Founded 2023; about three years old", + "Cash-pay telehealth MSO and recurring membership", + "https://www.youtube.com/watch?v=vwgd2UFdE6A", + "https://vitabella.com/membership/", + "Active; California added after recording. Current pricing is visible, while state, review, and legacy-price claims conflict across pages.", + "Recent; partly changed", + "3/5 overall", + "Useful for membership mechanics, service capacity, partner boundaries, and why a broad catalog is operationally hard.", + ), + source( + "REDLINE", + "2 - Deep dive", + "Day-zero operator", + "Redline Biolabs", + "Kyle and Ryan", + "Two Firefighters Built a Peptide Company", + "2026-05-26", + "1:19:22", + "Company domain created 2026-04-04", + "Founder-led RUO ecommerce", + "https://www.youtube.com/watch?v=JQSJYACbOCU", + "https://www.redlinebiolabs.com/lab-reports", + "Active store and lab-report library; no evidence of rapid scale. Current site contains documentation and affiliate-language inconsistencies.", + "Very recent; pre-scale", + "4/5 footprint, 1/5 scale/quality claims", + "Best day-zero case for founder visibility, payment failure, supplier loss, overselling, service recovery, and channel codes.", + ), + source( + "EC320", + "2 - Deep dive", + "Fast-growth case", + "Anonymous US peptide brand", + "Budai Media", + "Ecom Show #320: How We Scaled a US Peptide Brand", + "2026-05-12", + "17:48", + "Claimed five months after launch", + "Anonymous WooCommerce RUO brand", + "https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr", + "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t", + "Superseded by #324 and #325. Initial $500K monthly claim later became $600K.", + "Recent but superseded", + "2/5", + "Original channel ramp, learning-period, email-provider failure, and fulfillment/payment coordination story.", + ), + source( + "EC324", + "2 - Deep dive", + "Fast-growth case", + "Anonymous US peptide brand", + "Budai Media", + "Ecom Show #324: How to Scale Your Peptide Brand", + "2026-07-07", + "14:35", + "Claimed five months after launch", + "Anonymous WooCommerce RUO brand", + "https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so", + "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t", + "Mostly current, but #325 is the latest agency position. Approval-bypass discussion is excluded from the workbook playbook.", + "Very recent; superseded in part", + "2/5 revenue, 4/5 agency experience", + "Lifecycle flows, same-product volume ladders, subscriptions, and channel-fragility observations.", + ), + source( + "REM", + "2 - Deep dive", + "Young adjacent operator", + "Remedora", + "Coy McAlexander", + "Advanced Affiliate EP 134", + "2026-05-28", + "55:25", + "Very young; domain created 2025-10-23", + "Telehealth launch and operating layer", + "https://www.youtube.com/watch?v=1qgxkaPcq4k", + "https://remedora.com/", + "Active $200/month platform claim. Scale and vertical-integration assertions remain unverified; retatrutide-compounding discussion is outdated.", + "Recent but one material claim is outdated", + "3/5 footprint, 1-2/5 scale", + "Useful for networking, platformization, cohort LTV, and concentration risk. Not a legal or compounding authority.", + ), + source( + "ARRAE", + "2 - Deep dive", + "Creator-growth analog", + "Arrae", + "Siffat Haider and Nish Samantray", + "What Makes a Successful Wellness Brand", + "2023-05-02", + "39:21", + "Three years old; about 12-13 employees", + "Creator-native DTC wellness and supplement brand", + "https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597", + "https://www.forbes.com/sites/karineldor/2026/02/18/building-100m-wellness-brand-arrae-siff-haider-on-calculated-risk-and-relentless-standards/", + "Active with broader assortment, subscription, and major retail. Company reports $100M+ cumulative revenue and 1.6M+ units, unaudited.", + "Old launch tactics; current state refreshed", + "5/5 tactics, 3/5 metrics", + "Strongest creator-seeding system: broad honest gifting, promote organic advocates, multi-year relationships, and customer-as-creator.", + ), + source( + "BELLI", + "2 - Deep dive", + "Community-growth analog", + "BelliWelli", + "Katie Wilson, Nick Wilson, Tyson", + "How Katie Wilson Bought Facebook Groups to Build a Gut Health Empire", + "2025-06-27", + "57:17", + "Post-DTC launch; scaling into Walmart and Target", + "DTC subscription plus mass retail wellness", + "https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422", + "https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth", + "Active powder and gummy assortment, DTC subscription, broad retail, and independently reported $15.4M Series A.", + "Current; high creator/content fit", + "5/5 tactics, 3/5 metrics", + "Best community/content engine: ownable repeatable format, constant field research, and the danger of confusing niche PMF with mass PMF.", + ), + source( + "TRANSCEND", + "3 - Historical caution", + "Exact category founder", + "Transcend Company", + "Ernest Colling", + "What's Really Going On in the Peptide Business", + "2024-09-16", + "1:01:54", + "Almost four years old", + "Telehealth MSO supporting independent practices and pharmacies", + "https://www.youtube.com/watch?v=c6jUD2kyyDA", + "https://transcendcompany.com/pages/change-of-provider-letter", + "Operating under new owner Lance Converse and changed provider structure after a dispute and litigation. Use only for historical origin and scale-break lessons.", + "Materially changed", + "3/5 current facts, 2/5 private claims", + "A cautionary scaling case: creator demand outran support and partner capacity; old founder titles no longer describe current control.", + ), + source( + "BIOLONG", + "3 - Historical caution", + "Exact category founder", + "BioLongevity Labs", + "Jay Campbell", + "Mind Pump 2500: Weird Performance-Enhancing Supplements", + "2024-12-30", + "Business segment near 1:05:55", + "About two months old by founder account", + "RUO storefront plus separate supplements, founder media, courses, and private community", + "https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/", + "https://biolongevitylabs.com/research/", + "Active with current content and catalog. Site product-count claims conflict; proposed pen products were not found.", + "Historical interview; active business refreshed", + "3/5 footprint, 1-2/5 scale", + "Useful for education-led demand and existing-community leverage; weak proof of scale or delivered roadmap.", + ), +] + + +NOTES: list[dict] = [] + + +def note( + source_id: str, + timecode: str, + topic: str, + extraction: str, + application: str, + evidence: str = "D", + freshness: str = "From episode; verify before acting", +) -> None: + start_seconds = None + if timecode and timecode[0].isdigit(): + first = timecode.split("-")[0].strip() + parts = first.split(":") + try: + if len(parts) == 2: + start_seconds = int(parts[0]) * 60 + int(parts[1]) + elif len(parts) == 3: + start_seconds = int(parts[0]) * 3600 + int(parts[1]) * 60 + int(parts[2]) + except ValueError: + start_seconds = None + base_url = next(item["Media link"] for item in SOURCES if item["ID"] == source_id) + timestamp_url = base_url + if start_seconds is not None and "youtube.com/watch" in base_url: + joiner = "&" if "?" in base_url else "?" + timestamp_url = f"{base_url}{joiner}t={start_seconds}s" + NOTES.append( + { + "Source ID": source_id, + "Company": next(item["Company"] for item in SOURCES if item["ID"] == source_id), + "Timestamp": timecode, + "Topic": topic, + "What the operator said / what happened": extraction, + "What Biologix can learn": application, + "Evidence class": EVIDENCE_LABELS[evidence], + "Freshness note": freshness, + "Timestamp link": timestamp_url, + } + ) + + +# Joi + Blokes +note("JOI", "01:30-03:35", "Founder-market fit", "The founders trace the company to their own difficult search for better care and say they personally believe in the offers.", "Use authentic founder involvement only where it is true; founder conviction can humanize an opaque category.") +note("JOI", "03:38-04:18", "Category education", "Early acquisition required teaching the market about proactive labs and peptides. Later competition reduced the basic education burden.", "Move content from category definition toward operator-specific trust, proof, and decision support as awareness rises.") +note("JOI", "04:19-09:22", "Operating barrier", "State rules, pharmacy shipping, and clinical oversight were major launch barriers. They position themselves between conventional medicine and unregulated RUO sellers.", "Do not borrow clinical positioning without clinical infrastructure; decide and communicate the actual operating lane.") +note("JOI", "08:04-11:54", "Category criticism", "They criticize research-product sellers that provide access without clinical guidance.", "Expect credible operators to attack the category's trust gap. Documentation and role clarity must answer the objection without pretending to provide care.") +note("JOI", "14:40-17:47", "Product concentration", "They say regulatory change reduced the peptide range after 2023 and that they intentionally stayed conservative.", "Build scenario plans for losing a hero category rather than treating the catalog as permanent.") +note("JOI", "18:02-20:24", "Revenue concentration", "Founder says GLP-1 reached about half of revenue before manufacturer pressure caused them to remove public advertising and listings; he says it is now 15-20%.", "Track share of revenue by product and by acquisition promise. Concentration can hide inside a broad-looking catalog.", "D", "Private revenue mix; unaudited") +note("JOI", "29:40-34:05", "Founder strain", "They describe 2025 as their hardest year as CAC rose and leadership stress grew.", "Model leadership and service capacity as constraints, not just ad spend and inventory.") +note("JOI", "31:51-32:20", "Creative ownership", "Josh says he personally studies advertisements and website user journeys.", "Keep a founder or senior owner close to creative quality and conversion, even after hiring agencies.") +note("JOI", "34:06-37:51", "Female-front architecture", "The business runs two audience-facing companies on one operation. Josh calls Joi the stronger engine and says women often bring male partners into Blokes.", "Strong direct support for a female-leading flagship, technical male access, and shared backend.") +note("JOI", "48:53-52:17", "Scale and capital", "They say they are approaching $50M in revenue, are essentially self-funded, and now need more experienced operators or capital.", "Demand can outrun the founders' operating altitude. Define when to add experienced functional leaders.", "D", "Revenue is management-reported") +note("JOI", "52:42-54:36", "Adjacency", "The audience is becoming younger and fertility is presented as the next major adjacency.", "Expand only after the core engine is stable; use customer progression to identify the next front door.") +note("JOI", "55:24-57:31", "Growth versus profitability", "They describe tension between maintaining profitability and preserving venture-attractive growth.", "Choose the capital model deliberately; do not let fundraising optics dictate channel spend.") + +# Peptira + Peptide Price +note("PEPTIRA", "00:00-03:12", "Comparison-layer origin", "Peptide Price began as a two-day MVP listing four vendors because price and vendor comparison was difficult.", "A decision tool can become distribution infrastructure before it becomes polished software.") +note("PEPTIRA", "02:41-03:08", "Vendor relationship", "Derek says vendors opt in and his owner relationships let him intervene when customers have problems.", "Partner channels are strongest when they can resolve service failures, not merely drop affiliate links.") +note("PEPTIRA", "03:15-04:31", "Launch channel", "TikTok launched the comparison tool; a viral post allegedly reached about 70K views while he manually sent a raw URL.", "Manual distribution is acceptable before automation. Validate message-to-click behavior first.", "D", "View count is founder-reported") +note("PEPTIRA", "04:32-06:35", "Community-led assortment", "Community requests determined vendors and products; testing and COAs became the main qualification standard.", "Use support tickets, search logs, creator comments, and comparison queries as a structured catalog research feed.") +note("PEPTIRA", "06:37-08:58", "Platform fragility", "Derek says eight TikTok accounts were banned and he moved the audience into a paid Skool community.", "Always build an owned audience and exportable identity graph; rented reach can disappear.") +note("PEPTIRA", "09:00-13:41", "Decision criteria", "Comparison value extends beyond lowest price to per-mg price, codes, test scope, shipping, and reviews.", "Win the comparison surface with structured proof, not generic brand language.") +note("PEPTIRA", "14:38-17:27", "Launch sequence", "Peptira formed in June 2025 and spent roughly six weeks on supply, labels, and packaging before launch.", "Treat sourcing, label system, testing, and fulfillment as the launch critical path.") +note("PEPTIRA", "17:31-21:19", "Batch trust", "Labels evolved from QR-only to include batch ID, measured content, and purity; QR links to batch COAs.", "Put lot identity and meaningful test outputs on the physical product and PDP, with current and historical status.") +note("PEPTIRA", "21:21-22:45", "Volume ladder", "The store uses one, three, five, and ten-unit quantities with volume discounts.", "Test simple same-product quantity ladders before complex mixed bundles.") +note("PEPTIRA", "22:51-24:15", "Unsupported scale claim", "Ben calls Peptira a top-15 US peptide company and promises prices will not increase.", "Never use rankings or permanent-price promises without an auditable basis.", "D", "Unsupported") +note("PEPTIRA", "24:20-29:24", "Service moat", "Ben claims under-50-minute support, GPS on nearly all shipments, and automatic lost-package replacement; HubSpot was planned.", "Instrument first-response time, resolution time, replacement cost, and shipment exception rate before making promises.", "D", "Replacement promise is now contradicted by live policy") +note("PEPTIRA", "30:01-31:38", "Release gate", "They withheld a promotion-ready product until third-party testing returned.", "Make test clearance a hard inventory-release state, not a marketing preference.") +note("PEPTIRA", "31:40-39:49", "Founder overload", "Ben left insurance work and was still packing and handling support late at night, then recognized the need for delegation.", "Document SOPs and staff the exception queue before volume turns founder responsiveness into a bottleneck.") +note("PEPTIRA", "39:52-46:18", "Education risk", "Podcast topics and courses were community-led, but some content crosses toward personal-use protocols.", "Keep education focused on lawful research, testing, documentation, and product handling boundaries; exclude dosing and personal-use guidance.", "D", "Risk remains current") + +# Transcend +note("TRANSCEND", "02:24-18:13", "Origin", "Colling links the company to personal health problems, a closed local clinic, and a late-2020 launch.", "Personal frustration can identify demand, but it does not replace the operating and evidence model.") +note("TRANSCEND", "20:03-22:50", "Concierge service", "He kept his day job for about a year while building an education-heavy concierge model.", "Preserve runway while validating high-touch service; do not overhire before demand is repeatable.") +note("TRANSCEND", "24:05-26:34", "Hidden complexity", "State licensing, malpractice, physician-patient rules, and pharmacy shipping were larger obstacles than expected.", "Map every partner, state, and handoff before projecting national scale.") +note("TRANSCEND", "27:20-28:44", "Initial audience", "Initial acquisition focused on bodybuilders and athletes through education and influencers.", "A sharp founding niche can create density, but plan how the brand broadens without losing credibility.") +note("TRANSCEND", "35:07-36:21", "Breakout trigger", "FitCon Dallas and two affiliates allegedly created enough demand for the founder to leave his job within about 90 days.", "Creator pilots should be capacity-gated. A successful launch can be more dangerous than a failed one.", "D", "Affiliate contribution unaudited") +note("TRANSCEND", "36:23-37:05", "Bootstrap claim", "The founder says the basement business was profitable from day one and self-funded.", "Low overhead helps, but do not use the claim as a forecast without full unit economics.", "D", "Unaudited") +note("TRANSCEND", "37:06-38:27", "Scale break", "Scaling from hundreds of thousands to millions per month allegedly broke hiring, training, calls, patient capacity, and pharmacy inventory.", "Build a launch-readiness gate across support, inventory, fulfillment, and partner capacity before adding creators.", "D", "Historical; current control changed") +note("TRANSCEND", "38:27-40:14", "Role boundaries", "Independent pharmacies dispense and ship; Transcend manages goals, process design, and administration.", "Map responsibility for every customer-visible failure and write escalation/continuity terms.") +note("TRANSCEND", "40:16-42:34", "Audience expansion", "The business broadened from bodybuilding toward longevity and discussed employer/B2B expansion.", "Expand audience only after the first segment's retention and service model is proven.") +note("TRANSCEND", "42:34-44:19", "Price trend claim", "Colling says peptide prices fell by one-third to two-thirds over five to ten years.", "Assume molecule pricing can commoditize and build value in proof, service, creators, and data.", "D", "No supporting data") +note("TRANSCEND", "46:24-47:05", "Single-product risk", "GLP-1 awareness drove demand, but he did not want one product to define the company.", "Use the hero SKU as an acquisition wedge while monitoring concentration and cross-category movement.") +note("TRANSCEND", "48:39-52:20", "Mission layer", "The foundation focused on veterans and first responders.", "A credible community mission can strengthen identity, but it must be operationally and financially real.") +note("TRANSCEND", "60:10-60:57", "Foundation claim", "Founder claims roughly 100 patients served and $1.5M provided or donated over 18 months.", "Require auditable impact reporting before making mission-based scale claims.", "D", "Tax filings confirm foundation, not amount") + +# Vita Bella +note("VITABELLA", "01:08-02:17", "Geographic coverage", "Vella says Vita Bella operated in 40 states and views state complexity as both barrier and moat.", "Treat geographic breadth as an operations matrix, not a marketing line.") +note("VITABELLA", "03:46-05:50", "Founder background", "The idea followed a technology career, severe injury, and frustration with healthcare markups.", "Transfer the service-design and systems mindset, not unsupported pricing accusations.") +note("VITABELLA", "06:43-08:20", "Healthcare as a service", "The founder modeled recurring access on enterprise software and admits starting broad is harder than starting narrow.", "Start with a coherent wedge and only add categories after navigation, support, and economics work.") +note("VITABELLA", "08:21-13:29", "Competitor testing claim", "He says four competitor samples contained unknown or mislabeled contents but shows no reports, names, or chain of custody.", "Never publish competitor-safety accusations without named reports, independent sampling, and defensible custody.", "D", "Unsupported") +note("VITABELLA", "12:35-14:24", "Markup claim", "The founder gives pharmacy-cost and competitor-markup examples without invoices.", "Do not use unaudited unit economics as a pricing anchor.", "D", "Unsupported") +note("VITABELLA", "14:28-21:07", "Rapid growth claim", "He claims hiring 20 providers, 300% growth in weeks, and a 220% increase in new-patient spend after industry disruption.", "A competitor failure can create a demand shock; maintain surge capacity and verify economics before celebrating growth.", "D", "Unaudited") +note("VITABELLA", "21:39-25:45", "Service retention", "Long visits, service, outcomes, and 48-72-hour pharmacy delivery are positioned as retention levers.", "Tie retention to measurable service states, but align marketing promises with governing terms.") +note("VITABELLA", "25:52-29:25", "Jurisdiction choice", "At recording, the company deliberately excluded California and other complex markets.", "Refusing markets can be a strategic capacity decision, not a failure of ambition.", "D", "California has since launched") +note("VITABELLA", "29:27-34:30", "Membership mechanics", "The offer was $129 monthly plus a $99 consultation, separate labs, quarterly visits, one included treatment, and add-ons.", "If using recurring access, separate the fee, included value, product costs, commitment, and cancellation terms unmistakably.") +note("VITABELLA", "43:25-45:07", "Creator incentive design", "Vella criticizes creator incentives that encourage oversized stacks and higher customer spend.", "Pay for qualified, retained customers and compliant content, not larger baskets or product intensity.") +note("VITABELLA", "45:09-50:29", "Future category", "He expects continued demand and more big-pharma entry through patents and new delivery methods.", "Plan for changing consumer expectations and stronger incumbents, not only today's vendor set.") +note("VITABELLA", "57:14-58:47", "Behavioral retention", "App, training, and accountability are presented as retention tools.", "Build retention around useful workflows and support rather than silent auto-renewal.") +note("VITABELLA", "59:02-60:43", "Growth throttle", "Founder says he would pause growth if service quality deteriorated.", "Create explicit stop rules tied to response time, stockouts, payment failures, and complaint rate.") +note("VITABELLA", "66:14-66:20", "Revenue concentration", "Founder says a single category represented about 40% of revenue despite nearly 100 medications.", "Catalog breadth does not equal diversified economics; measure concentration by net contribution.", "D", "Private claim") + +# Anonymous Ecom Show growth case +note("EC320", "00:30-01:19", "Claimed growth", "Agency says a basic WooCommerce brand launched in November 2025 and reached roughly $500K trailing-30-day revenue after five months.", "Use as a hypothesis that demand can ramp quickly, never as a forecast.", "D", "Anonymous, unaudited, later updated") +note("EC320", "01:26-02:45", "Prerequisites", "Self-hosted commerce, card processing, fulfillment, and a professional team are described as prerequisites.", "Launch readiness must include stable payments, inventory, fulfillment, and accountable owners.") +note("EC320", "02:51-03:03", "Agency economics", "The agency says it operated Google, Meta, and email on a revenue-share arrangement.", "Evaluate agencies on contribution margin, data ownership, and scope, not attributed revenue alone.", "D", "Agency account") +note("EC320", "04:17-05:51", "Learning period", "Month one allegedly spent $7K on Google for $4.5K attributed revenue; the loss was treated as a 30-60-day learning investment.", "Set a bounded test budget, leading indicators, and kill rules before assuming a loss will mature into scale.", "D", "Anonymous attributed metrics") +note("EC320", "05:51-08:15", "Channel sequence", "Sequence was Shopping, branded search, then Performance Max. Agency claims about $300K attributed revenue on $151K spend.", "Capture existing product-name intent first and segment by product and margin; reconcile platform attribution to settled orders.", "D", "Anonymous attributed metrics") +note("EC320", "09:17-11:43", "Vendor failure", "Email flows were built immediately, but Klaviyo allegedly closed the account and a FluentCRM rebuild took three weeks.", "Export customer and event data continuously and keep a tested migration path.") +note("EC320", "12:01-14:10", "Meta signal", "Meta allegedly produced very high early ROAS at small spend.", "Treat tiny-budget ROAS as a creative signal, not proof of scalable economics.", "D", "Anonymous agency attribution") +note("EC320", "14:22-17:48", "System interaction", "Agency attributes $14K-$15K days to acquisition, email, fulfillment, and payments finally working together.", "Growth is a system state. Instrument failures across the full customer chain.", "D", "Anonymous revenue claim") + +note("EC324", "00:30-01:13", "Scale update", "Agency calls the client its fastest, from zero to $20K daily in five months.", "Preserve as an upside case only; require client identity and raw cohort data before benchmarking.", "D", "Anonymous, unaudited") +note("EC324", "01:18-03:18", "Trust surface", "Agency recommends accessible COAs, clear disclaimers, card payments, and avoiding human-use, mixing, dosing, or benefit claims.", "Build proof and operational clarity into the storefront while keeping education inside lawful research boundaries.") +note("EC324", "03:24-04:05", "Scale update", "Claim rises to $600K monthly, including $450K attributed to Google on $150K spend.", "Changing claim definitions are a warning to reconcile gross orders, settled revenue, refunds, and channel attribution.", "D", "Anonymous, unaudited") +note("EC324", "04:05-05:04", "Channel fragility", "Agency says only two of eight client Meta accounts remained active while all eight were active on Google.", "Do not make one ad platform the business. Maintain creator, search, email, and direct channels.", "D", "Agency-reported experience") +note("EC324", "05:11-06:29", "Existing intent", "Product-name search and Shopping allegedly outperform benefit-oriented queries.", "Prioritize clear product taxonomy and high-intent demand capture; avoid unsupported benefit language.") +note("EC324", "06:29-08:31", "Approval evasion", "The episode includes tactics intended to bypass platform review.", "Exclude entirely. Build no workflow around evasion, renamed products, cloaked pages, or misleading review surfaces.", "D", "Intentionally excluded from implementation") +note("EC324", "08:54-10:22", "Owned lifecycle", "Self-hosted email is presented as a response to hosted-provider shutdowns.", "Owning infrastructure reduces vendor concentration but increases deliverability, security, and maintenance responsibility.") +note("EC324", "10:28-12:19", "Lifecycle flows", "Recommended flows are welcome, browse/cart abandonment, post-purchase, VIP, winback, and replenishment; agency claims 5-15% of sales.", "Implement the event model early and measure incremental lift rather than accepting vendor attribution.", "D", "Revenue share is agency-reported") +note("EC324", "12:26-14:16", "Offer architecture", "Same-product volume discounts and subscriptions are favored over mixed-product bundles.", "Test volume ladders first; any subscription must require clear express consent and easy cancellation.") +note("EC324", "14:16-14:35", "Business-model migration", "Agency says its largest client was moving from RUO ecommerce toward telehealth.", "Treat operating-lane optionality as a board-level question, not a cosmetic site change.", "D", "Anonymous client") + +note("EC325", "00:30-01:25", "Latest scale claim", "The freshest episode describes $600K in one month after six months.", "Use only as an unverified upside case; do not plug into forecasts.", "D", "Anonymous and unaudited") +note("EC325", "01:31-03:20", "Latest channel view", "Agency now calls Google the strongest acquisition channel; Meta looked attractive but did not scale reliably.", "Test product-intent capture while treating approval and account continuity as uncertain.", "D", "Current agency experience, not a guarantee") +note("EC325", "03:20-04:37", "Campaign structure", "Sequence remains Shopping, search, then Performance Max, segmented by product and margin.", "Organize reporting around SKU contribution and settled order economics.") +note("EC325", "04:37-07:10", "Optimization discipline", "Legitimate advice is to change budgets gradually, change one variable at a time, and review landing pages monthly.", "Adopt experiment logs and one-variable decision windows; discard the episode's approval-evasion material.") +note("EC325", "07:48-11:22", "Email and subscription", "Agency recommends lifecycle and subscription architecture at launch, including preselection.", "Build lifecycle early, but never preselect subscriptions; require clear express consent and visible terms.") +note("EC325", "11:33-12:04", "Campaign threshold", "Regular campaigns begin after the list reaches hundreds or thousands; SMS remains exploratory.", "Start triggered lifecycle first. Add broadcast cadence only when list size and engagement justify it.") +note("EC325", "12:04-14:33", "Payment instability", "Agency again stresses documentation and card payments while acknowledging unstable payment approval.", "Processor redundancy, reserve visibility, chargeback controls, and honest underwriting are launch-critical.") +note("EC325", "14:33-15:15", "Exit-quality warning", "Agency calls RUO ecommerce a near-term window and doubts easy eight- or nine-figure exits.", "Optimize for durable customer data, creator relationships, proof systems, and optionality, not only near-term gross sales.", "D", "Freshest strategic observation") + +# Remedora +note("REM", "00:31-04:45", "Prior scale claims", "Coy describes ecommerce, SEO, affiliate experience, and large revenue in earlier insurance businesses, not Remedora.", "Do not transfer a founder's prior-company scale into the new company's traction.", "D", "Prior business only") +note("REM", "06:15-08:01", "Concentration shock", "He says a CMS change collapsed daily ACA call volume from 10K-12K to about 400.", "Model policy and channel concentration as existential risks even when current economics look exceptional.", "D", "Historical founder account") +note("REM", "12:30-13:45", "Networking system", "Coy says he spends two to three hours daily on relationships and used the network to identify telehealth demand.", "Make operator, lab, processor, creator, and partner relationships a scheduled founder channel.") +note("REM", "16:45-17:30", "Market entry", "He entered telehealth through affiliate sales and prior subscription-commerce experience.", "Learn the demand and operating graph before trying to own every layer.") +note("REM", "22:01-23:45", "Platform thesis", "Remedora was conceived as a Shopify-like launch layer for telehealth.", "Shared infrastructure can turn one brand experiment into a portfolio capability, but product claims require verification.") +note("REM", "26:55-30:15", "Vertical integration", "The founder discusses pharmacy acquisition and integration, without proof a transaction occurred.", "Integrate only where control and economics justify capital, licensing, and operational risk.", "D", "Future or exploratory claim") +note("REM", "31:45-35:52", "Cohort economics", "He says clients often lose money in months one and two, making retention and LTV decisive.", "Track contribution by acquisition month through second and third purchases, not first-order ROAS.", "D", "Private cohort claim") +note("REM", "35:52-38:31", "Retatrutide compounding", "The episode discusses possible compounding pathways.", "Discard this section for current planning; FDA now says retatrutide cannot be used in compounding under federal law.", "D", "Outdated and superseded") +note("REM", "40:30-42:45", "Offer", "Episode price was $200 monthly plus certification-related costs.", "Treat platform pricing as only one line item; verify payment, provider, pharmacy, support, and state costs.") +note("REM", "47:30-52:15", "Founder-led sales", "Networking, conferences, access, and credible proof artifacts drive sales.", "Pair relationship selling with auditable artifacts and a repeatable follow-up system.") + +# Redline Biolabs +note("REDLINE", "00:45-01:00", "Founding niche", "The company was founded by two Houston-area firefighters.", "A real occupational identity can create trust and a dense initial community.") +note("REDLINE", "03:15-05:00", "Speed to launch", "They describe moving quickly from supplier research to a live website.", "Speed is useful only after supplier, testing, payment, and inventory gates are real.") +note("REDLINE", "06:45-07:30", "Audience wedge", "First responders are the initial niche; founder transparency and accessible education are the differentiation.", "Start with an audience that can recognize and refer the founders.") +note("REDLINE", "14:45-16:32", "Sourcing", "They acknowledge mixed sourcing and express a goal of more US-synthesized supply.", "Publish precise, product-specific sourcing and test scope; aspirations are not present facts.", "D", "Self-reported") +note("REDLINE", "17:30-18:15", "Trust response", "Visible founders and COAs are their answer to the scam objection.", "Put real people beside verifiable batch proof, while making the limits of each proof clear.") +note("REDLINE", "18:15-20:45", "Payment loss", "Early card-processing failures allegedly caused at least six abandoned orders when buyers encountered cryptocurrency.", "Do not launch creator traffic until the primary and backup checkout rails have been tested end to end.", "D", "Founder-reported") +note("REDLINE", "35:45-37:16", "Supplier loss", "They say a supplier completed a small trial order and vanished after a roughly $700 larger order.", "Use staged purchase orders, counterparty verification, retention samples, and acceptance criteria.") +note("REDLINE", "38:16-39:15", "Founder acquisition", "Founder-face TikTok and podcasts are the main early channels.", "In a low-trust category, access and candor can outperform polished anonymous branding.") +note("REDLINE", "40:00-42:15", "Oversell recovery", "An inventory error oversold a bundle; founders called buyers, substituted inventory, and promised the missing item later.", "Synchronize saleable inventory, define substitutions, and proactively own service failures.") +note("REDLINE", "42:30-43:15", "Attribution", "A podcast-specific discount code was created.", "Give every creator and appearance a source ID, code, landing page, and cohort.") +note("REDLINE", "43:45-47:15", "Early service", "Fast replies and proactive stock updates are treated as an early advantage.", "Turn founder responsiveness into documented SLAs and escalation paths before it becomes unsustainable.") + +# BioLongevity Labs +note("BIOLONG", "01:05:55-01:06:19", "Ambition", "Jay says the two-month-old business aimed to become the largest research-peptide and bioregulator seller within 12-15 months.", "Separate ambition from evidence. Demand proof is revenue, repeat behavior, and contribution, not a stated goal.", "D", "Historical and unverified") +note("BIOLONG", "01:06:19-01:06:58", "Future format", "He describes future pen-format products from a California facility.", "Do not repeat planned product formats as delivered traction.", "D", "Current catalog check found no pens") +note("BIOLONG", "01:06:58-01:07:27", "Audience leverage", "Founder claims an existing 650-member paid education community and multiple courses.", "An owned, paying knowledge community can lower launch friction, but verify engagement and buyer overlap.", "D", "Unaudited") +note("BIOLONG", "01:07:27 onward", "Education centerpiece", "BioLongevity is described as the commercial centerpiece of a broader education ecosystem.", "Build media and research content as a durable discovery layer, while keeping human-use guidance out of RUO commerce.") + +# SheMed +note("SHEMED", "01:33-02:48", "Launch demand", "The female-focused launch expected roughly 1,000 applicants and claimed about 16,000.", "A sharp female front can unlock latent demand, but applicant volume is not the same as paid retention.", "D", "Founder-reported") +note("SHEMED", "04:06-06:37", "Founder insight", "Olivia's long diagnosis journey produced the founding insight.", "Use lived experience to shape questions and service language, not to substitute for expertise.") +note("SHEMED", "08:03-09:24", "Seriousness signal", "Mandatory testing is used to frame the problem as biological, not cosmetic.", "Visible friction can signal seriousness only when it is genuinely necessary, useful, and expertly governed.") +note("SHEMED", "09:34-12:37", "Role clarity", "The founders explicitly are not clinicians. Clinical decisions belong to GPs, nurses, labs, and pharmacies; founders own communication and support.", "Make founder, expert, lab, supplier, and service responsibilities visible instead of blending authority.") +note("SHEMED", "12:37-18:22", "Shareable education", "A first-box QR booklet contains short explainers and shareable resources.", "Turn lot records, test explanations, and research literacy into portable, shareable trust objects.") +note("SHEMED", "18:53-22:28", "Continuity", "Weekly check-ins and monthly reviews create reassurance.", "Design a consistent post-purchase information and support rhythm without drifting into personal-use guidance.") +note("SHEMED", "23:14-24:54", "Channel mix", "Acquisition spans Meta, Google, Reddit, Pinterest, founder recipes, and customer stories.", "Diversify discovery and measure each path separately; do not rely on a single platform.") +note("SHEMED", "25:27-26:22", "Brand testing", "The initial bright visual direction underperformed; conversion testing moved the brand toward muted colors.", "Let the actual buyer's conversion and qualitative response shape tone, not founder taste.") +note("SHEMED", "26:29", "Buyer mismatch", "Most customers were 35-55, older than the founders.", "Research the buyer's life stage, trust needs, language, and visual preferences directly.") +note("SHEMED", "27:22-28:48", "Pre-scale learning", "Research, community conversations, conferences, advisors, mentors, and team quality preceded scale.", "Schedule customer and operator learning before each growth gate.") + +# Arrae +note("ARRAE", "05:56-08:40", "Product idea", "The founder wanted something effective, understandable, and visually desirable for a common frustration.", "Commodity products gain meaning through a legible problem and desirable brand world.") +note("ARRAE", "08:40-10:54", "Narrow start", "Arrae began with two common problems rather than a broad catalog.", "Start with enough assortment to prove the category thesis, not enough to maximize SKU count.") +note("ARRAE", "12:06-13:39", "Build order", "Sequence was trusted formulator, workable manufacturer and MOQ, then brand.", "Lock quality and supply constraints before scaling creative promises.") +note("ARRAE", "13:39-15:14", "Focus", "The team asks for the single next action most likely to move the business.", "Run a weekly constraint review and force one primary growth or operations priority.") +note("ARRAE", "15:45-16:21", "Soft launch", "A small community tested pricing, MVP, and messaging before a wider launch.", "Use a controlled creator/customer cohort to validate trust, price, and operations.") +note("ARRAE", "17:27-18:50", "Creator seeding", "With no influencer budget, founders gifted broadly with no posting obligation; one organic post triggered a wider chain.", "Separate honest seeding from paid deliverables and track organic advocates.") +note("ARRAE", "18:51-19:38", "Promote affection", "Early revenue funded paid relationships with creators who had already shown genuine interest; only five or six major year-long partners were maintained.", "Move proven organic advocates into durable paid partnerships rather than renting a large one-off roster.") +note("ARRAE", "19:38-23:25", "Repeated support", "Several creator relationships lasted roughly three years, making recommendations more credible.", "Reward continuity, content quality, and cohort retention, not only last-click revenue.") +note("ARRAE", "23:26-26:10", "Customer-as-creator", "Customers received premium mailers and artifacts comparable to influencers, encouraging sharing.", "Design every fulfilled order as a creator-ready proof and story kit.") +note("ARRAE", "26:16-29:35", "Brand personality", "Ordinary customers are creators; brand social should behave like a person rather than a product grid.", "Build recognizable recurring editorial formats and a human voice.") +note("ARRAE", "27:34-28:05", "Channel ownership", "An early TikTok went viral, but the small team deprioritized it and later had to rebuild.", "Assign a named owner to any channel showing organic pull.") +note("ARRAE", "30:33-33:53", "Capital timing", "The company raised after traction; money went to inventory, people, larger POs, and working capital.", "Use capital to relieve proven constraints, not to manufacture demand.") +note("ARRAE", "34:28-35:50", "Founder division", "Siffat owns brand, community, voice, and email; Nish owns paid media, site optimization, CAC, LTV, AOV, subscription, and finance.", "Pair brand authority with an equally empowered unit-economics operator.") + +# Perelel +note("PERELEL", "01:03-01:35", "Taxonomy", "Products follow distinct hormonal and life stages, with medical experts informing formulation and education.", "Organize discovery around understandable needs or research objectives, while keeping claims inside the actual operating lane.") +note("PERELEL", "02:23-10:53", "Complementary founders", "Founder-market fit combines editorial brand experience, personal experience, and expert cofounders.", "Build a leadership triangle across brand, operating economics, and technical authority.") +note("PERELEL", "11:27-13:16", "Commodity differentiation", "Entering a crowded category required a rigorous brand book, distinct values, voice, identity, and visual language.", "Brand must change recognition, trust, and willingness to return, not merely recolor a vial.") +note("PERELEL", "13:17-14:43", "Unique capability", "The forcing question was, 'What can only we do?' Their answer was expert editorial content and community.", "Define a proprietary trust and distribution system competitors cannot copy by swapping packaging.") +note("PERELEL", "14:43-15:49", "Long creator arc", "Creator relationships follow real life-stage journeys; subscriptions advance customers between trimester products.", "Use long narrative arcs and lifecycle states, while never turning an RUO journey into personal-use advice.") +note("PERELEL", "15:51-17:22", "Scrappy launch", "First-year marketing was about $10K; events, seeding, surprise-and-delight, and credibility-bearing partners carried launch.", "Use controlled seeding and high-touch proof before expensive reach.") +note("PERELEL", "17:48-18:30", "Message order", "Early messaging emphasized what the brand was, why it was trustworthy, and how the system worked; paid amplification followed.", "Solve comprehension and trust before buying scale.") +note("PERELEL", "18:31-19:35", "Creator cohorts", "Creator relationships are separated by awareness/reach versus conversion objectives.", "Define KPI, compensation, attribution window, and content role for each creator cohort.") +note("PERELEL", "19:35-20:30", "Word of mouth", "Affiliate, targeted gifting, events, and customer surprise-and-delight reinforce one another.", "Design creator, customer, and community programs as one referral system.") +note("PERELEL", "20:56-21:34", "Capital caution", "Founders warn against excessive capital and unrealistic valuations.", "Preserve strategic freedom until repeat behavior and unit economics are clear.") +note("PERELEL", "21:47-24:01", "Assortment thesis", "Five launch SKUs and 2,500-unit MOQs were needed to prove the life-stage system; they bootstrapped and used a friends-and-family SAFE.", "Every launch SKU must prove the positioning or increase basket logic, not simply make the store look large.") +note("PERELEL", "24:37-25:28", "Operational reach", "Strong content and gifting helped a small team ship to all 50 states within 30 days.", "Content can create demand quickly; fulfillment readiness must precede reach.") +note("PERELEL", "28:40-30:32", "Personal runway", "One founder consulted before launch and for almost a year after to preserve personal runway.", "Protect founder runway so early decisions are not forced by short-term cash pressure.") +note("PERELEL", "32:04-33:39", "Peer network", "Peer founders at comparable stages supplied talent, consultants, and practical support.", "Build a same-stage operator council for current answers, not only advice from giant incumbents.") + +# BelliWelli +note("BELLI", "13:10-16:40", "Problem community", "The founder's own experience and conversations with women exposed an underserved gut-health community.", "Use problem communities as listening systems before choosing the brand promise.") +note("BELLI", "17:09-18:41", "Product iteration", "Founder, food scientists, and dietitian iterated for months before choosing a portable format.", "Prototype the product and evidence experience before scaling the brand shell.") +note("BELLI", "18:43-20:15", "Community acquisition", "Katie says she bought 20 Facebook groups totaling about 500K members.", "The useful lesson is access to dense conversation, not covert community control. Use transparent participation and compliant research.", "D", "Acquisition and membership totals unverified") +note("BELLI", "20:27-23:23", "Low-cost validation", "Home-kitchen production, a basic Shopify site, a retained day job, and Facebook communities powered early growth.", "Keep the MVP bounded and learn rapidly before adding fixed cost.") +note("BELLI", "27:32-31:18", "False PMF", "A narrow problem community made product-market fit look broader than it was; the first identity was too illness-centered and required a rebrand.", "Do not confuse dense niche enthusiasm with a scalable category or a durable name.") +note("BELLI", "32:08-33:31", "Retail pull", "Distinctive packaging and narrative attracted retail buyers, but early expansion was opportunistic.", "Channel interest is not proof of sell-through. Validate consumer, price, and shelf context.") +note("BELLI", "34:04-35:33", "Format risk", "A hot category did not guarantee the chosen format or aisle matched consumer intent.", "Test channel, format, price, and audience as separate hypotheses.") +note("BELLI", "36:02-39:57", "Founder fieldwork", "Katie personally stocked and inspected stores; Target exposed pricing, merchandising, and audience mismatch.", "Stay physically and analytically close to the buying surface.") +note("BELLI", "40:07-43:59", "Repositioning", "A year of R&D supported a move from sickness-framed bars toward aspirational fiber wellness.", "A narrow wedge can open the door, but the scalable category may need a more aspirational identity.") +note("BELLI", "44:04-47:33", "Channel-first launch", "Powders launched into 1,100 Walmart stores before DTC, initially with two SKUs.", "A focused assortment can be enough if the format and channel are validated.") +note("BELLI", "47:34-49:10", "Founder complement", "The founder describes relentless asking and doubling down; cofounders balance that intensity.", "Pair aggressive distribution instinct with operating and evidence discipline.") +note("BELLI", "49:11-50:35", "Ownable format", "A customer interaction video allegedly sold Walmart out, leading to permission for continued filming.", "Create a recurring format competitors cannot easily impersonate; obtain consent and verify impact.", "D", "Sellout and reach are company-reported") +note("BELLI", "50:36-51:29", "Creative volume", "Katie cleared 75 days, filmed thousands of interactions, and studied drop-off, likes, and reposts.", "Treat content as an instrumented production system, not occasional inspiration.") +note("BELLI", "51:30-53:47", "Research flywheel", "Content production created hundreds of direct customer and employee conversations.", "Make creator production double as structured qualitative research.") +note("BELLI", "54:39-54:54", "Context fit", "Founder admits the provocative early concept did not belong in every context.", "Use sharp language selectively and test reputational spillover before making it the master brand.") + +# Mochi Health +note("MOCHI", "43:41-44:58", "Wedge to platform", "Mochi did not predict the GLP-1 wave; it began with an obesity-care gap and evolved toward a marketplace.", "Win a narrow problem before expanding into broad infrastructure.") +note("MOCHI", "45:02-45:20", "Network claim", "Founder claims more than 500 providers and around 100 pharmacies in the software ecosystem.", "Network breadth is useful only if choice, service, and data actually work; require definitions and active counts.", "D", "Current company article says 450+ providers") +note("MOCHI", "48:11-50:19", "Regulatory interpretation", "Founder explains compounding distinctions and marketing disputes.", "Treat as founder perspective, not legal guidance; use current primary sources for decisions.", "D", "Rapidly changing") +note("MOCHI", "52:41-54:03", "Trust proposition", "Real video visits, the same provider over time, formulary choice, and transparent cash pricing are the core differentiators.", "Continuity, choice, and transparent pricing are durable trust mechanics even outside clinical care.") +note("MOCHI", "54:54-56:28", "Competitor criticism", "Founder criticizes a competitor's provider flow and incentives.", "Do not repeat competitor assertions without independent verification.", "D", "Unverified opinion") +note("MOCHI", "57:17-57:32", "Founder tradeoff", "The founder left conventional medicine to build a system with broader reach.", "Mission can justify difficult operating choices, but measurable service outcomes must follow.") +note("MOCHI", "57:55-60:28", "Gray-market comparison", "The founder discusses rising peptide interest and broad safety differences between channels.", "Do not treat categorical founder opinions as proof of any specific seller's quality.", "D", "Opinion") +note("MOCHI", "60:28-61:58", "Testing bottleneck", "Pharmacy vetting and third-party testing capacity are framed as major bottlenecks.", "Secure test throughput, release SLAs, exception handling, and auditability before scaling inventory.") +note("MOCHI", "61:58-62:14", "Build versus buy", "At recording, Mochi had invested in a testing company rather than immediately building peptide production.", "Own or partner around the highest-control bottleneck before vertically integrating manufacturing.") +note("MOCHI", "63:18-63:33", "Future option", "Peptide expansion remained a future option at recording.", "Track what was planned versus what shipped; Mochi launched a longevity offer after the episode.") +note("MOCHI", "64:02-64:10", "Audience scope", "Founder says the target is ordinary Americans, not only elite biohackers.", "Translate technical trust for mainstream buyers without making unsupported outcome claims.") +note("MOCHI", "67:00-67:27", "Category fragmentation", "Peptides are described as a collection of mechanisms and use cases, not one coherent category.", "Avoid treating the catalog as one audience; build separate discovery and education paths.") +note("MOCHI", "67:27-68:03", "Capital discipline", "Minimal outside funding is positioned as protection from investor-driven audience bias.", "Choose capital that preserves the customer thesis and operating discipline.") + + +CLAIMS: list[dict] = [] + + +def claim( + claim_id: str, + company: str, + claim_text: str, + claim_source: str, + status: str, + current_finding: str, + evidence: str, + confidence: int, + impact: str, + url: str, +) -> None: + CLAIMS.append( + { + "Claim ID": claim_id, + "Company": company, + "Claim to evaluate": claim_text, + "Where it came from": claim_source, + "Verification status": status, + "Current finding at 2026-07-26": current_finding, + "Evidence class": EVIDENCE_LABELS[evidence], + "Confidence (0-5)": confidence, + "Decision impact": impact, + "Verification link": url, + } + ) + + +claim("CL-001", "Joi + Blokes", "More than $50M in revenue and essentially bootstrapped", "Founder interview and Entrepreneur", "Reported, not audited", "Entrepreneur repeated management's number; revenue period and definition remain unclear.", "B", 2, "Useful proof of possibility, not a forecast or valuation input.", "https://www.entrepreneur.com/building-a-business/they-built-a-50-million-business-before-glp-1s-became-mainstream-now-theyre-eyeing-this-new-health-frontier") +claim("CL-002", "Joi + Blokes", "Joi is the stronger growth engine and women bring male partners into Blokes", "Founder interview", "Founder-reported", "Architecture is directly visible; relative engine strength and referral behavior are not public metrics.", "D", 3, "Supports female-leading flagship plus shared backend, but measure it in Alex's cohorts.", "https://www.youtube.com/watch?v=aigF8IfN4Is&t=2046s") +claim("CL-003", "Joi + Blokes", "100K-patient footprint and fertility expansion", "Company announcements", "Company-reported; expansion verified", "HerMD acquisition and fertility leadership are public; patient count is not audited.", "C", 3, "Shows a path from focused fronts into adjacent life-stage services.", "https://www.businesswire.com/news/home/20260325782751/en/Joi-Blokes-Expands-Platform-with-Fertility-Division-Led-by-Serial-Founder-Gina-Bartasi") +claim("CL-004", "Peptira", "Business began 2025-06-02", "BBB business profile", "Corroborated", "BBB lists start date, LLC, and Benjamin Criss as contact/agent.", "B", 4, "Confirms this is a genuinely young operator.", "https://www.bbb.org/us/ne/chadron/profile/biological-products/peptira-llc-0714-1000080859") +claim("CL-005", "Peptira", "Top-15 US peptide company", "Founder interview", "Unsupported", "No independent ranking, revenue, traffic, or customer evidence was found.", "D", 1, "Ignore in competitor sizing.", "https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1371s") +claim("CL-006", "Peptira", "Automatic replacement for lost shipments", "Founder interview", "Outdated / contradicted", "Live terms make delivered packages the customer risk, require evidence, and make remedies discretionary.", "C", 5, "Policies outrank interviews; never make service promises that terms and operations do not support.", "https://peptira.com/shipping-protection-terms/") +claim("CL-007", "Peptira", "RETA10-007 has a published third-party report", "Company COA library", "Historical document confirmed; custody not verified", "Peptira now marks RETA10-007 historical and RETA10-008 currently shipping. The historical Freedom Diagnostics report covers three submitted vials; sampling independence and inventory-wide representativeness remain unknown.", "C", 4, "Use batch reports, but label current versus historical and exactly what each report does and does not prove.", "https://drive.google.com/file/d/1i1tRAVLwnyypFHdKrg7SdBR7JsSk3Jj6/view?usp=drive_link") +claim("CL-008", "Peptide Price", "Community grew beyond the episode's 7,300 members", "Live Skool page", "Company-page observation", "Live community displayed roughly 11.8K members and $10/month at check.", "C", 4, "Comparison plus paid community is a durable discovery model.", "https://www.skool.com/peptide-price-9771/nooby-here") +claim("CL-009", "Transcend", "Ernest Colling remains the current owner/CEO", "Old podcast and lingering profiles", "Outdated", "Transcend introduced Lance Converse as new owner in March 2026; provider structure changed after December 2025.", "C", 5, "Do not use old founder interviews as present-company authority.", "https://www.linkedin.com/posts/transcendcompany_introducing-lance-converse-hes-stepping-activity-7443352442169090048-o66M") +claim("CL-010", "Transcend", "Creator scale broke support and pharmacy capacity", "Founder interview", "Plausible but unaudited", "Later complaints and provider disruption are consistent with service stress, but they do not prove the founder's exact causation or scale.", "D", 3, "Capacity-gate creator launches.", "https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2226s") +claim("CL-011", "Transcend", "$1.5M foundation impact", "Founder interview", "Partly corroborated, amount unverified", "Public filings confirm the nonprofit and Colling role, not the dollar value.", "A", 2, "Mission metrics need auditable reporting.", "https://projects.propublica.org/nonprofits/organizations/920989536") +claim("CL-012", "Vita Bella", "$129/month membership plus $99 consultation", "Current official site", "Current company offer", "Canonical page confirms base pricing; California is priced separately.", "C", 5, "Useful recurring-access reference, not a direct RUO offer template.", "https://vitabella.com/membership/") +claim("CL-013", "Vita Bella", "10K+ patients and 15K+ consultations", "Current official homepage", "Company-reported", "Claims are live but unaudited.", "C", 3, "Do not use in sizing without independent evidence.", "https://vitabella.com/") +claim("CL-014", "Vita Bella", "State coverage, reviews, price, and delivery claims are fully consistent", "Current site pages", "Contradicted internally", "FAQ, search-indexed legacy pricing, terms, review figures, and delivery responsibility contain inconsistencies.", "C", 5, "Create one canonical facts source and audit every surface.", "https://vitabella.com/terms/") +claim("CL-015", "Anonymous growth case", "$500K-$600K monthly within five or six months", "Budai Media Ecom Show #320/#324/#325", "Anonymous agency claim", "No client identity, raw store data, processor settlements, or independent verification. Definitions change across episodes.", "D", 2, "Treat as an upside scenario only.", "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t") +claim("CL-016", "Anonymous growth case", "Google more scalable than Meta for agency's peptide clients", "Ecom Show #324/#325", "Credible report of agency experience", "Repeated in freshest episode, but not a guarantee of policy approval or account durability.", "D", 4, "Test high-intent search while diversifying acquisition.", "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t") +claim("CL-017", "Anonymous growth case", "70-80% gross margin and 1.3-1.4 break-even ROAS", "Agency episode", "Unsupported", "No cost definition; likely omits some testing, chargebacks, reserves, compliance, fulfillment, and account-loss costs.", "D", 1, "Build bottom-up unit economics instead.", "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t") +claim("CL-018", "Remedora", "$200/month all-in-one telehealth launch platform", "Current official site", "Current company offer", "Site describes storefront, intake, provider, prescribing, pharmacy, payments, and support. Actual quality/coverage remains unverified.", "C", 3, "Useful partner benchmark; diligence every included function.", "https://remedora.com/") +claim("CL-019", "Remedora", "Retatrutide can be compounded in some states", "May 2026 podcast", "Outdated / contradicted", "FDA currently says retatrutide cannot be used in compounding under federal law.", "A", 5, "Remove from any current business-model assumption.", "https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss") +claim("CL-020", "Redline Biolabs", "Active founder-led store, multiple rails, and COA library", "Current site", "Confirmed footprint", "Store and documents are live; quality, customer count, and scale remain unverified.", "C", 4, "Good day-zero operating analog, not proof of a fast scaler.", "https://www.redlinebiolabs.com/lab-reports") +claim("CL-021", "Redline Biolabs", "COA on every batch", "Current site", "Internally inconsistent", "Some pages promise every-batch documentation while another says testing is pending.", "C", 4, "Never let marketing and release state disagree.", "https://www.redlinebiolabs.com/lab-reports") +claim("CL-022", "BioLongevity Labs", "650-member paid education community", "2024 founder interview", "Unverified historical claim", "Current media and research library are active, but member count was not independently verified.", "D", 1, "Education-led demand is useful; scale claim is not.", "https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/") +claim("CL-023", "BioLongevity Labs", "80+ or 150+ products", "Current company pages", "Contradicted internally", "Site uses both figures while category inspection showed 53 peptide results.", "C", 2, "Catalog count is not traction and inconsistent proof harms trust.", "https://biolongevitylabs.com/product-category/peptides/") +claim("CL-024", "SheMed", "100K+ women served and $50M raise", "Company site and independent funding coverage", "Scale company-reported; funding reported", "Funding is reported; patient count remains private and unaudited.", "B", 4, "Strong evidence that female-first is not a small niche.", "https://www.mobihealthnews.com/news/shemed-raises-50m-expand-womens-glp-1-weight-management-platform") +claim("CL-025", "SheMed", "Clinical study validates the program", "Company site", "Results not yet published", "Study closed to recruitment and says results are expected in 2026; no published results found by cutoff.", "C", 4, "Never imply findings before publication.", "https://www.shemed.co.uk/clinical-study-why") +claim("CL-026", "SheMed / HeMed", "Female front can precede a male sibling on shared infrastructure", "Current company sites and company filing", "Visible current architecture", "HeMed launched in August 2025 using the same stated framework and infrastructure.", "C", 5, "Direct support for female-leading first, shared neutral operations, male front later.", "https://www.hemed.com/about") +claim("CL-027", "Arrae", "$100M+ cumulative revenue and 1.6M+ units", "Founder/company and Forbes profile", "Reported, not audited", "Retail expansion is observable; private financial totals remain management-reported.", "B", 3, "Creator system is transferable; financials are not planning inputs.", "https://www.forbes.com/sites/karineldor/2026/02/18/building-100m-wellness-brand-arrae-siff-haider-on-calculated-risk-and-relentless-standards/") +claim("CL-028", "Perelel", "$27M growth investment", "Company announcement and Fortune", "Corroborated", "Investment and approximate headcount were independently reported; revenue was not disclosed.", "B", 5, "High-confidence current analog for a female-leading identity brand.", "https://fortune.com/2025/11/20/perelel-prelude-growth-partners-27-million-beauty-wellness-supplements-women/") +claim("CL-029", "Perelel", "Profitable, doubled annual revenue, category-leading retention", "Company announcement", "Company-reported", "No raw financial or retention data are public.", "C", 3, "Use tactics, not claimed benchmarks.", "https://www.prnewswire.com/news-releases/perelel-secures-27m-growth-investment-from-prelude-growth-partners-to-reimagine-womens-health-302622022.html") +claim("CL-030", "BelliWelli", "405% revenue growth and 1B+ content views", "Company and US Chamber coverage", "Reported, not audited", "Current retail presence and $15.4M Series A are corroborated; growth/reach figures remain company-supplied.", "B", 3, "Content system is credible; scale metrics need caution.", "https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth") +claim("CL-031", "Mochi Health", "500K+ members, cash-flow positive, minimal funding", "Founder, company, and CEO Today", "Reported, not audited", "Multiple sources repeat the claims but originate with management.", "B", 3, "Useful operating philosophy, not valuation or market-size evidence.", "https://www.ceotodaymagazine.com/2026/07/myra-ahmad-cash-flow-positive-mochi-health/") +claim("CL-032", "Mochi Health", "500+ providers", "April 2026 interview", "Definition/timing discrepancy", "A July 2026 company article says 450+ providers. Could reflect active-count definitions or change.", "C", 3, "Define every network metric before reporting it.", "https://joinmochi.com/blog/how-mochi-is-building-a-provider-network-that-puts-patients-first") +claim("CL-033", "Mochi Health", "Not selling peptide programs at recording", "April 2026 interview", "True then, stale now", "Current longevity offering markets provider-supervised compounded NAD+ and sermorelin with disclosures.", "C", 5, "Rapidly changing category requires dated snapshots.", "https://joinmochi.com/longevity") +claim("CL-034", "Retatrutide", "Available as an approved public medication", "Market chatter and vendor marketing", "False as of cutoff", "Lilly says it remains investigational and not approved by any regulator; BLA planned Q1 2027.", "A", 5, "Do not describe it as approved or publicly available medicine.", "https://www.lilly.com/news/stories/what-to-know-about-retatrutide") +claim("CL-035", "FDA July peptide vote", "Six peptides became FDA-approved or immediately legal for compounding", "Post-vote social/media summaries", "False framing", "PCAC recommended six of seven for the 503A list. Recommendations are nonbinding and do not equal approval or immediate rule change.", "A", 5, "Keep regulatory event and commercial implication separate.", "https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026") +claim("CL-036", "RUO disclaimer", "'Research Use Only' controls intended use regardless of surrounding copy", "Common seller assumption", "Contradicted by current enforcement", "FDA's Gram Peptides warning says site evidence established human intended use despite RUO and not-for-human-consumption labels.", "A", 5, "Disclaimers cannot rescue contradictory content.", "https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026") + + +CURRENT_CONTEXT = [ + { + "Date": "2026-07-23 to 2026-07-24", + "Topic": "FDA PCAC peptide votes", + "What changed": "Advisory panel recommended BPC-157, KPV, TB-500, MOTS-c, Semax, and Epitalon for the 503A Bulks List; Emideltide/DSIP was rejected.", + "What did NOT change": "The vote was nonbinding. It did not FDA-approve the substances and did not automatically make compounding or consumer sale lawful.", + "Business implication": "Expect heightened attention and possibly more clinician/compounding competition. Do not treat headlines as an immediate green light.", + "Evidence class": EVIDENCE_LABELS["A"], + "Primary / current link": "https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026", + "Next review": "When FDA posts final action or rulemaking", + }, + { + "Date": "2026-07-23", + "Topic": "Retatrutide Phase 3", + "What changed": "Lilly reported positive topline TRIUMPH-2 and TRIUMPH-3 results and plans a BLA submission in Q1 2027.", + "What did NOT change": "Retatrutide remains investigational and is not FDA-approved or generally available from Lilly.", + "Business implication": "Awareness and demand may accelerate, while manufacturer and regulator scrutiny can rise in parallel.", + "Evidence class": EVIDENCE_LABELS["A"], + "Primary / current link": "https://investor.lilly.com/news-releases/news-release-details/lillys-triple-agonist-retatrutide-successful-two-additional", + "Next review": "Q1 2027 or earlier Lilly/FDA update", + }, + { + "Date": "2026-06-15 page update; checked 2026-07-26", + "Topic": "Retatrutide and compounding", + "What changed": "FDA now states explicitly that retatrutide and cagrilintide cannot be used in compounding under federal law.", + "What did NOT change": "The July PCAC meeting concerned seven other substances, not retatrutide.", + "Business implication": "Discard podcast-era assumptions that state-by-state interpretation creates a retatrutide compounding path.", + "Evidence class": EVIDENCE_LABELS["A"], + "Primary / current link": "https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss", + "Next review": "Monthly and on any FDA update", + }, + { + "Date": "2026-03-31", + "Topic": "RUO intended-use enforcement", + "What changed": "FDA warning to Gram Peptides expressly rejected reliance on RUO/not-for-human-consumption labeling where website evidence established human intended use.", + "What did NOT change": "A disclaimer remains one piece of evidence, not a safe harbor against contradictory copy and context.", + "Business implication": "Creator scripts, FAQs, PDPs, support, emails, and community language must align with the actual lawful lane.", + "Evidence class": EVIDENCE_LABELS["A"], + "Primary / current link": "https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026", + "Next review": "On each new peptide warning letter", + }, + { + "Date": "2026-03-03", + "Topic": "Telehealth GLP-1 marketing enforcement", + "What changed": "FDA announced warning letters to 30 telehealth companies concerning allegedly illegal marketing of compounded GLP-1 products.", + "What did NOT change": "A telehealth wrapper does not automatically make product marketing compliant.", + "Business implication": "Do not assume migration from ecommerce to telehealth is a branding exercise; it changes licensed, clinical, pharmacy, and advertising obligations.", + "Evidence class": EVIDENCE_LABELS["A"], + "Primary / current link": "https://www.fda.gov/news-events/press-announcements/fda-warns-30-telehealth-companies-against-illegal-marketing-compounded-glp-1s", + "Next review": "Quarterly enforcement review", + }, + { + "Date": "2026-07-21", + "Topic": "Fast-growth agency's latest position", + "What changed": "Budai Media updated its anonymous case to $600K in a month and said Google scaled more reliably than Meta.", + "What did NOT change": "The client is still anonymous and the revenue, margin, and attribution claims remain unaudited.", + "Business implication": "Treat high-intent search and lifecycle as tests, not guaranteed channels or benchmark economics.", + "Evidence class": EVIDENCE_LABELS["D"], + "Primary / current link": "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t", + "Next review": "Next case update or identified client evidence", + }, + { + "Date": "2026-03 to 2026-07", + "Topic": "Transcend control and provider change", + "What changed": "Transcend publicly introduced Lance Converse as new owner after a provider transition and active litigation.", + "What did NOT change": "The 2024 Ernest Colling episode remains useful only as historical founder and scaling context.", + "Business implication": "Verify current ownership, partners, complaint patterns, and service structure before learning from any old founder podcast.", + "Evidence class": EVIDENCE_LABELS["C"], + "Primary / current link": "https://transcendcompany.com/pages/change-of-provider-letter", + "Next review": "Monthly until dispute and operating structure stabilize", + }, + { + "Date": "Checked 2026-07-26", + "Topic": "Peptira service-policy drift", + "What changed": "Live shipping and protection policies make remedies conditional and discretionary after delivery.", + "What did NOT change": "The episode's service philosophy remains useful, but its automatic-replacement promise is not current.", + "Business implication": "Maintain a dated promise register and automatically flag policy, support-script, and marketing conflicts.", + "Evidence class": EVIDENCE_LABELS["C"], + "Primary / current link": "https://peptira.com/shipping-protection-terms/", + "Next review": "Monthly", + }, + { + "Date": "2025-12 to 2026-07", + "Topic": "SheMed scale and sibling architecture", + "What changed": "A four-month launch story developed into company-reported 100K+ women, reported $50M funding, and a male sibling brand on shared infrastructure.", + "What did NOT change": "Private user metrics and study outcomes are not independently published.", + "Business implication": "The female-leading front/shared-backend thesis has a current real-world precedent, but health claims are not transferable to RUO commerce.", + "Evidence class": EVIDENCE_LABELS["B"], + "Primary / current link": "https://www.mobihealthnews.com/news/shemed-raises-50m-expand-womens-glp-1-weight-management-platform", + "Next review": "When study results publish", + }, + { + "Date": "2025-11 to 2026-07", + "Topic": "Perelel growth investment", + "What changed": "Perelel secured a confirmed $27M growth investment after five years and continued broadening across women's life stages.", + "What did NOT change": "The company did not disclose revenue; profitability and retention remain company claims.", + "Business implication": "Long creator arcs, expert editorial, stage-based taxonomy, and female-leading identity can scale without a female-exclusive catalog.", + "Evidence class": EVIDENCE_LABELS["B"], + "Primary / current link": "https://fortune.com/2025/11/20/perelel-prelude-growth-partners-27-million-beauty-wellness-supplements-women/", + "Next review": "Next financing, retail, or annual update", + }, + { + "Date": "2026-04 to 2026-07", + "Topic": "Mochi offering changed after interview", + "What changed": "Mochi said it was not selling the discussed peptide programs at recording, then launched a longevity offering.", + "What did NOT change": "Private member/provider claims remain unaudited; the offering is provider-supervised and not a template for RUO ecommerce.", + "Business implication": "Use date-stamped snapshots because product and compliance claims can change within a quarter.", + "Evidence class": EVIDENCE_LABELS["C"], + "Primary / current link": "https://joinmochi.com/longevity", + "Next review": "Monthly", + }, + { + "Date": "Checked 2026-07-26", + "Topic": "Retail and creator analogs", + "What changed": "Arrae, BelliWelli, and Perelel all expanded beyond their initial DTC wedge into larger assortments, retail, or life-stage systems.", + "What did NOT change": "Founder-reported revenue and reach are not audited and do not prove the same tactics transfer to research compounds.", + "Business implication": "Transfer seeding, cohort design, content systems, taxonomy, and customer research. Do not transfer consumer-use claims.", + "Evidence class": EVIDENCE_LABELS["I"], + "Primary / current link": "https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth", + "Next review": "Semiannual", + }, +] + + +LESSONS = [ + { + "Domain": "Brand architecture", + "Lesson": "Launch a female-leading front on a neutral, reusable operating backbone.", + "Evidence": "Joi + Blokes, SheMed/HeMed, Perelel", + "Confidence": 5, + "How to apply": "Let women dominate creators, stories, and default discovery. Keep technical PDPs and shared commerce accessible to male high-intent buyers; reserve a sibling male front if cohort economics justify it.", + "Priority": "P0 - Foundational", + "Metric / proof": "Conversion, CAC, AOV, second purchase, contribution, and referral rate by creator/buyer cohort", + }, + { + "Domain": "Positioning", + "Lesson": "Differentiate the meaning and trust system, not merely the molecule or visual palette.", + "Evidence": "Perelel, Arrae, Joi, Peptira", + "Confidence": 5, + "How to apply": "Build a rigorous identity, expert/research literacy, batch transparency, and creator narrative around a commodity catalog.", + "Priority": "P0 - Foundational", + "Metric / proof": "Direct traffic, branded search, creator-assisted conversion, price sensitivity, repeat rate", + }, + { + "Domain": "Assortment", + "Lesson": "Use a presumed hero SKU as a hypothesis, not a permanent identity or proven revenue fact.", + "Evidence": "Joi concentration story, Transcend, Vita Bella, internal Biologix popularity signal", + "Confidence": 4, + "How to apply": "Lead with the strongest observed demand signal while measuring product-level settled revenue, contribution, repeat interval, and cross-sell. Keep the company name broader.", + "Priority": "P0 - Foundational", + "Metric / proof": "Net revenue and contribution share by SKU; 30/60/90-day repeat by first product", + }, + { + "Domain": "Assortment", + "Lesson": "Launch enough SKUs to prove the thesis, not enough to look impressive.", + "Evidence": "Arrae, Perelel, BelliWelli, BioLongevity", + "Confidence": 5, + "How to apply": "Require every SKU to serve a defined research/customer job, basket logic, or acquisition demand. Add only after test, supply, content, and support readiness.", + "Priority": "P0 - Foundational", + "Metric / proof": "Sell-through, stock turns, support rate, margin, and repeat per SKU", + }, + { + "Domain": "Trust", + "Lesson": "Batch-level proof is part of the product.", + "Evidence": "Peptira, Redline, Mochi, Perelel", + "Confidence": 5, + "How to apply": "Expose lot ID, report date, methods, measured content, purity, relevant test scope, current/retired status, and report limitations near the buy decision.", + "Priority": "P0 - Foundational", + "Metric / proof": "COA-open rate, conversion after COA view, support objections, lot-to-inventory match rate", + }, + { + "Domain": "Trust", + "Lesson": "A published lab PDF is not the same as independent sampling and chain of custody.", + "Evidence": "Peptira current report, Vita Bella unsupported competitor tests", + "Confidence": 5, + "How to apply": "Document who sampled, sealed, shipped, tested, released, and archived each batch. State what is not verified.", + "Priority": "P0 - Foundational", + "Metric / proof": "Percent of saleable inventory with complete custody record; release exceptions", + }, + { + "Domain": "Creator system", + "Lesson": "Seed broadly and honestly, then pay creators who demonstrate authentic pull.", + "Evidence": "Arrae, Perelel", + "Confidence": 5, + "How to apply": "Gift without posting obligation. Track organic mentions and audience quality; promote proven advocates into longer contracts.", + "Priority": "P0 - Launch", + "Metric / proof": "Organic post rate, qualified clicks, conversion, 60-day contribution, creator retention", + }, + { + "Domain": "Creator system", + "Lesson": "Separate creator cohorts by job: awareness, trust, conversion, or community research.", + "Evidence": "Perelel, Arrae, Redline", + "Confidence": 5, + "How to apply": "Give each cohort different briefs, compensation, landing pages, attribution windows, and success criteria.", + "Priority": "P0 - Launch", + "Metric / proof": "Incremental reach, assisted conversion, direct conversion, cohort contribution, branded search lift", + }, + { + "Domain": "Creator system", + "Lesson": "Long arcs outperform rotating one-off endorsements in trust-heavy categories.", + "Evidence": "Arrae, Perelel, Joi", + "Confidence": 4, + "How to apply": "Favor repeated, clearly disclosed relationships with continuity and evolving education.", + "Priority": "P1 - Scale", + "Metric / proof": "Repeat content performance, creator cohort retention, direct traffic, referral rate", + }, + { + "Domain": "Creator system", + "Lesson": "Do not reward larger stacks or first-order spend.", + "Evidence": "Vita Bella creator-incentive critique; compliance risk", + "Confidence": 5, + "How to apply": "Pay on qualified settled customers, compliant content, low refund/chargeback rate, and retained contribution.", + "Priority": "P0 - Launch", + "Metric / proof": "Net contribution at 60/90 days, refund and chargeback rate by creator", + }, + { + "Domain": "Content", + "Lesson": "Make creator production double as structured customer research.", + "Evidence": "BelliWelli, SheMed, Peptide Price", + "Confidence": 5, + "How to apply": "Code comments, objections, search terms, watch-drop points, support tickets, and post-purchase questions into a weekly insight log.", + "Priority": "P0 - Launch", + "Metric / proof": "Insights logged, experiments launched, conversion/support impact", + }, + { + "Domain": "Content", + "Lesson": "Own a repeatable editorial format, not a feed of isolated product shots.", + "Evidence": "BelliWelli, Arrae, Perelel", + "Confidence": 5, + "How to apply": "Create recurring proof, founder, lab, lot, creator, and category-literacy formats with a named owner.", + "Priority": "P1 - Scale", + "Metric / proof": "Completion rate, saves, shares, branded search, returning visitors", + }, + { + "Domain": "Acquisition", + "Lesson": "Capture existing product-name intent before broad interruption advertising.", + "Evidence": "Ecom Show #320/#324/#325", + "Confidence": 3, + "How to apply": "If eligible and approved, test high-intent search/Shopping with product and margin segmentation; reconcile platform attribution to settled orders.", + "Priority": "P1 - Conditional", + "Metric / proof": "Settled contribution per query/SKU, not platform ROAS alone", + }, + { + "Domain": "Acquisition", + "Lesson": "Budget a bounded learning period with stopping rules.", + "Evidence": "Ecom #320, Remedora", + "Confidence": 4, + "How to apply": "Predefine spend caps, signal thresholds, variables, decision windows, and kill/scale criteria.", + "Priority": "P0 - Launch", + "Metric / proof": "Experiment decision latency and percentage of tests with prewritten criteria", + }, + { + "Domain": "Lifecycle", + "Lesson": "Triggered lifecycle belongs near launch, but attribution must be incremental.", + "Evidence": "Ecom #320/#324/#325, Arrae, Vita Bella", + "Confidence": 4, + "How to apply": "Build welcome, abandonment, post-purchase, VIP, winback, and lawful replenishment flows; test holdouts where possible.", + "Priority": "P0 - Launch", + "Metric / proof": "Incremental conversion/repeat lift, unsubscribe, complaint, and deliverability", + }, + { + "Domain": "Data", + "Lesson": "Own the event and identity graph because vendors can close accounts.", + "Evidence": "Peptide Price TikTok bans, Ecom email shutdowns, payment instability", + "Confidence": 5, + "How to apply": "Track creator -> click -> order -> settlement -> fulfillment -> support -> repeat -> payout; export customer and event data continuously.", + "Priority": "P0 - Foundational", + "Metric / proof": "Event completeness, export freshness, restore-time test, unmatched-order rate", + }, + { + "Domain": "Data", + "Lesson": "First-order ROAS is not the business.", + "Evidence": "Remedora, Ecom case, Arrae operator split", + "Confidence": 5, + "How to apply": "Use settled contribution cohorts through 30/60/90 days, including refunds, chargebacks, reserves, testing, fulfillment, discounts, and creator payouts.", + "Priority": "P0 - Foundational", + "Metric / proof": "Contribution margin per visitor/customer by cohort and source", + }, + { + "Domain": "Operations", + "Lesson": "Capacity-gate creators before demand arrives.", + "Evidence": "Transcend, Peptira, Redline, Perelel", + "Confidence": 5, + "How to apply": "Require green status for saleable inventory, batch release, checkout, support staffing, fulfillment SLA, and exception ownership before each launch wave.", + "Priority": "P0 - Launch", + "Metric / proof": "Stockout, oversell, ship time, first response, resolution time, payment failure", + }, + { + "Domain": "Operations", + "Lesson": "Founder service seeds trust but does not scale by itself.", + "Evidence": "Peptira, Redline", + "Confidence": 5, + "How to apply": "Capture founder replies into macros, SOPs, escalation rules, and a staffed ticket system while founders remain visible on hard cases.", + "Priority": "P0 - Launch", + "Metric / proof": "Founder-handled share, first response, reopen rate, escalation rate", + }, + { + "Domain": "Operations", + "Lesson": "Policies, marketing, support scripts, and checkout must share one canonical truth.", + "Evidence": "Peptira replacement contradiction; Vita Bella state/price/review conflicts; Redline COA conflict", + "Confidence": 5, + "How to apply": "Create a dated promise register and automated/manual monthly surface audit.", + "Priority": "P0 - Foundational", + "Metric / proof": "Contradictions found, age of last audit, policy-linked support incidents", + }, + { + "Domain": "Payments", + "Lesson": "Payment continuity is a launch dependency, not a back-office detail.", + "Evidence": "Redline lost checkouts; Ecom case instability", + "Confidence": 5, + "How to apply": "Use honest underwriting, tested primary/backup rails, reserve reporting, decline telemetry, chargeback controls, and recovery playbooks.", + "Priority": "P0 - Foundational", + "Metric / proof": "Authorization rate, failure rate, reserve, chargebacks, recovery conversion", + }, + { + "Domain": "Supply", + "Lesson": "Use staged supplier commitments and hard release gates.", + "Evidence": "Redline supplier loss, Peptira test hold, Perelel MOQs", + "Confidence": 5, + "How to apply": "Verify counterparty, start with small POs, define specifications/acceptance, retain samples, and prohibit sale before complete release.", + "Priority": "P0 - Foundational", + "Metric / proof": "Supplier failure, batch rejection, release lead time, inventory at risk", + }, + { + "Domain": "Community", + "Lesson": "Community is a research loop before it is a promotion channel.", + "Evidence": "Peptide Price, BelliWelli, Arrae, SheMed", + "Confidence": 5, + "How to apply": "Listen transparently, classify objections and requests, and feed them into assortment, proof, content, and support decisions.", + "Priority": "P1 - Scale", + "Metric / proof": "Insight-to-experiment rate; member-to-customer and customer-to-referrer paths", + }, + { + "Domain": "Pricing", + "Lesson": "Test same-product volume ladders before opaque bundles or silent subscriptions.", + "Evidence": "Peptira, Ecom #324, Vita Bella", + "Confidence": 4, + "How to apply": "Show unit economics clearly, preserve choice, and require express recurring consent.", + "Priority": "P1 - Test", + "Metric / proof": "AOV, contribution, refund, repeat, and support by offer", + }, + { + "Domain": "Leadership", + "Lesson": "Pair brand/culture authority with unit-economics and operations authority.", + "Evidence": "Arrae, Perelel, Joi", + "Confidence": 5, + "How to apply": "Name accountable owners for brand/creator, growth/data, quality/supply, service/fulfillment, and financial control.", + "Priority": "P0 - Foundational", + "Metric / proof": "Decision latency, ownerless incidents, weekly scorecard completeness", + }, + { + "Domain": "Capital", + "Lesson": "Raise to relieve proven constraints, not to purchase a narrative.", + "Evidence": "Arrae, Perelel, Joi, Mochi", + "Confidence": 4, + "How to apply": "Tie capital to inventory turns, test capacity, people, working capital, and demonstrated acquisition/retention.", + "Priority": "P2 - Later", + "Metric / proof": "Use-of-funds milestones and runway sensitivity", + }, + { + "Domain": "Freshness", + "Lesson": "Founder podcasts are dated snapshots, not current operating truth.", + "Evidence": "Transcend ownership, Peptira policy, Mochi launch, Vita Bella California, Ecom updates", + "Confidence": 5, + "How to apply": "Every source row carries a current-check URL, freshness label, next-review date, and claim classification.", + "Priority": "P0 - Foundational", + "Metric / proof": "Percent of decision-critical sources refreshed within review window", + }, + { + "Domain": "Strategic risk", + "Lesson": "Assume platform, processor, supplier, and regulatory concentration can break simultaneously.", + "Evidence": "Ecom case, Peptide Price, Remedora prior ACA collapse, Transcend", + "Confidence": 5, + "How to apply": "Maintain a dependency register, backup plan, trigger, owner, and recovery-time test for every critical external system.", + "Priority": "P0 - Foundational", + "Metric / proof": "Single-point dependencies and tested recovery time", + }, + { + "Domain": "Operating lane", + "Lesson": "Do not blend clinical, supplement, and RUO proof or claims.", + "Evidence": "Joi, SheMed, Mochi, Vita Bella, BioLongevity", + "Confidence": 5, + "How to apply": "Separate sites/offers, role descriptions, evidence, support boundaries, and content rules for materially different models.", + "Priority": "P0 - Foundational", + "Metric / proof": "Content exceptions, support escalations, claim-review failures", + }, + { + "Domain": "Measurement", + "Lesson": "Run the female-leading thesis as a controlled economic test, not a taste debate.", + "Evidence": "SheMed visual testing, Joi architecture, Perelel, prior market research", + "Confidence": 5, + "How to apply": "Use matched female-leading and technical/general creator cohorts into differentiated landing journeys on shared commerce.", + "Priority": "P0 - Launch", + "Metric / proof": "Contribution per visitor, conversion, AOV, repeat, referral, and creative efficiency by cohort", + }, +] + + +ANTI_LESSONS = [ + {"Source / pattern": "Anonymous agency case", "Do not copy": "Treating $600K/month, margin, or ROAS claims as a forecast", "Why": "No client identity, settlements, raw cohort data, or independent verification", "Safer pattern": "Build bottom-up unit economics and use the case only to define hypotheses", "Risk level": "Critical"}, + {"Source / pattern": "Ecom Show #324/#325", "Do not copy": "Product renaming, alternate pages, or other platform-approval bypass tactics", "Why": "Evasion creates policy, account, legal, and trust exposure", "Safer pattern": "Seek explicit eligibility and approval; diversify lawful channels", "Risk level": "Critical"}, + {"Source / pattern": "RUO sellers", "Do not copy": "Human-use, reconstitution, mixing, dosing, protocol, or benefit content alongside RUO labels", "Why": "Current FDA enforcement looks at surrounding intended-use evidence", "Safer pattern": "Limit content to lawful research, testing, lot, documentation, shipping, and support topics", "Risk level": "Critical"}, + {"Source / pattern": "Remedora May 2026", "Do not copy": "Planning around retatrutide compounding", "Why": "Current FDA statement directly contradicts that assumption", "Safer pattern": "Use current primary-source review for every product and operating lane", "Risk level": "Critical"}, + {"Source / pattern": "Peptira", "Do not copy": "Automatic replacement, permanent pricing, or extreme response-time promises without durable operations", "Why": "Live policy now contradicts the early promise", "Safer pattern": "Publish only measured promises backed by the canonical policy", "Risk level": "High"}, + {"Source / pattern": "Peptira / Redline", "Do not copy": "Calling a vendor-submitted PDF complete proof of quality", "Why": "Sampling, chain of custody, lot coverage, and inventory linkage may be unknown", "Safer pattern": "Publish scope and limitations plus a complete custody record", "Risk level": "High"}, + {"Source / pattern": "Transcend", "Do not copy": "Scaling creators faster than support, fulfillment, or partner capacity", "Why": "Demand can break service and partner continuity", "Safer pattern": "Use launch-readiness gates and stop rules", "Risk level": "Critical"}, + {"Source / pattern": "Transcend", "Do not copy": "Relying on old founder titles or one practice/pharmacy relationship", "Why": "Ownership and provider structure materially changed", "Safer pattern": "Verify current control and contract continuity before acting", "Risk level": "High"}, + {"Source / pattern": "Vita Bella", "Do not copy": "Competitor-safety accusations without named reports and independent custody", "Why": "Claims are hard to defend and can mislead", "Safer pattern": "Compete on your own auditable proof", "Risk level": "High"}, + {"Source / pattern": "Vita Bella", "Do not copy": "Perfect-review, 24/7, wholesale-price, or rapid-delivery language that conflicts with terms", "Why": "Trust collapses when policies and marketing disagree", "Safer pattern": "Maintain a canonical promise register and surface audit", "Risk level": "High"}, + {"Source / pattern": "Ecom Show subscription advice", "Do not copy": "Preselected subscription or obscured recurring terms", "Why": "Consent and cancellation risk plus customer distrust", "Safer pattern": "Express choice, electronic confirmation, plain terms, and simple cancellation", "Risk level": "Critical"}, + {"Source / pattern": "Redline", "Do not copy": "Launching before payment, live inventory, testing state, refund rules, and service are stable", "Why": "It caused abandonment, overselling, and manual recovery", "Safer pattern": "Pass an end-to-end launch checklist under load", "Risk level": "Critical"}, + {"Source / pattern": "Redline", "Do not copy": "Mixing RUO restrictions with personal-use language in affiliate terms", "Why": "Internal contradiction weakens the operating position", "Safer pattern": "One reviewed creator policy with monitored scripts and enforcement", "Risk level": "Critical"}, + {"Source / pattern": "BioLongevity", "Do not copy": "Treating catalog count or announced formats as traction", "Why": "Site counts conflict and proposed pens were not found", "Safer pattern": "Report delivered products, current lot state, sell-through, and repeat behavior", "Risk level": "Medium"}, + {"Source / pattern": "BelliWelli", "Do not copy": "Covertly acquiring/influencing communities or filming without consent", "Why": "Platform, privacy, authenticity, and reputation risk", "Safer pattern": "Transparent participation and explicit consent", "Risk level": "High"}, + {"Source / pattern": "BelliWelli", "Do not copy": "Assuming niche-community excitement proves mass PMF", "Why": "Problem density can overstate addressable demand", "Safer pattern": "Validate channel, format, price, and audience separately", "Risk level": "High"}, + {"Source / pattern": "Arrae", "Do not copy": "One-off creators who rotate through competing products", "Why": "Audience trust and learning continuity stay weak", "Safer pattern": "Promote organic advocates into long-term, disclosed relationships", "Risk level": "Medium"}, + {"Source / pattern": "Perelel / SheMed / Mochi", "Do not copy": "Clinical, doctor-recommended, study, or patient-outcome language into RUO ecommerce", "Why": "The proof and licensed infrastructure are category-specific", "Safer pattern": "Transfer operating tactics, not clinical authority or claims", "Risk level": "Critical"}, + {"Source / pattern": "All founder podcasts", "Do not copy": "Repeating founder revenue, community, patient, or growth claims as facts", "Why": "Most private metrics are unaudited and often change definition", "Safer pattern": "Label claim provenance and seek independent or primary corroboration", "Risk level": "High"}, + {"Source / pattern": "All cases", "Do not copy": "Depending on one email vendor, processor, ad account, supplier, lab, creator, or regulatory interpretation", "Why": "Each dependency failed somewhere in the source set", "Safer pattern": "Dependency register, backup, trigger, owner, and tested recovery time", "Risk level": "Critical"}, +] + + +ACTION_PLAN = [ + {"Window": "Now - Week 1", "Workstream": "Decision system", "Action": "Adopt this workbook's evidence labels and require each strategy claim to carry source, date, confidence, and current-check link.", "Owner": "Founder / strategy", "Dependency": "None", "Definition of done": "All decision-board claims have provenance and freshness fields", "Metric": "% critical claims with current verification", "Priority": "P0"}, + {"Window": "Now - Week 1", "Workstream": "Operating lane", "Action": "Write a one-page lane boundary for brand, product, content, support, creator scripts, and prohibited human-use guidance.", "Owner": "Legal/compliance + founder", "Dependency": "Qualified counsel", "Definition of done": "Approved rules are reflected in briefs, PDPs, FAQs, support, email, and community", "Metric": "Claim-review exceptions", "Priority": "P0"}, + {"Window": "Now - Week 1", "Workstream": "Brand architecture", "Action": "Lock neutral master name + female-leading flagship + technical PDP/shared-backend structure as the pilot hypothesis.", "Owner": "Founder + brand", "Dependency": "Current design pilot", "Definition of done": "One-page architecture names audiences, front doors, shared systems, and future male trigger", "Metric": "Decision signed; no contradictory site taxonomy", "Priority": "P0"}, + {"Window": "Now - Week 2", "Workstream": "Assortment", "Action": "Create a launch SKU gate: demand evidence, supplier diligence, complete test/custody, content, stock, margin, and support readiness.", "Owner": "Quality + merchandising", "Dependency": "Supplier and lab inputs", "Definition of done": "Every proposed SKU passes or is rejected with reason", "Metric": "% proposed SKUs passing all gates", "Priority": "P0"}, + {"Window": "Now - Week 2", "Workstream": "Trust", "Action": "Specify the lot record: lot ID, inventory mapping, sampling/custody, methods, measured content, purity, applicable scope, report date, status, and limitations.", "Owner": "Quality + product", "Dependency": "Lab workflow", "Definition of done": "Real current batch renders correctly on desktop/mobile and matches inventory", "Metric": "Lot-record completeness", "Priority": "P0"}, + {"Window": "Now - Week 2", "Workstream": "Promise control", "Action": "Create a canonical promise register for shipping, refunds, replacement, testing, origin, support hours, prices, reviews, and inventory.", "Owner": "Operations", "Dependency": "Policies and checkout", "Definition of done": "Marketing, policy, support, checkout, and creator briefs reconcile", "Metric": "Contradictions found per audit", "Priority": "P0"}, + {"Window": "Now - Week 2", "Workstream": "Payments", "Action": "Validate honest underwriting, primary and backup rails, reserves, declines, chargeback handling, and recovery messaging.", "Owner": "Finance + commerce", "Dependency": "Processor approval", "Definition of done": "End-to-end test orders pass; failure paths and owner are documented", "Metric": "Authorization/failure/chargeback rate", "Priority": "P0"}, + {"Window": "Now - Week 2", "Workstream": "Fulfillment", "Action": "Load-test saleable inventory, bundles/variants, stock holds, oversell prevention, label flow, tracking, and exception handling.", "Owner": "Operations", "Dependency": "Real inventory and carrier setup", "Definition of done": "Simulated launch wave completes with no unowned exception", "Metric": "Oversell, stockout, on-time ship, exception resolution", "Priority": "P0"}, + {"Window": "Week 2-3", "Workstream": "Data", "Action": "Instrument creator -> click -> order -> settlement -> fulfillment -> support -> repeat -> payout with stable IDs.", "Owner": "Growth ops / data", "Dependency": "Commerce and creator tooling", "Definition of done": "Test customer is traceable end to end and export restores successfully", "Metric": "Event completeness and unmatched order rate", "Priority": "P0"}, + {"Window": "Week 2-3", "Workstream": "Unit economics", "Action": "Build a settled-contribution model including COGS, testing, fulfillment, discounts, creator payout, processing, reserves, refunds, and chargebacks.", "Owner": "Finance", "Dependency": "Cost inputs", "Definition of done": "Every cohort and SKU has a contribution view at 0/30/60/90 days", "Metric": "Contribution per visitor/customer", "Priority": "P0"}, + {"Window": "Week 2-4", "Workstream": "Creator pilot", "Action": "Recruit a controlled 25-creator pilot split across female-leading, technical/general, awareness, and conversion roles.", "Owner": "Creator lead", "Dependency": "Approved scripts, landing journeys, inventory capacity", "Definition of done": "Each creator has role, source ID, code, brief, disclosure, compensation, and stop rule", "Metric": "Qualified traffic and contribution by creator", "Priority": "P0"}, + {"Window": "Week 2-4", "Workstream": "Seeding", "Action": "Run honest no-obligation seeding; identify organic advocates before offering long contracts.", "Owner": "Creator lead", "Dependency": "Seeding policy and fulfillment", "Definition of done": "Organic response is logged and top advocates are shortlisted by audience quality", "Metric": "Organic post and qualified-response rate", "Priority": "P1"}, + {"Window": "Week 3-4", "Workstream": "Landing test", "Action": "Create matched female-leading and technical/general acquisition journeys on the same backend and price structure.", "Owner": "Growth + product", "Dependency": "Design authority review for outward-facing UI", "Definition of done": "Both journeys are functional, approved, and differ only in the intended narrative variables", "Metric": "Contribution per visitor plus conversion/AOV/repeat", "Priority": "P0"}, + {"Window": "Week 3-4", "Workstream": "Lifecycle", "Action": "Implement welcome, abandonment, post-purchase documentation, service, VIP, winback, and lawful replenishment flows with consent controls.", "Owner": "Lifecycle", "Dependency": "Event data and policy", "Definition of done": "All flows tested; subscription is never preselected; exports work", "Metric": "Incremental lift, complaints, deliverability", "Priority": "P1"}, + {"Window": "Week 3-4", "Workstream": "Support", "Action": "Turn founder answers into macros, SOPs, escalation rules, and measured SLAs; keep founder visibility for hard cases.", "Owner": "Customer operations", "Dependency": "Promise register", "Definition of done": "Top objections and exceptions have owned playbooks", "Metric": "First response, resolution, reopen, founder share", "Priority": "P0"}, + {"Window": "Days 30-45", "Workstream": "Pilot launch", "Action": "Release creators in capacity-controlled waves, never all at once.", "Owner": "Growth + operations", "Dependency": "All launch gates green", "Definition of done": "Each wave is approved from live scorecard and can be paused in minutes", "Metric": "Service/fulfillment/payment thresholds stay green", "Priority": "P0"}, + {"Window": "Days 30-60", "Workstream": "Customer research", "Action": "Run weekly interviews and code creator comments, support tickets, search terms, checkout exits, and post-purchase questions.", "Owner": "Insights", "Dependency": "Consent and research template", "Definition of done": "Weekly insight memo produces ranked experiments", "Metric": "Insight-to-experiment and resolved-objection rate", "Priority": "P1"}, + {"Window": "Days 30-60", "Workstream": "Content engine", "Action": "Pilot recurring formats for founder visibility, lab/lot literacy, proof limitations, category research, and creator stories.", "Owner": "Content", "Dependency": "Reviewed content rules", "Definition of done": "Four repeatable formats have cadence, owner, and scorecard", "Metric": "Completion, saves, qualified clicks, assisted conversion", "Priority": "P1"}, + {"Window": "Days 30-60", "Workstream": "Offer testing", "Action": "Test one-unit versus simple same-product volume ladders; defer subscriptions until consent, service, and repeat behavior are proven.", "Owner": "Merchandising + finance", "Dependency": "Stable inventory and unit economics", "Definition of done": "Offer decision based on settled contribution and support burden", "Metric": "AOV, contribution, refund, repeat", "Priority": "P1"}, + {"Window": "Days 45-75", "Workstream": "Channel test", "Action": "Where explicitly eligible and approved, run a bounded high-intent search test segmented by product and margin.", "Owner": "Growth", "Dependency": "Platform approval and current policy review", "Definition of done": "Test has prewritten cap, attribution reconciliation, and kill/scale decision", "Metric": "Settled contribution per query/SKU", "Priority": "P2 conditional"}, + {"Window": "Days 60-75", "Workstream": "Cohort decision", "Action": "Compare female-leading versus technical/general cohorts on economics and behavior, not gross revenue.", "Owner": "Founder + finance + growth", "Dependency": "Sufficient settled orders", "Definition of done": "Written recommendation to intensify female lead, preserve dual funnels, or adjust", "Metric": "Contribution, repeat, referral, CAC, AOV by cohort", "Priority": "P0"}, + {"Window": "Days 60-90", "Workstream": "Creator contracts", "Action": "Promote proven organic or pilot creators into longer relationships with KPI-specific compensation.", "Owner": "Creator lead + finance", "Dependency": "Cohort contribution", "Definition of done": "No long contract is based solely on reach or one post", "Metric": "90-day creator contribution and audience quality", "Priority": "P1"}, + {"Window": "Days 60-90", "Workstream": "Dependency resilience", "Action": "Run recovery drills for processor, email, supplier, lab, shipping, and creator-channel failure.", "Owner": "Operations + engineering", "Dependency": "Backup paths", "Definition of done": "Each dependency has tested RTO, owner, trigger, and customer communication", "Metric": "Recovery time and data loss", "Priority": "P0"}, + {"Window": "Day 90", "Workstream": "Go / no-go", "Action": "Decide whether to scale, narrow, or stop using settled contribution, repeat behavior, trust/support signals, and dependency risk.", "Owner": "Founder / board", "Dependency": "Complete cohort and incident data", "Definition of done": "Decision memo includes evidence, confidence, downside case, and next capital commitment", "Metric": "Decision quality, not activity volume", "Priority": "P0"}, +] + + +WATCHLIST = [ + {"Subject": "FDA PCAC six-peptide recommendations", "What to watch": "Final FDA action, proposed rule, guidance, or enforcement discretion", "Current state": "Nonbinding panel recommendation only", "Trigger": "Any Federal Register/FDA final action", "Cadence": "Weekly", "Owner": "Compliance", "Source": "https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026"}, + {"Subject": "Retatrutide", "What to watch": "Lilly BLA timing, trial publications, warning letters, litigation, and FDA statements", "Current state": "Investigational; BLA planned Q1 2027; FDA says cannot be compounded", "Trigger": "Regulatory filing or status change", "Cadence": "Weekly", "Owner": "Compliance / strategy", "Source": "https://www.lilly.com/news/stories/what-to-know-about-retatrutide"}, + {"Subject": "Gram Peptides and similar enforcement", "What to watch": "How FDA characterizes intended-use evidence around RUO sites", "Current state": "Current warning letter says disclaimers did not override surrounding human-use evidence", "Trigger": "New peptide warning letter", "Cadence": "Monthly", "Owner": "Compliance", "Source": "https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026"}, + {"Subject": "Anonymous Budai client", "What to watch": "Client identity, processor evidence, settled revenue, refunds, repeat, and future case updates", "Current state": "$600K monthly remains anonymous agency claim", "Trigger": "Named client or raw evidence", "Cadence": "Monthly", "Owner": "Growth", "Source": "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"}, + {"Subject": "Joi + Blokes", "What to watch": "Fertility launch, HerMD integration, current leadership, and audience/revenue mix", "Current state": "Active and expanding; private scale unaudited", "Trigger": "New funding, acquisition, or founder interview", "Cadence": "Quarterly", "Owner": "Strategy", "Source": "https://joiandblokes.com/"}, + {"Subject": "Peptira / Peptide Price", "What to watch": "Catalog, batch-report currency, community size, affiliate disclosure, policy changes, and service claims", "Current state": "Active; shipping policy drift found", "Trigger": "New podcast or material policy/catalog change", "Cadence": "Monthly", "Owner": "Competitive intel", "Source": "https://peptira.com/test-results/"}, + {"Subject": "Transcend", "What to watch": "Ownership, provider continuity, litigation, complaint trend, and service recovery", "Current state": "New owner and changed provider structure", "Trigger": "Court disposition or formal operating update", "Cadence": "Monthly", "Owner": "Strategy", "Source": "https://transcendcompany.com/pages/change-of-provider-letter"}, + {"Subject": "SheMed", "What to watch": "Publication of clinical-study results, US expansion, HeMed shared-infrastructure economics", "Current state": "Study results not published by cutoff", "Trigger": "Peer-reviewed/public result or expansion update", "Cadence": "Monthly", "Owner": "Brand / strategy", "Source": "https://www.shemed.co.uk/clinical-study-why"}, + {"Subject": "Perelel", "What to watch": "Creator-cohort changes, retail expansion, retention disclosures, and male-product treatment", "Current state": "$27M growth investment confirmed", "Trigger": "New founder interview or annual update", "Cadence": "Quarterly", "Owner": "Brand / creator", "Source": "https://perelelhealth.com/"}, + {"Subject": "Arrae", "What to watch": "Creator mix, subscription mechanics, retail expansion, and verified scale", "Current state": "Company-reported $100M cumulative revenue", "Trigger": "Independent financial or channel update", "Cadence": "Quarterly", "Owner": "Creator / lifecycle", "Source": "https://www.arrae.com/pages/about-us"}, + {"Subject": "BelliWelli", "What to watch": "Repeatable content format, retailer sell-through, subscription, and community transparency", "Current state": "Retail footprint and funding confirmed; growth/reach private", "Trigger": "New channel or financial disclosure", "Cadence": "Quarterly", "Owner": "Content / community", "Source": "https://belliwelli.com/"}, + {"Subject": "Mochi Health", "What to watch": "Longevity offering, testing ownership, provider count, litigation, and price/choice model", "Current state": "Offering changed within one quarter; private scale claims vary", "Trigger": "Product, court, or company metric update", "Cadence": "Monthly", "Owner": "Strategy", "Source": "https://joinmochi.com/longevity"}, +] + + +EXECUTIVE_DECISIONS = [ + { + "Question": "Female-leading or unisex?", + "Answer": "Female-leading flagship, neutral name, technical/shared commerce, not female-exclusive.", + "Evidence": "Joi + Blokes, SheMed/HeMed, Perelel", + "Confidence": "High", + "Why": "These operators show that distinct audience meaning can sit on shared infrastructure. Perelel even carries a men's product inside a female-leading master brand.", + "First proof": "Matched female-leading vs technical/general creator cohort test", + }, + { + "Question": "What is the moat?", + "Answer": "Creator relationships + batch proof + owned event/identity graph + dependable service.", + "Evidence": "Arrae, Perelel, Peptira, Redline, Ecom cases", + "Confidence": "High", + "Why": "Molecules, catalogs, and storefront software commoditize. Trust, continuity, attribution, and response quality compound.", + "First proof": "Track creator -> settlement -> fulfillment -> support -> repeat -> payout", + }, + { + "Question": "Should one product lead?", + "Answer": "Use the strongest observed demand signal as a launch hypothesis, but keep the brand and economics broader.", + "Evidence": "Joi and Vita Bella concentration stories; internal popularity signal", + "Confidence": "Medium-high", + "Why": "A hero offer can concentrate acquisition while hiding operational and strategic concentration.", + "First proof": "Product-level settled revenue, contribution, repeat interval, and cross-sell", + }, + { + "Question": "How should creators be recruited?", + "Answer": "Controlled seeding, then long-term deals with proven organic advocates; separate awareness and conversion cohorts.", + "Evidence": "Arrae and Perelel", + "Confidence": "High", + "Why": "Repeated genuine affinity is more credible and more learnable than rotating one-off endorsements.", + "First proof": "25-creator capacity-controlled pilot with role-specific KPIs", + }, + { + "Question": "How much should growth stories influence the plan?", + "Answer": "Very little until independently reconciled.", + "Evidence": "Anonymous Ecom case, shifting definitions, unaudited founder claims", + "Confidence": "High", + "Why": "The most exciting numbers have the weakest evidence. They define upside hypotheses, not budgets.", + "First proof": "Bottom-up contribution model and raw settled cohort evidence", + }, + { + "Question": "What fails first?", + "Answer": "Payments, support, inventory, testing throughput, fulfillment, or a partner handoff before demand itself.", + "Evidence": "Transcend, Redline, Peptira, Ecom case", + "Confidence": "High", + "Why": "Every exact-category operator described operational or vendor failure during growth.", + "First proof": "Launch-readiness gates, stop rules, and recovery drills", + }, + { + "Question": "How current is the opportunity?", + "Answer": "Demand visibility is rising, but the operating environment is changing within weeks.", + "Evidence": "July PCAC vote, July Lilly data, EC325, Mochi change, Transcend change", + "Confidence": "High", + "Why": "Current information increases attention while also invalidating earlier assumptions. A dated monitoring system is mandatory.", + "First proof": "Weekly current-context review and claim-expiry register", + }, +] + + +FAST_QUEUE = [ + ("1", "Ecom Show #325", "Full 15:15", "Freshest exact scaling update; focus on channel reality, lifecycle, payment instability, and the 'near-term window' warning.", "https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"), + ("2", "Joi + Blokes", "34:06-37:51; 48:53-54:36", "Female/male fronts on one backend, women as stronger engine, scale/capital, and adjacency.", "https://www.youtube.com/watch?v=aigF8IfN4Is&t=2046s"), + ("3", "Peptira + Peptide Price", "14:38-31:38", "Six-week launch sequence, batch labels, COAs, volume ladder, support promises, and test-before-sale gate.", "https://www.youtube.com/watch?v=Be58yiS6Vs4&t=878s"), + ("4", "Perelel", "11:27-20:30", "Identity brand, unique capability, long creator arcs, seeding, message order, and creator cohorts.", "https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"), + ("5", "SheMed", "09:34-28:48", "Role boundaries, shareable education, ongoing support, channel mix, muted-color conversion learning, and real buyer age.", "https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"), + ("6", "Redline Biolabs", "17:30-20:45; 35:45-47:15", "Founders + COAs, payment abandonment, supplier loss, oversell recovery, attribution codes, and early service.", "https://www.youtube.com/watch?v=JQSJYACbOCU&t=1050s"), + ("7", "Arrae", "15:45-29:35; 34:28-35:50", "Soft launch, no-obligation seeding, promote organic love, customer-as-creator, and founder role split.", "https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"), + ("8", "Transcend", "35:07-40:14", "Historical scale-break caution: creators, staffing, calls, patient capacity, and pharmacy inventory.", "https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2107s"), +] + + +def build_web_dataset() -> Path: + """Emit the browser-ready dataset from the same records as the workbook.""" + payload = { + "asOf": AS_OF, + "stats": { + "sources": len(SOURCES), + "notes": len(NOTES), + "claims": len(CLAIMS), + "currentContext": len(CURRENT_CONTEXT), + "lessons": len(LESSONS), + "antiLessons": len(ANTI_LESSONS), + "actions": len(ACTION_PLAN), + "watchlist": len(WATCHLIST), + }, + "sources": SOURCES, + "notes": NOTES, + "claims": CLAIMS, + "currentContext": CURRENT_CONTEXT, + "lessons": LESSONS, + "antiLessons": ANTI_LESSONS, + "actions": ACTION_PLAN, + "watchlist": WATCHLIST, + "executiveDecisions": EXECUTIVE_DECISIONS, + "fastQueue": FAST_QUEUE, + } + encoded = json.dumps(payload, ensure_ascii=False, separators=(",", ":")) + WEB_OUTPUT.write_text( + "window.PEPTIDE_MEDIA_INTELLIGENCE = " + encoded + ";\n", + encoding="utf-8", + ) + return WEB_OUTPUT + + +def valid_url(value: str) -> bool: + if not value: + return True + parsed = urlparse(value) + return parsed.scheme in {"http", "https"} and bool(parsed.netloc) + + +def add_hyperlink(cell, url: str, label: str | None = None) -> None: + if url and valid_url(url): + if label: + cell.value = label + cell.hyperlink = url + cell.font = Font(name="Aptos", size=10, color=COBALT, underline="single") + + +def apply_value_fill(cell) -> None: + value = str(cell.value or "") + lower = value.lower() + if value.startswith("A -"): + cell.fill = PatternFill("solid", fgColor=SAGE_LIGHT) + cell.font = Font(name="Aptos", size=10, color=SAGE, bold=True) + elif value.startswith("B -"): + cell.fill = PatternFill("solid", fgColor=COBALT_LIGHT) + cell.font = Font(name="Aptos", size=10, color=COBALT, bold=True) + elif value.startswith("C -"): + cell.fill = PatternFill("solid", fgColor=GOLD_LIGHT) + cell.font = Font(name="Aptos", size=10, color=ESPRESSO, bold=True) + elif value.startswith("D -"): + cell.fill = PatternFill("solid", fgColor=CLAY_LIGHT) + cell.font = Font(name="Aptos", size=10, color=CLAY, bold=True) + elif value.startswith("E -") or "critical" in lower or "false" in lower or "contradicted" in lower: + cell.fill = PatternFill("solid", fgColor=RED_LIGHT) + cell.font = Font(name="Aptos", size=10, color=RED, bold=True) + elif "p0" in lower or "start here" in lower or "high" == lower: + cell.fill = PatternFill("solid", fgColor=SAGE_LIGHT) + cell.font = Font(name="Aptos", size=10, color=SAGE, bold=True) + elif "materially changed" in lower or "outdated" in lower or "unsupported" in lower: + cell.fill = PatternFill("solid", fgColor=RED_LIGHT) + cell.font = Font(name="Aptos", size=10, color=RED, bold=True) + elif "very current" in lower or "current; high" in lower or "corroborated" in lower or "confirmed" in lower: + cell.fill = PatternFill("solid", fgColor=COBALT_LIGHT) + + +def add_tabular_sheet( + wb: Workbook, + title: str, + rows: list[dict], + subtitle: str, + widths: dict[str, float] | None = None, + tab_color: str = SAGE, +) -> None: + ws = wb.create_sheet(title) + ws.sheet_view.showGridLines = False + ws.sheet_properties.tabColor = tab_color + if not rows: + ws["A1"] = title + return + headers = list(rows[0].keys()) + last_col = get_column_letter(len(headers)) + ws.merge_cells(f"A1:{last_col}1") + ws["A1"] = title.upper() + ws["A1"].fill = PatternFill("solid", fgColor=INK) + ws["A1"].font = Font(name="Aptos Display", size=19, bold=True, color=WHITE) + ws["A1"].alignment = Alignment(vertical="center") + ws.row_dimensions[1].height = 34 + ws.merge_cells(f"A2:{last_col}2") + ws["A2"] = subtitle + ws["A2"].fill = PatternFill("solid", fgColor=CREAM) + ws["A2"].font = Font(name="Aptos", size=10, color=ESPRESSO, italic=True) + ws["A2"].alignment = Alignment(wrap_text=True, vertical="center") + ws.row_dimensions[2].height = 34 + ws.merge_cells(f"A3:{last_col}3") + ws["A3"] = f"Current check: {AS_OF} | Evidence is classified, not assumed. This is business research, not medical or legal advice." + ws["A3"].font = Font(name="Aptos", size=9, color=MUTED) + ws["A3"].alignment = Alignment(vertical="center") + ws.row_dimensions[3].height = 22 + header_row = 5 + for col_idx, header in enumerate(headers, 1): + cell = ws.cell(header_row, col_idx, header) + cell.fill = PatternFill("solid", fgColor=ESPRESSO) + cell.font = Font(name="Aptos", size=10, bold=True, color=WHITE) + cell.alignment = Alignment(wrap_text=True, vertical="center") + cell.border = BORDER + ws.row_dimensions[header_row].height = 42 + for row_idx, item in enumerate(rows, header_row + 1): + max_len = 0 + for col_idx, header in enumerate(headers, 1): + value = item.get(header, "") + cell = ws.cell(row_idx, col_idx, value) + cell.font = Font(name="Aptos", size=10, color=INK) + cell.alignment = Alignment(wrap_text=True, vertical="top") + cell.border = BORDER + if row_idx % 2 == 0: + cell.fill = PatternFill("solid", fgColor=PORCELAIN) + apply_value_fill(cell) + if "link" in header.lower() or header in {"Source", "Primary / current link", "Verification link", "Media link", "Current-check link", "Timestamp link"}: + add_hyperlink(cell, str(value), "Open source") + max_len = max(max_len, len(str(value))) + ws.row_dimensions[row_idx].height = min(108, max(30, 15 + 0.30 * max_len)) + ref = f"A{header_row}:{last_col}{header_row + len(rows)}" + table_name = "T_" + "".join(ch for ch in title if ch.isalnum())[:24] + table = Table(displayName=table_name, ref=ref) + table.tableStyleInfo = TableStyleInfo( + name="TableStyleMedium2", + showFirstColumn=False, + showLastColumn=False, + showRowStripes=False, + showColumnStripes=False, + ) + ws.add_table(table) + ws.freeze_panes = f"A{header_row + 1}" + ws.auto_filter.ref = ref + default_width = 18 + for col_idx, header in enumerate(headers, 1): + letter = get_column_letter(col_idx) + chosen = (widths or {}).get(header) + if chosen is None: + if "link" in header.lower() or header == "Source": + chosen = 14 + elif header in {"ID", "Source ID", "Claim ID", "Published", "Duration", "Date", "Cadence", "Owner"}: + chosen = 14 + elif len(header) > 22: + chosen = 28 + else: + chosen = default_width + ws.column_dimensions[letter].width = chosen + ws.auto_filter.ref = ref + ws.sheet_view.zoomScale = 85 + + +def build_start_here(wb: Workbook) -> None: + ws = wb.active + ws.title = "START HERE" + ws.sheet_view.showGridLines = False + ws.sheet_properties.tabColor = GOLD + widths = { + "A": 7, + "B": 24, + "C": 24, + "D": 24, + "E": 24, + "F": 18, + "G": 18, + "H": 18, + "I": 3, + "J": 25, + "K": 22, + "L": 20, + } + for col, width in widths.items(): + ws.column_dimensions[col].width = width + ws.merge_cells("A1:L2") + ws["A1"] = "PEPTIDE FOUNDER MEDIA INTELLIGENCE" + ws["A1"].fill = PatternFill("solid", fgColor=INK) + ws["A1"].font = Font(name="Aptos Display", size=24, bold=True, color=WHITE) + ws["A1"].alignment = Alignment(vertical="center") + ws.row_dimensions[1].height = 30 + ws.row_dimensions[2].height = 30 + ws.merge_cells("A3:L3") + ws["A3"] = "Recent founder and operator media, fully separated from present-day verification and translated into a Biologix operating playbook." + ws["A3"].fill = PatternFill("solid", fgColor=CREAM) + ws["A3"].font = Font(name="Aptos", size=11, color=ESPRESSO, italic=True) + ws["A3"].alignment = Alignment(vertical="center") + ws.row_dimensions[3].height = 30 + + metadata = [ + ("As of", AS_OF), + ("Media sources", len(SOURCES)), + ("Timestamped extractions", len(NOTES)), + ("Material claims checked", len(CLAIMS)), + ("Current-context updates", len(CURRENT_CONTEXT)), + ("Action rows", len(ACTION_PLAN)), + ] + for row, (label, value) in enumerate(metadata, 5): + ws.merge_cells(start_row=row, start_column=1, end_row=row, end_column=2) + ws.cell(row, 1, label).font = Font(name="Aptos", bold=True, color=MUTED) + ws.merge_cells(start_row=row, start_column=3, end_row=row, end_column=4) + ws.cell(row, 3, value).font = Font(name="Aptos", bold=True, color=INK) + ws.merge_cells("A12:H12") + ws["A12"] = "THE DECISION READOUT" + ws["A12"].fill = PatternFill("solid", fgColor=ESPRESSO) + ws["A12"].font = Font(name="Aptos", size=11, bold=True, color=WHITE) + ws["A12"].alignment = Alignment(vertical="center") + decisions = [ + ("01", "Architecture", "Female-leading flagship, neutral name, technical/shared commerce, and a future male sibling only if cohort economics earn it."), + ("02", "Commercial hypothesis", "Use the strongest observed demand signal as a launch wedge, but do not name the company after one product or assume popularity equals settled revenue."), + ("03", "Moat", "Creators + batch proof + owned event graph + dependable service. The storefront software and catalog are not the moat."), + ("04", "Launch method", "Controlled 25-creator pilot, split by female-leading vs technical/general and awareness vs conversion roles; release in capacity-gated waves."), + ("05", "Evidence discipline", "Do not forecast from anonymous $600K/month claims. Require settled contribution and 30/60/90-day cohorts."), + ("06", "Freshness warning", "Current facts already invalidate old media: Transcend changed control, Peptira changed remedies, Mochi changed offering, and retatrutide compounding claims are obsolete."), + ] + for idx, (num, label, text) in enumerate(decisions, 13): + ws.cell(idx, 1, num).font = Font(name="Aptos Display", size=18, bold=True, color=GOLD) + ws.cell(idx, 2, label).font = Font(name="Aptos", size=10, bold=True, color=ESPRESSO) + ws.merge_cells(start_row=idx, start_column=3, end_row=idx, end_column=8) + ws.cell(idx, 3, text).font = Font(name="Aptos", size=10, color=INK) + ws.cell(idx, 3).alignment = Alignment(wrap_text=True, vertical="top") + ws.row_dimensions[idx].height = 48 + for col in range(1, 9): + ws.cell(idx, col).border = Border(bottom=THIN_STONE) + + ws.merge_cells("A20:H20") + ws["A20"] = "FASTEST LISTENING QUEUE" + ws["A20"].fill = PatternFill("solid", fgColor=ESPRESSO) + ws["A20"].font = Font(name="Aptos", size=11, bold=True, color=WHITE) + queue_headers = ["Rank", "Source", "Listen", "Why", "Link"] + for col, header in enumerate(queue_headers, 1): + cell = ws.cell(21, col, header) + cell.fill = PatternFill("solid", fgColor=STONE) + cell.font = Font(name="Aptos", bold=True, color=INK) + cell.border = BORDER + cell.alignment = Alignment(wrap_text=True) + ws.merge_cells("D21:G21") + ws.merge_cells("H21:H21") + # Re-create the visual header after merging. + ws["D21"] = "Why" + ws["H21"] = "Link" + for row_idx, (rank, name, listen, why, url) in enumerate(FAST_QUEUE, 22): + ws.cell(row_idx, 1, rank) + ws.cell(row_idx, 2, name) + ws.cell(row_idx, 3, listen) + ws.merge_cells(start_row=row_idx, start_column=4, end_row=row_idx, end_column=7) + ws.cell(row_idx, 4, why) + add_hyperlink(ws.cell(row_idx, 8), url, "Open") + for col in range(1, 9): + cell = ws.cell(row_idx, col) + cell.border = BORDER + cell.alignment = Alignment(wrap_text=True, vertical="top") + if row_idx % 2 == 0: + cell.fill = PatternFill("solid", fgColor=PORCELAIN) + ws.row_dimensions[row_idx].height = 52 + + ws.merge_cells("J5:L5") + ws["J5"] = "EVIDENCE KEY" + ws["J5"].fill = PatternFill("solid", fgColor=ESPRESSO) + ws["J5"].font = Font(name="Aptos", size=11, bold=True, color=WHITE) + for idx, code in enumerate(["A", "B", "C", "D", "E", "I"], 6): + ws.cell(idx, 10, code).font = Font(name="Aptos", bold=True, color=INK) + ws.merge_cells(start_row=idx, start_column=11, end_row=idx, end_column=12) + ws.cell(idx, 11, EVIDENCE_LABELS[code].split(" - ", 1)[1]) + ws.cell(idx, 11).alignment = Alignment(wrap_text=True) + apply_value_fill(ws.cell(idx, 10)) + ws.row_dimensions[idx].height = 32 + + ws.merge_cells("J13:L13") + ws["J13"] = "CURRENT ALERTS" + ws["J13"].fill = PatternFill("solid", fgColor=RED) + ws["J13"].font = Font(name="Aptos", size=11, bold=True, color=WHITE) + alerts = [ + ("Retatrutide", "Investigational, not FDA-approved; FDA says it cannot be compounded."), + ("July PCAC vote", "Six recommendations are nonbinding, not approvals or immediate legal change."), + ("RUO labels", "Current FDA warning shows disclaimers do not override contradictory intended-use evidence."), + ("Transcend", "2024 interview is historical; new owner/provider structure in 2026."), + ("Peptira", "Live shipping remedy is stricter than early founder promise."), + ] + for row, (label, text) in enumerate(alerts, 14): + ws.cell(row, 10, label).font = Font(name="Aptos", bold=True, color=RED) + ws.merge_cells(start_row=row, start_column=11, end_row=row, end_column=12) + ws.cell(row, 11, text) + ws.cell(row, 11).alignment = Alignment(wrap_text=True, vertical="top") + ws.row_dimensions[row].height = 48 + + lane_counts = Counter(item["Lane"] for item in SOURCES) + ws["J21"] = "Source lane" + ws["K21"] = "Count" + for cell in ws[21][9:11]: + cell.fill = PatternFill("solid", fgColor=STONE) + cell.font = Font(name="Aptos", bold=True, color=INK) + for row, (lane, count) in enumerate(lane_counts.items(), 22): + ws.cell(row, 10, lane) + ws.cell(row, 11, count) + chart = BarChart() + chart.type = "bar" + chart.style = 10 + chart.title = "Source mix" + chart.height = 6.2 + chart.width = 11 + data = Reference(ws, min_col=11, min_row=21, max_row=21 + len(lane_counts)) + cats = Reference(ws, min_col=10, min_row=22, max_row=21 + len(lane_counts)) + chart.add_data(data, titles_from_data=True) + chart.set_categories(cats) + chart.legend = None + chart.x_axis.title = "Sources" + ws.add_chart(chart, "J29") + + ws.merge_cells("A32:H34") + ws["A32"] = ( + "Use this workbook as a dated operator-intelligence system. It intentionally excludes dosing and personal-use instructions. " + "Founder and agency claims are preserved because they reveal operating hypotheses, but they are never upgraded to facts without verification." + ) + ws["A32"].fill = PatternFill("solid", fgColor=GOLD_LIGHT) + ws["A32"].font = Font(name="Aptos", size=10, color=ESPRESSO, italic=True) + ws["A32"].alignment = Alignment(wrap_text=True, vertical="center") + ws.freeze_panes = "A5" + ws.sheet_view.zoomScale = 90 + + +def build_executive_sheet(wb: Workbook) -> None: + ws = wb.create_sheet("EXECUTIVE SYNTHESIS") + ws.sheet_view.showGridLines = False + ws.sheet_properties.tabColor = SAGE + widths = [23, 38, 28, 15, 48, 34] + for idx, width in enumerate(widths, 1): + ws.column_dimensions[get_column_letter(idx)].width = width + ws.merge_cells("A1:F1") + ws["A1"] = "EXECUTIVE SYNTHESIS" + ws["A1"].fill = PatternFill("solid", fgColor=INK) + ws["A1"].font = Font(name="Aptos Display", size=20, bold=True, color=WHITE) + ws["A1"].alignment = Alignment(vertical="center") + ws.row_dimensions[1].height = 36 + ws.merge_cells("A2:F2") + ws["A2"] = "The transferable lessons, stripped of hype and updated through July 26, 2026." + ws["A2"].fill = PatternFill("solid", fgColor=CREAM) + ws["A2"].font = Font(name="Aptos", size=10, italic=True, color=ESPRESSO) + headers = list(EXECUTIVE_DECISIONS[0].keys()) + for col, header in enumerate(headers, 1): + cell = ws.cell(4, col, header) + cell.fill = PatternFill("solid", fgColor=ESPRESSO) + cell.font = Font(name="Aptos", size=10, bold=True, color=WHITE) + cell.alignment = Alignment(wrap_text=True) + cell.border = BORDER + for row, decision in enumerate(EXECUTIVE_DECISIONS, 5): + for col, header in enumerate(headers, 1): + cell = ws.cell(row, col, decision[header]) + cell.alignment = Alignment(wrap_text=True, vertical="top") + cell.border = BORDER + cell.font = Font(name="Aptos", size=10, color=INK, bold=(col == 2)) + if row % 2: + cell.fill = PatternFill("solid", fgColor=PORCELAIN) + apply_value_fill(cell) + ws.row_dimensions[row].height = 92 + ws.merge_cells("A14:F14") + ws["A14"] = "WHAT IS ACTUALLY KNOWN VS STILL UNKNOWN" + ws["A14"].fill = PatternFill("solid", fgColor=ESPRESSO) + ws["A14"].font = Font(name="Aptos", size=11, bold=True, color=WHITE) + knowledge = [ + ("Known with high confidence", "Young brands can launch quickly; batch proof and founder visibility matter; creators can create demand shocks; female-leading fronts can share infrastructure; vendors and partners are fragile."), + ("Known with medium confidence", "Product-name search can be efficient where approved; lifecycle and simple volume ladders can lift economics; long creator relationships outperform one-offs."), + ("Not known", "True market-wide buyer gender split for direct RUO retatrutide; the anonymous client's settled revenue/margins; Alex's future cohort economics; product-level Biologix net sales without exports."), + ("Must be measured", "Buyer cohort, creator source, settled contribution, product concentration, repeat interval, refunds, chargebacks, processor reserves, service burden, and referrals."), + ] + for row, (label, text) in enumerate(knowledge, 15): + ws.cell(row, 1, label).font = Font(name="Aptos", bold=True, color=SAGE if "Known" in label else CLAY) + ws.merge_cells(start_row=row, start_column=2, end_row=row, end_column=6) + ws.cell(row, 2, text) + ws.cell(row, 2).alignment = Alignment(wrap_text=True, vertical="top") + for col in range(1, 7): + ws.cell(row, col).border = BORDER + ws.row_dimensions[row].height = 58 + ws.freeze_panes = "A4" + ws.sheet_view.zoomScale = 85 + + +def build_workbook() -> Path: + wb = Workbook() + wb.properties.creator = "OpenAI Codex for Alex Weinstein" + wb.properties.title = "Peptide Founder Media Intelligence" + wb.properties.subject = "Recent founder/operator media, current verification, and Biologix lessons" + wb.properties.description = ( + "Dated research workbook separating episode claims from current verification. " + "No dosing or personal-use instructions; not medical or legal advice." + ) + wb.calculation.fullCalcOnLoad = True + build_start_here(wb) + build_executive_sheet(wb) + add_tabular_sheet( + wb, + "SOURCE LIBRARY", + SOURCES, + "All podcast, YouTube, and interview links with company stage, present status, freshness, and confidence.", + { + "ID": 11, + "Priority": 16, + "Lane": 22, + "Company": 20, + "Founder / operator": 27, + "Episode / source": 38, + "Published": 13, + "Duration": 17, + "Stage at recording": 27, + "Model": 38, + "Media link": 14, + "Current-check link": 17, + "Current status at 2026-07-26": 52, + "Freshness": 24, + "Confidence": 22, + "Why it matters": 54, + }, + COBALT, + ) + add_tabular_sheet( + wb, + "TIMESTAMPED NOTES", + NOTES, + "Operator detail extracted into decision-ready rows. Timestamp links open the exact YouTube moment where available.", + { + "Source ID": 12, + "Company": 20, + "Timestamp": 18, + "Topic": 22, + "What the operator said / what happened": 55, + "What Biologix can learn": 55, + "Evidence class": 33, + "Freshness note": 32, + "Timestamp link": 14, + }, + GOLD, + ) + add_tabular_sheet( + wb, + "CLAIM CHECKS", + CLAIMS, + "The most decision-relevant numbers and assertions, with verification status and present-day finding.", + { + "Claim ID": 12, + "Company": 22, + "Claim to evaluate": 48, + "Where it came from": 27, + "Verification status": 26, + "Current finding at 2026-07-26": 58, + "Evidence class": 34, + "Confidence (0-5)": 17, + "Decision impact": 47, + "Verification link": 16, + }, + CLAY, + ) + ws_claims = wb["CLAIM CHECKS"] + confidence_col = list(CLAIMS[0].keys()).index("Confidence (0-5)") + 1 + confidence_letter = get_column_letter(confidence_col) + ws_claims.conditional_formatting.add( + f"{confidence_letter}6:{confidence_letter}{5 + len(CLAIMS)}", + CellIsRule(operator="lessThan", formula=["3"], fill=PatternFill("solid", fgColor=RED_LIGHT)), + ) + ws_claims.conditional_formatting.add( + f"{confidence_letter}6:{confidence_letter}{5 + len(CLAIMS)}", + CellIsRule(operator="greaterThanOrEqual", formula=["4"], fill=PatternFill("solid", fgColor=SAGE_LIGHT)), + ) + add_tabular_sheet( + wb, + "CURRENT CONTEXT", + CURRENT_CONTEXT, + "What changed recently, what did not change, and when each topic must be checked again.", + { + "Date": 24, + "Topic": 29, + "What changed": 55, + "What did NOT change": 55, + "Business implication": 52, + "Evidence class": 34, + "Primary / current link": 16, + "Next review": 32, + }, + RED, + ) + add_tabular_sheet( + wb, + "PLAYBOOK", + LESSONS, + "Cross-source operating principles, tailored to the female-leading, creator-distributed Biologix thesis.", + { + "Domain": 21, + "Lesson": 48, + "Evidence": 38, + "Confidence": 14, + "How to apply": 64, + "Priority": 19, + "Metric / proof": 48, + }, + SAGE, + ) + playbook_ws = wb["PLAYBOOK"] + conf_col = list(LESSONS[0].keys()).index("Confidence") + 1 + conf_letter = get_column_letter(conf_col) + playbook_ws.conditional_formatting.add( + f"{conf_letter}6:{conf_letter}{5 + len(LESSONS)}", + CellIsRule(operator="greaterThanOrEqual", formula=["5"], fill=PatternFill("solid", fgColor=SAGE_LIGHT)), + ) + add_tabular_sheet( + wb, + "ANTI-LESSONS", + ANTI_LESSONS, + "Patterns to reject, why they fail, and the safer operating alternative.", + { + "Source / pattern": 28, + "Do not copy": 54, + "Why": 55, + "Safer pattern": 60, + "Risk level": 16, + }, + CLAY, + ) + add_tabular_sheet( + wb, + "90-DAY ACTION PLAN", + ACTION_PLAN, + "A staged, capacity-gated plan that turns the research into measurable decisions without drifting into medical-use guidance.", + { + "Window": 18, + "Workstream": 22, + "Action": 64, + "Owner": 24, + "Dependency": 38, + "Definition of done": 57, + "Metric": 45, + "Priority": 16, + }, + COBALT, + ) + add_tabular_sheet( + wb, + "WATCHLIST", + WATCHLIST, + "What can go stale, the event that should trigger a decision update, and the source to monitor.", + { + "Subject": 30, + "What to watch": 58, + "Current state": 58, + "Trigger": 39, + "Cadence": 15, + "Owner": 24, + "Source": 16, + }, + GOLD, + ) + # Keep the intended reading order explicit. + order = [ + "START HERE", + "EXECUTIVE SYNTHESIS", + "SOURCE LIBRARY", + "TIMESTAMPED NOTES", + "CLAIM CHECKS", + "CURRENT CONTEXT", + "PLAYBOOK", + "ANTI-LESSONS", + "90-DAY ACTION PLAN", + "WATCHLIST", + ] + wb._sheets = [wb[name] for name in order] + wb.active = 0 + wb.save(OUTPUT) + return OUTPUT + + +def validate_workbook(path: Path) -> None: + for collection_name, rows in { + "sources": SOURCES, + "notes": NOTES, + "claims": CLAIMS, + "context": CURRENT_CONTEXT, + "watchlist": WATCHLIST, + }.items(): + for idx, row in enumerate(rows, 1): + for key, value in row.items(): + if ("link" in key.lower() or key == "Source") and value and not valid_url(str(value)): + raise ValueError(f"Invalid URL in {collection_name} row {idx} field {key}: {value}") + check = load_workbook(path, read_only=False, data_only=False) + expected = [ + "START HERE", + "EXECUTIVE SYNTHESIS", + "SOURCE LIBRARY", + "TIMESTAMPED NOTES", + "CLAIM CHECKS", + "CURRENT CONTEXT", + "PLAYBOOK", + "ANTI-LESSONS", + "90-DAY ACTION PLAN", + "WATCHLIST", + ] + if check.sheetnames != expected: + raise ValueError(f"Unexpected sheet order: {check.sheetnames}") + if check["SOURCE LIBRARY"].max_row != len(SOURCES) + 5: + raise ValueError("Source row count mismatch") + if check["TIMESTAMPED NOTES"].max_row != len(NOTES) + 5: + raise ValueError("Note row count mismatch") + if check["CLAIM CHECKS"].max_row != len(CLAIMS) + 5: + raise ValueError("Claim row count mismatch") + hyperlink_count = sum( + 1 + for ws in check.worksheets + for row in ws.iter_rows() + for cell in row + if cell.hyperlink is not None + ) + if hyperlink_count < len(SOURCES) * 2: + raise ValueError(f"Too few hyperlinks: {hyperlink_count}") + check.close() + print( + f"Built {path}\n" + f"Sheets: {len(expected)} | sources: {len(SOURCES)} | notes: {len(NOTES)} | " + f"claims: {len(CLAIMS)} | lessons: {len(LESSONS)} | links: {hyperlink_count}" + ) + + +if __name__ == "__main__": + web_output_path = build_web_dataset() + output_path = build_workbook() + validate_workbook(output_path) + print(f"Built {web_output_path}") diff --git a/biologix-strategy-board/research/evidence.html b/biologix-strategy-board/research/evidence.html new file mode 100644 index 0000000..c152810 --- /dev/null +++ b/biologix-strategy-board/research/evidence.html @@ -0,0 +1,70 @@ + + + + + + + + + + + Biologix Research Room — Evidence and Models + + +
    + +
    + +
    +

    Supporting library · Public and founder-reported evidence kept separate

    +

    Evidence, models, and diligence.

    +

    These are the supporting records behind the decision board and research conclusions. Public signals, founder claims, planning assumptions, and required proof remain explicitly separated.

    + +
    Use these files to audit the thesis. Public catalog fields and planning models do not prove Braden’s private revenue, margin, orders, fulfillment, ownership, or customer retention.
    + + +
    + + diff --git a/biologix-strategy-board/research/full-funnel.html b/biologix-strategy-board/research/full-funnel.html new file mode 100644 index 0000000..2ddefbc --- /dev/null +++ b/biologix-strategy-board/research/full-funnel.html @@ -0,0 +1,895 @@ + + + + + + + + + + + Full-funnel retatrutide market teardown + + +
    + +
    +
    +
    +

    Public market intelligence · Updated July 23, 2026

    +

    Full-funnel retatrutide market teardown

    +
    +

    Use the navigation above to switch documents. Tables scroll horizontally on narrow screens.

    +
    + +

    Research cutoff: July +23, 2026
    +Scope: Active U.S.-facing research-product sellers with +a current retatrutide-labelled or clearly mapped offer, plus the +strongest publicly verifiable creator-to-seller funnels.
    +Method: Public pages, public policy documents, public +laboratory reports, public creator hubs and guides, public archives, and +official FDA/DOJ records. No account was created, no purchase was made, +and no private catalog or community was entered.

    +

    Executive answer

    +

    The market is more sophisticated than “put up a WordPress site and +add a research-only footer,” but the sophistication is concentrated in +distribution and conversion, not in the website +itself.

    +

    The strongest operators layer:

    +
      +
    1. Search, social, creator, podcast, community, or referral +traffic.
    2. +
    3. A bridge asset that creates trust: a guide, Linktree, podcast +episode, article library, review, or coaching community.
    4. +
    5. A product page with a coded or explicit retatrutide offer.
    6. +
    7. Batch reports, purity claims, fast-shipping language, and visible +support.
    8. +
    9. A price ladder: strengths, quantity breaks, subscriptions, coupons, +free-shipping thresholds, or wholesale cases.
    10. +
    11. A self-attestation, age gate, account review, or research +questionnaire.
    12. +
    13. Card, bank, and sometimes alternative payment routes.
    14. +
    15. Email, SMS, account history, points, subscriptions, inventory +alerts, and reorder offers.
    16. +
    17. Affiliate links, creator codes, wholesale, or partner portals that +restart the loop.
    18. +
    +

    The commercial insight is straightforward:

    +
    +

    The seller owns the transaction, while creators and content supply +trust, meaning, and customer acquisition.

    +
    +

    The key correction is equally important:

    +
    +

    No disclaimer, code name, age gate, COA, creator separation, or +account wall demonstrated a reliable safe harbor. FDA has already cited +sellers using most of these configurations.

    +
    +

    This is a high-demand, high-margin-looking, low-software-complexity +market with visible churn. The durable assets are the audience, +attribution, customer data, lifecycle system, creator network, +logistics, quality records, and operating team—not any one +investigational SKU.

    +

    The full customer journey

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    StageWhat the mature operators doStrong examplesCommercial purpose
    1. Demand creationHuman-interest content, transformation narratives, mechanism +articles, podcasts, guides, or search pagesConnor Sinann, Sarah Westall, Jay Campbell, Loti, Peptide +PartnersCreate desire before the buyer reaches the store
    2. Trust bridgeCreator authority, community, coaching, founder identity, +educational handbook, reviewsConnor’s Skool, Jay’s courses, Gentleman’s ebook, American’s +reviewsReduce uncertainty and explain a confusing category
    3. Attributed handoffref= links, personalized landing pages, discount +codesSarah → Limitless, Jesse → Peptira, Connor → V&L, Zay → +GL/GentlemanAttribute demand and make the recommendation actionable
    4. Product decodingExplicit “Retatrutide,” or coded names such as GLP-3, GLP-RT, 3-GLP, +ION-3RGL, Peptide Partners, Xcel, V&L, Arcane, IonPreserve discoverability while controlling first-party wording
    5. Offer constructionStrength ladder, quantity breaks, subscriptions, cashback, rotating +coupons, free shippingAmerican, Modern, Loti, Peptide Partners, GentlemanRaise conversion and average order value
    6. ProofBatch COAs, purity/mass, sterility/endotoxin where available, +shipping claims, support, reviewsSkye, Modern, Peptide Partners, PekCura, AmericanReplace brand trust with analytical-looking trust
    7. Access layerAge modal, RUO click-through, account wall, business/research +formSkye, Xcel, Loti, Ion, PekCuraRecord purchaser representations and sometimes suppress public +catalog visibility
    8. TransactionCard, ACH/bank, and sometimes crypto or person-to-person +methodsPekCura, Mile High, Loti, AmericanMaximize payment completion and provide redundancy
    9. Basket expansionReconstitution solution, supplies, kits, related compounds, +bundlesAmerican, GL, Mile High, Ion, PrimeIncrease order value and convenience
    10. Fulfillment reassuranceSame-day cutoff, expedited tiers, tracking, discreet or +temperature-conscious packagingAmerican, Mile High, Xcel, Loti, GLReduce perceived delivery risk
    11. RetentionPoints, subscriptions, SMS, email, cashback, account history, +inventory dropsModern, American, Gentleman, LotiTurn a one-time buyer into repeat revenue
    12. AdvocacyReview request, affiliate portal, creator code, partner assetsAmerican, Ion, Xcel, LimitlessTurn customers and creators into acquisition
    13. ScaleWholesale cases, distributor inquiries, partner managersPure, Loti, Ion, Peptide PartnersMove from retail orders to larger-volume channels
    14. Risk documentationTerms, purchaser certification, right to refuse, blacklisting, +indemnity, creator rulesSkye, Ion, Xcel, Pink PonyCreate records, set contractual boundaries, and allocate risk
    15. Continuity responseGate catalog, rename product, change domain, remove SKU, or continue +publicly after agency contactXcel, Mile High, SwissChems, Summit, PekCuraDifferent responses to pressure; none proves acceptance
    +

    The five funnel +architectures

    +

    1. Open direct store

    +

    Search/social → public product → COA/reviews → discount ladder → cart → email/SMS/reorder

    +

    Examples: American Peptides, Modern Peptides, GL Peptides, Peptide +Partners, Prime Peptides.

    +

    This architecture creates the least friction and the clearest price +discovery. It is also where product copy, accessories, reviews, and +use-adjacent language are easiest to observe together.

    +

    2. Qualified-access store

    +

    Search/public proof → account or research form → gated catalog → purchase → account lifecycle

    +

    Examples: Skye, Xcel, Loti, Ion, Mile High.

    +

    The better versions collect age, institution, business type, +researcher type, intended context, or research protocol. The weaker +versions ask only for email/password while calling the result +“researcher access.”

    +

    3. Creator-to-coded-product +funnel

    +

    Human-interest creator content → guide/community → tracked link/code → coded RUO product

    +

    Examples: Connor → V&L, Clavicular → Arcane, Zay → GL/Gentleman, +Jesse → Peptira.

    +

    This is commercially powerful because the creator explains what the +product name means and why the audience cares. The seller can keep +first-party copy more technical. Public evidence still connects the two +layers when the guide, code, and product route are explicit.

    +

    4. Creator-personalized +storefront

    +

    Podcast/content → tracked link → creator-specific vendor page → curated categories → code → VIP/email

    +

    Best example: Sarah Westall → Limitless.

    +

    This is the strongest publicly substantiated conventional affiliate +implementation in the study. The seller publishes its standard rates, +the creator has a personalized page, and multiple tracking values and a +buyer code are visible.

    +

    5. Owned-media and +owned-company funnel

    +

    Founder media → free tool/course/podcast → seller → membership/course/email → repeated launches

    +

    Best example: Jay Campbell → BioLongevity.

    +

    Jay discloses that he is a cofounder, so this is not an ordinary +affiliate relationship. It is the most durable media architecture in the +sample, although no current BioLongevity retatrutide SKU was visible at +the cutoff.

    +

    Seller scorecard

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SellerCurrent retatrutide evidenceOffer and conversionAccess modelQA / trustRetention / distributionMost important contradiction
    American +PeptidesExplicit, 10–60 mg$105 at 10 mg; 15% subscription; 7%–16% quantity breaks; accessories +and bundles21+ qualified-researcher modal and purchase certificationStrength-specific reports; store claims purity, identity, sterility, +endotoxinEmail/SMS, subscription, reviews, partner program up to 35%RUO posture beside preselected reconstitution/syringe products and +human-outcome buyer reviews
    Modern +PeptidesGLP-3 R explicitly identified as retatrutide, 5–60 mg96–640; conventional cartPublic browsing; account review before checkoutDeep current/previous COA library across several labsPoints return about 5% as store credit; email/SMSTerms include “consult your doctor” and personal-use boilerplate; +public BAC-water/reconstitution context
    Prime +PeptidesExplicit, 10/30/60 mg120/265/$450; first-order discount; +bulk and shipping offersProduct public; 21+ purchaser representationsMultiple mapped 2026 reportsEmail capture; medical-provider and affiliate registrationReconstitution and human-readable mechanism language remain after a +2024 FDA warning
    PekCuraCAS-coded title, but page/SEO explicitly identifies retatrutide$159.99; large promotional banners; backorder allowed21+ modal plus the deepest anonymous checkout questionnaire +observedStrong 30 mg example includes mass, purity, sterility, +endotoxinEmail/SMS and supportDeep purchaser form coexists with weight-management/metabolic copy +and post-reconstitution use language; warned in 2026
    Mile HighMHC-3 RT, gated; 69.99–279.99 +observed30% promotion; free-shipping tiers; reconstitution solution21+ research-access accountPublic coded-product COA libraryOmnisend, reviews, affiliate infrastructureGate and strict terms coexist with accessories and prior linked +dosing content cited by FDA in 2026
    SkyeCurrent retatrutide lot files; catalog gatedPrice unavailable anonymouslyStrongest behavioral membership terms: 21+, business type, no +dosing/administration discussionStrong public lot history with sterility/endotoxin examplesEmail/OmnisendStronger screening reduces transparency; direct files remain public +and the gate does not establish actual buyer intent
    XcelGLP-3 route; current public Reta-labelled report/image metadataPrice gated; high shipping thresholds; reconstitution solutionResearcher type, setting/use, age, possible affiliation reviewPublic multi-lot test libraryEmail/SMS, cart reminders, affiliate coupon, tracking“Medical clinic” and “clinical studies” options conflict with +no-clinical/no-injection terms; FDA warned it in 2024
    LotiReta/GLP-3, 10/20/30 mg$199.99 at 10 mg; 35% event offer; 20% SMS offer; quantity +ladderBusiness type, EIN, optional research IDs, 21+, RUOPer-batch claims and latest-COA linksSEO library, SMS, newsletter, wholesaleProfessional gate sits behind consumer-legible weight/metabolic +content, use-adjacent reviews, calculator, and reconstitution +products
    GL +PeptidesExplicit vial and a live 60 mg disposable penVial category from $70; pen $255; kits and bulk inquiryNo front-door gate observed; terms require 21+ qualified +researcherPublic Janoshik links and displayed purityNewsletter, account/reorder, creator routesPen page contains practical needle, priming, injection, and disposal +directions while stating RUO
    GentlemanPublic store data exposed current Reta 10/20 mg at 110/1605% cashback; ebook lead magnet; same-day shippingNominal account wall; visible registration asks email/password +onlyPublic lot certificate and broader claimsEbook email nurture, account, cashback, creator tracking“Researcher access” is thin; current product and prices remain +public in the store’s own data feed
    Pure +CompoundingGLP-3; vendor COA calls it retatrutide, 10–60 mg38.90–120; ten-vial wholesale as +low as $25/vial at 10 mg21+ modal plus research-entity/protocol fields at checkoutIdentity/mass/purity and fentanyl screen in sampled reportNewsletter, wholesale, recently public 25% partner offerVery aggressive price, wholesale, and partner incentives sit behind +a relatively new/rebranded operation
    Peptide +PartnersExplicit 24 mg vials in large packs230–1,512; rotating 33% coupons; +free shipping above $400Five-day 21+ RUO modal; simple accountDeep identity/purity plus sterility, endotoxin, and heavy-metal +documentationOwned publication/email and affiliate portalProduct calls it a weight-loss drug and gives use-adjacent +reconstituted-vial guidance while terms deny human-use instruction
    IonION-3R, mapped to GLP-3/retatrutide category, 5–60 mg39–219; 10%–25% volume tiers; 5% +ACH; suppliesDOB, business type, institution, 21+ research affirmationPublic COA library and multi-panel claimsEmail, live chat, account, affiliate dashboard, wholesaleStrong governance language coexists with reconstitution copy, +supplies, and clinic/distributor access categories
    +

    Creator funnel scorecard

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Creator routeVerified handoffCurrent seller statusMonetization and retentionEvidence qualityMain finding
    Sarah +Westall → LimitlessPersonalized page, tracked URLs, code SarahRetatrutide HA visible at 179.99–209.99Podcast, VIP registration, newsletter, wishlist; public seller rates +of 12% on VIP/GLP and 15% on most other productsVery high on mechanism; sales unknownBest publicly documented standard affiliate funnel
    Connor +Sinann → V&L?ref=connor, codes CS/connor, +public Reta guideGLP-RT live at 99.99–249.99Approximately 2.1K-member Skool surface, $47/month offer, guides, +calls, coachingVery high on route/product; payout unknownStrongest community-to-commerce funnel and clearest creator/seller +division of messaging
    Jesse Marji +→ PeptiraLinktree says “GLP-3 Source (Retatrutide),” ?ref=MARJI, +code MARJIRETA-3 10/20/30 mg at 99/139/$179Coaching application, vendor account, cart recovery, extra +discountHigh on route/product; payout unknownClean current retatrutide-labelled creator handoff
    Zaytovenfit → GLLinktree “Retatrutide” → stratelabs.is/?ref=155 → +GLGL retatrutide pen live at $255Coaching, social, GL newsletter/accountHigh on route/product; referral persistence +uncertainShort, high-intent creator funnel; final redirect may no longer +visibly preserve attribution
    Clavicular → ArcaneCurrent Linktree says “Arcane Peptides | LIVE NOW”Arcane 3-GLP live at $95; identity strongly mapped by +CAS/pharmacologyLarge creator ecosystem; Arcane account/newsletter/wholesaleHigh on route; compensation unknownMassive attention route, but no visible creator code or public +economics
    Jay Campbell → +BioLongevityDisclosed cofounder; code JAY15; direct seller +promotionNo current retatrutide SKU verified; historical GLP-3 reports +existEmail, podcast, free tools, 199/499 +education, $124.99/month membershipHigh on ownership/historyBest durable owned-media architecture; not a current verified +retatrutide checkout
    +

    What the sellers publicly +rely on

    +

    These are the recurring stated controls. The right-hand column is the +most important part: what the public evidence does and does not +establish.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Publicly stated controlOperational valueEvidence limitation
    RUO / not for human or animal useStates the seller’s intended transaction and sets a contractual +boundaryFDA warning letters show that agencies evaluate the total labeling, +product context, testimonials, creator content, accessories, and other +evidence
    18+ or 21+ modalBlocks a trivial click and records an age acknowledgmentDoes not establish researcher status or actual purpose
    Researcher accountCreates identity, contact, and order records; can support manual +reviewSome “researcher” forms ask only for email/password; the form’s +existence does not prove review
    Institution, EIN, protocol, or business-type fieldsProduces richer purchaser representations and supports +screeningSelf-reported data and optional fields are not independent +verification
    Right to refuse or blacklistGives the company contractual authority to reject suspicious orders +or conductNo public evidence shows how consistently it is applied
    Coded name or CAS numberChanges first-party merchandising language and may reduce explicit +consumer search copyFDA has identified coded products by ingredient; creator and COA +pages often decode the name
    COA / lot libraryReduces buyer uncertainty and provides traceability to a tested +sampleIt does not prove chain of custody, every-vial consistency, or +untested safety dimensions
    Indemnity, arbitration, liability capAllocates private dispute risk and limits remedies if +enforceableDoes not decide product status or prevent government action
    Affiliate rulesCan require disclosures and prohibit human-outcome or protocol +claimsThe policy only matters if creators are screened, monitored, +corrected, and terminated
    Separate creator contentLets a creator own education and community while the store remains +technicalPublic tracked links, codes, and guides can still connect the human +narrative to the seller
    Catalog gateReduces anonymous visibility and can add qualification dataIt may leave public product data, images, reports, and search +traces; it does not establish cessation
    Domain or brand migrationPreserves traffic or repositions the storefrontA redirect does not prove entity continuity, and a new domain does +not erase prior public records
    +

    The controls that look most +mature

    +

    Best +purchaser qualification: Skye, Loti, PekCura, Ion

    +
      +
    • Skye has the strongest membership conduct language +and expressly bars dosing/administration discussion.
    • +
    • Loti collects business type, EIN, and optional +research identifiers.
    • +
    • PekCura exposed the deepest visible checkout +questionnaire: date of birth, institution, entity, protocol, and two +acknowledgments.
    • +
    • Ion collects identity, date of birth, institution, +business type, and a separate marketing opt-in.
    • +
    +

    None of these public forms proves actual review or a legally accepted +transaction.

    +

    Best affiliate governance: +Ion

    +

    Ion’s public agreement requires material-connection disclosure and +bars medical, fat-loss, dosing, administration, human-use, and similar +claims. That is the clearest written creator-governance system in the +sample. The next diligence question is whether it runs:

    +
      +
    • creator approval;
    • +
    • content pre-review;
    • +
    • automated monitoring;
    • +
    • evidence retention;
    • +
    • correction deadlines;
    • +
    • commission holds;
    • +
    • termination and code deactivation.
    • +
    +

    The public policy alone cannot answer those questions.

    +

    Best +public QA architecture: Skye, Modern, Peptide Partners, PekCura

    +

    The strongest libraries map products to lots and expose more than one +assay type. Peptide Partners and Skye show broad panels; Modern has a +deep current/previous archive; PekCura has an unusually strong +mass/purity/sterility/endotoxin example.

    +

    The Polaris case is the warning against overconfidence: three samples +under one batch identifier produced radically different public results, +while a later sample under the same batch name passed. The cause is +unresolved, but the lesson is clear—one passing certificate does not +prove batch uniformity.

    +

    Best +retention engines: American, Modern, Loti, Gentleman

    +
      +
    • American: subscriptions, volume discounts, reviews, email/SMS, +partner commissions, and accessories.
    • +
    • Modern: points worth roughly 5% of spend, email/SMS, account, broad +strengths.
    • +
    • Loti: high-frequency SEO, newsletter, SMS offers, quantity pricing, +and wholesale.
    • +
    • Gentleman: account, ebook nurture, 5% cashback, fast shipping, and +creator attribution.
    • +
    +

    Best creator systems: +Connor, Sarah, Jay

    +
      +
    • Connor owns education, community, recurring membership, and source +translation.
    • +
    • Sarah has the strongest conventional tracked affiliate +implementation.
    • +
    • Jay owns the deepest media/course/email stack and discloses company +ownership.
    • +
    +

    The central marketing +contradiction

    +

    The market repeatedly splits the message:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Store sideCreator / content side
    Research use onlyPersonal result or transformation
    Qualified researcherMainstream fitness or wellness audience
    Coded moleculeExact ingredient decoded
    No administration guidanceGuide, course, podcast, or practical use discussion
    No therapeutic claimWeight, appetite, metabolism, body-composition framing
    No human useBuyer code and direct seller handoff
    +

    This split converts because the creator answers the buyer’s real +questions while the store closes the transaction. It also leaves a +coherent public evidence trail when the creator names the product, +seller, code, and practical use context.

    +

    Why the funnel converts

    +
      +
    1. The creator replaces institutional trust. Buyers +trust a person, community, or transformation story before they trust an +unknown chemical seller.
    2. +
    3. COAs make the product feel legible. A third-party +report converts uncertainty into a numerical purity story, even though +it cannot prove the entire supply chain.
    4. +
    5. Price ladders turn doubt into a deal. Discounts, +packs, shipping thresholds, and limited offers make a high-risk category +feel like ordinary ecommerce.
    6. +
    7. Accessories eliminate friction. The store sells the +surrounding workflow, not just a vial.
    8. +
    9. Owned communities provide post-purchase support. +Guides and calls reduce confusion and create recurring creator +revenue.
    10. +
    11. Attribution is simple. A link and code are enough +to recruit creators quickly.
    12. +
    13. Organic acquisition can make apparent CAC extremely +low. Word of mouth and creator distribution allow the owner to +capture the markup.
    14. +
    15. The customer can reorder. The same catalog, +account, email, and creator relationship support repeat +transactions.
    16. +
    +

    Why the market looks +easier than it is

    +

    The storefront technology is ordinary—10 of 12 deeply audited stores +used WordPress/WooCommerce. The hard parts are hidden:

    +
      +
    • reliable product provenance and lot-to-customer traceability;
    • +
    • payment settlement, reserves, disputes, and processor +continuity;
    • +
    • inventory, shrinkage, shipping errors, and customer complaints;
    • +
    • creator screening and claims oversight;
    • +
    • accurate margin after discounts, refunds, shipping, commissions, and +reserves;
    • +
    • legal-entity and contract continuity through domain changes;
    • +
    • quality systems that test more than one selected vial;
    • +
    • making a hot customer list valuable in a durable, lawful +business.
    • +
    +

    Market-duration finding

    +

    The data does not support a precise “four to six months left” +claim.

    +

    What it supports:

    +
      +
    • demand around obesity, metabolism, and longevity is durable;
    • +
    • retatrutide-specific gray-market demand may remain large before +legitimate availability broadens;
    • +
    • scrutiny is already active rather than hypothetical;
    • +
    • agency action is uneven and can lag visible commerce;
    • +
    • warned sellers split among continued public sale, gated catalogs, +product removal, domain migration, and closure;
    • +
    • many current sellers are genuinely new 2025–2026 entrants replacing +firms that left or changed.
    • +
    +

    This behaves more like a churn-and-replacement +market than a protected class of long-lived winners.

    +

    The strongest true continuity found was Particle Peptides, with the +same Slovak company number on a 2015 archived storefront and the current +site. Among U.S.-facing sellers, Loti, Battle Born, Xcel, Skye, Prime, +PekCura, Hydro, Modern Aminos, Evolve, and Atomix have meaningful +same-domain histories. Core .st and Limitless +.st should not be presented as clean migrations because +their older .com sites remained live with different contact +details at the cutoff.

    +

    What this means for Braden

    +

    The full-funnel research strengthens the operating-partner +thesis:

    +
    +

    Braden may have a powerful transaction engine, but the visible market +leaders show how much company infrastructure can still be built around +it.

    +
    +

    The most valuable systems Alex can bring are:

    +
      +
    1. Financial truth: order-to-settlement +reconciliation, contribution margin, reserves, refunds, discounts, and +affiliate payouts.
    2. +
    3. Customer truth: first order, repeat order, cohort, +product, code, source, and support burden.
    4. +
    5. Affiliate operating system: creator CRM, screening, +contracts, codes, links, content rules, approval, monitoring, payout, +and termination.
    6. +
    7. Lifecycle: welcome, cart recovery, post-purchase +support, reorder timing, inventory alerts, win-back, and referral.
    8. +
    9. Merchandising: product ladder, bundles, shipping +threshold, subscriptions or points, and disciplined promotion.
    10. +
    11. QA records: source, batch, report, inventory +receipt, customer lot, complaint, and resolution.
    12. +
    13. Fulfillment: remove Braden from daily packing; set +SLAs, inventory controls, error tracking, and support escalation.
    14. +
    15. Owned audience: media, community, education, +experiences, and creator relationships that can survive a SKU or +regulatory transition.
    16. +
    17. Governance: accurate terms, consistent +ages/policies, creator disclosure rules, evidence retention, and claims +review.
    18. +
    19. Buyer readiness: clean entity records, contracts, +cohort data, quality records, management, and a financial model a buyer +can diligence.
    20. +
    +

    The biggest strategic asset Alex should negotiate around is not +“helping with marketing.” It is converting accidental demand into:

    +
      +
    • owned first-party distribution;
    • +
    • documented repeat economics;
    • +
    • a managed creator network;
    • +
    • a business that does not require Braden to pack orders;
    • +
    • durable media, software, community, and operational +infrastructure.
    • +
    +

    The numbers to verify +before economics

    +

    Public research cannot validate Braden’s $1.5 million last-30-day +claim, $90,000 day, or 80% margin. Before equity or a revenue share is +priced, obtain:

    +
      +
    • every order and line item for at least 90 days;
    • +
    • gateway settlements and bank deposits;
    • +
    • refunds, chargebacks, reserves, holds, taxes, and processor +fees;
    • +
    • discount and affiliate payout by order;
    • +
    • COGS, inbound freight, testing, packaging, shipping, and labor by +batch;
    • +
    • inventory received, shipped, remaining, damaged, and replaced;
    • +
    • new versus repeat customers;
    • +
    • revenue and contribution by creator, code, product, and cohort;
    • +
    • every owner, equity holder, contractor, agency, web team, and +decision right;
    • +
    • source, manufacturer, importer, lot, report, complaint, and customer +mapping;
    • +
    • every regulator, processor, bank, insurer, or legal +communication.
    • +
    +

    Bottom line

    +

    The winning commercial system is:

    +

    trusted attention → education → attributed product handoff → proof → offer → transaction → retention → advocacy

    +

    The best sellers have built several layers of that system. Braden +appears, based on the call and public Biologix surface, to have captured +the transaction before building the rest.

    +

    That is why the opportunity is real. It is also why Alex should +negotiate as the operating principal who creates the company—not as a +marketer paid only for posts or top-line revenue.

    +

    The research does not show that the active sellers +discovered a magic disclaimer. It shows that demand is strong, ecommerce +implementation is ordinary, enforcement is lagged and uneven, and the +market continually replaces operators. The durable prize is ownership of +the customer, distribution, data, community, operating system, and +transition path.

    +
    +
    + + diff --git a/biologix-strategy-board/research/index.html b/biologix-strategy-board/research/index.html new file mode 100644 index 0000000..40ab1b0 --- /dev/null +++ b/biologix-strategy-board/research/index.html @@ -0,0 +1,88 @@ + + + + + + + + + + + Biologix Research Room — TLDR + + +
    + +
    + +
    +

    Research room · July 23, 2026

    +

    The market is real. The company is not built yet.

    +

    Braden appears to have captured a highly leveraged customer transaction before building the finance, distribution, lifecycle, fulfillment, quality, management, and data systems that turn demand into an enduring company.

    + +
    The opportunity is not “help him market.” It is to become the operating principal who converts accidental demand into owned distribution, repeat economics, an instrumented creator network, and a company that can run without Braden packing orders.
    + +
    +
    + 01 / What wins +

    Distribution beats software.

    +

    The strongest operators combine creator trust, search, batch proof, price ladders, fast fulfillment, email/SMS, repeat purchasing, and affiliate attribution. Most use ordinary WordPress commerce.

    +
    +
    + 02 / What does not exist +

    No magic disclaimer.

    +

    Age gates, research attestations, coded names, account walls, COAs, and separate creator content are common. None demonstrated a reliable safe harbor when the complete public funnel points elsewhere.

    +
    +
    + 03 / Alex’s move +

    Verify, install, then price equity.

    +

    Reconcile orders and settlements first. Then build attribution, lifecycle, fulfillment, QA traceability, creator governance, executive management, owned media, and community.

    +
    +
    + + +
    + + diff --git a/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.json b/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.json new file mode 100644 index 0000000..21e20e3 --- /dev/null +++ b/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.json @@ -0,0 +1,13429 @@ +{ + "meta": { + "generatedAt": "2026-07-27T22:07:37.665Z", + "scanDate": "2026-07-27", + "universeTotal": 655, + "confirmedUsStorefrontsInUniverse": 84, + "eligibleAfterExclusions": 71, + "probed": 71, + "includedCurrentRetaListings": 48, + "anonymousRetaCartAdds": 37, + "storesWithActiveMethodIds": 33, + "storesWithRenderedCheckoutLabels": 20, + "excludedDomains": [ + "nupeps.com", + "ngpeptide.com", + "advancedresearchpep.com", + "polarispeptides.com", + "myoasislabs.com", + "simplepeptide.com", + "bulkpeptides.com", + "aminosequence.com", + "biopepstore.com", + "nextechlaboratories.com", + "bluumpeptides.com", + "spartalabs.net", + "biopepusa.com" + ], + "scope": "Anonymous public pages, public product/cart APIs, and fresh anonymous carts only. No accounts, PII, checkout submission, order creation, payment attempt, transaction, credentials, gate bypass, or evasion.", + "evidenceRules": [ + "Active/rendered methods are separated from configured-only or public-claim-only methods.", + "Unknown remains unknown.", + "Storefront, checkout integration, gateway/PSP, processor/ISO, and acquirer are separate layers.", + "UI/UX scores are automated 390x844 browser heuristics backed by observed DOM/image/cart evidence, not a subjective design review." + ], + "gradeDefinitions": { + "A": "Current Reta listing added to an anonymous cart and active method IDs or rendered labels observed.", + "B": "Current Reta listing and anonymous cart add observed, but active payment-method state was not verified.", + "C": "Current Reta listing observed; payment evidence is public-claim/logo-only or cart was not verified.", + "D": "Listing present but not currently purchasable, or no payment state could be verified.", + "E": "Storefront or listing inaccessible in this pass." + }, + "rollups": { + "platforms": { + "WooCommerce": 36, + "Unknown": 4, + "Shopify": 3, + "Next.js": 5 + }, + "marketingMechanics": { + "Affiliate or ambassador acquisition": 34, + "Batch/COA proof as conversion": 2, + "none detected": 2, + "Loyalty or points retention": 2, + "Subscription or auto-ship continuity": 4, + "Free-shipping threshold": 3, + "Quantity or volume discount": 1 + }, + "trackingStacks": { + "Google Tag Manager": 36, + "Google Analytics": 28, + "Meta Pixel": 16, + "TikTok Pixel": 10, + "Microsoft Clarity": 5, + "Triple Whale": 2 + }, + "marketingTechnologyStacks": { + "GoAffPro": 15, + "Klaviyo": 10, + "Trustpilot": 14, + "Yotpo": 1, + "AfterShip": 1, + "Judge.me": 1 + }, + "activeCheckoutIdentifiers": { + "linkmoney": 11, + "zelle": 7, + "bacs": 6, + "nmi": 4, + "idem": 3, + "tagada": 3, + "edd_draft_yodlee_gateway": 3, + "paygatedotto-instant-payment-gateway-hostedpaygatedotto": 2, + "bytenft": 2, + "crypto": 2, + "forumpay": 2, + "amgexpress": 2, + "clkk": 2, + "maef_child_gateway": 2, + "nmipay": 2, + "noramp_platform": 2, + "mecom_paypal": 2, + "btcpaygf_default": 2, + "cheque": 2, + "cashapp": 2, + "alg_custom_gateway_1": 1, + "paygatedotto-crypto-payment-gateway-dynamic": 1, + "anet": 1, + "pr_paypal_post_order_instructions": 1, + "ven": 1, + "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto": 1, + "site_b_gateway": 1, + "blockonomics": 1, + "peptipay_venmo": 1, + "sstg_payments": 1, + "psifi": 1, + "truvo_dropin": 1, + "veylo_pay": 1, + "wc_payerurl_gateway": 1, + "my_fingrid_gateway": 1, + "pep_applepay": 1, + "cryptopay": 1, + "pipepay": 1, + "circoflows": 1, + "dfinsell": 1, + "cashenvoy": 1, + "paynote": 1, + "shield_gateway": 1, + "nowpayments_gateway": 1, + "authorize_net_cim_credit_card": 1, + "gp_zelle": 1, + "gp_btc": 1, + "gp_eth": 1, + "gp_usdt": 1, + "mycryptocheckout": 1, + "mecom_stripe": 1, + "nexteng_redirect": 1, + "bankful_hosted_gateway": 1, + "venmo_gateway_1": 1, + "cod": 1, + "mps_v_2d_15": 1, + "venmo": 1, + "kmi_payments": 1, + "pay_with_affirm_shopify": 1, + "quiklie": 1, + "regentide_cashapp_qr": 1, + "regentide_zelle": 1, + "regentide_wise_ach_manual": 1, + "authorize_net": 1 + } + }, + "sourceUniverse": "biologix-strategy-board/research/retatrutide-vendor-universe-data.js", + "sourceUniverseGeneratedAt": "2026-07-27T21:26:20.607Z" + }, + "byDomain": { + "adaptpeptides.com": { + "domain": "adaptpeptides.com", + "canonicalDomain": "adaptpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://adaptpeptides.com/", + "https://adaptpeptides.com/product/retatrutide/", + "https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g", + "https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387", + "https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2", + "https://adaptpeptides.com/shipping-policy/", + "https://adaptpeptides.com/returns-refunds/", + "https://adaptpeptides.com/terms-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://adaptpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide", + "strengths": [ + "5mg", + "10mg", + "15mg", + "20mg", + "30mg" + ], + "productUrl": "https://adaptpeptides.com/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 9167, + "productType": "variable", + "evidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 89.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo", + "Trustpilot", + "GoAffPro" + ], + "evidenceUrls": [ + "https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 404, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2", + "https://adaptpeptides.com/shipping-policy/", + "https://adaptpeptides.com/returns-refunds/" + ], + "shippingReturnSnippets": [ + "/ MasterCard / Visa [email protected] 30 N Gould Street, Sheridan, Wyoming, 81801 Support Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions Shipping Policy Returns", + "Support Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions About US Discover us Co", + "ow:hidden;position:relative}.button.flexible-shipping-free-shipping-button{margin-left:0} Shipping Policy - Adapt Peptides Card payments are currently unavailable. Please checkout using other pay" + ], + "pluginSignals": [ + "*", + "advanced-coupons-for-woocommerce-free", + "commercegurus-commercekit", + "contact-form-7", + "elementor", + "elementor-pro", + "flexible-shipping", + "hostinger-reach", + "jetpack", + "klaviyo", + "seo-by-rank-math-pro", + "trustpilot-reviews", + "waave-compliance", + "waitlist-woocommerce", + "woo-discount-rules", + "woo-discount-rules-pro", + "woo-product-bundle", + "woocommerce", + "woocommerce-google-analytics-integration", + "woocommerce-payments" + ] + }, + "payment": { + "methods": [ + { + "name": "shield_gateway", + "id": "shield_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "zelle", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "linkmoney", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "nowpayments_gateway", + "id": "nowpayments_gateway", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "shield_gateway", + "zelle", + "linkmoney", + "nowpayments_gateway" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "shield_gateway", + "zelle", + "linkmoney", + "nowpayments_gateway" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://adaptpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 10, + "conversionUx": 6, + "overall": 7.9, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://adaptpeptides.com/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Your Cart No products in the cart.", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://adaptpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://adaptpeptides.com/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://adaptpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://adaptpeptides.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://adaptpeptides.com/returns-refunds/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://adaptpeptides.com/terms-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "agelessvitalitypeptides.com": { + "domain": "agelessvitalitypeptides.com", + "canonicalDomain": "agelessvitalitypeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg", + "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart", + "https://agelessvitalitypeptides.com/checkout/", + "https://agelessvitalitypeptides.com/refund-returns/", + "https://agelessvitalitypeptides.com/terms-of-service/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP3-R (Reta)", + "strengths": [], + "productUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1131, + "productType": "variable", + "evidenceUrl": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 99.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://agelessvitalitypeptides.com/refund-returns/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel" + ], + "evidenceUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 5.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://agelessvitalitypeptides.com/refund-returns/" + ], + "shippingReturnSnippets": [ + "ness for both our customers and our operations, we have outlined the following return and refund policy: Return Eligibility Return requests must be submitted within 24 hours of confirmed delive", + "policy: Return Eligibility Return requests must be submitted within 24 hours of confirmed delivery (as verified by the shipping carrier). Items must be unopened, unused , and in original c", + "turns are subject to a 20% restocking fee , which will be deducted from the refund total. Refund Policy Based on Purity Guarantee We guarantee >98% purity on all research peptides. If you be" + ], + "pluginSignals": [ + "*", + "age-gate", + "authorize-net-payments-for-woocommerce", + "gtm-server-side", + "woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "Card Number *", + "id": "anet", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle Bank Transfer", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "anet", + "bacs" + ], + "renderedCheckoutLabels": [ + { + "id": "bacs", + "label": "Zelle Bank Transfer" + }, + { + "id": "anet", + "label": "Card Number *" + } + ], + "configuredBeforeCart": [ + "anet", + "bacs" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://agelessvitalitypeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://agelessvitalitypeptides.com/refund-returns/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 7.5, + "productClarity": 10, + "trustPresentation": 5.5, + "conversionUx": 8, + "overall": 7.7, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "A blocking overlay or gate covers the mobile viewport: Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ." + ], + "observedUrl": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://agelessvitalitypeptides.com/product/retatrutide-10mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://agelessvitalitypeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://agelessvitalitypeptides.com/refund-returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://agelessvitalitypeptides.com/terms-of-service/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "arcticlabsupply.com": { + "domain": "arcticlabsupply.com", + "canonicalDomain": "arcticlabsupply.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://arcticlabsupply.com/products/retatrutide-10mg" + ], + "platform": { + "name": "Unknown", + "confidence": "low", + "evidenceUrl": "https://arcticlabsupply.com/products/retatrutide-10mg" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide 10mg", + "strengths": [ + "10mg" + ], + "productUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "inStock": null, + "purchasable": null, + "anonymousCartAdd": false, + "productId": null, + "productType": "HTML product page", + "evidenceUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": null, + "currency": null, + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": null, + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": false, + "technologyStack": [], + "evidenceUrls": [] + }, + "tracking": { + "stack": [ + "Meta Pixel" + ], + "evidenceUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": false, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 2 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [], + "pluginSignals": [] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "D", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "confidence": "high" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 5, + "productClarity": 2.5, + "trustPresentation": 2, + "conversionUx": 4, + "overall": 4.7, + "reasons": [ + "Mobile DOM is missing a clearly visible product heading, price, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://arcticlabsupply.com/products/retatrutide-10mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": false, + "visibleCartCta": false, + "visibleProductImage": false, + "visibleCoaSignal": false, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 3 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://arcticlabsupply.com/products/retatrutide-10mg", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "behemothlabz.com": { + "domain": "behemothlabz.com", + "canonicalDomain": "behemothlabz.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://behemothlabz.com/product/retatrutide-peptide/", + "https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide", + "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "https://behemothlabz.com/bh-checkout-offline/", + "https://behemothlabz.com/affiliate-area/", + "https://behemothlabz.com/shipping-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "LY3437943", + "strengths": [], + "productUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 90892, + "productType": "variable", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 147.58", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo", + "Trustpilot" + ], + "evidenceUrls": [ + "https://behemothlabz.com/affiliate-area/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "TikTok Pixel" + ], + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 503, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://behemothlabz.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "Checkout Guaranteed Enjoy 24/7 customer support, 1st & 3rd party verified 99% purity, and free shipping on orders over $100! Strength Choose an option 5mg 10mg 12mg Clear LY3437943 quantity Add", + "T Sales and Specials Top 8 Sellers New Products Important Links How To Pay Privacy Policy Shipping Policy Track Your Order Behemothlabz Sitemap Certificate Of Analysis Charity & Donation Upscale", + "described in our privacy policy . Register Products search Products search Behemoth Labz Shipping Policy | Fast & Reliable Delivery Skip to content [public business email omitted] | [public phone omitted] Prod" + ], + "pluginSignals": [ + "*", + "advanced-free-flat-shipping-woocommerce", + "affiliate-wp", + "age-gate", + "ajax-search-for-woocommerce", + "custom-wishlist-plugin", + "customer-reviews-woocommerce", + "donation-for-woocommerce", + "duracelltomi-google-tag-manager", + "facebook-for-woocommerce", + "fitness-calculators", + "formidable", + "free-gifts-for-woocommerce", + "gdpr-framework", + "google-site-kit", + "gratisfaction-all-in-one-loyalty-contests-referral-program-for-woocommerce", + "megamenu", + "omnisend-connect", + "pixelyoursite", + "upscale-your-cart", + "wc-aelia-foundation-classes", + "woo-discount-rules", + "woo-discount-rules-pro", + "woo-social-login", + "woocommerce", + "woocommerce-insta-onramp-gateway-jjsfinancial-v.3.23", + "woocommerce-payments", + "wordfence-login-security", + "wp-consent-api", + "wppopups" + ] + }, + "payment": { + "methods": [ + { + "name": "pr_paypal_post_order_instructions", + "id": "pr_paypal_post_order_instructions", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "bytenft", + "id": "bytenft", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "ven", + "id": "ven", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto", + "id": "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "crypto", + "id": "crypto", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "forumpay", + "id": "forumpay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 6, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "pr_paypal_post_order_instructions", + "bytenft", + "ven", + "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto", + "crypto", + "forumpay" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "pr_paypal_post_order_instructions", + "ven", + "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto", + "crypto", + "forumpay" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://behemothlabz.com/bh-checkout-offline/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://behemothlabz.com/bh-checkout-offline/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://behemothlabz.com/affiliate-area/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8, + "visualPolish": 9, + "productClarity": 7, + "trustPresentation": 10, + "conversionUx": 8, + "overall": 8.4, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 6 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://behemothlabz.com/product/retatrutide-peptide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://behemothlabz.com/product/retatrutide-peptide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://behemothlabz.com/bh-checkout-offline/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://behemothlabz.com/affiliate-area/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://behemothlabz.com/shipping-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "geneticpeptide.com": { + "domain": "geneticpeptide.com", + "canonicalDomain": "geneticpeptide.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://geneticpeptide.com/product/glp-r-vial-2/", + "https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2", + "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "https://geneticpeptide.com/checkout/", + "https://geneticpeptide.com/product-category/preferred-research/", + "https://geneticpeptide.com/affiliates/", + "https://geneticpeptide.com/terms-of-service/", + "https://geneticpeptide.com/refund-policy/", + "https://geneticpeptide.com/shipping-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://geneticpeptide.com/product/glp-r-vial-2/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3 (Reta) Vial", + "strengths": [], + "productUrl": "https://geneticpeptide.com/product/glp-r-vial-2/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 2424, + "productType": "variable", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 155.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://geneticpeptide.com/product-category/preferred-research/", + "https://geneticpeptide.com/affiliates/" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://geneticpeptide.com/product/glp-r-vial-2/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": false, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 4.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [], + "shippingReturnEvidenceUrls": [ + "https://geneticpeptide.com/refund-policy/", + "https://geneticpeptide.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "GLP-3 (Reta) Vial – Genetic Peptides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F", + "-3 (Reta) Vial – Genetic Peptides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F", + "tides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F" + ], + "pluginSignals": [ + "*", + "advanced-coupons-for-woocommerce", + "advanced-coupons-for-woocommerce-free", + "age-gate", + "ajax-search-for-woocommerce", + "akismet", + "blockonomics-bitcoin-payments", + "bytenft-payment-gateway-1.0.17", + "checkout-fees-for-woocommerce", + "dfinsell-payment-gateway-1.0.12", + "elementor", + "elementor-pro", + "fluentform", + "jetpack", + "magic-login", + "omnisend-connect", + "powerpack-elements", + "variation-swatches-woo", + "wc-blacklist-manager-premium", + "woo-product-country-base-restrictions", + "woocommerce", + "woocommerce-custom-payment-gateway-pro", + "woocommerce-gateway-easyprocess-idem", + "wp-nmi-gateway-pci-woocommerce", + "yith-woocommerce-gift-cards-premium", + "yith-woocommerce-product-bundles-premium" + ] + }, + "payment": { + "methods": [ + { + "name": "Pay with Cards / Cash App", + "id": "site_b_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Card Number *", + "id": "nmi", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "ACH / Bank Transfer", + "id": "bytenft", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Bitcoin", + "id": "amgexpress", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Bitcoin", + "id": "blockonomics", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 5, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "site_b_gateway", + "nmi", + "bytenft", + "amgexpress", + "blockonomics" + ], + "renderedCheckoutLabels": [ + { + "id": "site_b_gateway", + "label": "Pay with Cards / Cash App" + }, + { + "id": "bytenft", + "label": "ACH / Bank Transfer" + }, + { + "id": "amgexpress", + "label": "Bitcoin" + }, + { + "id": "blockonomics", + "label": "Bitcoin" + }, + { + "id": "nmi", + "label": "Card Number *" + } + ], + "configuredBeforeCart": [ + "site_b_gateway", + "nmi", + "amgexpress", + "blockonomics" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://geneticpeptide.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://geneticpeptide.com/product/glp-r-vial-2/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://geneticpeptide.com/product-category/preferred-research/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 7.5, + "productClarity": 6, + "trustPresentation": 4.5, + "conversionUx": 6, + "overall": 6.1, + "reasons": [ + "Anonymous Reta cart add succeeded and returned 5 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://geneticpeptide.com/product/glp-r-vial-2/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "Are you over 21 years of age? No Yes Remember me", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://geneticpeptide.com/product/glp-r-vial-2/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://geneticpeptide.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://geneticpeptide.com/product-category/preferred-research/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://geneticpeptide.com/affiliates/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://geneticpeptide.com/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://geneticpeptide.com/refund-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://geneticpeptide.com/shipping-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "getprimelabs.com": { + "domain": "getprimelabs.com", + "canonicalDomain": "getprimelabs.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "B", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://getprimelabs.com/", + "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "https://getprimelabs.com/cart", + "https://getprimelabs.com/checkout", + "https://getprimelabs.com/policies/shipping-policy", + "https://getprimelabs.com/cdn/shop/t/2/assets/component-list-payment.css?v=30056613384317824611767677093", + "https://getprimelabs.com/policies/refund-policy", + "https://getprimelabs.com/policies/terms-of-service" + ], + "platform": { + "name": "Shopify", + "confidence": "high", + "evidenceUrl": "https://getprimelabs.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide 10mg — Triple Receptor Agonist (GLP-1 / GIP / Glucagon) — Research Peptide", + "strengths": [ + "10mg" + ], + "productUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 8826588889226, + "productType": "Shopify product", + "evidenceUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 170.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://getprimelabs.com/policies/shipping-policy" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": 1, + "checkoutPageHttpStatus": null, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://getprimelabs.com/policies/shipping-policy", + "https://getprimelabs.com/policies/refund-policy" + ], + "shippingReturnSnippets": [ + "N JULY BOGO! Buy 1 Semaglutide 5mg, Get 1 FREE • Use Code: SEMABOGO 🎆 Limited Time Only! FREE SHIPPING ON ORDERS $250+ 10,000+ Happy Researchers FAST SAME DAY SHIPPING WHEN ORDERED BY 3PM CST–", + "DERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 BY THOUSANDS OF CUSTOMERS HIGH PURITY PEPTIDES! FREE SHIPPING ON ORDERS $250+ FAST SAME DAY SHIPPING WHEN ORDERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 B", + "DERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 BY THOUSANDS OF CUSTOMERS HIGH PURITY PEPTIDES! FREE SHIPPING ON ORDERS $250+ Home All Products Shop Shop SHOP BY BENEFIT SHOP BY BENEFIT BRAIN HEALTH" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://getprimelabs.com/cart", + "checkoutEvidenceUrl": "https://getprimelabs.com/checkout", + "observedAt": "2026-07-27" + }, + "grade": "B", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://getprimelabs.com/checkout", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://getprimelabs.com/policies/shipping-policy", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 7, + "productClarity": 5.5, + "trustPresentation": 7, + "conversionUx": 6.5, + "overall": 7.2, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA.", + "1 image failed to load." + ], + "observedUrl": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 15.75, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://getprimelabs.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://getprimelabs.com/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://getprimelabs.com/checkout", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://getprimelabs.com/policies/shipping-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://getprimelabs.com/cdn/shop/t/2/assets/component-list-payment.css?v=30056613384317824611767677093", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://getprimelabs.com/policies/refund-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://getprimelabs.com/policies/terms-of-service", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 401 ()", + "Refused to apply style from 'https://getprimelabs.com/products/styles.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled." + ] + }, + "greatestpeptides.com": { + "domain": "greatestpeptides.com", + "canonicalDomain": "greatestpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://greatestpeptides.com/", + "https://greatestpeptides.com/product/retatrutide-40-mg/", + "https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "https://greatestpeptides.com/checkout/", + "https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4", + "https://greatestpeptides.com/wp-content/plugins/payment-gateway-for-authorize-net-for-woocommerce/assets/css/public.css?ver=1.0.18", + "https://greatestpeptides.com/shipping-policy/", + "https://greatestpeptides.com/refund-policy/", + "https://greatestpeptides.com/terms-and-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://greatestpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide 40 mg", + "strengths": [ + "40 mg" + ], + "productUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 18256, + "productType": "simple", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 220.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo" + ], + "evidenceUrls": [ + "https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://greatestpeptides.com/shipping-policy/", + "https://greatestpeptides.com/refund-policy/", + "https://greatestpeptides.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "Product Subtotal Retatrutide 10 mg × 1 $ 220.00 Subtotal $ 220.00 Shipment Free shipping Overnight Shipping: $ 30.00 Total $ 220.00 Credit / Debit Card — Fast & Secure Ch", + "oses described in our privacy policy . Complete Secure Checkout Secure encrypted checkout Free shipping unlocked COA included with every order Research Use Only — Not for human use ©", + "color: #3c4043; } @keyframes easyauthnet-gpay-spin { to { transform: rotate(360deg); } } Shipping Policy - greatestpeptides.com 99%+ purity verified Ships in 24 h from USA Secure card checkout &" + ], + "pluginSignals": [ + "*", + "cookie-law-info", + "klaviyo", + "payment-gateway-for-authorize-net-for-woocommerce", + "pixelyoursite", + "slicewp", + "woo-checkout-field-editor-pro", + "woocommerce", + "woocommerce-gateway-authorize-net-cim" + ] + }, + "payment": { + "methods": [ + { + "name": "authorize_net_cim_credit_card", + "id": "authorize_net_cim_credit_card", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "gp_zelle", + "id": "gp_zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "gp_btc", + "id": "gp_btc", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "gp_eth", + "id": "gp_eth", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "gp_usdt", + "id": "gp_usdt", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "bacs", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Google Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 6, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "authorize_net_cim_credit_card", + "gp_zelle", + "gp_btc", + "gp_eth", + "gp_usdt", + "bacs" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "authorize_net_cim_credit_card", + "gp_zelle", + "gp_btc", + "gp_eth", + "gp_usdt", + "bacs" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://greatestpeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 8, + "productClarity": 10, + "trustPresentation": 7.5, + "conversionUx": 10, + "overall": 8.9, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "1 image failed to load." + ], + "observedUrl": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14.592, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://greatestpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://greatestpeptides.com/product/retatrutide-40-mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://greatestpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://greatestpeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://greatestpeptides.com/wp-content/plugins/payment-gateway-for-authorize-net-for-woocommerce/assets/css/public.css?ver=1.0.18", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://greatestpeptides.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://greatestpeptides.com/refund-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://greatestpeptides.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "heartlandbiolabs.com": { + "domain": "heartlandbiolabs.com", + "canonicalDomain": "heartlandbiolabs.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "B", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://heartlandbiolabs.com/product/retatrutide/", + "https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide", + "https://heartlandbiolabs.com/wp-json/wc/store/v1/cart", + "https://heartlandbiolabs.com/checkout/", + "https://heartlandbiolabs.com/terms-and-conditions/", + "https://heartlandbiolabs.com/shipping-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://heartlandbiolabs.com/product/retatrutide/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://heartlandbiolabs.com/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 247, + "productType": "variable", + "evidenceUrl": "https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 89.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo" + ], + "evidenceUrls": [ + "https://heartlandbiolabs.com/terms-and-conditions/" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://heartlandbiolabs.com/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://heartlandbiolabs.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "Retatrutide Research Peptide | Triple GIP/GLP-1/Glucagon Agonist | Heartland Bio Labs Free shipping $200+ · Order by 2pm CT, ships today from Tulsa, OK · Research Use Only — Not for human c", + "art For Research Use Only. Not for Human Consumption. Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart Home Shop Sea", + "json\\/wc\\/store\\/v1\\/products?related=247&per_page=10\"}]}}] Checkout - Heartland Bio Labs Free shipping $200+ · Order by 2pm CT, ships today from Tulsa, OK · Research Use Only — Not for human c" + ], + "pluginSignals": [ + "*", + "woo-checkout-field-editor-pro", + "woocommerce" + ] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://heartlandbiolabs.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://heartlandbiolabs.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "B", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://heartlandbiolabs.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://heartlandbiolabs.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://heartlandbiolabs.com/terms-and-conditions/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 10, + "conversionUx": 4.5, + "overall": 7.8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible purchase CTA.", + "A blocking overlay or gate covers the mobile viewport: Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart." + ], + "observedUrl": "https://heartlandbiolabs.com/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://heartlandbiolabs.com/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://heartlandbiolabs.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://heartlandbiolabs.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://heartlandbiolabs.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://heartlandbiolabs.com/shipping-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "hydroresearchpeptides.com": { + "domain": "hydroresearchpeptides.com", + "canonicalDomain": "hydroresearchpeptides.com", + "status": { + "listing": "listing_present_not_currently_purchasable", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 403, + "evidenceGrade": "B", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://hydroresearchpeptides.com/product/r40/", + "https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40", + "https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart", + "https://hydroresearchpeptides.com/checkout/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://hydroresearchpeptides.com/product/r40/" + }, + "reta": { + "listingStatus": "listing_present_not_currently_purchasable", + "productName": "H-(R) 40 mg", + "strengths": [ + "40 mg" + ], + "productUrl": "https://hydroresearchpeptides.com/product/r40/", + "inStock": true, + "purchasable": false, + "anonymousCartAdd": false, + "productId": 10037085, + "productType": "simple", + "evidenceUrl": "https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 350", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": null, + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": false, + "technologyStack": [], + "evidenceUrls": [] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://hydroresearchpeptides.com/product/r40/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": false, + "reviewSignal": false, + "ruoNotice": false, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 2.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": 403, + "gates": [], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [], + "pluginSignals": [] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "mgpay", + "mnet_gateway", + "idem", + "mecom_paypal", + "alg_custom_gateway_2", + "my_fingrid_gateway" + ], + "configuredButNotActiveForRetaCart": [ + "mgpay", + "mnet_gateway", + "idem", + "mecom_paypal", + "alg_custom_gateway_2", + "my_fingrid_gateway" + ], + "cartEvidenceUrl": "https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://hydroresearchpeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "D", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://hydroresearchpeptides.com/product/r40/", + "confidence": "high" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8, + "visualPolish": 6, + "productClarity": 2.5, + "trustPresentation": 2.5, + "conversionUx": 4, + "overall": 4.6, + "reasons": [ + "Mobile DOM is missing a clearly visible product heading, price, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://hydroresearchpeptides.com/product/r40/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": false, + "visibleCartCta": false, + "visibleProductImage": false, + "visibleCoaSignal": false, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://hydroresearchpeptides.com/product/r40/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://hydroresearchpeptides.com/checkout/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + ""H-(R) 40 mg" is not available for purchase.", + "Failed to load resource: the server responded with a status of 403 ()" + ] + }, + "ignitepeptides.com": { + "domain": "ignitepeptides.com", + "canonicalDomain": "ignitepeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg", + "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "https://ignitepeptides.com/checkout/", + "https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp", + "https://ignitepeptides.com/affiliate/", + "https://ignitepeptides.com/affiliate-registration/", + "https://ignitepeptides.com/affiliate-login/", + "https://ignitepeptides.com/shipping-and-returns/", + "https://ignitepeptides.com/terms-and-conditions/", + "https://ignitepeptides.com/affiliate-terms-of-use/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3 (RT) 10mg", + "strengths": [ + "10mg" + ], + "productUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 2742, + "productType": "simple", + "evidenceUrl": "https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 75.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp", + "https://ignitepeptides.com/affiliate/", + "https://ignitepeptides.com/affiliate-registration/", + "https://ignitepeptides.com/affiliate-login/", + "https://ignitepeptides.com/affiliate-terms-of-use/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 3.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://ignitepeptides.com/shipping-and-returns/" + ], + "shippingReturnSnippets": [ + "pping & Handling times: USPS Standard Shipping (3-6 Days): Once your order is dispatched, delivery is expected within 3-6 business days. USPS Express Shipping (2-4 Days): Once your order i", + "ithin 3-6 business days. USPS Express Shipping (2-4 Days): Once your order is dispatched, delivery is expected within 2-4 business days. Orders placed on weekends will be shipped on the ne", + "due to the courier. Once a parcel leaves our fulfillment center, USPS has full control of delivery times and there’s nothing we can do about it unfortunately, and we cannot refund the ship" + ], + "pluginSignals": [ + "*", + "advanced-coupons-for-woocommerce", + "advanced-coupons-for-woocommerce-free", + "affiliate-wp", + "age-gate", + "aria-accessibility-toolkit", + "commercegurus-commercekit", + "elementor", + "elementor-pro", + "google-site-kit", + "jet-engine", + "jet-search", + "jet-woo-builder", + "jetpack", + "omnisend-connect", + "peptipay_free", + "pixelyoursite", + "simple-cloudflare-turnstile", + "wc-refund-giftcard", + "woo-discount-rules", + "woo-discount-rules-pro", + "woocommerce", + "wpforms", + "wpforms-user-registration" + ] + }, + "payment": { + "methods": [ + { + "name": "Same-Day Bank Payment", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": "peptipay_venmo", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay securely with Cash App, Google Pay and Apple Pay", + "id": "clkk", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 3, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "peptipay_venmo", + "clkk" + ], + "renderedCheckoutLabels": [ + { + "id": "linkmoney", + "label": "Same-Day Bank Payment" + }, + { + "id": "peptipay_venmo", + "label": "Venmo" + }, + { + "id": "clkk", + "label": "Pay securely with Cash App, Google Pay and Apple Pay" + } + ], + "configuredBeforeCart": [ + "linkmoney", + "peptipay_venmo", + "clkk" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://ignitepeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 8.5, + "productClarity": 9, + "trustPresentation": 3.5, + "conversionUx": 8, + "overall": 7.1, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "Anonymous Reta cart add succeeded and returned 3 active payment methods.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "RESTRICTED RESEARCH PRODUCTS For qualified researchers only. Not for human or veterinary use, diagnosis, treatment, or consumption. Please read and confirm the following statements", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://ignitepeptides.com/product/glp-3-rt-10mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://ignitepeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://ignitepeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/affiliate/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/affiliate-registration/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/affiliate-login/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/shipping-and-returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://ignitepeptides.com/affiliate-terms-of-use/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 404 ()", + "requestStorageAccess: Permission denied." + ] + }, + "labtrustpeptides.com": { + "domain": "labtrustpeptides.com", + "canonicalDomain": "labtrustpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://labtrustpeptides.com/", + "https://labtrustpeptides.com/product/retatrutide/", + "https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://labtrustpeptides.com/wp-json/wc/store/v1/cart", + "https://labtrustpeptides.com/checkout/", + "https://labtrustpeptides.com/shipping-info/", + "https://labtrustpeptides.com/returns/", + "https://labtrustpeptides.com/terms-of-service/", + "https://labtrustpeptides.com/refund-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://labtrustpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide 10mg — Triple Agonist GLP-1/GIP/Glucagon Research Peptide", + "strengths": [ + "10mg" + ], + "productUrl": "https://labtrustpeptides.com/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1937, + "productType": "simple", + "evidenceUrl": "https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 149.99", + "currency": "USD", + "secondaryIndexPricePerMg": "$12.75", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": true, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://labtrustpeptides.com/shipping-info/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager" + ], + "evidenceUrl": "https://labtrustpeptides.com/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides", + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://labtrustpeptides.com/shipping-info/", + "https://labtrustpeptides.com/returns/", + "https://labtrustpeptides.com/refund-policy/" + ], + "shippingReturnSnippets": [ + "ping Info Contact Us FAQS Returns Research Insights legal Privacy Policy Terms of Service Refund Policy Privacy Policy Terms of Service Refund Policy © Labtrustpeptides.com Search Home Products", + "ights legal Privacy Policy Terms of Service Refund Policy Privacy Policy Terms of Service Refund Policy © Labtrustpeptides.com Search Home Products All Products Retatrutide Tirzepatide BPC-157", + "by 15,000+ Researchers \\n Consistent purity. Verified documentation. Reliable cold-chain delivery. \\n \\n 🔥 Must-See Reta Offer · Click to View Home Products All Products Retatrutide Tirz" + ], + "pluginSignals": [ + "*", + "all-in-one-seo-pack", + "elementor", + "elementor-pro", + "fluentform", + "mycryptocheckout", + "safe-svg", + "woo-newsletter-optin", + "woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "bacs", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://labtrustpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "mycryptocheckout", + "id": "mycryptocheckout", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://labtrustpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "bacs", + "mycryptocheckout" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "bacs", + "mycryptocheckout" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://labtrustpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://labtrustpeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://labtrustpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://labtrustpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://labtrustpeptides.com/checkout/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://labtrustpeptides.com/shipping-info/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8, + "visualPolish": 8, + "productClarity": 8.5, + "trustPresentation": 10, + "conversionUx": 8, + "overall": 8.5, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 2 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://labtrustpeptides.com/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 2 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://labtrustpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://labtrustpeptides.com/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://labtrustpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://labtrustpeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://labtrustpeptides.com/shipping-info/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://labtrustpeptides.com/returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://labtrustpeptides.com/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://labtrustpeptides.com/refund-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "lifelinkresearch.com": { + "domain": "lifelinkresearch.com", + "canonicalDomain": "lifelinkresearch.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://lifelinkresearch.com/", + "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "https://lifelinkresearch.com/checkout/", + "https://lifelinkresearch.com/shipping-policy/", + "https://lifelinkresearch.com/refund-and-returns-policy/", + "https://lifelinkresearch.com/terms-condition/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://lifelinkresearch.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide (GLP-3) 20mg", + "strengths": [ + "20mg" + ], + "productUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 12801, + "productType": "simple", + "evidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 200.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": true, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://lifelinkresearch.com/shipping-policy/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Meta Pixel" + ], + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://lifelinkresearch.com/shipping-policy/", + "https://lifelinkresearch.com/refund-and-returns-policy/" + ], + "shippingReturnSnippets": [ + "9%+ Purity | Fast US Shipping Skip to content Order within 21h 2m for same day dispatch | Free shipping on orders $250+ | Free Bacteriostatic Water 30ml with $500+ Purchase Order within --h --m", + "tatic Water 30ml with $500+ Purchase Order within --h --m for same day shipping Mon-Fri • Free shipping on orders $250+ • Free Bacteriostatic Water 30ml with $500+ Purchase Order within --h --m", + "tatic Water 30ml with $500+ Purchase Order within --h --m for same day shipping Mon-Fri • Free shipping on orders $250+ • Free Bacteriostatic Water 30ml with $500+ Purchase Order within 21h 2m" + ], + "pluginSignals": [ + "*", + "address-autocomplete", + "address-validation-and-auto-complete-plugin", + "advanced-woo-search", + "cardsshield-gateway-stripe", + "cart-for-woocommerce", + "checkout-fees-for-woocommerce", + "custom-payment-gateways-woocommerce", + "disclaimer-popup", + "duracelltomi-google-tag-manager", + "elementor", + "elementor-pro", + "flexible-shipping", + "flexible-shipping-ups", + "flexible-shipping-usps", + "funnel-builder", + "funnel-builder-pro", + "gms_plugin_wordpress-2.0.2", + "header-footer-elementor", + "jetpack", + "maxtdesign-role-based-pricing", + "omnisend-connect", + "shippingeasy-for-wp-ecommerce", + "sublium-subscriptions-for-woocommerce", + "woo-cart-abandonment-recovery", + "woo-discount-rules", + "woo-product-bundle", + "woo-variation-swatches", + "woocommerce", + "wp-loyalty-rules" + ] + }, + "payment": { + "methods": [ + { + "name": "mecom_stripe", + "id": "mecom_stripe", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "BTCPay (Get 3% Off on your purchase)", + "id": "amgexpress", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "BTCPay (Get 3% Off on your purchase)", + "id": "btcpaygf_default", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 3, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "mecom_stripe", + "amgexpress", + "btcpaygf_default" + ], + "renderedCheckoutLabels": [ + { + "id": "amgexpress", + "label": "BTCPay (Get 3% Off on your purchase)" + }, + { + "id": "btcpaygf_default", + "label": "BTCPay (Get 3% Off on your purchase)" + } + ], + "configuredBeforeCart": [ + "mecom_stripe", + "amgexpress", + "btcpaygf_default" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://lifelinkresearch.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://lifelinkresearch.com/shipping-policy/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 8, + "productClarity": 10, + "trustPresentation": 7.5, + "conversionUx": 10, + "overall": 8.9, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "1 image failed to load." + ], + "observedUrl": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://lifelinkresearch.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://lifelinkresearch.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://lifelinkresearch.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://lifelinkresearch.com/refund-and-returns-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://lifelinkresearch.com/terms-condition/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "luxaralabs.com": { + "domain": "luxaralabs.com", + "canonicalDomain": "luxaralabs.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://luxaralabs.com/", + "https://luxaralabs.com/product/retatrutide/", + "https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://luxaralabs.com/wp-json/wc/store/v1/cart", + "https://luxaralabs.com/checkout/", + "https://luxaralabs.com/refund_returns/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://luxaralabs.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://luxaralabs.com/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1185, + "productType": "variable", + "evidenceUrl": "https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 90.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Subscription or auto-ship continuity", + "subscriptionDetected": true, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": true, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo", + "GoAffPro" + ], + "evidenceUrls": [ + "https://luxaralabs.com/refund_returns/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager" + ], + "evidenceUrl": "https://luxaralabs.com/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": false, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [], + "shippingReturnEvidenceUrls": [ + "https://luxaralabs.com/refund_returns/" + ], + "shippingReturnSnippets": [ + "eptides, Backed by Science 99%+ Purity. Trusted by those who value precision. Canada-wide delivery in 1-3 days. USA delivery in 3-5 days. Shop Peptides Now Lab Results About Us Research-Fo", + "99%+ Purity. Trusted by those who value precision. Canada-wide delivery in 1-3 days. USA delivery in 3-5 days. Shop Peptides Now Lab Results About Us Research-Focused Canadian Peptide Sup", + "bulk discount on qualified orders of 10+ vials ✓ Ships from Ontario with fast 1 to 3 day delivery across Canada ✓ Secure checkout, discreet packaging, and responsive support At Luxara Lab" + ], + "pluginSignals": [ + "*", + "age-gate", + "ajax-search-for-woocommerce", + "checkout-fees-for-woocommerce", + "duracelltomi-google-tag-manager", + "elementor", + "elementor-pro", + "elementskit-lite", + "essential-addons-for-elementor-lite", + "fluentform", + "klaviyo", + "woo-cart-abandonment-recovery", + "woocommerce", + "woocommerce-side-cart-premium", + "wpforms", + "wt-smart-coupons-for-woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "cheque", + "id": "cheque", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://luxaralabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle - USD payment", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://luxaralabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "cheque", + "bacs" + ], + "renderedCheckoutLabels": [ + { + "id": "bacs", + "label": "Zelle - USD payment" + } + ], + "configuredBeforeCart": [ + "cheque", + "bacs" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://luxaralabs.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://luxaralabs.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://luxaralabs.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://luxaralabs.com/refund_returns/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 7.5, + "productClarity": 6.5, + "trustPresentation": 7.5, + "conversionUx": 6, + "overall": 7.2, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 2 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://luxaralabs.com/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Luxara Research Company Age and Research Use Confirmation You must be at least 21 years old and a research professional to proceed. Do you confirm that you meet these requirements?", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://luxaralabs.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://luxaralabs.com/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://luxaralabs.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://luxaralabs.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://luxaralabs.com/refund_returns/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "milehighcompounds.is": { + "domain": "milehighcompounds.is", + "canonicalDomain": "milehighcompounds.is", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://milehighcompounds.is/product/mhc-3-rt/", + "https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F", + "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt", + "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "https://milehighcompounds.is/checkout/", + "https://milehighcompounds.is/terms-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "MHC-3 RT", + "strengths": [], + "productUrl": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 63515, + "productType": "variation", + "evidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 279.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot", + "GoAffPro" + ], + "evidenceUrls": [ + "https://milehighcompounds.is/terms-conditions/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "TikTok Pixel" + ], + "evidenceUrl": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 3.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "are calculated and collected at checkout — no surprise charges or customs holds at delivery. ✈ International Shipping Notice Orders shipping outside the United States are proc", + "tained or deleted in accordance with the Privacy Policy and applicable law. 6. Shipping & Delivery Orders are typically shipped within 1–2 business days after payment confirmation. Same-da", + "circumstance beyond our reasonable control. Title and risk of loss pass to the buyer upon delivery of the package to the carrier. 7. Refunds & Returns We accept unused, unopened product re" + ], + "pluginSignals": [ + "*", + "back-in-stock-notifier-for-woocommerce", + "bulletinwp-pro", + "cart-for-woocommerce", + "checkout-fees-for-woocommerce", + "elementor", + "facebook-for-woocommerce", + "funnel-builder", + "funnel-builder-pro", + "google-listings-and-ads", + "google-site-kit", + "gtm-server-side", + "js_composer_salient", + "metorik-helper", + "microsoft-advertising-universal-event-tracking-uet", + "omnisend-connect", + "pepreviews-pro", + "salient-core", + "salient-portfolio", + "slicewp", + "tiktok-for-business", + "trustpilot-reviews", + "woo-checkout-field-editor-pro", + "woo-discount-rules", + "woo-discount-rules-pro", + "woocommerce", + "woocommerce-shipping", + "woocommerce-sstg-payments", + "wp-nmi-gateway-pci-woocommerce", + "wpforms-lite" + ] + }, + "payment": { + "methods": [ + { + "name": "Card Number *", + "id": "nmi", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Credit/Debit Card (MASTERCARD)", + "id": "sstg_payments", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Same-Day Bank Payment", + "id": "maef_child_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Same-Day Bank Payment", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "nmi", + "sstg_payments", + "maef_child_gateway", + "linkmoney" + ], + "renderedCheckoutLabels": [ + { + "id": "nmi", + "label": "Card Number *" + }, + { + "id": "sstg_payments", + "label": "Credit/Debit Card (MASTERCARD)" + }, + { + "id": "maef_child_gateway", + "label": "Same-Day Bank Payment" + }, + { + "id": "linkmoney", + "label": "Same-Day Bank Payment" + } + ], + "configuredBeforeCart": [ + "nmi", + "sstg_payments", + "maef_child_gateway", + "linkmoney" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://milehighcompounds.is/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://milehighcompounds.is/terms-conditions/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 7, + "productClarity": 2.5, + "trustPresentation": 3.5, + "conversionUx": 7, + "overall": 5.8, + "reasons": [ + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, price, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": false, + "visibleCartCta": false, + "visibleProductImage": false, + "visibleCoaSignal": false, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://milehighcompounds.is/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://milehighcompounds.is/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://milehighcompounds.is/terms-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "mytidelab.com": { + "domain": "mytidelab.com", + "canonicalDomain": "mytidelab.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://mytidelab.com/", + "https://mytidelab.com/products/retatrutide", + "https://mytidelab.com/fast-shipping-truck-clean.png", + "https://mytidelab.com/affiliate", + "https://mytidelab.com/shipping", + "https://mytidelab.com/terms" + ], + "platform": { + "name": "Next.js", + "confidence": "high", + "evidenceUrl": "https://mytidelab.com/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://mytidelab.com/products/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "MTL-RETA", + "productType": "JSON-LD product", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 99.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Free-shipping threshold", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://mytidelab.com/fast-shipping-truck-clean.png", + "https://mytidelab.com/affiliate" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 9 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://mytidelab.com/fast-shipping-truck-clean.png", + "https://mytidelab.com/shipping" + ], + "shippingReturnSnippets": [ + "he ordering process felt simple. ✓ Verified Mytide Customer Professional from checkout to delivery. ✓ Verified Mytide Customer Exactly what our lab needed. ✓ Verified Mytide Customer COA w", + "mer Simple ordering for our lab. ✓ Verified Mytide Customer Professional from checkout to delivery. ✓ Verified Mytide Customer COA was easy to verify. ✓ Verified Mytide Customer Clean pack", + "Quality Standards Built for clean, reliable research sourcing. Shipping Fast, secure U.S. delivery with careful packaging and tracking on every order. U.S.-Based Fulfillment Domestic opera" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://mytidelab.com/products/retatrutide", + "confidence": "high" + }, + { + "claim": "Free-shipping threshold detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://mytidelab.com/fast-shipping-truck-clean.png", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 9, + "conversionUx": 3, + "overall": 7.5, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible purchase CTA.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://mytidelab.com/products/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Researcher verification Confirm your eligibility before entering this research-use-only site. Mytide Lab sells research peptides exclusively to qualified researchers and laboratori", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://mytidelab.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://mytidelab.com/products/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://mytidelab.com/fast-shipping-truck-clean.png", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://mytidelab.com/affiliate", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://mytidelab.com/shipping", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://mytidelab.com/terms", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "neb.co": { + "domain": "neb.co", + "canonicalDomain": "newbiorx.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://neb.co/", + "https://newbiorx.com/", + "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://newbiorx.com/wp-json/wc/store/v1/cart", + "https://newbiorx.com/checkout/", + "https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free", + "https://newbiorx.com/terms/", + "https://newbiorx.com/shipping-and-payments/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://newbiorx.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "RETATRUTIDE RX MULTIDOSE 16mg PEN", + "strengths": [ + "16mg" + ], + "productUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 11953, + "productType": "simple", + "evidenceUrl": "https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 285.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free", + "https://newbiorx.com/shipping-and-payments/" + ], + "shippingReturnSnippets": [ + "ice \\n Shipping Schedule: Orders placed Thursday–Sunday ship Tuesday for Wednesday delivery. Orders placed Monday–Wednesday ship Thursday for Friday delivery \\n \\n \",\"descript", + "day for Wednesday delivery. Orders placed Monday–Wednesday ship Thursday for Friday delivery \\n \\n \",\"description\":\"\",\"on_sale\":false,\"prices\":{\"price\":\"28500\",\"regular_price\":\"28500", + "t name * Country / Region * United States (US) Street address * Apt, suite, gate code, or delivery instructions (optional) Town / City * State * Select an option… Alabama Alaska Ari" + ], + "pluginSignals": [ + "*", + "age-gate", + "bankful", + "cashapp-gateway-woocommerce", + "checkout-upsell-and-order-bumps", + "conditional-shipping-for-woocommerce", + "duracelltomi-google-tag-manager", + "elementor", + "free-gifts-for-woocommerce", + "google-site-kit", + "hubspot-woocommerce-hpos-compatibility", + "ibs-upsells", + "kb-easter-egg-coupons", + "kb-peptide-auto-content", + "kb-wc-custom-login", + "kb-wc-role-based-product-visibility", + "king-baldwin-elementor", + "mailchimp-for-wp", + "neb-age-gate-tracker", + "neb-lp-tracker", + "newsletter", + "nexteng-sub-site-connector", + "revslider", + "venmo-gateway-woocommerce", + "wc-woopricely", + "woocommerce", + "woocommerce-avatax", + "woocommerce-smart-coupons" + ] + }, + "payment": { + "methods": [ + { + "name": "eCheck- Save 5% off!", + "id": "nexteng_redirect", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://newbiorx.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": "bankful_hosted_gateway", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://newbiorx.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": "venmo_gateway_1", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://newbiorx.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 3, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "nexteng_redirect", + "bankful_hosted_gateway", + "venmo_gateway_1" + ], + "renderedCheckoutLabels": [ + { + "id": "nexteng_redirect", + "label": "eCheck- Save 5% off!" + }, + { + "id": "bankful_hosted_gateway", + "label": "Venmo" + }, + { + "id": "venmo_gateway_1", + "label": "Venmo" + } + ], + "configuredBeforeCart": [ + "nexteng_redirect", + "bankful_hosted_gateway", + "venmo_gateway_1" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://newbiorx.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://newbiorx.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 10, + "conversionUx": 6, + "overall": 8.3, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 3 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Are you over 21 years of age? NO YES Remember me All products on NewBioRx are intended solely for in vitro research and laboratory experimentation. These producsts sold on this web", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://newbiorx.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://newbiorx.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://newbiorx.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://newbiorx.com/terms/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://newbiorx.com/shipping-and-payments/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "northwestpeptides.com": { + "domain": "northwestpeptides.com", + "canonicalDomain": "northwestpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://northwestpeptides.com/product/glp-3/", + "https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3", + "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "https://northwestpeptides.com/checkout/", + "https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "https://northwestpeptides.com/shipping-policy/", + "https://northwestpeptides.com/terms-of-service/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3", + "strengths": [ + "10mg", + "15mg", + "20mg", + "30mg", + "50mg", + "60mg" + ], + "productUrl": "https://northwestpeptides.com/product/glp-3/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 188, + "productType": "variable", + "evidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 109.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://northwestpeptides.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "e accepted through IDEM Pay. Venmo and Zelle are currently our preferred payment methods. Free Shipping on orders $150+ - Free BAC water with every purchase. Home Shop About us Resources Contac", + "bout us Resources Contact us Home Shop About us Resources Contact us Legal Privacy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Privacy Policy Shipping Policy Terms of S", + "acy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Privacy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Contact Us Email: [email protected] Phone" + ], + "pluginSignals": [ + "*", + "affiliate-wp", + "chargx-woocommerce-plugin-main", + "checkout-upsell-and-order-bumps", + "elementor", + "elementor-pro", + "jetpack", + "nwpep-coa-manager", + "omnisend-connect", + "pojo-accessibility", + "upsellwp-mini-cart", + "wc-zelle", + "woocommerce", + "woolentor-addons" + ] + }, + "payment": { + "methods": [ + { + "name": "bacs", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "zelle", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "psifi", + "id": "psifi", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "idem", + "id": "idem", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "bacs", + "zelle", + "psifi", + "idem" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "bacs", + "zelle", + "psifi", + "idem" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://northwestpeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://northwestpeptides.com/product/glp-3/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://northwestpeptides.com/checkout/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 9, + "productClarity": 7, + "trustPresentation": 8.5, + "conversionUx": 8, + "overall": 8.3, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://northwestpeptides.com/product/glp-3/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://northwestpeptides.com/product/glp-3/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://northwestpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://northwestpeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://northwestpeptides.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://northwestpeptides.com/terms-of-service/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 522 ()" + ] + }, + "nosbarbersupply.com": { + "domain": "nosbarbersupply.com", + "canonicalDomain": "nosbarbersupply.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "B", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://nosbarbersupply.com/", + "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "https://nosbarbersupply.com/cart", + "https://nosbarbersupply.com/checkout", + "https://nosbarbersupply.com/policies/shipping-policy", + "https://nosbarbersupply.com/cdn/shop/t/5/assets/component-list-payment.css?v=69253961410771838501765219478", + "https://nosbarbersupply.com/pages/nos-rewards", + "https://nosbarbersupply.com/policies/refund-policy", + "https://nosbarbersupply.com/policies/terms-of-service", + "https://nosbarbersupply.com/policies/subscription-policy" + ], + "platform": { + "name": "Shopify", + "confidence": "high", + "evidenceUrl": "https://nosbarbersupply.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "HOLAS RETATRUTIDE PEPTIDE", + "strengths": [], + "productUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 8684748996696, + "productType": "Shopify product", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 199.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Subscription or auto-ship continuity", + "subscriptionDetected": true, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": false, + "technologyStack": [ + "Klaviyo", + "Judge.me" + ], + "evidenceUrls": [ + "https://nosbarbersupply.com/policies/shipping-policy", + "https://nosbarbersupply.com/pages/nos-rewards", + "https://nosbarbersupply.com/policies/subscription-policy" + ] + }, + "tracking": { + "stack": [ + "Microsoft Clarity" + ], + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": false, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 4.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": 1, + "checkoutPageHttpStatus": null, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://nosbarbersupply.com/policies/shipping-policy", + "https://nosbarbersupply.com/policies/refund-policy" + ], + "shippingReturnSnippets": [ + "Estimated total $0.00 USD Taxes, discounts and shipping calculated at checkout. Check out Free Shipping Order $125+ Direct Distributor 14+ Brands USA Fulfillment & Customer Service Family Owned", + "USA Fulfillment & Customer Service Family Owned & Operated Established 2017 Fully Insured Free Shipping Order $125+ Direct Distributor 14+ Brands USA Fulfillment & Customer Service Family Owned" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "Apple Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "Google Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://nosbarbersupply.com/cart", + "checkoutEvidenceUrl": "https://nosbarbersupply.com/checkout", + "observedAt": "2026-07-27" + }, + "grade": "B", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://nosbarbersupply.com/checkout", + "confidence": "high" + }, + { + "claim": "Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://nosbarbersupply.com/policies/shipping-policy", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 10, + "productClarity": 7.5, + "trustPresentation": 4.5, + "conversionUx": 6.5, + "overall": 7.7, + "reasons": [ + "Mobile DOM is missing a clearly visible purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 15, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://nosbarbersupply.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://nosbarbersupply.com/products/holas-retatrutide-peptide", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://nosbarbersupply.com/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://nosbarbersupply.com/checkout", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/policies/shipping-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/cdn/shop/t/5/assets/component-list-payment.css?v=69253961410771838501765219478", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/pages/nos-rewards", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/policies/refund-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/policies/terms-of-service", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nosbarbersupply.com/policies/subscription-policy", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 401 ()", + "Failed to load resource: the server responded with a status of 404 ()" + ] + }, + "nurevpeptides.com": { + "domain": "nurevpeptides.com", + "canonicalDomain": "nurevpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://nurevpeptides.com/", + "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "https://nurevpeptides.com/cart/", + "https://nurevpeptides.com/shipping-policy/", + "https://nurevpeptides.com/terms/", + "https://nurevpeptides.com/sms-terms/", + "https://nurevpeptides.com/refund-return-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://nurevpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "RETA 30 GLP-3 RT 30 MG", + "strengths": [ + "30 MG" + ], + "productUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1963, + "productType": "simple", + "evidenceUrl": "https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 269.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://nurevpeptides.com/shipping-policy/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel" + ], + "evidenceUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://nurevpeptides.com/shipping-policy/", + "https://nurevpeptides.com/refund-return-policy/" + ], + "shippingReturnSnippets": [ + "ping may experience delays that are outside of our control. While USPS provides estimated delivery timeframes, these timelines are not guaranteed and may vary due to weather, carrier backl", + "and premium fast shipping through FedEx , for those who prefer a faster and more reliable delivery option. If you need your order sooner, we recommend selecting one of the expedited shippi", + "ommitted to providing high-quality research chemicals to the American market. QUICK LINKS Shipping Policy Disclaimer Terms & Conditions Privacy Policy FAQ COA's Indemnity Waiver Agreement SMS Ter" + ], + "pluginSignals": [ + "*", + "addify-refer-a-friend", + "ajax-search-for-woocommerce", + "chatway-live-chat", + "complianz-gdpr", + "custom-payment-gateways-woocommerce", + "edebit-direct-draft-yodlee-gateway", + "elementor", + "elementor-pro", + "elementskit-lite", + "google-site-kit", + "jetpack", + "printful-shipping-for-woocommerce", + "woocommerce", + "woocommerce-side-cart-premium", + "woocommerce-wholesale-lead-capture", + "wp-subscribe-form" + ] + }, + "payment": { + "methods": [ + { + "name": "cod", + "id": "cod", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "cheque", + "id": "cheque", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "edd_draft_yodlee_gateway", + "id": "edd_draft_yodlee_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 3, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "cod", + "cheque", + "edd_draft_yodlee_gateway" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "cheque", + "edd_draft_yodlee_gateway" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://nurevpeptides.com/cart/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://nurevpeptides.com/cart/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://nurevpeptides.com/shipping-policy/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 7.5, + "productClarity": 7, + "trustPresentation": 8, + "conversionUx": 6, + "overall": 7, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 3 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Researcher Verification Our company sells research products exclusively to qualified researchers and laboratories for in vitro and laboratory use. Please confirm before continuing.", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://nurevpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://nurevpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://nurevpeptides.com/cart/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nurevpeptides.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nurevpeptides.com/terms/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nurevpeptides.com/sms-terms/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nurevpeptides.com/refund-return-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "nxtstate.co": { + "domain": "nxtstate.co", + "canonicalDomain": "nxtstate.co", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://nxtstate.co/", + "https://nxtstate.co/product/retatrutide/", + "https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://nxtstate.co/wp-json/wc/store/v1/cart", + "https://nxtstate.co/checkout/", + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css", + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css", + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css", + "https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css", + "https://nxtstate.co/shipping/", + "https://nxtstate.co/refund_returns/", + "https://nxtstate.co/terms-and-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://nxtstate.co/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide", + "strengths": [ + "10mg" + ], + "productUrl": "https://nxtstate.co/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1223, + "productType": "simple", + "evidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 79.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css", + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css", + "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css", + "https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "TikTok Pixel" + ], + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 9 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://nxtstate.co/shipping/", + "https://nxtstate.co/refund_returns/" + ], + "shippingReturnSnippets": [ + "NXTSTATE FREE SHIPPING OVER $200 · ORDERS SHIP IN 24 HRS · THIRD-PARTY LAB TESTED Shop Lab Reports About Contact", + "fied purity 99%+ PURITY High purity peptides you can trust DISCREET SHIPPING Fast, secure delivery to your door RESEARCH USE ONLY For laboratory research purposes Trusted peptides. Proven", + "Your Cart ✕ Add a coupon code APPLY Subtotal $0.00 Shipping calculated at checkout Free shipping on orders over $200 CHECKOUT → Visa & Mastercard accepted · Secure checkout" + ], + "pluginSignals": [ + "*", + "affiliate-wp", + "back-in-stock-notifier-for-woocommerce", + "blocksy-companion", + "embed-pdf-viewer", + "facebook-for-woocommerce", + "google-listings-and-ads", + "ithemeland-free-gifts-for-woocommerce", + "jetpack", + "litespeed-cache", + "mailin", + "momo-venmo", + "mps-gateway", + "optinmonster", + "pixelyoursite", + "tier-pricing-table", + "tiktok-for-woocommerce", + "trustpilot-reviews", + "wc-cashapp", + "wc-zelle", + "wll-loyalty-launcher", + "woo-cart-abandonment-recovery", + "woocommerce", + "wployalty" + ] + }, + "payment": { + "methods": [ + { + "name": "Cardholder Name", + "id": "mps_v_2d_15", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Cash App", + "id": "cashapp", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": "venmo", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "mps_v_2d_15", + "zelle", + "cashapp", + "venmo" + ], + "renderedCheckoutLabels": [ + { + "id": "mps_v_2d_15", + "label": "Cardholder Name" + }, + { + "id": "zelle", + "label": "Zelle" + }, + { + "id": "cashapp", + "label": "Cash App" + }, + { + "id": "venmo", + "label": "Venmo" + } + ], + "configuredBeforeCart": [ + "mps_v_2d_15", + "zelle", + "cashapp", + "venmo" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://nxtstate.co/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://nxtstate.co/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 9, + "conversionUx": 6, + "overall": 8.1, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://nxtstate.co/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "SEARCH SHOP ALL PRODUCTS METABOLIC RECOVERY MIND NASAL ANTI-AGING HAIR LAB SUPPLIES STANDARDS LAB REPORTS ABOUT CONTACT MY ACCOUNT FOR RESEARCH USE ONLY.", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://nxtstate.co/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://nxtstate.co/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://nxtstate.co/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://nxtstate.co/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/shipping/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://nxtstate.co/refund_returns/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 404 ()", + "[OptinMonster] The campaign could not be found. Check to make sure it is active." + ] + }, + "onyxbiolabs.com": { + "domain": "onyxbiolabs.com", + "canonicalDomain": "onyxbiolabs.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://onyxbiolabs.com/", + "https://onyxbiolabs.com/product/retatrutide-peptide/", + "https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "https://onyxbiolabs.com/checkout/", + "https://onyxbiolabs.com/affiliates/", + "https://onyxbiolabs.com/shipping-and-delivery-policy/", + "https://onyxbiolabs.com/return-and-refund-policy/", + "https://onyxbiolabs.com/payment-and-billing-policy/", + "https://onyxbiolabs.com/terms-and-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://onyxbiolabs.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide (Triple Agonist) – >99% Purity", + "strengths": [], + "productUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1108, + "productType": "variable", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 54.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://onyxbiolabs.com/affiliates/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "TikTok Pixel" + ], + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 6.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://onyxbiolabs.com/shipping-and-delivery-policy/", + "https://onyxbiolabs.com/return-and-refund-policy/" + ], + "shippingReturnSnippets": [ + "der Reyes Verified Buyer ★★★★★ Quality of products is great Quality of products is great. Delivery was quick and the package was unharmed or tampered with. The customer service is excellen", + "erified Buyer ★★★★★ Service is amazing Service is amazing! Very fast customer service and delivery. Would purchase again and again. Jasmine Santimaw Verified Buyer ★★★★★ Exactly what I ord", + "ks About Us Why Onyx Biolabs? Peptides for Sale Lab Results Peptide Calculator Shipping & Delivery Return & Refund Policy Payment & Billing Privacy Policy Terms and Conditions Contact Affi" + ], + "pluginSignals": [ + "address-autocomplete-anything", + "advanced-product-fields-for-woocommerce-pro", + "ajax-search-for-woocommerce", + "bytenft-payment-gateway-1.0.16", + "checkout-for-woocommerce", + "debug-log-manager", + "easy-woocommerce-discounts", + "elementor", + "elementor-pro", + "forumpay-crypto-payments", + "getautoseo-ai-content-publisher", + "gtm-server-side", + "jetpack", + "omnisend-connect", + "routeapp", + "tiktok-for-business", + "trustpilot-reviews", + "wc-cashapp", + "wc-cashapp-pro", + "wc-zelle", + "woo-cart-abandonment-recovery", + "woo-coupon-usage", + "woocommerce", + "woocommerce-abandoned-cart", + "woocommerce-back-in-stock-notifications", + "woocommerce-products-filter", + "woocommerce-shipping", + "wp-consent-api", + "wp-loyalty-rules" + ] + }, + "payment": { + "methods": [ + { + "name": "Link Money Bank Payment (5% Additional Discount)", + "id": "tagada", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Link Money Bank Payment (5% Additional Discount)", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Send:", + "id": "cashapp", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle (5% Additional Discount)", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "forumpay", + "id": "forumpay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Cash App", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 5, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "tagada", + "linkmoney", + "cashapp", + "zelle", + "forumpay" + ], + "renderedCheckoutLabels": [ + { + "id": "tagada", + "label": "Link Money Bank Payment (5% Additional Discount)" + }, + { + "id": "linkmoney", + "label": "Link Money Bank Payment (5% Additional Discount)" + }, + { + "id": "cashapp", + "label": "Send:" + }, + { + "id": "zelle", + "label": "Zelle (5% Additional Discount)" + }, + { + "id": "forumpay", + "label": "" + } + ], + "configuredBeforeCart": [ + "tagada", + "linkmoney", + "cashapp", + "zelle", + "forumpay" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://onyxbiolabs.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://onyxbiolabs.com/affiliates/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 9, + "productClarity": 6.5, + "trustPresentation": 6.5, + "conversionUx": 8, + "overall": 7.8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 5 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 15, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://onyxbiolabs.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://onyxbiolabs.com/product/retatrutide-peptide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://onyxbiolabs.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://onyxbiolabs.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxbiolabs.com/affiliates/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxbiolabs.com/shipping-and-delivery-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxbiolabs.com/return-and-refund-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxbiolabs.com/payment-and-billing-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxbiolabs.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR" + ] + }, + "onyxresearch.shop": { + "domain": "onyxresearch.shop", + "canonicalDomain": "onyxresearch.shop", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://onyxresearch.shop/product/glp-3-rt/", + "https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt", + "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "https://onyxresearch.shop/checkout/", + "https://onyxresearch.shop/terms-conditions/", + "https://onyxresearch.shop/shipping/", + "https://onyxresearch.shop/shipping-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://onyxresearch.shop/product/glp-3-rt/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3 RT", + "strengths": [ + "10mg", + "20mg", + "30mg", + "60mg" + ], + "productUrl": "https://onyxresearch.shop/product/glp-3-rt/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 309, + "productType": "variable", + "evidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 78.75", + "currency": "USD", + "secondaryIndexPricePerMg": "$6.57", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/onyx-research", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Loyalty or points retention", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo", + "GoAffPro" + ], + "evidenceUrls": [ + "https://onyxresearch.shop/terms-conditions/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "TikTok Pixel", + "Microsoft Clarity" + ], + "evidenceUrl": "https://onyxresearch.shop/product/glp-3-rt/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/onyx-research", + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://onyxresearch.shop/shipping/", + "https://onyxresearch.shop/shipping-policy/" + ], + "shippingReturnSnippets": [ + "HPLC Form Lyophilized Dispatch Same-day Third-party tested COA on file Same-day dispatch Free shipping over $250 In stock · ships today View certificate of analysis Third-party tested H", + "ty for safe and lawful use. © 2026 Onyx Research. All rights reserved. Terms Privacy Shipping Policy RUO Agreement Your cart 0 Your cart is empty Browse the catalog Added to cart View cart &", + "ty for safe and lawful use. © 2026 Onyx Research. All rights reserved. Terms Privacy Shipping Policy RUO Agreement Your cart 1 GLP-3 RT - 10mg − 1 + $ 105.00 $ 78.75 Sale &mi" + ], + "pluginSignals": [ + "*", + "breeze", + "conditional-extra-fees-for-woocommerce", + "custom-payment-gateways-woocommerce", + "facebook-for-woocommerce", + "google-listings-and-ads", + "jetpack", + "klaviyo", + "omnisend-connect", + "payerurl-crypto-currency-payment-gateway-for-woocommerce", + "routeapp", + "tiktok-for-business", + "truvo-stripe-dropin", + "veylo-pay", + "wll-loyalty-launcher", + "woo-discount-rules", + "woo-discount-rules-pro", + "woocommerce", + "wp-loyalty-rules" + ] + }, + "payment": { + "methods": [ + { + "name": "Credit / Debit Cards", + "id": "truvo_dropin", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)", + "id": "veylo_pay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto (5% Discount)", + "id": "wc_payerurl_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "truvo_dropin", + "veylo_pay", + "linkmoney", + "wc_payerurl_gateway" + ], + "renderedCheckoutLabels": [ + { + "id": "veylo_pay", + "label": "Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)" + }, + { + "id": "linkmoney", + "label": "Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)" + }, + { + "id": "wc_payerurl_gateway", + "label": "Crypto (5% Discount)" + }, + { + "id": "truvo_dropin", + "label": "Credit / Debit Cards" + } + ], + "configuredBeforeCart": [ + "truvo_dropin", + "veylo_pay", + "linkmoney", + "wc_payerurl_gateway" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://onyxresearch.shop/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://onyxresearch.shop/product/glp-3-rt/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://onyxresearch.shop/product/glp-3-rt/", + "confidence": "high" + }, + { + "claim": "Loyalty or points retention detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://onyxresearch.shop/terms-conditions/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 10, + "trustPresentation": 7.5, + "conversionUx": 8, + "overall": 8.3, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "A blocking overlay or gate covers the mobile viewport: RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente." + ], + "observedUrl": "https://onyxresearch.shop/product/glp-3-rt/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://onyxresearch.shop/product/glp-3-rt/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://onyxresearch.shop/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://onyxresearch.shop/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/onyx-research", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxresearch.shop/terms-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxresearch.shop/shipping/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://onyxresearch.shop/shipping-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "optides.com": { + "domain": "optides.com", + "canonicalDomain": "optides.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://optides.com/shop/retatrutide", + "https://optides.com/terms", + "https://optides.com/refunds" + ], + "platform": { + "name": "Next.js", + "confidence": "high", + "evidenceUrl": "https://optides.com/shop/retatrutide" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://optides.com/shop/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "RT10", + "productType": "JSON-LD product", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 82.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://optides.com/terms" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://optides.com/shop/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://optides.com/refunds" + ], + "shippingReturnSnippets": [ + "areers Contact Legal All Policies Privacy Policy Terms of Service Research Use Disclaimer Refund Policy All Optides LLC products are for laboratory research use only — NOT for human or animal u", + "s LLC. All Rights Reserved. Terms of Service | Privacy Policy | Research Use Disclaimer | Refund Policy Email: [public business email omitted] | Phone: [public phone omitted] 0 items $0.00 subtotal View Cart → Vie", + "eptor research. Select size 10mg 20mg 30mg 50mg 60mg $82.99 $95.00 Quantity 1 Add to Cart Ships within 1 business day Ships from US 3rd-party lab tested Discreet packaging 99 % purity verified" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://optides.com/shop/retatrutide", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://optides.com/terms", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 9.5, + "trustPresentation": 8.5, + "conversionUx": 5, + "overall": 7.8, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://optides.com/shop/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://optides.com/shop/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://optides.com/terms", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://optides.com/refunds", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "orionpeptide.com": { + "domain": "orionpeptide.com", + "canonicalDomain": "orionpeptide.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://orionpeptide.com/", + "https://orionpeptide.com/product/retatrutide-10mg/", + "https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "https://orionpeptide.com/checkout/", + "https://orionpeptide.com/affiliates/", + "https://orionpeptide.com/rewards/", + "https://orionpeptide.com/shipping/", + "https://orionpeptide.com/returns/", + "https://orionpeptide.com/terms/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://orionpeptide.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide – 10mg", + "strengths": [ + "10mg", + "5mg", + "15mg", + "20mg", + "30mg", + "12 mg" + ], + "productUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 793, + "productType": "simple", + "evidenceUrl": "https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 80.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo" + ], + "evidenceUrls": [ + "https://orionpeptide.com/affiliates/", + "https://orionpeptide.com/rewards/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "Microsoft Clarity" + ], + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://orionpeptide.com/shipping/", + "https://orionpeptide.com/returns/" + ], + "shippingReturnSnippets": [ + "vernight Option Available) • Same Day Shipping For Orders Placed Before 1PM PST Mon-Sat • Free Shipping On Orders Over $200 🚚 All Orders Shipped Via FedEx 2-Day Air (Overnight Option Available", + "vernight Option Available) • Same Day Shipping For Orders Placed Before 1PM PST Mon-Sat • Free Shipping On Orders Over $200 Products search 0 Products search Home PEPTIDES All Peptides Popular" + ], + "pluginSignals": [ + "*", + "advanced-free-flat-shipping-woocommerce", + "ajax-search-for-woocommerce", + "aurora-heatmap", + "back-in-stock-notifier-for-woocommerce", + "bytenft-payment-gateway-1.0.17", + "checkout-upsell-and-order-bumps", + "cryptopay-woocommerce", + "custom-compare-producs-plugins", + "custom-quick-cart-popup", + "custom-wishlist-plugin", + "dynamic-visibility-for-elementor", + "edebit-direct-draft-yodlee-gateway", + "elementor", + "elementor-pro", + "facebook-for-woocommerce", + "fastest-age-verification", + "forumpay-crypto-payments", + "google-listings-and-ads", + "google-site-kit", + "improved-shipping-insurance", + "notificationx", + "official-facebook-pixel", + "omnisend-connect", + "peptide-mixing-calculator", + "premium-cart-drawer", + "quiklie-payment-gateway-v2", + "sa-for-woocommerce", + "safe-svg", + "solid_affiliate" + ] + }, + "payment": { + "methods": [ + { + "name": "edd_draft_yodlee_gateway", + "id": "edd_draft_yodlee_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "crypto", + "id": "crypto", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "zelle", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + }, + { + "name": "Wire", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 3, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "edd_draft_yodlee_gateway", + "crypto", + "zelle" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "edd_draft_yodlee_gateway", + "crypto", + "zelle" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://orionpeptide.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://orionpeptide.com/affiliates/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 6.5, + "productClarity": 8.5, + "trustPresentation": 7, + "conversionUx": 6, + "overall": 7.1, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 3 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://orionpeptide.com/product/retatrutide-10mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 18, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Your Cart (0) × Your cart is empty Add some peptides to get started Browse Products", + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://orionpeptide.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://orionpeptide.com/product/retatrutide-10mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://orionpeptide.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://orionpeptide.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://orionpeptide.com/affiliates/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://orionpeptide.com/rewards/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://orionpeptide.com/shipping/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://orionpeptide.com/returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://orionpeptide.com/terms/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "pacificresearchpeptides.com": { + "domain": "pacificresearchpeptides.com", + "canonicalDomain": "pacificresearchpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://pacificresearchpeptides.com/", + "https://pacificresearchpeptides.com/product/retatrutide/", + "https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart", + "https://pacificresearchpeptides.com/checkout/", + "https://pacificresearchpeptides.com/shipping/", + "https://pacificresearchpeptides.com/payment-order-support/", + "https://pacificresearchpeptides.com/payment-policy/", + "https://pacificresearchpeptides.com/return-and-refund-policy/", + "https://pacificresearchpeptides.com/terms-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://pacificresearchpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://pacificresearchpeptides.com/product/retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 7127, + "productType": "variable", + "evidenceUrl": "https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 129.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://pacificresearchpeptides.com/shipping/" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://pacificresearchpeptides.com/product/retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://pacificresearchpeptides.com/shipping/", + "https://pacificresearchpeptides.com/return-and-refund-policy/" + ], + "shippingReturnSnippets": [ + "for laboratory research use only. Not for human or animal consumption. 1 Cart reviewed 2 Delivery details 3 Complete payment KMI payment workflow Place the order here. Complete payment se", + "vacy Policy . Agree and enter website I do not agree — leave this website Shipping & Delivery – Pacific Research Peptides Skip to content U.S. fulfillment Complimentary U.S. shi", + "account pricing Pacific Research Peptides Menu Pacific Research Peptides Shipping & Delivery Domestic fulfillment timing, current thresholds, tracking, delivery responsibilities, and" + ], + "pluginSignals": [ + "*", + "woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "KMI Payments", + "id": "kmi_payments", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "kmi_payments" + ], + "renderedCheckoutLabels": [ + { + "id": "kmi_payments", + "label": "KMI Payments" + } + ], + "configuredBeforeCart": [ + "kmi_payments" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://pacificresearchpeptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://pacificresearchpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://pacificresearchpeptides.com/product/retatrutide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://pacificresearchpeptides.com/shipping/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 6.5, + "productClarity": 8.5, + "trustPresentation": 8, + "conversionUx": 6, + "overall": 7.5, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://pacificresearchpeptides.com/product/retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "BEFORE ENTERING Please confirm your eligibility. Pacific Research Peptides supplies products strictly for laboratory research and development. Please acknowledge both statements to", + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://pacificresearchpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://pacificresearchpeptides.com/product/retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://pacificresearchpeptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pacificresearchpeptides.com/shipping/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pacificresearchpeptides.com/payment-order-support/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pacificresearchpeptides.com/payment-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pacificresearchpeptides.com/return-and-refund-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pacificresearchpeptides.com/terms-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "peptalabs.com": { + "domain": "peptalabs.com", + "canonicalDomain": "peptalabs.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://peptalabs.com/peptides/retatrutide-20mg", + "https://peptalabs.com/terms" + ], + "platform": { + "name": "Unknown", + "confidence": "low", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide 20mg", + "strengths": [ + "20mg" + ], + "productUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "PL-012", + "productType": "JSON-LD product", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 138.59", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://peptalabs.com/terms" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "fering ≥99.20% HPLC-verified purity with independent third-party COA documentation and free shipping on all US orders. After Peptide Sciences shut down in March 2026, Pepta Labs is one of th", + "Legal Classification Age & Eligibility Requirements Orders, Pricing & Payment Shipping & Delivery Returns & Refunds Warranty Disclaimer Limitation of Liability Indemnification Intellectua", + "Labs reserves the right to modify or discontinue any promotion at any time. 9. Shipping & Delivery Free standard shipping is included on all domestic (United States) orders. Orders placed" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Cash App", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://peptalabs.com/terms", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 8.5, + "productClarity": 10, + "trustPresentation": 10, + "conversionUx": 5, + "overall": 8.4, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://peptalabs.com/peptides/retatrutide-20mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "PEPTALABS SHOP All Peptides Popular HOT Bundles CATALOG BPC & Thymosin Peptides 4 View all BPC & Thymosin Peptides → BPC-157 10mgPOPULAR $52.79 SS-31 25mg $158.39 TB-500 10mg $62.6", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://peptalabs.com/peptides/retatrutide-20mg", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptalabs.com/terms", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Loading the script 'https://cdn.taboola.com/libtrc/unip/2020006/tfa.js' violates the following Content Security Policy directive: \"script-src 'self' https://cdn.jsdelivr.net https://www.googletagmanager.com 'unsafe-inli…", + "Connecting to 'https://ad.doubleclick.net/ccm/s/collect?auid=1169433018.1785189651>m=45be67o1v9246153897za200zb9243682298zd9243682298xec' violates the following Content Security Policy directive: \"connect-src 'self' h…", + "Fetch API cannot load https://ad.doubleclick.net/ccm/s/collect?auid=1169433018.1785189651>m=45be67o1v9246153897za200zb9243682298zd9243682298xec. Refused to connect because it violates the document's Content Security P…" + ] + }, + "peptara.org": { + "domain": "peptara.org", + "canonicalDomain": "peptara.org", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://peptara.org/", + "https://peptara.org/product/retatrutide", + "https://peptara.org/shipping", + "https://peptara.org/terms" + ], + "platform": { + "name": "Unknown", + "confidence": "low", + "evidenceUrl": "https://peptara.org/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://peptara.org/product/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "retatrutide", + "productType": "JSON-LD product", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 55", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Free-shipping threshold", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://peptara.org/shipping" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://peptara.org/product/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://peptara.org/shipping" + ], + "shippingReturnSnippets": [ + "Batch IDs Each batch is assigned a unique identifier for full traceability from source to delivery. Published COAs Certificates of Analysis are published publicly and linked directly to ea", + "% OFF Buy 3 $ 49.50 15 % OFF Buy 4 + $ 46.75 Research Grade Express Shipping 99%+ Purity Free Shipping $100+ Add to Cart Total: $ 55.00 Earn $ 2.75 back in store credit 5% back on every order", + "plain, unmarked outer packaging to protect product integrity during transit and keep your delivery private. Shipping Method USPS Priority Mail Express All orders are shipped exclusively vi" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://peptara.org/product/retatrutide", + "confidence": "high" + }, + { + "claim": "Free-shipping threshold detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://peptara.org/shipping", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 8.5, + "productClarity": 10, + "trustPresentation": 8.5, + "conversionUx": 5, + "overall": 7.7, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://peptara.org/product/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Your Cart 0 items Add $100.00 to reach the $100 minimum Your cart is empty Browse our research-grade peptides — every batch HPLC-MS verified. Browse Shop", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://peptara.org/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://peptara.org/product/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptara.org/shipping", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptara.org/terms", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "peptidehackers.com": { + "domain": "peptidehackers.com", + "canonicalDomain": "peptidehackers.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://peptidehackers.com/", + "https://www.peptidehackers.com/", + "https://www.peptidehackers.com/products/retatrutide", + "https://www.peptidehackers.com/legal/terms", + "https://www.peptidehackers.com/legal/refund", + "https://www.peptidehackers.com/legal/shipping" + ], + "platform": { + "name": "Unknown", + "confidence": "low", + "evidenceUrl": "https://www.peptidehackers.com/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://www.peptidehackers.com/products/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "PH-RETA-001", + "productType": "JSON-LD product", + "evidenceUrl": "https://www.peptidehackers.com/products/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 100", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://www.peptidehackers.com/legal/terms" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager" + ], + "evidenceUrl": "https://www.peptidehackers.com/products/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 6.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://www.peptidehackers.com/legal/refund", + "https://www.peptidehackers.com/legal/shipping" + ], + "shippingReturnSnippets": [ + "at a $15 flat rate, free on orders over $199, in discreet, insulated packaging. Domestic delivery typically takes 1–3 business days. Can Retatrutide be used on humans or animals? No. Reta", + "GPT © 2026 Peptide Hackers. All rights reserved. Home Shop Stack Rewards Account Refund & Return Policy | Peptide Hackers Skip to content Peptide Hackers Products COA Research Docs Shop Now Log", + "oducts COA Research Documentation Cart Research Dashboard Login Legal Shop Now Refund and Return Policy Effective Date: January 2024 1. Policy Overview Due to the nature of research chemicals a" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "D", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://www.peptidehackers.com/products/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://www.peptidehackers.com/products/retatrutide", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://www.peptidehackers.com/legal/terms", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 10, + "productClarity": 9.5, + "trustPresentation": 6.5, + "conversionUx": 7, + "overall": 8.6, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://www.peptidehackers.com/products/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://www.peptidehackers.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://www.peptidehackers.com/products/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.peptidehackers.com/legal/terms", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.peptidehackers.com/legal/refund", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.peptidehackers.com/legal/shipping", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "peptidescollective.com": { + "domain": "peptidescollective.com", + "canonicalDomain": "peptidescollective.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://peptidescollective.com/product/r/", + "https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r", + "https://peptidescollective.com/wp-json/wc/store/v1/cart", + "https://peptidescollective.com/check-out/", + "https://peptidescollective.com/terms-and-conditions/", + "https://peptidescollective.com/shipping-returns-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://peptidescollective.com/product/r/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3/R", + "strengths": [ + "5mg", + "10mg", + "20mg", + "30mg", + "40mg" + ], + "productUrl": "https://peptidescollective.com/product/r/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 5239, + "productType": "variable", + "evidenceUrl": "https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 49.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://peptidescollective.com/terms-and-conditions/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://peptidescollective.com/product/r/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://peptidescollective.com/shipping-returns-policy/" + ], + "shippingReturnSnippets": [ + "-3/R – Peptides Collective Skip to content Use code: WELCOME30 for 30% off · Free shipping orders above $250 Home Shop Lab Reports FAQs About Contact EN / ES Account 0 Shop Peptide", + "Analysis ↓ For laboratory research use only. Third-Party Tested Batch & Lot Tracking Free Shipping Over $250 Secure Ordering 14-Day Returns Lab results Analytical Verification Each Certifi", + "ptions which are only available for orders placed Monday-Friday before 12pm est. We offer free shipping on all orders over $250. Read all FAQs New researchers 30% off your first order. Use code" + ], + "pluginSignals": [ + "*", + "affiliate-wp", + "cert-reports-mgr", + "coa-pdf-manager", + "elementor", + "elementor-pro", + "gtm-server-side", + "marquee-addons-for-elementor", + "pay-by-bank", + "sitepress-multilingual-cms", + "wapu-auth-social-login", + "woocommerce", + "woocommerce-multilingual" + ] + }, + "payment": { + "methods": [ + { + "name": "Pay By Bank (3% Discount)", + "id": "tagada", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidescollective.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay By Bank (3% Discount)", + "id": "my_fingrid_gateway", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidescollective.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "observedAt": "2026-07-27" + }, + { + "name": "Apple Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "tagada", + "my_fingrid_gateway" + ], + "renderedCheckoutLabels": [ + { + "id": "tagada", + "label": "Pay By Bank (3% Discount)" + }, + { + "id": "my_fingrid_gateway", + "label": "Pay By Bank (3% Discount)" + } + ], + "configuredBeforeCart": [ + "tagada", + "my_fingrid_gateway" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://peptidescollective.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://peptidescollective.com/check-out/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://peptidescollective.com/product/r/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://peptidescollective.com/terms-and-conditions/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 8, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 8, + "overall": 8.2, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 2 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://peptidescollective.com/product/r/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 15.5, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://peptidescollective.com/product/r/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://peptidescollective.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://peptidescollective.com/check-out/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptidescollective.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptidescollective.com/shipping-returns-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "peptidology.co": { + "domain": "peptidology.co", + "canonicalDomain": "peptidology.co", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://peptidology.co/product/g3/", + "https://peptidology.co/wp-json/wc/store/v1/products?slug=g3", + "https://peptidology.co/wp-json/wc/store/v1/cart", + "https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F", + "https://peptidology.co/terms-of-service/", + "https://peptidology.co/shipping-policy/", + "https://peptidology.co/return-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://peptidology.co/product/g3/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP3 (PGL-GIC1)", + "strengths": [], + "productUrl": "https://peptidology.co/product/g3/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 228, + "productType": "variable", + "evidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/products?slug=g3", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 54.99", + "currency": "USD", + "secondaryIndexPricePerMg": "$7.90", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/peptidology", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot", + "GoAffPro" + ], + "evidenceUrls": [ + "https://peptidology.co/terms-of-service/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel" + ], + "evidenceUrl": "https://peptidology.co/product/g3/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/peptidology", + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://peptidology.co/shipping-policy/", + "https://peptidology.co/return-policy/" + ], + "shippingReturnSnippets": [ + "e Competition Competitive Pricing Third-Party Tested Verified COAs Same Day Shipping Fast Delivery Overpriced No Testing or First Party Only Testing Same Day Shipping Fast Delivery Always", + "ng Fast Delivery Overpriced No Testing or First Party Only Testing Same Day Shipping Fast Delivery Always quality-tested, verified with third party COA’s At every step, we prioritize quali", + "Peptidology? Industry Discounts View Certificates of Analysis Search Legal Privacy Policy Shipping Policy Terms of Service Return Policy Contact [public phone omitted] Monday - Friday 9AM - 3PM MST Mailing" + ], + "pluginSignals": [ + "*", + "advanced-coupons-for-woocommerce", + "advanced-coupons-for-woocommerce-free", + "ajax-search-for-woocommerce-premium", + "cart-for-woocommerce", + "easy-product-bundles-for-woocommerce", + "jetpack", + "le-pixel-woo", + "omnisend-connect", + "peptide-coa-manager", + "simple-banner", + "trustpilot-reviews", + "user-registration-pro", + "woo-discount-rules", + "woo-discount-rules-pro", + "woo-variation-swatches", + "woocommerce", + "woocommerce-additional-variation-images", + "woocommerce-pixel-manager", + "wp-marketing-automations", + "zerobounce" + ] + }, + "payment": { + "methods": [ + { + "name": "nmipay", + "id": "nmipay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "linkmoney", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "zelle", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "pep_applepay", + "id": "pep_applepay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidology.co/product/g3/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptidology.co/product/g3/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "nmipay", + "linkmoney", + "zelle", + "pep_applepay" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "nmipay", + "linkmoney", + "zelle", + "pep_applepay" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://peptidology.co/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://peptidology.co/product/g3/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://peptidology.co/product/g3/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://peptidology.co/product/g3/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://peptidology.co/terms-of-service/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 6.5, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 6, + "overall": 7, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://peptidology.co/product/g3/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "", + "brokenImages": 2 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://peptidology.co/product/g3/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://peptidology.co/wp-json/wc/store/v1/products?slug=g3", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://peptidology.co/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/peptidology", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptidology.co/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptidology.co/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptidology.co/return-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "peptira.com": { + "domain": "peptira.com", + "canonicalDomain": "peptira.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "B", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://peptira.com/product/reta3-9/", + "https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9", + "https://peptira.com/wp-json/wc/store/v1/cart", + "https://peptira.com/cart/", + "https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41", + "https://peptira.com/wp-content/plugins/woofunnels-woocommerce-nmi-gateway/lib/skyverge/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=5.2.1", + "https://peptira.com/terms-and-conditions/", + "https://peptira.com/shipping-returns/", + "https://peptira.com/refunds-and-returns-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://peptira.com/product/reta3-9/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "RETA-3 | 30MG", + "strengths": [ + "30MG" + ], + "productUrl": "https://peptira.com/product/reta3-9/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": 121619, + "productType": "simple", + "evidenceUrl": "https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 179.00", + "currency": "USD", + "secondaryIndexPricePerMg": "$4.77", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/peptira", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Batch/COA proof as conversion", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Meta Pixel", + "TikTok Pixel" + ], + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/peptira", + "independentTestCount": 4, + "latestIndexedTest": "9 Jul 2026", + "mobileTrustPresentationScore": 4.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41", + "https://peptira.com/shipping-returns/", + "https://peptira.com/refunds-and-returns-policy/" + ], + "shippingReturnSnippets": [ + "A Library Careers 0 $ 0.00 Legal Research Use Only (RUO) Policy Terms and Conditions Shipping Policy Privacy Policy Refunds and Returns Policy My account Get in touch [public business email omitted] 402", + "issue refunds, or allow order cancellations once an order has been placed, regardless of delivery status. Delivered Packages Once a shipment is marked as “Delivered” by the carrier , resp", + "o the customer. Peptira LLC is not responsible for packages that are lost or stolen after delivery , including theft from porches, mailrooms, front desks, lockers, or other delivery locati" + ], + "pluginSignals": [ + "*", + "age-gate", + "ajax-search-for-woocommerce", + "cart-for-woocommerce", + "duracelltomi-google-tag-manager", + "funnel-builder", + "js_composer_salient", + "link-woocommerce-plugin-gty-main", + "metorik-helper", + "optinmonster", + "peachpay-for-woocommerce", + "peptira-gateway-rotator", + "peptira-hub", + "peptira-pack-selector", + "peptira-research-access-gate-v1.0.7", + "salient-core", + "salient-portfolio", + "salient-social", + "weglot", + "woocommerce", + "woocommerce-back-in-stock-notifications", + "woocommerce-composite-products", + "woocommerce-services", + "woofunnels-woocommerce-nmi-gateway", + "wp-marketing-automations" + ] + }, + "payment": { + "methods": [ + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "nmi3_google_pay", + "nmi3_apple_pay", + "peachpay_nmi_card", + "nmi", + "nmi_gateway_woocommerce_credit_card", + "robust_nmi_gateway", + "linkmoney", + "peachpay_purchase_order" + ], + "configuredButNotActiveForRetaCart": [ + "nmi3_google_pay", + "nmi3_apple_pay", + "peachpay_nmi_card", + "nmi", + "nmi_gateway_woocommerce_credit_card", + "robust_nmi_gateway", + "linkmoney", + "peachpay_purchase_order" + ], + "cartEvidenceUrl": "https://peptira.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://peptira.com/cart/", + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://peptira.com/product/reta3-9/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://peptira.com/cart/", + "confidence": "high" + }, + { + "claim": "Batch/COA proof as conversion detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 5.5, + "productClarity": 2.5, + "trustPresentation": 4.5, + "conversionUx": 2, + "overall": 4.6, + "reasons": [ + "Mobile DOM is missing a clearly visible product heading, price, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://peptira.com/product/reta3-9/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": false, + "visibleCartCta": false, + "visibleProductImage": false, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "In accordance with updated industry regulations, users must log in to access product details and browse our website. Login Register Continue with Google OR Username or email addres", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://peptira.com/product/reta3-9/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://peptira.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://peptira.com/cart/", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/peptira", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptira.com/wp-content/plugins/woofunnels-woocommerce-nmi-gateway/lib/skyverge/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=5.2.1", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptira.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptira.com/shipping-returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://peptira.com/refunds-and-returns-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Please select a variant and pack size from the product page." + ] + }, + "protidehealth.com": { + "domain": "protidehealth.com", + "canonicalDomain": "protidehealth.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://protidehealth.com/product/glp3/", + "https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3", + "https://protidehealth.com/wp-json/wc/store/v1/cart", + "https://protidehealth.com/checkout/", + "https://protidehealth.com/terms-of-service/", + "https://protidehealth.com/return-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://protidehealth.com/product/glp3/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3", + "strengths": [ + "10mg", + "100mg", + "20mg", + "24mg", + "30mg", + "40mg", + "50mg" + ], + "productUrl": "https://protidehealth.com/product/glp3/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 19451, + "productType": "variable", + "evidenceUrl": "https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 145.00", + "currency": "USD", + "secondaryIndexPricePerMg": "$14.50", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/protide-health", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://protidehealth.com/terms-of-service/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager" + ], + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/protide-health", + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://protidehealth.com/return-policy/" + ], + "shippingReturnSnippets": [ + "mg 100mg Choose an option 10mg 20mg 30mg 40mg 50mg 100mg Clear GLP-3 quantity Add to cart Free shipping on orders over $199! Done 99% Purity (HPLC-MS Verified) Done Independent Third-Party Test", + "as your package ships, you will receive an email with your tracking number and estimated delivery date. What if I have questions about a compound? Our USA-based support team is here to he", + "earch Shipping & Returns Terms of Service Privacy Policy Shipping Details 2-3 Day US Delivery Free shipping over $199 Mon – Fri / Except Holidays Orders after 12 PM PST ship next day." + ], + "pluginSignals": [ + "*", + "ajax-search-for-woocommerce-premium", + "back-in-stock-notifier-for-woocommerce", + "fluid-checkout", + "fluid-checkout-pro.off", + "kadence-blocks", + "kadence-conversions", + "kadence-pro", + "kadence-shop-kit", + "mailin", + "woocommerce", + "woocommerce-checkout-field-editor-pro", + "woocommerce-product-bundles", + "woonmipay", + "wp-rocket", + "yith-woocommerce-ajax-product-filter-premium" + ] + }, + "payment": { + "methods": [ + { + "name": "nmipay", + "id": "nmipay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://protidehealth.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "nmipay" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "nmipay" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://protidehealth.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://protidehealth.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://protidehealth.com/product/glp3/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://protidehealth.com/checkout/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://protidehealth.com/terms-of-service/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 10, + "conversionUx": 6, + "overall": 7.9, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://protidehealth.com/product/glp3/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Sign In Required Sign in to access our full catalog of 50+ research peptides and third-party COAs. New to Protide Health? Register your free account here. Email or Username Passwor", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://protidehealth.com/product/glp3/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://protidehealth.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://protidehealth.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/protide-health", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://protidehealth.com/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://protidehealth.com/return-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "pspeptides.com": { + "domain": "pspeptides.com", + "canonicalDomain": "pspeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://pspeptides.com/", + "https://pspeptides.com/product/buy-retatrutide/", + "https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://pspeptides.com/wp-json/wc/store/v1/cart", + "https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w", + "https://pspeptides.com/affiliate-registration/", + "https://pspeptides.com/terms/", + "https://pspeptides.com/peptide-payment-options/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://pspeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide (1 Vial)", + "strengths": [ + "5mg", + "10mg", + "20mg", + "30mg", + "12mg", + "9mg", + "2mg", + "4mg" + ], + "productUrl": "https://pspeptides.com/product/buy-retatrutide/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 115, + "productType": "variable", + "evidenceUrl": "https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 39.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://pspeptides.com/affiliate-registration/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Microsoft Clarity" + ], + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "Buy Peptides | US Made, 99%+ Purity | PSPeptides Free Shipping On Any Order | Free UPS 2nd Day Air Shipping On Orders Over $200 | Code 5OFF for 5% Off D", + "ers Over $200 | Code 5OFF for 5% Off Dismiss Great news — we now ship to your country ! | Free Shipping On Orders Over $200 | Code 5OFF for 5% Off Dismiss PSPeptides ™ Home Shop Certifica", + "ion was excellent, even late at night.\" D Dulcidio Gonzalez Verified on Trustpilot \"Quick delivery, quality product and great customer service! I ordered from a few companies and this was" + ], + "pluginSignals": [ + "*", + "cart-for-woocommerce", + "google-listings-and-ads", + "google-site-kit", + "jetpack", + "reddit-for-woocommerce", + "retainful", + "starter-affiliates", + "woocommerce", + "woocommerce-google-analytics-integration", + "wp-marketing-automations" + ] + }, + "payment": { + "methods": [ + { + "name": "pay_with_affirm_shopify", + "id": "pay_with_affirm_shopify", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://pspeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Apple Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Google Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "pay_with_affirm_shopify" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "pay_with_affirm_shopify" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://pspeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://pspeptides.com/product/buy-retatrutide/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://pspeptides.com/affiliate-registration/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 6.5, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 6, + "overall": 7.4, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://pspeptides.com/product/buy-retatrutide/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "PSPeptides™ Home Shop Certifications Blog Contact Order Tracking", + "brokenImages": 2 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://pspeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://pspeptides.com/product/buy-retatrutide/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://pspeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pspeptides.com/affiliate-registration/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pspeptides.com/terms/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://pspeptides.com/peptide-payment-options/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Access to XMLHttpRequest at 'https://mktg.pspeptides.com/mtc/event' from origin 'https://pspeptides.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Contr…", + "Failed to load resource: net::ERR_FAILED" + ] + }, + "quantapeptides.com": { + "domain": "quantapeptides.com", + "canonicalDomain": "quantapeptides.com", + "status": { + "listing": "listing_present_not_currently_purchasable", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "D", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://quantapeptides.com/", + "https://www.quantapeptides.com/", + "https://www.quantapeptides.com/shop/retatrutide-10mg", + "https://www.quantapeptides.com/shipping", + "https://www.quantapeptides.com/returns", + "https://www.quantapeptides.com/terms" + ], + "platform": { + "name": "Next.js", + "confidence": "high", + "evidenceUrl": "https://www.quantapeptides.com/" + }, + "reta": { + "listingStatus": "listing_present_not_currently_purchasable", + "productName": "Retatrutide (10mg)", + "strengths": [ + "10mg" + ], + "productUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "inStock": false, + "purchasable": false, + "anonymousCartAdd": false, + "productId": "PEP-007-10MG", + "productType": "JSON-LD product", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 144.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Quantity or volume discount", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": true, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://www.quantapeptides.com/shipping" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 6.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://www.quantapeptides.com/shipping", + "https://www.quantapeptides.com/returns" + ], + "shippingReturnSnippets": [ + "ry held in the USA · no 3-week delays ≥99% Purity HPLC + Mass Spec · documented per batch Free shipping over $250 Same-day dispatch before 12pm ET GMP Compliant Good Manufacturing Practice stan", + "al facilities. Quick Links Shop All Peptides Blog FAQ About Us Request Product Contact Us Shipping Policy Returns & Refunds Contact Address Wilmington , DE 19801 USA Phone [public phone omitted] Email", + "rcard Amex Discover ACH / Bank Transfer © 2026 Quanta Peptides LLC . All rights reserved. Shipping Policy Returns & Refunds Privacy Policy Terms of Service Legal Disclaimer Buy Retatrutide 10mg (" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "confidence": "high" + }, + { + "claim": "Quantity or volume discount detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://www.quantapeptides.com/shipping", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 6.5, + "conversionUx": 3, + "overall": 6.8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible purchase CTA.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Your cart Your cart is empty Add some research compounds to get started. Browse Products", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://www.quantapeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://www.quantapeptides.com/shop/retatrutide-10mg", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.quantapeptides.com/shipping", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.quantapeptides.com/returns", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.quantapeptides.com/terms", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "realpeptides.co": { + "domain": "realpeptides.co", + "canonicalDomain": "realpeptides.co", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://www.realpeptides.co/products/trinity-x/", + "https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x", + "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "https://www.realpeptides.co/checkout/", + "https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2", + "https://www.realpeptides.co/affiliate-registration/", + "https://www.realpeptides.co/affiliate-login/", + "https://www.realpeptides.co/affiliate-area/", + "https://www.realpeptides.co/refund-return-chargeback-policy/", + "https://www.realpeptides.co/shipping-policy/", + "https://www.realpeptides.co/terms-of-service/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://www.realpeptides.co/products/trinity-x/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide (Trinity-X)", + "strengths": [], + "productUrl": "https://www.realpeptides.co/products/trinity-x/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 419, + "productType": "variable", + "evidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 130.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "https://www.realpeptides.co/affiliate-registration/", + "https://www.realpeptides.co/affiliate-login/", + "https://www.realpeptides.co/affiliate-area/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "Triple Whale" + ], + "evidenceUrl": "https://www.realpeptides.co/products/trinity-x/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 6.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2", + "https://www.realpeptides.co/refund-return-chargeback-policy/", + "https://www.realpeptides.co/shipping-policy/" + ], + "shippingReturnSnippets": [ + "l purposes only, and are not for human consumption. © 2026 Real Peptides®. Privacy policy Refund policy Shiping policy Terms & Conditions Contact information Join Waitlist We will inform you wh", + "Real Peptides products are RUO materials, not intended for human or veterinary use. Post-delivery preparation (including reconstitution, solvent use, sterile technique, storage, and handl" + ], + "pluginSignals": [ + "*", + "affiliate-wp", + "elementor", + "elementor-pro", + "essential-addons-for-elementor-lite", + "facebook-for-woocommerce", + "flexible-shipping", + "fluentform", + "google-listings-and-ads", + "header-footer-elementor", + "hyros-tracking", + "nowpayments-for-woocommerce", + "official-facebook-pixel", + "omnisend-connect", + "quiz-maker", + "quiz-maker-woocommerce", + "royal-elementor-addons", + "rp-shipping-protection", + "triple-whale", + "trustpilot-reviews", + "unlimited-elements-for-elementor", + "waitlist-woocommerce", + "woo-checkout-field-editor-pro", + "woo-discount-rules", + "woo-discount-rules-pro", + "woocommerce", + "woocommerce-google-analytics-integration", + "wp-nmi-gateway-pci-woocommerce", + "wt-smart-coupons-for-woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "Same-Day Bank Payment (Save 10%)", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay with Crypto", + "id": "tagada", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay with Crypto", + "id": "cryptopay", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Card Number *", + "id": "nmi", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "tagada", + "cryptopay", + "nmi" + ], + "renderedCheckoutLabels": [ + { + "id": "linkmoney", + "label": "Same-Day Bank Payment (Save 10%)" + }, + { + "id": "tagada", + "label": "Pay with Crypto" + }, + { + "id": "cryptopay", + "label": "Pay with Crypto" + }, + { + "id": "nmi", + "label": "Card Number *" + } + ], + "configuredBeforeCart": [ + "linkmoney", + "tagada", + "cryptopay", + "nmi" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://www.realpeptides.co/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://www.realpeptides.co/products/trinity-x/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://www.realpeptides.co/products/trinity-x/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://www.realpeptides.co/products/trinity-x/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 7, + "productClarity": 7, + "trustPresentation": 6.5, + "conversionUx": 8, + "overall": 7.7, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://www.realpeptides.co/products/trinity-x/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 1 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://www.realpeptides.co/products/trinity-x/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://www.realpeptides.co/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://www.realpeptides.co/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/affiliate-registration/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/affiliate-login/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/affiliate-area/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/refund-return-chargeback-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.realpeptides.co/terms-of-service/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "regentide.net": { + "domain": "regentide.net", + "canonicalDomain": "regentide.net", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://regentide.net/", + "https://regentide.net/product/retatrutide-30mg/", + "https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://regentide.net/wp-json/wc/store/v1/cart", + "https://regentide.net/checkout/", + "https://regentide.net/shipping/", + "https://regentide.net/terms-and-conditions/", + "https://regentide.net/refund_policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://regentide.net/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide 30mg", + "strengths": [ + "30mg", + "10mg", + "20mg" + ], + "productUrl": "https://regentide.net/product/retatrutide-30mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 3586, + "productType": "simple", + "evidenceUrl": "https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 375.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://regentide.net/shipping/" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://regentide.net/product/retatrutide-30mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 8 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://regentide.net/shipping/", + "https://regentide.net/refund_policy/" + ], + "shippingReturnSnippets": [ + "otected checkout, fast fulfillment, and discreet packaging for qualified research orders. Free shipping available on orders over $150 REGENTIDE™ CURATED CATALOG Regentide Signature Collection R", + "is received. All shipments are handled exclusively via UPS 2-Day Air to ensure consistent delivery standards. Orders placed before 1 PM ET (Monday to Friday) are typically shipped the same", + "and professional from start to finish. What truly stood out was the exceptional speed of delivery my package arrived much sooner than expected. The quality of the research materials excee" + ], + "pluginSignals": [ + "*", + "elementor", + "elementor-pro", + "quiklie-payment-gateway-v2", + "woocommerce", + "wp-rocket" + ] + }, + "payment": { + "methods": [ + { + "name": "Pay with Credit/Debit Card", + "id": "quiklie", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://regentide.net/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Cash App — 10% Automatic Discount (Manual Verification)", + "id": "regentide_cashapp_qr", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://regentide.net/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": "regentide_zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://regentide.net/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Wise ACH / Wise Balance — Manual Verification", + "id": "regentide_wise_ach_manual", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://regentide.net/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "quiklie", + "regentide_cashapp_qr", + "regentide_zelle", + "regentide_wise_ach_manual" + ], + "renderedCheckoutLabels": [ + { + "id": "quiklie", + "label": "Pay with Credit/Debit Card" + }, + { + "id": "regentide_cashapp_qr", + "label": "Cash App — 10% Automatic Discount (Manual Verification)" + }, + { + "id": "regentide_zelle", + "label": "Zelle" + }, + { + "id": "regentide_wise_ach_manual", + "label": "Wise ACH / Wise Balance — Manual Verification" + } + ], + "configuredBeforeCart": [ + "quiklie", + "regentide_cashapp_qr", + "regentide_zelle", + "regentide_wise_ach_manual" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://regentide.net/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://regentide.net/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://regentide.net/product/retatrutide-30mg/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://regentide.net/product/retatrutide-30mg/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://regentide.net/shipping/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8, + "visualPolish": 9, + "productClarity": 7, + "trustPresentation": 8, + "conversionUx": 8, + "overall": 8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://regentide.net/product/retatrutide-30mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://regentide.net/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://regentide.net/product/retatrutide-30mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://regentide.net/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://regentide.net/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://regentide.net/shipping/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://regentide.net/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://regentide.net/refund_policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "researchchemhq.co": { + "domain": "researchchemhq.co", + "canonicalDomain": "researchchemhq.co", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://researchchemhq.co/product/rc-3r/", + "https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r", + "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "https://researchchemhq.co/", + "https://researchchemhq.co/terms-of-service-agreement/", + "https://researchchemhq.co/shipping-policy/", + "https://researchchemhq.co/refund-return-policy/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "RC-3R (RETA) | 2 Sizes", + "strengths": [], + "productUrl": "https://researchchemhq.co/product/rc-3r/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 5025, + "productType": "variable", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 119.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": true, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot", + "GoAffPro" + ], + "evidenceUrls": [ + "https://researchchemhq.co/terms-of-service-agreement/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Microsoft Clarity" + ], + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 10 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://researchchemhq.co/shipping-policy/", + "https://researchchemhq.co/refund-return-policy/" + ], + "shippingReturnSnippets": [ + "ceptance , RCHQ will issue $20 in loyalty points to your customer account, subject to our shipping policy terms. Please note that delivery timelines may vary due to carrier volume, weather, holid", + "y points to your customer account, subject to our shipping policy terms. Please note that delivery timelines may vary due to carrier volume, weather, holidays, destination, failed delivery", + "delivery timelines may vary due to carrier volume, weather, holidays, destination, failed delivery attempts, address issues, or other delays outside of RCHQ’s control. For more information" + ], + "pluginSignals": [ + "*", + "auxin-elements", + "auxin-pro-tools", + "cart-for-woocommerce", + "customer-reviews-woocommerce", + "duracelltomi-google-tag-manager", + "elementor", + "elementor-pro", + "funnel-builder", + "google-site-kit", + "gravityforms", + "omnisend", + "omnisend-connect", + "user-registration", + "wll-loyalty-launcher", + "woo-discount-rules", + "woo-discount-rules-pro", + "woocommerce", + "woocommerce-product-stock-alert", + "wp-loyalty-rules", + "wp-rocket" + ] + }, + "payment": { + "methods": [ + { + "name": "linkmoney", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "noramp_platform", + "id": "noramp_platform", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "mecom_paypal", + "id": "mecom_paypal", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "idem", + "id": "idem", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "pipepay", + "id": "pipepay", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "id": "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "Apple Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "Venmo", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 6, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "noramp_platform", + "mecom_paypal", + "idem", + "pipepay", + "paygatedotto-instant-payment-gateway-hostedpaygatedotto" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "linkmoney", + "noramp_platform", + "mecom_paypal", + "idem", + "pipepay", + "paygatedotto-instant-payment-gateway-hostedpaygatedotto" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://researchchemhq.co/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://researchchemhq.co/product/rc-3r/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://researchchemhq.co/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://researchchemhq.co/terms-of-service-agreement/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 10, + "productClarity": 8, + "trustPresentation": 10, + "conversionUx": 8, + "overall": 9.2, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 6 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://researchchemhq.co/product/rc-3r/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16.0016, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://researchchemhq.co/product/rc-3r/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://researchchemhq.co/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://researchchemhq.co/terms-of-service-agreement/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://researchchemhq.co/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://researchchemhq.co/refund-return-policy/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "riptidewellness.com": { + "domain": "riptidewellness.com", + "canonicalDomain": "riptidewellness.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://riptidewellness.com/product/glp3-r/", + "https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r", + "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "https://riptidewellness.com/checkout/", + "https://riptidewellness.com/terms-and-conditions/", + "https://riptidewellness.com/refund_returns/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://riptidewellness.com/product/glp3-r/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP3-R", + "strengths": [], + "productUrl": "https://riptidewellness.com/product/glp3-r/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1484, + "productType": "variable", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 109.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://riptidewellness.com/terms-and-conditions/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Meta Pixel", + "TikTok Pixel" + ], + "evidenceUrl": "https://riptidewellness.com/product/glp3-r/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://riptidewellness.com/refund_returns/" + ], + "shippingReturnSnippets": [ + "s Contact $ 0.00 0 Cart $ 0.00 0 Cart Tested in the USA >99% Purity In Stock — Ships Within 24h GLP3-R All Riptide Wellness products are t hird party tested in USA clinical labs to", + ";289.99 Weight Choose an option 10mg 20mg 30mg 50mg Clear - GLP3-R quantity + Add to cart Free shipping on orders over $150 99% purity — third-party verified Exceptional research support Certif", + "emap Home Our Shop About Us Contact Customer My Account Privacy Policy Terms & Conditions Return Policy RIPTIDE WELLNESS offers products solely for research and development purposes, not for hu" + ], + "pluginSignals": [ + "*", + "age-gate", + "buy-one-get-one-free", + "bytenft-payment-gateway-1.0.10", + "cashenvoy-payment-gateway", + "circoflows-payment", + "dfinsell-payment-gateway-1.1.5", + "edebit-direct-draft-plaid-gateway", + "edebit-direct-draft-yodlee-gateway", + "elementor", + "elementor-pro", + "gtm-server-side", + "insta-onramp-checkout8.ugotcryptoed-instant-payout-version-1.5", + "jetpack", + "omnisend-connect", + "payment-gateway-rotator-v2.7.17", + "pixelyoursite", + "tiktok-for-business", + "woo-product-bundle", + "woocommerce", + "woocommerce-product-stock-alert", + "wt-smart-coupons-for-woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "Credit / Debit Card", + "id": "maef_child_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Card Number *", + "id": "circoflows", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Credit Cards, Bank Transfer & Wallet", + "id": "dfinsell", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Bank Transfer", + "id": "edd_draft_yodlee_gateway", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Bank Transfer", + "id": "cashenvoy", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 5, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "maef_child_gateway", + "circoflows", + "dfinsell", + "edd_draft_yodlee_gateway", + "cashenvoy" + ], + "renderedCheckoutLabels": [ + { + "id": "maef_child_gateway", + "label": "Credit / Debit Card" + }, + { + "id": "circoflows", + "label": "Card Number *" + }, + { + "id": "dfinsell", + "label": "Credit Cards, Bank Transfer & Wallet" + }, + { + "id": "cashenvoy", + "label": "Bank Transfer" + }, + { + "id": "edd_draft_yodlee_gateway", + "label": "Bank Transfer" + } + ], + "configuredBeforeCart": [ + "maef_child_gateway", + "circoflows", + "dfinsell", + "edd_draft_yodlee_gateway", + "cashenvoy" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://riptidewellness.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://riptidewellness.com/product/glp3-r/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://riptidewellness.com/product/glp3-r/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://riptidewellness.com/terms-and-conditions/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 6, + "overall": 7.6, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 5 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://riptidewellness.com/product/glp3-r/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Are you over 21 years of age? Yes No Remember me", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://riptidewellness.com/product/glp3-r/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://riptidewellness.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://riptidewellness.com/terms-and-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://riptidewellness.com/refund_returns/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ] + }, + "rivnpeptides.com": { + "domain": "rivnpeptides.com", + "canonicalDomain": "rivnpeptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://rivnpeptides.com/", + "https://rivnpeptides.com/product/reta/", + "https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F", + "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877", + "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/now-payment.css?ver=1784922877", + "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/crypto-widgets.css?ver=1784922877", + "https://rivnpeptides.com/shipping-policy/", + "https://rivnpeptides.com/terms-conditions/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://rivnpeptides.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3: RETA (Retatrutide) Research Peptide", + "strengths": [], + "productUrl": "https://rivnpeptides.com/product/reta/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 740, + "productType": "variable", + "evidenceUrl": "https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 99.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Trustpilot" + ], + "evidenceUrls": [ + "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://rivnpeptides.com/product/reta/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 9 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://rivnpeptides.com/shipping-policy/" + ], + "shippingReturnSnippets": [ + "m Research Peptides | 99%+ Purity Skip to content FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURC", + "BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURC", + "BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE & FREE SHIPPING OVER $150 Avail Now Home Shop COA" + ], + "pluginSignals": [ + "*", + "ajax-search-for-woocommerce", + "astra-sites", + "checkout-for-woocommerce", + "custom-payment-gateways-for-woocommerce-pro", + "duracelltomi-google-tag-manager", + "dynamic-ajax-product-filters-for-woocommerce", + "easy-sale-badges-for-woocommerce", + "easy-sale-badges-for-woocommerce-pro", + "elementor", + "elementor-pro", + "elementskit-lite", + "essential-addons-for-elementor-lite", + "google-listings-and-ads", + "gtm-server-side", + "hostinger-reach", + "jetpack", + "metasync", + "metorik-helper", + "nowpayments-for-woocommerce-premium", + "omnisend-connect", + "suretriggers", + "trustpilot-reviews", + "upsell-order-bump-offer-for-woocommerce", + "woo-custom-my-account-page", + "woo-discount-rules", + "woocommerce", + "woocommerce-side-cart-premium", + "wow-carousel-for-divi-lite", + "wp-nmi-gateway-pci-woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "nmi", + "id": "nmi", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "mecom_paypal", + "id": "mecom_paypal", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://rivnpeptides.com/product/reta/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "nmi", + "mecom_paypal" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "nmi", + "mecom_paypal" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://rivnpeptides.com/product/reta/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://rivnpeptides.com/product/reta/", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://rivnpeptides.com/product/reta/", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8, + "trustPresentation": 9, + "conversionUx": 6, + "overall": 7.8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 2 active payment methods.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://rivnpeptides.com/product/reta/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14.7751, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Home Shop COA’s Contact About X", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://rivnpeptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://rivnpeptides.com/product/reta/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/now-payment.css?ver=1784922877", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/crypto-widgets.css?ver=1784922877", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://rivnpeptides.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://rivnpeptides.com/terms-conditions/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: net::ERR_NAME_NOT_RESOLVED" + ] + }, + "royal-peptides.com": { + "domain": "royal-peptides.com", + "canonicalDomain": "royal-peptides.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://royal-peptides.com/shop/retatrutide-vial/", + "https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial", + "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "https://royal-peptides.com/checkout/", + "https://royal-peptides.com/shipping-returns/", + "https://royal-peptides.com/terms-of-service/", + "https://royal-peptides.com/affiliates/", + "https://royal-peptides.com/wp-content/plugins/custom-payment-gateways-woocommerce/build/style-index.css?ver=236eb729738f64b534be" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide Single Vial", + "strengths": [], + "productUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 832, + "productType": "variable", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 55.00", + "currency": "USD", + "secondaryIndexPricePerMg": "$2.77", + "secondaryIndexUrl": "https://www.finnrick.com/products/retatrutide/vendors/royal-peptides", + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": false, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": true, + "quantityDiscountDetected": true, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://royal-peptides.com/shipping-returns/", + "https://royal-peptides.com/affiliates/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": "https://www.finnrick.com/products/retatrutide/vendors/royal-peptides", + "independentTestCount": 15, + "latestIndexedTest": "1 Jul 2026", + "mobileTrustPresentationScore": 9 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://royal-peptides.com/shipping-returns/" + ], + "shippingReturnSnippets": [ + "tides® Bacteriostatic Water or genuine Hospira® / Pfizer® BAC Water. Check Mark Estimated Delivery : Up to 4 business days Check Mark Free Shipping : On all orders over $300 Check Mark 3rd", + "ra® / Pfizer® BAC Water. Check Mark Estimated Delivery : Up to 4 business days Check Mark Free Shipping : On all orders over $300 Check Mark 3rd Party Tested Premium Peptides : 99% Purity Visa", + "hone * Order notes (optional) Your order Congratulations! Your order is eligible for FREE Delivery. Your order Product Subtotal 1 Retatrutide Single Vial - 60mg $ 330 × 1 $" + ], + "pluginSignals": [ + "*", + "advanced-coupons-for-woocommerce-free", + "ajax-search-for-woocommerce", + "back-in-stock-notifier-for-woocommerce", + "cart-for-woocommerce", + "checkout-fees-for-woocommerce", + "contact-form-7", + "crypto-payment-gateway", + "custom-payment-gateways-woocommerce", + "elementor", + "elementor-pro", + "essential-addons-for-elementor-lite", + "funnel-builder-pro", + "google-analytics-for-wordpress", + "google-site-kit", + "header-footer-elementor", + "instant-approval-payment-gateway", + "omnisend", + "omnisend-connect", + "pixelyoursite", + "quiklie-payment-gateway-v2", + "simple-cloudflare-turnstile", + "templatemela-core", + "wc-product-table-lite", + "woo-cart-abandonment-recovery", + "woo-smart-quick-view", + "woo-variation-swatches", + "woocommerce", + "yith-infinite-scrolling" + ] + }, + "payment": { + "methods": [ + { + "name": "Pay by USA Bank -Secure Instant Transfer", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Credit | Debit | ApplePay | Paypal", + "id": "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "CashApp/ Venmo- *BITCOIN Payment Only*", + "id": "alg_custom_gateway_1", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "TransferWise / ACH / Wire Transfer", + "id": "bacs", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Bitcoin", + "id": "paygatedotto-crypto-payment-gateway-dynamic", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Visa", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "Mastercard", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "American Express", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "Discover", + "id": null, + "layer": "card brand", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "Apple Pay", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 5, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "alg_custom_gateway_1", + "bacs", + "paygatedotto-crypto-payment-gateway-dynamic" + ], + "renderedCheckoutLabels": [ + { + "id": "linkmoney", + "label": "Pay by USA Bank -Secure Instant Transfer" + }, + { + "id": "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "label": "Credit | Debit | ApplePay | Paypal" + }, + { + "id": "alg_custom_gateway_1", + "label": "CashApp/ Venmo- *BITCOIN Payment Only*" + }, + { + "id": "bacs", + "label": "TransferWise / ACH / Wire Transfer" + }, + { + "id": "paygatedotto-crypto-payment-gateway-dynamic", + "label": "Bitcoin" + } + ], + "configuredBeforeCart": [ + "linkmoney", + "paygatedotto-instant-payment-gateway-hostedpaygatedotto", + "alg_custom_gateway_1", + "bacs", + "paygatedotto-crypto-payment-gateway-dynamic" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://royal-peptides.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://royal-peptides.com/shipping-returns/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 10, + "visualPolish": 9, + "productClarity": 7, + "trustPresentation": 9, + "conversionUx": 8, + "overall": 8.6, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 5 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://royal-peptides.com/shop/retatrutide-vial/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 17, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://royal-peptides.com/shop/retatrutide-vial/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://royal-peptides.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://royal-peptides.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "independent_test_index", + "url": "https://www.finnrick.com/products/retatrutide/vendors/royal-peptides", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://royal-peptides.com/shipping-returns/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://royal-peptides.com/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://royal-peptides.com/affiliates/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://royal-peptides.com/wp-content/plugins/custom-payment-gateways-woocommerce/build/style-index.css?ver=236eb729738f64b534be", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 404 ()", + "requestStorageAccess: Permission denied." + ] + }, + "sunday-usa.com": { + "domain": "sunday-usa.com", + "canonicalDomain": "sunday-usa.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://sunday-usa.com/", + "https://sunday-usa.com/product/rt10/", + "https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20", + "https://sunday-usa.com/wp-json/wc/store/v1/cart", + "https://sunday-usa.com/checkout/", + "https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "https://sunday-usa.com/terms-conditions/", + "https://sunday-usa.com/shipping-policy/", + "https://sunday-usa.com/refund-policy/", + "https://sunday-usa.com/terms-of-service/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://sunday-usa.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Reta", + "strengths": [], + "productUrl": "https://sunday-usa.com/product/rt10/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 11201, + "productType": "simple", + "evidenceUrl": "https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 200.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "TikTok Pixel", + "Triple Whale" + ], + "evidenceUrl": "https://sunday-usa.com/product/rt10/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://sunday-usa.com/shipping-policy/", + "https://sunday-usa.com/refund-policy/" + ], + "shippingReturnSnippets": [ + "al email addresses, or other supporting documentation. Orders associated with residential delivery addresses may also be subject to additional review to ensure compliance with our Terms of", + "advice, prescriptions, or consultations. © 2026 Sunday Privacy Policy Contact information Shipping Policy Refund Policy Terms of Service You need to enable JavaScript in order to use the AI chatb", + "tions, or consultations. © 2026 Sunday Privacy Policy Contact information Shipping Policy Refund Policy Terms of Service You need to enable JavaScript in order to use the AI chatbot tool powere" + ], + "pluginSignals": [ + "*", + "aco-product-labels-for-woocommerce", + "affiliate-wp", + "all-in-one-seo-pack", + "code-snippets", + "contact-form-7", + "fake.css", + "google-analytics-for-wordpress", + "gtm-server-side", + "instaonramp-woocommerce-crypt2merchant-onramp-v2.7", + "jetpack", + "litespeed-cache", + "omnisend-connect", + "side-cart-woocommerce", + "woo-discount-rules-pro", + "woocommerce-product-bundles", + "wp-data-access" + ] + }, + "payment": { + "methods": [ + { + "name": "Pay securely", + "id": "noramp_platform", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://sunday-usa.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "noramp_platform" + ], + "renderedCheckoutLabels": [ + { + "id": "noramp_platform", + "label": "Pay securely" + } + ], + "configuredBeforeCart": [ + "noramp_platform" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://sunday-usa.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://sunday-usa.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://sunday-usa.com/product/rt10/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://sunday-usa.com/product/rt10/", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 7.5, + "productClarity": 4.5, + "trustPresentation": 7, + "conversionUx": 6, + "overall": 6.7, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://sunday-usa.com/product/rt10/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "Sunday Research access. This site provides research-grade products for laboratory and research purposes only. Please confirm before entering. I am 21 years of age or older. I under", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://sunday-usa.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://sunday-usa.com/product/rt10/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://sunday-usa.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://sunday-usa.com/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://sunday-usa.com/terms-conditions/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://sunday-usa.com/shipping-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://sunday-usa.com/refund-policy/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://sunday-usa.com/terms-of-service/", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 404 ()", + "Mixed Content: The page at 'https://sunday-usa.com/product/rt10/' was loaded over HTTPS, but requested an insecure font 'http://sunday-usa.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff2'. This request…", + "Mixed Content: The page at 'https://sunday-usa.com/product/rt10/' was loaded over HTTPS, but requested an insecure font 'http://sunday-usa.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff'. This request …" + ] + }, + "sunrisebioresearch.com": { + "domain": "sunrisebioresearch.com", + "canonicalDomain": "sunrisebioresearch.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg", + "https://sunrisebioresearch.com/wp-json/wc/store/v1/cart", + "https://sunrisebioresearch.com/checkout/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3 (R*) 200mg (10 x 20mg)", + "strengths": [ + "200mg", + "20mg" + ], + "productUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 11666, + "productType": "simple", + "evidenceUrl": "https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 399.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Subscription or auto-ship continuity", + "subscriptionDetected": true, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": false, + "technologyStack": [ + "Klaviyo", + "GoAffPro" + ], + "evidenceUrls": [ + "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel" + ], + "evidenceUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": false, + "reviewSignal": true, + "ruoNotice": false, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "3 (R*) 200mg (10 x 20mg) Kits , Uncategorized GLP-3 (R*) 200mg (10 x 20mg) $ 399.00 & Free Shipping 10 x 20mg Availability: 42 in stock GLP-3 (R*) 200mg (10 x 20mg) quantity Add to cart Cat" + ], + "pluginSignals": [ + "*", + "astra-sites", + "drip", + "elementor", + "elementor-pro", + "elementskit-lite", + "google-listings-and-ads", + "google-site-kit", + "header-footer-elementor", + "klaviyo", + "mailchimp-for-woocommerce", + "print-invoices-packing-slip-labels-for-woocommerce", + "tablepress", + "wc-bulk-order-form-prepopulated", + "woocommerce", + "woocommerce-payments" + ] + }, + "payment": { + "methods": [ + { + "name": "Zelle and chime payments are preferred. Zelle: [public business email omitted] Chime: $SunriseBio", + "id": "zelle", + "layer": "wallet/P2P method", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://sunrisebioresearch.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "zelle" + ], + "renderedCheckoutLabels": [ + { + "id": "zelle", + "label": "Zelle and chime payments are preferred. Zelle: [public business email omitted] Chime: $SunriseBio" + } + ], + "configuredBeforeCart": [ + "zelle" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://sunrisebioresearch.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://sunrisebioresearch.com/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "confidence": "high" + }, + { + "claim": "Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 9, + "trustPresentation": 5, + "conversionUx": 8, + "overall": 7.6, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14.592, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://sunrisebioresearch.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://sunrisebioresearch.com/checkout/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "tidetopia.com": { + "domain": "tidetopia.com", + "canonicalDomain": "tidetopia.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "B", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://tidetopia.com/", + "https://tidetopia.com/products/retatrutide-30mg", + "https://tidetopia.com/cart", + "https://tidetopia.com/checkout" + ], + "platform": { + "name": "Shopify", + "confidence": "high", + "evidenceUrl": "https://tidetopia.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "Retatrutide 30mg — The Extended Research Vial", + "strengths": [ + "30mg" + ], + "productUrl": "https://tidetopia.com/products/retatrutide-30mg", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 15672550850720, + "productType": "Shopify product", + "evidenceUrl": "https://tidetopia.com/products/retatrutide-30mg", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 150.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Subscription or auto-ship continuity", + "subscriptionDetected": true, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://tidetopia.com/products/retatrutide-30mg" + ] + }, + "tracking": { + "stack": [], + "evidenceUrl": "https://tidetopia.com/products/retatrutide-30mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": false, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": 1, + "checkoutPageHttpStatus": null, + "gates": [ + "account/login gate detected", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "ability Promise Learn Journal: The Current FAQs & Protocols Support Contact Us Shipping & Delivery Returns & Replacements Order Status Track Your Order Wholesale Inquiries Legal Terms of U" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://tidetopia.com/cart", + "checkoutEvidenceUrl": "https://tidetopia.com/checkout", + "observedAt": "2026-07-27" + }, + "grade": "B", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://tidetopia.com/products/retatrutide-30mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://tidetopia.com/products/retatrutide-30mg", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://tidetopia.com/checkout", + "confidence": "high" + }, + { + "claim": "Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://tidetopia.com/products/retatrutide-30mg", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 9, + "visualPolish": 10, + "productClarity": 9.5, + "trustPresentation": 7, + "conversionUx": 8.5, + "overall": 8.8, + "reasons": [ + "Product name, price, and purchase CTA are visible in the mobile DOM.", + "COA, batch, or laboratory proof is surfaced on the page." + ], + "observedUrl": "https://tidetopia.com/products/retatrutide-30mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 15, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": true, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://tidetopia.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://tidetopia.com/products/retatrutide-30mg", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://tidetopia.com/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://tidetopia.com/checkout", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ] + }, + "true-peptides.com": { + "domain": "true-peptides.com", + "canonicalDomain": "true-peptides.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://true-peptides.com/", + "https://true-peptides.com/product/retatrutide", + "https://true-peptides.com/affiliate-program", + "https://true-peptides.com/terms-of-service", + "https://true-peptides.com/shipping-policy" + ], + "platform": { + "name": "Next.js", + "confidence": "high", + "evidenceUrl": "https://true-peptides.com/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://true-peptides.com/product/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": "glp-retatrutide-10mg", + "productType": "JSON-LD product", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": null, + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://true-peptides.com/affiliate-program" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://true-peptides.com/shipping-policy" + ], + "shippingReturnSnippets": [ + "rt My Account Track Order Contact Affiliate Program Legal Terms of Service Privacy Policy Shipping Policy Research Compliance © 2026 True Peptides Terms and Policies Accessibility All products ar", + "3N48O64 Select Size 10mg $89.00 20mg $149.00 30mg $186.00 40mg $205.00 In Stock Estimated delivery: Wed, Jul 29 – Sun, Aug 2 Order within 23 hrs 41 mins for same-day shipping $89.00 Qty −", + "empt to purchase products. BY ACCESSING OR USING THE SITE, PLACING AN ORDER, OR ACCEPTING DELIVERY OF ANY PRODUCT, YOU REPRESENT AND WARRANT THAT: You have read, understood, and agree to b" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Zelle", + "id": null, + "layer": "wallet/P2P method", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://true-peptides.com/product/retatrutide", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://true-peptides.com/affiliate-program", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 3, + "overall": 7, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible purchase CTA.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://true-peptides.com/product/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "RESEARCH Research Use Only By using this site, you acknowledge that all products and information are provided for research purposes only and are not intended for human consumption ", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://true-peptides.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://true-peptides.com/product/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://true-peptides.com/affiliate-program", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://true-peptides.com/terms-of-service", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://true-peptides.com/shipping-policy", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "truepeptidelabs.com": { + "domain": "truepeptidelabs.com", + "canonicalDomain": "truepeptidelabs.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://truepeptidelabs.com/product/glp-3rt/", + "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F", + "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt", + "https://truepeptidelabs.com/wp-json/wc/store/v1/cart", + "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F", + "https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fterms-of-service" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3RT", + "strengths": [], + "productUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 1878, + "productType": "variation", + "evidenceUrl": "https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 190.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Affiliate or ambassador acquisition", + "subscriptionDetected": true, + "affiliateDetected": true, + "referralDetected": true, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Klaviyo", + "Trustpilot", + "GoAffPro" + ], + "evidenceUrls": [ + "https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics" + ], + "evidenceUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": true, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 3.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "account/login gate detected", + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [], + "shippingReturnSnippets": [ + "savings have been added to the cart. Close 1 Added to cart You're $ 60.00 away from free shipping! Close cart Review Your Cart 1 GLP-3RT - 30mg Price: $ 190.00 Remove Quantity contro" + ], + "pluginSignals": [ + "*", + "affiliate-wp", + "contact-form-7", + "elementor", + "jetpack", + "klaviyo", + "mailchimp-for-woocommerce", + "modern-cart", + "research-gate-pro", + "suretriggers", + "user-registration", + "wcpay-card2crypto-payments", + "woo-product-bundle", + "woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "linkmoney", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://truepeptidelabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "clkk", + "id": "clkk", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://truepeptidelabs.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 2, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "clkk" + ], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [ + "linkmoney", + "clkk" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://truepeptidelabs.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "confidence": "high" + }, + { + "claim": "Account or login gate observed in the public checkout journey.", + "evidenceUrl": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F", + "confidence": "high" + }, + { + "claim": "Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8.5, + "visualPolish": 7.5, + "productClarity": 2.5, + "trustPresentation": 3.5, + "conversionUx": 5, + "overall": 5.4, + "reasons": [ + "Anonymous Reta cart add succeeded and returned 2 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, price, purchase CTA.", + "No COA, batch, or laboratory-proof signal is visible in the loaded mobile page." + ], + "observedUrl": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": false, + "visiblePrice": false, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": false, + "blockingOverlay": true, + "overlayText": "Age Verification Required This website is restricted. To continue, please confirm you meet the minimum age requirement and accept the agreement below. I confirm I am 21+ years of a", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://truepeptidelabs.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fterms-of-service", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: the server responded with a status of 401 ()" + ] + }, + "umbrellalabs.is": { + "domain": "umbrellalabs.is", + "canonicalDomain": "umbrellalabs.is", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://umbrellalabs.is/shop/peptides/peptide-vials/retatrutide-ly-3437943/", + "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943", + "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "https://umbrellalabs.is/checkout/", + "https://umbrellalabs.is/payment-options/", + "https://umbrellalabs.is/terms-of-service/", + "https://umbrellalabs.is/shipping-information/" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3R (LY-3437943) PEPTIDE VIAL", + "strengths": [ + "1 mg", + "4 mg", + "2 mg", + "8 mg", + "12 mg", + "2mg", + "5mg", + "10mg" + ], + "productUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 340888, + "productType": "variable", + "evidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 64.99", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Loyalty or points retention", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": true, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "Yotpo", + "AfterShip" + ], + "evidenceUrls": [ + "https://umbrellalabs.is/payment-options/" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel", + "TikTok Pixel" + ], + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://umbrellalabs.is/shipping-information/" + ], + "shippingReturnSnippets": [ + "abs ⭐️ ORDERS $100 OR MORE AND GET 10% OFF! ⭐️ ⭐️ ORDERS $200 OR MORE AND GET 20% OFF! ⭐️ FREE SHIPPING [public phone omitted] 0 0 Home My Account New Releases Peptides GLP’s Peptide Liquid Spray", + "Labs, Inc. (hereinafter “Umbrella Labs”) Acceptance of Terms By purchasing and accepting delivery of any products supplied by Umbrella Labs (“Products”) you agree to be bound by these ter" + ], + "pluginSignals": [ + "*", + "btcpay-greenfield-for-woocommerce", + "cartpops-pro", + "checkout-fees-for-woocommerce-pro", + "contact-form-7", + "elementor", + "essential-addons-for-elementor-lite", + "funnel-builder-pro", + "paynote", + "porto-functionality", + "read-more-without-refresh", + "simple-cloudflare-turnstile", + "smooth-back-to-top-button", + "wc-shipping-insurance", + "woo-bought-together-premium", + "woocommerce", + "woocommerce-advanced-products-labels", + "woocommerce-back-in-stock-notifications", + "wordlift", + "wp-marketing-automations", + "yaypricing-pro", + "yotpo-social-reviews-for-woocommerce" + ] + }, + "payment": { + "methods": [ + { + "name": "Same-Day Bank Payment", + "id": "linkmoney", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay with US Bank Account", + "id": "btcpaygf_default", + "layer": "crypto checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "Pay with US Bank Account", + "id": "paynote", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "idem", + "id": "idem", + "layer": "bank checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + }, + { + "name": "ACH", + "id": null, + "layer": "bank checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "observedAt": "2026-07-27" + }, + { + "name": "Crypto", + "id": null, + "layer": "crypto checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 4, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "linkmoney", + "btcpaygf_default", + "paynote", + "idem" + ], + "renderedCheckoutLabels": [ + { + "id": "linkmoney", + "label": "Same-Day Bank Payment" + }, + { + "id": "btcpaygf_default", + "label": "Pay with US Bank Account" + }, + { + "id": "paynote", + "label": "Pay with US Bank Account" + } + ], + "configuredBeforeCart": [ + "linkmoney", + "btcpaygf_default", + "paynote", + "idem" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://umbrellalabs.is/checkout/", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "confidence": "high" + }, + { + "claim": "Loyalty or points retention detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://umbrellalabs.is/payment-options/", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 8, + "visualPolish": 9, + "productClarity": 7, + "trustPresentation": 7.5, + "conversionUx": 8, + "overall": 7.9, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 4 active payment methods.", + "Mobile DOM is missing a clearly visible product heading, purchase CTA." + ], + "observedUrl": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 14, + "visibleHeading": false, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": false, + "overlayText": null, + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://umbrellalabs.is/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://umbrellalabs.is/checkout/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://umbrellalabs.is/payment-options/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://umbrellalabs.is/terms-of-service/", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://umbrellalabs.is/shipping-information/", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "uspeptidescience.com": { + "domain": "uspeptidescience.com", + "canonicalDomain": "uspeptidescience.com", + "status": { + "listing": "active_listing_found_cart_not_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "C", + "activeRetaCartVerified": false + }, + "pagesCrawled": [ + "https://uspeptidescience.com/", + "https://www.uspeptidescience.com/", + "https://uspeptidescience.com/shop/retatrutide", + "https://www.uspeptidescience.com/shop/retatrutide", + "https://www.uspeptidescience.com/legal/refund-policy", + "https://www.uspeptidescience.com/legal/shipping-policy", + "https://www.uspeptidescience.com/legal/terms" + ], + "platform": { + "name": "Next.js", + "confidence": "high", + "evidenceUrl": "https://www.uspeptidescience.com/" + }, + "reta": { + "listingStatus": "active_listing_found_cart_not_verified", + "productName": "Retatrutide", + "strengths": [], + "productUrl": "https://uspeptidescience.com/shop/retatrutide", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": false, + "productId": null, + "productType": "JSON-LD product", + "evidenceUrl": "https://www.uspeptidescience.com/shop/retatrutide", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": null, + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Batch/COA proof as conversion", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": false, + "coaLedConversionDetected": true, + "technologyStack": [], + "evidenceUrls": [ + "https://www.uspeptidescience.com/legal/refund-policy" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "Meta Pixel" + ], + "evidenceUrl": "https://uspeptidescience.com/shop/retatrutide", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": true, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 6.5 + }, + "operations": { + "cartAccessible": false, + "anonymousCartAdd": false, + "cartItemCount": null, + "checkoutPageHttpStatus": null, + "gates": [ + "age gate or 21+ attestation", + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://www.uspeptidescience.com/legal/refund-policy", + "https://www.uspeptidescience.com/legal/shipping-policy" + ], + "shippingReturnSnippets": [ + "ibers get 20% off their first order. Submit → Buy Peptides Information Support Contact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research", + "off their first order. Submit → Buy Peptides Information Support Contact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research Use Only © 2026", + "ontact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research Use Only © 2026 US Peptide Science Terms Privacy Refund Policy Shipping Policy C" + ], + "pluginSignals": [] + }, + "payment": { + "methods": [ + { + "name": "PayPal", + "id": null, + "layer": "checkout integration", + "status": "public_claim_or_logo_only", + "evidenceUrl": "https://uspeptidescience.com/shop/retatrutide", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 0, + "evidence": { + "anonymousRetaCartAdded": false, + "activeMethodIdsReturned": [], + "renderedCheckoutLabels": [], + "configuredBeforeCart": [], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": null, + "checkoutEvidenceUrl": null, + "observedAt": "2026-07-27" + }, + "grade": "C", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://uspeptidescience.com/shop/retatrutide", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://uspeptidescience.com/shop/retatrutide", + "confidence": "high" + }, + { + "claim": "Age or 21+ attestation observed.", + "evidenceUrl": "https://uspeptidescience.com/shop/retatrutide", + "confidence": "high" + }, + { + "claim": "Batch/COA proof as conversion detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://www.uspeptidescience.com/legal/refund-policy", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 7.5, + "visualPolish": 8.5, + "productClarity": 8.5, + "trustPresentation": 6.5, + "conversionUx": 3, + "overall": 6.8, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Mobile DOM is missing a clearly visible purchase CTA.", + "The automated anonymous cart test did not reach a verified active payment-method state." + ], + "observedUrl": "https://uspeptidescience.com/shop/retatrutide", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "Age & Research Disclaimer You must be 21 or older to enter this site. All products sold by US Peptide Science are intended for research purposes only. They are not intended for hum", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://www.uspeptidescience.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://uspeptidescience.com/shop/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://www.uspeptidescience.com/shop/retatrutide", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.uspeptidescience.com/legal/refund-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.uspeptidescience.com/legal/shipping-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://www.uspeptidescience.com/legal/terms", + "accessedAt": "2026-07-27" + } + ], + "errors": [] + }, + "veloraresearch.com": { + "domain": "veloraresearch.com", + "canonicalDomain": "veloraresearch.com", + "status": { + "listing": "active_listing_anonymous_cart_add_verified", + "verifiedAt": "2026-07-27", + "storefrontHttpStatus": 200, + "evidenceGrade": "A", + "activeRetaCartVerified": true + }, + "pagesCrawled": [ + "https://veloraresearch.com/", + "https://veloraresearch.com/product/glp-3-rt", + "https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "https://veloraresearch.com/wp-json/wc/store/v1/cart", + "https://veloraresearch.com/checkout", + "https://veloraresearch.com/terms-conditions", + "https://veloraresearch.com/shipping-policy", + "https://veloraresearch.com/refund-return" + ], + "platform": { + "name": "WooCommerce", + "confidence": "high", + "evidenceUrl": "https://veloraresearch.com/" + }, + "reta": { + "listingStatus": "active_listing_anonymous_cart_add_verified", + "productName": "GLP-3 RT", + "strengths": [ + "10mg", + "20mg", + "30mg", + "5 mg" + ], + "productUrl": "https://veloraresearch.com/product/glp-3-rt", + "inStock": true, + "purchasable": true, + "anonymousCartAdd": true, + "productId": 3341, + "productType": "variable", + "evidenceUrl": "https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "verifiedAt": "2026-07-27" + }, + "pricing": { + "displayedPrice": "USD 81.00", + "currency": "USD", + "secondaryIndexPricePerMg": null, + "secondaryIndexUrl": null, + "note": "Not normalized for strength, bundle size, discount, tax, or shipping." + }, + "marketing": { + "strongestMechanic": "Free-shipping threshold", + "subscriptionDetected": false, + "affiliateDetected": false, + "referralDetected": false, + "loyaltyDetected": false, + "quantityDiscountDetected": false, + "freeShippingDetected": true, + "coaLedConversionDetected": true, + "technologyStack": [ + "GoAffPro" + ], + "evidenceUrls": [ + "https://veloraresearch.com/terms-conditions" + ] + }, + "tracking": { + "stack": [ + "Google Tag Manager", + "Google Analytics", + "TikTok Pixel" + ], + "evidenceUrl": "https://veloraresearch.com/product/glp-3-rt", + "note": "Public script/plugin marker only; campaign activity and attribution quality are unverified." + }, + "trust": { + "coaOrTestingSignal": true, + "reviewSignal": true, + "ruoNotice": true, + "ageOr21PlusGate": false, + "accountGate": false, + "independentTestIndex": null, + "independentTestCount": 0, + "latestIndexedTest": null, + "mobileTrustPresentationScore": 7.5 + }, + "operations": { + "cartAccessible": true, + "anonymousCartAdd": true, + "cartItemCount": null, + "checkoutPageHttpStatus": 200, + "gates": [ + "RUO/not-for-human-consumption notice" + ], + "shippingReturnEvidenceUrls": [ + "https://veloraresearch.com/shipping-policy", + "https://veloraresearch.com/refund-return" + ], + "shippingReturnSnippets": [ + "rified | Velora Research Lab-Verified Research Peptides Third-Party Tested & COA Verified Free Shipping on Orders $200+ [public phone omitted] 0 Home About Us Shop Peptides Featured Products Blog Contact", + ". Lab-verified compounds with Certificates of Analysis. For laboratory research use only. Free shipping on orders $200+. Shop Now Learn More Third-Party Lab Tested Every batch verified 99%+ Pur", + "w Learn More Third-Party Lab Tested Every batch verified 99%+ Purity Pharmaceutical grade Free Shipping $200+ 2-day US delivery COA Verified Full documentation Shop Featured Products View All G" + ], + "pluginSignals": [ + "*", + "age-gate", + "checkout-for-woocommerce", + "google-site-kit", + "gravityforms", + "gtm-server-side", + "omnisend-connect", + "pixelyoursite", + "tiktok-for-woocommerce", + "wc-authorize-net-1-1", + "woocommerce", + "wt-smart-coupon-pro" + ] + }, + "payment": { + "methods": [ + { + "name": "Credit Card", + "id": "authorize_net", + "layer": "checkout integration", + "status": "active_for_reta_cart_api", + "evidenceUrl": "https://veloraresearch.com/wp-json/wc/store/v1/cart", + "observedAt": "2026-07-27" + } + ], + "activeMethodCount": 1, + "evidence": { + "anonymousRetaCartAdded": true, + "activeMethodIdsReturned": [ + "authorize_net" + ], + "renderedCheckoutLabels": [ + { + "id": "authorize_net", + "label": "Credit Card" + } + ], + "configuredBeforeCart": [ + "authorize_net" + ], + "configuredButNotActiveForRetaCart": [], + "cartEvidenceUrl": "https://veloraresearch.com/wp-json/wc/store/v1/cart", + "checkoutEvidenceUrl": "https://veloraresearch.com/checkout", + "observedAt": "2026-07-27" + }, + "grade": "A", + "note": "The public identifier can name a provider, gateway, or method at that exact code/runtime layer. It does not by itself establish the merchant's private contract, MID, acquirer, reserves, or settlement." + }, + "claims": [ + { + "claim": "Current Reta/retatrutide listing found on the public storefront.", + "evidenceUrl": "https://veloraresearch.com/product/glp-3-rt", + "confidence": "high" + }, + { + "claim": "Research-use-only or not-for-human-consumption notice observed.", + "evidenceUrl": "https://veloraresearch.com/product/glp-3-rt", + "confidence": "high" + }, + { + "claim": "Free-shipping threshold detected as the strongest public conversion/retention mechanic.", + "evidenceUrl": "https://veloraresearch.com/terms-conditions", + "confidence": "medium" + } + ], + "sourcing": { + "manufacturer": "unknown", + "supplier": "unknown", + "evidence": [], + "note": "No independently verifiable manufacturer or upstream supplier evidence found; no inference made." + }, + "uiUx": { + "viewport": "390x844", + "mobileUsability": 6.5, + "visualPolish": 7.5, + "productClarity": 8.5, + "trustPresentation": 7.5, + "conversionUx": 6, + "overall": 7.2, + "reasons": [ + "COA, batch, or laboratory proof is surfaced on the page.", + "Anonymous Reta cart add succeeded and returned 1 active payment method.", + "Mobile DOM is missing a clearly visible purchase CTA." + ], + "observedUrl": "https://veloraresearch.com/product/glp-3-rt", + "scoringBasis": "Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.", + "metrics": { + "viewportMeta": true, + "noHorizontalOverflow": true, + "bodyFontSize": 16, + "visibleHeading": true, + "visiblePrice": true, + "visibleCartCta": false, + "visibleProductImage": true, + "visibleCoaSignal": true, + "blockingOverlay": true, + "overlayText": "You must be 21 years of age or older to enter this site. By accessing this website, you agree to our Terms and Conditions. Are you over 21 years of age? No Yes Remember me All mate", + "brokenImages": 0 + } + }, + "evidence": [ + { + "type": "storefront", + "url": "https://veloraresearch.com/", + "accessedAt": "2026-07-27" + }, + { + "type": "product", + "url": "https://veloraresearch.com/product/glp-3-rt", + "accessedAt": "2026-07-27" + }, + { + "type": "product_api_or_page", + "url": "https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20", + "accessedAt": "2026-07-27" + }, + { + "type": "cart_api_or_page", + "url": "https://veloraresearch.com/wp-json/wc/store/v1/cart", + "accessedAt": "2026-07-27" + }, + { + "type": "checkout_page", + "url": "https://veloraresearch.com/checkout", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://veloraresearch.com/terms-conditions", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://veloraresearch.com/shipping-policy", + "accessedAt": "2026-07-27" + }, + { + "type": "policy_or_program", + "url": "https://veloraresearch.com/refund-return", + "accessedAt": "2026-07-27" + } + ], + "errors": [ + "Failed to load resource: net::ERR_NAME_NOT_RESOLVED" + ] + } + } +} diff --git a/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.md b/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.md new file mode 100644 index 0000000..9de665d --- /dev/null +++ b/biologix-strategy-board/research/noli-checkout-scan-2026-07-27.md @@ -0,0 +1,95 @@ +# Noli Retatrutide storefront and checkout scan + +Fresh public scan on 2026-07-27. The result is **48 current Reta listings** from **71 eligible U.S. storefronts probed** inside the 655-vendor universe. + +Universe inputs: [Finnrick Retatrutide index](https://www.finnrick.com/products/retatrutide) and [Peptide Compare Retatrutide vendors](https://www.peptide-compare.com/best/retatrutide), followed by direct storefront and cart verification. + +## Exact coverage + +- 84 storefronts were classified as confirmed U.S. retail in the source universe. +- 13 were excluded: the 11 already audited in the first checkout cluster, plus Sparta Labs and BioPep USA, which the main research thread had already audited separately. +- 71 storefronts were probed. +- 48 current Reta listings were directly found and are in the JSON. +- 37 accepted a fresh anonymous product-cart add. +- 33 returned method IDs active for that Reta cart. +- 20 exposed human-readable checkout labels in the public journey. +- No account was created. No PII, checkout submission, order, payment attempt, transaction, credential, gate bypass, or evasion was used. + +## What matters for Noli + +1. **The dominant stack is simple.** WooCommerce powers 36/48 directly verified Reta listings. Shopify has 3, Next.js has 5, and 4 remained platform-unknown. The fast pattern is a conventional store with strong instrumentation and redundant checkout integrations, not exotic frontend complexity. +2. **Payment resilience is a portfolio.** 33/48 stores exposed active Reta-cart method IDs. Exact identifier counts were Link Money on 11 active carts, Zelle on 7, BACS/bank transfer on 6, NMI on 4, NMI Pay on 2, and IDEM on 3. These are checkout identifiers, not proof of the processor, ISO, or acquirer. 14 configured identifiers were not active for the tested Reta cart, which is why configured plugins cannot be reported as live rails. +3. **Bank and manual rails are normal failover, not edge cases.** Across active carts, bank, wallet/P2P, card-adapter, and crypto integrations coexist. The commercial lesson is redundancy and accurate reconciliation. The risk lesson is that plugin labels do not prove underwriting durability. +4. **Gates are common and costly.** 44/48 showed RUO/not-for-human-consumption language, 14 showed age/21+ attestation, and 13 showed an account/login gate. Several mobile first folds were entirely consumed by a gate. Treat qualification as a deliberate product decision and measure its conversion cost. +5. **Affiliates beat subscriptions in this cohort.** Affiliate or ambassador acquisition was the strongest detected mechanic at 34/48 stores; subscription/auto-ship led only 4. The strongest compliant takeaway is a controlled partner program with attributable codes, approved creative, and claim monitoring. +6. **Instrumentation is already table stakes.** Analytics: Google Tag Manager 36/48, Google Analytics 28/48, Meta Pixel 16/48, TikTok Pixel 10/48, Microsoft Clarity 5/48, Triple Whale 2/48. Marketing and trust apps: GoAffPro 15/48, Trustpilot 14/48, Klaviyo 10/48, Yotpo 1/48, AfterShip 1/48. Noli should ship clean event naming, first-party order attribution, affiliate-code lineage, and payment-method failure telemetry from day one. +7. **UI leaders combine proof with a clean product path.** Automated mobile leaders were researchchemhq.co 9.2, greatestpeptides.com 8.9, lifelinkresearch.com 8.9, tidetopia.com 8.8, royal-peptides.com 8.6. Scores are reproducible 390x844 DOM/image/cart heuristics, not subjective design awards. Every profile includes the five subscores and 1-3 concrete reasons. + +## Active checkout identifiers + +Most frequent active identifiers: linkmoney (11), zelle (7), bacs (6), nmi (4), idem (3), tagada (3), edd_draft_yodlee_gateway (3), paygatedotto-instant-payment-gateway-hostedpaygatedotto (2), bytenft (2), crypto (2). Read each as exact public code/runtime evidence at the named provider, gateway, or method layer. The merchant's private contract, MID, acquirer, reserves, and settlement remain separate. + +## Storefront sheet + +Stock is the state returned by the product API or public product page. Price is the displayed listing price and is not normalized for strength, bundle size, discount, shipping, or tax. + +| Store | Platform | Display price | Stock | Active methods | Payment grade | Mobile UI | +| --- | --- | ---: | :---: | ---: | :---: | ---: | +| [adaptpeptides.com](https://adaptpeptides.com/product/retatrutide/) | WooCommerce | USD 89.00 | in | 4 | A | 7.9 | +| [agelessvitalitypeptides.com](https://agelessvitalitypeptides.com/product/retatrutide-10mg/) | WooCommerce | USD 99.00 | in | 2 | A | 7.7 | +| [arcticlabsupply.com](https://arcticlabsupply.com/products/retatrutide-10mg) | Unknown | unknown | ? | 0 | D | 4.7 | +| [behemothlabz.com](https://behemothlabz.com/product/retatrutide-peptide/) | WooCommerce | USD 147.58 | in | 6 | A | 8.4 | +| [geneticpeptide.com](https://geneticpeptide.com/product/glp-r-vial-2/) | WooCommerce | USD 155.00 | in | 5 | A | 6.1 | +| [getprimelabs.com](https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide) | Shopify | USD 170.00 | in | 0 | B | 7.2 | +| [greatestpeptides.com](https://greatestpeptides.com/product/retatrutide-40-mg/) | WooCommerce | USD 220.00 | in | 6 | A | 8.9 | +| [heartlandbiolabs.com](https://heartlandbiolabs.com/product/retatrutide/) | WooCommerce | USD 89.00 | in | 0 | B | 7.8 | +| [hydroresearchpeptides.com](https://hydroresearchpeptides.com/product/r40/) | WooCommerce | USD 350 | in | 0 | D | 4.6 | +| [ignitepeptides.com](https://ignitepeptides.com/product/glp-3-rt-10mg/) | WooCommerce | USD 75.00 | in | 3 | A | 7.1 | +| [labtrustpeptides.com](https://labtrustpeptides.com/product/retatrutide/) | WooCommerce | USD 149.99 | in | 2 | A | 8.5 | +| [lifelinkresearch.com](https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/) | WooCommerce | USD 200.00 | in | 3 | A | 8.9 | +| [luxaralabs.com](https://luxaralabs.com/product/retatrutide/) | WooCommerce | USD 90.00 | in | 2 | A | 7.2 | +| [milehighcompounds.is](https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg) | WooCommerce | USD 279.99 | in | 4 | A | 5.8 | +| [mytidelab.com](https://mytidelab.com/products/retatrutide) | Next.js | USD 99.99 | in | 0 | C | 7.5 | +| [neb.co](https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/) | WooCommerce | USD 285.00 | in | 3 | A | 8.3 | +| [northwestpeptides.com](https://northwestpeptides.com/product/glp-3/) | WooCommerce | USD 109.99 | in | 4 | A | 8.3 | +| [nosbarbersupply.com](https://nosbarbersupply.com/products/holas-retatrutide-peptide) | Shopify | USD 199.99 | in | 0 | B | 7.7 | +| [nurevpeptides.com](https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/) | WooCommerce | USD 269.00 | in | 3 | A | 7 | +| [nxtstate.co](https://nxtstate.co/product/retatrutide/) | WooCommerce | USD 79.99 | in | 4 | A | 8.1 | +| [onyxbiolabs.com](https://onyxbiolabs.com/product/retatrutide-peptide/) | WooCommerce | USD 54.99 | in | 5 | A | 7.8 | +| [onyxresearch.shop](https://onyxresearch.shop/product/glp-3-rt/) | WooCommerce | USD 78.75 | in | 4 | A | 8.3 | +| [optides.com](https://optides.com/shop/retatrutide) | Next.js | USD 82.99 | in | 0 | C | 7.8 | +| [orionpeptide.com](https://orionpeptide.com/product/retatrutide-10mg/) | WooCommerce | USD 80.00 | in | 3 | A | 7.1 | +| [pacificresearchpeptides.com](https://pacificresearchpeptides.com/product/retatrutide/) | WooCommerce | USD 129.00 | in | 1 | A | 7.5 | +| [peptalabs.com](https://peptalabs.com/peptides/retatrutide-20mg) | Unknown | USD 138.59 | in | 0 | C | 8.4 | +| [peptara.org](https://peptara.org/product/retatrutide) | Unknown | USD 55 | in | 0 | C | 7.7 | +| [peptidehackers.com](https://www.peptidehackers.com/products/retatrutide) | Unknown | USD 100 | in | 0 | D | 8.6 | +| [peptidescollective.com](https://peptidescollective.com/product/r/) | WooCommerce | USD 49.00 | in | 2 | A | 8.2 | +| [peptidology.co](https://peptidology.co/product/g3/) | WooCommerce | USD 54.99 | in | 4 | A | 7 | +| [peptira.com](https://peptira.com/product/reta3-9/) | WooCommerce | USD 179.00 | in | 0 | C | 4.6 | +| [protidehealth.com](https://protidehealth.com/product/glp3/) | WooCommerce | USD 145.00 | in | 1 | A | 7.9 | +| [pspeptides.com](https://pspeptides.com/product/buy-retatrutide/) | WooCommerce | USD 39.99 | in | 1 | A | 7.4 | +| [quantapeptides.com](https://www.quantapeptides.com/shop/retatrutide-10mg) | Next.js | USD 144.99 | out | 0 | C | 6.8 | +| [realpeptides.co](https://www.realpeptides.co/products/trinity-x/) | WooCommerce | USD 130.00 | in | 4 | A | 7.7 | +| [regentide.net](https://regentide.net/product/retatrutide-30mg/) | WooCommerce | USD 375.99 | in | 4 | A | 8 | +| [researchchemhq.co](https://researchchemhq.co/product/rc-3r/) | WooCommerce | USD 119.99 | in | 6 | A | 9.2 | +| [riptidewellness.com](https://riptidewellness.com/product/glp3-r/) | WooCommerce | USD 109.99 | in | 5 | A | 7.6 | +| [rivnpeptides.com](https://rivnpeptides.com/product/reta/) | WooCommerce | USD 99.99 | in | 2 | A | 7.8 | +| [royal-peptides.com](https://royal-peptides.com/shop/retatrutide-vial/) | WooCommerce | USD 55.00 | in | 5 | A | 8.6 | +| [sunday-usa.com](https://sunday-usa.com/product/rt10/) | WooCommerce | USD 200.00 | in | 1 | A | 6.7 | +| [sunrisebioresearch.com](https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/) | WooCommerce | USD 399.00 | in | 1 | A | 7.6 | +| [tidetopia.com](https://tidetopia.com/products/retatrutide-30mg) | Shopify | USD 150.00 | in | 0 | B | 8.8 | +| [true-peptides.com](https://true-peptides.com/product/retatrutide) | Next.js | unknown | in | 0 | C | 7 | +| [truepeptidelabs.com](https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg) | WooCommerce | USD 190.00 | in | 2 | A | 5.4 | +| [umbrellalabs.is](https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/) | WooCommerce | USD 64.99 | in | 4 | A | 7.9 | +| [uspeptidescience.com](https://uspeptidescience.com/shop/retatrutide) | Next.js | unknown | in | 0 | C | 6.8 | +| [veloraresearch.com](https://veloraresearch.com/product/glp-3-rt) | WooCommerce | USD 81.00 | in | 1 | A | 7.2 | + +## Evidence grades + +- A: current Reta listing added to an anonymous cart and active method IDs or rendered labels observed. +- B: listing and cart add observed, but an active payment-method state was not verified. +- C: listing observed; payment evidence is public-claim/logo-only or cart was not verified. +- D: listing present but not currently purchasable, or no payment state could be verified. +- E: inaccessible in this pass. + +The machine-readable companion is [noli-checkout-scan-2026-07-27.json](./noli-checkout-scan-2026-07-27.json). It is keyed by normalized domain and keeps active, rendered, configured-only, and public-claim-only payment evidence separate. diff --git a/biologix-strategy-board/research/noli-forum-founder-sweep-2026-07-27.md b/biologix-strategy-board/research/noli-forum-founder-sweep-2026-07-27.md new file mode 100644 index 0000000..8deaee9 --- /dev/null +++ b/biologix-strategy-board/research/noli-forum-founder-sweep-2026-07-27.md @@ -0,0 +1,262 @@ +# Noli fresh forum and founder sweep + +**As of:** July 27, 2026 +**Scope:** Payments, scaling, sourcing, brand, site trust, checkout, fulfillment, affiliates, customer recovery, and founder operations. +**Delta rule:** I deduplicated this sweep against 2,202 URLs already in the Noli research corpus. The findings below use new sources, current updates, or a clearly labeled negative result. + +## Bottom line + +The demand is real. The fragile part is not demand or gross markup. It is staying inside a lawful lane while keeping payments, product identity, fulfillment, and customer trust intact. + +Noli should not copy the gray market. It should beat it with a simpler system: + +1. One counsel-approved product lane. +2. One hero offer before a large catalog. +3. One fully underwritten checkout with a written approval record. +4. One lot passport that connects vial, label, COA, and order. +5. One mobile-friendly order status and support queue. +6. One primary acquisition engine plus owned email. +7. One recovery rule with a known cost ceiling. + +That is the fastest scalable version because every extra lane, processor, channel, and SKU multiplies failure points. + +## How to read this + +- **A:** Official policy or a public page controlled by the named company. It proves what the page says, not that every underlying claim is true. +- **B:** Named founder, named expert, or a company reply admitting a concrete operating event. +- **C:** Customer review or anonymous operator account with specific details but no independent audit. +- **D:** Self-interested lead pitch, unsupported revenue claim, or generic forum opinion. +- **New:** Source and lesson were not in the July 26 corpus. +- **Fresh update:** New event updates an already known risk. +- **Corroboration:** New evidence reinforces a prior conclusion. + +Forum revenue, margin, processor, and supplier claims are not treated as facts without records. Gray-market tactics are recorded only as risk evidence. Nothing below is an evasion playbook. + +## 28 findings Noli should act on + +### Payments and checkout + +#### 1. A startup payment dead zone is visible + +**Evidence:** A July 15 RUO founder said multiple high-risk processors required six-figure monthly recurring revenue. A July 26 founder at about $5,000 monthly received the same message in public replies. These are anonymous accounts, not underwriting terms. [July 15 thread](https://www.reddit.com/r/PaymentProcessing/comments/1uwyosb/looking_for_payment_processor_ruo_peptide_business/) and [July 26 thread](https://www.reddit.com/r/PaymentProcessing/comments/1v7i9ph/ruo_peptide_payment/) +**Confidence:** C, fresh update. +**Noli lesson:** Do not buy inventory or traffic until a processor has reviewed the exact company, catalog, claims, fulfillment flow, and buyer controls in writing. No misclassification, cloaking, or rotating accounts. + +#### 2. A public processor FAQ is not merchant approval + +**Evidence:** Stripe's current FAQ says some research peptides may be supported only with preventive measures that keep them away from nonresearch buyers. It also says each account is independently reviewed and activation decides support. [Stripe FAQ](https://support.stripe.com/questions/prohibited-and-restricted-businesses-list-faqs?locale=en-GB) +**Confidence:** A, current recheck. +**Noli lesson:** Get approval for the exact Noli model. Save the underwriting record, approved URLs, approved SKUs, and material-change process. Never infer approval because another site shows the same checkout logo. + +#### 3. Merchant descriptor mismatch creates instant fraud suspicion + +**Evidence:** A LabTrust reviewer said the card descriptor showed a different LLC after an overlooked order. The reviewer then disputed the charge. This is one customer's allegation, not a verified corporate relationship. [Review updated July 21](https://www.trustpilot.com/review/labtrustpeptides.com) +**Confidence:** C, new. +**Noli lesson:** Show the exact statement descriptor beside the pay button, in the receipt, and in the order-status page. The descriptor, legal entity, support name, and refund sender should reconcile. + +#### 4. Refund proof is part of the product + +**Evidence:** The same reviewer said an initial refund document lacked a transaction number and appeared unverifiable. [Review updated July 21](https://www.trustpilot.com/review/labtrustpeptides.com) +**Confidence:** C, new. +**Noli lesson:** A refund confirmation needs amount, date, order ID, processor reference, destination, and expected settlement window. Make it readable on mobile. + +#### 5. Payment reconciliation can turn friction into loyalty + +**Evidence:** Two PeptidePro reviewers described payments not appearing in the account or being blocked by a bank. Both praised fast help from a named person who reconciled the payment and moved the order. [May 27 and June 2 reviews](https://www.trustpilot.com/review/peptidepro.io) +**Confidence:** C, new. +**Noli lesson:** Build a payment-exception queue with order ID, processor status, owner, and resolution SLA. The buyer should never have to explain the same payment in three channels. + +#### 6. Checkout complexity has a measurable trust cost + +**Evidence:** An Apex reviewer abandoned a checkout that appeared to require a crypto account. The company replied that it was testing the flow and planned to restore standard card checkout. [May 1 review and reply](https://www.trustpilot.com/review/apexpeptidesupply.com) +**Confidence:** B for the company's description of its own test, new. +**Noli lesson:** Keep checkout native-looking, explicit, and short. If a lawful underwritten method needs an extra verification step, explain it before the click and test completion rate by device. + +### Fulfillment, identity, and support + +#### 7. Growth breaks confirmation and support before it breaks demand + +**Evidence:** R-Phase publicly described itself as a small, overwhelmed team facing higher order volume, fulfillment delays, support backlog, and email deliverability failures. [July 3 company replies](https://www.trustpilot.com/review/r-phase.com) +**Confidence:** B, new. +**Noli lesson:** Capacity-gate promotions. Pause spend when unshipped orders, first-response time, or stock cover crosses a limit. Growth that the queue cannot absorb is negative growth. + +#### 8. An order receipt must have a second home + +**Evidence:** R-Phase said some German providers blocked its confirmation emails, while customers reported no receipt or shipping update. [July 3 reply](https://www.trustpilot.com/review/r-phase.com) +**Confidence:** B, new. +**Noli lesson:** Email cannot be the only order record. Give every buyer a mobile order-status URL immediately after payment, with payment, allocation, packout, carrier, and refund state. + +#### 9. Discord and WhatsApp should not become the order database + +**Evidence:** R-Phase repeatedly directed customers with missing orders to Discord. NextGen handled an incomplete-order refund through WhatsApp. [R-Phase July replies](https://www.trustpilot.com/review/r-phase.com) and [NextGen July 18 review and reply](https://uk.trustpilot.com/review/nextgenpeptides.nl) +**Confidence:** B/C, new. +**Noli lesson:** Community chat can exist, but the order record and support history belong in one auditable system. + +#### 10. Never accept payment before stock allocation + +**Evidence:** A NextGen reviewer said a paid item was absent from the package and was only later disclosed as out of stock. A Southern Aminos reviewer said popularity and promotions coincided with many products being unavailable. [NextGen July 18 review](https://uk.trustpilot.com/review/nextgenpeptides.nl) and [Southern Aminos April 1 review](https://www.trustpilot.com/review/southernaminos.com) +**Confidence:** C, new. +**Noli lesson:** Reserve inventory at payment authorization, not at packout. Use honest backorder states and one-click refund choice. + +#### 11. Label errors and weak packaging compound each other + +**Evidence:** An Aura reviewer alleged four vials were loose in an envelope and one was mislabeled. Another reported a broken vial. [May 1 and March 19 reviews](https://www.trustpilot.com/review/aurapeptides.com) +**Confidence:** C, new. +**Noli lesson:** Two-person or scan-based packout verification for SKU, strength, lot, quantity, seal, and protective insert. A label error is a product-identity incident, not a support ticket. + +#### 12. Lot identity has to survive the whole chain + +**Evidence:** A NextGen reviewer alleged different products carried identical batch numbers. Another said the company could not connect the shipped pen to the displayed COA. The company acknowledged shipping pens while labels were delayed, but did not validate the reviewer's wider claims. [July reviews and company reply](https://uk.trustpilot.com/review/nextgenpeptides.nl) +**Confidence:** C for the allegations, B for the label-delay admission, new. +**Noli lesson:** Unique lot IDs, scan at receiving and packout, quarantine on mismatch, and a customer-facing lot passport. Never ship an unlabeled unit. + +#### 13. Recovery can cost more than the order + +**Evidence:** MyPurePeptide replied that repeated reships plus overnight delivery cost more than the original order. [June 8 reply](https://www.trustpilot.com/review/mypurepeptide.com) +**Confidence:** B, new. +**Noli lesson:** Track cost per perfect order, reship rate, and recovery cost by failure reason. Generous recovery is useful only when root causes are removed. + +#### 14. Fast, visible recovery can reverse public distrust + +**Evidence:** A Nexus review changed from distrust and nonresponse to five stars after the company contacted the buyer and shipped correctly. BioPeptiTech reviews also praise immediate replacement and no-hassle refunds, but remain customer reports. [Nexus May 17 update](https://www.trustpilot.com/review/nexuspeptides.com) and [BioPeptiTech April and May reviews](https://www.trustpilot.com/review/biopeptitech.com) +**Confidence:** C, new. +**Noli lesson:** Recovery script: acknowledge, verify, choose refund or replacement, confirm the deadline, close the loop publicly without exposing customer data. + +#### 15. The remedy must match the identity risk + +**Evidence:** The Aura reviewer who alleged a mislabeled vial said the remedy was return shipping at the buyer's expense for store credit. [May 1 review](https://www.trustpilot.com/review/aurapeptides.com) +**Confidence:** C, new. +**Noli lesson:** A wrong identity or strength warrants quarantine, immediate replacement or refund, and incident review. Store credit alone is not enough. + +#### 16. COA discoverability is a conversion feature + +**Evidence:** A Peptide Plugs customer asked where COAs were. Founder Tony Wyss replied that the feedback led him to add a standalone COA page. [Groups page, accessed July 27](https://www.peptideplugs.com/groups) +**Confidence:** B for the founder's public response, new. +**Noli lesson:** Put "View lot proof" on product cards, product pages, cart, order status, and the vial QR destination. Do not make mobile users hunt through PDFs. + +### Marketing, affiliates, and community + +#### 17. Affiliate commission is already a commodity + +**Evidence:** Fresh recruiting posts offer 20 percent plus product, 25 percent plus a buyer discount, and 20 percent plus product, assets, Discord, and direct support. [AminoHack July 14](https://www.reddit.com/r/influencermarketing/comments/1uvu8fd/looking_for_affilates/), [UK/EU post May 4](https://www.reddit.com/r/influencermarketing/comments/1t3ey6f/hey_friends_from_uk_and_eu/), and [Mytide Lab June 24](https://www.reddit.com/r/influencermarketing/comments/1ueqa9v/looking_for_wellness_creators_interested_in_a_new/) +**Confidence:** A for the public offers, not their economics, new. +**Noli lesson:** Noli does not win by paying two more points. Win with trusted payouts, strong creative, clean attribution, useful education, and a product people reorder. + +#### 18. Affiliate payout trust is the real operating moat + +**Evidence:** In an Evolve recruiting thread, one commenter alleged previous affiliates were not paid and that signup pages resembled another program. Another claimed large referred sales. Neither claim is verified. [March 18 thread](https://www.reddit.com/r/influencermarketing/comments/1rx78rh/peptide_brand_looking_for_creators_20_commission/) +**Confidence:** D, new risk signal. +**Noli lesson:** Give affiliates settled-order statements, payout dates, refund clawback rules, ownership of each ticket, and a working test conversion before recruitment. + +#### 19. A compliance brief is more valuable than a giant creator roster + +**Evidence:** The new recruiting posts show abundant affiliate supply, while payment forums and public reviews show fragile intended-use and payment controls. [Recruiting evidence](https://www.reddit.com/r/influencermarketing/comments/1ueqa9v/looking_for_wellness_creators_interested_in_a_new/) and [payment evidence](https://www.reddit.com/r/PaymentProcessing/comments/1uwyosb/looking_for_payment_processor_ruo_peptide_business/) +**Confidence:** B/C synthesis, corroboration. +**Noli lesson:** Approve creators in small cohorts. Give them claim boundaries, disclosure language, approved assets, monitoring, and a removal process before links go live. + +#### 20. Young founders create channel sprawl almost immediately + +**Evidence:** Ethos founder Josh Sutton started in November 2025 and runs the company solo while employed full time. Its current link hub points to primary and backup TikTok, WhatsApp, newsletter, store, Discord, and Clapper. [May 21 founder case study](https://www.renderforest.com/blog/how-ethos-peptides-creates-professional-videos) and [current link hub](https://linktr.ee/ethospeptides) +**Confidence:** B/A, new. +**Noli lesson:** One owned hub, one primary short-form channel, and email as the source of truth. Add a channel only when it has an owner, purpose, and weekly output. + +#### 21. Founder-made content needs a repeatable production system + +**Evidence:** Sutton said simple video intros took about two hours before templates reduced them to minutes and kept marketing in-house. This is a vendor case study, so the result is not independently audited. [May 21 case study](https://www.renderforest.com/blog/how-ethos-peptides-creates-professional-videos) +**Confidence:** C, new. +**Noli lesson:** Template the recurring work: one evidence breakdown, one founder clip, one customer question, and one email per week. Founder taste stays; production time falls. + +#### 22. A disclaimer can be contradicted by the surrounding experience + +**Evidence:** Ethos's link hub says "Not for human or animal use" while inviting people to Discord to share protocols. Evolve's public reviews repeatedly describe injection, symptoms, and weight-loss use while the company replies with an RUO disclaimer. [Ethos current page](https://linktr.ee/ethospeptides) and [Evolve March to June reviews](https://www.trustpilot.com/review/evolvepeptides.com) +**Confidence:** A for what the pages display, new. +**Noli lesson:** Intended use is inferred from the whole system, not one footer. Store, reviews, creator scripts, community, support, email, and search snippets all need the same lawful position. + +#### 23. Education, ranking, affiliation, and manufacturing can conflict + +**Evidence:** PepGuide publishes vendor scoring and price tools while disclosing possible affiliate, referral, discount, and sponsor benefits. A related subreddit post recruits reviewers and ambassadors while saying the team is expanding into US manufacturing. [PepGuide current disclosure](https://pepguide.net/) and [July 12 Reddit post](https://www.reddit.com/r/PeptideGuide/comments/1uulocl/approved_opportunity_brand_ambassadors_reviewers/) +**Confidence:** A for public disclosures and post content, new. +**Noli lesson:** Separate audit governance from commerce. Noli's automated audit should publish methodology, timestamp, source links, conflicts, and change history. Affiliate compensation must never control a score. + +#### 24. "Serious-looking" site advice is plausible, not proven channel economics + +**Evidence:** A web builder claimed five peptide clients reached five-figure monthly sales with Google Ads and said clear policies, testing documents, and business details outperformed supplement-looking sites. No clients or reconciled data were provided. [June 29 pitch](https://www.reddit.com/r/Entrepreneurs/comments/1uiqgyn/anyone_running_a_peptide_business_and_getting/) +**Confidence:** D, new. +**Noli lesson:** Use the trust pattern, reject the revenue forecast. Test mobile conversion on business identity, policies, lot proof, support visibility, receipt clarity, and page speed. + +### Market, sourcing, and strategy + +#### 25. The molecule is unlikely to remain the moat + +**Evidence:** Healthtech lawyer Tim Gutwald told GLP-1 Digest that broader lawful access would commoditize the molecule and push price and margin down. [May 17 interview](https://www.glp1digest.com/p/can-peptides-become-a-real-dtc-business) +**Confidence:** B, new. +**Noli lesson:** Build the moat in brand, creator distribution, evidence UX, reliable identity, customer recovery, and first-party reorder data. + +#### 26. Subscription is not automatically the retention answer + +**Evidence:** A self-described peptide business owner in a current founder thread asked whether subscription or bundles made sense despite saying the business was doing well. The claim is anonymous and unaudited. [April to July thread](https://www.reddit.com/r/Entrepreneurs/comments/1syde58/starting_a_peptide_business/) +**Confidence:** D, new. +**Noli lesson:** First prove natural same-SKU reorder. Then test a simple replenish reminder or bundle. Do not add subscription liability before demand cadence is known. + +#### 27. "Manufacturer" is a role claim until the exact site and lot bridge are verified + +**Evidence:** PureFusion publicly markets white-label, packaging, and fulfillment, but the page does not identify an exact synthesis facility or a retail-lot-to-plant bridge. PepGuide says many manufacturers do not disclose exact production locations and listed addresses may be offices. [PureFusion current company page](https://www.linkedin.com/company/purefusion-peptide) and [PepGuide network methodology](https://pepguide.net/peptide-network-map.html) +**Confidence:** A for what the pages state, not for manufacturing capability, new. +**Noli lesson:** Verify legal manufacturer, exact production site, quality system, test methods, change control, chain of custody, and lot linkage separately. "US based," "GMP," and "FDA registered" are not substitutes. + +#### 28. No new verified retailer-to-synthesis-plant bridge was found + +**Evidence:** This sweep found public white-label and manufacturing claims, vendor maps, founder interviews, and testing disclosures. It did not find a new independently verified bridge from a sampled retail vial through its lot to the exact synthesis plant. The reviewed supply-chain map also warns that stated addresses may be offices rather than production sites. [Public map methodology](https://pepguide.net/peptide-network-map.html) and [source ledger](./noli-forum-founder-sweep-sources-2026-07-27.csv) +**Confidence:** B, negative result based on this public-source sweep. +**Noli lesson:** Keep supplier identity as unknown until diligence closes it. Gatekeeping is real. Noli should not claim direct manufacturing or a domestic source without auditable proof. + +## What the gray market actually teaches + +It teaches where the system breaks, not what Noli should copy. + +- **Cards fail when the real business and the underwritten business diverge.** +- **Disclaimers fail when reviews, creators, support, or communities tell a different intended-use story.** +- **High markup hides weak contribution margin until reships, reserves, refunds, testing, and support are counted.** +- **Private groups can create demand, but they also hide evidence, concentrate platform risk, and make the company hard to transfer.** +- **Supplier secrecy makes lot-level proof more important, not less.** +- **A big affiliate roster can magnify claims risk and payout disputes faster than it grows durable demand.** +- **The strongest trust signal is a clean chain from company identity to checkout, vial, lot, COA, order, and remedy.** + +## The simplest Noli operating model + +| Layer | One thing to launch | Metric that says scale | +|---|---|---| +| Legal lane | Counsel-approved catalog and claims map | Zero unresolved exceptions | +| Offer | One hero SKU or one tightly coherent bundle | Repeat purchase and positive contribution margin | +| Proof | Mobile lot passport | Proof-view rate and zero lot mismatches | +| Checkout | One underwritten primary path | Authorization, completion, dispute, and reserve stability | +| Fulfillment | Scan-based receiving and packout | Perfect-order rate above target | +| Support | One queue and one order timeline | First response and full resolution inside SLA | +| Growth | One primary creator/content engine | Settled CM2 payback inside target | +| Retention | Reorder reminder before subscription | Natural reorder cadence is stable | + +## Site and mobile requirements pulled from the evidence + +- Legal entity, statement descriptor, contact method, shipping terms, refund terms, and expected confirmation state visible before payment. +- Sticky mobile access to lot proof, not a buried PDF library. +- Post-payment screen with order ID and a bookmarkable status link. +- One-line explanation for any extra payment verification before the buyer leaves Noli. +- Product identity displayed consistently across product card, cart, receipt, account, label, and COA. +- Clear incident remedy for wrong item, wrong strength, damaged vial, missing unit, and carrier loss. +- No protocol or human-use content sitting beside an RUO store. +- Automated audit output shows source, captured date, confidence, conflicts, and change history. + +## What not to believe without records + +- Anonymous claims of $45,000, $80,000, $150,000, or millions per month. +- Claimed 60 to 80 percent margin without settled revenue, refunds, processor cost, reserves, testing, shipping, affiliate payout, and founder labor. +- A checkout logo as proof of stable processing. +- "FDA registered" as approval of a product or evidence of exact-site manufacturing. +- A generic COA as proof of the unit in the buyer's hand. +- A forum recommendation from someone selling processing, fulfillment, websites, traffic, or supplier access. + +## Source ledger + +The companion CSV contains the source-level evidence, dates, quotes, confidence, verification status, and Noli action: + +`.context/noli-forum-founder-sweep-sources-2026-07-27.csv` diff --git a/biologix-strategy-board/research/noli-forum-founder-sweep-sources-2026-07-27.csv b/biologix-strategy-board/research/noli-forum-founder-sweep-sources-2026-07-27.csv new file mode 100644 index 0000000..e6aa361 --- /dev/null +++ b/biologix-strategy-board/research/noli-forum-founder-sweep-sources-2026-07-27.csv @@ -0,0 +1,44 @@ +id,accessed_date,source_date,source_type,company_or_topic,title,url,evidence_summary,short_quote,confidence,verification_status,noli_lesson,risk_category,net_new_status +S001,2026-07-27,2026-07-15,Reddit forum,Payment processing,Looking for payment processor RUO Peptide Business,https://www.reddit.com/r/PaymentProcessing/comments/1uwyosb/looking_for_payment_processor_ruo_peptide_business/,"Founder says multiple high-risk processors required six-figure MRR; commenters describe continued instability even at volume.","they all require six-figures/MRR",C,"Anonymous operator claim; no underwriting documents","Secure written approval before inventory or traffic; never misclassify the business",Payments,New +S002,2026-07-27,2026-07-26,Reddit forum,Payment processing,RUO PEPTIDE PAYMENT,https://www.reddit.com/r/PaymentProcessing/comments/1v7i9ph/ruo_peptide_payment/,"A startup around $5,000 monthly seeks a processor; replies say low-volume options are limited and unstable.","around $5,000 USD per month",C,"Anonymous operator and commenter claims","Model startup payment availability before launch",Payments,Fresh update +S003,2026-07-27,current 2026-07-27,Official processor policy,Stripe,Prohibited and Restricted Businesses List FAQ,https://support.stripe.com/questions/prohibited-and-restricted-businesses-list-faqs?locale=en-GB,"Stripe says some research peptides may be supported with preventive measures and that each account is reviewed independently.","review independently each account",A,"Official current policy; exact merchant approval remains unknown","Get written approval for exact catalog, claims, flow, and controls",Payments,Current recheck +S004,2026-07-27,updated 2026-07-21,Customer review,LabTrust Peptides,LabTrust Trustpilot profile,https://www.trustpilot.com/review/labtrustpeptides.com,"Reviewer alleges an order was overlooked and the card statement showed a different LLC, followed by a dispute.","not made by a company named Lab Trust",C,"Single unprompted review; allegations not independently adjudicated","Disclose exact statement descriptor before and after payment",Checkout trust,New +S005,2026-07-27,updated 2026-07-21,Customer review,LabTrust Peptides,LabTrust refund evidence complaint,https://www.trustpilot.com/review/labtrustpeptides.com,"Reviewer says an initial refund receipt had no transaction number and appeared unverifiable.","had no transaction number",C,"Single unprompted review; refund outcome not independently verified","Refund confirmations need processor reference and settlement window",Refunds,New +S006,2026-07-27,2026-05-27,Customer review,PeptidePro,Payment did not appear in account,https://www.trustpilot.com/review/peptidepro.io,"Reviewer says named support reconciled a payment that did not appear and advanced the order.","confirmed the payment",C,"Single unprompted review","Create a payment-exception queue with named ownership",Checkout support,New +S007,2026-07-27,2026-06-02,Customer review,PeptidePro,Bank payment problem resolved,https://www.trustpilot.com/review/peptidepro.io,"Reviewer says support helped resolve a bank payment issue and the order was sent.","outstanding in helping resolve the issue",C,"Single unprompted review","Measure payment exception resolution time and conversion recovery",Checkout support,New +S008,2026-07-27,2026-05-01,Customer review and company reply,Apex Peptide Supply,Sketchy Payments,https://www.trustpilot.com/review/apexpeptidesupply.com,"Reviewer abandoned a checkout that appeared to require a crypto account; company said it was testing the flow and planned standard card checkout.","Secure checkouts shouldn't feel complicated",B/C,"Company reply verifies its test; abandonment is one review","Explain extra verification before click and test mobile completion",Checkout UX,New +S009,2026-07-27,2026-07-03,Company reply,R-Phase,Overwhelmed team and higher order volume,https://www.trustpilot.com/review/r-phase.com,"Company says higher-than-expected volume caused shipping and support delays.","small, currently overwhelmed team",B,"Direct company admission on public review page","Capacity-gate promotions and pause spend when queues exceed limits",Scaling,New +S010,2026-07-27,2026-07-03,Company reply,R-Phase,Email deliverability and missing confirmations,https://www.trustpilot.com/review/r-phase.com,"Company says some German email providers blocked confirmations while fulfillment and support were delayed.","known deliverability issue",B,"Direct company reply","Provide a bookmarkable mobile order-status page",Order UX,New +S011,2026-07-27,2026-07-03,Company reply,R-Phase,Customers redirected to Discord,https://www.trustpilot.com/review/r-phase.com,"Company repeatedly directs missing-order customers to Discord for resolution.","reach out via our Discord",B,"Direct company reply","Keep community chat separate from the auditable order record",Support operations,New +S012,2026-07-27,2026-07-18,Customer review and company reply,NextGen Peptides,Incomplete order and refund friction,https://uk.trustpilot.com/review/nextgenpeptides.nl,"Reviewer says an unavailable item accepted payment and was omitted; company discusses refund constraints in reply.","missing one of the products",B/C,"Company reply confirms dispute but not every allegation","Reserve stock at authorization and offer refund before partial ship",Inventory,New +S013,2026-07-27,2026-07-01,Customer review and company reply,NextGen Peptides,Unlabeled pens and COA mismatch allegation,https://uk.trustpilot.com/review/nextgenpeptides.nl,"Reviewer alleges an unlabeled pen and no unit-to-COA match; company acknowledges labels were delayed.","our labels were delayed",B/C,"Label delay admitted; broader traceability claim unverified","Never ship unlabeled units; scan unique lot at packout",Product identity,New +S014,2026-07-27,2026-07-10,Customer review,NextGen Peptides,Identical batch number allegation,https://uk.trustpilot.com/review/nextgenpeptides.nl,"Reviewer alleges different items and a friend's different order shared batch numbers.","had the same batch numbers",C,"Single reviewer allegation","Enforce unique lot identity and quarantine any mismatch",Product identity,New +S015,2026-07-27,2026-05-01,Customer review,Aura Peptides,Mislabeled and loose vials,https://www.trustpilot.com/review/aurapeptides.com,"Reviewer alleges four loose vials, a wrong label, and a store-credit-only remedy.","Mine were labeled wrong",C,"Single unprompted review","Use scan-based packout and refund identity incidents",Fulfillment,New +S016,2026-07-27,updated 2026-03-19,Customer review,Aura Peptides,Broken vial,https://www.trustpilot.com/review/aurapeptides.com,"Reviewer reports a delayed package arriving with a broken vial.","it came broken",C,"Single unprompted review","Validate packaging with drop testing and damage tracking",Packaging,New +S017,2026-07-27,2026-06-08,Company reply,MyPurePeptide,Repeated reships exceeded original order cost,https://www.trustpilot.com/review/mypurepeptide.com,"Company says multiple replacements plus overnight shipping cost more than the order.","spent more on replacements",B,"Direct company reply","Track recovery cost and remove repeated root causes",Unit economics,New +S018,2026-07-27,updated 2026-05-17,Customer review,Nexus Peptides,Public recovery reversed distrust,https://www.trustpilot.com/review/nexuspeptides.com,"Reviewer updated from nonresponse and distrust to five stars after contact and correct shipment.","shipped the product, and it was quick and correct",C,"Editable unprompted review","Use fast, visible, privacy-safe recovery",Customer recovery,New +S019,2026-07-27,2026-05-15,Customer review,BioPeptiTech,Missing item replaced overnight,https://www.trustpilot.com/review/biopeptitech.com,"Reviewer says a missing unit was express shipped overnight.","express shipped it overnight",C,"Single unprompted review","Define when expedited replacement is justified",Customer recovery,New +S020,2026-07-27,2026-04-23,Customer review,BioPeptiTech,No-hassle refund,https://www.trustpilot.com/review/biopeptitech.com,"Reviewer says management issued a full refund without requiring a return.","full refund with absolutely no hassle",C,"Single unprompted review","Model generous remedies inside contribution margin",Customer recovery,New +S021,2026-07-27,2026-04-01,Customer review,Southern Aminos,Popularity and stockouts,https://www.trustpilot.com/review/southernaminos.com,"Reviewer says a sale and growing popularity coincided with many out-of-stock items.","getting too popular",C,"Single review; causal link unverified","Tie promotions to allocated stock and safety cover",Inventory,New +S022,2026-07-27,accessed 2026-07-27,Founder community reply,Peptide Plugs,COA page created after customer feedback,https://www.peptideplugs.com/groups,"Founder says a customer question led to a standalone COA page.","created a separate COA page",B,"Public founder reply; page date is relative","Make lot proof easy to find on mobile at every decision point",Evidence UX,New +S023,2026-07-27,2026-07-14,Affiliate recruitment,AminoHack,Looking for Affiliates,https://www.reddit.com/r/influencermarketing/comments/1uvu8fd/looking_for_affilates/,"Company recruitment offers 20 percent commission plus complimentary product.","20% plus complementary products",A,"Public offer; economics and payouts not audited","Do not compete on commission alone",Affiliates,New +S024,2026-07-27,2026-05-04,Affiliate recruitment,Unknown UK/EU peptide company,Creator recruitment,https://www.reddit.com/r/influencermarketing/comments/1t3ey6f/hey_friends_from_uk_and_eu/,"Recruiter offers 25 percent commission and a 15 percent audience discount.","25% commission on every sale",A,"Public offer; company identity and economics unresolved","Treat commission as commodity; protect margin",Affiliates,New +S025,2026-07-27,2026-06-24,Affiliate recruitment,Mytide Lab,Wellness creator affiliate partnership,https://www.reddit.com/r/influencermarketing/comments/1ueqa9v/looking_for_wellness_creators_interested_in_a_new/,"Offer combines 20 percent, free product, creative assets, private Discord, and direct support.","Creative assets and promotional support",A,"Public offer; performance not audited","Win on onboarding, creative, attribution, and payout trust",Affiliates,New +S026,2026-07-27,2026-03-18,Affiliate forum,Evolve Peptides,Peptide brand looking for creators,https://www.reddit.com/r/influencermarketing/comments/1rx78rh/peptide_brand_looking_for_creators_20_commission/,"Commenter alleges unpaid affiliates and copycat signup pages; another claims large referred sales.","they haven't been paid",D,"Anonymous allegations and revenue claim","Publish settled-order statements and payout rules",Affiliate trust,New +S027,2026-07-27,2026-05-21,Commercial founder case study,Ethos Peptides,How Ethos creates professional videos,https://www.renderforest.com/blog/how-ethos-peptides-creates-professional-videos,"Founder is described as a November 2025 solopreneur with a full-time job who keeps marketing in-house.","runs it as a solopreneur",C,"Named founder in vendor-authored case study","Reduce founder bottlenecks with reusable content templates",Founder operations,New +S028,2026-07-27,2026-05-21,Commercial founder case study,Ethos Peptides,Video production time savings,https://www.renderforest.com/blog/how-ethos-peptides-creates-professional-videos,"Case study says intro and outro creation fell from about two hours to minutes.","around two hours to minutes",C,"Commercial case study; result not independently audited","Template recurring content while preserving founder voice",Content operations,New +S029,2026-07-27,current 2026-07-27,Company-controlled link hub,Ethos Peptides,Ethos Linktree,https://linktr.ee/ethospeptides,"Six-month-old account links TikTok, backup TikTok, WhatsApp, newsletter, store, Discord, and Clapper.","Joined December 2025",A,"Page verifies linked channel set","Use one owned hub, one primary social channel, and owned email",Channel strategy,New +S030,2026-07-27,current 2026-07-27,Company-controlled link hub,Ethos Peptides,Protocol community beside RUO disclaimer,https://linktr.ee/ethospeptides,"Page invites visitors to share protocols while stating products are not for human or animal use.","share protocols",A,"Page proves displayed language, not actual community behavior","Align community, store, support, and claims with one lawful intended use",Intended use,New +S031,2026-07-27,2026-06-23 to 2026-03-18,Customer reviews and company replies,Evolve Peptides,Evolve Trustpilot profile,https://www.trustpilot.com/review/evolvepeptides.com,"Public reviews describe injection, symptoms, weight-loss use, and Reta; company replies with RUO disclaimer.","all of our products are intended strictly for research",A/C,"Page content is public; customer experiences are unverified","Monitor public reviews and remove intended-use contradictions from the full system",Intended use,New +S032,2026-07-27,current 2026-07-27,Editorial and affiliate disclosure,PepGuide,Peptide Guide vendor scoring and price tracker,https://pepguide.net/,"Site scores vendors and shows prices while disclosing possible referral, affiliate, discount, or sponsor benefits.","may receive referral fees",A,"Direct public disclosure","Separate automated audit governance from commercial compensation",Conflict of interest,Current recheck +S033,2026-07-27,2026-07-12,Reddit community post,PeptideGuide,Ambassadors reviewers and manufacturing,https://www.reddit.com/r/PeptideGuide/comments/1uulocl/approved_opportunity_brand_ambassadors_reviewers/,"Post recruits reviewers and ambassadors while saying the team is expanding into US-based manufacturing.","expanding into U.S.-based manufacturing",A,"Public post; manufacturing capability not independently verified","Disclose conflicts and keep reviewer scoring independent",Community governance,New +S034,2026-07-27,2026-06-29,Lead-generation post,Google Ads and site trust,Peptide website and Google Ads pitch,https://www.reddit.com/r/Entrepreneurs/comments/1uiqgyn/anyone_running_a_peptide_business_and_getting/,"Web builder claims five live client sites and says clear policies, testing documents, and business information outperform supplement-looking stores.","Not selling the products myself",D,"Self-interested pitch; clients and performance not identified","Test the trust architecture; reject the revenue forecast",Site conversion,New +S035,2026-07-27,2026-05-17,Expert interview,Peptide market strategy,Can Peptides Become a Real DTC Business,https://www.glp1digest.com/p/can-peptides-become-a-real-dtc-business,"Healthtech lawyer says broader lawful access would commoditize the molecule and compress price and margin.","the molecule will be commoditized",B,"Named expert opinion, not a forecast audit","Build moat in brand, evidence, service, distribution, and data",Market strategy,New +S036,2026-07-27,2026-04 to 2026-07,Founder forum,Peptide business retention,Starting a peptide business,https://www.reddit.com/r/Entrepreneurs/comments/1syde58/starting_a_peptide_business/,"Self-described owner asks whether to add subscription or bundles; thread is dense with service sellers and would-be founders.","subscription service or bundle service",D,"Anonymous self-description; no business records","Prove natural reorder before adding subscription",Retention,New +S037,2026-07-27,current 2026-07-27,Company profile,PureFusion Peptide,LinkedIn company page,https://www.linkedin.com/company/purefusion-peptide,"Profile claims white-label branding, packaging, and fulfillment but does not name an exact synthesis plant or lot bridge.","White Label & Fulfillment",A,"Verifies public claim only; capability and plant identity unverified","Verify every supply-chain role and exact site separately",Sourcing,New +S038,2026-07-27,current 2026-07-27,Supply-chain methodology,PepGuide,Global Peptide Network Map,https://pepguide.net/peptide-network-map.html,"Methodology says many manufacturers do not disclose exact production locations and listed addresses can be offices.","may correspond to a corporate or business office",A,"Direct methodology statement; underlying map entries vary","Treat address and manufacturer labels as leads, not proof",Sourcing,New +S039,2026-07-27,2026-07-21,Anonymous operator forum,Scaling and payments,RUO peptide payment processing,https://www.reddit.com/r/PaymentProcessing/comments/1v2g8qa/ruo_peptide_payment_processing/,"Poster claims $150,000 monthly, 7 percent processing cost, SEO acquisition, and a $600,000 target; none is reconciled.","Currently paying a 7% fee",D,"Anonymous unaudited revenue and fee claims","Do not forecast from forum revenue; require processor statements and settled P&L",Financial claims,New +S040,2026-07-27,accessed 2026-07-27,BlackHatWorld forum,Peptide business viability,Anyone making money with peptides,https://www.blackhatworld.com/seo/anyone-making-money-with-peptides.1797570/,"Posters repeatedly identify payment processing as the operating bottleneck and position affiliate as easier than owning operations.","payment processing side is a nightmare",D,"Anonymous forum opinion; some posters may sell services","Use forums as bottleneck sensors, not operating instructions",Forum quality,New +S041,2026-07-27,accessed 2026-07-27,BlackHatWorld forum,Peptide traffic,Anyone here worked with peptide or supplement offers,https://www.blackhatworld.com/seo/anyone-here-worked-with-peptide-or-supplement-offers.1794820/,"Replies say compliance, ad approvals, payment, and fresh traffic sources make scaling harder than it looks.","test small before committing",D,"Anonymous mixed-quality forum; includes prohibited tactics not reproduced here","Run lawful controlled channel tests before scaling",Marketing,New +S042,2026-07-27,2026-04-28,Founder podcast,Adera State,Peptide Industry Insider: What's Actually Coming Next,https://podcasts.apple.com/ca/podcast/peptide-industry-insider-whats-actually-coming-next/id1799231948?i=1000764185310,"Founder promotes mainstream-friendly formats and argues felt effect is a poor quality test.","feeling it is the worst way to judge",C,"Commercial founder interview; product claims not independently audited","Use analytical identity and outcome evidence, not sensation, as proof",Founder media,New +S043,2026-07-27,accessed 2026-07-27,Negative research result,Supplier identity,No verified retailer-to-plant bridge found,https://pepguide.net/peptide-network-map.html,"Public sweep found claims and maps but no new independently verified sampled-retail-vial-to-exact-synthesis-plant bridge; the map methodology warns that stated addresses may be offices.","Unknown stays unknown",B,"Negative result limited to searched public sources; linked methodology shows the public-data limitation","Do not claim direct or domestic manufacturing without auditable lot linkage",Sourcing,Negative result diff --git a/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.json b/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.json new file mode 100644 index 0000000..67879df --- /dev/null +++ b/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.json @@ -0,0 +1,449 @@ +{ + "title": "Noli Retatrutide Storefront Census: Corrected Synthesis", + "generatedAt": "2026-07-27T22:46:00.000Z", + "sourcePayload": "biologix-strategy-board/research/retatrutide-vendor-audit-data.js", + "methodology": { + "scope": "570 deduplicated public domains from a 655-record source universe", + "pagesObserved": 1855, + "safetyBoundary": "Public pages only. No account creation, gate or CAPTCHA bypass, fabricated identity, cart mutation, checkout submission, transaction, credential use, or retry of blocked requests.", + "evidenceBoundary": "Every domain record retains source URLs, timestamps, confidence, and compact referenced evidence. Aggregates are observations from detected public pages, not proof of sales, legality, product quality, payment activation, or business performance.", + "correction": "Product identity now requires URL, title, H1, Product schema name, or a close Reta commerce block. Non-Reta product pages are not promoted by related-product or sitewide Reta mentions.", + "aggregateConfidence": "medium" + }, + "integrity": { + "domains": 570, + "evidenceRecords": 13555, + "evidenceReferences": 14648, + "brokenEvidenceReferences": 0, + "payloadBytes": 9172005, + "gzipBytes": 1366400, + "accelerateLabsRegression": { + "domain": "accelerate-labs.us", + "retaListed": false, + "listingStatus": null, + "pricesExtracted": 0, + "strengthsExtracted": 0, + "reason": "Observed pages were AOD-9604, Shipping Protection, and collection pages, not a dedicated Reta product listing." + } + }, + "crawlStatus": { + "completed": 295, + "partial": 83, + "blocked": 32, + "failed": 100, + "skipped": 60, + "completedOrPartial": 378, + "completedOrPartialPct": 66.3 + }, + "segments": { + "retail": { + "domains": 217, + "completed": 174, + "partial": 33, + "blocked": 6, + "failed": 4, + "retaListed": 145, + "retaAvailable": 99 + }, + "probableRetail": { + "domains": 28, + "completed": 22, + "partial": 3, + "blocked": 2, + "failed": 1, + "retaListed": 12, + "retaAvailable": 11 + }, + "manufacturerOrSupplier": { + "domains": 17, + "completed": 8, + "partial": 8, + "blocked": 1, + "retaListed": 0, + "retaAvailable": 0 + }, + "directories": { + "domains": 33, + "skipped": 33, + "retaListed": 0 + }, + "unknownPublicWebsite": { + "domains": 248, + "completed": 91, + "partial": 39, + "blocked": 23, + "failed": 95, + "retaListed": 0 + }, + "otherSkipped": { + "domains": 27, + "definition": "Social or messaging, contact or file service, and unlinked records" + } + }, + "retaMarket": { + "retailAndProbableDomains": 245, + "listed": 157, + "listedPct": 64.1, + "available": 110, + "availablePctOfListed": 70.1, + "outOfStock": 24, + "listedWithoutAvailabilityCue": 21, + "preorder": 2, + "interpretation": "This is evidence of a crowded visible market, not evidence of revenue, customer count, margin, or legal durability." + }, + "platforms": { + "denominator": 245, + "counts": { + "WooCommerce": 138, + "Unknown": 62, + "Shopify": 14, + "Next.js": 13, + "Medusa": 7, + "Wix": 5, + "BigCommerce": 3, + "WordPress": 2, + "Magento": 1 + }, + "availableCounts": { + "WooCommerce": 73, + "Unknown": 10, + "Shopify": 8, + "Next.js": 6, + "Medusa": 5, + "Wix": 4, + "BigCommerce": 2, + "WordPress": 2 + }, + "lesson": "WooCommerce is the dominant detected stack at 56.3 percent. Dominance shows familiarity and plugin availability, not that it is safer, faster, or better underwritten." + }, + "productPresentation": { + "mostCommonPlausibleStrengthTokensByDomain": { + "10mg": 128, + "20mg": 93, + "30mg": 92, + "5mg": 90, + "50mg": 61, + "15mg": 53, + "60mg": 53, + "40mg": 41, + "100mg": 30, + "12mg": 17, + "80mg": 15 + }, + "strengthFilter": "mg tokens from 1mg through 100mg", + "caveat": "A token can come from a related product, bundle, molecular description, or sitewide block. It is not treated as an exact SKU variant without page-level review.", + "minimumUsefulListing": [ + "Unambiguous product identity", + "Variant-bound strength and price", + "Live stock state", + "Shipping expectation", + "Lot-specific report link", + "Research-use restriction", + "Contact and policy access" + ] + }, + "pricing": { + "availableDomainsWithPlausibleUsdTokens": 99, + "filter": "Displayed USD tokens from $5 through $2,000", + "domainMinimumDistribution": { + "p10": 8, + "p25": 19.98, + "median": 39.99, + "p75": 80, + "p90": 152 + }, + "domainMedianDistribution": { + "p25": 67.25, + "median": 114, + "p75": 171 + }, + "caveat": "These are page-level price tokens, not normalized price-per-mg or guaranteed Reta variant prices. Cross-sells, kits, crossed-out prices, shipping protection, and bundles can contaminate a domain rollup.", + "decisionRule": "Do not set Noli pricing from this aggregate. Build a manually verified strength-price matrix for the closest 15 to 25 comparable storefronts, then compare price per mg, test cost, shipping, discounts, and expected contribution margin." + }, + "marketing": { + "denominator": 245, + "offerDomains": { + "freeShipping": 69, + "bundle": 67, + "percentageDiscount": 65, + "subscription": 50, + "coupon": 25, + "affiliate": 15, + "guarantee": 14, + "bulkPricing": 13, + "loyalty": 13, + "referral": 3 + }, + "trackerDomains": { + "googleAnalytics": 79, + "googleTagManager": 68, + "metaPixel": 28, + "klaviyo": 26, + "tiktokPixel": 22, + "redditPixel": 9, + "sentry": 6 + }, + "lesson": "The common play is offer-led conversion plus basic measurement. A minimal Noli stack should measure acquisition, product view, checkout start, accepted order, refund, chargeback, and repeat purchase before adding more channels." + }, + "trustAndOperations": { + "denominator": 245, + "domainsWithCoaLinks": 119, + "domainsWithReviewEvidence": 62, + "domainsWithPolicies": 174, + "domainsWithContactEvidence": 194, + "domainsWithShippingCues": 93, + "domainsWithReturnCues": 150, + "reviewProviderDomains": { + "Trustpilot": 32, + "JudgeMe": 3, + "Yotpo": 3, + "GoogleReviews": 2, + "Loox": 2 + }, + "evidenceBoundary": "Displayed reviews, ratings, badges, COAs, and purity numbers are first-party claims unless independently authenticated." + }, + "claimsRisk": { + "denominator": 245, + "researchOnlyCueDomains": 147, + "humanUseOrOutcomeCueDomains": 181, + "bothCueTypes": 136, + "bothCueTypesPct": 55.5, + "categories": { + "administration": 152, + "therapeutic": 146, + "humanOutcome": 69, + "humanEvidence": 49 + }, + "lesson": "A research-only footer does not erase conflicting product, dosing, administration, therapeutic, or human-outcome language elsewhere. Treat this as a launch-blocking content-control problem, not a wording loophole." + }, + "payment": { + "denominator": 245, + "domainsWithAnyVisibleOrIntegrationSignal": 87, + "domainsWithVisibleMethods": 47, + "domainsWithIntegrationSignals": 49, + "domainsWithBoth": 9, + "visibleMethodDomains": { + "Discover": 22, + "Visa": 20, + "AmericanExpress": 17, + "Cryptocurrency": 15, + "Mastercard": 14, + "Zelle": 12, + "BankTransfer": 11, + "PayPal": 11, + "Bitcoin": 9, + "ACH": 8, + "Venmo": 7, + "ApplePay": 5 + }, + "integrationSignalDomains": { + "NMI": 13, + "Bankful": 9, + "eDebitDirect": 9, + "Paynote": 6, + "Stripe": 6, + "AuthorizeNet": 5, + "Blockonomics": 4, + "NOWPayments": 4, + "Square": 4 + }, + "paymentCodeCensus": { + "domains": 149, + "evidenceRows": 783, + "processorOrPspCodeDomains": 48, + "activeProviderLayerRetaCartDomains": 7, + "directExamples": [ + "LifeLink: Stripe", + "ResearchChemHQ and Rivn: PayPal-named integration IDs", + "NMI: 6 active Reta carts", + "Authorize.Net: 3 active Reta carts", + "eDebit Direct: 3 active Reta carts", + "NewBioRx: Bankful", + "Umbrella: Paynote" + ] + }, + "merchantContractProcessorOrIsoEvidence": 0, + "merchantContractAcquirerOrSponsorBankEvidence": 0, + "evidenceBoundary": "Public code can identify named gateways, PSPs, processors, and active provider IDs. It does not by itself establish the merchant's contractual processor or ISO, MID, acquirer, sponsor bank, reserves, settlement path, merchant of record, or transaction success.", + "noliRule": "Use only providers that give written approval for the exact legal entity, product catalog, claims, fulfillment model, geography, and merchant category. Model reserve, hold, chargeback, and termination exposure before launch." + }, + "sourcing": { + "denominator": 245, + "firstPartyClaimDomains": { + "lyophilized": 120, + "thirdPartyTesting": 79, + "purityClaim": 69, + "batchTesting": 19, + "cGMP": 13, + "USManufacturing": 10, + "manufacturerClaim": 7, + "domesticFulfillment": 6, + "wholesaleOrOem": 4, + "fdaRegistration": 1 + }, + "independentlyVerifiedManufacturerIdentities": 0, + "lesson": "Public competitor pages do not reveal a dependable manufacturer map. Manufacturer selection requires identity and ownership checks, quality agreements, facility evidence, independent lot sampling, assay and identity testing, endotoxin and sterility strategy where relevant, stability, traceability, complaints, recall, and continuity planning." + }, + "observationalCorrelations": { + "warning": "These are descriptive differences, not causal proof. Available storefronts were often more crawlable and exposed more pages, so detection and survivorship bias are substantial.", + "availableN": 110, + "nonAvailableN": 135, + "ratesPct": { + "coaLinks": { + "available": 65.5, + "nonAvailable": 34.8, + "differencePoints": 30.7 + }, + "reviewEvidence": { + "available": 34.5, + "nonAvailable": 17.8, + "differencePoints": 16.7 + }, + "policies": { + "available": 86.4, + "nonAvailable": 58.5, + "differencePoints": 27.9 + }, + "tracking": { + "available": 72.7, + "nonAvailable": 43.7, + "differencePoints": 29 + }, + "offers": { + "available": 82.7, + "nonAvailable": 49.6, + "differencePoints": 33.1 + }, + "shippingCues": { + "available": 53.6, + "nonAvailable": 25.2, + "differencePoints": 28.4 + }, + "contactEvidence": { + "available": 94.5, + "nonAvailable": 66.7, + "differencePoints": 27.8 + }, + "conflictingResearchAndHumanCues": { + "available": 74.5, + "nonAvailable": 40, + "differencePoints": 34.5 + } + } + }, + "northlineCaseStudy": { + "domain": "northlinelabs.org", + "sourceUrl": "https://northlinelabs.org/product/reta-glp-3/", + "capturedAt": "2026-07-27T22:46:00.000Z", + "confidence": "high for visible page facts; low for review authenticity; unknown for payment chain and manufacturer", + "status": "completed", + "listingStatus": "available", + "variants": [ + { + "strength": "10mg", + "priceUsd": 79.99 + }, + { + "strength": "15mg", + "priceUsd": 99.99 + }, + { + "strength": "20mg", + "priceUsd": 129.99 + }, + { + "strength": "30mg", + "priceUsd": 189.99 + }, + { + "strength": "50mg", + "priceUsd": 299.99 + } + ], + "observed": [ + "Add-to-cart and current stock cues", + "Buy one, get one 50 percent off", + "Free shipping over $200", + "Same or next business-day dispatch claim", + "Public quality, shipping, contact, and certificate pages", + "Lot NLL-8620700 with linked purity and endotoxin PDFs", + "Google Tag Manager present", + "Visa, American Express, Discover, and Google Pay shown in public footer" + ], + "firstPartyClaims": [ + "4.8 rating", + "867 verified reviews", + "99 percent or greater purity", + "Independent HPLC and mass-spectrometry testing", + "Lot traceability and same-day fulfillment" + ], + "unknown": [ + "Checkout integration", + "Gateway or PSP activation", + "Processor or ISO", + "Acquirer or sponsor bank", + "Transaction success", + "Manufacturer identity", + "Revenue, order volume, margin, refund rate, and chargeback rate" + ] + }, + "noliPriorities": [ + { + "priority": 1, + "action": "Make legal product eligibility and exact-claims review the first go or no-go gate.", + "why": "A large share of visible stores mix research-only language with human-use cues, creating obvious fragility." + }, + { + "priority": 2, + "action": "Launch a narrow catalog with one product-data template and a small, justified variant set.", + "why": "Simple scales. Exact identity, price, stock, reports, shipping, policies, and contact should be consistent everywhere." + }, + { + "priority": 3, + "action": "Require lot-specific evidence and traceability before inventory is sellable.", + "why": "Generic purity badges are common; defensible trust comes from lot-bound documents and independent verification." + }, + { + "priority": 4, + "action": "Secure written payment underwriting before building growth around a checkout.", + "why": "Competitor HTML exposes integrations, not the processor or acquiring chain and not durable approval." + }, + { + "priority": 5, + "action": "Use one storefront, one approved payment path, one fulfillment workflow, and one analytics taxonomy first.", + "why": "WooCommerce is common, but plugin sprawl and parallel payment paths add failure modes before product-market proof." + }, + { + "priority": 6, + "action": "Instrument contribution margin and risk, not just revenue.", + "why": "Track landed product cost, testing, packaging, shipping, discounts, payment fees, reserve cost, refunds, chargebacks, support, and reships by order." + }, + { + "priority": 7, + "action": "Build a manually verified 15 to 25 competitor panel for weekly pricing and offer decisions.", + "why": "The full automated census is excellent for discovery, but exact variant pricing needs page-level normalization." + }, + { + "priority": 8, + "action": "Treat manufacturer identity and continuity as diligence work, not forum intelligence.", + "why": "The public crawl independently verified zero manufacturer identities." + } + ], + "findings": [ + "The market is visibly crowded: 157 of 245 retail or probable storefronts listed Reta and 110 showed an availability cue.", + "Visibility is not viability: the crawl cannot prove sales, margin, legal durability, payment stability, product quality, or customer retention.", + "WooCommerce is the default detected operating system, appearing on 138 of 245 storefronts.", + "The strongest recurring listing pattern is exact variant choice, visible price, stock, shipping, report access, and a clear cart action.", + "Automated price tokens are directional. The median domain minimum was $39.99 and the median domain-level median was $114, but neither is a clean normalized Reta price.", + "Offer-led selling is common: free shipping, bundles, percentage discounts, and subscriptions were the four most detected offer types.", + "Available storefronts exposed offers and measurement more often than non-available storefronts, but the relationship is observational and crawl-biased.", + "Trust infrastructure is a competitive baseline: COA links, policies, contact access, shipping detail, and review evidence were much more visible on available sites.", + "Research-only wording is not a safe harbor when product pages also contain dosing, administration, therapeutic, or human-outcome cues.", + "Payment code is materially readable: the combined census produced 783 exact rows across 149 domains, including processor and PSP brands, gateways, configured plugins, and active Reta-cart provider IDs. The private merchant-contract and acquiring chain remains separate.", + "No public competitor page independently established its true manufacturer, so supplier names remain gated and unverified.", + "Northline demonstrates a high-clarity page structure, but its review, purity, testing, and fulfillment numbers remain first-party claims.", + "Noli should compete on verified lot evidence, operational clarity, fast support, and reliable fulfillment, not on the loudest purity badge.", + "The fastest responsible route is a narrow launch with one stack and explicit gates for legality, supplier quality, payments, and contribution margin.", + "The opportunity is commercially interesting but structurally fragile. It is viable only if Noli can make compliance, underwriting, quality control, and fulfillment durable before scaling acquisition." + ] +} diff --git a/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.md b/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.md new file mode 100644 index 0000000..2f41624 --- /dev/null +++ b/biologix-strategy-board/research/noli-full-crawl-synthesis-2026-07-27.md @@ -0,0 +1,58 @@ +# Noli storefront census: what matters + +Corrected dataset: 570 domains, 1,855 public pages, 13,555 compact evidence records, and zero broken evidence references. The safe crawl used public pages only. It did not create accounts, bypass gates, mutate carts, submit checkout, run transactions, or use credentials. + +## The market in one screen + +- 245 domains were retail or probable retail. +- 157 listed Reta; 110 showed an availability cue. +- Listing state: 110 available, 24 out of stock, 21 listed without a clear availability cue, and 2 preorder. +- Crawl state: 295 completed, 83 partial, 32 blocked, 100 failed, and 60 intentionally skipped. +- This proves a crowded visible market. It does not prove sales, margin, legality, product quality, or payment durability. + +## Fifteen findings + +1. **WooCommerce is the default stack.** It appeared on 138 of 245 storefronts, versus Shopify on 14 and Next.js on 13. That shows familiarity and plugin availability, not that WooCommerce is inherently safer or better underwritten. + +2. **The listing standard is obvious.** A useful page needs unambiguous identity, variant-bound strength and price, stock, shipping expectation, lot-specific report access, research-use language, contact, and policies. + +3. **Pricing needs a manual panel.** Among 99 available domains with plausible USD tokens, the median domain minimum was $39.99 and the median domain-level median was $114. Tokens can be bundles, cross-sells, shipping protection, or crossed-out prices. Do not price Noli from the aggregate. + +4. **Common displayed strengths were 10mg, 20mg, 30mg, 5mg, 50mg, and 15mg.** These are domain-level text detections, not guaranteed SKU variants. Exact strength-price comparisons need page review. + +5. **Offers are standard.** Free shipping appeared on 69 storefronts, bundles on 67, percentage discounts on 65, and subscriptions on 50. + +6. **Basic measurement is the norm among stronger stores.** Google Analytics appeared on 79, Google Tag Manager on 68, Meta Pixel on 28, Klaviyo on 26, and TikTok Pixel on 22. + +7. **Available stores exposed more operating proof.** COA links appeared on 65.5% of available stores versus 34.8% of the rest; policies 86.4% versus 58.5%; contact evidence 94.5% versus 66.7%; shipping cues 53.6% versus 25.2%. + +8. **Available stores also exposed more conversion machinery.** Offers appeared on 82.7% versus 49.6%, and tracking on 72.7% versus 43.7%. These are observational differences with major crawl and survivorship bias, not causal proof. + +9. **Reviews are weaker evidence than they look.** Review evidence appeared on 62 of 245 stores, led by Trustpilot on 32. Counts, stars, “verified” labels, badges, COAs, and purity numbers remain first-party claims until authenticated. + +10. **The claims conflict is widespread.** 136 of 245 storefronts showed both research-only language and human-use, administration, therapeutic, or outcome cues. A footer disclaimer does not erase conflicting page copy. This is a content-control risk, not a wording loophole. + +11. **Payment code is materially readable.** The combined code census produced 783 exact rows across 149 domains. Forty-eight domains exposed processor/PSP-level code and seven exposed active provider-layer IDs for a tested Reta cart. Direct examples include Stripe on LifeLink, PayPal-named IDs on ResearchChemHQ and Rivn, NMI on six carts, Authorize.Net on three, eDebit Direct on three, Bankful on NewBioRx, and Paynote on Umbrella. + +12. **The provider and the private contract are different facts.** Active cart IDs, official SDKs, and configured client code can identify the provider or gateway. They do not establish the merchant's contractual processor/ISO, MID, acquirer, reserve, settlement path, merchant of record, or transaction success. + +13. **Manufacturer names remain gated.** Public pages produced many testing, purity, cGMP, US-made, and manufacturing claims, but zero independently verified manufacturer identities. + +14. **Northline is a strong page-clarity example, not a verified business benchmark.** Its current public page shows 10/15/20/30/50mg at $79.99/$99.99/$129.99/$189.99/$299.99, stock and cart cues, a BOGO offer, free shipping over $200, public lot reports, and GTM. Its 4.8 rating, 867 reviews, purity, testing, and fulfillment claims are first-party. Its checkout integration, processor, acquirer, manufacturer, revenue, margin, and chargebacks remain unknown. + +15. **The opportunity is interesting but fragile.** A visible market exists, but Noli is viable only if legal eligibility, exact claims, supplier quality, written payment approval, lot traceability, fulfillment, and contribution margin remain durable under growth. + +## Noli: simple scales, complex fails + +1. Make legal product eligibility and exact-claims review the first go or no-go gate. +2. Launch a narrow catalog with one product-data template and a small justified variant set. +3. Require lot-bound testing and traceability before inventory becomes sellable. +4. Secure written payment underwriting for the exact entity, products, claims, geography, and fulfillment model. +5. Start with one storefront, one approved payment path, one fulfillment workflow, and one analytics taxonomy. +6. Track contribution margin after testing, packaging, shipping, discounts, fees, reserves, refunds, chargebacks, support, and reships. +7. Maintain a manually verified 15 to 25 competitor panel for exact weekly pricing and offer decisions. +8. Treat manufacturer identity, quality agreements, independent lot sampling, stability, recall, and continuity as diligence, not forum intelligence. + +Full machine-readable synthesis: `.context/noli-full-crawl-synthesis-2026-07-27.json` + +Full domain evidence: `biologix-strategy-board/research/retatrutide-vendor-audit-data.js` diff --git a/biologix-strategy-board/research/noli-payment-layer-taxonomy-2026-07-27.md b/biologix-strategy-board/research/noli-payment-layer-taxonomy-2026-07-27.md new file mode 100644 index 0000000..6fb247d --- /dev/null +++ b/biologix-strategy-board/research/noli-payment-layer-taxonomy-2026-07-27.md @@ -0,0 +1,214 @@ +# Noli Payment-Layer Taxonomy + +Verified against current official provider materials on July 27, 2026. + +## The rule + +Public website code can identify an integration signal. It usually cannot identify the merchant's approved processor, underwriting relationship, acquirer, sponsor bank, MID, settlement path, or whether the account is live. + +Use this wording: + +- Code evidence: "Public code contains a Stripe integration signal." +- Checkout evidence: "The public checkout displayed PayPal as an available option." +- Provider-level fact: "Stripe operates as a gateway and processor and is registered as a payment facilitator under certain member-bank arrangements." +- Merchant-level verification: "The merchant's processing agreement identifies the processor and acquirer." + +Do not turn the first statement into the fourth. + +## Layer definitions + +| Layer | What it does | What normally proves it for a specific merchant | +|---|---|---| +| Checkout or integration | The customer-facing form, hosted page, plugin, SDK, API, or script | Public source code or visible checkout | +| Gateway | Securely transmits payment data toward processing infrastructure | Provider product documentation plus the merchant's configured account | +| Payment service provider, or PSP | Broad umbrella for a provider that gives merchants access to one or more payment services | Provider terms and the merchant's agreement | +| Payment facilitator, or PayFac | Onboards submerchants under a master acquiring relationship | Provider legal terms, submerchant agreement, and underwriting approval | +| Processor | Routes and processes transaction messages on a payment rail | Processing agreement, merchant statement, VAR sheet, or provider dashboard | +| ISO or MSP | Sells or services merchant acquiring relationships under a registered program | Card-network or acquiring-bank registration and merchant agreement | +| Acquirer or member bank | Holds the card-network acquiring relationship and submits merchant transactions into the network | Merchant agreement, commercial entity agreement, or merchant statement | +| Sponsor bank | Sponsors a non-bank participant into a regulated or network program | The applicable program agreement or bank disclosure | + +An acquiring bank can also be called a member bank in provider contracts. "Sponsor bank" should not be used as an automatic synonym unless the applicable document uses or supports that role. + +## Provider map + +| Provider | Gateway or integration | PSP | PayFac | Processor | ISO or MSP | Acquirer | Sponsor or member bank | Safe corpus label | +|---|---|---|---|---|---|---|---|---| +| Stripe | Yes | Yes | Yes, under applicable member-bank programs | Yes | Conditional. Official Cross River terms also register Stripe as an ISO | Merchant-specific. Stripe affiliates or financial partners can be the applicable acquirer | Program-specific and not inferable from code | "Stripe integration signal detected" | +| Square | Yes, built-in gateway | Yes, integrated payments provider | Yes | Yes, self-described end-to-end processor | Not established | Square is not the bank. It partners with acquiring banks | JPMorgan Chase Bank and/or The Bancorp Bank are named in current US commercial entity terms, as applicable | "Square integration or checkout signal detected" | +| PayPal | Yes | Yes | Not established in the official materials reviewed | Yes | Not established | Not identifiable from a generic PayPal signal | Not identifiable from a generic PayPal signal | "PayPal option or integration signal detected" | +| NMI | Yes | Do not infer merchant PSP status from code | NMI enables PayFacs, which does not prove NMI is the merchant's PayFac | No generic conclusion. NMI connects to more than 200 processors | NMI serves ISOs, which does not prove NMI is the merchant's ISO | Unknown | Unknown | "NMI gateway integration signal detected" | +| Authorize.Net | Yes | Conditional. Its All-in-One offer can help provide a merchant account, while Gateway Only uses an existing account | Not established | No generic conclusion. It supports multiple processor connections | Not established | Unknown | Unknown | "Authorize.Net gateway signal detected" | +| Bankful | Yes, payment software and orchestration | Conditional by arrangement | Conditional. Bankful says it acts as direct PayFac in some arrangements | Conditional. Its terms use "processor of record" for some arrangements and external processors for others | Not established | Unknown | Unknown | "Bankful software or orchestration signal detected" | +| Link Money | Yes as a Pay by Bank SDK or API, not established as a card gateway | Best described as an open-banking payment platform | Not established | Not established | Not established | Not applicable or unknown from generic code | Unknown | "Link Money Pay by Bank integration signal detected" | +| eDebit Direct | Yes as ACH, eCheck, and demand-draft software, not a card-gateway conclusion | Official terms describe a service provider | Not established | Yes, specifically for ACH, eCheck, and demand-draft services | Not established | Not applicable or unknown | The applicable ODFI or bank is unknown | "eDebit Direct bank-payment integration signal detected" | +| Paynote / SeamlessChex | Yes, API and payment-platform integration | Yes at a broad product-description level | Not established | Rail-dependent. Official terms describe third-party processing and collection roles | Not established | Unnamed and arrangement-specific | Unnamed ODFI and financial-institution partners | "Paynote or SeamlessChex integration signal detected" | +| IDEM, tentatively identified as the IDEM Merchant Platform / EasyProcess | Yes, hosted page, SDK, and Payment Request API | Not established for IDEM itself | Not established | Third-party partners, not IDEM itself, are described as providing regulated payment services | Not established | Unknown | Unknown | "Possible IDEM or EasyProcess checkout integration signal detected; identity requires confirmation" | + +## Provider findings and official sources + +### Stripe + +Stripe officially describes itself as both a [payment gateway and payment processor](https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway). Its current US acquiring terms show several possible structures: + +- [Stripe MALPB Acquirer Terms](https://stripe.com/legal/stripe-malpb-acquirer-terms): Stripe is registered as a payment facilitator by the member bank, and Stripe MALPB is the payment-method acquirer. +- [Pathward Acquirer Terms](https://stripe.com/br/legal/pathward-acquirer-terms): Pathward is the payment-method acquirer and Stripe is the registered payment facilitator. +- [Cross River Bank Acquirer Terms](https://stripe.com/th/legal/crb-acquirer-terms): Cross River is the payment-method acquirer and Stripe is registered as a payment facilitator and ISO. +- [Fifth Third Bank Acquirer Terms](https://stripe.com/en-br/legal/fifth-third-bank-acquirer-terms): Fifth Third is the payment-method acquirer and Stripe is the registered payment facilitator. +- [Stripe Services Terms](https://stripe.com/en-ca/legal/ssa-services-terms): the applicable acquirer can depend on the payment method, account, and financial partner. + +Conclusion: Stripe code can support "Stripe integration detected." It cannot identify which Stripe entity or financial institution underwrote the merchant. + +### Square + +[Square Payment Terms](https://squareup.com/us/en/legal/general/payment) state that Square is a payment facilitator, not a bank, and that it works with networks, processors, and acquiring banks. Square also describes its product as an [end-to-end processor with a built-in gateway](https://squareup.com/us/en/the-bottom-line/managing-your-finances/payment-gateway). Its current [Commercial Entity Agreement](https://squareup.com/us/en/legal/general/cea) names JPMorgan Chase Bank and/or The Bancorp Bank, as applicable. + +Conclusion: a Square integration does not prove which bank applies to a particular merchant or whether that merchant passed underwriting. + +### PayPal + +The [PayPal User Agreement](https://www.paypal.com/us/legalhub/paypal/useragreement-full?locale.x=en_US) says PayPal is a payment service provider. PayPal also describes itself as a [payment processor](https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers) and says it provides [gateway and processor services](https://www.paypal.com/us/brc/article/what-is-a-payment-gateway). + +PayPal's [Braintree Payment Services Agreement](https://www.paypal.com/us/legalhub/braintree/payment-services-agreement?country.x=US&locale.x=en_US) describes Braintree-specific acquiring relationships. Those terms should not be transferred to a generic PayPal button or logo. + +Conclusion: a PayPal button proves only the public option or integration. It does not prove a live merchant account, PayFac relationship, acquirer, or sponsor bank. + +### NMI + +NMI describes its product as a [white-label payment gateway](https://www.nmi.com/products/payment-gateway/) that integrates with more than 200 processors. Its [PayFac product](https://www.nmi.com/who-we-serve/payment-facilitators/) enables payment facilitators and communicates merchant data to the appropriate processor. NMI's [gateway documentation](https://docs.nmi.com/reference/nmi-gateway-features) also consistently calls it a gateway. + +Conclusion: an NMI script or hosted form does not identify the downstream processor, PayFac, ISO, acquirer, or sponsor bank. + +### Authorize.Net + +Authorize.Net says it is a [payment gateway](https://www.authorize.net/resources/how-payments-work.html). Its [pricing page](https://www.authorize.net/sign-up/pricing.html) distinguishes Gateway Only, which connects to an existing merchant account, from All-in-One, which can help provide one. Authorize.Net also says it [has no visibility into a merchant's MSP](https://support.authorize.net/knowledgebase/article/000001347/en-us) and lists [multiple supported processor connections](https://support.authorize.net/knowledgebase/article/000001210/en-us). + +Conclusion: Authorize.Net code identifies the gateway, not the merchant's processor, MSP, acquirer, or bank. + +### Bankful + +[Bankful Terms and Conditions](https://bankful.com/terms-conditions/) describe payment software and orchestration. They say Bankful acts as a direct payment facilitator and "processor of record" in some arrangements, while eligibility can be determined by a separate processor of record and sponsor banks. Bankful's [refund policy](https://support.bankful.com/refunds/) says it is a software and technology provider and that transactions are processed through the designated acquirer or processor. + +Conclusion: Bankful's role is arrangement-specific. Public code cannot show whether the merchant is in Bankful's direct PayFac program or routed to an external processor and bank. + +### Link Money + +[Link Money Terms](https://link.money/legal/terms-and-conditions) describe a platform that links customer bank accounts and arranges transfers to merchants. Its core product is [Pay by Bank](https://link.money/product/pay-by-bank), delivered through an SDK and API. + +Conclusion: call this an open-banking or Pay by Bank integration. Do not label it a card processor, PayFac, ISO, acquirer, or sponsor bank without the merchant's agreement. + +### eDebit Direct + +[eDebit Direct Merchant Terms](https://edebitdirect.com/terms-and-conditions/) describe software for demand drafts, eChecks, and ACH. They state that eDebit Direct is not a bank or financial institution, is retained as a payment processor, and uses a separate origination agreement for ACH. Its [consumer ACH terms](https://edebitdirect.com/consumer-ach-terms-and-conditions/) further describe the ACH service and account-verification partners. + +Conclusion: the supportable processor label is limited to its ACH, eCheck, and demand-draft role. The applicable originating bank or ODFI remains unknown from site code. + +### Paynote and SeamlessChex + +[Paynote](https://www.paynote.com/) presents an API-based merchant-services platform for card, ACH, crypto, and payouts. [SeamlessChex Terms](https://www.seamlesschex.com/terms-of-service) describe Seamless Checks LLC, a third-party sender and collection agent, an unnamed ODFI, Dwolla functionality in some flows, and Dwolla financial-institution partners. The [SeamlessChex product site](https://www.seamlesschex.com/) describes payment processing and multiple acquiring-bank partners. + +Conclusion: a Paynote or SeamlessChex code signal does not reveal which rail, processor, acquiring bank, ODFI, or partner is active. + +### IDEM + +The public identity is less certain than the other providers. [EasyProcess Terms](https://easyprocess.ai/content/terms-services) refer to the IDEM Merchant Platform and IDEM Club Inc. They say the platform provides technology and facilitation, is not a bank, and relies on regulated third-party partners for card, banking, and crypto services. [IDEM Pay](https://idempay.net/) presents a hosted page, SDK, and Payment Request API. The [EasyProcess Legal Notice](https://easyprocess.ai/content/legal-notice) also refers to financial institutions and processors. + +Conclusion: record the integration as "possible IDEM / EasyProcess" until the script owner, legal entity, or checkout domain confirms the identity. Do not assign IDEM a processor, PayFac, ISO, acquirer, or sponsor-bank role from the current public evidence. + +## Evidence ladder + +### Level 1: public code signal + +Examples include JavaScript domains, plugin names, SDK objects, hidden fields, network requests, and platform metadata. + +Supportable: + +> Public code contains an NMI gateway integration signal. + +Not supportable: + +> NMI processes this merchant's payments through Bank X. + +### Level 2: visible public checkout + +This can establish that an option was displayed at the time observed. It does not establish that a charge would succeed. + +Supportable: + +> The checkout displayed PayPal on July 27, 2026. + +Not supportable: + +> The merchant has an active, approved PayPal account. + +### Level 3: provider documentation + +This supports provider-level product and legal roles. It may be region-specific, product-specific, or conditional. + +Supportable: + +> Bankful acts as a direct PayFac in some arrangements. + +Not supportable: + +> This merchant uses Bankful's direct PayFac arrangement. + +### Level 4: merchant-specific records + +Use the following, with authorization, to verify underwriting: + +- Signed merchant processing or submerchant agreement +- Approval or onboarding letter +- Merchant identification number, or MID +- Merchant statement or processor statement +- VAR sheet +- Provider dashboard account metadata +- Commercial entity agreement +- Settlement descriptor and bank-deposit corroboration + +Only this level can responsibly name the merchant's approved processor, PayFac program, acquirer, member bank, sponsor bank, MID, or settlement route. + +### Level 5: transaction evidence + +No transaction testing was performed. A displayed checkout or technically valid API configuration is not proof that a real payment succeeds, settles, remains uncanceled, or survives compliance review. + +## Recommended data model + +Keep observations separate from conclusions: + +```json +{ + "publicIntegration": { + "provider": "NMI", + "signal": "gateway script", + "observedAt": "2026-07-27", + "confidence": "high" + }, + "visibleMethods": [], + "verifiedMerchantRelationship": { + "psp": null, + "payfac": null, + "processor": null, + "isoMsp": null, + "acquirer": null, + "sponsorBank": null, + "mid": null + }, + "boundary": "Public code identifies a gateway integration only. Merchant underwriting and downstream institutions were not verified." +} +``` + +Do not fill unknown fields with the provider whose logo or script appeared. Keep them null until merchant-specific evidence supports them. + +## Operational conclusions for the Noli corpus + +1. Processor detection should be renamed payment-integration detection unless merchant records exist. +2. NMI and Authorize.Net are especially important false-positive traps because their gateways connect to many downstream processors. +3. Stripe and Square have real provider-level PayFac structures, but a website signal still does not prove approval, live status, or the applicable member bank. +4. Bankful has multiple possible arrangements. Its public presence does not reveal whether it is acting as software provider, PayFac, or processor of record for that merchant. +5. PayPal and Braintree evidence must stay separate. +6. Bank-payment products require their own rail taxonomy. Link Money, eDebit Direct, Paynote, and SeamlessChex should not be forced into a card-acquiring model. +7. A sponsor or acquiring-bank field should remain unknown unless a merchant agreement, statement, dashboard, or commercial entity agreement identifies it. +8. Logos, footer badges, disabled buttons, dormant plugins, and client-side SDKs are signals, not verified processing relationships. +9. Claims such as "high-risk processor," "offshore processor," or "no underwriting" require direct evidence and should never be inferred from a vendor's product category. +10. Every record should carry an observation date because provider structures, partner banks, and product terms can change. diff --git a/biologix-strategy-board/research/noli-processor-code-census-2026-07-27.json b/biologix-strategy-board/research/noli-processor-code-census-2026-07-27.json new file mode 100644 index 0000000..d0d8334 --- /dev/null +++ b/biologix-strategy-board/research/noli-processor-code-census-2026-07-27.json @@ -0,0 +1,23773 @@ +{ + "generatedAt": "2026-07-27T23:21:31.553Z", + "scope": "Read-only census of payment names, checkout identifiers, SDK/plugin markers, and provider integrations already captured in the 48-store checkout dataset and 570-domain public crawl. No new transaction, order, account, credential, PII, or gate-bypass activity was performed.", + "correction": { + "tooAbsoluteWording": "Zero processor/acquirer chains were independently verified.", + "whyItIsTooAbsolute": "The datasets do verify named provider integrations in public code, including PSP/PayFac/processor-level brands such as Stripe, Square, Airwallex, WooPayments, PayPal, Amazon Pay, QuickBooks Payments, and Affirm. Some provider IDs were also returned as active for an anonymous Reta cart. What remains unverified is the merchant's contractual processor/ISO/acquirer chain, transaction success, and settlement.", + "safeReplacement": "Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement." + }, + "evidenceBoundary": { + "publicCodeCanEstablish": [ + "A named SDK, script host, WooCommerce plugin, CSS/JS bundle, or checkout method identifier is exposed.", + "For active_for_reta_cart_api rows, the public cart API returned that identifier after an anonymous Reta cart add.", + "For configured_not_active_for_reta_cart rows, the integration was exposed/configured but unavailable for the tested cart." + ], + "publicCodeCannotEstablishAlone": [ + "That the merchant owns an approved and durable account with the named provider.", + "The legal merchant of record, ISO/MSP, acquiring processor, sponsor/acquiring bank, MCC, reserves, limits, or underwriting terms.", + "That a charge can be authorized, captured, settled, or survive future risk review." + ] + }, + "stats": { + "sourceCheckoutDomains": 48, + "sourceAuditDomains": 570, + "censusDomains": 149, + "evidenceRows": 783, + "canonicalProviderOrMethodCount": 97, + "classificationCounts": { + "frontend SDK/plugin": 79, + "gateway": 117, + "method": 459, + "PSP/PayFac/processor": 128 + }, + "evidenceStatusCounts": { + "active_for_reta_cart_api": 107, + "visible_provider_mention_activation_unknown": 109, + "installed_plugin_signal_activation_unknown": 80, + "configured_not_active_for_reta_cart": 14, + "embedded_code_provider_marker_activation_unknown": 27, + "installed_or_code_exposed_activation_unknown": 69, + "planned_placeholder_not_active": 1, + "visible_first_party_language_activation_unknown": 251, + "public_claim_or_logo_only": 122, + "historical_failed_or_shut_down_code_comment": 2, + "configured_disabled_in_public_code": 1 + }, + "sourceDatasetCounts": { + "noli-checkout-scan-2026-07-27.json": 243, + "retatrutide-vendor-audit-data.js": 540 + }, + "activeNamedGatewayOrPspRows": 44, + "pspProviderCount": 10, + "pspProviderDomainCount": 71, + "pspInstalledOrCodeExposedDomainCount": 48, + "pspActiveProviderLayerDomainCount": 7, + "explicitProcessorIsoRowsIn570StructuredFields": 0, + "explicitAcquirerSponsorBankRowsIn570StructuredFields": 0 + }, + "pspProviderRollup": [ + { + "canonicalProvider": "eDebit Direct", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 14, + "domains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "greatlifepeptides.com", + "longevityprolabs.com", + "nurevpeptides.com", + "orionpeptide.com", + "pekcuralabs.com", + "pepclubusa.com", + "purepeptidelabs.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "nurevpeptides.com", + "orionpeptide.com", + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 3, + "activeProviderLayerDomains": [ + "nurevpeptides.com", + "orionpeptide.com", + "riptidewellness.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 14, + "installedOrCodeExposedDomains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "greatlifepeptides.com", + "longevityprolabs.com", + "nurevpeptides.com", + "orionpeptide.com", + "pekcuralabs.com", + "pepclubusa.com", + "purepeptidelabs.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "eDebit Direct", + "edd_draft_yodlee_gateway", + "edebit-direct-ach-plaid-gateway", + "edebit-direct-ach-yodlee-gateway", + "edebit-direct-draft-plaid-gateway", + "edebit-direct-draft-yodlee-gateway", + "edebit-woo-ach-2.0" + ], + "evidenceCount": 30 + }, + { + "canonicalProvider": "PayPal", + "layers": [ + "PSP/PayFac/processor", + "method" + ], + "domainCount": 31, + "domains": [ + "adaptpeptides.com", + "behemothlabz.com", + "bizpeptide.com", + "epic-pep.com", + "goodpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "hydroresearchpeptides.com", + "ignitepeptides.com", + "kerisitepeptide.com", + "lyzelabs.com", + "newbeginningpeps.com", + "nosbarbersupply.com", + "optides.com", + "oupeptide.com", + "paradisopeptides.com", + "peptidejft.shop", + "peptidelabs.us", + "pspeptides.com", + "purerxpeptides.com", + "researchchemhq.co", + "rivnpeptides.com", + "royal-peptides.com", + "sentinelvalor.com", + "thepeplair.com", + "tritideresearch.com", + "uspeptidescience.com", + "vrilpeptides.shop", + "weipeptide.com", + "xspeptide.com", + "zen-peptide.com" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "behemothlabz.com", + "researchchemhq.co", + "rivnpeptides.com" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "researchchemhq.co", + "rivnpeptides.com" + ], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 7, + "installedOrCodeExposedDomains": [ + "behemothlabz.com", + "hydroresearchpeptides.com", + "researchchemhq.co", + "rivnpeptides.com", + "sentinelvalor.com", + "tritideresearch.com", + "zen-peptide.com" + ], + "visibleClaimDomainCount": 25, + "visibleClaimDomains": [ + "adaptpeptides.com", + "bizpeptide.com", + "epic-pep.com", + "goodpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "ignitepeptides.com", + "kerisitepeptide.com", + "lyzelabs.com", + "newbeginningpeps.com", + "nosbarbersupply.com", + "optides.com", + "oupeptide.com", + "paradisopeptides.com", + "peptidejft.shop", + "peptidelabs.us", + "pspeptides.com", + "purerxpeptides.com", + "researchchemhq.co", + "royal-peptides.com", + "thepeplair.com", + "uspeptidescience.com", + "vrilpeptides.shop", + "weipeptide.com", + "xspeptide.com" + ], + "providerTokens": [ + "PayPal", + "mecom_paypal", + "pr_paypal_post_order_instructions", + "woo-paypal-gateway", + "woocommerce-paypal-payments" + ], + "evidenceCount": 78 + }, + { + "canonicalProvider": "Stripe", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 11, + "domains": [ + "aloralab.shop", + "biomaxresearch.com", + "cactuspeptides.com", + "ironaminos.com", + "lifelinkresearch.com", + "nulifepeptides.com", + "regenerativeresearch.co", + "researchchemhq.co", + "risynthbio.com", + "shopbiohackerdirect.com", + "wolverinepeptides.co.uk" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "lifelinkresearch.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "lifelinkresearch.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 10, + "installedOrCodeExposedDomains": [ + "biomaxresearch.com", + "cactuspeptides.com", + "ironaminos.com", + "lifelinkresearch.com", + "nulifepeptides.com", + "regenerativeresearch.co", + "researchchemhq.co", + "risynthbio.com", + "shopbiohackerdirect.com", + "wolverinepeptides.co.uk" + ], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "researchchemhq.co" + ], + "providerTokens": [ + "Stripe", + "adv%20checkout%20-%20woocommerce%20plugin%20(stripe)-%20v9", + "mecom_stripe", + "woocommerce-gateway-stripe" + ], + "evidenceCount": 15 + }, + { + "canonicalProvider": "Paynote", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 6, + "domains": [ + "alphaomegapeptide.com", + "goalphalabs.com", + "nxtstate.co", + "polarispeptides.com", + "simplepeptide.com", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "umbrellalabs.is" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "umbrellalabs.is" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 6, + "installedOrCodeExposedDomains": [ + "alphaomegapeptide.com", + "goalphalabs.com", + "nxtstate.co", + "polarispeptides.com", + "simplepeptide.com", + "umbrellalabs.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Paynote", + "paynote" + ], + "evidenceCount": 11 + }, + { + "canonicalProvider": "CircoFlows", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 2, + "domains": [ + "aloralab.shop", + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "riptidewellness.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "CircoFlows", + "circoflows" + ], + "evidenceCount": 2 + }, + { + "canonicalProvider": "WooPayments", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 11, + "domains": [ + "antaipeptide.com", + "behemothlabz.com", + "bulkpeptidewholesale.com", + "healtlab.com", + "molipeptide.com", + "orionpeptide.com", + "pepclubusa.com", + "peptidejft.shop", + "peptidelabs.us", + "risynthbio.com", + "vertexpeptideslab.org" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 11, + "installedOrCodeExposedDomains": [ + "antaipeptide.com", + "behemothlabz.com", + "bulkpeptidewholesale.com", + "healtlab.com", + "molipeptide.com", + "orionpeptide.com", + "pepclubusa.com", + "peptidejft.shop", + "peptidelabs.us", + "risynthbio.com", + "vertexpeptideslab.org" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-payments" + ], + "evidenceCount": 11 + }, + { + "canonicalProvider": "Square", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 4, + "domains": [ + "apex-peptides.com", + "biopepusa.com", + "swisschems.is", + "triantex.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 4, + "installedOrCodeExposedDomains": [ + "apex-peptides.com", + "biopepusa.com", + "swisschems.is", + "triantex.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Square", + "woocommerce-square" + ], + "evidenceCount": 6 + }, + { + "canonicalProvider": "Airwallex", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "antaipeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "antaipeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "airwallex-online-payments-gateway" + ], + "evidenceCount": 1 + }, + { + "canonicalProvider": "Amazon Pay", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "bulkpeptidesupply.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "bulkpeptidesupply.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-gateway-amazon-payments-advanced" + ], + "evidenceCount": 1 + }, + { + "canonicalProvider": "QuickBooks Payments (Intuit)", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "societypeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "societypeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-gateway-intuit-qbms" + ], + "evidenceCount": 1 + } + ], + "providerRoleReferences": { + "Stripe": { + "role": "Gateway, PSP, payment facilitator under applicable programs, and payment processor.", + "officialUrl": "https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway" + }, + "Square": { + "role": "Integrated PSP/payment facilitator and end-to-end processor with a built-in gateway.", + "officialUrl": "https://squareup.com/us/en/the-bottom-line/managing-your-finances/payment-gateway" + }, + "PayPal": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "NMI": { + "role": "Payment gateway that can connect to many downstream processors; the processor is not inferable from the NMI signal.", + "officialUrl": "https://www.nmi.com/products/payment-gateway/" + }, + "Authorize.Net": { + "role": "Payment gateway; Gateway Only can connect to an existing merchant account, so the processor/MSP is not inferable from code.", + "officialUrl": "https://www.authorize.net/resources/how-payments-work.html" + }, + "Bankful": { + "role": "Payment software/orchestration; PayFac and processor-of-record roles are arrangement-specific.", + "officialUrl": "https://bankful.com/terms-conditions/" + }, + "Link Money": { + "role": "Open-banking Pay by Bank platform delivered through an SDK/API.", + "officialUrl": "https://link.money/product/pay-by-bank" + }, + "eDebit Direct": { + "role": "ACH, eCheck, and demand-draft service provider that describes itself as a payment processor for those bank-payment services.", + "officialUrl": "https://edebitdirect.com/terms-and-conditions/" + }, + "Paynote": { + "role": "API-based merchant-services/payment platform; exact processing and bank partners are arrangement-specific.", + "officialUrl": "https://www.paynote.com/" + }, + "CircoFlows": { + "role": "Payment-processing provider.", + "officialUrl": "https://circoflows.com/solutions" + } + }, + "providerRollup": { + "AMG Express token": { + "canonicalProvider": "AMG Express token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "geneticpeptide.com", + "lifelinkresearch.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "geneticpeptide.com", + "lifelinkresearch.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "geneticpeptide.com", + "lifelinkresearch.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "amgexpress" + ], + "evidenceCount": 2 + }, + "Azeban Pay": { + "canonicalProvider": "Azeban Pay", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "midwestpeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "midwestpeptide.com" + ], + "providerTokens": [ + "Azeban Pay" + ], + "evidenceCount": 3 + }, + "ByteNFT token": { + "canonicalProvider": "ByteNFT token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "behemothlabz.com", + "geneticpeptide.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "behemothlabz.com", + "geneticpeptide.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "behemothlabz.com", + "geneticpeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "bytenft" + ], + "evidenceCount": 2 + }, + "Card2Crypto": { + "canonicalProvider": "Card2Crypto", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "truepeptidelabs.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "truepeptidelabs.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "wcpay-card2crypto-payments" + ], + "evidenceCount": 1 + }, + "CLKK token": { + "canonicalProvider": "CLKK token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "ignitepeptides.com", + "truepeptidelabs.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "ignitepeptides.com", + "truepeptidelabs.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "ignitepeptides.com", + "truepeptidelabs.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "clkk" + ], + "evidenceCount": 2 + }, + "Conditional-payments plugin": { + "canonicalProvider": "Conditional-payments plugin", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 3, + "domains": [ + "aminoannex.com", + "biolongevitylabs.com", + "nexaph.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "aminoannex.com", + "biolongevitylabs.com", + "nexaph.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "conditional-payments-for-woocommerce", + "conditional-payments-for-woocommerce-pro", + "conditional-payments-premium" + ], + "evidenceCount": 3 + }, + "Custom gateway token": { + "canonicalProvider": "Custom gateway token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "hydroresearchpeptides.com", + "royal-peptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "royal-peptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "hydroresearchpeptides.com", + "royal-peptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "alg_custom_gateway_1", + "alg_custom_gateway_2" + ], + "evidenceCount": 2 + }, + "Custom payment gateway plugin": { + "canonicalProvider": "Custom payment gateway plugin", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "lifelinkresearch.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "lifelinkresearch.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "custom-payment-gateways-woocommerce" + ], + "evidenceCount": 1 + }, + "DFIN Sell token": { + "canonicalProvider": "DFIN Sell token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "dfinsell" + ], + "evidenceCount": 1 + }, + "Direct-payments plugin": { + "canonicalProvider": "Direct-payments plugin", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 3, + "domains": [ + "gxresearch.shop", + "premierbiolabs.com", + "thepeptidehaven.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "gxresearch.shop", + "premierbiolabs.com", + "thepeptidehaven.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "direct-payments-for-woocommerce-pro" + ], + "evidenceCount": 3 + }, + "FinGrid token": { + "canonicalProvider": "FinGrid token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "hydroresearchpeptides.com", + "peptidescollective.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "peptidescollective.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "hydroresearchpeptides.com", + "peptidescollective.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "my_fingrid_gateway" + ], + "evidenceCount": 2 + }, + "Gateway-rotator plugin": { + "canonicalProvider": "Gateway-rotator plugin", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "peptira.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "peptira.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "peptira-gateway-rotator" + ], + "evidenceCount": 1 + }, + "IDEM token": { + "canonicalProvider": "IDEM token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 4, + "domains": [ + "hydroresearchpeptides.com", + "northwestpeptides.com", + "researchchemhq.co", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "northwestpeptides.com", + "researchchemhq.co", + "umbrellalabs.is" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 4, + "installedOrCodeExposedDomains": [ + "hydroresearchpeptides.com", + "northwestpeptides.com", + "researchchemhq.co", + "umbrellalabs.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "idem" + ], + "evidenceCount": 4 + }, + "iMerchant": { + "canonicalProvider": "iMerchant", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "primepeptides.co" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "primepeptides.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "imerchant-payments" + ], + "evidenceCount": 1 + }, + "KMI Payments token": { + "canonicalProvider": "KMI Payments token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "pacificresearchpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "pacificresearchpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "pacificresearchpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "kmi_payments" + ], + "evidenceCount": 1 + }, + "MAEF child gateway token": { + "canonicalProvider": "MAEF child gateway token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "milehighcompounds.is", + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "milehighcompounds.is", + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "milehighcompounds.is", + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "maef_child_gateway" + ], + "evidenceCount": 2 + }, + "MGPay token": { + "canonicalProvider": "MGPay token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "hydroresearchpeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "hydroresearchpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "mgpay" + ], + "evidenceCount": 1 + }, + "MNet gateway token": { + "canonicalProvider": "MNet gateway token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "hydroresearchpeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "hydroresearchpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "mnet_gateway" + ], + "evidenceCount": 1 + }, + "mps_v_2d_15": { + "canonicalProvider": "mps_v_2d_15", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "nxtstate.co" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "nxtstate.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "nxtstate.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "mps_v_2d_15" + ], + "evidenceCount": 1 + }, + "NextEng redirect token": { + "canonicalProvider": "NextEng redirect token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "neb.co" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "neb.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "neb.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "nexteng_redirect" + ], + "evidenceCount": 1 + }, + "Offsite-payments plugin": { + "canonicalProvider": "Offsite-payments plugin", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "aminoannex.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "aminoannex.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "wcpo-offsite-payments" + ], + "evidenceCount": 1 + }, + "Pay by Bank (provider not named)": { + "canonicalProvider": "Pay by Bank (provider not named)", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "peptidescollective.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "peptidescollective.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "pay-by-bank" + ], + "evidenceCount": 1 + }, + "PayerURL token": { + "canonicalProvider": "PayerURL token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "onyxresearch.shop" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "onyxresearch.shop" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "onyxresearch.shop" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "wc_payerurl_gateway" + ], + "evidenceCount": 1 + }, + "PeachPay": { + "canonicalProvider": "PeachPay", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 2, + "domains": [ + "biolongevitylabs.com", + "peptira.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "peptira.com" + ], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "biolongevitylabs.com", + "peptira.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "peachpay-for-woocommerce", + "peachpay_purchase_order" + ], + "evidenceCount": 2 + }, + "PipePay token": { + "canonicalProvider": "PipePay token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "researchchemhq.co" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "researchchemhq.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "researchchemhq.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "pipepay" + ], + "evidenceCount": 1 + }, + "Plaid": { + "canonicalProvider": "Plaid", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 3, + "domains": [ + "greatlifepeptides.com", + "pekcuralabs.com", + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "greatlifepeptides.com", + "pekcuralabs.com", + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Plaid" + ], + "evidenceCount": 6 + }, + "PsiFi token": { + "canonicalProvider": "PsiFi token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "northwestpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "northwestpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "northwestpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "psifi" + ], + "evidenceCount": 1 + }, + "Quiklie token": { + "canonicalProvider": "Quiklie token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "regentide.net" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "regentide.net" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "regentide.net" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "quiklie" + ], + "evidenceCount": 1 + }, + "regentide_wise_ach_manual": { + "canonicalProvider": "regentide_wise_ach_manual", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "regentide.net" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "regentide.net" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "regentide.net" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "regentide_wise_ach_manual" + ], + "evidenceCount": 1 + }, + "Shield gateway token": { + "canonicalProvider": "Shield gateway token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "adaptpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "adaptpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "adaptpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "shield_gateway" + ], + "evidenceCount": 1 + }, + "Site B gateway token": { + "canonicalProvider": "Site B gateway token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "geneticpeptide.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "geneticpeptide.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "geneticpeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "site_b_gateway" + ], + "evidenceCount": 1 + }, + "SSTG Payments token": { + "canonicalProvider": "SSTG Payments token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "milehighcompounds.is" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "milehighcompounds.is" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "milehighcompounds.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "sstg_payments" + ], + "evidenceCount": 1 + }, + "Tagada token": { + "canonicalProvider": "Tagada token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 3, + "domains": [ + "onyxbiolabs.com", + "peptidescollective.com", + "realpeptides.co" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "onyxbiolabs.com", + "peptidescollective.com", + "realpeptides.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "onyxbiolabs.com", + "peptidescollective.com", + "realpeptides.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "tagada" + ], + "evidenceCount": 3 + }, + "Truvo token": { + "canonicalProvider": "Truvo token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "onyxresearch.shop" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "onyxresearch.shop" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "onyxresearch.shop" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "truvo_dropin" + ], + "evidenceCount": 1 + }, + "ven": { + "canonicalProvider": "ven", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "behemothlabz.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "behemothlabz.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "behemothlabz.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "ven" + ], + "evidenceCount": 1 + }, + "Veylo Pay token": { + "canonicalProvider": "Veylo Pay token", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "onyxresearch.shop" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "onyxresearch.shop" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "onyxresearch.shop" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "veylo_pay" + ], + "evidenceCount": 1 + }, + "WooCommerce Wallet": { + "canonicalProvider": "WooCommerce Wallet", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 1, + "domains": [ + "biolongevitylabs.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "biolongevitylabs.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woo-wallet" + ], + "evidenceCount": 1 + }, + "Yodlee": { + "canonicalProvider": "Yodlee", + "layers": [ + "frontend SDK/plugin" + ], + "domainCount": 11, + "domains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "longevityprolabs.com", + "nurevpeptides.com", + "pekcuralabs.com", + "pepclubusa.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 11, + "installedOrCodeExposedDomains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "longevityprolabs.com", + "nurevpeptides.com", + "pekcuralabs.com", + "pepclubusa.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Yodlee" + ], + "evidenceCount": 19 + }, + "4Square Gateway": { + "canonicalProvider": "4Square Gateway", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "swisschems.is" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "swisschems.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "4square-gateway" + ], + "evidenceCount": 1 + }, + "Authorize.Net": { + "canonicalProvider": "Authorize.Net", + "layers": [ + "gateway" + ], + "domainCount": 9, + "domains": [ + "agelessvitalitypeptides.com", + "apex-peptides.com", + "greatestpeptides.com", + "libertypeptides.com", + "licensedpeptides.com", + "purelabsrx.com", + "swisschems.is", + "thepeptidehaven.com", + "veloraresearch.com" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "agelessvitalitypeptides.com", + "greatestpeptides.com", + "veloraresearch.com" + ], + "activeProviderLayerDomainCount": 3, + "activeProviderLayerDomains": [ + "agelessvitalitypeptides.com", + "greatestpeptides.com", + "veloraresearch.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 9, + "installedOrCodeExposedDomains": [ + "agelessvitalitypeptides.com", + "apex-peptides.com", + "greatestpeptides.com", + "libertypeptides.com", + "licensedpeptides.com", + "purelabsrx.com", + "swisschems.is", + "thepeptidehaven.com", + "veloraresearch.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Authorize.Net", + "anet", + "authorize_net", + "authorize_net_cim_credit_card", + "payment-gateway-for-authorize-net-for-woocommerce", + "woo-authorize-net-gateway-aim", + "woocommerce-gateway-authorize-net-cim" + ], + "evidenceCount": 15 + }, + "Bankful": { + "canonicalProvider": "Bankful", + "layers": [ + "gateway" + ], + "domainCount": 9, + "domains": [ + "biologixlabsresearch.com", + "evolvepeptides.com", + "evopeptidesus.com", + "gxresearch.shop", + "neb.co", + "rebirthlabs.org", + "sentinelvalor.com", + "smtpeptides.com", + "vertexpeptideslab.org" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "neb.co" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "neb.co" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 9, + "installedOrCodeExposedDomains": [ + "biologixlabsresearch.com", + "evolvepeptides.com", + "evopeptidesus.com", + "gxresearch.shop", + "neb.co", + "rebirthlabs.org", + "sentinelvalor.com", + "smtpeptides.com", + "vertexpeptideslab.org" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Bankful", + "bankful", + "bankful_hosted_gateway" + ], + "evidenceCount": 17 + }, + "Blockonomics": { + "canonicalProvider": "Blockonomics", + "layers": [ + "gateway" + ], + "domainCount": 4, + "domains": [ + "geneticpeptide.com", + "geneticpeptides.com", + "injectify.is", + "polarispeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "geneticpeptide.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "geneticpeptide.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 4, + "installedOrCodeExposedDomains": [ + "geneticpeptide.com", + "geneticpeptides.com", + "injectify.is", + "polarispeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Blockonomics", + "blockonomics" + ], + "evidenceCount": 5 + }, + "BTCPay Server": { + "canonicalProvider": "BTCPay Server", + "layers": [ + "gateway" + ], + "domainCount": 2, + "domains": [ + "lifelinkresearch.com", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "lifelinkresearch.com", + "umbrellalabs.is" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "lifelinkresearch.com", + "umbrellalabs.is" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "lifelinkresearch.com", + "umbrellalabs.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "btcpaygf_default" + ], + "evidenceCount": 2 + }, + "CashEnvoy": { + "canonicalProvider": "CashEnvoy", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "riptidewellness.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "cashenvoy" + ], + "evidenceCount": 1 + }, + "CEvGate": { + "canonicalProvider": "CEvGate", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "tryaurapeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "tryaurapeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "cevgate-payments" + ], + "evidenceCount": 1 + }, + "Coinbase / Coinbase Commerce": { + "canonicalProvider": "Coinbase / Coinbase Commerce", + "layers": [ + "gateway" + ], + "domainCount": 2, + "domains": [ + "midwestpeptide.com", + "researchchemhq.co" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 2, + "visibleClaimDomains": [ + "midwestpeptide.com", + "researchchemhq.co" + ], + "providerTokens": [ + "Coinbase / Coinbase Commerce" + ], + "evidenceCount": 4 + }, + "CryptoPay": { + "canonicalProvider": "CryptoPay", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "realpeptides.co" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "realpeptides.co" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "realpeptides.co" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "realpeptides.co" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "cryptopay" + ], + "evidenceCount": 1 + }, + "ForumPay": { + "canonicalProvider": "ForumPay", + "layers": [ + "gateway" + ], + "domainCount": 2, + "domains": [ + "behemothlabz.com", + "onyxbiolabs.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "behemothlabz.com", + "onyxbiolabs.com" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "behemothlabz.com", + "onyxbiolabs.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "behemothlabz.com", + "onyxbiolabs.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "forumpay" + ], + "evidenceCount": 2 + }, + "Green.Money": { + "canonicalProvider": "Green.Money", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "injectify.is" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "injectify.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "green-money-payment-gateway" + ], + "evidenceCount": 1 + }, + "InstaOnramp": { + "canonicalProvider": "InstaOnramp", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "behemothlabz.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "behemothlabz.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "behemothlabz.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "behemothlabz.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto" + ], + "evidenceCount": 1 + }, + "Link Money": { + "canonicalProvider": "Link Money", + "layers": [ + "gateway" + ], + "domainCount": 12, + "domains": [ + "adaptpeptides.com", + "ignitepeptides.com", + "milehighcompounds.is", + "onyxbiolabs.com", + "onyxresearch.shop", + "peptidology.co", + "peptira.com", + "realpeptides.co", + "researchchemhq.co", + "royal-peptides.com", + "truepeptidelabs.com", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 11, + "activeForRetaCartDomains": [ + "adaptpeptides.com", + "ignitepeptides.com", + "milehighcompounds.is", + "onyxbiolabs.com", + "onyxresearch.shop", + "peptidology.co", + "realpeptides.co", + "researchchemhq.co", + "royal-peptides.com", + "truepeptidelabs.com", + "umbrellalabs.is" + ], + "activeProviderLayerDomainCount": 11, + "activeProviderLayerDomains": [ + "adaptpeptides.com", + "ignitepeptides.com", + "milehighcompounds.is", + "onyxbiolabs.com", + "onyxresearch.shop", + "peptidology.co", + "realpeptides.co", + "researchchemhq.co", + "royal-peptides.com", + "truepeptidelabs.com", + "umbrellalabs.is" + ], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "peptira.com" + ], + "installedOrCodeExposedDomainCount": 12, + "installedOrCodeExposedDomains": [ + "adaptpeptides.com", + "ignitepeptides.com", + "milehighcompounds.is", + "onyxbiolabs.com", + "onyxresearch.shop", + "peptidology.co", + "peptira.com", + "realpeptides.co", + "researchchemhq.co", + "royal-peptides.com", + "truepeptidelabs.com", + "umbrellalabs.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "linkmoney" + ], + "evidenceCount": 12 + }, + "MoonPay": { + "canonicalProvider": "MoonPay", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "researchchemhq.co" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "researchchemhq.co" + ], + "providerTokens": [ + "MoonPay" + ], + "evidenceCount": 1 + }, + "MyCryptoCheckout": { + "canonicalProvider": "MyCryptoCheckout", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "labtrustpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "labtrustpeptides.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "labtrustpeptides.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "labtrustpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "mycryptocheckout" + ], + "evidenceCount": 1 + }, + "NMI": { + "canonicalProvider": "NMI", + "layers": [ + "gateway" + ], + "domainCount": 19, + "domains": [ + "bulkpeptidesupply.com", + "geneticpeptide.com", + "geneticpeptides.com", + "gentlemanpeptides.com", + "goalphalabs.com", + "milehighcompounds.is", + "myoasislabs.com", + "nexaph.com", + "peptidecrafters.com", + "peptidology.co", + "peptira.com", + "premierbiolabs.com", + "protidehealth.com", + "realpeptides.co", + "rebirthlabs.org", + "rivnpeptides.com", + "s1research.net", + "simplepeptide.com", + "valorpeptides.com" + ], + "activeForRetaCartDomainCount": 6, + "activeForRetaCartDomains": [ + "geneticpeptide.com", + "milehighcompounds.is", + "peptidology.co", + "protidehealth.com", + "realpeptides.co", + "rivnpeptides.com" + ], + "activeProviderLayerDomainCount": 6, + "activeProviderLayerDomains": [ + "geneticpeptide.com", + "milehighcompounds.is", + "peptidology.co", + "protidehealth.com", + "realpeptides.co", + "rivnpeptides.com" + ], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "peptira.com" + ], + "installedOrCodeExposedDomainCount": 19, + "installedOrCodeExposedDomains": [ + "bulkpeptidesupply.com", + "geneticpeptide.com", + "geneticpeptides.com", + "gentlemanpeptides.com", + "goalphalabs.com", + "milehighcompounds.is", + "myoasislabs.com", + "nexaph.com", + "peptidecrafters.com", + "peptidology.co", + "peptira.com", + "premierbiolabs.com", + "protidehealth.com", + "realpeptides.co", + "rebirthlabs.org", + "rivnpeptides.com", + "s1research.net", + "simplepeptide.com", + "valorpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "NMI", + "nmi", + "nmi3_apple_pay", + "nmi3_google_pay", + "nmi_gateway_woocommerce_credit_card", + "nmipay", + "oasis-nmi-extramid", + "peachpay_nmi_card", + "robust_nmi_gateway", + "woocommerce-gateway-nmi", + "woofunnels-woocommerce-nmi-gateway", + "wp-nmi-gateway-pci-woocommerce" + ], + "evidenceCount": 34 + }, + "NoRamp": { + "canonicalProvider": "NoRamp", + "layers": [ + "gateway" + ], + "domainCount": 2, + "domains": [ + "researchchemhq.co", + "sunday-usa.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "researchchemhq.co", + "sunday-usa.com" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "researchchemhq.co", + "sunday-usa.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "researchchemhq.co", + "sunday-usa.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "noramp_platform" + ], + "evidenceCount": 2 + }, + "NOWPayments": { + "canonicalProvider": "NOWPayments", + "layers": [ + "gateway" + ], + "domainCount": 8, + "domains": [ + "adaptpeptides.com", + "epic-pep.com", + "nexaph.com", + "nurevpeptides.com", + "omegamino.net", + "realpeptides.co", + "rhomeresearch.com", + "rivnpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "adaptpeptides.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "adaptpeptides.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 7, + "installedOrCodeExposedDomains": [ + "adaptpeptides.com", + "nexaph.com", + "nurevpeptides.com", + "omegamino.net", + "realpeptides.co", + "rhomeresearch.com", + "rivnpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "NOWPayments", + "nowpayments-for-woocommerce-premium", + "nowpayments_gateway" + ], + "evidenceCount": 10 + }, + "PayGate.to": { + "canonicalProvider": "PayGate.to", + "layers": [ + "gateway" + ], + "domainCount": 2, + "domains": [ + "researchchemhq.co", + "royal-peptides.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "researchchemhq.co", + "royal-peptides.com" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "researchchemhq.co", + "royal-peptides.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "researchchemhq.co", + "royal-peptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "paygatedotto-crypto-payment-gateway-dynamic", + "paygatedotto-instant-payment-gateway-hostedpaygatedotto" + ], + "evidenceCount": 3 + }, + "Ramp Network": { + "canonicalProvider": "Ramp Network", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "researchchemhq.co" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "researchchemhq.co" + ], + "providerTokens": [ + "Ramp Network" + ], + "evidenceCount": 2 + }, + "Zigu Gateway": { + "canonicalProvider": "Zigu Gateway", + "layers": [ + "gateway" + ], + "domainCount": 1, + "domains": [ + "corepeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "corepeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "zigu-payment-gateway" + ], + "evidenceCount": 1 + }, + "ACH": { + "canonicalProvider": "ACH", + "layers": [ + "method" + ], + "domainCount": 17, + "domains": [ + "aloralab.shop", + "aminoannex.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "lifelinkresearch.com", + "northwestpeptides.com", + "nurevpeptides.com", + "omegamino.net", + "onyxbiolabs.com", + "orionpeptide.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "thepeplair.com", + "true-peptides.com", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 17, + "visibleClaimDomains": [ + "aloralab.shop", + "aminoannex.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "lifelinkresearch.com", + "northwestpeptides.com", + "nurevpeptides.com", + "omegamino.net", + "onyxbiolabs.com", + "orionpeptide.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "thepeplair.com", + "true-peptides.com", + "umbrellalabs.is" + ], + "providerTokens": [ + "ACH" + ], + "evidenceCount": 22 + }, + "Affirm": { + "canonicalProvider": "Affirm", + "layers": [ + "method" + ], + "domainCount": 1, + "domains": [ + "pspeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "pspeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "pspeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "pay_with_affirm_shopify" + ], + "evidenceCount": 1 + }, + "Afterpay": { + "canonicalProvider": "Afterpay", + "layers": [ + "method" + ], + "domainCount": 2, + "domains": [ + "peptidelabs.us", + "pspeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 2, + "visibleClaimDomains": [ + "peptidelabs.us", + "pspeptides.com" + ], + "providerTokens": [ + "Afterpay" + ], + "evidenceCount": 8 + }, + "Alibaba Payment": { + "canonicalProvider": "Alibaba Payment", + "layers": [ + "method" + ], + "domainCount": 1, + "domains": [ + "veltrixpeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "veltrixpeptide.com" + ], + "providerTokens": [ + "Alibaba Payment" + ], + "evidenceCount": 3 + }, + "Alipay": { + "canonicalProvider": "Alipay", + "layers": [ + "method" + ], + "domainCount": 4, + "domains": [ + "hjpeptide.com", + "keruihk.com", + "weipeptide.com", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 4, + "visibleClaimDomains": [ + "hjpeptide.com", + "keruihk.com", + "weipeptide.com", + "yidanbio.com" + ], + "providerTokens": [ + "Alipay" + ], + "evidenceCount": 18 + }, + "American Express": { + "canonicalProvider": "American Express", + "layers": [ + "method" + ], + "domainCount": 27, + "domains": [ + "bulkpeptides.com", + "cactuspeptides.com", + "epic-pep.com", + "glpeptides.is", + "greatestpeptides.com", + "lifelinkresearch.com", + "midwestpeptide.com", + "mytidelab.com", + "northlinelabs.org", + "nosbarbersupply.com", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidelabs.us", + "peptidescollective.com", + "peptira.com", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net", + "stratelabs.is" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 27, + "visibleClaimDomains": [ + "bulkpeptides.com", + "cactuspeptides.com", + "epic-pep.com", + "glpeptides.is", + "greatestpeptides.com", + "lifelinkresearch.com", + "midwestpeptide.com", + "mytidelab.com", + "northlinelabs.org", + "nosbarbersupply.com", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidelabs.us", + "peptidescollective.com", + "peptira.com", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net", + "stratelabs.is" + ], + "providerTokens": [ + "American Express" + ], + "evidenceCount": 33 + }, + "Apple Pay": { + "canonicalProvider": "Apple Pay", + "layers": [ + "method" + ], + "domainCount": 8, + "domains": [ + "nosbarbersupply.com", + "paradisopeptides.com", + "peptidelabs.us", + "peptidescollective.com", + "peptidology.co", + "pspeptides.com", + "researchchemhq.co", + "royal-peptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "peptidology.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "peptidology.co" + ], + "visibleClaimDomainCount": 7, + "visibleClaimDomains": [ + "nosbarbersupply.com", + "paradisopeptides.com", + "peptidelabs.us", + "peptidescollective.com", + "pspeptides.com", + "researchchemhq.co", + "royal-peptides.com" + ], + "providerTokens": [ + "Apple Pay", + "pep_applepay" + ], + "evidenceCount": 11 + }, + "BACS / bank transfer": { + "canonicalProvider": "BACS / bank transfer", + "layers": [ + "method" + ], + "domainCount": 6, + "domains": [ + "agelessvitalitypeptides.com", + "greatestpeptides.com", + "labtrustpeptides.com", + "luxaralabs.com", + "northwestpeptides.com", + "royal-peptides.com" + ], + "activeForRetaCartDomainCount": 6, + "activeForRetaCartDomains": [ + "agelessvitalitypeptides.com", + "greatestpeptides.com", + "labtrustpeptides.com", + "luxaralabs.com", + "northwestpeptides.com", + "royal-peptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 6, + "installedOrCodeExposedDomains": [ + "agelessvitalitypeptides.com", + "greatestpeptides.com", + "labtrustpeptides.com", + "luxaralabs.com", + "northwestpeptides.com", + "royal-peptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "bacs" + ], + "evidenceCount": 6 + }, + "Bank transfer": { + "canonicalProvider": "Bank transfer", + "layers": [ + "method" + ], + "domainCount": 17, + "domains": [ + "bulkpeptides.com", + "epic-pep.com", + "goodpeptides.com", + "huataipeptide.com", + "keruihk.com", + "labtrustpeptides.com", + "lyzelabs.com", + "medipeptide.com", + "onyxbiolabs.com", + "peptaion.com", + "peptara.org", + "quantapeptides.com", + "researchchemhq.co", + "retaonelabs.com", + "rhomeresearch.com", + "suaway.com", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 17, + "visibleClaimDomains": [ + "bulkpeptides.com", + "epic-pep.com", + "goodpeptides.com", + "huataipeptide.com", + "keruihk.com", + "labtrustpeptides.com", + "lyzelabs.com", + "medipeptide.com", + "onyxbiolabs.com", + "peptaion.com", + "peptara.org", + "quantapeptides.com", + "researchchemhq.co", + "retaonelabs.com", + "rhomeresearch.com", + "suaway.com", + "yidanbio.com" + ], + "providerTokens": [ + "Bank transfer" + ], + "evidenceCount": 17 + }, + "Bitcoin": { + "canonicalProvider": "Bitcoin", + "layers": [ + "method" + ], + "domainCount": 21, + "domains": [ + "ascendingpeptides.co", + "bizpeptide.com", + "bulkpeptides.com", + "goodpeptides.com", + "greatestpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "oupeptide.com", + "peptaion.com", + "peptalabs.com", + "peptidejft.shop", + "purerxpeptides.com", + "rhomeresearch.com", + "shopapexlabs.net", + "veltrixpeptide.com", + "weipeptide.com", + "xspeptide.com", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "greatestpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "greatestpeptides.com" + ], + "visibleClaimDomainCount": 20, + "visibleClaimDomains": [ + "ascendingpeptides.co", + "bizpeptide.com", + "bulkpeptides.com", + "goodpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "oupeptide.com", + "peptaion.com", + "peptalabs.com", + "peptidejft.shop", + "purerxpeptides.com", + "rhomeresearch.com", + "shopapexlabs.net", + "veltrixpeptide.com", + "weipeptide.com", + "xspeptide.com", + "yidanbio.com" + ], + "providerTokens": [ + "Bitcoin", + "gp_btc" + ], + "evidenceCount": 21 + }, + "Cash App": { + "canonicalProvider": "Cash App", + "layers": [ + "method" + ], + "domainCount": 6, + "domains": [ + "midwestpeptide.com", + "newbeginningpeps.com", + "nxtstate.co", + "onyxbiolabs.com", + "peptalabs.com", + "regentide.net" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "nxtstate.co", + "onyxbiolabs.com", + "regentide.net" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "nxtstate.co", + "onyxbiolabs.com", + "regentide.net" + ], + "visibleClaimDomainCount": 5, + "visibleClaimDomains": [ + "midwestpeptide.com", + "newbeginningpeps.com", + "nxtstate.co", + "onyxbiolabs.com", + "peptalabs.com" + ], + "providerTokens": [ + "Cash App", + "cashapp", + "regentide_cashapp_qr" + ], + "evidenceCount": 10 + }, + "Cash on delivery": { + "canonicalProvider": "Cash on delivery", + "layers": [ + "method" + ], + "domainCount": 1, + "domains": [ + "nurevpeptides.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "nurevpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "nurevpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "cod" + ], + "evidenceCount": 1 + }, + "Cheque": { + "canonicalProvider": "Cheque", + "layers": [ + "method" + ], + "domainCount": 2, + "domains": [ + "luxaralabs.com", + "nurevpeptides.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "luxaralabs.com", + "nurevpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "luxaralabs.com", + "nurevpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "cheque" + ], + "evidenceCount": 2 + }, + "Cryptocurrency": { + "canonicalProvider": "Cryptocurrency", + "layers": [ + "method" + ], + "domainCount": 39, + "domains": [ + "ameanopeptides.com", + "barnpeptides.com", + "behemothlabz.com", + "bizpeptide.com", + "bulkpeptides.com", + "dspeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "kerisitepeptide.com", + "labtrustpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "medipeptide.com", + "midwestpeptide.com", + "newbeginningpeps.com", + "nexaph.com", + "omegamino.net", + "onyxbiolabs.com", + "optides.com", + "orionpeptide.com", + "peptaion.com", + "peptalabs.com", + "peptara.org", + "peptidology.co", + "protidehealth.com", + "pspeptides.com", + "researchchemhq.co", + "retaonelabs.com", + "rhomeresearch.com", + "rivnpeptides.com", + "royal-peptides.com", + "spartalabs.net", + "suaway.com", + "swisschems.is", + "thepeplair.com", + "true-peptides.com", + "umbrellalabs.is", + "vrilpeptides.shop", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 2, + "activeForRetaCartDomains": [ + "behemothlabz.com", + "orionpeptide.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 2, + "installedOrCodeExposedDomains": [ + "behemothlabz.com", + "orionpeptide.com" + ], + "visibleClaimDomainCount": 38, + "visibleClaimDomains": [ + "ameanopeptides.com", + "barnpeptides.com", + "behemothlabz.com", + "bizpeptide.com", + "bulkpeptides.com", + "dspeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "kerisitepeptide.com", + "labtrustpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "medipeptide.com", + "midwestpeptide.com", + "newbeginningpeps.com", + "nexaph.com", + "omegamino.net", + "onyxbiolabs.com", + "optides.com", + "peptaion.com", + "peptalabs.com", + "peptara.org", + "peptidology.co", + "protidehealth.com", + "pspeptides.com", + "researchchemhq.co", + "retaonelabs.com", + "rhomeresearch.com", + "rivnpeptides.com", + "royal-peptides.com", + "spartalabs.net", + "suaway.com", + "swisschems.is", + "thepeplair.com", + "true-peptides.com", + "umbrellalabs.is", + "vrilpeptides.shop", + "yidanbio.com" + ], + "providerTokens": [ + "Crypto", + "Cryptocurrency", + "crypto" + ], + "evidenceCount": 45 + }, + "Discover": { + "canonicalProvider": "Discover", + "layers": [ + "method" + ], + "domainCount": 34, + "domains": [ + "adaptpeptides.com", + "behemothlabz.com", + "boruimei.com", + "bulkpeptides.com", + "cellularpeptides.com", + "dideu.com", + "greatestpeptides.com", + "hkpep.cc", + "labtrustpeptides.com", + "lyzelabs.com", + "midwestpeptide.com", + "modernpeptides.com", + "mytidelab.com", + "northlinelabs.org", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "peptalabs.com", + "peptidecrafters.com", + "peptira.com", + "primepeptides.co", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "puritypeptides.ca", + "quantapeptides.com", + "researchchemhq.co", + "royal-peptides.com", + "rxpharmaceuticals.me", + "s1research.net", + "spartalabs.net", + "summerperformance.com", + "triantex.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 34, + "visibleClaimDomains": [ + "adaptpeptides.com", + "behemothlabz.com", + "boruimei.com", + "bulkpeptides.com", + "cellularpeptides.com", + "dideu.com", + "greatestpeptides.com", + "hkpep.cc", + "labtrustpeptides.com", + "lyzelabs.com", + "midwestpeptide.com", + "modernpeptides.com", + "mytidelab.com", + "northlinelabs.org", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "peptalabs.com", + "peptidecrafters.com", + "peptira.com", + "primepeptides.co", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "puritypeptides.ca", + "quantapeptides.com", + "researchchemhq.co", + "royal-peptides.com", + "rxpharmaceuticals.me", + "s1research.net", + "spartalabs.net", + "summerperformance.com", + "triantex.com" + ], + "providerTokens": [ + "Discover" + ], + "evidenceCount": 40 + }, + "Ethereum": { + "canonicalProvider": "Ethereum", + "layers": [ + "method" + ], + "domainCount": 9, + "domains": [ + "bizpeptide.com", + "bulkpeptides.com", + "greatestpeptides.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "peptalabs.com", + "shopapexlabs.net", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "greatestpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "greatestpeptides.com" + ], + "visibleClaimDomainCount": 8, + "visibleClaimDomains": [ + "bizpeptide.com", + "bulkpeptides.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "peptalabs.com", + "shopapexlabs.net", + "yidanbio.com" + ], + "providerTokens": [ + "Ethereum", + "gp_eth" + ], + "evidenceCount": 9 + }, + "GCash": { + "canonicalProvider": "GCash", + "layers": [ + "method" + ], + "domainCount": 1, + "domains": [ + "weipeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "weipeptide.com" + ], + "providerTokens": [ + "GCash" + ], + "evidenceCount": 4 + }, + "Google Pay": { + "canonicalProvider": "Google Pay", + "layers": [ + "method" + ], + "domainCount": 4, + "domains": [ + "greatestpeptides.com", + "northlinelabs.org", + "nosbarbersupply.com", + "pspeptides.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 4, + "visibleClaimDomains": [ + "greatestpeptides.com", + "northlinelabs.org", + "nosbarbersupply.com", + "pspeptides.com" + ], + "providerTokens": [ + "Google Pay" + ], + "evidenceCount": 5 + }, + "Klarna": { + "canonicalProvider": "Klarna", + "layers": [ + "method" + ], + "domainCount": 3, + "domains": [ + "peptidelabs.us", + "pspeptides.com", + "wolverinepeptides.co.uk" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 3, + "visibleClaimDomains": [ + "peptidelabs.us", + "pspeptides.com", + "wolverinepeptides.co.uk" + ], + "providerTokens": [ + "Klarna" + ], + "evidenceCount": 7 + }, + "Mastercard": { + "canonicalProvider": "Mastercard", + "layers": [ + "method" + ], + "domainCount": 24, + "domains": [ + "adaptpeptides.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "mytidelab.com", + "neb.co", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidescollective.com", + "peptira.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 24, + "visibleClaimDomains": [ + "adaptpeptides.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "mytidelab.com", + "neb.co", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidescollective.com", + "peptira.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net" + ], + "providerTokens": [ + "Mastercard" + ], + "evidenceCount": 31 + }, + "PayPal": { + "canonicalProvider": "PayPal", + "layers": [ + "PSP/PayFac/processor", + "method" + ], + "domainCount": 31, + "domains": [ + "adaptpeptides.com", + "behemothlabz.com", + "bizpeptide.com", + "epic-pep.com", + "goodpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "hydroresearchpeptides.com", + "ignitepeptides.com", + "kerisitepeptide.com", + "lyzelabs.com", + "newbeginningpeps.com", + "nosbarbersupply.com", + "optides.com", + "oupeptide.com", + "paradisopeptides.com", + "peptidejft.shop", + "peptidelabs.us", + "pspeptides.com", + "purerxpeptides.com", + "researchchemhq.co", + "rivnpeptides.com", + "royal-peptides.com", + "sentinelvalor.com", + "thepeplair.com", + "tritideresearch.com", + "uspeptidescience.com", + "vrilpeptides.shop", + "weipeptide.com", + "xspeptide.com", + "zen-peptide.com" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "behemothlabz.com", + "researchchemhq.co", + "rivnpeptides.com" + ], + "activeProviderLayerDomainCount": 2, + "activeProviderLayerDomains": [ + "researchchemhq.co", + "rivnpeptides.com" + ], + "configuredNotActiveDomainCount": 1, + "configuredNotActiveDomains": [ + "hydroresearchpeptides.com" + ], + "installedOrCodeExposedDomainCount": 7, + "installedOrCodeExposedDomains": [ + "behemothlabz.com", + "hydroresearchpeptides.com", + "researchchemhq.co", + "rivnpeptides.com", + "sentinelvalor.com", + "tritideresearch.com", + "zen-peptide.com" + ], + "visibleClaimDomainCount": 25, + "visibleClaimDomains": [ + "adaptpeptides.com", + "bizpeptide.com", + "epic-pep.com", + "goodpeptides.com", + "hjpeptide.com", + "huataipeptide.com", + "ignitepeptides.com", + "kerisitepeptide.com", + "lyzelabs.com", + "newbeginningpeps.com", + "nosbarbersupply.com", + "optides.com", + "oupeptide.com", + "paradisopeptides.com", + "peptidejft.shop", + "peptidelabs.us", + "pspeptides.com", + "purerxpeptides.com", + "researchchemhq.co", + "royal-peptides.com", + "thepeplair.com", + "uspeptidescience.com", + "vrilpeptides.shop", + "weipeptide.com", + "xspeptide.com" + ], + "providerTokens": [ + "PayPal", + "mecom_paypal", + "pr_paypal_post_order_instructions", + "woo-paypal-gateway", + "woocommerce-paypal-payments" + ], + "evidenceCount": 78 + }, + "Robinhood": { + "canonicalProvider": "Robinhood", + "layers": [ + "method" + ], + "domainCount": 1, + "domains": [ + "researchchemhq.co" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "researchchemhq.co" + ], + "providerTokens": [ + "Robinhood" + ], + "evidenceCount": 1 + }, + "USDC": { + "canonicalProvider": "USDC", + "layers": [ + "method" + ], + "domainCount": 7, + "domains": [ + "bizpeptide.com", + "keruihk.com", + "shopapexlabs.net", + "veltrixpeptide.com", + "vrilpeptides.shop", + "weipeptide.com", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 7, + "visibleClaimDomains": [ + "bizpeptide.com", + "keruihk.com", + "shopapexlabs.net", + "veltrixpeptide.com", + "vrilpeptides.shop", + "weipeptide.com", + "yidanbio.com" + ], + "providerTokens": [ + "USDC" + ], + "evidenceCount": 7 + }, + "USDT": { + "canonicalProvider": "USDT", + "layers": [ + "method" + ], + "domainCount": 12, + "domains": [ + "bizpeptide.com", + "bulkpeptides.com", + "goodpeptides.com", + "greatestpeptides.com", + "hjpeptide.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "peptaion.com", + "veltrixpeptide.com", + "weipeptide.com", + "yidanbio.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "greatestpeptides.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "greatestpeptides.com" + ], + "visibleClaimDomainCount": 11, + "visibleClaimDomains": [ + "bizpeptide.com", + "bulkpeptides.com", + "goodpeptides.com", + "hjpeptide.com", + "keruihk.com", + "lyzelabs.com", + "medipeptide.com", + "peptaion.com", + "veltrixpeptide.com", + "weipeptide.com", + "yidanbio.com" + ], + "providerTokens": [ + "USDT", + "gp_usdt" + ], + "evidenceCount": 12 + }, + "Venmo": { + "canonicalProvider": "Venmo", + "layers": [ + "method" + ], + "domainCount": 14, + "domains": [ + "epic-pep.com", + "ignitepeptides.com", + "midwestpeptide.com", + "neb.co", + "newbeginningpeps.com", + "northwestpeptides.com", + "nurevpeptides.com", + "nxtstate.co", + "omegamino.net", + "optides.com", + "peptalabs.com", + "peptara.org", + "researchchemhq.co", + "vrilpeptides.shop" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "ignitepeptides.com", + "neb.co", + "nxtstate.co" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 3, + "installedOrCodeExposedDomains": [ + "ignitepeptides.com", + "neb.co", + "nxtstate.co" + ], + "visibleClaimDomainCount": 12, + "visibleClaimDomains": [ + "epic-pep.com", + "midwestpeptide.com", + "newbeginningpeps.com", + "northwestpeptides.com", + "nurevpeptides.com", + "nxtstate.co", + "omegamino.net", + "optides.com", + "peptalabs.com", + "peptara.org", + "researchchemhq.co", + "vrilpeptides.shop" + ], + "providerTokens": [ + "Venmo", + "peptipay_venmo", + "venmo", + "venmo_gateway_1" + ], + "evidenceCount": 19 + }, + "Visa": { + "canonicalProvider": "Visa", + "layers": [ + "method" + ], + "domainCount": 31, + "domains": [ + "adaptpeptides.com", + "bulkpeptides.com", + "cactuspeptides.com", + "epic-pep.com", + "glpeptides.is", + "greatestpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "midwestpeptide.com", + "mytidelab.com", + "neb.co", + "northlinelabs.org", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidelabs.us", + "peptidescollective.com", + "peptira.com", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net", + "stratelabs.is" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 31, + "visibleClaimDomains": [ + "adaptpeptides.com", + "bulkpeptides.com", + "cactuspeptides.com", + "epic-pep.com", + "glpeptides.is", + "greatestpeptides.com", + "lifelinkresearch.com", + "lyzelabs.com", + "midwestpeptide.com", + "mytidelab.com", + "neb.co", + "northlinelabs.org", + "nosbarbersupply.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "paradisopeptides.com", + "peptalabs.com", + "peptidecrafters.com", + "peptidelabs.us", + "peptidescollective.com", + "peptira.com", + "protidehealth.com", + "pspeptides.com", + "purerxpeptides.com", + "quantapeptides.com", + "researchchemhq.co", + "rhomeresearch.com", + "royal-peptides.com", + "spartalabs.net", + "stratelabs.is" + ], + "providerTokens": [ + "Visa" + ], + "evidenceCount": 39 + }, + "Wire transfer": { + "canonicalProvider": "Wire transfer", + "layers": [ + "method" + ], + "domainCount": 4, + "domains": [ + "bizpeptide.com", + "epic-pep.com", + "lyzelabs.com", + "orionpeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 4, + "visibleClaimDomains": [ + "bizpeptide.com", + "epic-pep.com", + "lyzelabs.com", + "orionpeptide.com" + ], + "providerTokens": [ + "Wire", + "Wire transfer" + ], + "evidenceCount": 4 + }, + "Wise": { + "canonicalProvider": "Wise", + "layers": [ + "method" + ], + "domainCount": 3, + "domains": [ + "veltrixpeptide.com", + "vrilpeptides.shop", + "weipeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 0, + "installedOrCodeExposedDomains": [], + "visibleClaimDomainCount": 3, + "visibleClaimDomains": [ + "veltrixpeptide.com", + "vrilpeptides.shop", + "weipeptide.com" + ], + "providerTokens": [ + "Wise" + ], + "evidenceCount": 13 + }, + "Zelle": { + "canonicalProvider": "Zelle", + "layers": [ + "method" + ], + "domainCount": 31, + "domains": [ + "adaptpeptides.com", + "agelessvitalitypeptides.com", + "aloralab.shop", + "alphabiologix.com", + "behemothlabz.com", + "bizpeptide.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "midwestpeptide.com", + "newbeginningpeps.com", + "northwestpeptides.com", + "novaxpeptides.com", + "nurevpeptides.com", + "nxtstate.co", + "omegamino.net", + "onyxbiolabs.com", + "optides.com", + "orionpeptide.com", + "peptalabs.com", + "peptara.org", + "peptidology.co", + "pspeptides.com", + "regentide.net", + "retaonelabs.com", + "rhomeresearch.com", + "royal-peptides.com", + "sunrisebioresearch.com", + "thepeplair.com", + "true-peptides.com", + "vrilpeptides.shop" + ], + "activeForRetaCartDomainCount": 9, + "activeForRetaCartDomains": [ + "adaptpeptides.com", + "greatestpeptides.com", + "northwestpeptides.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "peptidology.co", + "regentide.net", + "sunrisebioresearch.com" + ], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 9, + "installedOrCodeExposedDomains": [ + "adaptpeptides.com", + "greatestpeptides.com", + "northwestpeptides.com", + "nxtstate.co", + "onyxbiolabs.com", + "orionpeptide.com", + "peptidology.co", + "regentide.net", + "sunrisebioresearch.com" + ], + "visibleClaimDomainCount": 27, + "visibleClaimDomains": [ + "agelessvitalitypeptides.com", + "aloralab.shop", + "alphabiologix.com", + "behemothlabz.com", + "bizpeptide.com", + "bulkpeptides.com", + "epic-pep.com", + "greatestpeptides.com", + "midwestpeptide.com", + "newbeginningpeps.com", + "northwestpeptides.com", + "novaxpeptides.com", + "nurevpeptides.com", + "nxtstate.co", + "omegamino.net", + "onyxbiolabs.com", + "optides.com", + "peptalabs.com", + "peptara.org", + "peptidology.co", + "pspeptides.com", + "retaonelabs.com", + "rhomeresearch.com", + "royal-peptides.com", + "thepeplair.com", + "true-peptides.com", + "vrilpeptides.shop" + ], + "providerTokens": [ + "Zelle", + "gp_zelle", + "regentide_zelle", + "zelle" + ], + "evidenceCount": 42 + }, + "Airwallex": { + "canonicalProvider": "Airwallex", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "antaipeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "antaipeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "airwallex-online-payments-gateway" + ], + "evidenceCount": 1 + }, + "Amazon Pay": { + "canonicalProvider": "Amazon Pay", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "bulkpeptidesupply.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "bulkpeptidesupply.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-gateway-amazon-payments-advanced" + ], + "evidenceCount": 1 + }, + "CircoFlows": { + "canonicalProvider": "CircoFlows", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 2, + "domains": [ + "aloralab.shop", + "riptidewellness.com" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "riptidewellness.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "riptidewellness.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "CircoFlows", + "circoflows" + ], + "evidenceCount": 2 + }, + "eDebit Direct": { + "canonicalProvider": "eDebit Direct", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 14, + "domains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "greatlifepeptides.com", + "longevityprolabs.com", + "nurevpeptides.com", + "orionpeptide.com", + "pekcuralabs.com", + "pepclubusa.com", + "purepeptidelabs.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "activeForRetaCartDomainCount": 3, + "activeForRetaCartDomains": [ + "nurevpeptides.com", + "orionpeptide.com", + "riptidewellness.com" + ], + "activeProviderLayerDomainCount": 3, + "activeProviderLayerDomains": [ + "nurevpeptides.com", + "orionpeptide.com", + "riptidewellness.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 14, + "installedOrCodeExposedDomains": [ + "aminoannex.com", + "bulkpeptidesupply.com", + "corepeptides.com", + "erospeptides.com", + "gorillahealing.com", + "greatlifepeptides.com", + "longevityprolabs.com", + "nurevpeptides.com", + "orionpeptide.com", + "pekcuralabs.com", + "pepclubusa.com", + "purepeptidelabs.com", + "riptidewellness.com", + "xcelpeptides.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "eDebit Direct", + "edd_draft_yodlee_gateway", + "edebit-direct-ach-plaid-gateway", + "edebit-direct-ach-yodlee-gateway", + "edebit-direct-draft-plaid-gateway", + "edebit-direct-draft-yodlee-gateway", + "edebit-woo-ach-2.0" + ], + "evidenceCount": 30 + }, + "Paynote": { + "canonicalProvider": "Paynote", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 6, + "domains": [ + "alphaomegapeptide.com", + "goalphalabs.com", + "nxtstate.co", + "polarispeptides.com", + "simplepeptide.com", + "umbrellalabs.is" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "umbrellalabs.is" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "umbrellalabs.is" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 6, + "installedOrCodeExposedDomains": [ + "alphaomegapeptide.com", + "goalphalabs.com", + "nxtstate.co", + "polarispeptides.com", + "simplepeptide.com", + "umbrellalabs.is" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Paynote", + "paynote" + ], + "evidenceCount": 11 + }, + "QuickBooks Payments (Intuit)": { + "canonicalProvider": "QuickBooks Payments (Intuit)", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 1, + "domains": [ + "societypeptide.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 1, + "installedOrCodeExposedDomains": [ + "societypeptide.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-gateway-intuit-qbms" + ], + "evidenceCount": 1 + }, + "Square": { + "canonicalProvider": "Square", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 4, + "domains": [ + "apex-peptides.com", + "biopepusa.com", + "swisschems.is", + "triantex.com" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 4, + "installedOrCodeExposedDomains": [ + "apex-peptides.com", + "biopepusa.com", + "swisschems.is", + "triantex.com" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "Square", + "woocommerce-square" + ], + "evidenceCount": 6 + }, + "Stripe": { + "canonicalProvider": "Stripe", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 11, + "domains": [ + "aloralab.shop", + "biomaxresearch.com", + "cactuspeptides.com", + "ironaminos.com", + "lifelinkresearch.com", + "nulifepeptides.com", + "regenerativeresearch.co", + "researchchemhq.co", + "risynthbio.com", + "shopbiohackerdirect.com", + "wolverinepeptides.co.uk" + ], + "activeForRetaCartDomainCount": 1, + "activeForRetaCartDomains": [ + "lifelinkresearch.com" + ], + "activeProviderLayerDomainCount": 1, + "activeProviderLayerDomains": [ + "lifelinkresearch.com" + ], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 10, + "installedOrCodeExposedDomains": [ + "biomaxresearch.com", + "cactuspeptides.com", + "ironaminos.com", + "lifelinkresearch.com", + "nulifepeptides.com", + "regenerativeresearch.co", + "researchchemhq.co", + "risynthbio.com", + "shopbiohackerdirect.com", + "wolverinepeptides.co.uk" + ], + "visibleClaimDomainCount": 1, + "visibleClaimDomains": [ + "researchchemhq.co" + ], + "providerTokens": [ + "Stripe", + "adv%20checkout%20-%20woocommerce%20plugin%20(stripe)-%20v9", + "mecom_stripe", + "woocommerce-gateway-stripe" + ], + "evidenceCount": 15 + }, + "WooPayments": { + "canonicalProvider": "WooPayments", + "layers": [ + "PSP/PayFac/processor" + ], + "domainCount": 11, + "domains": [ + "antaipeptide.com", + "behemothlabz.com", + "bulkpeptidewholesale.com", + "healtlab.com", + "molipeptide.com", + "orionpeptide.com", + "pepclubusa.com", + "peptidejft.shop", + "peptidelabs.us", + "risynthbio.com", + "vertexpeptideslab.org" + ], + "activeForRetaCartDomainCount": 0, + "activeForRetaCartDomains": [], + "activeProviderLayerDomainCount": 0, + "activeProviderLayerDomains": [], + "configuredNotActiveDomainCount": 0, + "configuredNotActiveDomains": [], + "installedOrCodeExposedDomainCount": 11, + "installedOrCodeExposedDomains": [ + "antaipeptide.com", + "behemothlabz.com", + "bulkpeptidewholesale.com", + "healtlab.com", + "molipeptide.com", + "orionpeptide.com", + "pepclubusa.com", + "peptidejft.shop", + "peptidelabs.us", + "risynthbio.com", + "vertexpeptideslab.org" + ], + "visibleClaimDomainCount": 0, + "visibleClaimDomains": [], + "providerTokens": [ + "woocommerce-payments" + ], + "evidenceCount": 11 + } + }, + "rows": [ + { + "domain": "geneticpeptide.com", + "providerToken": "amgexpress", + "canonicalProvider": "AMG Express token", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "lifelinkresearch.com", + "providerToken": "amgexpress", + "canonicalProvider": "AMG Express token", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://lifelinkresearch.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"mecom_stripe\",\"amgexpress\",\"btcpaygf_default\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "midwestpeptide.com", + "providerToken": "Azeban Pay", + "canonicalProvider": "Azeban Pay", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://midwestpeptide.com/blog/can-i-buy-glp-3-rt", + "snippet": "ytical results, typically answered same business day. Multiple secure payment options ( Zelle with discount , Cash App, Venmo, Azeban Pay, and cryptocurrency through Coinbase Commerce). Full RUO disclaimer language on th", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "5341432054506f2018", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "midwestpeptide.com", + "providerToken": "Azeban Pay", + "canonicalProvider": "Azeban Pay", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://midwestpeptide.com/blog/can-i-buy-glp-3-rt", + "snippet": "ults, typically answered same business day. Multiple secure payment options ( Zelle with discount , Cash App, Venmo, Azeban Pay, and cryptocurrency through Coinbase Commerce). Full RUO disclaimer language on the product", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "729316b30c2c0ddb9f", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "midwestpeptide.com", + "providerToken": "Azeban Pay", + "canonicalProvider": "Azeban Pay", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://midwestpeptide.com/blog/can-i-buy-glp-3-rt", + "snippet": "d same business day. Multiple secure payment options ( Zelle with discount , Cash App, Venmo, Azeban Pay, and cryptocurrency through Coinbase Commerce). Full RUO disclaimer language on the product page, packaging, and or", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "7999c144693f19413b", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "behemothlabz.com", + "providerToken": "bytenft", + "canonicalProvider": "ByteNFT token", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://behemothlabz.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"pr_paypal_post_order_instructions\",\"bytenft\",\"ven\",\"instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto\",\"crypto\",\"forumpay\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "geneticpeptide.com", + "providerToken": "bytenft", + "canonicalProvider": "ByteNFT token", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://geneticpeptide.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "truepeptidelabs.com", + "providerToken": "wcpay-card2crypto-payments", + "canonicalProvider": "Card2Crypto", + "providerRoleReference": null, + "classificationLayer": "frontend SDK/plugin", + "evidenceStatus": "installed_plugin_signal_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct-category%2Fimmunomodulatory-research-peptides%2F", + "snippet": "-support-js-extra ", + "sourceType": "html_source", + "evidenceKind": "payment_specific_plugin_signal", + "confidence": "medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "692912e8f3fd84fb99", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "riptidewellness.com", + "providerToken": "edd_draft_yodlee_gateway", + "canonicalProvider": "eDebit Direct", + "providerRoleReference": { + "role": "ACH, eCheck, and demand-draft service provider that describes itself as a payment processor for those bank-payment services.", + "officialUrl": "https://edebitdirect.com/terms-and-conditions/" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://riptidewellness.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"maef_child_gateway\",\"circoflows\",\"dfinsell\",\"edd_draft_yodlee_gateway\",\"cashenvoy\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "riptidewellness.com", + "providerToken": "eDebit Direct", + "canonicalProvider": "eDebit Direct", + "providerRoleReference": { + "role": "ACH, eCheck, and demand-draft service provider that describes itself as a payment processor for those bank-payment services.", + "officialUrl": "https://edebitdirect.com/terms-and-conditions/" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_or_code_exposed_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://riptidewellness.com/product/glp3-r-10mg/", + "snippet": "rel='stylesheet' id='edd-draft-plaid-gateway-style-css' href='https://riptidewellness.com/wp-content/plugins/edebit-direct-draft-plaid-gateway/assets/css/style.css?ver=1.0.0' media='all' /> =98% purity guaranteed Secure Payment Crypto, T/T, PayPal GMP Facility ISO 9001 certified Global Shipping HK & US warehouses Ready to Start Your Res", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "b5a7de75bbeb811aec", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "plest over WhatsApp, the fastest channel, and we also accept Visa, Mastercard, UPI, PayPal, CashApp, bank and wire transfer, and crypto including BTC, USDT, and ETH. Shipping is free, discreet, and worldwide, typically a", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "01416e64f4d1dff157", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "nnel, and we also accept Visa, Mastercard, UPI, PayPal, CashApp, bank and wire transfer, and crypto including BTC, USDT, and ETH. Shipping is free, discreet, and worldwide, typically arriving in 7 to 14 days. With GLP-1", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "0ae620a5a46b6453c8", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "and we also accept Visa, Mastercard, UPI, PayPal, CashApp, bank and wire transfer, and crypto including BTC, USDT, and ETH. Shipping is free, discreet, and worldwide, typically arriving in 7 to 14 days. With GLP-1 and tr", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "0bb1dd1e3732ec5f59", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "plus purity. Message us on WhatsApp for the fastest order processing, choose from card, UPI, PayPal, CashApp, bank transfer, or crypto, and get free discreet worldwide shipping in 7 to 14 days. Current batch stock is lim", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "100fce27b606fe63f8", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-triple-agonist-research-guide", + "snippet": "team Discrete, professional packaging for institutional orders All major payment methods (Card, UPI, PayPal, Crypto, Bank Transfer) Frequently Asked Questions About Retatrutide What makes Retatrutide different from Tirze", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "55dcb3848cb6967228", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "s at a 4.8 out of 5 rating. Ordering is simplest over WhatsApp, the fastest channel, and we also accept Visa, Mastercard, UPI, PayPal, CashApp, bank and wire transfer, and crypto including BTC, USDT, and ETH. Shipping is", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "8cc273fb08811f5883", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "lyzelabs.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://lyzelabs.com/blog/retatrutide-vs-mounjaro-ozempic-research-comparison", + "snippet": "so accept Visa, Mastercard, UPI, PayPal, CashApp, bank and wire transfer, and crypto including BTC, USDT, and ETH. Shipping is free, discreet, and worldwide, typically arriving in 7 to 14 days. With GLP-1 and triple-agon", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "b356b5616c10a2acf8", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "newbeginningpeps.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://newbeginningpeps.com/", + "snippet": "aranteed Shop Now PAYMENT OPTIONS We currently accept the following payment methods: Venmo, PayPal, Cash App, Zelle, Credit/Debit Card Option ZELLE, CASH APP, AND CREDIT/DEBIT CARD OPTIONS ARE AVAILABLE DIRECTLY AT CHECK", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "040937e9393f87f0ce", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "newbeginningpeps.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://newbeginningpeps.com/", + "snippet": "Quality Guaranteed Shop Now PAYMENT OPTIONS We currently accept the following payment methods: Venmo, PayPal, Cash App, Zelle, Credit/Debit Card Option ZELLE, CASH APP, AND CREDIT/DEBIT CARD OPTIONS ARE AVAILABLE DIRECTL", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "e9ad783180bdc780bd", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "newbeginningpeps.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://newbeginningpeps.com/", + "snippet": "American labs Quality Guaranteed Shop Now PAYMENT OPTIONS We currently accept the following payment methods: Venmo, PayPal, Cash App, Zelle, Credit/Debit Card Option ZELLE, CASH APP, AND CREDIT/DEBIT CARD OPTIONS ARE AVA", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "fd6ddd01c831140a9a", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "oupeptide.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://oupeptide.com/", + "snippet": "risk of default. 3.What are your payment terms? A: We can accept various payment methods, Western Union, T/T, BTC (Bitcoin),Paypal etc. 4.Are there any discounts? Yes, for bulk purchase orders, we always support with bet", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:10:06.308Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "17cf7f4e2b7d73f48d", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "paradisopeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.paradisopeptides.com/product/nad-plus-research-peptide/", + "snippet": "g Information' page for more details. What payment methods do you accept? We accept major credit cards (Visa, MasterCard, American Express), PayPal, and Apple Pay. How do I contact customer support? You can reach our cus", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "0607d5f19397a88978", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "paradisopeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.paradisopeptides.com/product/nad-plus-research-peptide/", + "snippet": "payment methods do you accept? We accept major credit cards (Visa, MasterCard, American Express), PayPal, and Apple Pay. How do I contact customer support? You can reach our customer support team via email at support@exa", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "1dc9c8029947e6e085", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "paradisopeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.paradisopeptides.com/product/aod-9604-research-peptide/", + "snippet": "n' page for more details. What payment methods do you accept? We accept major credit cards (Visa, MasterCard, American Express), PayPal, and Apple Pay. How do I contact customer support? You can reach our customer suppor", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "2c350d9507bed8cd7d", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "paradisopeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.paradisopeptides.com/product/ghk-cu-50mg-research-peptide/", + "snippet": "hipping Information' page for more details. What payment methods do you accept? We accept major credit cards (Visa, MasterCard, American Express), PayPal, and Apple Pay. How do I contact customer support? You can reach o", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "64653fbaa33b62d166", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "paradisopeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.paradisopeptides.com/product/retatrutide-20mg-research-peptide/", + "snippet": "a, MasterCard, American Express), PayPal, and Apple Pay. Related Products RESEARCH USE ONLY MOTS-c Buy MOTS-c 10mg with >99% purity, third-party tested, USA made. Laboratory-grade lyophilized peptide supplied in sterile", + "sourceType": "first_party_page", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "67368919a78eeda4ac", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "peptidejft.shop", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peptidejft.shop/", + "snippet": "e risk of default. What are your payment terms? A: We can accept various payment methods, Western Union, T/T, BTC (Bitcoin),Paypal etc. Are there any discounts? Yes, for bulk purchase orders, we always support with bette", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "4a651c502d2c70ab30", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "peptidelabs.us", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peptidelabs.us/blog-list-research-peptides/retatrutide-research-review/", + "snippet": "be applied at checkout. Subtotal $ 0.00 Shipping Calculated at checkout CHECKOUT SECURELY VISA MC AMEX PayPal Apple Pay Klarna Afterpay 0", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "0616b805cff048c4d6", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "peptidelabs.us", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peptidelabs.us/retatrutide-pen-starter-kit/", + "snippet": "d codes can be applied at checkout. Subtotal $ 0.00 Shipping Calculated at checkout CHECKOUT SECURELY VISA MC AMEX PayPal Apple Pay Klarna Afterpay 0", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "2b61a5dc3412af55b8", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "peptidelabs.us", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peptidelabs.us/blog-list-research-peptides/where-to-buy-retatrutide/", + "snippet": "Gift Card codes can be applied at checkout. Subtotal $ 0.00 Shipping Calculated at checkout CHECKOUT SECURELY VISA MC AMEX PayPal Apple Pay Klarna Afterpay 0", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "4a89fa05ce8fd823d3", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "purerxpeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.purerxpeptides.com/product/epithalon-quality-10mg-for-research-purereactive-peptides/", + "snippet": "h Master Card Pay safely with PayPal Pay safely with American Express Pay safely with Maestro Pay safely with Bitcoin Your Payment is 100% Secure Related products In stock Add to cart Quick View DSIP 10mg $ 37.00 DSIP 10", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "2fd308598659338a0f", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "purerxpeptides.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.purerxpeptides.com/product/epithalon-quality-10mg-for-research-purereactive-peptides/", + "snippet": "free to Get in touch Instagram Youtube Telegram Guaranteed safe checkout Pay safely with Visa Pay safely with Master Card Pay safely with PayPal Pay safely with American Express Pay safely with Maestro Pay safely with Bi", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "3a1d033e645ebe80d8", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "researchchemhq.co", + "providerToken": "mecom_paypal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://researchchemhq.co/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"linkmoney\",\"noramp_platform\",\"mecom_paypal\",\"idem\",\"pipepay\",\"paygatedotto-instant-payment-gateway-hostedpaygatedotto\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "rivnpeptides.com", + "providerToken": "mecom_paypal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "active_for_reta_cart_api", + "activeForRetaCart": true, + "installedOrExposedInCode": true, + "evidenceUrl": "https://rivnpeptides.com/wp-json/wc/store/v1/cart", + "snippet": "payment.evidence.activeMethodIdsReturned = [\"nmi\",\"mecom_paypal\"]", + "sourceType": "normalized_public_cart_api_observation", + "evidenceKind": "active_checkout_identifier", + "confidence": "high_for_method_id_not_transaction", + "observedAt": "2026-07-27", + "sourceDataset": "noli-checkout-scan-2026-07-27.json", + "evidenceId": null, + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public cart API returned this method ID after an anonymous Reta cart add. That verifies cart-level availability, not a successful charge or settlement." + }, + { + "domain": "sentinelvalor.com", + "providerToken": "woocommerce-paypal-payments", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_plugin_signal_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://sentinelvalor.com/product/acetic-acid-research-solution-10-ml/", + "snippet": "watches_product-inline-css */ <", + "sourceType": "html_source", + "evidenceKind": "payment_specific_plugin_signal", + "confidence": "medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "445cdedf2ed2b7675d", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "thepeplair.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peplairresearch.shop/my-account/", + "snippet": "ave been added! ACH Bank Payments and a new Credit/Debit Card system have been added. Discounts on Crypto and Zelle Payments will auto populate at the checkout. Personal PayPal has also been removed. close Close Shop Res", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "466f9795d197bcd292", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "thepeplair.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://peplairresearch.shop/my-account/", + "snippet": "t Methods have been added! ACH Bank Payments and a new Credit/Debit Card system have been added. Discounts on Crypto and Zelle Payments will auto populate at the checkout. Personal PayPal has also been removed. close Clo", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "d035b66b68124348e3", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "tritideresearch.com", + "providerToken": "woocommerce-paypal-payments", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_plugin_signal_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://tritideresearch.com/product/glp-r-10mg/", + "snippet": "n.css?ver=1779136718' media='all' /> <", + "sourceType": "html_source", + "evidenceKind": "payment_specific_plugin_signal", + "confidence": "medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "5a12158026dcdd9100", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "vrilpeptides.shop", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.vrilpeptides.com/", + "snippet": "obal Pay Crypto · Fiat View all → 01 Choose. Minimum order $100. 02 Pay. Crypto (USDC · SOL) or fiat (Venmo · Zelle · Wise · PayPal). No accounts. 03 Receive. Worldwide shipping, 21+ business days. Discreet packaging, tr", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "8cd8784ca1bd03f9cc", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "vrilpeptides.shop", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.vrilpeptides.com/", + "snippet": "Purity 99%+ HPLC Shipping Global Pay Crypto · Fiat View all → 01 Choose. Minimum order $100. 02 Pay. Crypto (USDC · SOL) or fiat (Venmo · Zelle · Wise · PayPal). No accounts. 03 Receive. Worldwide shipping, 21+ business", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "a8e45fd67d526bda17", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "vrilpeptides.shop", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.vrilpeptides.com/", + "snippet": "mum order $100. 02 Pay. Crypto (USDC · SOL) or fiat (Venmo · Zelle · Wise · PayPal). No accounts. 03 Receive. Worldwide shipping, 21+ business days. Discreet packaging, tracking via email.", + "sourceType": "first_party_page", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "cf2988b478503e4e34", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "vrilpeptides.shop", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.vrilpeptides.com/", + "snippet": "pping Global Pay Crypto · Fiat View all → 01 Choose. Minimum order $100. 02 Pay. Crypto (USDC · SOL) or fiat (Venmo · Zelle · Wise · PayPal). No accounts. 03 Receive. Worldwide shipping, 21+ business days. Discreet packa", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "d430a98f4c2a42de7f", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "weipeptide.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://weipeptide.com/danye.asp?id=9", + "snippet": "transportation. Q :Which kind of payment terms do you accept? A:Usually PayPal��Need to pay a handling fee), Bitcoin, USDT, USDC and other cryptocurrencies, wise��Alipay��Gcash Q:Can you give me a discount price? A: Yes.", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "492bacab4cdd28b962", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "weipeptide.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://weipeptide.com/danye.asp?id=9", + "snippet": ". Q :Which kind of payment terms do you accept? A:Usually PayPal��Need to pay a handling fee), Bitcoin, USDT, USDC and other cryptocurrencies, wise��Alipay��Gcash Q:Can you give me a discount price? A: Yes. It depends on", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "d5c6f393af1e8e9458", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "weipeptide.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://weipeptide.com/danye.asp?id=9", + "snippet": "tation. Q :Which kind of payment terms do you accept? A:Usually PayPal��Need to pay a handling fee), Bitcoin, USDT, USDC and other cryptocurrencies, wise��Alipay��Gcash Q:Can you give me a discount price? A: Yes. It depe", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "d64b663bceab83e6ef", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "xspeptide.com", + "providerToken": "PayPal", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://www.xspeptide.com/products/Semaglu/Semaglu-10mg.html", + "snippet": "pends on the quantity. Q:What are your payment terms? A:We can accept various payment methods, Western Union, Bitcoin, paypal, Alibaba International, etc. Submit PRODUCTS Tirz Peptide Semaglu Peptide CONTACT US E-mail: f", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:14:58.045Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "c8f2239905f80596c6", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "zen-peptide.com", + "providerToken": "woo-paypal-gateway", + "canonicalProvider": "PayPal", + "providerRoleReference": { + "role": "Payment service provider and payment processor.", + "officialUrl": "https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_plugin_signal_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://zen-peptide.com/shop/?per_page=9", + "snippet": "timize=\"1\" rel='stylesheet' id='ppcp-paypal-checkout-for-woocommerce-public-css' href='https://zen-peptide.com/wp-content/plugins/woo-paypal-gateway/ppcp/public/css/ppcp-paypal-checkout-for-woocommerce-public.css?ver=9.2", + "sourceType": "html_source", + "evidenceKind": "payment_specific_plugin_signal", + "confidence": "medium", + "observedAt": "2026-07-27T22:10:06.308Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "52acd63dcac3e5b5ce", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "societypeptide.com", + "providerToken": "woocommerce-gateway-intuit-qbms", + "canonicalProvider": "QuickBooks Payments (Intuit)", + "providerRoleReference": null, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_plugin_signal_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://societypeptide.com/product-category/research-blends/", + "snippet": " <", + "sourceType": "html_source", + "evidenceKind": "payment_specific_plugin_signal", + "confidence": "medium", + "observedAt": "2026-07-27T22:10:06.308Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "5282765f3bb1bb746f", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "regenerativeresearch.co", + "providerToken": "Stripe", + "canonicalProvider": "Stripe", + "providerRoleReference": { + "role": "Gateway, PSP, payment facilitator under applicable programs, and payment processor.", + "officialUrl": "https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_or_code_exposed_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://regenerativeresearch.co/product/10", + "snippet": "Content-Security-Policy\" content=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://js.stripe.com https://replit.com https://static.goaffpro.com https://api.goaffpro.com https://accounts.google.", + "sourceType": "html_source", + "evidenceKind": "public_code_integration_signal", + "confidence": "low", + "observedAt": "2026-07-27T22:10:06.308Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "2ff27c6e132bd99622", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "This proves only the public signal stated by evidenceStatus; it does not prove a merchant contract, transaction success, settlement, ISO/MSP, or acquiring bank." + }, + { + "domain": "researchchemhq.co", + "providerToken": "Stripe", + "canonicalProvider": "Stripe", + "providerRoleReference": { + "role": "Gateway, PSP, payment facilitator under applicable programs, and payment processor.", + "officialUrl": "https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "configured_disabled_in_public_code", + "activeForRetaCart": false, + "installedOrExposedInCode": true, + "evidenceUrl": "https://researchchemhq.co/product-category/peptides/", + "snippet": "googlepay%22%3A%7B%22id%22%3A%22stripe_googlepay%22%2C%22enabled%22%3Afalse%2C%22available%22%3Afalse%7D%2C%22stripe_payment_request%22%3A%7B%22id%22%3A%22stripe_payment_request%22%2C%22enabled%22%3Afalse%2C%22available%", + "sourceType": "html_source", + "evidenceKind": "public_code_integration_signal", + "confidence": "low", + "observedAt": "2026-07-27T22:35:22.661Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "16748ab809d051f3ff", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The public code exposes the provider but marks the surfaced configuration unavailable/disabled." + }, + { + "domain": "researchchemhq.co", + "providerToken": "Stripe", + "canonicalProvider": "Stripe", + "providerRoleReference": { + "role": "Gateway, PSP, payment facilitator under applicable programs, and payment processor.", + "officialUrl": "https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "visible_provider_mention_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": null, + "evidenceUrl": "https://researchchemhq.co/shop/", + "snippet": "e checkout using crypto through supported providers such as Ramp Network, Stripe / Link, Coinbase, Robinhood, PayPal, or MoonPay. KYC identity verification may be required by the selected provider. ▸ PayPal Pay securely", + "sourceType": "visible_first_party_language", + "evidenceKind": "embedded_visible_provider_mention", + "confidence": "low_to_medium", + "observedAt": "2026-07-27T22:35:22.661Z", + "sourceDataset": "retatrutide-vendor-audit-data.js", + "evidenceId": "10b7414911c29cee63", + "contractualProcessorRelationshipVerified": false, + "transactionSuccessVerified": false, + "settlementVerified": false, + "isoMspVerified": false, + "acquirerSponsorBankVerified": false, + "note": "The provider is named in first-party visible language. Activation is not verified." + }, + { + "domain": "risynthbio.com", + "providerToken": "Stripe", + "canonicalProvider": "Stripe", + "providerRoleReference": { + "role": "Gateway, PSP, payment facilitator under applicable programs, and payment processor.", + "officialUrl": "https://stripe.com/en-de/resources/more/payment-processor-vs-payment-gateway" + }, + "classificationLayer": "PSP/PayFac/processor", + "evidenceStatus": "installed_or_code_exposed_activation_unknown", + "activeForRetaCart": null, + "installedOrExposedInCode": true, + "evidenceUrl": "https://risynthbio.com/product/rb-r3-retatrutide-research-grade-peptide-risynth-bio/", + "snippet": "com/wp-includes/js/dist/vendor/wp-polyfill.min.js?m=1767615370'> var wcpayAssets = {\"url\":\"https://orionpeptide.com/wp-content/plugins/woocommerce-payments/dist/\"}; //# sourceURL=WCPAY_ASSETS-js-extra <… | +| biopepusa.com | `Square` | Square | PSP/PayFac/processor | installed_or_code_exposed_activation_unknown | [html_source](https://biopepusa.com/product/glp-reta/) | _pay-icons"> Visa + + + + + + + + + +
    +
    +
    +
    Noli / Category go / Offer stop / Current July 27, 2026
    +

    The Noli decision system.

    +

    Simple scales. Complex fails. Pursue the category. Do not launch the current consumer Reta concept until the exact legal lane clears. The company is trust, distribution, lot proof, cash, service, and repeat.

    + +
    + +
    + +
    +
    DecisionPursue category. Stop uncleared offer.
    +
    Demand$100M+ gray on-chain run rate claimed.
    +
    Supply11 Reta DMFs. Zero complete retail-lot-to-API-and-fill-site chains.
    +
    Proof gap9% of 326 UK sellers pass one narrow COA check.
    +
    MoatCreators, proof, service, repeat.
    +
    RuleOne lane. Offer. Lot. Ledger.
    +
    + +
    +
    +
    +
    01 / Vendor universe
    +

    Every Retatrutide vendor we could find, with one evidence system.

    +
    +
    +

    The complete public starting universe, not a handpicked best-vendor list. Every reachable public site gets the same automated profile. Checkout evidence stays separate from directories, logos, and inference.

    + +
    +
    + +
    +
    655public vendor identities
    +
    546with Reta test history
    +
    646linked public profiles
    +
    48checkout paths audited
    +
    +
    + +
    +
    + Retail market + 84 confirmed, 28 probable or gated +

    The broader index also contains manufacturers, wholesalers, group buys, private sellers, and dead operators. They are not 655 equivalent competitors.

    +
    +
    + Payment truth + The code names providers. The contract names the private chain. +

    Active cart IDs outrank installed plugins, which outrank logos. Code can identify Stripe, PayPal, NMI, Authorize.Net, Bankful, and others without revealing every MID, acquirer, reserve, or settlement term.

    +
    +
    + Audit system + Same evidence pass across every public site. +

    Listings, offers, marketing, platform, tracking, trust, policies, sourcing claims, and public checkout signals. Unknown stays unknown.

    +
    +
    + +
    + What the public code reveals about processors and gateways +
      +
    • Scale: 783 exact evidence rows across 149 domains. Forty-eight domains expose processor/PSP-level code; seven expose active provider-layer IDs for a tested Reta cart.
    • +
    • Direct active examples: LifeLink exposes mecom_stripe; ResearchChemHQ and Rivn expose PayPal-named active IDs; Riptide exposes CircoFlows; Nurev, Orion, and Riptide expose eDebit Direct; Umbrella exposes Paynote.
    • +
    • Card gateways: NMI appears in code on 19 domains and is Reta-cart active on 6. Authorize.Net appears on 9 and is active on 3. Bankful appears on 9 and is active on NewBioRx.
    • +
    • Installed versus active: WooPayments appears on 11 domains and Square on 4, but neither produced an active provider-layer ID in the tested Reta carts. The fresh 48-store product/cart spot-check found no strong Square marker.
    • +
    • False-positive controls: ResearchChemHQ's Stripe config was disabled; Alora's source calls earlier CircoFlows/Stripe attempts failed or shut down; Epic-Pep's NOWPayments values were placeholders.
    • +
    • The remaining boundary: provider code does not establish the merchant's private processor contract, ISO, MID, acquiring bank, reserve, settlement path, or successful transaction.
    • +
    + +
    + +
    + What the first 48 current storefronts teach Noli +
      +
    • Simple commerce wins: 36 of 48 run WooCommerce. The advantage is instrumentation, proof, and checkout continuity, not an exotic frontend.
    • +
    • Affiliates dominate: 34 use an affiliate or ambassador system, versus 4 with visible subscription continuity. Build controlled partners, attribution, approved creative, and claim monitoring first.
    • +
    • Tracking is table stakes: GTM appears on 36, GA on 28, Meta on 16, TikTok on 10, Clarity on 5, and Triple Whale on 2. Noli needs first-party order, creator, lot, support, and settlement lineage from day one.
    • +
    • Checkout resilience is a portfolio: 33 carts exposed active method IDs and 20 exposed readable labels. Link Money appeared on 11, Zelle on 7, bank transfer on 6, NMI on 6, and IDEM on 3. These IDs identify real provider or method integrations; the private underwriting and acquiring chain is a separate layer.
    • +
    • Configured is not active: 14 identifiers were installed or exposed but inactive for the tested Reta cart. Never treat a plugin, logo, or code string as usable capacity.
    • +
    • Gates have a cost: 44 showed RUO language, 14 showed age attestation, and 13 required an account or login. Several mobile first screens were consumed by the gate.
    • +
    • Proof claims are table stakes: 44 showed a COA or testing signal and 41 showed reviews. The differentiator is an accessible, lot-linked, independently checkable proof chain, not merely saying “tested.”
    • +
    • Maturity clusters: affiliate operators averaged 7.7 UI versus 7.0 for the rest and 28 of 34 exposed active checkout methods. This is correlation, not causation, but distribution, measurement, and commerce maturity tend to arrive together.
    • +
    • Pretty does not mean operational: several UI leaders did not expose an active anonymous checkout state. Design, fulfillment, underwriting, and quality must remain separate scores.
    • +
    • Coded naming is common: 20 of 48 surfaced a coded or euphemistic product name instead of the exact molecule. Record this as a claims, support, and identity-continuity risk, not a growth tactic.
    • +
    • The reusable pattern: one clear offer, visible batch proof, a clean mobile path, redundant underwritten payments, precise reconciliation, fast support, and attributable partner traffic.
    • +
    +
    + +
    + What the corrected 570-domain census changes +
      +
    • Visible demand is crowded: 157 of 245 retail or probable storefronts listed Reta; 110 showed an availability cue. That proves supply visibility, not revenue, quality, legality, or durable margin.
    • +
    • WooCommerce is the default: 138 of 245 detected storefronts used it, versus 14 Shopify and 13 Next.js. Familiar tooling beats exotic architecture; plugin count is not a moat.
    • +
    • The minimum useful listing is consistent: exact identity, variant-bound strength and price, stock, shipping, lot-specific reports, contact, and policies in one path.
    • +
    • Offers plus measurement travel together: free shipping appeared on 69, bundles on 67, percentage discounts on 65, and subscriptions on 50. GA appeared on 79 and GTM on 68.
    • +
    • Operating proof separates live stores: available stores exposed COAs, policies, contact, shipping, offers, and tracking far more often. This is observational and crawl-biased, not causal proof.
    • +
    • Disclaimers do not cure contradictory claims: 136 storefronts mixed research-only language with human-use, administration, therapeutic, or outcome cues. Treat that as a content-control failure, not a loophole.
    • +
    • Payment code is highly revealing: 149 domains produced 783 provider or method rows. Forty-eight expose processor/PSP-level code, with active Reta-cart IDs on 7. The code names providers; merchant contracts and statements are still required for the private ISO, MID, acquirer, reserve, and settlement chain.
    • +
    • Supplier identities remain gated: competitors made many purity, testing, cGMP, and manufacturing claims, but the public crawl independently verified zero manufacturer identities.
    • +
    • Automated pricing is directional: page tokens are contaminated by bundles, cross-sells, and shipping add-ons. Use a manually verified 15–25 store panel for exact weekly price-per-mg decisions.
    • +
    • Noli's fastest responsible path: one eligible offer, one storefront, one approved payment path, one fulfillment workflow, lot-bound proof, and settled contribution margin before adding complexity.
    • +
    +
    + +
    + UI and design scorecard: what to inspect later +
      +
    • Coverage: all 112 confirmed or probable retail storefronts received screenshot review. Ninety-five were comparable and scored; 17 stayed unscored because the public view was blocked, blank, disabled, or gated.
    • +
    • Current leaders: Pepta Labs 9.3, LifeLink Research 9.2, Crush Research 8.8, Northwest Peptides 8.8, and Peptide Hackers 8.8. Use the UI sort to open each site directly.
    • +
    • Best repeated pattern: a compact mobile decision card with product, strength, price, purchase state, and current-lot proof in one path.
    • +
    • Most common failure: gates, overlays, security challenges, and floating controls hide the offer or proof before the buyer can evaluate it.
    • +
    • Noli template: one PDP, one proof card, one quantity selector, and one policy strip. UI is scored separately from checkout durability, quality, legality, and revenue.
    • +
    +
    + + + +
    +

    Loading the vendor universe...

    +

    Observed July 27, 2026

    +
    +
    + + +
    +
    + + Sparta Labs case file + Very new · $6K–$15K monthly estimate · SpartaPay to Stripe observed + +
    +
    AgeCurrent store: weeks, not years

    Catalog records were created June 13, 2026. The current public store was first observed July 10.

    +
    RevenueBest estimate: $6K–$15K monthly

    Public inventory movement implies about $8.5K list-price GMV. Hidden restocks, wholesale, and offline sales remain unknown.

    +
    CheckoutSpartaPay → Stripe Elements

    The tested path exposed card plus BTC, ETH, USDT, and USDC. Installed frontend adapters do not prove active use.

    +
    Why still onlineNo public action found ≠ FDA clearance

    The store is new and enforcement is selective and slow. FDA says Retatrutide is unapproved and cannot be compounded.

    +
    +

    + Live product ↗ + Stripe policy ↗ + FDA status ↗ + Comparable FDA case ↗ +

    +
    + +
    + + Bluum Peptides case file + Shopify · $125 entry offer · mature growth stack · processor unknown + +
    +
    OfferOne compound, five strengths

    Retatrutide runs from 10mg through 60mg and starts at $125. The ladder raises order value without catalog sprawl.

    +
    MarketingReviews, ads, and conversion tooling

    Observed stack includes Intelligems, Judge.me, Google Ads, Meta Pixel, Microsoft Clarity, and custom analytics.

    +
    CheckoutAccount-gated Shopify flow

    Policy names card and wallet brands, but the processor and acquiring bank are not public. Shopify proves neither.

    +
    Noli lessonTrust system beats catalog sprawl

    Copy the offer ladder, measurement discipline, and visible lot proof. Do not infer approval, revenue, or quality from design.

    +
    +

    + Live product ↗ + Payment policy ↗ + Store history ↗ + Domain record ↗ +

    +
    + +
    + + Northline Labs case file + Five-strength ladder · lot proof · visible payment brands · processor unknown + +
    +
    Offer10mg to 50mg, $79.99 to $299.99

    Five public variants create a simple value ladder without multiplying product pages.

    +
    ProofLot-linked purity and endotoxin reports

    The public archive exposes the Reta lot and two report types. The reports remain supplier-provided evidence, not an independent endorsement.

    +
    Trust4.8 from 867 shown on-site

    The rating and count are recorded as first-party claims because the audit did not independently verify the reviewers.

    +
    CheckoutVisa, Amex, Discover, and Google Pay displayed

    Those labels do not reveal activation, the gateway, processor, ISO, acquirer, sponsor bank, or transaction success.

    +
    +

    + Live product ↗ + COA archive ↗ + Storefront ↗ +

    +
    +
    + +
    + How the automated audit works +
      +
    1. Registry: normalize public domains, redirects, aliases, retail status, and source records.
    2. +
    3. Public crawl: products, codes, sizes, prices, bundles, claims, COAs, reviews, platform, pixels, affiliates, shipping, policies, and contact data.
    4. +
    5. Safe checkout observation: anonymous public cart and payment-method rendering only. No credentials, payment, order, or gate bypass.
    6. +
    7. Evidence ledger: every extracted signal retains its URL, timestamp, method, and confidence. Blocked and unknown fields remain explicit.
    8. +
    9. Change pass: rerun the same system for new sellers, pricing, claims, payment changes, warnings, and dead domains.
    10. +
    +

    UI score: combines mobile usability, visual polish, product clarity, trust presentation, conversion UX, and public performance. Screenshot-reviewed retail profiles preserve gates and challenges as first-load friction. Generic DOM proxies do not enter the leaderboard. A high score is not evidence of product quality or legal status.

    +

    Evidence rule: a listing is not an endorsement or proof of quality, legality, processor approval, revenue, or active inventory.

    +
    +
    + +
    +
    +
    +
    01 / Decision
    +

    Is this worth doing?

    +
    +
    +

    GO: build Noli in a legally eligible health lane. NO-GO: consumer retatrutide sales or outcome-led creator marketing today. Retatrutide stays on the watchlist until an approved or otherwise clearly lawful route exists. A genuine B2B RUO business is a separate model with verified research buyers and no consumer funnel.

    + +
    +
    + +
    Lane-clear rule: specialist counsel must approve in writing the exact entity, SKU, intended use, claims, creator brief, checkout, jurisdictions, fulfillment chain, and counterparty roles. The acquiring bank must underwrite that same package in writing, insurance must cover it, and supplier and 3PL contracts must match it. Until then: no inventory, preorders, checkout, or creator activation.
    + +
    + + New in this deep passOperator failures, manufacturer forensics, current payment evidence, and the corrected Direct Peptides sale status are now inside this page. + +
    +
    +
    Young operators

    Six peptide-company files now show what launched, scaled, broke, or was abandoned.

    +
    Actual source chain

    Eleven FDA Reta DMF holders are separated from brokers, fillers, labs, and retail brands.

    +
    Forum evidence

    Current Reddit, BHW, GLP-1 Forum, and MESO-Rx failures are converted into Noli gates.

    +
    Concise by default

    Every deep section stays closed until you tap it. Direct evidence opens in place.

    +
    + +
    +
    + +
    +
    +
    The opportunity
    +

    Real demand, weak product moat.

    +

    Product access is abundant. A seller with trusted distribution, inspectable proof, dependable service, and owned repeat demand can still build a valuable company.

    +
    +
    +
    The constraint
    +

    The lane comes first.

    +

    A genuine qualified-research business and a consumer health business are different models. A lifestyle creator funnel cannot imply human outcomes while the store claims a different intended use. FDA's March 2026 Pink Pony letter treated human-outcome copy plus bacteriostatic water sold beside peptides as intended-use evidence despite RUO disclaimers.

    +

    FDA Pink Pony warning

    +
    +
    +
    The move
    +

    Prove the smallest complete engine.

    +

    One cleared lane. One eligible offer. One released lot. Five creators. One ledger. Stop at 50 to 75 delivered orders and judge settled contribution plus operating truth.

    +
    +
    + +
    + + What Noli is, and what it is notThe intended business stays intact. The unresolved issue is the operating lane, not the company name or ambition. + +
    +
    +

    Noli is

    +
      +
    • A neutral master brand with female-leading acquisition and a technical, gender-neutral product and proof layer.
    • +
    • Reta-led at launch only if the exact offer is eligible, underwritten, released, and supported by the chosen lane.
    • +
    • A trust and distribution company with a broader catalog only after the hero proves clean demand and repeat behavior.
    • +
    • A system designed to make the first order feel low-risk and the second order feel obvious.
    • +
    +
    +
    +

    Noli is not

    +
      +
    • OVO, OVO Talent, OVO Academy, or OVO Labs.
    • +
    • A giant catalog launched before quality, payments, service, and lifecycle work.
    • +
    • A disclaimer wrapped around a contradictory consumer funnel.
    • +
    • A bet that a $3 vial, a sales screen, or an asking price equals normalized company profit.
    • +
    +
    +
    +
    + +
    + + Why Noli has an unfair advantageOVO gives Noli warm distribution and an operating bench, but only if the company protects OVO from health-category risk. + +
    +
    +
    Noli owns

    Every compliance, quality, customer, cash, brand, merchant, support, and inventory obligation.

    +
    OVO Talent supports

    Opt-in creator relationships under separate Noli contracts and approved claims. It does not endorse the product or absorb Noli liability.

    +
    OVO Academy supports

    Only after two clean cohorts: supervised, deidentified evidence indexing, CRM QA, support QA, and reporting. It remains an apprenticeship, never a course or public-price offer. No PHI, medical or customer advice, claims approval, payment credentials, lot release, or unpaid production labor.

    +
    OVO Labs supports

    Start with spreadsheets. Build attribution and payout software only after repeated manual pain proves what is needed.

    +
    +
    Measure incremental CM2 per creator, operator hour, and Alex hour against the same capacity used by existing OVO businesses. If Alex is still chief support, processor, fulfillment, and claims operator at 500 monthly orders, Noli has not earned scale.
    +
    +
    +
    + +
    +
    +
    +
    02 / Braden case
    +

    What Braden actually proves.

    +
    +
    +

    Believing Braden and diligencing the business are compatible. Alex has repeatedly watched live screens near $50,000 a day. That is a serious private demand signal. It is not yet a reconciled statement of settled revenue, contribution margin, cash, or enterprise value.

    +
    +
    + +
    +
    +
    Private signal
    + ~$50K/day +

    Repeated live screens make the demand claim worth serious diligence.

    +
    +
    +
    Source quote
    + $3 to $4 +

    Potential Reta vial cost before strength, release, freight, failures, and working capital.

    +
    +
    +
    Margin claim
    + ~80% +

    Plausible product gross margin. Unverified normalized company margin.

    +
    +
    +
    Value story
    + $15M +

    Plausible at the claimed scale. It may be a real private offer; no buyer document was reviewed here.

    +
    +
    + +
    The most important Biologix lesson is that the storefront is not the engine. The public site is basic. The likely engine is accumulated trust, repeat buyers, affiliates, private referrals, direct contact, payment continuity, inventory, and customer recovery.
    + +
    +
    +
    What the site audit supports
    +

    Reta is a strong hero hypothesis.

    +

    Retatrutide ranked first and bacteriostatic water second in the public WooCommerce popularity ordering. That supports demand, not a cleared launch pairing. FDA's March 2026 Pink Pony letter shows that human-outcome copy plus water beside peptides can evidence intended use despite RUO disclaimers.

    +
    +
    +
    What stock cannot prove
    +

    Public inventory is not a revenue ledger.

    +

    Backorders, disabled stock management, bundles, manual edits, and private orders can all break the relationship between displayed stock movement and WooCommerce sales.

    +
    +
    +
    What Noli should copy
    +

    The invisible distribution network.

    +

    Copy the trust, repeat, referral, payment, fulfillment, and remedy system. Do not mistake a simple site for a simple business.

    +
    +
    + +
    + + The first offer: one decision, not a catalogThe hero earns the right to expand. Complexity does not create demand. + +
    +
    +
    One eligible hero

    Retatrutide remains the acquisition hypothesis only if the chosen lane, payment terms, release record, and claims permit the exact offer.

    +
    One visible total price

    No hidden membership, mandatory wallet, or fee maze. The buyer should understand the full commercial commitment before checkout.

    +
    One quantity ladder

    Test single-unit and simple same-SKU quantity economics. Do not use bundles to hide an unproven hero or inflate AOV at the expense of CM2.

    +
    Proof beside purchase

    Put the current lot passport, policy, shipping promise, support path, and remedy on the same decision path as the offer.

    +
    +
    No subscription until a natural reorder interval exists. No adjacent SKU until two clean hero lots and real second-order contribution. No giant catalog at launch.
    +
    +
    + +
    + + How people find an unpublished WhatsApp numberDark social compounds invisibly. No public Google result or mysterious leak is required. + +
    +
    +
    +

    Most plausible paths

    +
      +
    • Forwarded contact cards and customer introductions.
    • +
    • Creators, affiliates, suppliers, processors, service providers, or partners sharing it.
    • +
    • Private WhatsApp, Telegram, Discord, and forum groups.
    • +
    • Old pages, PDFs, invoices, COAs, catalogs, support widgets, cached pages, and business records.
    • +
    • Uploaded address books, contact syncing, WhatsApp Business discovery where supported, and commercial enrichment databases.
    • +
    • Scam-warning or vendor-verification threads reposting the canonical contact.
    • +
    +
    +
    +

    Noli action

    +
      +
    • Ask every inbound one fixed question: "Where did you get this number?"
    • +
    • Use a unique click-to-chat link for each creator, community, and partner.
    • +
    • Preserve first-touch source, consent, order, and repeat attribution.
    • +
    • Publish one canonical verification page for the official domain and contact points.
    • +
    • Never make a private phone number the only proof of seller identity.
    • +
    +
    +
    + +
    +
    + +
    + + The Braden diligence packetDo not ask for another screenshot. Ask for the bridge from order to settled cash to normalized owner earnings. + +
    +
      +
    1. Product and order export by SKU, date, customer, channel, status, discount, refund, and reship.
    2. +
    3. Processor statements showing authorizations, captures, reserves, holds, chargebacks, fees, and settlements.
    4. +
    5. Bank statements matching processor settlement and non-card payment flows.
    6. +
    7. Supplier invoices, strength and quantity details, freight, customs, failures, and payment records.
    8. +
    9. Independent test reports, lot release decisions, retained samples, and failed-lot history.
    10. +
    11. Inventory roll-forward by lot, shrink, write-offs, backorders, and unfulfilled orders.
    12. +
    13. Affiliate payouts, paid media, payroll, support, reships, software, legal, insurance, and tax.
    14. +
    15. Customer concentration, channel concentration, repeat behavior, and shutdown or account-loss history.
    16. +
    17. Any claimed offer or LOI: buyer, legal entity, price, cash versus earnout, working-capital adjustment, escrow, exclusivity, and proof of funds.
    18. +
    +

    Private evidence is strong enough to justify this diligence. It is not yet enough to publish $50,000 a day, 80% normalized margin, or a $15 million buyer offer as verified fact.

    +
    +
    +
    + +
    +
    +
    +
    03 / Operators
    +

    What young peptide companies teach.

    +
    +
    +

    Six current operator files tell the same story: the site is easy, the exact supplier is gated, and the company becomes valuable only when demand, release, payments, fulfillment, support, and repeat work together.

    + +
    +
    + +
    Every scale number below is founder, broker, or commercial-source supplied unless stated otherwise. Use the operating lesson. Do not put the revenue claim into a forecast.
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    OperatorStage or claimed scaleWhat workedWhat broke or stayed hiddenGrade
    20-year-old founderMay 2026 accountBuilt the store, backend, labels, and accounts, then walked away.Used a kill decision before sunk cost became rationalization.Payments, supplier proof, COA trust, demand ownership, and white-label margin.C/D
    Peptide PlugsFounder profileClaims 1,200 customers and 2,700 sales after a January 2026 rebrand.Founder access, bundles, loyalty, screening, and a visible remedy.Two China sources stay unnamed, vial-to-COA mapping is incomplete, founders carry support.C
    Kimera ChemsFounder profileLaunched March 2024; claims 70,000 orders and 35,000 customers.Named labs, visible incident response, pulls, refunds, and supplier removal.Hong Kong synthesis and US fill are claimed, but the legal plants remain gated.C
    Blank PeptidesOwner profileClaims 500 customers on the current brand and more across earlier entities.Caught a reported 65% label-potency fill failure before shipment.China and India API sources are unnamed; US-made language does not name a plant.C
    Crush ResearchOwner profileLaunched October 2025; claims 2,940 customers and 5,604 orders.Tight bulk catalog, China multi-source model, and LA 3PL.Stockouts, reported fill variance, and a contaminated batch discarded before sale.C
    Direct PeptidesInvestor-memo analysisSeller memo claimed about 250 daily orders and $220 AOV. Listing is now marked sold.ERP, lifecycle, customer data, fulfillment, SOPs, inventory, and payment relationships.Buyer and price are unknown. China sources and Missouri fill site stay unnamed. Testing affiliation risk remains.D claims
    +
    + +
    + + Ten forum lessons from founders, sellers, and customersForty-two current artifacts were graded. The failure pattern is stronger than any revenue claim. + +
    +
    +
      +
    1. Inventory before distribution kills. Multiple founders built and stocked before payments or demand worked.
    2. +
    3. Local trust beats a polished empty store. Personal networks and referrals produced the first credible demand in several accounts.
    4. +
    5. Testing turns markup into normal math. One operator cited about $500 per peptide and batch before failure write-offs.
    6. +
    7. Banking is separate from processing. A checkout can work while deposits or bank funds are restricted.
    8. +
    9. Creator offers are abundant. Public commissions cluster around 20% to 30%; payout and contribution are rarely proven.
    10. +
    +
      +
    1. Lot identity is a data join. Cap color, vial look, and a supplier PDF do not connect a customer vial to a released lot.
    2. +
    3. Purity can pass while endotoxin fails. The release panel needs separate quality dimensions.
    4. +
    5. Recovery is the product. Specific updates, replacement, refund, and one verified contact preserve trust during failure.
    6. +
    7. Exit listings conflict with themselves. Reconcile affiliates, processors, inventory, margin, and cash to source records.
    8. +
    9. Private contact compounds. WhatsApp and Telegram referrals create demand and impersonation risk outside public attribution.
    10. +
    +
    + +
    +
    + +
    + + New July 27 sweep: identity continuity is the system28 findings and 43 evidence rows, deduplicated against 2,202 existing source URLs. + +
    +
    The new operating chain: ad → store identity → checkout → statement descriptor → confirmation → allocated inventory → vial → lot record → support → refund or replacement. Every broken join creates conversion loss, chargebacks, support cost, or distrust.
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    BreakpointFresh public evidenceWhat Noli builds
    Startup processingJuly 15 founder thread and a July 26 startup thread report a low-volume underwriting dead zone. Anonymous claims, not term sheets.Written approval for the exact catalog, claims, buyer controls, fulfillment, and URLs before inventory or traffic.
    Descriptor and refundsA July 21 LabTrust review alleges a different statement LLC and refund proof without a transaction number.Show legal entity and statement descriptor before payment. Refund proof includes amount, order, processor reference, destination, and settlement window.
    Post-payment stateR-Phase company replies admit volume, fulfillment, support, and email-deliverability failures, then route buyers to Discord.Bookmarkable mobile order timeline. Email and community chat are notifications, never the order database.
    Allocation and packoutNextGen reviews and replies describe paid stockouts, delayed labels, and disputed lot matching. Aura reviews allege loose, broken, or mislabeled vials.Allocate at authorization. Scan SKU, strength, lot, quantity, seal, and order at receiving and packout. Never ship an unlabeled unit.
    Evidence UXPeptide Plugs founder Tony Wyss says a customer question caused the company to create a standalone COA page.One-tap lot proof on product card, PDP, cart, order timeline, and vial QR. No PDF hunt on mobile.
    Recovery economicsMyPurePeptide says repeat reships plus overnight delivery cost more than the original order. Nexus shows fast recovery can reverse distrust.Track recovery cost by failure reason. Give identity incidents immediate refund or replacement, then remove the root cause.
    AffiliatesFresh public offers cluster at 20% to 25%, usually with buyer discounts or free product.Commission is commodity. The moat is compliant creative, clean attribution, settled-order statements, predictable payout, and reorder.
    Channel sprawlSix-month-old Ethos already links TikTok, backup TikTok, WhatsApp, Discord, Clapper, newsletter, and store.One owned hub, one primary acquisition channel, email as source of truth. Add a channel only with an owner and output standard.
    Whole-funnel intentEthos pairs an RUO disclaimer with protocol-sharing community copy. Evolve reviews and replies pair reported human use with repeated RUO language.Store, creators, reviews, email, support, community, and search snippets are one evidence system. A footer cannot contradict the experience.
    Source identityCurrent supplier-map methodology warns that listed addresses may be offices. This sweep found no new verified retail-vial-to-exact-synthesis-plant bridge.Manufacturer, US based, GMP, and FDA registered remain separate claims. Supplier identity stays unknown until exact-site and lot linkage closes it.
    +
    +
    Retention rule: prove natural same-SKU reorder before adding subscriptions. Reminders and tight bundles come before recurring-order complexity.
    +
    +
    + +
    + + The grown-up systems worth stealingThe best Noli analog is a combination, not one competitor. + +
    +
    +
    Eucalyptus

    One sharp wedge on top of one shared operating platform.

    +
    Happy V

    Female-first founder story multiplied through disciplined creative testing.

    +
    Evvy

    Turn technical evidence into an interface a customer can understand.

    +
    Hims & Hers

    Own more control, but keep supplier, facility, lot, and claim proof separate.

    +
    AIOS

    Use a shared creative-learning system with mandatory human claim review.

    +
    Yazen

    Treat the 90-day customer lifecycle as part of the product.

    +
    +
    Noli's best transfer is Eucalyptus's wedge, Happy V's distribution, Evvy's proof interface, and Hims's control map. The storefront model alone is the weakest analog.
    + +
    +
    +
    + +
    +
    +
    +
    04 / Customer
    +

    Female-first. Measured, not assumed.

    +
    +
    +

    The strongest launch hypothesis is women roughly 38 to 58 who already understand the category, have plateaued or lapsed, and care about body composition, strength, hair, skin, energy, shape, privacy, and identity. The direct Reta buyer sex split is unknown.

    + +
    +
    + +
    The evidence is directional, not unanimous. A 2025 national survey found women 30 to 49 more than twice as likely as male peers to report GLP-1 use, and women 50 to 64 had the highest reported use at 20%. A May 2026 PwC and Numerator view says adoption is now nearly equal by sex. That makes female-first a differentiated brand thesis to test, not a market fact to assume.
    + +
    +
    +
    Acquisition front
    +

    Female-leading story and creators.

    +

    Homepage, editorial, creator selection, and customer stories should speak to the primary cohort's identity and frustration without making claims the operating lane cannot support.

    +
    +
    +
    Commerce core
    +

    Technical, inspectable proof.

    +

    The product, lot, evidence, shipping, and policy experience stays precise and gender-neutral so high-intent male and technical buyers are not pushed away.

    +
    +
    +
    Architecture
    +

    Neutral Noli master brand.

    +

    Do not create a male sibling at launch. After 300 to 500 customers, use cohort economics to deepen the female front or justify a separate male expression.

    +
    +
    + +
    + + The customer is buying lower uncertaintyAcross 44 coded customer and community sources, service and proof outrank glossy branding. + +
    +
    +
    23/44

    Support and communication

    +
    20/44

    Testing and lot proof

    +
    20/44

    Refund, reship, or remedy

    +
    18/44

    Community recommendation

    +
    14/44

    Shipping visibility

    +
    14/44

    Price and value

    +
    13/44

    Consistency

    +
    13/44

    Identity and scam defense

    +
    +

    The five-promise product

    +
      +
    1. A real seller with one canonical identity.
    2. +
    3. Proof tied to the exact released lot.
    4. +
    5. Real carrier movement, not just a label.
    6. +
    7. A competent human who answers quickly.
    8. +
    9. A predictable remedy when something goes wrong.
    10. +
    +
    + SearchReferralPrivate checkOfficial domainSmall orderLot + deliveryRemedyRepeat +
    +

    The first order is a risk test. "Label created" is not shipped. A good recovery can become the retention event.

    +
    +
    + +
    + + How to prove the female-first thesisDo not settle a positioning debate with taste. Settle it with matched cohort economics. + +
    +

    After the five-creator truth cohort passes, run a matched 25-creator test: female-leading narrative versus technical and general narrative. Hold the offer, price, creator quality, attribution window, landing friction, and release timing as constant as possible.

    +
    +
    +

    Judge demand

    +
      +
    • Landing conversion
    • +
    • New-customer AOV
    • +
    • Settled CM2
    • +
    • Creator activation and content yield
    • +
    • Customer referral rate
    • +
    +
    +
    +

    Judge quality

    +
      +
    • 30, 60, and 90-day repeat
    • +
    • Support contacts per order
    • +
    • Refund and reship behavior
    • +
    • Claim violations
    • +
    • Contribution after reversals and payouts
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    05 / Growth
    +

    The fastest safe scale order.

    +
    +
    +

    OVO Talent is the unfair distribution advantage. Use it as a controlled release system, not a blast list. Warm creator demand comes first, lifecycle starts on day one, and high-intent search begins only after clean delivery and settled economics.

    +
    +
    + +
    +
    1. ClearApprove the lane, one eligible hero offer, underwriting, insurance, claims, fulfillment, and lot release. Retatrutide is a monitored future option, not the present launch SKU.
    +
    2. ProveFive opt-in creators, 50 to 75 delivered orders, one claims library, one landing path, and one canonical ledger.
    +
    3. RepeatRun a second cohort and prove settled CM2, reorder, lifecycle, service, and creator payouts without Alex as the daily operating system.
    +
    4. Add one leverMore creators OR high-intent search OR one adjacent SKU. Never all three.
    +
    + +
    + + What the full growth audit actually provesThere is demand and repeat behavior. There is no trustworthy public peptide CAC, cohort LTV, repeat-rate, or CM2 benchmark. + +
    +
    +
    Warm creators are Noli's edge

    Current founders publicly struggle to recruit affiliates through cold outreach. OVO already has trusted relationships.

    +
    Provider access is rented

    One operator moved from TikTok removals to Klaviyo disablement and lost signups before recruiting affiliates at 30%.

    +
    Attribution overlaps

    Google, a creator, and email can all claim the same order. Dashboard totals cannot be added.

    +
    Public ROAS is not a benchmark

    Selected agency claims range from 2.2x to 8.5x without settled cash, refunds, reserves, or CM2.

    +
    +
    Until Noli produces its own settled cohort data, planning ROAS is zero and projected LTV gets zero credit.
    + +
    +
    + +
    + + The creator machineTrack creator to cash to repeat. Pay for settled, compliant performance. + +
    +
    + CreatorContentClickOrderSettlementDeliverySupportRepeat + payout +
    +
    +
    +

    Pilot structure

    +
      +
    • Five creators who explicitly opt in to the exact lane and content rules.
    • +
    • One memorable code plus link, 30 to 90-day attribution, and monthly payout after reversals.
    • +
    • Honest seeding with no posting obligation. Deepen relationships only where authentic pull appears.
    • +
    • Assign each creator one job: awareness, trust, conversion, or community research.
    • +
    • Pay against settled contribution and compliant content, not gross baskets.
    • +
    +
    +
    +

    Rollout capacity gates

    +
      +
    • 5: manual truth cohort.
    • +
    • 25: matched positioning test after the first cohort passes.
    • +
    • 50: only when support, payouts, inventory, and processing work without Alex.
    • +
    • 250: available network, not launch volume. Release only after the company can absorb success.
    • +
    +
    +
    +
    Never stack a large buyer discount, large creator commission, and paid acquisition on one order. Transcend is the cautionary pattern: creator demand can outrun staffing, support, partner capacity, and inventory.
    +
    + + + + + + + +
    Public benchmarkCreator economicsBuyer economicsNoli lesson
    Offline Peptides20% first order, 10% later orders, 30-day initial cookieCurrent site also uses referral and first-order incentivesClear and simple, but lifetime payouts still need cohort margin controls.
    APEX Peptides10% sale, 15% subscription referral10% referral discount and 10% subscribe-and-save can stackGood plumbing. Dangerous leakage if every incentive lands on one order.
    Noli testFor a cleared nonclinical offer, test 15% to 20% only after counsel and unit-economics reviewKeep any buyer incentive small and explicitPay after settlement and reversals. Do not compensate clinical prescriptions, labs, or referrals without specialist clearance.
    +
    + +
    +
    + +
    + + What the current agency cases can and cannot teachUseful mechanics exist, but every public result is selected and attribution-heavy. + +
    +
    + + + + + + + + +
    SourceClaimed resultWhat to useWhat is missing
    Budai$426K attributed revenue on $194K Google spend, plus email attribution; later podcast says roughly $600K monthly.High-intent search, small budget steps, lifecycle, and operations before volume.Anonymous client, overlapping attribution, settled cash, refunds, reserves, and CM2.
    Spring Media$2.6M store month and email attribution rising from $1.2M to $2.3M.Lifecycle deserves early attention.No holdout, no March store total, no attribution window, no contribution.
    AdPistols8.5x reported ROAS.Evidence that agencies can display extreme platform results.Bank settlement, new-customer isolation, return cost, policy durability, and CM2.
    Orange Trail$1.57M on $350K ad spend.Failure evidence only.The case promotes disguise patterns that official policy prohibits. Do not copy.
    +
    +

    Transferable: high-intent search after proof, clean product feeds, small budget steps, one variable at a time, and five to seven portable lifecycle flows.

    +

    Decision rule: judge one canonical order ledger. Never add Google, creator, and email-attributed revenue together.

    + +
    +
    +
    + +
    +
    +
    +
    06 / Money
    +

    High gross. Real cash constraints.

    +
    +
    +

    A $3 to $4 vial can create spectacular product markup. The business is valued on normalized owner earnings and durability after discounts, creators, tests, failures, fulfillment, processing, reserves, refunds, support, inventory, payroll, and legal cost.

    +
    +
    + +
    Planning shell only, not a forecast. Replace every input with signed quotes and actual cohort data before investing. Continue only when two cohorts clear 30% settled CM2, the 35% target remains credible after incremental fixed cost, and Noli beats the best alternative use of the same OVO creator and operator capacity after an explicit health-category risk premium.
    + +
    + + + + + + + + + + + + + + +
    Order waterfallBase assumptionWhat it includes
    Net AOV$150.00After customer discounts
    Product, packaging, release-$30.0020% modeled COGS including allocated testing
    Fulfillment-$12.00Pick, pack, materials, and shipping allowance
    Processing-$9.756.5% modeled until written terms exist
    Refund and recovery provision-$6.004% for refunds, reships, and disputes
    Creator or acquisition-$33.0022% blended demand cost
    Support and technology-$4.00Variable operating allowance
    CM2$55.2536.8% before fixed overhead and tax
    +
    + +
    + + + + + + + + + +
    CaseNet AOVCM2/orderCM2 marginMeaning
    Bear$110-$1.10-1.0%Discount, demand cost, processing, and recovery erase the vial markup.
    Base$150$55.2536.8%Attractive if service, quality, and repeat behavior remain clean.
    Bull$200$125.5062.8%Possible with high AOV, low demand cost, and strong operational control.
    +
    + +
    + + + + + + + + + +
    Monthly ordersBase CM2Modeled cash bufferPrimary constraint
    50$2,763$50,550Truth, payment acceptance, first-lot quality, and support
    500$27,625$205,500Inventory, reserves, support coverage, and repeat
    5,000$276,250$1,355,000Working capital, redundancy, governance, and concentration
    +
    + +
    + + The $15 million mathA large value is plausible at the claimed scale. The reviewed public evidence still does not prove a completed peptide-company transaction. + +
    +
    +
    $18.25M

    $50,000 a day annualized

    +
    0.82x

    $15 million as a multiple of that revenue

    +
    $3.76M

    Owner earnings needed at a 3.99x multiple

    +
    $4.57M

    Owner earnings needed at a 3.28x multiple

    +
    +

    That is roughly 20.6% to 25.1% normalized owner earnings on $18.25 million revenue. If owner earnings were truly 30%, a $15 million value would be about 2.74x earnings. The math can work. The documents still matter.

    +
      +
    • The exact 2019 BlackHatWorld post found does not show BlackHatWorld offering $15 million for a peptide company. It discusses unrelated hard-money deal flow while separately mentioning peptide processing. That does not disprove a private offer Braden says he received.
    • +
    • WebsiteClosers marked the Direct Peptides listing sold, but the buyer, closing date, consideration, and whether the $14.5 million ask was paid remain undisclosed.
    • +
    • A live July 2026 Flippa listing asks $100 million, excluding $5 million inventory, for a one-year-old four-brand RUO portfolio. It claims $21.3 million trailing revenue, 78% profit margin, 41% repeat, and $1.376 million monthly profit. The title says "$44M/yr," which does not equal its stated trailing revenue. It is a high-signal listing, not transaction proof.
    • +
    + +
    +
    + +
    + + What the best current operator memo says about real marginThe $3 to $4 vial can be true while 80% company profit is false. + +
    +
    + + + + + + + + + +
    Direct Peptides memo claimReproducible arithmeticDecision
    $3.6M projected earnings on more than $12M revenueAt most about 30% projected earnings marginThe earnings definition is unknown. This is not 80% company profit.
    250 orders a day at about $220 AOV$55K a day and $20.1M annualizedDoes not reconcile to $12M unless one figure is a peak, partial period, or stale.
    $30K to $40K of API purchased weekly$1.56M to $2.08M annualizedAlready 13% to 17% of $12M before fill, tests, freight, packaging, waste, and support.
    Two months of raw API stockRoughly $260K to $347K at the claimed purchase run rateOnly the raw-API working-capital proxy, not all inventory cash.
    More than $1,500 LTV at about $220 AOVMore than 6.8 AOV equivalentsFar deeper than current founder-profile ratios of about 1.9 to 2.25 orders per stated customer. Demand the cohort file.
    +
    +
    The operator was selling an ERP, customer file, lifecycle system, fulfillment, payment relationships, inventory process, ad infrastructure, and SOP library. That is the valuable company. The vial is one input.
    + +
    +
    + +
    + + Testing and reserve mathTesting amortizes beautifully. Reserves trap cash even when the P&L looks strong. + +
    +
    +

    Current testing reference

    +
      +
    • Purity and identity: $200
    • +
    • Net peptide content: $25
    • +
    • Endotoxin: $175
    • +
    • PCR sterility screen: $150
    • +
    • Total: $550 per molecule and lot, before freight, retest, failed lots, and extra samples
    • +
    • $5.50 per vial at 100 units, $0.55 at 1,000 units
    • +
    + Freedom Diagnostics May 2026 price sheet +
    +
    +

    Cash planning

    +
      +
    • Model 4.5% bull, 6.5% base, and 10% bear processing until a real term sheet replaces the model.
    • +
    • Plan for 5% to 15% rolling reserve held 90 to 180 days.
    • +
    • A 10% reserve on a $170 settled order traps $17 even if the order is profitable.
    • +
    • Reserve is not automatically an expense. It is unavailable cash and can become loss if disputes or termination consume it.
    • +
    • Current anonymous operators report a $10,000 reserve at no more than $10,000 monthly volume, 9% or higher fees around $70,000 monthly, and a 30% hold. These are stress signals, not quotes.
    • +
    + +
    +
    +
    +
    + +
    +
    +
    +
    07 / Operations
    +

    One released lot. One clean path to cash.

    +
    +
    +

    The fastest growth plan is operational: written payment acceptance, real chain of custody, a 3PL that can block unreleased inventory, one accountable support queue, and owned customer data.

    +
    +
    + +
    The operating stack is four linked systems: supply, quality, payment, and service. Any one of them can turn strong demand into refunds, reserves, chargebacks, and lost trust.
    + +
    + + Sourcing: only after the exact SKU clearsNo sellable inventory or customer preorders before every gate passes. + +
    +
    +
    1 / Domestic stock

    Best pilot speed.

    Higher unit cost, easier sampling and inspection. Use one small lot for the truth cohort.

    +
    2 / Turnkey white label

    Fast storefront, weak moat.

    Easy entry, but margin and source identity can disappear after discounts, creator payouts, and service.

    +
    3 / Direct overseas

    Lowest quote, highest uncertainty.

    Requires source qualification, chain of custody, import review, testing, fill, packaging, and working capital.

    +
    4 / Qualified manufacture

    Best long-term control.

    Slower and more capital intensive, but strongest path to documented quality and true redundancy.

    +
    +
      +
    1. For the legally cleared SKU only, buy one small domestic lot that Noli can independently sample.
    2. +
    3. Map manufacturer, broker, filler, labeler, shipper, and warehouse. Two brokers using the same upstream stock are not redundancy.
    4. +
    5. Qualify two upstream sources in parallel.
    6. +
    7. Move volume only after two clean lots, repeat demand, and reconciled settlement.
    8. +
    9. Never claim domestic manufacture merely because inventory ships from a US warehouse.
    10. +
    +
    No sellable inventory or customer preorders before written processor acceptance, insurance, release-panel approval, 3PL quarantine lock, and recall rights.
    + +
    +
    + +
    + + Quality: the lot passport is the productA supplier COA or generic "99% pure" badge is not chain of custody. + +
    +
    +
    +

    Required lot chain

    +
      +
    1. Receive and quarantine inventory by lot.
    2. +
    3. Record upstream source and custody transfer.
    4. +
    5. Pull and retain a representative sample.
    6. +
    7. Send the sample to an independent lab.
    8. +
    9. Check identity, net content, purity, and the applicable safety panel.
    10. +
    11. Document release, rejection, retest, and failed-lot disposition.
    12. +
    13. Trace every shipment to the released lot.
    14. +
    +
    +
    +

    Public lot passport

    +
      +
    • Product and exact lot
    • +
    • Date sampled, sent, and tested
    • +
    • Sample owner and acquisition method
    • +
    • Lab name and original verification link
    • +
    • Identity, content, purity, and applicable safety results
    • +
    • Current, retired, failed, or recalled status
    • +
    • Release owner and retest policy
    • +
    +
    +
    +

    A COA describes one submitted sample. It does not by itself prove legality, sterility, clinical safety, every vial, or the rest of the inventory.

    +
    +
    + +
    + + Payments: approval means the acquiring bank approved the exact businessCheckout, gateway, merchant account, and settlement bank are different layers. + +
    +
    There is no best peptide processor. The decision object is the acquiring-bank approval and contract, not the ISO, gateway, or account login. No signed approval means no checkout; no independently underwritten backup means no scale.
    +
    + CheckoutGatewayAuthorizationCaptureAcquirerReserveSettlementBank cash +
    +
      +
    • Authorize.net, NMI, Stripe, an ISO, or an MCC is not the same as written acquiring-bank underwriting.
    • +
    • Require approval for the exact entity, SKU list, audience, claims, descriptor, recurring model, geography, volume cap, and maximum ticket.
    • +
    • Model 4.5% to 10% processing and a 5% to 15% reserve held 90 to 180 days until the term sheet proves better.
    • +
    • Track authorization, capture, processor balance, reserve, settlement, and bank cash separately.
    • +
    • Notify the processor before creator-driven volume spikes.
    • +
    • Maintain one fully approved primary and one fully approved backup. An unreviewed account is not a backup.
    • +
    +
    + + + + + + + + + +
    CandidateCurrent evidenceNoli posture
    StripeA policyIts current FAQ describes a narrow possible path for genuine research buyers protected by preventive access controls. It does not approve Noli.Consider only after the model is redesigned and the exact business receives written review.
    AkordC claimMarkets a domestic dedicated MID for research peptides. Sponsor bank, acquirer, price, reserve, and durable references are not public.RFP candidate only. Demand the complete regulated chain and term sheet.
    UnisonC claimMarkets peptide placement and integrations. Sponsor, reserve, exact product criteria, and contract terms remain unknown.RFP candidate only after the lane clears.
    SeamlessChexC/D claimPublishes 2.95% to 5.5% card pricing and a typical 10% reserve, but does not publicly establish Noli's sponsor bank or approval.Market reference, never a modeled quote.
    PayPal, Square, Shopify ShopReject nowPublished policies, preapproval requirements, and hold powers make the present consumer concept an unacceptable continuity bet.Do not use ability to create an account as underwriting evidence.
    +
    + +
    +
    + +
    + + Fulfillment and service: recovery is retentionStop founder packing after the truth cohort. + +
    +
    +

    3PL requirements

    +
      +
    • Scan lot on receipt and shipment.
    • +
    • Block unreleased and quarantined inventory.
    • +
    • Reconcile units by lot and status.
    • +
    • Produce a recall report by lot and customer.
    • +
    • Separate order-to-carrier acceptance from carrier-to-delivery.
    • +
    • Plan $9 to $16 per order until actual quotes replace the model.
    • +
    +
    +
    +

    Support SLA

    +
      +
    • First human response within one business day.
    • +
    • Shipping issue triage within one business day.
    • +
    • Reship or refund decision within two business days.
    • +
    • Immediate escalation for a lot or quality complaint.
    • +
    • Support never improvises medical, dosing, or product-use guidance.
    • +
    +
    +
    +
    +
    + +
    +
    +
    +
    08 / Supply truth
    +

    Who actually makes it?

    +
    +
    +

    The honest answer is that young retail founders gatekeep the plant. The strongest partial link is AminoForge to Aspire Labs: three 2026 Horizon retatrutide records at 10 mg, 15 mg, and 30 mg name Aspire Labs LLC as the US compounder. This is repeated entity-level labeling, not proof of the physical facility, executed batch work, API plant, or custody to sold inventory.

    + +
    +
    + +
    We found names, not a verified chain. An FDA DMF, a COA manufacturer field, a US return address, or a founder saying "our factory" does not prove who synthesized the API or filled the vial.
    + +
    + Retail brandWhite labelBroker or exporterAPI plantFill and lyoIndependent lab3PLCustomer order +
    + +
    + + What named founders actually discloseEvery public chain stops before the exact synthesis plant. + +
    +
    + + + + + + + + + +
    Retail operatorPublicly disclosed chainStill gatekeptConclusion
    Peptide PlugsTwo unnamed China sources; Freedom Diagnostics testing.Legal suppliers, synthesis site, fill site, exact lot genealogy.Testing layer visible. Factory unknown.
    Kimera ChemsHong Kong synthesis claimed; domestic US fill-finish claimed; named testing labs.Legal Hong Kong and US facilities and lot path.Role map claimed. Plants unknown.
    Blank PeptidesOne China and one India API source claimed; equity in a domestic lab.Source names, facility scope, vial-to-COA path."US-made" cannot be verified from the public record.
    Crush ResearchChina multi-source reseller; Los Angeles 3PL.Actual plants, common-source overlap, fill site.Openly a reseller, not a disclosed manufacturer.
    Direct PeptidesMultiple China API sources, Missouri lyophilization and fill, Horizon testing claimed.Every exact facility and whether testing was arm's length.The backend is visible. The sensitive counterparties are not.
    +
    +
    +
    + +
    + + The eleven official Reta DMF holdersA formal candidate population, not an approval list, retail-brand map, or purchase recommendation. + +
    +
    Document leads, not suppliers: Hybio, Sinopep-Allsino, Chengdu Shengnuo, and Fujian Genohope. None is qualified. No reviewed evidence ties any named retailer or current retail lot to one of these 11 holders. Noli qualifies only an exact legal entity and physical site with current inspection evidence, audit rights, a quality agreement, live batch records, a disclosed fill and lyophilization chain, quantity reconciliation, and blind finished-unit release.
    +
    + + + + + + + + + + + + + + + +
    DMFHolderReceivedPublic screenCurrent posture
    41577Sichuan JishengMar 19, 2025Formal API filing and technical work. Site and current import posture need resolution.Stop pending proof
    42392Fujian GenohopeAug 28, 2025API plus claimed injectable footprint. Inspection and exact line evidence need verification.Diligence lead
    42856Nanjing CellnuoOct 24, 2025Catalog and peptide capability claims. Thin independent site evidence.More proof
    42912Hangzhou ThinhealDec 30, 2025API and CDMO claims. Marketing calls a DMF an approval, which FDA says it is not.Caution
    43298Zhejiang PeptitesJan 29, 2026Identifiable plant and capacity claims. Current line and inspection evidence required.Caution
    43330Guizhou UtideDec 24, 2025API plant claims plus a separate Hong Kong commercial arm.Map roles
    43427EL-Peptido ShanghaiDec 29, 2025DMF and two-site claims. Exact production and fill sites remain unclear.More proof
    43577HybioFeb 10, 2026DMF expressly says non-sterile drug substance. Public API and finished-dose facility footprint is the strongest visible integration signal.First diligence
    43845Chengdu ShengnuoMar 30, 2026Established API company and Reta catalog. Sterile fill and exact current site status remain separate.Diligence lead
    43846Harbin JixianglongMar 14, 2026FDA found outside GLP-1 purchasing, relabeling, new batch numbers, changed dates, and a false manufacturer identity.Reject
    43859Sinopep-AllsinoMar 19, 2026Established public peptide CDMO identity. Exact Reta building, inspection status, and fill path still require proof.Diligence lead
    +
    +

    FDA says a DMF is voluntary and neither approved nor disapproved. A holder may not be the physical synthesis site, and a non-sterile API filing says nothing by itself about aseptic finished-vial capability.

    + +
    +
    + +
    + + The strongest public brand-to-upstream linksThese reveal a commercial or certificate relationship. Most still do not reveal physical synthesis. + +
    +
    + + + + + + + + + + + + + + + +
    Retail or downstream brandNamed upstream entityWhat is actually establishedWhat remains unknown
    AminoForgeAspire Labs LLCThree 2026 Horizon Reta records at 10 mg, 15 mg, and 30 mg repeatedly name Aspire as the US compounder. This is the strongest entity-level partial link found.Exact Aspire batch facility, executed fill records, raw API supplier and plant, and full custody to sold inventory.
    Hero XCocer Peptides / Chongqing Rinu TradingHero X displays a Cocer lab report and calls Cocer its manufacturing partner.The trace resolves to a trading company profile, not a verified synthesis or fill plant.
    DropShip PeptideQingdao Sigma ChemicalThe turnkey offer publicly ties itself to QSC.QSC also discloses partner production. The physical peptide plant is not proven.
    WUMOSuzhou Xilin TechnologyA hosted Reta report names Xilin as manufacturer.Legal pharma site, synthesis role, independent assay, and sterile fill remain unverified.
    Kerui-labeled stockKerui Peptide HongKongPublic records repeatedly use Kerui as a source or manufacturer label. TitrateLab's aggregate includes underfill and a zero-content submission.Neither the label nor the corpus identifies the physical plant.
    Retatrutide UKBody PharmA verified lab task and seller pages support a reseller or stock relationship.Whether Body Pharm synthesized, filled, or only supplied the tested presentation.
    Astralabs, Omni, RaccoonUther PeptideThe sellers display certificate records issued to Uther.Whether current shipped units came from the exact tested stock.
    PeptidexofficialInnoPeptideA public certificate names InnoPeptide as the client.Whether it is the plant, broker, filler, or sample submitter.
    RETA UKEGBCertificate and batch-prefix evidence supports a stock relationship.EGB legal entity, plant, and custody chain.
    WG PeptidesHXTNTThe certificate client field names HXTNT.Legal identity, physical role, and current lot path.
    Gray-market direct buyersShanghai Sigma Audley; Bigreat / Zhengzhou DEPUChainalysis links contacts and crypto flows to direct peptide selling.Public method is not fully reproducible. The alleged precursor-market links make these warnings, not leads.
    +
    + +
    +
    + +
    + + Why the word manufacturer cannot be trusted aloneThe Harbin record is the clearest current proof. + +
    +
    +
    +

    What FDA found

    +
      +
    • Harbin bought semaglutide API from outside suppliers not on its approved list.
    • +
    • It repacked and relabeled the material and created fresh batch numbers.
    • +
    • It changed manufacturing and retest dates without adequate support.
    • +
    • It named itself as manufacturer rather than the firms that made the API.
    • +
    • FDA also cited process, cleaning, analytical, traceability, and water-control failures.
    • +
    • A separate GenoGenix inspection record describes received and relabeled finished peptides whose COAs and receiving records did not identify the upstream manufacturer cleanly.
    • +
    +
    +
    +

    The Noli rule

    +
      +
    • Never use a label, invoice, DMF, NDC, COA field, or US warehouse as plant proof.
    • +
    • Name every legal entity and physical site for API, fill, lyo, label, testing, storage, and shipping.
    • +
    • Require the direct contract, audit, batch record, shipping chain, and quantity reconciliation.
    • +
    • Map API lot to fill lot to released finished lot to every customer order.
    • +
    • Treat any unexplained new identifier or changed date as a lot and supplier stop.
    • +
    +
    +
    + +
    +
    + +
    + + The proof ladder and supplier questionsIf a vendor will not answer under NDA, it is not a qualified source. + +
    +
    + + + + + + + + + +
    LevelEvidenceWhat it is worth
    1"Our factory," "US made," return address, generic GMP badgeMarketing only
    2Supplier COA or test artifact naming a manufacturer or clientOne submitted sample
    3DMF, registration, patent, catalog, or facility claimCandidate identity
    4Direct contract, site identity, audit, inspection record, quality agreement, change controlQualified relationship
    5Exact API and fill records, blind retained-sample testing, release decision, customer-order genealogyLot-level proof
    +
    +
      +
    1. What are the exact legal entities and physical sites for seller, exporter, API plant, fill site, lab, labeler, importer, and warehouse?
    2. +
    3. Which step happens in each building, and which steps are subcontracted?
    4. +
    5. Can one live order be reconciled through invoice, shipment, API batch, fill batch, label count, and finished units?
    6. +
    7. What regulator, DMF, FEI, inspection, import-alert, and accreditation records apply to the exact site and role?
    8. +
    9. Will the facility provide raw analytical data, deviations, failures, change history, and release records for the exact lot?
    10. +
    11. Who owns aseptic process, lyophilization, water, endotoxin, sterility, environmental monitoring, and container closure?
    12. +
    13. Who selected the tested sample, and will Noli select blind unopened finished units from the received lot?
    14. +
    15. Are every broker, alternate source, mixed lot, substitution, and shared upstream dependency disclosed in writing?
    16. +
    17. What are the recall, complaint, insurance, indemnity, audit, retained-sample, and termination-data rights?
    18. +
    19. Will Noli or its qualified auditor inspect the real sites and trace a lot under NDA? If not, stop.
    20. +
    +
    White label can test demand. It cannot create plant truth, source redundancy, or durable margin. The supplier never chooses the only vial that releases a lot.
    +
    +
    + +
    + + Independent release and fulfillment shortlistRFP candidates only after the legal lane clears. + +
    +
    + + + + + + + + + +
    RoleCandidatePublic anchorLimit
    Peptide chemistryFreedom Diagnostics$200 identity and purity; $25 net content add-on; $175 endotoxin on the March 2026 form.Confirm method and accreditation scope. Public form does not establish a complete release panel.
    Expanded panelChromateLists Reta assay, sterility, endotoxin, and additional-vial variance services.Confirm exact identity method, raw data, scope, and current quote.
    Blind confirmationJanoshikPublic blind GLP-1 analysis and direct report verification.Confirm logistics, method scope, custody, and the full safety panel.
    Peptide-specific 3PL RFPRapid FulfillmentClaims lot handling, temperature-aware work, integrations, and a Pacoima site.Audit QA lock, maps, calibration, recall, insurance, subcontractors, and references.
    Low-volume portable stackQualified self-fulfillment plus ShipStationLowest dependency for a small truth cohort.Still requires a qualified facility, status locks, training, security, storage, recall, and no returned-stock resale.
    +
    + +
    +
    +
    + +
    +
    +
    +
    09 / Gray market
    +

    The loopholes reveal the constraints.

    +
    +
    +

    This is a descriptive field map, not an evasion manual. Operators repeatedly trade durability for a short revenue window. Noli should learn what pressure each tactic reveals, then build the compliant asset that survives.

    + +
    +
    + +
    Private distribution works. Manufactured trust can create demand. Loopholes rent time. The assets that survive are canonical identity, exact-lot proof, owned consent and data, real creator relationships, dependable remedy, repeat purchase, and written counterparty acceptance.
    + +
    +
    $100M+

    2026 gray-market on-chain annual run rate estimated by Chainalysis

    +
    6 quarters

    Consecutive on-chain growth in the Chainalysis model

    +
    85

    Current founder, seller, customer, and forum evidence rows graded across two sweeps

    +
    30 / 326

    UK sellers passing one narrow own-name certificate check

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + +
    PressureObserved gray behaviorWhy it seems to workDurable Noli lesson
    1. PaymentsMerchant masking, account rotation, intermediaries, alternate entities, and miscoding.Cards convert better and scrutiny may arrive after volume.Underwrite the exact business in writing. Track settled bank cash and keep an approved backup.
    2. AdsReview pages, bridges, coded names, rented accounts, and account rotation.Can create a short acquisition window.Own creators, email, brand search, and high-intent demand. Rented access is not an asset.
    3. CommunityAged accounts, planted consensus, rankings, fake peer reviews, and answer-engine seeding.Buyers trust peers and AI systems ingest forum language.Use disclosed sponsorship, real participation, verifiable proof, and earned references.
    4. RUO framingDisclaimers, age gates, questionnaires, account walls, and research-subject language.Creates a record of stated research purpose.A real gate verifies and rejects. It cannot outweigh the rest of a contradictory funnel.
    5. Product codesAbbreviations, receptor codes, house names, and hidden catalogs.Reduces public visibility while informed buyers decode it.Codes harm clarity, analytics, test matching, and support. They do not create a safe harbor.
    6. Creator separationSterile store copy paired with outcome-led creators, consultations, or affiliate pages.Trusted people explain what the merchant does not.Treat store, creator, email, support, and consultation as one evidence system.
    7. SourcingPrivate brokers, white label, dropshipping, and undisclosed upstream overlap.Low quotes and fast storefront launch.Map the full chain. Two resellers of the same inventory are not redundancy.
    8. COAsSupplier reports, selective testing, hot samples, generic badges, and reused reports.A professional PDF reduces buyer anxiety.Build lot custody, independent sampling, original lab verification, and release records.
    9. Imports and 3PLDomestic relabeling, split shipments, informal warehouses, and reship guarantees.US shipping feels safer and faster.Domestic warehouse is not domestic manufacture or lawful entry. Plan refund and cash exposure.
    10. PortabilityAlternate email, hosting, domains, and exported lists.Providers can terminate abruptly.Own DNS, consent, order history, suppression data, backups, and lifecycle logic.
    11. Dark socialWhatsApp, Telegram, Discord, DMs, and private vendor lists.Private referrals compound outside public search.Treat it as a channel and an impersonation risk. Attribute it and preserve one canonical identity.
    12. RebrandsSuccessor domains, mirrors, new entities, and copied storefronts.Demand and operations can survive a domain loss.Portable brand relationships matter. Concealed continuity erases recourse and trust.
    13. Telehealth layersMarketing, clinic, provider, pharmacy, and referral entities presented as separate.Can be a legitimate governed health model.Separation works only when clinical judgment, licensing, compensation, data, and claims are truly independent.
    14. Revenue storiesSales screens, platform ROAS, vial markup, and large asking prices presented as value.Persuasive for recruiting, agencies, and sellers.Reconcile order to refund, reserve, settlement, bank cash, owner earnings, and buyer terms.
    15. Remedy and credibilityPrivate reships, hidden disputes, sponsor claims, affiliate rankings, and agency case studies.Quiet recovery protects public reputation.Publish clear remedy rules and put the speaker's financial incentive beside every claim.
    +
    + +
    + + Representative forum evidence, linked directlyThe artifact proves that people discuss or sell the tactic. It does not prove the tactic works, is lawful, or is durable. + +
    +
    + + + + + + + + + + + + + + +
    PressureDirect artifactWhat it establishesGrade
    PaymentsBHW pharma processor thread, March 2026Operators report termination and sellers promote account workarounds. It does not prove durable approval or profit.C/D
    Payment maskingBHW launch and processor thread, 2025 to 2026Cloaking and high-risk processing are openly discussed, along with frozen-fund risk.C/D
    Merchant codingReddit MCC discussion, May 2026Processor sellers disagree on coding, revealing incentive conflicts and underwriting uncertainty.C
    Ad workaroundsBHW peptide ad thread, March 2026Bridge pages and restricted-account services are sold. Performance claims remain unverified.D
    Community seedingBHW peptide campaign thread, January 2026Discussion seeding, awareness threads, and established accounts are offered commercially.D
    AI search manipulationr/Biohackers policy, May 2026Moderators report peptide content flooding and attempted answer-engine optimization.B
    Private discoverySupplier discovery discussion, May 2026Buyers describe referrals, shared chats, Telegram, Discord, and private messages.C
    COA trustCOA verification discussion, April 2026Buyers look for lab-domain records, dates, and exact lot matches rather than a seller PDF alone.C
    Creator conflictFitfluencer discussion, June 2026Audiences identify affiliate links, paid consultations, and nonmedical outcome guidance as trust problems.C
    Revenue and $15MActual BHW post, September 2019The $15 million line concerns hard-money deals to place, not a documented peptide-company acquisition offer.A for text, D for acquisition interpretation
    +
    +
    +
    + +
    + + What the deeper Reddit, BHW, GLP-1 Forum, and MESO-Rx pass changedIt found more failure evidence than trustworthy profit evidence. + +
    +
    + + + + + + + + + + + +
    Current artifactWhat the operator reportsWhat Noli learnsGrade
    BHW payment help
    July 2026
    A growing seller says crypto no longer fits, Stripe holds 30%, and PayPal requests proof.Demand can outrun settlement. Dashboard revenue is not available cash.C
    BHW dropship launch
    Feb to Mar 2026
    Entrants ask for suppliers while replies keep returning to payment, contracts, fulfillment, and settlement."Who supplies it?" is not the hard question. Liability, lot control, and cash timing are.C/D
    Stocked but abandoned
    March 2026
    Founder says the entity, inventory, site, and shipping supplies existed, but payments and demand did not.Do not buy sellable inventory before lane, cash, release, and distribution gates.C
    Processor stress
    Feb 2026
    Anonymous operators report bans, a $10K reserve, high failure, and 9% or higher fees.Use only as a stress case. Get the actual sponsor-bank term sheet.C/D
    Endotoxin failure
    April 2026
    A testing coordinator says a batch with strong mass and purity produced the group's worst endotoxin result.Purity-only release is incomplete. Define the full release panel and remedy before sale.B/C
    White-label complaint
    2026
    A buyer alleges missed margin, support, mockup, and shipment promises. Provider reviews conflict.Turnkey can test demand but does not solve provenance, margin, service, or portability.D allegations
    On-chain attribution
    June 2026
    Chainalysis connects two China-based chemical businesses to direct peptide sales and reports precursor-market exposure.Direct supply identity can be found through contacts and payment flows. It can also reveal disqualifying counterparty risk.B
    +
    +
    The gray market teaches one valuable thing: private trust, portable relationships, fast remedy, and working cash can overpower a basic storefront. It does not teach that masking, account rotation, coded catalogs, or opaque sourcing become durable at scale.
    +
    +
    + +
    + + Current regulatory reality, July 26, 2026The market moved this week. The vote is a signal, not permission. + +
    +
      +
    • On July 23 and 24, 2026, the FDA Pharmacy Compounding Advisory Committee recommended six of seven reviewed peptide families for possible Section 503A listing: BPC-157, KPV, TB-500, MOTS-c, Semax, and Epitalon. Emideltide was not recommended.
    • +
    • The committee recommendation is nonbinding. It is not final FDA action, FDA approval, or blanket permission to compound or market the substances.
    • +
    • Retatrutide was not part of that review. FDA currently says retatrutide cannot be used in compounding under federal law and has not been found safe and effective for any condition.
    • +
    • The March 31, 2026 Gram Peptides letter says RUO text and coded names did not outweigh the site's full-funnel evidence of human intended use.
    • +
    • On March 3, 2026, FDA announced warnings to 30 telehealth companies over false or misleading compounded GLP-1 marketing.
    • +
    • Telehealth is a separately governed clinical model, not a questionnaire added to ecommerce.
    • +
    + +
    +
    +
    + +
    +
    +
    +
    10 / Founder media
    +

    Listen for mechanics, not flexes.

    +
    +
    +

    The founder-media workbook covers 15 sources, 169 timestamped notes, 36 claim checks, and 12 current-status updates. These eight are the fastest useful queue. Each lesson is summarized here so the spreadsheet is optional.

    +
    +
    + +
    +
    +
    July 21, 2026Agency / C15:15 total
    +

    1. Budai Ecom Show #325

    +

    Listen for: Google-first demand, lifecycle, payment instability, and the warning that a near-term window is not a durable channel. Revenue remains agency-supplied.

    + Open episode +
    +
    +
    May 14, 2026Founder / B34:06 to 37:51
    +

    2. Joi + Blokes

    +

    Listen for: female flagship, male sibling, shared backend, education moat, and separating commissionable supplements from prescriptions and labs.

    + Open at 34:06 +
    +
    +
    Nov 1, 2025Young founder / B14:38 to 31:38
    +

    3. Peptira + Peptide Price

    +

    Listen for: six-week launch order, lot labels, searchable COAs, quantity ladders, test-before-sale, community, and inventory. Current remedy policy is stricter than the early interview promise.

    + Open at 14:38 +
    +
    +
    Jan 4, 2026Founder / B11:27 to 20:30
    +

    4. Perelel

    +

    Listen for: identity brand, female journey architecture, creator cohorts, no-obligation seeding, long relationship arcs, and building trust before performance spend.

    + Open episode +
    +
    +
    Apr 24, 2025Clinical founder / B09:34 to 28:48
    +

    5. SheMed

    +

    Listen for: women 35 to 55, female-front and shared-backend precedent, tone testing, and patient journey design. Clinical claims do not transfer into an RUO model.

    + Open episode +
    +
    +
    HistoricalFounder / B-C17:30 and 35:45
    +

    6. Redline Biolabs

    +

    Listen for: payment failure, supplier loss, oversell recovery, founder trust, support burden, and attribution. The useful story is recovery, not a clean scale narrative.

    + Open at 17:30 +
    +
    +
    May 2, 2023Adjacent brand / B15:45 to 29:35
    +

    7. Arrae

    +

    Listen for: soft launch, no-obligation seeding, turning organic advocates into long-term partners, and customer-as-creator. Transfer the relationship mechanics, not category economics.

    + Open episode +
    +
    +
    HistoricalStale ownership35:07 to 40:14
    +

    8. Transcend

    +

    Listen for: creator demand outrunning staffing, service, inventory, and partner capacity. The founder interview no longer describes current control after the 2026 ownership change.

    + Open at 35:07 +
    +
    + +
    + + Four current operator reads that matter more than another flex podcastThese expose the parts founders usually omit from interviews. + +
    +
    +
    +
    May 6, 2026Failure / C-D
    +

    The 20-year-old who stopped

    +

    Payments, unprovable supply, COA doubt, weak white-label margin, and no demand owner mattered more than the finished store.

    + Open story +
    +
    +
    May to June 2026Sale memo / C-D
    +

    Inside Direct Peptides

    +

    The buyer-facing asset stack was ERP, customers, lifecycle, payments, fulfillment, inventory, ads, and SOPs. The math and transaction terms remain unverified.

    + Open analysis +
    +
    +
    Updated July 12, 2026Founder Q&A / C
    +

    Kimera incident file

    +

    Read for supplier removal, customer-reaching incidents, pulls, refunds, named labs, and why a COA is not a complete quality system.

    + Open profile +
    +
    +
    Updated July 12, 2026Founder Q&A / C
    +

    Peptide Plugs early operation

    +

    Read for founder-led service, costly supplier screening, bundles, loyalty, and the key-person risk of near-constant personal support.

    + Open profile +
    +
    +
    +
    + +
    + + Company patterns worth copyingThirty companies collapse into a few useful systems. + +
    +
    + + + + + + + + + + +
    PatternWhat to copyWhat to refuseDirect page
    PeptiraPartner community, founder media, searchable proof, quantity logicPromotion noise and treating affiliate volume as profitPeptira
    ChameleonVerification, packaging, human service, visible recoveryGeneric purity badges without full lot contextChameleon
    APEXQuiz, same-SKU stacks, replenishment plumbingStacking subscription, buyer, and affiliate discountsAPEX
    Joi + BlokesFemale and male fronts, shared backend, compensation boundaryComplexity before cohort economics justify itJoi + Blokes
    PerelelFemale identity architecture and long creator arcsCopying clinical journey claims into another lanePerelel
    Peptide Price + CompareOwn discovery, education, comparison, email, and brand searchUndisclosed affiliate ranking conflictsRanking method
    +
    +
    +
    +
    + +
    +
    +
    +
    11 / Execution
    +

    The 90-day proof.

    +
    +
    +

    Thirty days proves launch mechanics. Sixty and ninety days reveal repeat, reserves, creator profitability, founder dependence, and whether the positioning thesis is economically real.

    +
    +
    + +
    +
    +
    Days 1 to 14
    +

    Clear one offer first.

    +
      +
    • Clear one lane, audience, offer, and claims system in writing.
    • +
    • Obtain exact acquiring-bank, insurance, supplier, and 3PL approval.
    • +
    • Only then receive, test, release, and publish one lot.
    • +
    • Test checkout, fulfillment, support, and lifecycle.
    • +
    • Recruit five creators only after approval.
    • +
    +
    +
    +
    Days 15 to 30
    +

    Cap the truth cohort.

    +
      +
    • Release creators one at a time.
    • +
    • Stop at 50 to 75 delivered orders.
    • +
    • Solve every support issue manually.
    • +
    • Reconcile order to settlement to bank cash.
    • +
    • Pay creators accurately after reversals.
    • +
    +
    +
    +
    Days 31 to 60
    +

    Prove repeatability.

    +
      +
    • Run the same cohort again.
    • +
    • Improve from objections and tickets.
    • +
    • Test one quantity ladder.
    • +
    • Measure actual second-order behavior.
    • +
    • Add support coverage and confirm supply.
    • +
    +
    +
    +
    Days 61 to 90
    +

    Add exactly one lever.

    +
      +
    • High-intent Google, or
    • +
    • Ten more creators, or
    • +
    • One adjacent SKU.
    • +
    • Never add all three together.
    • +
    • Run the matched positioning read.
    • +
    +
    +
    + +
    + + The stage gatesDo not project LTV. Do not count money that has not settled. + +
    +
    + + + + + + + + +
    MomentMust be trueDo next
    Before first orderOne exact offer and audience, released lot, written payment terms, tested checkout and 3PL, support owner, remedy rules, portable lifecycle, five creator agreements, daily scorecardRelease one creator
    50 to 75 deliveredOrders reconcile to bank cash, CM2 floor 30% and target 35%, on-time at least 95%, recovery provision at most 5%, disputes below 0.30%, full lot traceability, zero unresolved critical quality or creator violationsRepeat the cohort
    60 and 90 daysReal second-order contribution, creator profit after reversals, measured female versus technical economics, support load understood, reserve and inventory funding visible, no projected-LTV creditAdd one lever
    500 monthlyThree clean months, demand cost at most 25%, concentration falling, support and payouts work without Alex, approved backup payment path, qualified second upstream sourceConsider one adjacent SKU
    +
    +
    +
    + +
    + + Pause and kill conditionsGrowth does not cure a broken lane, lot, ledger, or support system. + +
    +
    +

    Pause immediately

    +
      +
    • No written acceptance for the exact entity, catalog, claims, and volume.
    • +
    • Settlements do not reconcile to the order ledger and bank.
    • +
    • The lot fails, mismatches, or cannot be traced.
    • +
    • The 3PL cannot block unreleased inventory.
    • +
    • Support backlog breaks the one-day response promise.
    • +
    • Refunds, reships, disputes, or reserves erase contribution.
    • +
    +
    +
    +

    Do not scale

    +
      +
    • Creators need unapproved or contradictory claims to convert.
    • +
    • Platform ROAS is positive but settled CM2 is negative.
    • +
    • Two cohorts miss the 30% hard floor.
    • +
    • Repeat exists only in projections.
    • +
    • Alex remains the daily operating system.
    • +
    • Core OVO delivery deteriorates because Noli consumes the team.
    • +
    +
    +
    +
    Kill the current offer, not merely pause it, if its lane cannot clear before commerce; a critical quality failure lacks documented disposition; two cohorts miss 30% settled CM2; 90-day reorder produces no positive contribution; or Alex remains the daily operating system after cohort two. Preserve Noli only by changing the lane or offer and rerunning every pre-order gate.
    +
    + +
    + + The only weekly scorecardIf a metric does not change a decision, do not add it. + +
    +
      +
    • Authorized revenue, captured revenue, settled revenue, reserve, and bank cash
    • +
    • CM2 by order, SKU, creator, and cohort
    • +
    • New versus returning, AOV, and 30, 60, and 90-day reorder
    • +
    • Refund, reship, dispute, and support-contact rate
    • +
    • On-time shipment, pick accuracy, tracking latency, and inventory days
    • +
    • Lot complaints, release status, and release lead time
    • +
    • Creator activation, content output, landing conversion, violations, and payout
    • +
    • Incremental CM2 per operator hour and Alex hour
    • +
    +
    +
    +
    + +
    +
    +
    +
    12 / Evidence
    +

    Everything important is above.

    +
    +
    +

    You do not need to download anything to understand the plan. The raw research remains here only for source-level audit, exact quotes, formulas, and the full company-by-company record.

    +
    +
    + +
    + 290-row legacy source matrix + 130-entry payment and supply ledger + 56-source founder teardown + 85 current forum and operator evidence rows + 570-domain crawl across 1,855 public pages + 48 high-confidence storefront and checkout profiles + 783 payment-code rows across 149 domains + 112 storefront UIs screenshot-reviewed, 95 scored + 13,555 crawl evidence records + 42-source growth audit + 11 official Reta DMF holders + 326 UK sellers screened + 12 ranked operators + 30-company landscape + 15 media sources + 169 timestamped notes + Current through July 27, 2026 +
    + +
    Evidence rule: primary policy and inspectable facts outrank operator claims. Named founders outrank anonymous screenshots. Repetition proves a market pressure exists, not that a tactic is lawful, durable, or profitable.
    + +
    + + The highest-value live evidenceStart here when a claim changes a decision. + + +
    + +
    + + Optional raw research archiveOnly open these when you want the full source trail or calculation detail. + + +
    + +

    This is internal commercial intelligence, not legal, regulatory, medical, tax, quality, or underwriting advice. Time-sensitive claims are dated. Forum and marketplace claims are labeled as claims, not verified performance.

    +
    +
    + +
    + Noli operating intelligence / Current through July 27, 2026 + Simple scales. Complex fails. +
    + + + diff --git a/biologix-strategy-board/research/operating-blueprint.js b/biologix-strategy-board/research/operating-blueprint.js new file mode 100644 index 0000000..bdc8070 --- /dev/null +++ b/biologix-strategy-board/research/operating-blueprint.js @@ -0,0 +1,457 @@ +(function () { + "use strict"; + + const links = Array.from(document.querySelectorAll(".blueprint-nav a")); + const sections = links + .map((link) => document.querySelector(link.getAttribute("href"))) + .filter(Boolean); + + function openContainerForTarget(target) { + if (!target) return; + const container = target.closest("details"); + if (container) container.open = true; + } + + function revealHashTarget() { + if (!window.location.hash) return; + try { + openContainerForTarget(document.querySelector(window.location.hash)); + } catch (_error) { + // Ignore malformed user-provided fragments. + } + } + + revealHashTarget(); + window.addEventListener("hashchange", revealHashTarget); + document.addEventListener("click", (event) => { + const anchor = event.target.closest('a[href^="#"]'); + if (!anchor) return; + try { + openContainerForTarget(document.querySelector(anchor.getAttribute("href"))); + } catch (_error) { + // Ignore malformed fragments without breaking other page interactions. + } + }); + + if ("IntersectionObserver" in window && sections.length > 0) { + const linkById = new Map( + links.map((link) => [link.getAttribute("href").slice(1), link]) + ); + const navList = document.querySelector(".blueprint-nav ol"); + + const observer = new IntersectionObserver( + (entries) => { + const visible = entries + .filter((entry) => entry.isIntersecting) + .sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top); + + if (visible.length === 0) return; + + links.forEach((link) => link.removeAttribute("aria-current")); + const active = linkById.get(visible[0].target.id); + if (!active) return; + + active.setAttribute("aria-current", "true"); + if (navList && navList.scrollWidth > navList.clientWidth) { + active.scrollIntoView({ + behavior: "auto", + block: "nearest", + inline: "center" + }); + } + }, + { + rootMargin: "-128px 0px -58% 0px", + threshold: [0, 0.1] + } + ); + + sections.forEach((section) => observer.observe(section)); + } +})(); + +(function () { + "use strict"; + + const data = window.PEPTIDE_MEDIA_INTELLIGENCE; + const byId = (id) => document.getElementById(id); + + const escapeHtml = (value) => + String(value == null ? "" : value).replace(/[&<>"']/g, (character) => ({ + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }[character])); + + const safeUrl = (value) => { + if (!value) return null; + try { + const parsed = new URL(String(value), window.location.href); + return ["http:", "https:"].includes(parsed.protocol) ? parsed.href : null; + } catch (_error) { + return null; + } + }; + + const externalLink = (url, label, className = "") => { + const safe = safeUrl(url); + if (!safe) return `${escapeHtml(label)}`; + const classAttribute = className ? ` class="${escapeHtml(className)}"` : ""; + return `${escapeHtml(label)}`; + }; + + const unique = (values) => + Array.from(new Set(values.filter(Boolean))).sort((left, right) => + String(left).localeCompare(String(right)) + ); + + const sourceNotes = new Map(); + const sourceClaims = new Map(); + + function indexRows() { + data.notes.forEach((note) => { + const id = note["Source ID"]; + if (!sourceNotes.has(id)) sourceNotes.set(id, []); + sourceNotes.get(id).push(note); + }); + + data.sources.forEach((source) => { + const company = source.Company; + sourceClaims.set( + source.ID, + data.claims.filter((claim) => + String(claim.Company || "").toLowerCase().includes(String(company || "").toLowerCase()) || + String(company || "").toLowerCase().includes(String(claim.Company || "").toLowerCase()) + ) + ); + }); + } + + function renderExecutiveDecisions() { + const root = byId("executive-decisions"); + if (!root) return; + root.innerHTML = data.executiveDecisions.map((row) => ` +
    + ${escapeHtml(row.Confidence)} confidence +

    ${escapeHtml(row.Question)}

    +

    ${escapeHtml(row.Answer)}

    +
    +
    Evidence
    ${escapeHtml(row.Evidence)}
    +
    Why
    ${escapeHtml(row.Why)}
    +
    First proof
    ${escapeHtml(row["First proof"])}
    +
    +
    + `).join(""); + } + + function renderCurrentContext() { + const root = byId("current-context-ledger"); + if (!root) return; + root.innerHTML = data.currentContext.map((row) => ` +
    + ${escapeHtml(row.Date)} +

    ${escapeHtml(row.Topic)}

    +

    Changed: ${escapeHtml(row["What changed"])}

    +
    +
    Did not change
    ${escapeHtml(row["What did NOT change"])}
    +
    Implication
    ${escapeHtml(row["Business implication"])}
    +
    Next review
    ${escapeHtml(row["Next review"])}
    +
    Evidence
    ${escapeHtml(row["Evidence class"])}
    +
    +

    ${externalLink(row["Primary / current link"], "Open current source ↗")}

    +
    + `).join(""); + } + + function renderFastQueue() { + const root = byId("fast-listening-queue"); + if (!root) return; + root.innerHTML = data.fastQueue.map((row) => ` +
  • + ${escapeHtml(row[0])} + + ${escapeHtml(row[1])} + ${escapeHtml(row[2])} + ${escapeHtml(row[3])} + +
  • + `).join(""); + } + + function renderCockpitQueue() { + const root = byId("cockpit-listening-queue"); + if (!root) return; + root.innerHTML = data.fastQueue.slice(0, 5).map((row) => ` +
  • + ${escapeHtml(String(row[0]).padStart(2, "0"))} +
    + ${escapeHtml(row[1])} +

    ${escapeHtml(row[3])}

    +
    + ${externalLink(row[4], `Listen · ${row[2]} ↗`)} +
  • + `).join(""); + } + + function mediaType(source) { + const url = String(source["Media link"] || ""); + if (url.includes("youtube.com")) return "YouTube"; + if (url.includes("podcasts.apple.com")) return "Apple Podcasts"; + if (url.includes("acast.com") || url.includes("buzzsprout.com")) return "Audio podcast"; + return "Founder media"; + } + + function sourceHaystack(source) { + const notes = sourceNotes.get(source.ID) || []; + const claims = sourceClaims.get(source.ID) || []; + return [ + ...Object.values(source), + ...notes.flatMap((note) => Object.values(note)), + ...claims.flatMap((claim) => Object.values(claim)) + ].join(" ").toLowerCase(); + } + + function renderNotes(source) { + const notes = sourceNotes.get(source.ID) || []; + if (notes.length === 0) return ""; + return ` +
    + ${notes.length} timestamped lessons +
      + ${notes.map((note) => { + const timestamp = note.Timestamp || "Episode"; + const link = safeUrl(note["Timestamp link"]); + const timeMarkup = link + ? `${escapeHtml(timestamp)} ↗` + : ``; + return ` +
    1. +
      ${escapeHtml(note.Topic)}${timeMarkup}
      +

      ${escapeHtml(note["What the operator said / what happened"])}

      +

      Noli application: ${escapeHtml(note["What Biologix can learn"])}

      +

      Evidence: ${escapeHtml(note["Evidence class"])}. ${escapeHtml(note["Freshness note"])}

      +
    2. + `; + }).join("")} +
    +
    + `; + } + + function renderSourceCard(source) { + const notes = sourceNotes.get(source.ID) || []; + return ` +
    +
    +
    + ${escapeHtml(source.Priority)} +

    ${escapeHtml(source["Episode / source"])}

    +
    + ${escapeHtml(source.Published)} +
    +

    ${escapeHtml(source.Company)} · ${escapeHtml(source["Founder / operator"])}

    +

    ${escapeHtml(source["Why it matters"])}

    +
    + ${escapeHtml(source.Lane)} + ${escapeHtml(mediaType(source))} + ${escapeHtml(source.Freshness)} + ${escapeHtml(source.Confidence)} +
    +
    +
    At recording
    ${escapeHtml(source["Stage at recording"])}
    +
    Business model
    ${escapeHtml(source.Model)}
    +
    Current check
    ${escapeHtml(source["Current status at 2026-07-26"])}
    +
    Notes indexed
    ${notes.length}
    +
    +
    + ${externalLink(source["Media link"], "Watch / listen ↗", "button-link button-link--primary")} + ${externalLink(source["Current-check link"], "Open current check ↗", "button-link")} +
    + ${renderNotes(source)} +
    + `; + } + + const state = { query: "", lane: "", priority: "" }; + + function renderSources() { + const root = byId("media-source-grid"); + const count = byId("media-results-count"); + if (!root || !count) return; + + const rows = data.sources.filter((source) => { + if (state.lane && source.Lane !== state.lane) return false; + if (state.priority && source.Priority !== state.priority) return false; + if (state.query && !sourceHaystack(source).includes(state.query)) return false; + return true; + }); + + count.textContent = `${rows.length} of ${data.sources.length} media sources shown`; + root.innerHTML = rows.length + ? rows.map(renderSourceCard).join("") + : '

    No source matches those filters. Reset the library or try a broader term.

    '; + + renderClaims(state.query); + } + + function populateControls() { + const lane = byId("media-lane"); + const priority = byId("media-priority"); + if (!lane || !priority) return; + + lane.insertAdjacentHTML( + "beforeend", + unique(data.sources.map((source) => source.Lane)) + .map((value) => ``) + .join("") + ); + priority.insertAdjacentHTML( + "beforeend", + unique(data.sources.map((source) => source.Priority)) + .map((value) => ``) + .join("") + ); + + byId("media-controls")?.addEventListener("submit", (event) => event.preventDefault()); + byId("media-search")?.addEventListener("input", (event) => { + state.query = event.target.value.trim().toLowerCase(); + renderSources(); + }); + lane.addEventListener("change", (event) => { + state.lane = event.target.value; + renderSources(); + }); + priority.addEventListener("change", (event) => { + state.priority = event.target.value; + renderSources(); + }); + byId("media-reset")?.addEventListener("click", () => { + state.query = ""; + state.lane = ""; + state.priority = ""; + byId("media-search").value = ""; + lane.value = ""; + priority.value = ""; + renderSources(); + byId("media-search").focus(); + }); + } + + function renderClaims(query = "") { + const root = byId("claim-ledger"); + if (!root) return; + const rows = data.claims.filter((row) => + !query || Object.values(row).join(" ").toLowerCase().includes(query) + ); + root.innerHTML = rows.length ? rows.map((row) => ` +
    + ${escapeHtml(row["Verification status"])} +

    ${escapeHtml(row["Claim to evaluate"])}

    +

    ${escapeHtml(row["Current finding at 2026-07-26"])}

    +
    +
    Company
    ${escapeHtml(row.Company)}
    +
    Confidence
    ${escapeHtml(row["Confidence (0-5)"])}/5
    +
    Decision impact
    ${escapeHtml(row["Decision impact"])}
    +
    Evidence
    ${escapeHtml(row["Evidence class"])}
    +
    +

    ${externalLink(row["Verification link"], "Open verification ↗")}

    +
    + `).join("") : '

    No checked claim matches the current search.

    '; + } + + function renderLessons() { + const root = byId("lesson-ledger"); + if (!root) return; + root.innerHTML = data.lessons.map((row) => ` +
    + ${escapeHtml(row.Priority)} · ${escapeHtml(row.Confidence)} +

    ${escapeHtml(row.Lesson)}

    +

    ${escapeHtml(row["How to apply"])}

    +
    +
    Domain
    ${escapeHtml(row.Domain)}
    +
    Evidence
    ${escapeHtml(row.Evidence)}
    +
    Proof
    ${escapeHtml(row["Metric / proof"])}
    +
    +
    + `).join(""); + } + + function renderAntiLessons() { + const root = byId("anti-lesson-ledger"); + if (!root) return; + root.innerHTML = data.antiLessons.map((row) => ` +
    + ${escapeHtml(row["Risk level"])} risk · ${escapeHtml(row["Source / pattern"])} +

    ${escapeHtml(row["Do not copy"])}

    +

    Why: ${escapeHtml(row.Why)}

    +

    Safer pattern: ${escapeHtml(row["Safer pattern"])}

    +
    + `).join(""); + } + + function renderActions() { + const root = byId("action-ledger"); + if (!root) return; + root.innerHTML = data.actions.map((row) => ` +
    + ${escapeHtml(row.Window)} · ${escapeHtml(row.Priority)} +

    ${escapeHtml(row.Action)}

    +
    +
    Workstream
    ${escapeHtml(row.Workstream)}
    +
    Owner
    ${escapeHtml(row.Owner)}
    +
    Dependency
    ${escapeHtml(row.Dependency)}
    +
    Done when
    ${escapeHtml(row["Definition of done"])}
    +
    Metric
    ${escapeHtml(row.Metric)}
    +
    +
    + `).join(""); + } + + function renderWatchlist() { + const root = byId("watchlist-ledger"); + if (!root) return; + root.innerHTML = data.watchlist.map((row) => ` +
    + ${escapeHtml(row.Cadence)} review · ${escapeHtml(row.Owner)} +

    ${escapeHtml(row.Subject)}

    +

    ${escapeHtml(row["What to watch"])}

    +
    +
    Current state
    ${escapeHtml(row["Current state"])}
    +
    Trigger
    ${escapeHtml(row.Trigger)}
    +
    +

    ${externalLink(row.Source, "Open watch source ↗")}

    +
    + `).join(""); + } + + function showDatasetError(message) { + const status = byId("dataset-status"); + const grid = byId("media-source-grid"); + if (status) status.textContent = message; + if (grid) grid.innerHTML = `

    ${escapeHtml(message)} The workbook remains available above.

    `; + } + + if (!data || !Array.isArray(data.sources) || !Array.isArray(data.notes)) { + showDatasetError("The media dataset did not load."); + return; + } + + indexRows(); + renderExecutiveDecisions(); + renderCurrentContext(); + renderFastQueue(); + renderCockpitQueue(); + populateControls(); + renderLessons(); + renderAntiLessons(); + renderActions(); + renderWatchlist(); + renderSources(); + + const status = byId("dataset-status"); + if (status) { + status.textContent = `Current ${data.asOf} · ${data.stats.sources} sources · ${data.stats.notes} notes · ${data.stats.claims} checked claims`; + } +})(); diff --git a/biologix-strategy-board/research/peptide-founder-media-intelligence-data.js b/biologix-strategy-board/research/peptide-founder-media-intelligence-data.js new file mode 100644 index 0000000..d1a6739 --- /dev/null +++ b/biologix-strategy-board/research/peptide-founder-media-intelligence-data.js @@ -0,0 +1 @@ +window.PEPTIDE_MEDIA_INTELLIGENCE = {"asOf":"2026-07-26","stats":{"sources":15,"notes":169,"claims":36,"currentContext":12,"lessons":30,"antiLessons":20,"actions":24,"watchlist":12},"sources":[{"ID":"JOI","Priority":"1 - Start here","Lane":"Exact category founder","Company":"Joi + Blokes","Founder / operator":"Josh and Katy Whalen","Episode / source":"The New Health Gold Rush: Hormones, Peptides, GLP-1s & Fertility","Published":"2026-05-14","Duration":"59:45","Stage at recording":"Founded 2021; about five years old","Model":"Self-pay diagnostics-first telehealth; separate female and male brands share operations","Media link":"https://www.youtube.com/watch?v=aigF8IfN4Is","Current-check link":"https://www.entrepreneur.com/building-a-business/they-built-a-50-million-business-before-glp-1s-became-mainstream-now-theyre-eyeing-this-new-health-frontier","Current status at 2026-07-26":"Active; acquired HerMD and announced fertility expansion. Private scale claims are not audited.","Freshness":"Current; refreshed","Confidence":"4/5 model, 2/5 financials","Why it matters":"Best direct evidence for a female-leading front, male sibling brand, shared backend, and category-education moat."},{"ID":"PEPTIRA","Priority":"1 - Start here","Lane":"Exact category founder","Company":"Peptira + Peptide Price","Founder / operator":"Benjamin Criss and Derek Pruski","Episode / source":"How We Got Started: The Story of Peptide Price + Peptira","Published":"2025-11-01","Duration":"46:59","Stage at recording":"Peptira about five months old","Model":"RUO ecommerce plus comparison, referral, education, and paid community","Media link":"https://www.youtube.com/watch?v=Be58yiS6Vs4","Current-check link":"https://peptira.com/test-results/","Current status at 2026-07-26":"Both active. Peptira expanded its catalog and Peptide Price community; current shipping remedies are stricter than the episode promise.","Freshness":"Recent but materially changed","Confidence":"3/5 overall","Why it matters":"Most useful day-one RUO operating interview: sourcing sequence, labels, lot IDs, COAs, support, pack ladders, and community feedback."},{"ID":"EC325","Priority":"1 - Start here","Lane":"Fast-growth case","Company":"Anonymous US peptide brand","Founder / operator":"Budai Media","Episode / source":"Ecom Show #325: If I Had to Scale a Peptide Brand Today","Published":"2026-07-21","Duration":"15:15","Stage at recording":"Claimed six months after a November 2025 start","Model":"Anonymous WooCommerce RUO brand; agency-operated acquisition and lifecycle","Media link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t","Current-check link":"https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss","Current status at 2026-07-26":"Freshest operating update. Agency calls the model a near-term window and says Google scaled more reliably than Meta.","Freshness":"Very current; anonymous","Confidence":"2/5 revenue, 4/5 agency experience","Why it matters":"Freshest exact growth playbook, but treat every revenue and margin number as an unaudited agency claim."},{"ID":"PERELEL","Priority":"1 - Start here","Lane":"Female-leading analog","Company":"Perelel","Founder / operator":"Alex Taylor, Victoria Thain Gioia, Dr. Banafsheh Bayati","Episode / source":"Success Almost Broke Her: Building a Multimillion-Dollar Wellness Brand","Published":"2026-01-04","Duration":"35:16","Stage at recording":"Five years old; just under 40 employees","Model":"Doctor-founded DTC subscription brand organized around women's life stages","Media link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412","Current-check link":"https://www.prnewswire.com/news-releases/perelel-secures-27m-growth-investment-from-prelude-growth-partners-to-reimagine-womens-health-302622022.html","Current status at 2026-07-26":"Active and expanded; $27M growth investment confirmed. Female-leading master brand still carries one men's product.","Freshness":"Current; high fit","Confidence":"5/5 tactics, 3-4/5 private metrics","Why it matters":"Strongest brand-architecture and creator-cohort analog for turning interchangeable products into an identity system."},{"ID":"SHEMED","Priority":"1 - Start here","Lane":"Female-leading analog","Company":"SheMed","Founder / operator":"Olivia and Chloe Ferro","Episode / source":"The Weightloss Wonders","Published":"2025-04-24","Duration":"31:23","Stage at recording":"About four months after launch","Model":"Clinician-led UK telehealth subscription for women, primarily ages 35 to 55","Media link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders","Current-check link":"https://www.shemed.co.uk/about","Current status at 2026-07-26":"Company says 100K+ women served; reported $50M raise. Male sibling HeMed launched on shared infrastructure.","Freshness":"Historical launch story; current state refreshed","Confidence":"5/5 model, 4/5 private scale","Why it matters":"Clearest female-front/shared-backend precedent and best example of testing brand tone against the real buyer."},{"ID":"MOCHI","Priority":"1 - Start here","Lane":"Platform analog","Company":"Mochi Health","Founder / operator":"Dr. Myra Ahmad","Episode / source":"Inside the Peptide Craze","Published":"2026-04-28","Duration":"1:08:00; founder segment 43:41-68:19","Stage at recording":"Four years old; minimally funded marketplace","Model":"Recurring cash-pay access connecting customers, providers, pharmacies, testing, and support","Media link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940","Current-check link":"https://joinmochi.com/longevity","Current status at 2026-07-26":"Active; launched a longevity offering after the interview. Company claims 500K+ members; provider count varies by source.","Freshness":"Very current; rapidly changing","Confidence":"4/5 model, 2-3/5 private metrics","Why it matters":"Best analog for recurring access, price transparency, provider continuity, testing capacity, and restrained funding."},{"ID":"VITABELLA","Priority":"2 - Deep dive","Lane":"Exact category founder","Company":"Vita Bella Health","Founder / operator":"Phil Vella","Episode / source":"The State of the Hormone & Peptide Industry","Published":"2026-02-26","Duration":"1:14:19","Stage at recording":"Founded 2023; about three years old","Model":"Cash-pay telehealth MSO and recurring membership","Media link":"https://www.youtube.com/watch?v=vwgd2UFdE6A","Current-check link":"https://vitabella.com/membership/","Current status at 2026-07-26":"Active; California added after recording. Current pricing is visible, while state, review, and legacy-price claims conflict across pages.","Freshness":"Recent; partly changed","Confidence":"3/5 overall","Why it matters":"Useful for membership mechanics, service capacity, partner boundaries, and why a broad catalog is operationally hard."},{"ID":"REDLINE","Priority":"2 - Deep dive","Lane":"Day-zero operator","Company":"Redline Biolabs","Founder / operator":"Kyle and Ryan","Episode / source":"Two Firefighters Built a Peptide Company","Published":"2026-05-26","Duration":"1:19:22","Stage at recording":"Company domain created 2026-04-04","Model":"Founder-led RUO ecommerce","Media link":"https://www.youtube.com/watch?v=JQSJYACbOCU","Current-check link":"https://www.redlinebiolabs.com/lab-reports","Current status at 2026-07-26":"Active store and lab-report library; no evidence of rapid scale. Current site contains documentation and affiliate-language inconsistencies.","Freshness":"Very recent; pre-scale","Confidence":"4/5 footprint, 1/5 scale/quality claims","Why it matters":"Best day-zero case for founder visibility, payment failure, supplier loss, overselling, service recovery, and channel codes."},{"ID":"EC320","Priority":"2 - Deep dive","Lane":"Fast-growth case","Company":"Anonymous US peptide brand","Founder / operator":"Budai Media","Episode / source":"Ecom Show #320: How We Scaled a US Peptide Brand","Published":"2026-05-12","Duration":"17:48","Stage at recording":"Claimed five months after launch","Model":"Anonymous WooCommerce RUO brand","Media link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr","Current-check link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t","Current status at 2026-07-26":"Superseded by #324 and #325. Initial $500K monthly claim later became $600K.","Freshness":"Recent but superseded","Confidence":"2/5","Why it matters":"Original channel ramp, learning-period, email-provider failure, and fulfillment/payment coordination story."},{"ID":"EC324","Priority":"2 - Deep dive","Lane":"Fast-growth case","Company":"Anonymous US peptide brand","Founder / operator":"Budai Media","Episode / source":"Ecom Show #324: How to Scale Your Peptide Brand","Published":"2026-07-07","Duration":"14:35","Stage at recording":"Claimed five months after launch","Model":"Anonymous WooCommerce RUO brand","Media link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so","Current-check link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t","Current status at 2026-07-26":"Mostly current, but #325 is the latest agency position. Approval-bypass discussion is excluded from the workbook playbook.","Freshness":"Very recent; superseded in part","Confidence":"2/5 revenue, 4/5 agency experience","Why it matters":"Lifecycle flows, same-product volume ladders, subscriptions, and channel-fragility observations."},{"ID":"REM","Priority":"2 - Deep dive","Lane":"Young adjacent operator","Company":"Remedora","Founder / operator":"Coy McAlexander","Episode / source":"Advanced Affiliate EP 134","Published":"2026-05-28","Duration":"55:25","Stage at recording":"Very young; domain created 2025-10-23","Model":"Telehealth launch and operating layer","Media link":"https://www.youtube.com/watch?v=1qgxkaPcq4k","Current-check link":"https://remedora.com/","Current status at 2026-07-26":"Active $200/month platform claim. Scale and vertical-integration assertions remain unverified; retatrutide-compounding discussion is outdated.","Freshness":"Recent but one material claim is outdated","Confidence":"3/5 footprint, 1-2/5 scale","Why it matters":"Useful for networking, platformization, cohort LTV, and concentration risk. Not a legal or compounding authority."},{"ID":"ARRAE","Priority":"2 - Deep dive","Lane":"Creator-growth analog","Company":"Arrae","Founder / operator":"Siffat Haider and Nish Samantray","Episode / source":"What Makes a Successful Wellness Brand","Published":"2023-05-02","Duration":"39:21","Stage at recording":"Three years old; about 12-13 employees","Model":"Creator-native DTC wellness and supplement brand","Media link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597","Current-check link":"https://www.forbes.com/sites/karineldor/2026/02/18/building-100m-wellness-brand-arrae-siff-haider-on-calculated-risk-and-relentless-standards/","Current status at 2026-07-26":"Active with broader assortment, subscription, and major retail. Company reports $100M+ cumulative revenue and 1.6M+ units, unaudited.","Freshness":"Old launch tactics; current state refreshed","Confidence":"5/5 tactics, 3/5 metrics","Why it matters":"Strongest creator-seeding system: broad honest gifting, promote organic advocates, multi-year relationships, and customer-as-creator."},{"ID":"BELLI","Priority":"2 - Deep dive","Lane":"Community-growth analog","Company":"BelliWelli","Founder / operator":"Katie Wilson, Nick Wilson, Tyson","Episode / source":"How Katie Wilson Bought Facebook Groups to Build a Gut Health Empire","Published":"2025-06-27","Duration":"57:17","Stage at recording":"Post-DTC launch; scaling into Walmart and Target","Model":"DTC subscription plus mass retail wellness","Media link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422","Current-check link":"https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth","Current status at 2026-07-26":"Active powder and gummy assortment, DTC subscription, broad retail, and independently reported $15.4M Series A.","Freshness":"Current; high creator/content fit","Confidence":"5/5 tactics, 3/5 metrics","Why it matters":"Best community/content engine: ownable repeatable format, constant field research, and the danger of confusing niche PMF with mass PMF."},{"ID":"TRANSCEND","Priority":"3 - Historical caution","Lane":"Exact category founder","Company":"Transcend Company","Founder / operator":"Ernest Colling","Episode / source":"What's Really Going On in the Peptide Business","Published":"2024-09-16","Duration":"1:01:54","Stage at recording":"Almost four years old","Model":"Telehealth MSO supporting independent practices and pharmacies","Media link":"https://www.youtube.com/watch?v=c6jUD2kyyDA","Current-check link":"https://transcendcompany.com/pages/change-of-provider-letter","Current status at 2026-07-26":"Operating under new owner Lance Converse and changed provider structure after a dispute and litigation. Use only for historical origin and scale-break lessons.","Freshness":"Materially changed","Confidence":"3/5 current facts, 2/5 private claims","Why it matters":"A cautionary scaling case: creator demand outran support and partner capacity; old founder titles no longer describe current control."},{"ID":"BIOLONG","Priority":"3 - Historical caution","Lane":"Exact category founder","Company":"BioLongevity Labs","Founder / operator":"Jay Campbell","Episode / source":"Mind Pump 2500: Weird Performance-Enhancing Supplements","Published":"2024-12-30","Duration":"Business segment near 1:05:55","Stage at recording":"About two months old by founder account","Model":"RUO storefront plus separate supplements, founder media, courses, and private community","Media link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/","Current-check link":"https://biolongevitylabs.com/research/","Current status at 2026-07-26":"Active with current content and catalog. Site product-count claims conflict; proposed pen products were not found.","Freshness":"Historical interview; active business refreshed","Confidence":"3/5 footprint, 1-2/5 scale","Why it matters":"Useful for education-led demand and existing-community leverage; weak proof of scale or delivered roadmap."}],"notes":[{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"01:30-03:35","Topic":"Founder-market fit","What the operator said / what happened":"The founders trace the company to their own difficult search for better care and say they personally believe in the offers.","What Biologix can learn":"Use authentic founder involvement only where it is true; founder conviction can humanize an opaque category.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=90s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"03:38-04:18","Topic":"Category education","What the operator said / what happened":"Early acquisition required teaching the market about proactive labs and peptides. Later competition reduced the basic education burden.","What Biologix can learn":"Move content from category definition toward operator-specific trust, proof, and decision support as awareness rises.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=218s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"04:19-09:22","Topic":"Operating barrier","What the operator said / what happened":"State rules, pharmacy shipping, and clinical oversight were major launch barriers. They position themselves between conventional medicine and unregulated RUO sellers.","What Biologix can learn":"Do not borrow clinical positioning without clinical infrastructure; decide and communicate the actual operating lane.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=259s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"08:04-11:54","Topic":"Category criticism","What the operator said / what happened":"They criticize research-product sellers that provide access without clinical guidance.","What Biologix can learn":"Expect credible operators to attack the category's trust gap. Documentation and role clarity must answer the objection without pretending to provide care.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=484s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"14:40-17:47","Topic":"Product concentration","What the operator said / what happened":"They say regulatory change reduced the peptide range after 2023 and that they intentionally stayed conservative.","What Biologix can learn":"Build scenario plans for losing a hero category rather than treating the catalog as permanent.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=880s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"18:02-20:24","Topic":"Revenue concentration","What the operator said / what happened":"Founder says GLP-1 reached about half of revenue before manufacturer pressure caused them to remove public advertising and listings; he says it is now 15-20%.","What Biologix can learn":"Track share of revenue by product and by acquisition promise. Concentration can hide inside a broad-looking catalog.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Private revenue mix; unaudited","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=1082s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"29:40-34:05","Topic":"Founder strain","What the operator said / what happened":"They describe 2025 as their hardest year as CAC rose and leadership stress grew.","What Biologix can learn":"Model leadership and service capacity as constraints, not just ad spend and inventory.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=1780s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"31:51-32:20","Topic":"Creative ownership","What the operator said / what happened":"Josh says he personally studies advertisements and website user journeys.","What Biologix can learn":"Keep a founder or senior owner close to creative quality and conversion, even after hiring agencies.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=1911s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"34:06-37:51","Topic":"Female-front architecture","What the operator said / what happened":"The business runs two audience-facing companies on one operation. Josh calls Joi the stronger engine and says women often bring male partners into Blokes.","What Biologix can learn":"Strong direct support for a female-leading flagship, technical male access, and shared backend.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=2046s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"48:53-52:17","Topic":"Scale and capital","What the operator said / what happened":"They say they are approaching $50M in revenue, are essentially self-funded, and now need more experienced operators or capital.","What Biologix can learn":"Demand can outrun the founders' operating altitude. Define when to add experienced functional leaders.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Revenue is management-reported","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=2933s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"52:42-54:36","Topic":"Adjacency","What the operator said / what happened":"The audience is becoming younger and fertility is presented as the next major adjacency.","What Biologix can learn":"Expand only after the core engine is stable; use customer progression to identify the next front door.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=3162s"},{"Source ID":"JOI","Company":"Joi + Blokes","Timestamp":"55:24-57:31","Topic":"Growth versus profitability","What the operator said / what happened":"They describe tension between maintaining profitability and preserving venture-attractive growth.","What Biologix can learn":"Choose the capital model deliberately; do not let fundraising optics dictate channel spend.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=3324s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"00:00-03:12","Topic":"Comparison-layer origin","What the operator said / what happened":"Peptide Price began as a two-day MVP listing four vendors because price and vendor comparison was difficult.","What Biologix can learn":"A decision tool can become distribution infrastructure before it becomes polished software.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=0s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"02:41-03:08","Topic":"Vendor relationship","What the operator said / what happened":"Derek says vendors opt in and his owner relationships let him intervene when customers have problems.","What Biologix can learn":"Partner channels are strongest when they can resolve service failures, not merely drop affiliate links.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=161s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"03:15-04:31","Topic":"Launch channel","What the operator said / what happened":"TikTok launched the comparison tool; a viral post allegedly reached about 70K views while he manually sent a raw URL.","What Biologix can learn":"Manual distribution is acceptable before automation. Validate message-to-click behavior first.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"View count is founder-reported","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=195s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"04:32-06:35","Topic":"Community-led assortment","What the operator said / what happened":"Community requests determined vendors and products; testing and COAs became the main qualification standard.","What Biologix can learn":"Use support tickets, search logs, creator comments, and comparison queries as a structured catalog research feed.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=272s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"06:37-08:58","Topic":"Platform fragility","What the operator said / what happened":"Derek says eight TikTok accounts were banned and he moved the audience into a paid Skool community.","What Biologix can learn":"Always build an owned audience and exportable identity graph; rented reach can disappear.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=397s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"09:00-13:41","Topic":"Decision criteria","What the operator said / what happened":"Comparison value extends beyond lowest price to per-mg price, codes, test scope, shipping, and reviews.","What Biologix can learn":"Win the comparison surface with structured proof, not generic brand language.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=540s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"14:38-17:27","Topic":"Launch sequence","What the operator said / what happened":"Peptira formed in June 2025 and spent roughly six weeks on supply, labels, and packaging before launch.","What Biologix can learn":"Treat sourcing, label system, testing, and fulfillment as the launch critical path.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=878s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"17:31-21:19","Topic":"Batch trust","What the operator said / what happened":"Labels evolved from QR-only to include batch ID, measured content, and purity; QR links to batch COAs.","What Biologix can learn":"Put lot identity and meaningful test outputs on the physical product and PDP, with current and historical status.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1051s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"21:21-22:45","Topic":"Volume ladder","What the operator said / what happened":"The store uses one, three, five, and ten-unit quantities with volume discounts.","What Biologix can learn":"Test simple same-product quantity ladders before complex mixed bundles.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1281s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"22:51-24:15","Topic":"Unsupported scale claim","What the operator said / what happened":"Ben calls Peptira a top-15 US peptide company and promises prices will not increase.","What Biologix can learn":"Never use rankings or permanent-price promises without an auditable basis.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unsupported","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1371s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"24:20-29:24","Topic":"Service moat","What the operator said / what happened":"Ben claims under-50-minute support, GPS on nearly all shipments, and automatic lost-package replacement; HubSpot was planned.","What Biologix can learn":"Instrument first-response time, resolution time, replacement cost, and shipment exception rate before making promises.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Replacement promise is now contradicted by live policy","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1460s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"30:01-31:38","Topic":"Release gate","What the operator said / what happened":"They withheld a promotion-ready product until third-party testing returned.","What Biologix can learn":"Make test clearance a hard inventory-release state, not a marketing preference.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1801s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"31:40-39:49","Topic":"Founder overload","What the operator said / what happened":"Ben left insurance work and was still packing and handling support late at night, then recognized the need for delegation.","What Biologix can learn":"Document SOPs and staff the exception queue before volume turns founder responsiveness into a bottleneck.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1900s"},{"Source ID":"PEPTIRA","Company":"Peptira + Peptide Price","Timestamp":"39:52-46:18","Topic":"Education risk","What the operator said / what happened":"Podcast topics and courses were community-led, but some content crosses toward personal-use protocols.","What Biologix can learn":"Keep education focused on lawful research, testing, documentation, and product handling boundaries; exclude dosing and personal-use guidance.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Risk remains current","Timestamp link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=2392s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"02:24-18:13","Topic":"Origin","What the operator said / what happened":"Colling links the company to personal health problems, a closed local clinic, and a late-2020 launch.","What Biologix can learn":"Personal frustration can identify demand, but it does not replace the operating and evidence model.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=144s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"20:03-22:50","Topic":"Concierge service","What the operator said / what happened":"He kept his day job for about a year while building an education-heavy concierge model.","What Biologix can learn":"Preserve runway while validating high-touch service; do not overhire before demand is repeatable.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=1203s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"24:05-26:34","Topic":"Hidden complexity","What the operator said / what happened":"State licensing, malpractice, physician-patient rules, and pharmacy shipping were larger obstacles than expected.","What Biologix can learn":"Map every partner, state, and handoff before projecting national scale.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=1445s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"27:20-28:44","Topic":"Initial audience","What the operator said / what happened":"Initial acquisition focused on bodybuilders and athletes through education and influencers.","What Biologix can learn":"A sharp founding niche can create density, but plan how the brand broadens without losing credibility.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=1640s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"35:07-36:21","Topic":"Breakout trigger","What the operator said / what happened":"FitCon Dallas and two affiliates allegedly created enough demand for the founder to leave his job within about 90 days.","What Biologix can learn":"Creator pilots should be capacity-gated. A successful launch can be more dangerous than a failed one.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Affiliate contribution unaudited","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2107s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"36:23-37:05","Topic":"Bootstrap claim","What the operator said / what happened":"The founder says the basement business was profitable from day one and self-funded.","What Biologix can learn":"Low overhead helps, but do not use the claim as a forecast without full unit economics.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unaudited","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2183s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"37:06-38:27","Topic":"Scale break","What the operator said / what happened":"Scaling from hundreds of thousands to millions per month allegedly broke hiring, training, calls, patient capacity, and pharmacy inventory.","What Biologix can learn":"Build a launch-readiness gate across support, inventory, fulfillment, and partner capacity before adding creators.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Historical; current control changed","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2226s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"38:27-40:14","Topic":"Role boundaries","What the operator said / what happened":"Independent pharmacies dispense and ship; Transcend manages goals, process design, and administration.","What Biologix can learn":"Map responsibility for every customer-visible failure and write escalation/continuity terms.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2307s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"40:16-42:34","Topic":"Audience expansion","What the operator said / what happened":"The business broadened from bodybuilding toward longevity and discussed employer/B2B expansion.","What Biologix can learn":"Expand audience only after the first segment's retention and service model is proven.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2416s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"42:34-44:19","Topic":"Price trend claim","What the operator said / what happened":"Colling says peptide prices fell by one-third to two-thirds over five to ten years.","What Biologix can learn":"Assume molecule pricing can commoditize and build value in proof, service, creators, and data.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"No supporting data","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2554s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"46:24-47:05","Topic":"Single-product risk","What the operator said / what happened":"GLP-1 awareness drove demand, but he did not want one product to define the company.","What Biologix can learn":"Use the hero SKU as an acquisition wedge while monitoring concentration and cross-category movement.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2784s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"48:39-52:20","Topic":"Mission layer","What the operator said / what happened":"The foundation focused on veterans and first responders.","What Biologix can learn":"A credible community mission can strengthen identity, but it must be operationally and financially real.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2919s"},{"Source ID":"TRANSCEND","Company":"Transcend Company","Timestamp":"60:10-60:57","Topic":"Foundation claim","What the operator said / what happened":"Founder claims roughly 100 patients served and $1.5M provided or donated over 18 months.","What Biologix can learn":"Require auditable impact reporting before making mission-based scale claims.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Tax filings confirm foundation, not amount","Timestamp link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=3610s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"01:08-02:17","Topic":"Geographic coverage","What the operator said / what happened":"Vella says Vita Bella operated in 40 states and views state complexity as both barrier and moat.","What Biologix can learn":"Treat geographic breadth as an operations matrix, not a marketing line.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=68s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"03:46-05:50","Topic":"Founder background","What the operator said / what happened":"The idea followed a technology career, severe injury, and frustration with healthcare markups.","What Biologix can learn":"Transfer the service-design and systems mindset, not unsupported pricing accusations.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=226s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"06:43-08:20","Topic":"Healthcare as a service","What the operator said / what happened":"The founder modeled recurring access on enterprise software and admits starting broad is harder than starting narrow.","What Biologix can learn":"Start with a coherent wedge and only add categories after navigation, support, and economics work.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=403s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"08:21-13:29","Topic":"Competitor testing claim","What the operator said / what happened":"He says four competitor samples contained unknown or mislabeled contents but shows no reports, names, or chain of custody.","What Biologix can learn":"Never publish competitor-safety accusations without named reports, independent sampling, and defensible custody.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unsupported","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=501s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"12:35-14:24","Topic":"Markup claim","What the operator said / what happened":"The founder gives pharmacy-cost and competitor-markup examples without invoices.","What Biologix can learn":"Do not use unaudited unit economics as a pricing anchor.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unsupported","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=755s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"14:28-21:07","Topic":"Rapid growth claim","What the operator said / what happened":"He claims hiring 20 providers, 300% growth in weeks, and a 220% increase in new-patient spend after industry disruption.","What Biologix can learn":"A competitor failure can create a demand shock; maintain surge capacity and verify economics before celebrating growth.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unaudited","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=868s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"21:39-25:45","Topic":"Service retention","What the operator said / what happened":"Long visits, service, outcomes, and 48-72-hour pharmacy delivery are positioned as retention levers.","What Biologix can learn":"Tie retention to measurable service states, but align marketing promises with governing terms.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=1299s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"25:52-29:25","Topic":"Jurisdiction choice","What the operator said / what happened":"At recording, the company deliberately excluded California and other complex markets.","What Biologix can learn":"Refusing markets can be a strategic capacity decision, not a failure of ambition.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"California has since launched","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=1552s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"29:27-34:30","Topic":"Membership mechanics","What the operator said / what happened":"The offer was $129 monthly plus a $99 consultation, separate labs, quarterly visits, one included treatment, and add-ons.","What Biologix can learn":"If using recurring access, separate the fee, included value, product costs, commitment, and cancellation terms unmistakably.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=1767s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"43:25-45:07","Topic":"Creator incentive design","What the operator said / what happened":"Vella criticizes creator incentives that encourage oversized stacks and higher customer spend.","What Biologix can learn":"Pay for qualified, retained customers and compliant content, not larger baskets or product intensity.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=2605s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"45:09-50:29","Topic":"Future category","What the operator said / what happened":"He expects continued demand and more big-pharma entry through patents and new delivery methods.","What Biologix can learn":"Plan for changing consumer expectations and stronger incumbents, not only today's vendor set.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=2709s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"57:14-58:47","Topic":"Behavioral retention","What the operator said / what happened":"App, training, and accountability are presented as retention tools.","What Biologix can learn":"Build retention around useful workflows and support rather than silent auto-renewal.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=3434s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"59:02-60:43","Topic":"Growth throttle","What the operator said / what happened":"Founder says he would pause growth if service quality deteriorated.","What Biologix can learn":"Create explicit stop rules tied to response time, stockouts, payment failures, and complaint rate.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=3542s"},{"Source ID":"VITABELLA","Company":"Vita Bella Health","Timestamp":"66:14-66:20","Topic":"Revenue concentration","What the operator said / what happened":"Founder says a single category represented about 40% of revenue despite nearly 100 medications.","What Biologix can learn":"Catalog breadth does not equal diversified economics; measure concentration by net contribution.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Private claim","Timestamp link":"https://www.youtube.com/watch?v=vwgd2UFdE6A&t=3974s"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"00:30-01:19","Topic":"Claimed growth","What the operator said / what happened":"Agency says a basic WooCommerce brand launched in November 2025 and reached roughly $500K trailing-30-day revenue after five months.","What Biologix can learn":"Use as a hypothesis that demand can ramp quickly, never as a forecast.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous, unaudited, later updated","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"01:26-02:45","Topic":"Prerequisites","What the operator said / what happened":"Self-hosted commerce, card processing, fulfillment, and a professional team are described as prerequisites.","What Biologix can learn":"Launch readiness must include stable payments, inventory, fulfillment, and accountable owners.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"02:51-03:03","Topic":"Agency economics","What the operator said / what happened":"The agency says it operated Google, Meta, and email on a revenue-share arrangement.","What Biologix can learn":"Evaluate agencies on contribution margin, data ownership, and scope, not attributed revenue alone.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Agency account","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"04:17-05:51","Topic":"Learning period","What the operator said / what happened":"Month one allegedly spent $7K on Google for $4.5K attributed revenue; the loss was treated as a 30-60-day learning investment.","What Biologix can learn":"Set a bounded test budget, leading indicators, and kill rules before assuming a loss will mature into scale.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous attributed metrics","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"05:51-08:15","Topic":"Channel sequence","What the operator said / what happened":"Sequence was Shopping, branded search, then Performance Max. Agency claims about $300K attributed revenue on $151K spend.","What Biologix can learn":"Capture existing product-name intent first and segment by product and margin; reconcile platform attribution to settled orders.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous attributed metrics","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"09:17-11:43","Topic":"Vendor failure","What the operator said / what happened":"Email flows were built immediately, but Klaviyo allegedly closed the account and a FluentCRM rebuild took three weeks.","What Biologix can learn":"Export customer and event data continuously and keep a tested migration path.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"12:01-14:10","Topic":"Meta signal","What the operator said / what happened":"Meta allegedly produced very high early ROAS at small spend.","What Biologix can learn":"Treat tiny-budget ROAS as a creative signal, not proof of scalable economics.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous agency attribution","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC320","Company":"Anonymous US peptide brand","Timestamp":"14:22-17:48","Topic":"System interaction","What the operator said / what happened":"Agency attributes $14K-$15K days to acquisition, email, fulfillment, and payments finally working together.","What Biologix can learn":"Growth is a system state. Instrument failures across the full customer chain.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous revenue claim","Timestamp link":"https://shows.acast.com/theecomshow/episodes/320-budai-media-specials-how-we-scaled-a-us-peptide-brand-fr"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"00:30-01:13","Topic":"Scale update","What the operator said / what happened":"Agency calls the client its fastest, from zero to $20K daily in five months.","What Biologix can learn":"Preserve as an upside case only; require client identity and raw cohort data before benchmarking.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous, unaudited","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"01:18-03:18","Topic":"Trust surface","What the operator said / what happened":"Agency recommends accessible COAs, clear disclaimers, card payments, and avoiding human-use, mixing, dosing, or benefit claims.","What Biologix can learn":"Build proof and operational clarity into the storefront while keeping education inside lawful research boundaries.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"03:24-04:05","Topic":"Scale update","What the operator said / what happened":"Claim rises to $600K monthly, including $450K attributed to Google on $150K spend.","What Biologix can learn":"Changing claim definitions are a warning to reconcile gross orders, settled revenue, refunds, and channel attribution.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous, unaudited","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"04:05-05:04","Topic":"Channel fragility","What the operator said / what happened":"Agency says only two of eight client Meta accounts remained active while all eight were active on Google.","What Biologix can learn":"Do not make one ad platform the business. Maintain creator, search, email, and direct channels.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Agency-reported experience","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"05:11-06:29","Topic":"Existing intent","What the operator said / what happened":"Product-name search and Shopping allegedly outperform benefit-oriented queries.","What Biologix can learn":"Prioritize clear product taxonomy and high-intent demand capture; avoid unsupported benefit language.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"06:29-08:31","Topic":"Approval evasion","What the operator said / what happened":"The episode includes tactics intended to bypass platform review.","What Biologix can learn":"Exclude entirely. Build no workflow around evasion, renamed products, cloaked pages, or misleading review surfaces.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Intentionally excluded from implementation","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"08:54-10:22","Topic":"Owned lifecycle","What the operator said / what happened":"Self-hosted email is presented as a response to hosted-provider shutdowns.","What Biologix can learn":"Owning infrastructure reduces vendor concentration but increases deliverability, security, and maintenance responsibility.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"10:28-12:19","Topic":"Lifecycle flows","What the operator said / what happened":"Recommended flows are welcome, browse/cart abandonment, post-purchase, VIP, winback, and replenishment; agency claims 5-15% of sales.","What Biologix can learn":"Implement the event model early and measure incremental lift rather than accepting vendor attribution.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Revenue share is agency-reported","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"12:26-14:16","Topic":"Offer architecture","What the operator said / what happened":"Same-product volume discounts and subscriptions are favored over mixed-product bundles.","What Biologix can learn":"Test volume ladders first; any subscription must require clear express consent and easy cancellation.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC324","Company":"Anonymous US peptide brand","Timestamp":"14:16-14:35","Topic":"Business-model migration","What the operator said / what happened":"Agency says its largest client was moving from RUO ecommerce toward telehealth.","What Biologix can learn":"Treat operating-lane optionality as a board-level question, not a cosmetic site change.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous client","Timestamp link":"https://shows.acast.com/theecomshow/episodes/324-budai-media-specials-how-to-scale-your-peptide-brand-so"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"00:30-01:25","Topic":"Latest scale claim","What the operator said / what happened":"The freshest episode describes $600K in one month after six months.","What Biologix can learn":"Use only as an unverified upside case; do not plug into forecasts.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Anonymous and unaudited","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"01:31-03:20","Topic":"Latest channel view","What the operator said / what happened":"Agency now calls Google the strongest acquisition channel; Meta looked attractive but did not scale reliably.","What Biologix can learn":"Test product-intent capture while treating approval and account continuity as uncertain.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Current agency experience, not a guarantee","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"03:20-04:37","Topic":"Campaign structure","What the operator said / what happened":"Sequence remains Shopping, search, then Performance Max, segmented by product and margin.","What Biologix can learn":"Organize reporting around SKU contribution and settled order economics.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"04:37-07:10","Topic":"Optimization discipline","What the operator said / what happened":"Legitimate advice is to change budgets gradually, change one variable at a time, and review landing pages monthly.","What Biologix can learn":"Adopt experiment logs and one-variable decision windows; discard the episode's approval-evasion material.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"07:48-11:22","Topic":"Email and subscription","What the operator said / what happened":"Agency recommends lifecycle and subscription architecture at launch, including preselection.","What Biologix can learn":"Build lifecycle early, but never preselect subscriptions; require clear express consent and visible terms.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"11:33-12:04","Topic":"Campaign threshold","What the operator said / what happened":"Regular campaigns begin after the list reaches hundreds or thousands; SMS remains exploratory.","What Biologix can learn":"Start triggered lifecycle first. Add broadcast cadence only when list size and engagement justify it.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"12:04-14:33","Topic":"Payment instability","What the operator said / what happened":"Agency again stresses documentation and card payments while acknowledging unstable payment approval.","What Biologix can learn":"Processor redundancy, reserve visibility, chargeback controls, and honest underwriting are launch-critical.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"EC325","Company":"Anonymous US peptide brand","Timestamp":"14:33-15:15","Topic":"Exit-quality warning","What the operator said / what happened":"Agency calls RUO ecommerce a near-term window and doubts easy eight- or nine-figure exits.","What Biologix can learn":"Optimize for durable customer data, creator relationships, proof systems, and optionality, not only near-term gross sales.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Freshest strategic observation","Timestamp link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Source ID":"REM","Company":"Remedora","Timestamp":"00:31-04:45","Topic":"Prior scale claims","What the operator said / what happened":"Coy describes ecommerce, SEO, affiliate experience, and large revenue in earlier insurance businesses, not Remedora.","What Biologix can learn":"Do not transfer a founder's prior-company scale into the new company's traction.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Prior business only","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=31s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"06:15-08:01","Topic":"Concentration shock","What the operator said / what happened":"He says a CMS change collapsed daily ACA call volume from 10K-12K to about 400.","What Biologix can learn":"Model policy and channel concentration as existential risks even when current economics look exceptional.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Historical founder account","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=375s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"12:30-13:45","Topic":"Networking system","What the operator said / what happened":"Coy says he spends two to three hours daily on relationships and used the network to identify telehealth demand.","What Biologix can learn":"Make operator, lab, processor, creator, and partner relationships a scheduled founder channel.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=750s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"16:45-17:30","Topic":"Market entry","What the operator said / what happened":"He entered telehealth through affiliate sales and prior subscription-commerce experience.","What Biologix can learn":"Learn the demand and operating graph before trying to own every layer.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=1005s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"22:01-23:45","Topic":"Platform thesis","What the operator said / what happened":"Remedora was conceived as a Shopify-like launch layer for telehealth.","What Biologix can learn":"Shared infrastructure can turn one brand experiment into a portfolio capability, but product claims require verification.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=1321s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"26:55-30:15","Topic":"Vertical integration","What the operator said / what happened":"The founder discusses pharmacy acquisition and integration, without proof a transaction occurred.","What Biologix can learn":"Integrate only where control and economics justify capital, licensing, and operational risk.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Future or exploratory claim","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=1615s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"31:45-35:52","Topic":"Cohort economics","What the operator said / what happened":"He says clients often lose money in months one and two, making retention and LTV decisive.","What Biologix can learn":"Track contribution by acquisition month through second and third purchases, not first-order ROAS.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Private cohort claim","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=1905s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"35:52-38:31","Topic":"Retatrutide compounding","What the operator said / what happened":"The episode discusses possible compounding pathways.","What Biologix can learn":"Discard this section for current planning; FDA now says retatrutide cannot be used in compounding under federal law.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Outdated and superseded","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=2152s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"40:30-42:45","Topic":"Offer","What the operator said / what happened":"Episode price was $200 monthly plus certification-related costs.","What Biologix can learn":"Treat platform pricing as only one line item; verify payment, provider, pharmacy, support, and state costs.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=2430s"},{"Source ID":"REM","Company":"Remedora","Timestamp":"47:30-52:15","Topic":"Founder-led sales","What the operator said / what happened":"Networking, conferences, access, and credible proof artifacts drive sales.","What Biologix can learn":"Pair relationship selling with auditable artifacts and a repeatable follow-up system.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=1qgxkaPcq4k&t=2850s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"00:45-01:00","Topic":"Founding niche","What the operator said / what happened":"The company was founded by two Houston-area firefighters.","What Biologix can learn":"A real occupational identity can create trust and a dense initial community.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=45s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"03:15-05:00","Topic":"Speed to launch","What the operator said / what happened":"They describe moving quickly from supplier research to a live website.","What Biologix can learn":"Speed is useful only after supplier, testing, payment, and inventory gates are real.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=195s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"06:45-07:30","Topic":"Audience wedge","What the operator said / what happened":"First responders are the initial niche; founder transparency and accessible education are the differentiation.","What Biologix can learn":"Start with an audience that can recognize and refer the founders.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=405s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"14:45-16:32","Topic":"Sourcing","What the operator said / what happened":"They acknowledge mixed sourcing and express a goal of more US-synthesized supply.","What Biologix can learn":"Publish precise, product-specific sourcing and test scope; aspirations are not present facts.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Self-reported","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=885s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"17:30-18:15","Topic":"Trust response","What the operator said / what happened":"Visible founders and COAs are their answer to the scam objection.","What Biologix can learn":"Put real people beside verifiable batch proof, while making the limits of each proof clear.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=1050s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"18:15-20:45","Topic":"Payment loss","What the operator said / what happened":"Early card-processing failures allegedly caused at least six abandoned orders when buyers encountered cryptocurrency.","What Biologix can learn":"Do not launch creator traffic until the primary and backup checkout rails have been tested end to end.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Founder-reported","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=1095s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"35:45-37:16","Topic":"Supplier loss","What the operator said / what happened":"They say a supplier completed a small trial order and vanished after a roughly $700 larger order.","What Biologix can learn":"Use staged purchase orders, counterparty verification, retention samples, and acceptance criteria.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=2145s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"38:16-39:15","Topic":"Founder acquisition","What the operator said / what happened":"Founder-face TikTok and podcasts are the main early channels.","What Biologix can learn":"In a low-trust category, access and candor can outperform polished anonymous branding.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=2296s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"40:00-42:15","Topic":"Oversell recovery","What the operator said / what happened":"An inventory error oversold a bundle; founders called buyers, substituted inventory, and promised the missing item later.","What Biologix can learn":"Synchronize saleable inventory, define substitutions, and proactively own service failures.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=2400s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"42:30-43:15","Topic":"Attribution","What the operator said / what happened":"A podcast-specific discount code was created.","What Biologix can learn":"Give every creator and appearance a source ID, code, landing page, and cohort.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=2550s"},{"Source ID":"REDLINE","Company":"Redline Biolabs","Timestamp":"43:45-47:15","Topic":"Early service","What the operator said / what happened":"Fast replies and proactive stock updates are treated as an early advantage.","What Biologix can learn":"Turn founder responsiveness into documented SLAs and escalation paths before it becomes unsustainable.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.youtube.com/watch?v=JQSJYACbOCU&t=2625s"},{"Source ID":"BIOLONG","Company":"BioLongevity Labs","Timestamp":"01:05:55-01:06:19","Topic":"Ambition","What the operator said / what happened":"Jay says the two-month-old business aimed to become the largest research-peptide and bioregulator seller within 12-15 months.","What Biologix can learn":"Separate ambition from evidence. Demand proof is revenue, repeat behavior, and contribution, not a stated goal.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Historical and unverified","Timestamp link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/"},{"Source ID":"BIOLONG","Company":"BioLongevity Labs","Timestamp":"01:06:19-01:06:58","Topic":"Future format","What the operator said / what happened":"He describes future pen-format products from a California facility.","What Biologix can learn":"Do not repeat planned product formats as delivered traction.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Current catalog check found no pens","Timestamp link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/"},{"Source ID":"BIOLONG","Company":"BioLongevity Labs","Timestamp":"01:06:58-01:07:27","Topic":"Audience leverage","What the operator said / what happened":"Founder claims an existing 650-member paid education community and multiple courses.","What Biologix can learn":"An owned, paying knowledge community can lower launch friction, but verify engagement and buyer overlap.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unaudited","Timestamp link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/"},{"Source ID":"BIOLONG","Company":"BioLongevity Labs","Timestamp":"01:07:27 onward","Topic":"Education centerpiece","What the operator said / what happened":"BioLongevity is described as the commercial centerpiece of a broader education ecosystem.","What Biologix can learn":"Build media and research content as a durable discovery layer, while keeping human-use guidance out of RUO commerce.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"01:33-02:48","Topic":"Launch demand","What the operator said / what happened":"The female-focused launch expected roughly 1,000 applicants and claimed about 16,000.","What Biologix can learn":"A sharp female front can unlock latent demand, but applicant volume is not the same as paid retention.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Founder-reported","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"04:06-06:37","Topic":"Founder insight","What the operator said / what happened":"Olivia's long diagnosis journey produced the founding insight.","What Biologix can learn":"Use lived experience to shape questions and service language, not to substitute for expertise.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"08:03-09:24","Topic":"Seriousness signal","What the operator said / what happened":"Mandatory testing is used to frame the problem as biological, not cosmetic.","What Biologix can learn":"Visible friction can signal seriousness only when it is genuinely necessary, useful, and expertly governed.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"09:34-12:37","Topic":"Role clarity","What the operator said / what happened":"The founders explicitly are not clinicians. Clinical decisions belong to GPs, nurses, labs, and pharmacies; founders own communication and support.","What Biologix can learn":"Make founder, expert, lab, supplier, and service responsibilities visible instead of blending authority.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"12:37-18:22","Topic":"Shareable education","What the operator said / what happened":"A first-box QR booklet contains short explainers and shareable resources.","What Biologix can learn":"Turn lot records, test explanations, and research literacy into portable, shareable trust objects.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"18:53-22:28","Topic":"Continuity","What the operator said / what happened":"Weekly check-ins and monthly reviews create reassurance.","What Biologix can learn":"Design a consistent post-purchase information and support rhythm without drifting into personal-use guidance.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"23:14-24:54","Topic":"Channel mix","What the operator said / what happened":"Acquisition spans Meta, Google, Reddit, Pinterest, founder recipes, and customer stories.","What Biologix can learn":"Diversify discovery and measure each path separately; do not rely on a single platform.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"25:27-26:22","Topic":"Brand testing","What the operator said / what happened":"The initial bright visual direction underperformed; conversion testing moved the brand toward muted colors.","What Biologix can learn":"Let the actual buyer's conversion and qualitative response shape tone, not founder taste.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"26:29","Topic":"Buyer mismatch","What the operator said / what happened":"Most customers were 35-55, older than the founders.","What Biologix can learn":"Research the buyer's life stage, trust needs, language, and visual preferences directly.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"SHEMED","Company":"SheMed","Timestamp":"27:22-28:48","Topic":"Pre-scale learning","What the operator said / what happened":"Research, community conversations, conferences, advisors, mentors, and team quality preceded scale.","What Biologix can learn":"Schedule customer and operator learning before each growth gate.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"05:56-08:40","Topic":"Product idea","What the operator said / what happened":"The founder wanted something effective, understandable, and visually desirable for a common frustration.","What Biologix can learn":"Commodity products gain meaning through a legible problem and desirable brand world.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"08:40-10:54","Topic":"Narrow start","What the operator said / what happened":"Arrae began with two common problems rather than a broad catalog.","What Biologix can learn":"Start with enough assortment to prove the category thesis, not enough to maximize SKU count.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"12:06-13:39","Topic":"Build order","What the operator said / what happened":"Sequence was trusted formulator, workable manufacturer and MOQ, then brand.","What Biologix can learn":"Lock quality and supply constraints before scaling creative promises.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"13:39-15:14","Topic":"Focus","What the operator said / what happened":"The team asks for the single next action most likely to move the business.","What Biologix can learn":"Run a weekly constraint review and force one primary growth or operations priority.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"15:45-16:21","Topic":"Soft launch","What the operator said / what happened":"A small community tested pricing, MVP, and messaging before a wider launch.","What Biologix can learn":"Use a controlled creator/customer cohort to validate trust, price, and operations.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"17:27-18:50","Topic":"Creator seeding","What the operator said / what happened":"With no influencer budget, founders gifted broadly with no posting obligation; one organic post triggered a wider chain.","What Biologix can learn":"Separate honest seeding from paid deliverables and track organic advocates.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"18:51-19:38","Topic":"Promote affection","What the operator said / what happened":"Early revenue funded paid relationships with creators who had already shown genuine interest; only five or six major year-long partners were maintained.","What Biologix can learn":"Move proven organic advocates into durable paid partnerships rather than renting a large one-off roster.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"19:38-23:25","Topic":"Repeated support","What the operator said / what happened":"Several creator relationships lasted roughly three years, making recommendations more credible.","What Biologix can learn":"Reward continuity, content quality, and cohort retention, not only last-click revenue.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"23:26-26:10","Topic":"Customer-as-creator","What the operator said / what happened":"Customers received premium mailers and artifacts comparable to influencers, encouraging sharing.","What Biologix can learn":"Design every fulfilled order as a creator-ready proof and story kit.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"26:16-29:35","Topic":"Brand personality","What the operator said / what happened":"Ordinary customers are creators; brand social should behave like a person rather than a product grid.","What Biologix can learn":"Build recognizable recurring editorial formats and a human voice.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"27:34-28:05","Topic":"Channel ownership","What the operator said / what happened":"An early TikTok went viral, but the small team deprioritized it and later had to rebuild.","What Biologix can learn":"Assign a named owner to any channel showing organic pull.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"30:33-33:53","Topic":"Capital timing","What the operator said / what happened":"The company raised after traction; money went to inventory, people, larger POs, and working capital.","What Biologix can learn":"Use capital to relieve proven constraints, not to manufacture demand.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"ARRAE","Company":"Arrae","Timestamp":"34:28-35:50","Topic":"Founder division","What the operator said / what happened":"Siffat owns brand, community, voice, and email; Nish owns paid media, site optimization, CAC, LTV, AOV, subscription, and finance.","What Biologix can learn":"Pair brand authority with an equally empowered unit-economics operator.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"01:03-01:35","Topic":"Taxonomy","What the operator said / what happened":"Products follow distinct hormonal and life stages, with medical experts informing formulation and education.","What Biologix can learn":"Organize discovery around understandable needs or research objectives, while keeping claims inside the actual operating lane.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"02:23-10:53","Topic":"Complementary founders","What the operator said / what happened":"Founder-market fit combines editorial brand experience, personal experience, and expert cofounders.","What Biologix can learn":"Build a leadership triangle across brand, operating economics, and technical authority.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"11:27-13:16","Topic":"Commodity differentiation","What the operator said / what happened":"Entering a crowded category required a rigorous brand book, distinct values, voice, identity, and visual language.","What Biologix can learn":"Brand must change recognition, trust, and willingness to return, not merely recolor a vial.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"13:17-14:43","Topic":"Unique capability","What the operator said / what happened":"The forcing question was, 'What can only we do?' Their answer was expert editorial content and community.","What Biologix can learn":"Define a proprietary trust and distribution system competitors cannot copy by swapping packaging.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"14:43-15:49","Topic":"Long creator arc","What the operator said / what happened":"Creator relationships follow real life-stage journeys; subscriptions advance customers between trimester products.","What Biologix can learn":"Use long narrative arcs and lifecycle states, while never turning an RUO journey into personal-use advice.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"15:51-17:22","Topic":"Scrappy launch","What the operator said / what happened":"First-year marketing was about $10K; events, seeding, surprise-and-delight, and credibility-bearing partners carried launch.","What Biologix can learn":"Use controlled seeding and high-touch proof before expensive reach.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"17:48-18:30","Topic":"Message order","What the operator said / what happened":"Early messaging emphasized what the brand was, why it was trustworthy, and how the system worked; paid amplification followed.","What Biologix can learn":"Solve comprehension and trust before buying scale.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"18:31-19:35","Topic":"Creator cohorts","What the operator said / what happened":"Creator relationships are separated by awareness/reach versus conversion objectives.","What Biologix can learn":"Define KPI, compensation, attribution window, and content role for each creator cohort.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"19:35-20:30","Topic":"Word of mouth","What the operator said / what happened":"Affiliate, targeted gifting, events, and customer surprise-and-delight reinforce one another.","What Biologix can learn":"Design creator, customer, and community programs as one referral system.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"20:56-21:34","Topic":"Capital caution","What the operator said / what happened":"Founders warn against excessive capital and unrealistic valuations.","What Biologix can learn":"Preserve strategic freedom until repeat behavior and unit economics are clear.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"21:47-24:01","Topic":"Assortment thesis","What the operator said / what happened":"Five launch SKUs and 2,500-unit MOQs were needed to prove the life-stage system; they bootstrapped and used a friends-and-family SAFE.","What Biologix can learn":"Every launch SKU must prove the positioning or increase basket logic, not simply make the store look large.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"24:37-25:28","Topic":"Operational reach","What the operator said / what happened":"Strong content and gifting helped a small team ship to all 50 states within 30 days.","What Biologix can learn":"Content can create demand quickly; fulfillment readiness must precede reach.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"28:40-30:32","Topic":"Personal runway","What the operator said / what happened":"One founder consulted before launch and for almost a year after to preserve personal runway.","What Biologix can learn":"Protect founder runway so early decisions are not forced by short-term cash pressure.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"PERELEL","Company":"Perelel","Timestamp":"32:04-33:39","Topic":"Peer network","What the operator said / what happened":"Peer founders at comparable stages supplied talent, consultants, and practical support.","What Biologix can learn":"Build a same-stage operator council for current answers, not only advice from giant incumbents.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"13:10-16:40","Topic":"Problem community","What the operator said / what happened":"The founder's own experience and conversations with women exposed an underserved gut-health community.","What Biologix can learn":"Use problem communities as listening systems before choosing the brand promise.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"17:09-18:41","Topic":"Product iteration","What the operator said / what happened":"Founder, food scientists, and dietitian iterated for months before choosing a portable format.","What Biologix can learn":"Prototype the product and evidence experience before scaling the brand shell.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"18:43-20:15","Topic":"Community acquisition","What the operator said / what happened":"Katie says she bought 20 Facebook groups totaling about 500K members.","What Biologix can learn":"The useful lesson is access to dense conversation, not covert community control. Use transparent participation and compliant research.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Acquisition and membership totals unverified","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"20:27-23:23","Topic":"Low-cost validation","What the operator said / what happened":"Home-kitchen production, a basic Shopify site, a retained day job, and Facebook communities powered early growth.","What Biologix can learn":"Keep the MVP bounded and learn rapidly before adding fixed cost.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"27:32-31:18","Topic":"False PMF","What the operator said / what happened":"A narrow problem community made product-market fit look broader than it was; the first identity was too illness-centered and required a rebrand.","What Biologix can learn":"Do not confuse dense niche enthusiasm with a scalable category or a durable name.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"32:08-33:31","Topic":"Retail pull","What the operator said / what happened":"Distinctive packaging and narrative attracted retail buyers, but early expansion was opportunistic.","What Biologix can learn":"Channel interest is not proof of sell-through. Validate consumer, price, and shelf context.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"34:04-35:33","Topic":"Format risk","What the operator said / what happened":"A hot category did not guarantee the chosen format or aisle matched consumer intent.","What Biologix can learn":"Test channel, format, price, and audience as separate hypotheses.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"36:02-39:57","Topic":"Founder fieldwork","What the operator said / what happened":"Katie personally stocked and inspected stores; Target exposed pricing, merchandising, and audience mismatch.","What Biologix can learn":"Stay physically and analytically close to the buying surface.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"40:07-43:59","Topic":"Repositioning","What the operator said / what happened":"A year of R&D supported a move from sickness-framed bars toward aspirational fiber wellness.","What Biologix can learn":"A narrow wedge can open the door, but the scalable category may need a more aspirational identity.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"44:04-47:33","Topic":"Channel-first launch","What the operator said / what happened":"Powders launched into 1,100 Walmart stores before DTC, initially with two SKUs.","What Biologix can learn":"A focused assortment can be enough if the format and channel are validated.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"47:34-49:10","Topic":"Founder complement","What the operator said / what happened":"The founder describes relentless asking and doubling down; cofounders balance that intensity.","What Biologix can learn":"Pair aggressive distribution instinct with operating and evidence discipline.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"49:11-50:35","Topic":"Ownable format","What the operator said / what happened":"A customer interaction video allegedly sold Walmart out, leading to permission for continued filming.","What Biologix can learn":"Create a recurring format competitors cannot easily impersonate; obtain consent and verify impact.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Sellout and reach are company-reported","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"50:36-51:29","Topic":"Creative volume","What the operator said / what happened":"Katie cleared 75 days, filmed thousands of interactions, and studied drop-off, likes, and reposts.","What Biologix can learn":"Treat content as an instrumented production system, not occasional inspiration.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"51:30-53:47","Topic":"Research flywheel","What the operator said / what happened":"Content production created hundreds of direct customer and employee conversations.","What Biologix can learn":"Make creator production double as structured qualitative research.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"BELLI","Company":"BelliWelli","Timestamp":"54:39-54:54","Topic":"Context fit","What the operator said / what happened":"Founder admits the provocative early concept did not belong in every context.","What Biologix can learn":"Use sharp language selectively and test reputational spillover before making it the master brand.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/former-matchmaker-turned-ceo-how-katie-wilson-bought/id1484646914?i=1000714873422"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"43:41-44:58","Topic":"Wedge to platform","What the operator said / what happened":"Mochi did not predict the GLP-1 wave; it began with an obesity-care gap and evolved toward a marketplace.","What Biologix can learn":"Win a narrow problem before expanding into broad infrastructure.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"45:02-45:20","Topic":"Network claim","What the operator said / what happened":"Founder claims more than 500 providers and around 100 pharmacies in the software ecosystem.","What Biologix can learn":"Network breadth is useful only if choice, service, and data actually work; require definitions and active counts.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Current company article says 450+ providers","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"48:11-50:19","Topic":"Regulatory interpretation","What the operator said / what happened":"Founder explains compounding distinctions and marketing disputes.","What Biologix can learn":"Treat as founder perspective, not legal guidance; use current primary sources for decisions.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Rapidly changing","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"52:41-54:03","Topic":"Trust proposition","What the operator said / what happened":"Real video visits, the same provider over time, formulary choice, and transparent cash pricing are the core differentiators.","What Biologix can learn":"Continuity, choice, and transparent pricing are durable trust mechanics even outside clinical care.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"54:54-56:28","Topic":"Competitor criticism","What the operator said / what happened":"Founder criticizes a competitor's provider flow and incentives.","What Biologix can learn":"Do not repeat competitor assertions without independent verification.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Unverified opinion","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"57:17-57:32","Topic":"Founder tradeoff","What the operator said / what happened":"The founder left conventional medicine to build a system with broader reach.","What Biologix can learn":"Mission can justify difficult operating choices, but measurable service outcomes must follow.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"57:55-60:28","Topic":"Gray-market comparison","What the operator said / what happened":"The founder discusses rising peptide interest and broad safety differences between channels.","What Biologix can learn":"Do not treat categorical founder opinions as proof of any specific seller's quality.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"Opinion","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"60:28-61:58","Topic":"Testing bottleneck","What the operator said / what happened":"Pharmacy vetting and third-party testing capacity are framed as major bottlenecks.","What Biologix can learn":"Secure test throughput, release SLAs, exception handling, and auditability before scaling inventory.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"61:58-62:14","Topic":"Build versus buy","What the operator said / what happened":"At recording, Mochi had invested in a testing company rather than immediately building peptide production.","What Biologix can learn":"Own or partner around the highest-control bottleneck before vertically integrating manufacturing.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"63:18-63:33","Topic":"Future option","What the operator said / what happened":"Peptide expansion remained a future option at recording.","What Biologix can learn":"Track what was planned versus what shipped; Mochi launched a longevity offer after the episode.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"64:02-64:10","Topic":"Audience scope","What the operator said / what happened":"Founder says the target is ordinary Americans, not only elite biohackers.","What Biologix can learn":"Translate technical trust for mainstream buyers without making unsupported outcome claims.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"67:00-67:27","Topic":"Category fragmentation","What the operator said / what happened":"Peptides are described as a collection of mechanisms and use cases, not one coherent category.","What Biologix can learn":"Avoid treating the catalog as one audience; build separate discovery and education paths.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"},{"Source ID":"MOCHI","Company":"Mochi Health","Timestamp":"67:27-68:03","Topic":"Capital discipline","What the operator said / what happened":"Minimal outside funding is positioned as protection from investor-driven audience bias.","What Biologix can learn":"Choose capital that preserves the customer thesis and operating discipline.","Evidence class":"D - Founder, guest, show, or agency claim","Freshness note":"From episode; verify before acting","Timestamp link":"https://podcasts.apple.com/us/podcast/inside-the-peptide-craze-myra-ahmad-ceo-of-mochi/id1774403992?i=1000764115940"}],"claims":[{"Claim ID":"CL-001","Company":"Joi + Blokes","Claim to evaluate":"More than $50M in revenue and essentially bootstrapped","Where it came from":"Founder interview and Entrepreneur","Verification status":"Reported, not audited","Current finding at 2026-07-26":"Entrepreneur repeated management's number; revenue period and definition remain unclear.","Evidence class":"B - Independent media or directory","Confidence (0-5)":2,"Decision impact":"Useful proof of possibility, not a forecast or valuation input.","Verification link":"https://www.entrepreneur.com/building-a-business/they-built-a-50-million-business-before-glp-1s-became-mainstream-now-theyre-eyeing-this-new-health-frontier"},{"Claim ID":"CL-002","Company":"Joi + Blokes","Claim to evaluate":"Joi is the stronger growth engine and women bring male partners into Blokes","Where it came from":"Founder interview","Verification status":"Founder-reported","Current finding at 2026-07-26":"Architecture is directly visible; relative engine strength and referral behavior are not public metrics.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":3,"Decision impact":"Supports female-leading flagship plus shared backend, but measure it in Alex's cohorts.","Verification link":"https://www.youtube.com/watch?v=aigF8IfN4Is&t=2046s"},{"Claim ID":"CL-003","Company":"Joi + Blokes","Claim to evaluate":"100K-patient footprint and fertility expansion","Where it came from":"Company announcements","Verification status":"Company-reported; expansion verified","Current finding at 2026-07-26":"HerMD acquisition and fertility leadership are public; patient count is not audited.","Evidence class":"C - Company-controlled source","Confidence (0-5)":3,"Decision impact":"Shows a path from focused fronts into adjacent life-stage services.","Verification link":"https://www.businesswire.com/news/home/20260325782751/en/Joi-Blokes-Expands-Platform-with-Fertility-Division-Led-by-Serial-Founder-Gina-Bartasi"},{"Claim ID":"CL-004","Company":"Peptira","Claim to evaluate":"Business began 2025-06-02","Where it came from":"BBB business profile","Verification status":"Corroborated","Current finding at 2026-07-26":"BBB lists start date, LLC, and Benjamin Criss as contact/agent.","Evidence class":"B - Independent media or directory","Confidence (0-5)":4,"Decision impact":"Confirms this is a genuinely young operator.","Verification link":"https://www.bbb.org/us/ne/chadron/profile/biological-products/peptira-llc-0714-1000080859"},{"Claim ID":"CL-005","Company":"Peptira","Claim to evaluate":"Top-15 US peptide company","Where it came from":"Founder interview","Verification status":"Unsupported","Current finding at 2026-07-26":"No independent ranking, revenue, traffic, or customer evidence was found.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":1,"Decision impact":"Ignore in competitor sizing.","Verification link":"https://www.youtube.com/watch?v=Be58yiS6Vs4&t=1371s"},{"Claim ID":"CL-006","Company":"Peptira","Claim to evaluate":"Automatic replacement for lost shipments","Where it came from":"Founder interview","Verification status":"Outdated / contradicted","Current finding at 2026-07-26":"Live terms make delivered packages the customer risk, require evidence, and make remedies discretionary.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Policies outrank interviews; never make service promises that terms and operations do not support.","Verification link":"https://peptira.com/shipping-protection-terms/"},{"Claim ID":"CL-007","Company":"Peptira","Claim to evaluate":"RETA10-007 has a published third-party report","Where it came from":"Company COA library","Verification status":"Historical document confirmed; custody not verified","Current finding at 2026-07-26":"Peptira now marks RETA10-007 historical and RETA10-008 currently shipping. The historical Freedom Diagnostics report covers three submitted vials; sampling independence and inventory-wide representativeness remain unknown.","Evidence class":"C - Company-controlled source","Confidence (0-5)":4,"Decision impact":"Use batch reports, but label current versus historical and exactly what each report does and does not prove.","Verification link":"https://drive.google.com/file/d/1i1tRAVLwnyypFHdKrg7SdBR7JsSk3Jj6/view?usp=drive_link"},{"Claim ID":"CL-008","Company":"Peptide Price","Claim to evaluate":"Community grew beyond the episode's 7,300 members","Where it came from":"Live Skool page","Verification status":"Company-page observation","Current finding at 2026-07-26":"Live community displayed roughly 11.8K members and $10/month at check.","Evidence class":"C - Company-controlled source","Confidence (0-5)":4,"Decision impact":"Comparison plus paid community is a durable discovery model.","Verification link":"https://www.skool.com/peptide-price-9771/nooby-here"},{"Claim ID":"CL-009","Company":"Transcend","Claim to evaluate":"Ernest Colling remains the current owner/CEO","Where it came from":"Old podcast and lingering profiles","Verification status":"Outdated","Current finding at 2026-07-26":"Transcend introduced Lance Converse as new owner in March 2026; provider structure changed after December 2025.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Do not use old founder interviews as present-company authority.","Verification link":"https://www.linkedin.com/posts/transcendcompany_introducing-lance-converse-hes-stepping-activity-7443352442169090048-o66M"},{"Claim ID":"CL-010","Company":"Transcend","Claim to evaluate":"Creator scale broke support and pharmacy capacity","Where it came from":"Founder interview","Verification status":"Plausible but unaudited","Current finding at 2026-07-26":"Later complaints and provider disruption are consistent with service stress, but they do not prove the founder's exact causation or scale.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":3,"Decision impact":"Capacity-gate creator launches.","Verification link":"https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2226s"},{"Claim ID":"CL-011","Company":"Transcend","Claim to evaluate":"$1.5M foundation impact","Where it came from":"Founder interview","Verification status":"Partly corroborated, amount unverified","Current finding at 2026-07-26":"Public filings confirm the nonprofit and Colling role, not the dollar value.","Evidence class":"A - Public record / regulator / court / filing","Confidence (0-5)":2,"Decision impact":"Mission metrics need auditable reporting.","Verification link":"https://projects.propublica.org/nonprofits/organizations/920989536"},{"Claim ID":"CL-012","Company":"Vita Bella","Claim to evaluate":"$129/month membership plus $99 consultation","Where it came from":"Current official site","Verification status":"Current company offer","Current finding at 2026-07-26":"Canonical page confirms base pricing; California is priced separately.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Useful recurring-access reference, not a direct RUO offer template.","Verification link":"https://vitabella.com/membership/"},{"Claim ID":"CL-013","Company":"Vita Bella","Claim to evaluate":"10K+ patients and 15K+ consultations","Where it came from":"Current official homepage","Verification status":"Company-reported","Current finding at 2026-07-26":"Claims are live but unaudited.","Evidence class":"C - Company-controlled source","Confidence (0-5)":3,"Decision impact":"Do not use in sizing without independent evidence.","Verification link":"https://vitabella.com/"},{"Claim ID":"CL-014","Company":"Vita Bella","Claim to evaluate":"State coverage, reviews, price, and delivery claims are fully consistent","Where it came from":"Current site pages","Verification status":"Contradicted internally","Current finding at 2026-07-26":"FAQ, search-indexed legacy pricing, terms, review figures, and delivery responsibility contain inconsistencies.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Create one canonical facts source and audit every surface.","Verification link":"https://vitabella.com/terms/"},{"Claim ID":"CL-015","Company":"Anonymous growth case","Claim to evaluate":"$500K-$600K monthly within five or six months","Where it came from":"Budai Media Ecom Show #320/#324/#325","Verification status":"Anonymous agency claim","Current finding at 2026-07-26":"No client identity, raw store data, processor settlements, or independent verification. Definitions change across episodes.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":2,"Decision impact":"Treat as an upside scenario only.","Verification link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Claim ID":"CL-016","Company":"Anonymous growth case","Claim to evaluate":"Google more scalable than Meta for agency's peptide clients","Where it came from":"Ecom Show #324/#325","Verification status":"Credible report of agency experience","Current finding at 2026-07-26":"Repeated in freshest episode, but not a guarantee of policy approval or account durability.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":4,"Decision impact":"Test high-intent search while diversifying acquisition.","Verification link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Claim ID":"CL-017","Company":"Anonymous growth case","Claim to evaluate":"70-80% gross margin and 1.3-1.4 break-even ROAS","Where it came from":"Agency episode","Verification status":"Unsupported","Current finding at 2026-07-26":"No cost definition; likely omits some testing, chargebacks, reserves, compliance, fulfillment, and account-loss costs.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":1,"Decision impact":"Build bottom-up unit economics instead.","Verification link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Claim ID":"CL-018","Company":"Remedora","Claim to evaluate":"$200/month all-in-one telehealth launch platform","Where it came from":"Current official site","Verification status":"Current company offer","Current finding at 2026-07-26":"Site describes storefront, intake, provider, prescribing, pharmacy, payments, and support. Actual quality/coverage remains unverified.","Evidence class":"C - Company-controlled source","Confidence (0-5)":3,"Decision impact":"Useful partner benchmark; diligence every included function.","Verification link":"https://remedora.com/"},{"Claim ID":"CL-019","Company":"Remedora","Claim to evaluate":"Retatrutide can be compounded in some states","Where it came from":"May 2026 podcast","Verification status":"Outdated / contradicted","Current finding at 2026-07-26":"FDA currently says retatrutide cannot be used in compounding under federal law.","Evidence class":"A - Public record / regulator / court / filing","Confidence (0-5)":5,"Decision impact":"Remove from any current business-model assumption.","Verification link":"https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss"},{"Claim ID":"CL-020","Company":"Redline Biolabs","Claim to evaluate":"Active founder-led store, multiple rails, and COA library","Where it came from":"Current site","Verification status":"Confirmed footprint","Current finding at 2026-07-26":"Store and documents are live; quality, customer count, and scale remain unverified.","Evidence class":"C - Company-controlled source","Confidence (0-5)":4,"Decision impact":"Good day-zero operating analog, not proof of a fast scaler.","Verification link":"https://www.redlinebiolabs.com/lab-reports"},{"Claim ID":"CL-021","Company":"Redline Biolabs","Claim to evaluate":"COA on every batch","Where it came from":"Current site","Verification status":"Internally inconsistent","Current finding at 2026-07-26":"Some pages promise every-batch documentation while another says testing is pending.","Evidence class":"C - Company-controlled source","Confidence (0-5)":4,"Decision impact":"Never let marketing and release state disagree.","Verification link":"https://www.redlinebiolabs.com/lab-reports"},{"Claim ID":"CL-022","Company":"BioLongevity Labs","Claim to evaluate":"650-member paid education community","Where it came from":"2024 founder interview","Verification status":"Unverified historical claim","Current finding at 2026-07-26":"Current media and research library are active, but member count was not independently verified.","Evidence class":"D - Founder, guest, show, or agency claim","Confidence (0-5)":1,"Decision impact":"Education-led demand is useful; scale claim is not.","Verification link":"https://mindpumppodcast.com/2500-weird-performance-enhancing-supplements-that-work-with-jay-campbell/"},{"Claim ID":"CL-023","Company":"BioLongevity Labs","Claim to evaluate":"80+ or 150+ products","Where it came from":"Current company pages","Verification status":"Contradicted internally","Current finding at 2026-07-26":"Site uses both figures while category inspection showed 53 peptide results.","Evidence class":"C - Company-controlled source","Confidence (0-5)":2,"Decision impact":"Catalog count is not traction and inconsistent proof harms trust.","Verification link":"https://biolongevitylabs.com/product-category/peptides/"},{"Claim ID":"CL-024","Company":"SheMed","Claim to evaluate":"100K+ women served and $50M raise","Where it came from":"Company site and independent funding coverage","Verification status":"Scale company-reported; funding reported","Current finding at 2026-07-26":"Funding is reported; patient count remains private and unaudited.","Evidence class":"B - Independent media or directory","Confidence (0-5)":4,"Decision impact":"Strong evidence that female-first is not a small niche.","Verification link":"https://www.mobihealthnews.com/news/shemed-raises-50m-expand-womens-glp-1-weight-management-platform"},{"Claim ID":"CL-025","Company":"SheMed","Claim to evaluate":"Clinical study validates the program","Where it came from":"Company site","Verification status":"Results not yet published","Current finding at 2026-07-26":"Study closed to recruitment and says results are expected in 2026; no published results found by cutoff.","Evidence class":"C - Company-controlled source","Confidence (0-5)":4,"Decision impact":"Never imply findings before publication.","Verification link":"https://www.shemed.co.uk/clinical-study-why"},{"Claim ID":"CL-026","Company":"SheMed / HeMed","Claim to evaluate":"Female front can precede a male sibling on shared infrastructure","Where it came from":"Current company sites and company filing","Verification status":"Visible current architecture","Current finding at 2026-07-26":"HeMed launched in August 2025 using the same stated framework and infrastructure.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Direct support for female-leading first, shared neutral operations, male front later.","Verification link":"https://www.hemed.com/about"},{"Claim ID":"CL-027","Company":"Arrae","Claim to evaluate":"$100M+ cumulative revenue and 1.6M+ units","Where it came from":"Founder/company and Forbes profile","Verification status":"Reported, not audited","Current finding at 2026-07-26":"Retail expansion is observable; private financial totals remain management-reported.","Evidence class":"B - Independent media or directory","Confidence (0-5)":3,"Decision impact":"Creator system is transferable; financials are not planning inputs.","Verification link":"https://www.forbes.com/sites/karineldor/2026/02/18/building-100m-wellness-brand-arrae-siff-haider-on-calculated-risk-and-relentless-standards/"},{"Claim ID":"CL-028","Company":"Perelel","Claim to evaluate":"$27M growth investment","Where it came from":"Company announcement and Fortune","Verification status":"Corroborated","Current finding at 2026-07-26":"Investment and approximate headcount were independently reported; revenue was not disclosed.","Evidence class":"B - Independent media or directory","Confidence (0-5)":5,"Decision impact":"High-confidence current analog for a female-leading identity brand.","Verification link":"https://fortune.com/2025/11/20/perelel-prelude-growth-partners-27-million-beauty-wellness-supplements-women/"},{"Claim ID":"CL-029","Company":"Perelel","Claim to evaluate":"Profitable, doubled annual revenue, category-leading retention","Where it came from":"Company announcement","Verification status":"Company-reported","Current finding at 2026-07-26":"No raw financial or retention data are public.","Evidence class":"C - Company-controlled source","Confidence (0-5)":3,"Decision impact":"Use tactics, not claimed benchmarks.","Verification link":"https://www.prnewswire.com/news-releases/perelel-secures-27m-growth-investment-from-prelude-growth-partners-to-reimagine-womens-health-302622022.html"},{"Claim ID":"CL-030","Company":"BelliWelli","Claim to evaluate":"405% revenue growth and 1B+ content views","Where it came from":"Company and US Chamber coverage","Verification status":"Reported, not audited","Current finding at 2026-07-26":"Current retail presence and $15.4M Series A are corroborated; growth/reach figures remain company-supplied.","Evidence class":"B - Independent media or directory","Confidence (0-5)":3,"Decision impact":"Content system is credible; scale metrics need caution.","Verification link":"https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth"},{"Claim ID":"CL-031","Company":"Mochi Health","Claim to evaluate":"500K+ members, cash-flow positive, minimal funding","Where it came from":"Founder, company, and CEO Today","Verification status":"Reported, not audited","Current finding at 2026-07-26":"Multiple sources repeat the claims but originate with management.","Evidence class":"B - Independent media or directory","Confidence (0-5)":3,"Decision impact":"Useful operating philosophy, not valuation or market-size evidence.","Verification link":"https://www.ceotodaymagazine.com/2026/07/myra-ahmad-cash-flow-positive-mochi-health/"},{"Claim ID":"CL-032","Company":"Mochi Health","Claim to evaluate":"500+ providers","Where it came from":"April 2026 interview","Verification status":"Definition/timing discrepancy","Current finding at 2026-07-26":"A July 2026 company article says 450+ providers. Could reflect active-count definitions or change.","Evidence class":"C - Company-controlled source","Confidence (0-5)":3,"Decision impact":"Define every network metric before reporting it.","Verification link":"https://joinmochi.com/blog/how-mochi-is-building-a-provider-network-that-puts-patients-first"},{"Claim ID":"CL-033","Company":"Mochi Health","Claim to evaluate":"Not selling peptide programs at recording","Where it came from":"April 2026 interview","Verification status":"True then, stale now","Current finding at 2026-07-26":"Current longevity offering markets provider-supervised compounded NAD+ and sermorelin with disclosures.","Evidence class":"C - Company-controlled source","Confidence (0-5)":5,"Decision impact":"Rapidly changing category requires dated snapshots.","Verification link":"https://joinmochi.com/longevity"},{"Claim ID":"CL-034","Company":"Retatrutide","Claim to evaluate":"Available as an approved public medication","Where it came from":"Market chatter and vendor marketing","Verification status":"False as of cutoff","Current finding at 2026-07-26":"Lilly says it remains investigational and not approved by any regulator; BLA planned Q1 2027.","Evidence class":"A - Public record / regulator / court / filing","Confidence (0-5)":5,"Decision impact":"Do not describe it as approved or publicly available medicine.","Verification link":"https://www.lilly.com/news/stories/what-to-know-about-retatrutide"},{"Claim ID":"CL-035","Company":"FDA July peptide vote","Claim to evaluate":"Six peptides became FDA-approved or immediately legal for compounding","Where it came from":"Post-vote social/media summaries","Verification status":"False framing","Current finding at 2026-07-26":"PCAC recommended six of seven for the 503A list. Recommendations are nonbinding and do not equal approval or immediate rule change.","Evidence class":"A - Public record / regulator / court / filing","Confidence (0-5)":5,"Decision impact":"Keep regulatory event and commercial implication separate.","Verification link":"https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026"},{"Claim ID":"CL-036","Company":"RUO disclaimer","Claim to evaluate":"'Research Use Only' controls intended use regardless of surrounding copy","Where it came from":"Common seller assumption","Verification status":"Contradicted by current enforcement","Current finding at 2026-07-26":"FDA's Gram Peptides warning says site evidence established human intended use despite RUO and not-for-human-consumption labels.","Evidence class":"A - Public record / regulator / court / filing","Confidence (0-5)":5,"Decision impact":"Disclaimers cannot rescue contradictory content.","Verification link":"https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026"}],"currentContext":[{"Date":"2026-07-23 to 2026-07-24","Topic":"FDA PCAC peptide votes","What changed":"Advisory panel recommended BPC-157, KPV, TB-500, MOTS-c, Semax, and Epitalon for the 503A Bulks List; Emideltide/DSIP was rejected.","What did NOT change":"The vote was nonbinding. It did not FDA-approve the substances and did not automatically make compounding or consumer sale lawful.","Business implication":"Expect heightened attention and possibly more clinician/compounding competition. Do not treat headlines as an immediate green light.","Evidence class":"A - Public record / regulator / court / filing","Primary / current link":"https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026","Next review":"When FDA posts final action or rulemaking"},{"Date":"2026-07-23","Topic":"Retatrutide Phase 3","What changed":"Lilly reported positive topline TRIUMPH-2 and TRIUMPH-3 results and plans a BLA submission in Q1 2027.","What did NOT change":"Retatrutide remains investigational and is not FDA-approved or generally available from Lilly.","Business implication":"Awareness and demand may accelerate, while manufacturer and regulator scrutiny can rise in parallel.","Evidence class":"A - Public record / regulator / court / filing","Primary / current link":"https://investor.lilly.com/news-releases/news-release-details/lillys-triple-agonist-retatrutide-successful-two-additional","Next review":"Q1 2027 or earlier Lilly/FDA update"},{"Date":"2026-06-15 page update; checked 2026-07-26","Topic":"Retatrutide and compounding","What changed":"FDA now states explicitly that retatrutide and cagrilintide cannot be used in compounding under federal law.","What did NOT change":"The July PCAC meeting concerned seven other substances, not retatrutide.","Business implication":"Discard podcast-era assumptions that state-by-state interpretation creates a retatrutide compounding path.","Evidence class":"A - Public record / regulator / court / filing","Primary / current link":"https://www.fda.gov/drugs/drug-alerts-and-statements/fdas-concerns-unapproved-glp-1-drugs-used-weight-loss","Next review":"Monthly and on any FDA update"},{"Date":"2026-03-31","Topic":"RUO intended-use enforcement","What changed":"FDA warning to Gram Peptides expressly rejected reliance on RUO/not-for-human-consumption labeling where website evidence established human intended use.","What did NOT change":"A disclaimer remains one piece of evidence, not a safe harbor against contradictory copy and context.","Business implication":"Creator scripts, FAQs, PDPs, support, emails, and community language must align with the actual lawful lane.","Evidence class":"A - Public record / regulator / court / filing","Primary / current link":"https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026","Next review":"On each new peptide warning letter"},{"Date":"2026-03-03","Topic":"Telehealth GLP-1 marketing enforcement","What changed":"FDA announced warning letters to 30 telehealth companies concerning allegedly illegal marketing of compounded GLP-1 products.","What did NOT change":"A telehealth wrapper does not automatically make product marketing compliant.","Business implication":"Do not assume migration from ecommerce to telehealth is a branding exercise; it changes licensed, clinical, pharmacy, and advertising obligations.","Evidence class":"A - Public record / regulator / court / filing","Primary / current link":"https://www.fda.gov/news-events/press-announcements/fda-warns-30-telehealth-companies-against-illegal-marketing-compounded-glp-1s","Next review":"Quarterly enforcement review"},{"Date":"2026-07-21","Topic":"Fast-growth agency's latest position","What changed":"Budai Media updated its anonymous case to $600K in a month and said Google scaled more reliably than Meta.","What did NOT change":"The client is still anonymous and the revenue, margin, and attribution claims remain unaudited.","Business implication":"Treat high-intent search and lifecycle as tests, not guaranteed channels or benchmark economics.","Evidence class":"D - Founder, guest, show, or agency claim","Primary / current link":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t","Next review":"Next case update or identified client evidence"},{"Date":"2026-03 to 2026-07","Topic":"Transcend control and provider change","What changed":"Transcend publicly introduced Lance Converse as new owner after a provider transition and active litigation.","What did NOT change":"The 2024 Ernest Colling episode remains useful only as historical founder and scaling context.","Business implication":"Verify current ownership, partners, complaint patterns, and service structure before learning from any old founder podcast.","Evidence class":"C - Company-controlled source","Primary / current link":"https://transcendcompany.com/pages/change-of-provider-letter","Next review":"Monthly until dispute and operating structure stabilize"},{"Date":"Checked 2026-07-26","Topic":"Peptira service-policy drift","What changed":"Live shipping and protection policies make remedies conditional and discretionary after delivery.","What did NOT change":"The episode's service philosophy remains useful, but its automatic-replacement promise is not current.","Business implication":"Maintain a dated promise register and automatically flag policy, support-script, and marketing conflicts.","Evidence class":"C - Company-controlled source","Primary / current link":"https://peptira.com/shipping-protection-terms/","Next review":"Monthly"},{"Date":"2025-12 to 2026-07","Topic":"SheMed scale and sibling architecture","What changed":"A four-month launch story developed into company-reported 100K+ women, reported $50M funding, and a male sibling brand on shared infrastructure.","What did NOT change":"Private user metrics and study outcomes are not independently published.","Business implication":"The female-leading front/shared-backend thesis has a current real-world precedent, but health claims are not transferable to RUO commerce.","Evidence class":"B - Independent media or directory","Primary / current link":"https://www.mobihealthnews.com/news/shemed-raises-50m-expand-womens-glp-1-weight-management-platform","Next review":"When study results publish"},{"Date":"2025-11 to 2026-07","Topic":"Perelel growth investment","What changed":"Perelel secured a confirmed $27M growth investment after five years and continued broadening across women's life stages.","What did NOT change":"The company did not disclose revenue; profitability and retention remain company claims.","Business implication":"Long creator arcs, expert editorial, stage-based taxonomy, and female-leading identity can scale without a female-exclusive catalog.","Evidence class":"B - Independent media or directory","Primary / current link":"https://fortune.com/2025/11/20/perelel-prelude-growth-partners-27-million-beauty-wellness-supplements-women/","Next review":"Next financing, retail, or annual update"},{"Date":"2026-04 to 2026-07","Topic":"Mochi offering changed after interview","What changed":"Mochi said it was not selling the discussed peptide programs at recording, then launched a longevity offering.","What did NOT change":"Private member/provider claims remain unaudited; the offering is provider-supervised and not a template for RUO ecommerce.","Business implication":"Use date-stamped snapshots because product and compliance claims can change within a quarter.","Evidence class":"C - Company-controlled source","Primary / current link":"https://joinmochi.com/longevity","Next review":"Monthly"},{"Date":"Checked 2026-07-26","Topic":"Retail and creator analogs","What changed":"Arrae, BelliWelli, and Perelel all expanded beyond their initial DTC wedge into larger assortments, retail, or life-stage systems.","What did NOT change":"Founder-reported revenue and reach are not audited and do not prove the same tactics transfer to research compounds.","Business implication":"Transfer seeding, cohort design, content systems, taxonomy, and customer research. Do not transfer consumer-use claims.","Evidence class":"I - Analyst inference","Primary / current link":"https://www.uschamber.com/co/good-company/launch-pad/health-startups-community-retail-growth","Next review":"Semiannual"}],"lessons":[{"Domain":"Brand architecture","Lesson":"Launch a female-leading front on a neutral, reusable operating backbone.","Evidence":"Joi + Blokes, SheMed/HeMed, Perelel","Confidence":5,"How to apply":"Let women dominate creators, stories, and default discovery. Keep technical PDPs and shared commerce accessible to male high-intent buyers; reserve a sibling male front if cohort economics justify it.","Priority":"P0 - Foundational","Metric / proof":"Conversion, CAC, AOV, second purchase, contribution, and referral rate by creator/buyer cohort"},{"Domain":"Positioning","Lesson":"Differentiate the meaning and trust system, not merely the molecule or visual palette.","Evidence":"Perelel, Arrae, Joi, Peptira","Confidence":5,"How to apply":"Build a rigorous identity, expert/research literacy, batch transparency, and creator narrative around a commodity catalog.","Priority":"P0 - Foundational","Metric / proof":"Direct traffic, branded search, creator-assisted conversion, price sensitivity, repeat rate"},{"Domain":"Assortment","Lesson":"Use a presumed hero SKU as a hypothesis, not a permanent identity or proven revenue fact.","Evidence":"Joi concentration story, Transcend, Vita Bella, internal Biologix popularity signal","Confidence":4,"How to apply":"Lead with the strongest observed demand signal while measuring product-level settled revenue, contribution, repeat interval, and cross-sell. Keep the company name broader.","Priority":"P0 - Foundational","Metric / proof":"Net revenue and contribution share by SKU; 30/60/90-day repeat by first product"},{"Domain":"Assortment","Lesson":"Launch enough SKUs to prove the thesis, not enough to look impressive.","Evidence":"Arrae, Perelel, BelliWelli, BioLongevity","Confidence":5,"How to apply":"Require every SKU to serve a defined research/customer job, basket logic, or acquisition demand. Add only after test, supply, content, and support readiness.","Priority":"P0 - Foundational","Metric / proof":"Sell-through, stock turns, support rate, margin, and repeat per SKU"},{"Domain":"Trust","Lesson":"Batch-level proof is part of the product.","Evidence":"Peptira, Redline, Mochi, Perelel","Confidence":5,"How to apply":"Expose lot ID, report date, methods, measured content, purity, relevant test scope, current/retired status, and report limitations near the buy decision.","Priority":"P0 - Foundational","Metric / proof":"COA-open rate, conversion after COA view, support objections, lot-to-inventory match rate"},{"Domain":"Trust","Lesson":"A published lab PDF is not the same as independent sampling and chain of custody.","Evidence":"Peptira current report, Vita Bella unsupported competitor tests","Confidence":5,"How to apply":"Document who sampled, sealed, shipped, tested, released, and archived each batch. State what is not verified.","Priority":"P0 - Foundational","Metric / proof":"Percent of saleable inventory with complete custody record; release exceptions"},{"Domain":"Creator system","Lesson":"Seed broadly and honestly, then pay creators who demonstrate authentic pull.","Evidence":"Arrae, Perelel","Confidence":5,"How to apply":"Gift without posting obligation. Track organic mentions and audience quality; promote proven advocates into longer contracts.","Priority":"P0 - Launch","Metric / proof":"Organic post rate, qualified clicks, conversion, 60-day contribution, creator retention"},{"Domain":"Creator system","Lesson":"Separate creator cohorts by job: awareness, trust, conversion, or community research.","Evidence":"Perelel, Arrae, Redline","Confidence":5,"How to apply":"Give each cohort different briefs, compensation, landing pages, attribution windows, and success criteria.","Priority":"P0 - Launch","Metric / proof":"Incremental reach, assisted conversion, direct conversion, cohort contribution, branded search lift"},{"Domain":"Creator system","Lesson":"Long arcs outperform rotating one-off endorsements in trust-heavy categories.","Evidence":"Arrae, Perelel, Joi","Confidence":4,"How to apply":"Favor repeated, clearly disclosed relationships with continuity and evolving education.","Priority":"P1 - Scale","Metric / proof":"Repeat content performance, creator cohort retention, direct traffic, referral rate"},{"Domain":"Creator system","Lesson":"Do not reward larger stacks or first-order spend.","Evidence":"Vita Bella creator-incentive critique; compliance risk","Confidence":5,"How to apply":"Pay on qualified settled customers, compliant content, low refund/chargeback rate, and retained contribution.","Priority":"P0 - Launch","Metric / proof":"Net contribution at 60/90 days, refund and chargeback rate by creator"},{"Domain":"Content","Lesson":"Make creator production double as structured customer research.","Evidence":"BelliWelli, SheMed, Peptide Price","Confidence":5,"How to apply":"Code comments, objections, search terms, watch-drop points, support tickets, and post-purchase questions into a weekly insight log.","Priority":"P0 - Launch","Metric / proof":"Insights logged, experiments launched, conversion/support impact"},{"Domain":"Content","Lesson":"Own a repeatable editorial format, not a feed of isolated product shots.","Evidence":"BelliWelli, Arrae, Perelel","Confidence":5,"How to apply":"Create recurring proof, founder, lab, lot, creator, and category-literacy formats with a named owner.","Priority":"P1 - Scale","Metric / proof":"Completion rate, saves, shares, branded search, returning visitors"},{"Domain":"Acquisition","Lesson":"Capture existing product-name intent before broad interruption advertising.","Evidence":"Ecom Show #320/#324/#325","Confidence":3,"How to apply":"If eligible and approved, test high-intent search/Shopping with product and margin segmentation; reconcile platform attribution to settled orders.","Priority":"P1 - Conditional","Metric / proof":"Settled contribution per query/SKU, not platform ROAS alone"},{"Domain":"Acquisition","Lesson":"Budget a bounded learning period with stopping rules.","Evidence":"Ecom #320, Remedora","Confidence":4,"How to apply":"Predefine spend caps, signal thresholds, variables, decision windows, and kill/scale criteria.","Priority":"P0 - Launch","Metric / proof":"Experiment decision latency and percentage of tests with prewritten criteria"},{"Domain":"Lifecycle","Lesson":"Triggered lifecycle belongs near launch, but attribution must be incremental.","Evidence":"Ecom #320/#324/#325, Arrae, Vita Bella","Confidence":4,"How to apply":"Build welcome, abandonment, post-purchase, VIP, winback, and lawful replenishment flows; test holdouts where possible.","Priority":"P0 - Launch","Metric / proof":"Incremental conversion/repeat lift, unsubscribe, complaint, and deliverability"},{"Domain":"Data","Lesson":"Own the event and identity graph because vendors can close accounts.","Evidence":"Peptide Price TikTok bans, Ecom email shutdowns, payment instability","Confidence":5,"How to apply":"Track creator -> click -> order -> settlement -> fulfillment -> support -> repeat -> payout; export customer and event data continuously.","Priority":"P0 - Foundational","Metric / proof":"Event completeness, export freshness, restore-time test, unmatched-order rate"},{"Domain":"Data","Lesson":"First-order ROAS is not the business.","Evidence":"Remedora, Ecom case, Arrae operator split","Confidence":5,"How to apply":"Use settled contribution cohorts through 30/60/90 days, including refunds, chargebacks, reserves, testing, fulfillment, discounts, and creator payouts.","Priority":"P0 - Foundational","Metric / proof":"Contribution margin per visitor/customer by cohort and source"},{"Domain":"Operations","Lesson":"Capacity-gate creators before demand arrives.","Evidence":"Transcend, Peptira, Redline, Perelel","Confidence":5,"How to apply":"Require green status for saleable inventory, batch release, checkout, support staffing, fulfillment SLA, and exception ownership before each launch wave.","Priority":"P0 - Launch","Metric / proof":"Stockout, oversell, ship time, first response, resolution time, payment failure"},{"Domain":"Operations","Lesson":"Founder service seeds trust but does not scale by itself.","Evidence":"Peptira, Redline","Confidence":5,"How to apply":"Capture founder replies into macros, SOPs, escalation rules, and a staffed ticket system while founders remain visible on hard cases.","Priority":"P0 - Launch","Metric / proof":"Founder-handled share, first response, reopen rate, escalation rate"},{"Domain":"Operations","Lesson":"Policies, marketing, support scripts, and checkout must share one canonical truth.","Evidence":"Peptira replacement contradiction; Vita Bella state/price/review conflicts; Redline COA conflict","Confidence":5,"How to apply":"Create a dated promise register and automated/manual monthly surface audit.","Priority":"P0 - Foundational","Metric / proof":"Contradictions found, age of last audit, policy-linked support incidents"},{"Domain":"Payments","Lesson":"Payment continuity is a launch dependency, not a back-office detail.","Evidence":"Redline lost checkouts; Ecom case instability","Confidence":5,"How to apply":"Use honest underwriting, tested primary/backup rails, reserve reporting, decline telemetry, chargeback controls, and recovery playbooks.","Priority":"P0 - Foundational","Metric / proof":"Authorization rate, failure rate, reserve, chargebacks, recovery conversion"},{"Domain":"Supply","Lesson":"Use staged supplier commitments and hard release gates.","Evidence":"Redline supplier loss, Peptira test hold, Perelel MOQs","Confidence":5,"How to apply":"Verify counterparty, start with small POs, define specifications/acceptance, retain samples, and prohibit sale before complete release.","Priority":"P0 - Foundational","Metric / proof":"Supplier failure, batch rejection, release lead time, inventory at risk"},{"Domain":"Community","Lesson":"Community is a research loop before it is a promotion channel.","Evidence":"Peptide Price, BelliWelli, Arrae, SheMed","Confidence":5,"How to apply":"Listen transparently, classify objections and requests, and feed them into assortment, proof, content, and support decisions.","Priority":"P1 - Scale","Metric / proof":"Insight-to-experiment rate; member-to-customer and customer-to-referrer paths"},{"Domain":"Pricing","Lesson":"Test same-product volume ladders before opaque bundles or silent subscriptions.","Evidence":"Peptira, Ecom #324, Vita Bella","Confidence":4,"How to apply":"Show unit economics clearly, preserve choice, and require express recurring consent.","Priority":"P1 - Test","Metric / proof":"AOV, contribution, refund, repeat, and support by offer"},{"Domain":"Leadership","Lesson":"Pair brand/culture authority with unit-economics and operations authority.","Evidence":"Arrae, Perelel, Joi","Confidence":5,"How to apply":"Name accountable owners for brand/creator, growth/data, quality/supply, service/fulfillment, and financial control.","Priority":"P0 - Foundational","Metric / proof":"Decision latency, ownerless incidents, weekly scorecard completeness"},{"Domain":"Capital","Lesson":"Raise to relieve proven constraints, not to purchase a narrative.","Evidence":"Arrae, Perelel, Joi, Mochi","Confidence":4,"How to apply":"Tie capital to inventory turns, test capacity, people, working capital, and demonstrated acquisition/retention.","Priority":"P2 - Later","Metric / proof":"Use-of-funds milestones and runway sensitivity"},{"Domain":"Freshness","Lesson":"Founder podcasts are dated snapshots, not current operating truth.","Evidence":"Transcend ownership, Peptira policy, Mochi launch, Vita Bella California, Ecom updates","Confidence":5,"How to apply":"Every source row carries a current-check URL, freshness label, next-review date, and claim classification.","Priority":"P0 - Foundational","Metric / proof":"Percent of decision-critical sources refreshed within review window"},{"Domain":"Strategic risk","Lesson":"Assume platform, processor, supplier, and regulatory concentration can break simultaneously.","Evidence":"Ecom case, Peptide Price, Remedora prior ACA collapse, Transcend","Confidence":5,"How to apply":"Maintain a dependency register, backup plan, trigger, owner, and recovery-time test for every critical external system.","Priority":"P0 - Foundational","Metric / proof":"Single-point dependencies and tested recovery time"},{"Domain":"Operating lane","Lesson":"Do not blend clinical, supplement, and RUO proof or claims.","Evidence":"Joi, SheMed, Mochi, Vita Bella, BioLongevity","Confidence":5,"How to apply":"Separate sites/offers, role descriptions, evidence, support boundaries, and content rules for materially different models.","Priority":"P0 - Foundational","Metric / proof":"Content exceptions, support escalations, claim-review failures"},{"Domain":"Measurement","Lesson":"Run the female-leading thesis as a controlled economic test, not a taste debate.","Evidence":"SheMed visual testing, Joi architecture, Perelel, prior market research","Confidence":5,"How to apply":"Use matched female-leading and technical/general creator cohorts into differentiated landing journeys on shared commerce.","Priority":"P0 - Launch","Metric / proof":"Contribution per visitor, conversion, AOV, repeat, referral, and creative efficiency by cohort"}],"antiLessons":[{"Source / pattern":"Anonymous agency case","Do not copy":"Treating $600K/month, margin, or ROAS claims as a forecast","Why":"No client identity, settlements, raw cohort data, or independent verification","Safer pattern":"Build bottom-up unit economics and use the case only to define hypotheses","Risk level":"Critical"},{"Source / pattern":"Ecom Show #324/#325","Do not copy":"Product renaming, alternate pages, or other platform-approval bypass tactics","Why":"Evasion creates policy, account, legal, and trust exposure","Safer pattern":"Seek explicit eligibility and approval; diversify lawful channels","Risk level":"Critical"},{"Source / pattern":"RUO sellers","Do not copy":"Human-use, reconstitution, mixing, dosing, protocol, or benefit content alongside RUO labels","Why":"Current FDA enforcement looks at surrounding intended-use evidence","Safer pattern":"Limit content to lawful research, testing, lot, documentation, shipping, and support topics","Risk level":"Critical"},{"Source / pattern":"Remedora May 2026","Do not copy":"Planning around retatrutide compounding","Why":"Current FDA statement directly contradicts that assumption","Safer pattern":"Use current primary-source review for every product and operating lane","Risk level":"Critical"},{"Source / pattern":"Peptira","Do not copy":"Automatic replacement, permanent pricing, or extreme response-time promises without durable operations","Why":"Live policy now contradicts the early promise","Safer pattern":"Publish only measured promises backed by the canonical policy","Risk level":"High"},{"Source / pattern":"Peptira / Redline","Do not copy":"Calling a vendor-submitted PDF complete proof of quality","Why":"Sampling, chain of custody, lot coverage, and inventory linkage may be unknown","Safer pattern":"Publish scope and limitations plus a complete custody record","Risk level":"High"},{"Source / pattern":"Transcend","Do not copy":"Scaling creators faster than support, fulfillment, or partner capacity","Why":"Demand can break service and partner continuity","Safer pattern":"Use launch-readiness gates and stop rules","Risk level":"Critical"},{"Source / pattern":"Transcend","Do not copy":"Relying on old founder titles or one practice/pharmacy relationship","Why":"Ownership and provider structure materially changed","Safer pattern":"Verify current control and contract continuity before acting","Risk level":"High"},{"Source / pattern":"Vita Bella","Do not copy":"Competitor-safety accusations without named reports and independent custody","Why":"Claims are hard to defend and can mislead","Safer pattern":"Compete on your own auditable proof","Risk level":"High"},{"Source / pattern":"Vita Bella","Do not copy":"Perfect-review, 24/7, wholesale-price, or rapid-delivery language that conflicts with terms","Why":"Trust collapses when policies and marketing disagree","Safer pattern":"Maintain a canonical promise register and surface audit","Risk level":"High"},{"Source / pattern":"Ecom Show subscription advice","Do not copy":"Preselected subscription or obscured recurring terms","Why":"Consent and cancellation risk plus customer distrust","Safer pattern":"Express choice, electronic confirmation, plain terms, and simple cancellation","Risk level":"Critical"},{"Source / pattern":"Redline","Do not copy":"Launching before payment, live inventory, testing state, refund rules, and service are stable","Why":"It caused abandonment, overselling, and manual recovery","Safer pattern":"Pass an end-to-end launch checklist under load","Risk level":"Critical"},{"Source / pattern":"Redline","Do not copy":"Mixing RUO restrictions with personal-use language in affiliate terms","Why":"Internal contradiction weakens the operating position","Safer pattern":"One reviewed creator policy with monitored scripts and enforcement","Risk level":"Critical"},{"Source / pattern":"BioLongevity","Do not copy":"Treating catalog count or announced formats as traction","Why":"Site counts conflict and proposed pens were not found","Safer pattern":"Report delivered products, current lot state, sell-through, and repeat behavior","Risk level":"Medium"},{"Source / pattern":"BelliWelli","Do not copy":"Covertly acquiring/influencing communities or filming without consent","Why":"Platform, privacy, authenticity, and reputation risk","Safer pattern":"Transparent participation and explicit consent","Risk level":"High"},{"Source / pattern":"BelliWelli","Do not copy":"Assuming niche-community excitement proves mass PMF","Why":"Problem density can overstate addressable demand","Safer pattern":"Validate channel, format, price, and audience separately","Risk level":"High"},{"Source / pattern":"Arrae","Do not copy":"One-off creators who rotate through competing products","Why":"Audience trust and learning continuity stay weak","Safer pattern":"Promote organic advocates into long-term, disclosed relationships","Risk level":"Medium"},{"Source / pattern":"Perelel / SheMed / Mochi","Do not copy":"Clinical, doctor-recommended, study, or patient-outcome language into RUO ecommerce","Why":"The proof and licensed infrastructure are category-specific","Safer pattern":"Transfer operating tactics, not clinical authority or claims","Risk level":"Critical"},{"Source / pattern":"All founder podcasts","Do not copy":"Repeating founder revenue, community, patient, or growth claims as facts","Why":"Most private metrics are unaudited and often change definition","Safer pattern":"Label claim provenance and seek independent or primary corroboration","Risk level":"High"},{"Source / pattern":"All cases","Do not copy":"Depending on one email vendor, processor, ad account, supplier, lab, creator, or regulatory interpretation","Why":"Each dependency failed somewhere in the source set","Safer pattern":"Dependency register, backup, trigger, owner, and tested recovery time","Risk level":"Critical"}],"actions":[{"Window":"Now - Week 1","Workstream":"Decision system","Action":"Adopt this workbook's evidence labels and require each strategy claim to carry source, date, confidence, and current-check link.","Owner":"Founder / strategy","Dependency":"None","Definition of done":"All decision-board claims have provenance and freshness fields","Metric":"% critical claims with current verification","Priority":"P0"},{"Window":"Now - Week 1","Workstream":"Operating lane","Action":"Write a one-page lane boundary for brand, product, content, support, creator scripts, and prohibited human-use guidance.","Owner":"Legal/compliance + founder","Dependency":"Qualified counsel","Definition of done":"Approved rules are reflected in briefs, PDPs, FAQs, support, email, and community","Metric":"Claim-review exceptions","Priority":"P0"},{"Window":"Now - Week 1","Workstream":"Brand architecture","Action":"Lock neutral master name + female-leading flagship + technical PDP/shared-backend structure as the pilot hypothesis.","Owner":"Founder + brand","Dependency":"Current design pilot","Definition of done":"One-page architecture names audiences, front doors, shared systems, and future male trigger","Metric":"Decision signed; no contradictory site taxonomy","Priority":"P0"},{"Window":"Now - Week 2","Workstream":"Assortment","Action":"Create a launch SKU gate: demand evidence, supplier diligence, complete test/custody, content, stock, margin, and support readiness.","Owner":"Quality + merchandising","Dependency":"Supplier and lab inputs","Definition of done":"Every proposed SKU passes or is rejected with reason","Metric":"% proposed SKUs passing all gates","Priority":"P0"},{"Window":"Now - Week 2","Workstream":"Trust","Action":"Specify the lot record: lot ID, inventory mapping, sampling/custody, methods, measured content, purity, applicable scope, report date, status, and limitations.","Owner":"Quality + product","Dependency":"Lab workflow","Definition of done":"Real current batch renders correctly on desktop/mobile and matches inventory","Metric":"Lot-record completeness","Priority":"P0"},{"Window":"Now - Week 2","Workstream":"Promise control","Action":"Create a canonical promise register for shipping, refunds, replacement, testing, origin, support hours, prices, reviews, and inventory.","Owner":"Operations","Dependency":"Policies and checkout","Definition of done":"Marketing, policy, support, checkout, and creator briefs reconcile","Metric":"Contradictions found per audit","Priority":"P0"},{"Window":"Now - Week 2","Workstream":"Payments","Action":"Validate honest underwriting, primary and backup rails, reserves, declines, chargeback handling, and recovery messaging.","Owner":"Finance + commerce","Dependency":"Processor approval","Definition of done":"End-to-end test orders pass; failure paths and owner are documented","Metric":"Authorization/failure/chargeback rate","Priority":"P0"},{"Window":"Now - Week 2","Workstream":"Fulfillment","Action":"Load-test saleable inventory, bundles/variants, stock holds, oversell prevention, label flow, tracking, and exception handling.","Owner":"Operations","Dependency":"Real inventory and carrier setup","Definition of done":"Simulated launch wave completes with no unowned exception","Metric":"Oversell, stockout, on-time ship, exception resolution","Priority":"P0"},{"Window":"Week 2-3","Workstream":"Data","Action":"Instrument creator -> click -> order -> settlement -> fulfillment -> support -> repeat -> payout with stable IDs.","Owner":"Growth ops / data","Dependency":"Commerce and creator tooling","Definition of done":"Test customer is traceable end to end and export restores successfully","Metric":"Event completeness and unmatched order rate","Priority":"P0"},{"Window":"Week 2-3","Workstream":"Unit economics","Action":"Build a settled-contribution model including COGS, testing, fulfillment, discounts, creator payout, processing, reserves, refunds, and chargebacks.","Owner":"Finance","Dependency":"Cost inputs","Definition of done":"Every cohort and SKU has a contribution view at 0/30/60/90 days","Metric":"Contribution per visitor/customer","Priority":"P0"},{"Window":"Week 2-4","Workstream":"Creator pilot","Action":"Recruit a controlled 25-creator pilot split across female-leading, technical/general, awareness, and conversion roles.","Owner":"Creator lead","Dependency":"Approved scripts, landing journeys, inventory capacity","Definition of done":"Each creator has role, source ID, code, brief, disclosure, compensation, and stop rule","Metric":"Qualified traffic and contribution by creator","Priority":"P0"},{"Window":"Week 2-4","Workstream":"Seeding","Action":"Run honest no-obligation seeding; identify organic advocates before offering long contracts.","Owner":"Creator lead","Dependency":"Seeding policy and fulfillment","Definition of done":"Organic response is logged and top advocates are shortlisted by audience quality","Metric":"Organic post and qualified-response rate","Priority":"P1"},{"Window":"Week 3-4","Workstream":"Landing test","Action":"Create matched female-leading and technical/general acquisition journeys on the same backend and price structure.","Owner":"Growth + product","Dependency":"Design authority review for outward-facing UI","Definition of done":"Both journeys are functional, approved, and differ only in the intended narrative variables","Metric":"Contribution per visitor plus conversion/AOV/repeat","Priority":"P0"},{"Window":"Week 3-4","Workstream":"Lifecycle","Action":"Implement welcome, abandonment, post-purchase documentation, service, VIP, winback, and lawful replenishment flows with consent controls.","Owner":"Lifecycle","Dependency":"Event data and policy","Definition of done":"All flows tested; subscription is never preselected; exports work","Metric":"Incremental lift, complaints, deliverability","Priority":"P1"},{"Window":"Week 3-4","Workstream":"Support","Action":"Turn founder answers into macros, SOPs, escalation rules, and measured SLAs; keep founder visibility for hard cases.","Owner":"Customer operations","Dependency":"Promise register","Definition of done":"Top objections and exceptions have owned playbooks","Metric":"First response, resolution, reopen, founder share","Priority":"P0"},{"Window":"Days 30-45","Workstream":"Pilot launch","Action":"Release creators in capacity-controlled waves, never all at once.","Owner":"Growth + operations","Dependency":"All launch gates green","Definition of done":"Each wave is approved from live scorecard and can be paused in minutes","Metric":"Service/fulfillment/payment thresholds stay green","Priority":"P0"},{"Window":"Days 30-60","Workstream":"Customer research","Action":"Run weekly interviews and code creator comments, support tickets, search terms, checkout exits, and post-purchase questions.","Owner":"Insights","Dependency":"Consent and research template","Definition of done":"Weekly insight memo produces ranked experiments","Metric":"Insight-to-experiment and resolved-objection rate","Priority":"P1"},{"Window":"Days 30-60","Workstream":"Content engine","Action":"Pilot recurring formats for founder visibility, lab/lot literacy, proof limitations, category research, and creator stories.","Owner":"Content","Dependency":"Reviewed content rules","Definition of done":"Four repeatable formats have cadence, owner, and scorecard","Metric":"Completion, saves, qualified clicks, assisted conversion","Priority":"P1"},{"Window":"Days 30-60","Workstream":"Offer testing","Action":"Test one-unit versus simple same-product volume ladders; defer subscriptions until consent, service, and repeat behavior are proven.","Owner":"Merchandising + finance","Dependency":"Stable inventory and unit economics","Definition of done":"Offer decision based on settled contribution and support burden","Metric":"AOV, contribution, refund, repeat","Priority":"P1"},{"Window":"Days 45-75","Workstream":"Channel test","Action":"Where explicitly eligible and approved, run a bounded high-intent search test segmented by product and margin.","Owner":"Growth","Dependency":"Platform approval and current policy review","Definition of done":"Test has prewritten cap, attribution reconciliation, and kill/scale decision","Metric":"Settled contribution per query/SKU","Priority":"P2 conditional"},{"Window":"Days 60-75","Workstream":"Cohort decision","Action":"Compare female-leading versus technical/general cohorts on economics and behavior, not gross revenue.","Owner":"Founder + finance + growth","Dependency":"Sufficient settled orders","Definition of done":"Written recommendation to intensify female lead, preserve dual funnels, or adjust","Metric":"Contribution, repeat, referral, CAC, AOV by cohort","Priority":"P0"},{"Window":"Days 60-90","Workstream":"Creator contracts","Action":"Promote proven organic or pilot creators into longer relationships with KPI-specific compensation.","Owner":"Creator lead + finance","Dependency":"Cohort contribution","Definition of done":"No long contract is based solely on reach or one post","Metric":"90-day creator contribution and audience quality","Priority":"P1"},{"Window":"Days 60-90","Workstream":"Dependency resilience","Action":"Run recovery drills for processor, email, supplier, lab, shipping, and creator-channel failure.","Owner":"Operations + engineering","Dependency":"Backup paths","Definition of done":"Each dependency has tested RTO, owner, trigger, and customer communication","Metric":"Recovery time and data loss","Priority":"P0"},{"Window":"Day 90","Workstream":"Go / no-go","Action":"Decide whether to scale, narrow, or stop using settled contribution, repeat behavior, trust/support signals, and dependency risk.","Owner":"Founder / board","Dependency":"Complete cohort and incident data","Definition of done":"Decision memo includes evidence, confidence, downside case, and next capital commitment","Metric":"Decision quality, not activity volume","Priority":"P0"}],"watchlist":[{"Subject":"FDA PCAC six-peptide recommendations","What to watch":"Final FDA action, proposed rule, guidance, or enforcement discretion","Current state":"Nonbinding panel recommendation only","Trigger":"Any Federal Register/FDA final action","Cadence":"Weekly","Owner":"Compliance","Source":"https://www.fda.gov/advisory-committees/advisory-committee-calendar/july-23-24-2026-meeting-pharmacy-compounding-advisory-committee-07232026"},{"Subject":"Retatrutide","What to watch":"Lilly BLA timing, trial publications, warning letters, litigation, and FDA statements","Current state":"Investigational; BLA planned Q1 2027; FDA says cannot be compounded","Trigger":"Regulatory filing or status change","Cadence":"Weekly","Owner":"Compliance / strategy","Source":"https://www.lilly.com/news/stories/what-to-know-about-retatrutide"},{"Subject":"Gram Peptides and similar enforcement","What to watch":"How FDA characterizes intended-use evidence around RUO sites","Current state":"Current warning letter says disclaimers did not override surrounding human-use evidence","Trigger":"New peptide warning letter","Cadence":"Monthly","Owner":"Compliance","Source":"https://www.fda.gov/inspections-compliance-enforcement-and-criminal-investigations/warning-letters/gram-peptides-721806-03312026"},{"Subject":"Anonymous Budai client","What to watch":"Client identity, processor evidence, settled revenue, refunds, repeat, and future case updates","Current state":"$600K monthly remains anonymous agency claim","Trigger":"Named client or raw evidence","Cadence":"Monthly","Owner":"Growth","Source":"https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"},{"Subject":"Joi + Blokes","What to watch":"Fertility launch, HerMD integration, current leadership, and audience/revenue mix","Current state":"Active and expanding; private scale unaudited","Trigger":"New funding, acquisition, or founder interview","Cadence":"Quarterly","Owner":"Strategy","Source":"https://joiandblokes.com/"},{"Subject":"Peptira / Peptide Price","What to watch":"Catalog, batch-report currency, community size, affiliate disclosure, policy changes, and service claims","Current state":"Active; shipping policy drift found","Trigger":"New podcast or material policy/catalog change","Cadence":"Monthly","Owner":"Competitive intel","Source":"https://peptira.com/test-results/"},{"Subject":"Transcend","What to watch":"Ownership, provider continuity, litigation, complaint trend, and service recovery","Current state":"New owner and changed provider structure","Trigger":"Court disposition or formal operating update","Cadence":"Monthly","Owner":"Strategy","Source":"https://transcendcompany.com/pages/change-of-provider-letter"},{"Subject":"SheMed","What to watch":"Publication of clinical-study results, US expansion, HeMed shared-infrastructure economics","Current state":"Study results not published by cutoff","Trigger":"Peer-reviewed/public result or expansion update","Cadence":"Monthly","Owner":"Brand / strategy","Source":"https://www.shemed.co.uk/clinical-study-why"},{"Subject":"Perelel","What to watch":"Creator-cohort changes, retail expansion, retention disclosures, and male-product treatment","Current state":"$27M growth investment confirmed","Trigger":"New founder interview or annual update","Cadence":"Quarterly","Owner":"Brand / creator","Source":"https://perelelhealth.com/"},{"Subject":"Arrae","What to watch":"Creator mix, subscription mechanics, retail expansion, and verified scale","Current state":"Company-reported $100M cumulative revenue","Trigger":"Independent financial or channel update","Cadence":"Quarterly","Owner":"Creator / lifecycle","Source":"https://www.arrae.com/pages/about-us"},{"Subject":"BelliWelli","What to watch":"Repeatable content format, retailer sell-through, subscription, and community transparency","Current state":"Retail footprint and funding confirmed; growth/reach private","Trigger":"New channel or financial disclosure","Cadence":"Quarterly","Owner":"Content / community","Source":"https://belliwelli.com/"},{"Subject":"Mochi Health","What to watch":"Longevity offering, testing ownership, provider count, litigation, and price/choice model","Current state":"Offering changed within one quarter; private scale claims vary","Trigger":"Product, court, or company metric update","Cadence":"Monthly","Owner":"Strategy","Source":"https://joinmochi.com/longevity"}],"executiveDecisions":[{"Question":"Female-leading or unisex?","Answer":"Female-leading flagship, neutral name, technical/shared commerce, not female-exclusive.","Evidence":"Joi + Blokes, SheMed/HeMed, Perelel","Confidence":"High","Why":"These operators show that distinct audience meaning can sit on shared infrastructure. Perelel even carries a men's product inside a female-leading master brand.","First proof":"Matched female-leading vs technical/general creator cohort test"},{"Question":"What is the moat?","Answer":"Creator relationships + batch proof + owned event/identity graph + dependable service.","Evidence":"Arrae, Perelel, Peptira, Redline, Ecom cases","Confidence":"High","Why":"Molecules, catalogs, and storefront software commoditize. Trust, continuity, attribution, and response quality compound.","First proof":"Track creator -> settlement -> fulfillment -> support -> repeat -> payout"},{"Question":"Should one product lead?","Answer":"Use the strongest observed demand signal as a launch hypothesis, but keep the brand and economics broader.","Evidence":"Joi and Vita Bella concentration stories; internal popularity signal","Confidence":"Medium-high","Why":"A hero offer can concentrate acquisition while hiding operational and strategic concentration.","First proof":"Product-level settled revenue, contribution, repeat interval, and cross-sell"},{"Question":"How should creators be recruited?","Answer":"Controlled seeding, then long-term deals with proven organic advocates; separate awareness and conversion cohorts.","Evidence":"Arrae and Perelel","Confidence":"High","Why":"Repeated genuine affinity is more credible and more learnable than rotating one-off endorsements.","First proof":"25-creator capacity-controlled pilot with role-specific KPIs"},{"Question":"How much should growth stories influence the plan?","Answer":"Very little until independently reconciled.","Evidence":"Anonymous Ecom case, shifting definitions, unaudited founder claims","Confidence":"High","Why":"The most exciting numbers have the weakest evidence. They define upside hypotheses, not budgets.","First proof":"Bottom-up contribution model and raw settled cohort evidence"},{"Question":"What fails first?","Answer":"Payments, support, inventory, testing throughput, fulfillment, or a partner handoff before demand itself.","Evidence":"Transcend, Redline, Peptira, Ecom case","Confidence":"High","Why":"Every exact-category operator described operational or vendor failure during growth.","First proof":"Launch-readiness gates, stop rules, and recovery drills"},{"Question":"How current is the opportunity?","Answer":"Demand visibility is rising, but the operating environment is changing within weeks.","Evidence":"July PCAC vote, July Lilly data, EC325, Mochi change, Transcend change","Confidence":"High","Why":"Current information increases attention while also invalidating earlier assumptions. A dated monitoring system is mandatory.","First proof":"Weekly current-context review and claim-expiry register"}],"fastQueue":[["1","Ecom Show #325","Full 15:15","Freshest exact scaling update; focus on channel reality, lifecycle, payment instability, and the 'near-term window' warning.","https://shows.acast.com/theecomshow/episodes/325-budai-media-specials-if-i-had-to-scale-a-peptide-brand-t"],["2","Joi + Blokes","34:06-37:51; 48:53-54:36","Female/male fronts on one backend, women as stronger engine, scale/capital, and adjacency.","https://www.youtube.com/watch?v=aigF8IfN4Is&t=2046s"],["3","Peptira + Peptide Price","14:38-31:38","Six-week launch sequence, batch labels, COAs, volume ladder, support promises, and test-before-sale gate.","https://www.youtube.com/watch?v=Be58yiS6Vs4&t=878s"],["4","Perelel","11:27-20:30","Identity brand, unique capability, long creator arcs, seeding, message order, and creator cohorts.","https://podcasts.apple.com/us/podcast/success-almost-broke-her-this-recovering-girlboss-built/id1593458926?i=1000743844412"],["5","SheMed","09:34-28:48","Role boundaries, shareable education, ongoing support, channel mix, muted-color conversion learning, and real buyer age.","https://www.buzzsprout.com/850540/episodes/17034792-the-weightloss-wonders"],["6","Redline Biolabs","17:30-20:45; 35:45-47:15","Founders + COAs, payment abandonment, supplier loss, oversell recovery, attribution codes, and early service.","https://www.youtube.com/watch?v=JQSJYACbOCU&t=1050s"],["7","Arrae","15:45-29:35; 34:28-35:50","Soft launch, no-obligation seeding, promote organic love, customer-as-creator, and founder role split.","https://podcasts.apple.com/us/podcast/siffat-haider-co-founder-co-ceo-of-arrae-what-makes/id1432195522?i=1000611429597"],["8","Transcend","35:07-40:14","Historical scale-break caution: creators, staffing, calls, patient capacity, and pharmacy inventory.","https://www.youtube.com/watch?v=c6jUD2kyyDA&t=2107s"]]}; diff --git a/biologix-strategy-board/research/research.css b/biologix-strategy-board/research/research.css new file mode 100644 index 0000000..7e40802 --- /dev/null +++ b/biologix-strategy-board/research/research.css @@ -0,0 +1,502 @@ +:root { + --paper: #f7f5f1; + --paper-raised: #fffefa; + --ink: #141312; + --ink-2: #54504a; + --ink-3: #706b64; + --line: #dcd8d0; + --accent: #1f3d2b; + --accent-soft: #e3ece6; + --max: 1180px; + color-scheme: light; +} + +* { + box-sizing: border-box; +} + +html { + scroll-behavior: smooth; +} + +body { + margin: 0; + color: var(--ink); + background: var(--paper); + font-family: Manrope, -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 1.68; + -webkit-font-smoothing: antialiased; +} + +a { + color: var(--accent); + text-decoration-thickness: 1px; + text-underline-offset: 3px; +} + +a:hover { + text-decoration-thickness: 2px; +} + +:focus-visible { + outline: 2px solid var(--accent); + outline-offset: 3px; +} + +.research-header { + position: sticky; + top: 0; + z-index: 20; + border-bottom: 1px solid var(--line); + background: rgba(247, 245, 241, 0.94); + backdrop-filter: blur(10px); +} + +.research-header-inner { + width: min(var(--max), calc(100% - 48px)); + min-height: 64px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: space-between; + gap: 24px; +} + +.research-brand { + color: var(--ink); + font-family: "DM Mono", ui-monospace, monospace; + font-size: 11px; + font-weight: 500; + letter-spacing: 0.12em; + text-decoration: none; + text-transform: uppercase; + white-space: nowrap; +} + +.research-nav { + display: flex; + align-items: center; + gap: 6px; +} + +.research-nav a { + padding: 8px 10px; + color: var(--ink-2); + border-radius: 3px; + font-family: "DM Mono", ui-monospace, monospace; + font-size: 10px; + letter-spacing: 0.06em; + text-decoration: none; + text-transform: uppercase; +} + +.research-nav a:hover, +.research-nav a[aria-current="page"] { + color: #fff; + background: var(--accent); +} + +.landing { + width: min(var(--max), calc(100% - 48px)); + margin: 0 auto; + padding: 92px 0 96px; +} + +.eyebrow { + margin: 0 0 20px; + color: var(--ink-3); + font-family: "DM Mono", ui-monospace, monospace; + font-size: 11px; + letter-spacing: 0.14em; + text-transform: uppercase; +} + +.landing h1 { + max-width: 980px; + margin: 0 0 28px; + font-size: clamp(48px, 7vw, 92px); + letter-spacing: -0.045em; + line-height: 0.96; +} + +.landing .lead { + max-width: 790px; + margin: 0; + color: var(--ink-2); + font-size: clamp(19px, 2.2vw, 26px); + line-height: 1.45; +} + +.verdict { + margin: 52px 0; + padding: 28px 30px; + border-left: 4px solid var(--accent); + background: var(--paper-raised); + font-size: clamp(18px, 2vw, 23px); + font-weight: 600; + line-height: 1.45; +} + +.tldr-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 1px; + margin: 40px 0 56px; + border: 1px solid var(--line); + background: var(--line); +} + +.tldr-card { + padding: 28px; + background: var(--paper-raised); +} + +.tldr-card .number { + display: block; + margin-bottom: 28px; + color: var(--accent); + font-family: "DM Mono", ui-monospace, monospace; + font-size: 12px; +} + +.tldr-card h2 { + margin: 0 0 12px; + font-size: 21px; + line-height: 1.2; +} + +.tldr-card p { + margin: 0; + color: var(--ink-2); +} + +.doc-links { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 16px; +} + +.doc-link { + display: flex; + min-height: 190px; + flex-direction: column; + justify-content: space-between; + padding: 26px; + color: var(--ink); + border: 1px solid var(--line); + background: var(--paper-raised); + text-decoration: none; + transition: border-color 120ms ease, transform 120ms ease; +} + +.doc-link:hover { + border-color: var(--accent); + transform: translateY(-2px); +} + +.doc-link small { + color: var(--ink-3); + font-family: "DM Mono", ui-monospace, monospace; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.doc-link strong { + display: block; + margin: 14px 0; + font-size: 24px; + line-height: 1.18; +} + +.doc-link span { + color: var(--accent); + font-weight: 600; +} + +.doc-shell { + width: min(1440px, calc(100% - 48px)); + margin: 0 auto; + padding: 56px 0 96px; +} + +#title-block-header { + max-width: 920px; + margin: 0 auto 48px; + padding-bottom: 36px; + border-bottom: 1px solid var(--line); +} + +#title-block-header h1 { + margin: 0; + font-size: clamp(40px, 5.4vw, 72px); + letter-spacing: -0.04em; + line-height: 1; +} + +.doc-layout { + display: grid; + grid-template-columns: 240px minmax(0, 920px); + justify-content: center; + gap: 56px; + align-items: start; +} + +.doc-layout.no-toc { + display: block; +} + +.doc-layout.no-toc .document { + max-width: 1180px; + margin: 0 auto; +} + +.toc { + position: sticky; + top: 92px; + max-height: calc(100vh - 116px); + overflow: auto; + padding-right: 16px; + color: var(--ink-3); + font-size: 12px; +} + +.toc::before { + content: "On this page"; + display: block; + margin-bottom: 14px; + color: var(--ink); + font-family: "DM Mono", ui-monospace, monospace; + font-size: 10px; + letter-spacing: 0.12em; + text-transform: uppercase; +} + +.toc ul { + margin: 0; + padding-left: 16px; +} + +.toc li { + margin: 7px 0; +} + +.toc a { + color: inherit; + text-decoration: none; +} + +.toc a:hover { + color: var(--accent); +} + +.document { + min-width: 0; +} + +.document > :first-child { + margin-top: 0; +} + +.document h1, +.document h2, +.document h3, +.document h4 { + letter-spacing: -0.025em; + line-height: 1.15; +} + +.document h1 { + font-size: 42px; +} + +.document h2 { + margin: 56px 0 18px; + padding-top: 12px; + font-size: 31px; +} + +.document h3 { + margin: 36px 0 12px; + font-size: 23px; +} + +.document h4 { + margin: 28px 0 10px; + font-size: 18px; +} + +.document p, +.document li { + color: var(--ink-2); +} + +.document strong { + color: var(--ink); +} + +.document blockquote { + margin: 32px 0; + padding: 22px 26px; + border-left: 4px solid var(--accent); + background: var(--accent-soft); + font-size: 19px; +} + +.document blockquote p { + margin: 0; + color: var(--ink); +} + +.document code { + padding: 2px 5px; + border-radius: 3px; + background: #ebe8e1; + font-family: "DM Mono", ui-monospace, monospace; + font-size: 0.88em; +} + +.document hr { + margin: 48px 0; + border: 0; + border-top: 1px solid var(--line); +} + +.document table { + display: block; + width: 100%; + max-width: 100%; + margin: 28px 0 40px; + overflow-x: auto; + border-collapse: collapse; + font-size: 13px; + line-height: 1.45; +} + +.document th, +.document td { + min-width: 170px; + padding: 13px 14px; + border: 1px solid var(--line); + text-align: left; + vertical-align: top; +} + +.document th { + color: var(--ink); + background: #ebe8e1; + font-weight: 700; +} + +.document tbody tr:nth-child(even) td { + background: rgba(255, 254, 250, 0.7); +} + +.matrix-page .document { + max-width: none !important; +} + +.matrix-page .document table { + min-width: 2800px; +} + +.matrix-page .document th:first-child, +.matrix-page .document td:first-child { + position: sticky; + left: 0; + z-index: 2; + min-width: 190px; + background: var(--paper-raised); +} + +.matrix-page .document th:first-child { + z-index: 3; + background: #e2dfd7; +} + +.reading-note { + max-width: 920px; + margin: -22px auto 40px; + color: var(--ink-3); + font-family: "DM Mono", ui-monospace, monospace; + font-size: 11px; +} + +@media (max-width: 900px) { + .research-header { + position: static; + } + + .research-header-inner { + width: min(100% - 28px, var(--max)); + min-height: auto; + padding: 14px 0; + align-items: flex-start; + flex-direction: column; + gap: 10px; + } + + .research-nav { + width: 100%; + overflow-x: auto; + padding-bottom: 2px; + } + + .research-nav a { + white-space: nowrap; + } + + .landing, + .doc-shell { + width: min(100% - 28px, var(--max)); + } + + .landing { + padding: 58px 0 72px; + } + + .tldr-grid, + .doc-links { + grid-template-columns: 1fr; + } + + .doc-layout { + display: block; + } + + .toc { + position: static; + max-height: none; + margin-bottom: 42px; + padding: 20px; + border: 1px solid var(--line); + background: var(--paper-raised); + } + + .document h2 { + margin-top: 44px; + font-size: 27px; + } + + .document table { + margin-right: -14px; + font-size: 12px; + } +} + +@media print { + .research-header, + .toc { + display: none; + } + + .doc-shell, + .document { + width: 100%; + max-width: none; + } + + .doc-layout { + display: block; + } +} diff --git a/biologix-strategy-board/research/retatrutide-checkout-audit-data.js b/biologix-strategy-board/research/retatrutide-checkout-audit-data.js new file mode 100644 index 0000000..c5b6003 --- /dev/null +++ b/biologix-strategy-board/research/retatrutide-checkout-audit-data.js @@ -0,0 +1,2 @@ +/* Generated by scripts/build-retatrutide-checkout-audit-data.mjs. Do not edit by hand. */ +window.NOLI_RETATRUTIDE_CHECKOUT_AUDITS = {"generatedAt":"2026-07-27T22:07:37.665Z","methodology":"Anonymous public pages, public product/cart APIs, and fresh anonymous carts only. No accounts, PII, checkout submission, order creation, payment attempt, transaction, credentials, gate bypass, or evasion.","evidenceRules":["Active/rendered methods are separated from configured-only or public-claim-only methods.","Unknown remains unknown.","Storefront, checkout integration, gateway/PSP, processor/ISO, and acquirer are separate layers.","UI/UX scores are automated 390x844 browser heuristics backed by observed DOM/image/cart evidence, not a subjective design review.","Provider names and roles are extracted from public script, plugin, API, and rendered checkout identifiers. They are not erased merely because the downstream acquirer is unknown.","A provider-branded method returned for the tested Reta cart is reported as active cart evidence. It is not reported as a completed transaction or durable underwriting approval."],"stats":{"generatedAt":"2026-07-27T22:07:37.665Z","scanDate":"2026-07-27","universeTotal":655,"confirmedUsStorefrontsInUniverse":84,"eligibleAfterExclusions":71,"probed":71,"includedCurrentRetaListings":48,"anonymousRetaCartAdds":37,"storesWithActiveMethodIds":33,"storesWithRenderedCheckoutLabels":20,"excludedDomains":["nupeps.com","ngpeptide.com","advancedresearchpep.com","polarispeptides.com","myoasislabs.com","simplepeptide.com","bulkpeptides.com","aminosequence.com","biopepstore.com","nextechlaboratories.com","bluumpeptides.com","spartalabs.net","biopepusa.com"],"scope":"Anonymous public pages, public product/cart APIs, and fresh anonymous carts only. No accounts, PII, checkout submission, order creation, payment attempt, transaction, credentials, gate bypass, or evasion.","evidenceRules":["Active/rendered methods are separated from configured-only or public-claim-only methods.","Unknown remains unknown.","Storefront, checkout integration, gateway/PSP, processor/ISO, and acquirer are separate layers.","UI/UX scores are automated 390x844 browser heuristics backed by observed DOM/image/cart evidence, not a subjective design review."],"gradeDefinitions":{"A":"Current Reta listing added to an anonymous cart and active method IDs or rendered labels observed.","B":"Current Reta listing and anonymous cart add observed, but active payment-method state was not verified.","C":"Current Reta listing observed; payment evidence is public-claim/logo-only or cart was not verified.","D":"Listing present but not currently purchasable, or no payment state could be verified.","E":"Storefront or listing inaccessible in this pass."},"rollups":{"platforms":{"WooCommerce":36,"Unknown":4,"Shopify":3,"Next.js":5},"marketingMechanics":{"Affiliate or ambassador acquisition":34,"Batch/COA proof as conversion":2,"none detected":2,"Loyalty or points retention":2,"Subscription or auto-ship continuity":4,"Free-shipping threshold":3,"Quantity or volume discount":1},"trackingStacks":{"Google Tag Manager":36,"Google Analytics":28,"Meta Pixel":16,"TikTok Pixel":10,"Microsoft Clarity":5,"Triple Whale":2},"marketingTechnologyStacks":{"GoAffPro":15,"Klaviyo":10,"Trustpilot":14,"Yotpo":1,"AfterShip":1,"Judge.me":1},"activeCheckoutIdentifiers":{"linkmoney":11,"zelle":7,"bacs":6,"nmi":4,"idem":3,"tagada":3,"edd_draft_yodlee_gateway":3,"paygatedotto-instant-payment-gateway-hostedpaygatedotto":2,"bytenft":2,"crypto":2,"forumpay":2,"amgexpress":2,"clkk":2,"maef_child_gateway":2,"nmipay":2,"noramp_platform":2,"mecom_paypal":2,"btcpaygf_default":2,"cheque":2,"cashapp":2,"alg_custom_gateway_1":1,"paygatedotto-crypto-payment-gateway-dynamic":1,"anet":1,"pr_paypal_post_order_instructions":1,"ven":1,"instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto":1,"site_b_gateway":1,"blockonomics":1,"peptipay_venmo":1,"sstg_payments":1,"psifi":1,"truvo_dropin":1,"veylo_pay":1,"wc_payerurl_gateway":1,"my_fingrid_gateway":1,"pep_applepay":1,"cryptopay":1,"pipepay":1,"circoflows":1,"dfinsell":1,"cashenvoy":1,"paynote":1,"shield_gateway":1,"nowpayments_gateway":1,"authorize_net_cim_credit_card":1,"gp_zelle":1,"gp_btc":1,"gp_eth":1,"gp_usdt":1,"mycryptocheckout":1,"mecom_stripe":1,"nexteng_redirect":1,"bankful_hosted_gateway":1,"venmo_gateway_1":1,"cod":1,"mps_v_2d_15":1,"venmo":1,"kmi_payments":1,"pay_with_affirm_shopify":1,"quiklie":1,"regentide_cashapp_qr":1,"regentide_zelle":1,"regentide_wise_ach_manual":1,"authorize_net":1}},"sourceUniverse":"biologix-strategy-board/research/retatrutide-vendor-universe-data.js","sourceUniverseGeneratedAt":"2026-07-27T21:26:20.607Z","paymentProviderRollup":{"domainsWithCodeIdentifiedProviders":33,"domainsWithActiveProviderMethods":33,"providers":{"Link Money":{"roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","officialUrl":"https://link.money/product/pay-by-bank","codeDomains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"codeDomainCount":11,"activeRetaCartDomains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"activeRetaCartDomainCount":11,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Zelle":{"roles":["P2P payment method"],"providerClass":"payment_method","officialUrl":"https://www.zellepay.com/","codeDomains":["adaptpeptides.com","greatestpeptides.com","northwestpeptides.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptidology.co","regentide.net","sunrisebioresearch.com"],"codeDomainCount":9,"activeRetaCartDomains":["adaptpeptides.com","greatestpeptides.com","northwestpeptides.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptidology.co","regentide.net","sunrisebioresearch.com"],"activeRetaCartDomainCount":9,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Bank transfer / ACH":{"roles":["bank transfer method"],"providerClass":"payment_method","officialUrl":null,"codeDomains":["agelessvitalitypeptides.com","greatestpeptides.com","labtrustpeptides.com","luxaralabs.com","northwestpeptides.com","regentide.net","riptidewellness.com","royal-peptides.com"],"codeDomainCount":8,"activeRetaCartDomains":["agelessvitalitypeptides.com","greatestpeptides.com","labtrustpeptides.com","luxaralabs.com","northwestpeptides.com","regentide.net","riptidewellness.com","royal-peptides.com"],"activeRetaCartDomainCount":8,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Generic crypto method":{"roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","officialUrl":null,"codeDomains":["behemothlabz.com","geneticpeptide.com","greatestpeptides.com","labtrustpeptides.com","onyxresearch.shop","orionpeptide.com","realpeptides.co"],"codeDomainCount":7,"activeRetaCartDomains":["behemothlabz.com","geneticpeptide.com","greatestpeptides.com","labtrustpeptides.com","onyxresearch.shop","orionpeptide.com","realpeptides.co"],"activeRetaCartDomainCount":7,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"NMI":{"roles":["payment gateway"],"providerClass":"gateway","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeDomains":["geneticpeptide.com","milehighcompounds.is","peptidology.co","protidehealth.com","realpeptides.co","rivnpeptides.com"],"codeDomainCount":6,"activeRetaCartDomains":["geneticpeptide.com","milehighcompounds.is","peptidology.co","protidehealth.com","realpeptides.co","rivnpeptides.com"],"activeRetaCartDomainCount":6,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Cash App":{"roles":["wallet or manual payment method"],"providerClass":"payment_method","officialUrl":"https://cash.app/business","codeDomains":["geneticpeptide.com","ignitepeptides.com","nxtstate.co","onyxbiolabs.com","regentide.net"],"codeDomainCount":5,"activeRetaCartDomains":["geneticpeptide.com","ignitepeptides.com","nxtstate.co","onyxbiolabs.com","regentide.net"],"activeRetaCartDomainCount":5,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Venmo":{"roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","officialUrl":"https://venmo.com/business/","codeDomains":["ignitepeptides.com","neb.co","nxtstate.co","royal-peptides.com"],"codeDomainCount":4,"activeRetaCartDomains":["ignitepeptides.com","neb.co","nxtstate.co","royal-peptides.com"],"activeRetaCartDomainCount":4,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Authorize.Net":{"roles":["payment gateway"],"providerClass":"gateway","officialUrl":"https://www.authorize.net/payments.html","codeDomains":["agelessvitalitypeptides.com","greatestpeptides.com","veloraresearch.com"],"codeDomainCount":3,"activeRetaCartDomains":["agelessvitalitypeptides.com","greatestpeptides.com","veloraresearch.com"],"activeRetaCartDomainCount":3,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"eDebit Direct":{"roles":["bank payment provider","card processing provider"],"providerClass":"bank_payment_provider","officialUrl":"https://edebitdirect.com/low-fee-payment-processing/","codeDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"codeDomainCount":3,"activeRetaCartDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"activeRetaCartDomainCount":3,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"IDEM":{"roles":["bank checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["northwestpeptides.com","researchchemhq.co","umbrellalabs.is"],"codeDomainCount":3,"activeRetaCartDomains":["northwestpeptides.com","researchchemhq.co","umbrellalabs.is"],"activeRetaCartDomainCount":3,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"PayPal":{"roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeDomains":["behemothlabz.com","researchchemhq.co","rivnpeptides.com"],"codeDomainCount":3,"activeRetaCartDomains":["behemothlabz.com","researchchemhq.co","rivnpeptides.com"],"activeRetaCartDomainCount":3,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"BTCPay Server":{"roles":["self-hosted crypto payment server"],"providerClass":"crypto_payment_provider","officialUrl":"https://docs.btcpayserver.org/Guide/","codeDomains":["lifelinkresearch.com","umbrellalabs.is"],"codeDomainCount":2,"activeRetaCartDomains":["lifelinkresearch.com","umbrellalabs.is"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"ForumPay":{"roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","officialUrl":"https://forumpay.com/","codeDomains":["behemothlabz.com","onyxbiolabs.com"],"codeDomainCount":2,"activeRetaCartDomains":["behemothlabz.com","onyxbiolabs.com"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"maef child":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["milehighcompounds.is","riptidewellness.com"],"codeDomainCount":2,"activeRetaCartDomains":["milehighcompounds.is","riptidewellness.com"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Manual check or cash on delivery":{"roles":["manual payment method"],"providerClass":"payment_method","officialUrl":null,"codeDomains":["luxaralabs.com","nurevpeptides.com"],"codeDomainCount":2,"activeRetaCartDomains":["luxaralabs.com","nurevpeptides.com"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"noramp platform":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["researchchemhq.co","sunday-usa.com"],"codeDomainCount":2,"activeRetaCartDomains":["researchchemhq.co","sunday-usa.com"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"PayGate.to":{"roles":["checkout integration"],"providerClass":"unresolved_provider","officialUrl":"https://paygate.to/","codeDomains":["researchchemhq.co","royal-peptides.com"],"codeDomainCount":2,"activeRetaCartDomains":["researchchemhq.co","royal-peptides.com"],"activeRetaCartDomainCount":2,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Affirm":{"roles":["buy now, pay later provider"],"providerClass":"payment_method","officialUrl":"https://www.affirm.com/business","codeDomains":["pspeptides.com"],"codeDomainCount":1,"activeRetaCartDomains":["pspeptides.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"amgexpress":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["geneticpeptide.com"],"codeDomainCount":1,"activeRetaCartDomains":["geneticpeptide.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Apple Pay":{"roles":["digital wallet"],"providerClass":"payment_method","officialUrl":"https://developer.apple.com/apple-pay/","codeDomains":["peptidology.co"],"codeDomainCount":1,"activeRetaCartDomains":["peptidology.co"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Bankful":{"roles":["payment gateway","payment service provider","conditional payment facilitator"],"providerClass":"gateway_or_psp","officialUrl":"https://bankful.com/","codeDomains":["neb.co"],"codeDomainCount":1,"activeRetaCartDomains":["neb.co"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Blockonomics":{"roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","officialUrl":"https://www.blockonomics.co/merchants","codeDomains":["geneticpeptide.com"],"codeDomainCount":1,"activeRetaCartDomains":["geneticpeptide.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"CashEnvoy":{"roles":["payment gateway"],"providerClass":"gateway","officialUrl":"https://cashenvoy.com/","codeDomains":["riptidewellness.com"],"codeDomainCount":1,"activeRetaCartDomains":["riptidewellness.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"CircoFlows":{"roles":["payment processing provider"],"providerClass":"processor_or_full_stack_psp","officialUrl":"https://circoflows.com/solutions","codeDomains":["riptidewellness.com"],"codeDomainCount":1,"activeRetaCartDomains":["riptidewellness.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"clkk":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["truepeptidelabs.com"],"codeDomainCount":1,"activeRetaCartDomains":["truepeptidelabs.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"instaonrampdotto instant payment gateway hostedinstaonrampdotto":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["behemothlabz.com"],"codeDomainCount":1,"activeRetaCartDomains":["behemothlabz.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"kmi":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["pacificresearchpeptides.com"],"codeDomainCount":1,"activeRetaCartDomains":["pacificresearchpeptides.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"mps v 2d 15":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["nxtstate.co"],"codeDomainCount":1,"activeRetaCartDomains":["nxtstate.co"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"my fingrid":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["peptidescollective.com"],"codeDomainCount":1,"activeRetaCartDomains":["peptidescollective.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"nexteng redirect":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["neb.co"],"codeDomainCount":1,"activeRetaCartDomains":["neb.co"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"NOWPayments":{"roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","officialUrl":"https://nowpayments.io/payment-integration","codeDomains":["adaptpeptides.com"],"codeDomainCount":1,"activeRetaCartDomains":["adaptpeptides.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Paynote / Seamless ACH":{"roles":["ACH payment provider","bank checkout"],"providerClass":"bank_payment_provider","officialUrl":"https://developers-ach.seamlesschex.com/docs/overview","codeDomains":["umbrellalabs.is"],"codeDomainCount":1,"activeRetaCartDomains":["umbrellalabs.is"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"PipePay":{"roles":["checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["researchchemhq.co"],"codeDomainCount":1,"activeRetaCartDomains":["researchchemhq.co"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"psifi":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["northwestpeptides.com"],"codeDomainCount":1,"activeRetaCartDomains":["northwestpeptides.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Quiklie":{"roles":["checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["regentide.net"],"codeDomainCount":1,"activeRetaCartDomains":["regentide.net"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"shield":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["adaptpeptides.com"],"codeDomainCount":1,"activeRetaCartDomains":["adaptpeptides.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"sstg":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["milehighcompounds.is"],"codeDomainCount":1,"activeRetaCartDomains":["milehighcompounds.is"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Stripe":{"roles":["payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","officialUrl":"https://stripe.com/resources/more/payment-service-providers","codeDomains":["lifelinkresearch.com"],"codeDomainCount":1,"activeRetaCartDomains":["lifelinkresearch.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"tagada":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["peptidescollective.com"],"codeDomainCount":1,"activeRetaCartDomains":["peptidescollective.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Truvo":{"roles":["checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["onyxresearch.shop"],"codeDomainCount":1,"activeRetaCartDomains":["onyxresearch.shop"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"ven":{"roles":["custom checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["behemothlabz.com"],"codeDomainCount":1,"activeRetaCartDomains":["behemothlabz.com"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0},"Veylo":{"roles":["checkout integration"],"providerClass":"unresolved_provider","officialUrl":null,"codeDomains":["onyxresearch.shop"],"codeDomainCount":1,"activeRetaCartDomains":["onyxresearch.shop"],"activeRetaCartDomainCount":1,"renderedCheckoutDomains":[],"renderedCheckoutDomainCount":0}},"boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}},"audits":{"adaptpeptides.com":{"domain":"adaptpeptides.com","canonicalDomain":"adaptpeptides.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://adaptpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide","strengths":["5mg","10mg","15mg","20mg","30mg"],"productUrl":"https://adaptpeptides.com/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":9167,"productType":"variable","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 89.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["Klaviyo","Trustpilot","GoAffPro"],"evidenceUrls":["https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":404,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2","https://adaptpeptides.com/shipping-policy/","https://adaptpeptides.com/returns-refunds/"],"shippingReturnSnippets":["/ MasterCard / Visa [email protected] 30 N Gould Street, Sheridan, Wyoming, 81801 Support Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions Shipping Policy Returns","Support Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions Shipping Policy Returns & Refunds Our Guarantee Privacy Policy Terms & Conditions About US Discover us Co","ow:hidden;position:relative}.button.flexible-shipping-free-shipping-button{margin-left:0} Shipping Policy - Adapt Peptides Card payments are currently unavailable. Please checkout using other pay"],"pluginSignals":["*","advanced-coupons-for-woocommerce-free","commercegurus-commercekit","contact-form-7","elementor","elementor-pro","flexible-shipping","hostinger-reach","jetpack","klaviyo","seo-by-rank-math-pro","trustpilot-reviews","waave-compliance","waitlist-woocommerce","woo-discount-rules","woo-discount-rules-pro","woo-product-bundle","woocommerce","woocommerce-google-analytics-integration","woocommerce-payments"]},"payment":{"methods":[{"name":"shield_gateway","id":"shield_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"zelle","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"linkmoney","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"nowpayments_gateway","id":"nowpayments_gateway","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["shield_gateway","zelle","linkmoney","nowpayments_gateway"],"renderedCheckoutLabels":[],"configuredBeforeCart":["shield_gateway","zelle","linkmoney","nowpayments_gateway"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"shield","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"shield_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"NOWPayments","roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","sourceToken":"nowpayments_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://nowpayments.io/payment-integration","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://adaptpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://adaptpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart No products in the cart.","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://adaptpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://adaptpeptides.com/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://adaptpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://adaptpeptides.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://adaptpeptides.com/returns-refunds/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://adaptpeptides.com/terms-conditions/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://adaptpeptides.com/","https://adaptpeptides.com/product/retatrutide/","https://adaptpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://adaptpeptides.com/wp-json/wc/store/v1/cart","https://checkout.adaptpeptides.com/c/XEPvYZe17uwOSzQaHOXWbOkd-qIdY1Ujs-orJVlag2g","https://adaptpeptides.com/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1779141387","https://adaptpeptides.com/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.6.0.2","https://adaptpeptides.com/shipping-policy/","https://adaptpeptides.com/returns-refunds/","https://adaptpeptides.com/terms-conditions/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://adaptpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart No products in the cart.","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"agelessvitalitypeptides.com":{"domain":"agelessvitalitypeptides.com","canonicalDomain":"agelessvitalitypeptides.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP3-R (Reta)","strengths":[],"productUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1131,"productType":"variable","evidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 99.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://agelessvitalitypeptides.com/refund-returns/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel"],"evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":5.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://agelessvitalitypeptides.com/refund-returns/"],"shippingReturnSnippets":["ness for both our customers and our operations, we have outlined the following return and refund policy: Return Eligibility Return requests must be submitted within 24 hours of confirmed delive","policy: Return Eligibility Return requests must be submitted within 24 hours of confirmed delivery (as verified by the shipping carrier). Items must be unopened, unused , and in original c","turns are subject to a 20% restocking fee , which will be deducted from the refund total. Refund Policy Based on Purity Guarantee We guarantee >98% purity on all research peptides. If you be"],"pluginSignals":["*","age-gate","authorize-net-payments-for-woocommerce","gtm-server-side","woocommerce"]},"payment":{"methods":[{"name":"Card Number *","id":"anet","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle Bank Transfer","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["anet","bacs"],"renderedCheckoutLabels":[{"id":"bacs","label":"Zelle Bank Transfer"},{"id":"anet","label":"Card Number *"}],"configuredBeforeCart":["anet","bacs"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://agelessvitalitypeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Authorize.Net","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"anet","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.authorize.net/payments.html","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://agelessvitalitypeptides.com/refund-returns/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":7.5,"productClarity":10,"trustPresentation":5.5,"conversionUx":8,"overall":7.7,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","A blocking overlay or gate covers the mobile viewport: Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ."],"observedUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://agelessvitalitypeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://agelessvitalitypeptides.com/refund-returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://agelessvitalitypeptides.com/terms-of-service/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://agelessvitalitypeptides.com/product/retatrutide-10mg/","https://agelessvitalitypeptides.com/wp-json/wc/store/v1/products?slug=retatrutide-10mg","https://agelessvitalitypeptides.com/wp-json/wc/store/v1/cart","https://agelessvitalitypeptides.com/checkout/","https://agelessvitalitypeptides.com/refund-returns/","https://agelessvitalitypeptides.com/terms-of-service/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":7.5,"productClarity":10,"trustPresentation":5.5,"conversionUx":8,"overall":7.7,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","A blocking overlay or gate covers the mobile viewport: Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ."],"observedUrl":"https://agelessvitalitypeptides.com/product/retatrutide-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Research Use Only All products available on this website are sold strictly for research use only and are intended exclusively for in vitro laboratory research. These products have ","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"arcticlabsupply.com":{"domain":"arcticlabsupply.com","canonicalDomain":"arcticlabsupply.com","status":"complete","pagesCrawled":1,"platform":{"name":"Unknown","confidence":"low","evidenceUrl":"https://arcticlabsupply.com/products/retatrutide-10mg"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide 10mg","strengths":["10mg"],"productUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","inStock":null,"purchasable":null,"anonymousCartAdd":false,"productId":null,"productType":"HTML product page","evidenceUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":null,"currency":null,"secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":null,"subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":false,"technologyStack":[],"evidenceUrls":[]},"tracking":{"stack":["Meta Pixel"],"evidenceUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":false,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":2},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":[],"pluginSignals":[]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"D","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","confidence":"high"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":5,"productClarity":2.5,"trustPresentation":2,"conversionUx":4,"overall":4.7,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":3}},"evidence":[{"type":"storefront","url":"https://arcticlabsupply.com/products/retatrutide-10mg","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://arcticlabsupply.com/products/retatrutide-10mg"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":5,"productClarity":2.5,"trustPresentation":2,"conversionUx":4,"overall":4.7,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://arcticlabsupply.com/products/retatrutide-10mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":3}},"auditType":"Anonymous Reta storefront and checkout scan"},"behemothlabz.com":{"domain":"behemothlabz.com","canonicalDomain":"behemothlabz.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"LY3437943","strengths":[],"productUrl":"https://behemothlabz.com/product/retatrutide-peptide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":90892,"productType":"variable","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 147.58","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo","Trustpilot"],"evidenceUrls":["https://behemothlabz.com/affiliate-area/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","TikTok Pixel"],"evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":503,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://behemothlabz.com/shipping-policy/"],"shippingReturnSnippets":["Checkout Guaranteed Enjoy 24/7 customer support, 1st & 3rd party verified 99% purity, and free shipping on orders over $100! Strength Choose an option 5mg 10mg 12mg Clear LY3437943 quantity Add","T Sales and Specials Top 8 Sellers New Products Important Links How To Pay Privacy Policy Shipping Policy Track Your Order Behemothlabz Sitemap Certificate Of Analysis Charity & Donation Upscale","described in our privacy policy . Register Products search Products search Behemoth Labz Shipping Policy | Fast & Reliable Delivery Skip to content [public business email omitted] | [public phone omitted] Prod"],"pluginSignals":["*","advanced-free-flat-shipping-woocommerce","affiliate-wp","age-gate","ajax-search-for-woocommerce","custom-wishlist-plugin","customer-reviews-woocommerce","donation-for-woocommerce","duracelltomi-google-tag-manager","facebook-for-woocommerce","fitness-calculators","formidable","free-gifts-for-woocommerce","gdpr-framework","google-site-kit","gratisfaction-all-in-one-loyalty-contests-referral-program-for-woocommerce","megamenu","omnisend-connect","pixelyoursite","upscale-your-cart","wc-aelia-foundation-classes","woo-discount-rules","woo-discount-rules-pro","woo-social-login","woocommerce","woocommerce-insta-onramp-gateway-jjsfinancial-v.3.23","woocommerce-payments","wordfence-login-security","wp-consent-api","wppopups"]},"payment":{"methods":[{"name":"pr_paypal_post_order_instructions","id":"pr_paypal_post_order_instructions","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"bytenft","id":"bytenft","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"ven","id":"ven","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto","id":"instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"crypto","id":"crypto","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"forumpay","id":"forumpay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","observedAt":"2026-07-27"}],"activeMethodCount":6,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["pr_paypal_post_order_instructions","bytenft","ven","instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto","crypto","forumpay"],"renderedCheckoutLabels":[],"configuredBeforeCart":["pr_paypal_post_order_instructions","ven","instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto","crypto","forumpay"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://behemothlabz.com/bh-checkout-offline/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"PayPal","roles":["manual post-order payment instruction"],"providerClass":"payment_method","sourceToken":"pr_paypal_post_order_instructions","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"bytenft","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"ven","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"ven","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"instaonrampdotto instant payment gateway hostedinstaonrampdotto","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"crypto","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"ForumPay","roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","sourceToken":"forumpay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://behemothlabz.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://forumpay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://behemothlabz.com/product/retatrutide-peptide/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://behemothlabz.com/bh-checkout-offline/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://behemothlabz.com/affiliate-area/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":10,"conversionUx":8,"overall":8.4,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 6 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://behemothlabz.com/product/retatrutide-peptide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://behemothlabz.com/product/retatrutide-peptide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://behemothlabz.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://behemothlabz.com/bh-checkout-offline/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://behemothlabz.com/affiliate-area/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://behemothlabz.com/shipping-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://behemothlabz.com/product/retatrutide-peptide/","https://behemothlabz.com/wp-json/wc/store/v1/products?slug=retatrutide-peptide","https://behemothlabz.com/wp-json/wc/store/v1/cart","https://behemothlabz.com/bh-checkout-offline/","https://behemothlabz.com/affiliate-area/","https://behemothlabz.com/shipping-policy/"],"design":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":10,"conversionUx":8,"overall":8.4,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 6 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://behemothlabz.com/product/retatrutide-peptide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"geneticpeptide.com":{"domain":"geneticpeptide.com","canonicalDomain":"geneticpeptide.com","status":"complete","pagesCrawled":9,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://geneticpeptide.com/product/glp-r-vial-2/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3 (Reta) Vial","strengths":[],"productUrl":"https://geneticpeptide.com/product/glp-r-vial-2/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":2424,"productType":"variable","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 155.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://geneticpeptide.com/product-category/preferred-research/","https://geneticpeptide.com/affiliates/"]},"tracking":{"stack":[],"evidenceUrl":"https://geneticpeptide.com/product/glp-r-vial-2/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":false,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":4.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":[],"shippingReturnEvidenceUrls":["https://geneticpeptide.com/refund-policy/","https://geneticpeptide.com/shipping-policy/"],"shippingReturnSnippets":["GLP-3 (Reta) Vial – Genetic Peptides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F","-3 (Reta) Vial – Genetic Peptides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F","tides Skip to content Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 Free Shipping Orders Over $299.99 F"],"pluginSignals":["*","advanced-coupons-for-woocommerce","advanced-coupons-for-woocommerce-free","age-gate","ajax-search-for-woocommerce","akismet","blockonomics-bitcoin-payments","bytenft-payment-gateway-1.0.17","checkout-fees-for-woocommerce","dfinsell-payment-gateway-1.0.12","elementor","elementor-pro","fluentform","jetpack","magic-login","omnisend-connect","powerpack-elements","variation-swatches-woo","wc-blacklist-manager-premium","woo-product-country-base-restrictions","woocommerce","woocommerce-custom-payment-gateway-pro","woocommerce-gateway-easyprocess-idem","wp-nmi-gateway-pci-woocommerce","yith-woocommerce-gift-cards-premium","yith-woocommerce-product-bundles-premium"]},"payment":{"methods":[{"name":"Pay with Cards / Cash App","id":"site_b_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Card Number *","id":"nmi","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"ACH / Bank Transfer","id":"bytenft","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Bitcoin","id":"amgexpress","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Bitcoin","id":"blockonomics","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":5,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["site_b_gateway","nmi","bytenft","amgexpress","blockonomics"],"renderedCheckoutLabels":[{"id":"site_b_gateway","label":"Pay with Cards / Cash App"},{"id":"bytenft","label":"ACH / Bank Transfer"},{"id":"amgexpress","label":"Bitcoin"},{"id":"blockonomics","label":"Bitcoin"},{"id":"nmi","label":"Card Number *"}],"configuredBeforeCart":["site_b_gateway","nmi","amgexpress","blockonomics"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://geneticpeptide.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"site_b_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cash.app/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmi","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"bytenft","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"amgexpress","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"amgexpress","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Blockonomics","roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","sourceToken":"blockonomics","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.blockonomics.co/merchants","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://geneticpeptide.com/product/glp-r-vial-2/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://geneticpeptide.com/product-category/preferred-research/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":6,"trustPresentation":4.5,"conversionUx":6,"overall":6.1,"reasons":["Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://geneticpeptide.com/product/glp-r-vial-2/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? No Yes Remember me","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://geneticpeptide.com/product/glp-r-vial-2/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://geneticpeptide.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://geneticpeptide.com/product-category/preferred-research/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://geneticpeptide.com/affiliates/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://geneticpeptide.com/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://geneticpeptide.com/refund-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://geneticpeptide.com/shipping-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://geneticpeptide.com/product/glp-r-vial-2/","https://geneticpeptide.com/wp-json/wc/store/v1/products?slug=glp-r-vial-2","https://geneticpeptide.com/wp-json/wc/store/v1/cart","https://geneticpeptide.com/checkout/","https://geneticpeptide.com/product-category/preferred-research/","https://geneticpeptide.com/affiliates/","https://geneticpeptide.com/terms-of-service/","https://geneticpeptide.com/refund-policy/","https://geneticpeptide.com/shipping-policy/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":6,"trustPresentation":4.5,"conversionUx":6,"overall":6.1,"reasons":["Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://geneticpeptide.com/product/glp-r-vial-2/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? No Yes Remember me","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"getprimelabs.com":{"domain":"getprimelabs.com","canonicalDomain":"getprimelabs.com","status":"complete","pagesCrawled":8,"platform":{"name":"Shopify","confidence":"high","evidenceUrl":"https://getprimelabs.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide 10mg — Triple Receptor Agonist (GLP-1 / GIP / Glucagon) — Research Peptide","strengths":["10mg"],"productUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":8826588889226,"productType":"Shopify product","evidenceUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 170.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://getprimelabs.com/policies/shipping-policy"]},"tracking":{"stack":[],"evidenceUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":1,"checkoutPageHttpStatus":null,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://getprimelabs.com/policies/shipping-policy","https://getprimelabs.com/policies/refund-policy"],"shippingReturnSnippets":["N JULY BOGO! Buy 1 Semaglutide 5mg, Get 1 FREE • Use Code: SEMABOGO 🎆 Limited Time Only! FREE SHIPPING ON ORDERS $250+ 10,000+ Happy Researchers FAST SAME DAY SHIPPING WHEN ORDERED BY 3PM CST–","DERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 BY THOUSANDS OF CUSTOMERS HIGH PURITY PEPTIDES! FREE SHIPPING ON ORDERS $250+ FAST SAME DAY SHIPPING WHEN ORDERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 B","DERED BY 3PM CST– WE GOT YOU! RATED 4.9/5 BY THOUSANDS OF CUSTOMERS HIGH PURITY PEPTIDES! FREE SHIPPING ON ORDERS $250+ Home All Products Shop Shop SHOP BY BENEFIT SHOP BY BENEFIT BRAIN HEALTH"],"pluginSignals":[]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://getprimelabs.com/cart","checkoutEvidenceUrl":"https://getprimelabs.com/checkout","observedAt":"2026-07-27"},"grade":"B","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://getprimelabs.com/checkout","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://getprimelabs.com/policies/shipping-policy","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":7,"productClarity":5.5,"trustPresentation":7,"conversionUx":6.5,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible product heading, purchase CTA.","1 image failed to load."],"observedUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15.75,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"evidence":[{"type":"storefront","url":"https://getprimelabs.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://getprimelabs.com/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://getprimelabs.com/checkout","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://getprimelabs.com/policies/shipping-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://getprimelabs.com/cdn/shop/t/2/assets/component-list-payment.css?v=30056613384317824611767677093","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://getprimelabs.com/policies/refund-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://getprimelabs.com/policies/terms-of-service","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 401 ()","Refused to apply style from 'https://getprimelabs.com/products/styles.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled."],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"B","activeRetaCartVerified":true},"pageUrls":["https://getprimelabs.com/","https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","https://getprimelabs.com/cart","https://getprimelabs.com/checkout","https://getprimelabs.com/policies/shipping-policy","https://getprimelabs.com/cdn/shop/t/2/assets/component-list-payment.css?v=30056613384317824611767677093","https://getprimelabs.com/policies/refund-policy","https://getprimelabs.com/policies/terms-of-service"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":7,"productClarity":5.5,"trustPresentation":7,"conversionUx":6.5,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible product heading, purchase CTA.","1 image failed to load."],"observedUrl":"https://getprimelabs.com/products/retatrutide-10mg-triple-receptor-agonist-glp-1-gip-glucagon-research-peptide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15.75,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"greatestpeptides.com":{"domain":"greatestpeptides.com","canonicalDomain":"greatestpeptides.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://greatestpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide 40 mg","strengths":["40 mg"],"productUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":18256,"productType":"simple","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 220.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo"],"evidenceUrls":["https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://greatestpeptides.com/shipping-policy/","https://greatestpeptides.com/refund-policy/","https://greatestpeptides.com/shipping-policy/"],"shippingReturnSnippets":["Product Subtotal Retatrutide 10 mg × 1 $ 220.00 Subtotal $ 220.00 Shipment Free shipping Overnight Shipping: $ 30.00 Total $ 220.00 Credit / Debit Card — Fast & Secure Ch","oses described in our privacy policy . Complete Secure Checkout Secure encrypted checkout Free shipping unlocked COA included with every order Research Use Only — Not for human use ©","color: #3c4043; } @keyframes easyauthnet-gpay-spin { to { transform: rotate(360deg); } } Shipping Policy - greatestpeptides.com 99%+ purity verified Ships in 24 h from USA Secure card checkout &"],"pluginSignals":["*","cookie-law-info","klaviyo","payment-gateway-for-authorize-net-for-woocommerce","pixelyoursite","slicewp","woo-checkout-field-editor-pro","woocommerce","woocommerce-gateway-authorize-net-cim"]},"payment":{"methods":[{"name":"authorize_net_cim_credit_card","id":"authorize_net_cim_credit_card","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"gp_zelle","id":"gp_zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"gp_btc","id":"gp_btc","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"gp_eth","id":"gp_eth","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"gp_usdt","id":"gp_usdt","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"bacs","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"Google Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","observedAt":"2026-07-27"}],"activeMethodCount":6,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["authorize_net_cim_credit_card","gp_zelle","gp_btc","gp_eth","gp_usdt","bacs"],"renderedCheckoutLabels":[],"configuredBeforeCart":["authorize_net_cim_credit_card","gp_zelle","gp_btc","gp_eth","gp_usdt","bacs"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://greatestpeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Authorize.Net","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"authorize_net_cim_credit_card","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.authorize.net/payments.html","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"gp_zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"gp_btc","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"gp_eth","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"gp_usdt","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":10,"trustPresentation":7.5,"conversionUx":10,"overall":8.9,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","1 image failed to load."],"observedUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.592,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"evidence":[{"type":"storefront","url":"https://greatestpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://greatestpeptides.com/product/retatrutide-40-mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://greatestpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://greatestpeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://greatestpeptides.com/wp-content/plugins/payment-gateway-for-authorize-net-for-woocommerce/assets/css/public.css?ver=1.0.18","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://greatestpeptides.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://greatestpeptides.com/refund-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://greatestpeptides.com/terms-and-conditions/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://greatestpeptides.com/","https://greatestpeptides.com/product/retatrutide-40-mg/","https://greatestpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://greatestpeptides.com/wp-json/wc/store/v1/cart","https://greatestpeptides.com/checkout/","https://greatestpeptides.com/wp-content/plugins/woocommerce-gateway-authorize-net-cim/vendor/skyverge/wc-plugin-framework/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=6.1.4","https://greatestpeptides.com/wp-content/plugins/payment-gateway-for-authorize-net-for-woocommerce/assets/css/public.css?ver=1.0.18","https://greatestpeptides.com/shipping-policy/","https://greatestpeptides.com/refund-policy/","https://greatestpeptides.com/terms-and-conditions/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":10,"trustPresentation":7.5,"conversionUx":10,"overall":8.9,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","1 image failed to load."],"observedUrl":"https://greatestpeptides.com/product/retatrutide-40-mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.592,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"heartlandbiolabs.com":{"domain":"heartlandbiolabs.com","canonicalDomain":"heartlandbiolabs.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://heartlandbiolabs.com/product/retatrutide/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://heartlandbiolabs.com/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":247,"productType":"variable","evidenceUrl":"https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 89.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo"],"evidenceUrls":["https://heartlandbiolabs.com/terms-and-conditions/"]},"tracking":{"stack":[],"evidenceUrl":"https://heartlandbiolabs.com/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://heartlandbiolabs.com/shipping-policy/"],"shippingReturnSnippets":["Retatrutide Research Peptide | Triple GIP/GLP-1/Glucagon Agonist | Heartland Bio Labs Free shipping $200+ · Order by 2pm CT, ships today from Tulsa, OK · Research Use Only — Not for human c","art For Research Use Only. Not for Human Consumption. Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart Home Shop Sea","json\\/wc\\/store\\/v1\\/products?related=247&per_page=10\"}]}}] Checkout - Heartland Bio Labs Free shipping $200+ · Order by 2pm CT, ships today from Tulsa, OK · Research Use Only — Not for human c"],"pluginSignals":["*","woo-checkout-field-editor-pro","woocommerce"]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://heartlandbiolabs.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://heartlandbiolabs.com/checkout/","observedAt":"2026-07-27"},"grade":"B","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://heartlandbiolabs.com/product/retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://heartlandbiolabs.com/product/retatrutide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://heartlandbiolabs.com/terms-and-conditions/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":4.5,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","A blocking overlay or gate covers the mobile viewport: Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart."],"observedUrl":"https://heartlandbiolabs.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://heartlandbiolabs.com/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://heartlandbiolabs.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://heartlandbiolabs.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://heartlandbiolabs.com/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://heartlandbiolabs.com/shipping-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"B","activeRetaCartVerified":true},"pageUrls":["https://heartlandbiolabs.com/product/retatrutide/","https://heartlandbiolabs.com/wp-json/wc/store/v1/products?slug=retatrutide","https://heartlandbiolabs.com/wp-json/wc/store/v1/cart","https://heartlandbiolabs.com/checkout/","https://heartlandbiolabs.com/terms-and-conditions/","https://heartlandbiolabs.com/shipping-policy/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":4.5,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","A blocking overlay or gate covers the mobile viewport: Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart."],"observedUrl":"https://heartlandbiolabs.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your cart You are $200.00 away from free shipping. Your cart is empty. Subtotal $0.00 Checkout → Keep Shopping View full cart","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"hydroresearchpeptides.com":{"domain":"hydroresearchpeptides.com","canonicalDomain":"hydroresearchpeptides.com","status":"complete","pagesCrawled":4,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://hydroresearchpeptides.com/product/r40/"},"reta":{"listingStatus":"listing_present_not_currently_purchasable","productName":"H-(R) 40 mg","strengths":["40 mg"],"productUrl":"https://hydroresearchpeptides.com/product/r40/","inStock":true,"purchasable":false,"anonymousCartAdd":false,"productId":10037085,"productType":"simple","evidenceUrl":"https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 350","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":null,"subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":false,"technologyStack":[],"evidenceUrls":[]},"tracking":{"stack":[],"evidenceUrl":"https://hydroresearchpeptides.com/product/r40/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":false,"reviewSignal":false,"ruoNotice":false,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":2.5},"operations":{"cartAccessible":true,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":403,"gates":[],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":[],"pluginSignals":[]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":["mgpay","mnet_gateway","idem","mecom_paypal","alg_custom_gateway_2","my_fingrid_gateway"],"configuredButNotActiveForRetaCart":["mgpay","mnet_gateway","idem","mecom_paypal","alg_custom_gateway_2","my_fingrid_gateway"],"cartEvidenceUrl":"https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://hydroresearchpeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"D","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://hydroresearchpeptides.com/product/r40/","confidence":"high"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8,"visualPolish":6,"productClarity":2.5,"trustPresentation":2.5,"conversionUx":4,"overall":4.6,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://hydroresearchpeptides.com/product/r40/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://hydroresearchpeptides.com/product/r40/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://hydroresearchpeptides.com/checkout/","accessedAt":"2026-07-27"}],"errors":[""H-(R) 40 mg" is not available for purchase.","Failed to load resource: the server responded with a status of 403 ()"],"statusEvidence":{"listing":"listing_present_not_currently_purchasable","verifiedAt":"2026-07-27","storefrontHttpStatus":403,"evidenceGrade":"B","activeRetaCartVerified":false},"pageUrls":["https://hydroresearchpeptides.com/product/r40/","https://hydroresearchpeptides.com/wp-json/wc/store/v1/products?slug=r40","https://hydroresearchpeptides.com/wp-json/wc/store/v1/cart","https://hydroresearchpeptides.com/checkout/"],"design":{"viewport":"390x844","mobileUsability":8,"visualPolish":6,"productClarity":2.5,"trustPresentation":2.5,"conversionUx":4,"overall":4.6,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://hydroresearchpeptides.com/product/r40/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"ignitepeptides.com":{"domain":"ignitepeptides.com","canonicalDomain":"ignitepeptides.com","status":"complete","pagesCrawled":12,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3 (RT) 10mg","strengths":["10mg"],"productUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":2742,"productType":"simple","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 75.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp","https://ignitepeptides.com/affiliate/","https://ignitepeptides.com/affiliate-registration/","https://ignitepeptides.com/affiliate-login/","https://ignitepeptides.com/affiliate-terms-of-use/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":3.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://ignitepeptides.com/shipping-and-returns/"],"shippingReturnSnippets":["pping & Handling times: USPS Standard Shipping (3-6 Days): Once your order is dispatched, delivery is expected within 3-6 business days. USPS Express Shipping (2-4 Days): Once your order i","ithin 3-6 business days. USPS Express Shipping (2-4 Days): Once your order is dispatched, delivery is expected within 2-4 business days. Orders placed on weekends will be shipped on the ne","due to the courier. Once a parcel leaves our fulfillment center, USPS has full control of delivery times and there’s nothing we can do about it unfortunately, and we cannot refund the ship"],"pluginSignals":["*","advanced-coupons-for-woocommerce","advanced-coupons-for-woocommerce-free","affiliate-wp","age-gate","aria-accessibility-toolkit","commercegurus-commercekit","elementor","elementor-pro","google-site-kit","jet-engine","jet-search","jet-woo-builder","jetpack","omnisend-connect","peptipay_free","pixelyoursite","simple-cloudflare-turnstile","wc-refund-giftcard","woo-discount-rules","woo-discount-rules-pro","woocommerce","wpforms","wpforms-user-registration"]},"payment":{"methods":[{"name":"Same-Day Bank Payment","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Venmo","id":"peptipay_venmo","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay securely with Cash App, Google Pay and Apple Pay","id":"clkk","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","observedAt":"2026-07-27"}],"activeMethodCount":3,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","peptipay_venmo","clkk"],"renderedCheckoutLabels":[{"id":"linkmoney","label":"Same-Day Bank Payment"},{"id":"peptipay_venmo","label":"Venmo"},{"id":"clkk","label":"Pay securely with Cash App, Google Pay and Apple Pay"}],"configuredBeforeCart":["linkmoney","peptipay_venmo","clkk"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://ignitepeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"peptipay_venmo","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://venmo.com/business/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"clkk","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cash.app/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":9,"trustPresentation":3.5,"conversionUx":8,"overall":7.1,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"RESTRICTED RESEARCH PRODUCTS For qualified researchers only. Not for human or veterinary use, diagnosis, treatment, or consumption. Please read and confirm the following statements","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://ignitepeptides.com/product/glp-3-rt-10mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://ignitepeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://ignitepeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/affiliate/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/affiliate-registration/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/affiliate-login/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/shipping-and-returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://ignitepeptides.com/affiliate-terms-of-use/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 404 ()","requestStorageAccess: Permission denied."],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://ignitepeptides.com/product/glp-3-rt-10mg/","https://ignitepeptides.com/wp-json/wc/store/v1/products?slug=glp-3-rt-10mg","https://ignitepeptides.com/wp-json/wc/store/v1/cart","https://ignitepeptides.com/checkout/","https://ignitepeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","https://ignitepeptides.com/wp-content/uploads/2025/07/ignite-peptides-affiliate-banner.webp","https://ignitepeptides.com/affiliate/","https://ignitepeptides.com/affiliate-registration/","https://ignitepeptides.com/affiliate-login/","https://ignitepeptides.com/shipping-and-returns/","https://ignitepeptides.com/terms-and-conditions/","https://ignitepeptides.com/affiliate-terms-of-use/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":9,"trustPresentation":3.5,"conversionUx":8,"overall":7.1,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://ignitepeptides.com/product/glp-3-rt-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"RESTRICTED RESEARCH PRODUCTS For qualified researchers only. Not for human or veterinary use, diagnosis, treatment, or consumption. Please read and confirm the following statements","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"labtrustpeptides.com":{"domain":"labtrustpeptides.com","canonicalDomain":"labtrustpeptides.com","status":"complete","pagesCrawled":9,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://labtrustpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide 10mg — Triple Agonist GLP-1/GIP/Glucagon Research Peptide","strengths":["10mg"],"productUrl":"https://labtrustpeptides.com/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1937,"productType":"simple","evidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 149.99","currency":"USD","secondaryIndexPricePerMg":"$12.75","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":true,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://labtrustpeptides.com/shipping-info/"]},"tracking":{"stack":["Google Tag Manager"],"evidenceUrl":"https://labtrustpeptides.com/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides","independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://labtrustpeptides.com/shipping-info/","https://labtrustpeptides.com/returns/","https://labtrustpeptides.com/refund-policy/"],"shippingReturnSnippets":["ping Info Contact Us FAQS Returns Research Insights legal Privacy Policy Terms of Service Refund Policy Privacy Policy Terms of Service Refund Policy © Labtrustpeptides.com Search Home Products","ights legal Privacy Policy Terms of Service Refund Policy Privacy Policy Terms of Service Refund Policy © Labtrustpeptides.com Search Home Products All Products Retatrutide Tirzepatide BPC-157","by 15,000+ Researchers \\n Consistent purity. Verified documentation. Reliable cold-chain delivery. \\n \\n 🔥 Must-See Reta Offer · Click to View Home Products All Products Retatrutide Tirz"],"pluginSignals":["*","all-in-one-seo-pack","elementor","elementor-pro","fluentform","mycryptocheckout","safe-svg","woo-newsletter-optin","woocommerce"]},"payment":{"methods":[{"name":"bacs","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"mycryptocheckout","id":"mycryptocheckout","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["bacs","mycryptocheckout"],"renderedCheckoutLabels":[],"configuredBeforeCart":["bacs","mycryptocheckout"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://labtrustpeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"mycryptocheckout","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://labtrustpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://labtrustpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://labtrustpeptides.com/checkout/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://labtrustpeptides.com/shipping-info/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8,"visualPolish":8,"productClarity":8.5,"trustPresentation":10,"conversionUx":8,"overall":8.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://labtrustpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":2}},"evidence":[{"type":"storefront","url":"https://labtrustpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://labtrustpeptides.com/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://labtrustpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://labtrustpeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/lab-trust-peptides","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://labtrustpeptides.com/shipping-info/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://labtrustpeptides.com/returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://labtrustpeptides.com/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://labtrustpeptides.com/refund-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://labtrustpeptides.com/","https://labtrustpeptides.com/product/retatrutide/","https://labtrustpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://labtrustpeptides.com/wp-json/wc/store/v1/cart","https://labtrustpeptides.com/checkout/","https://labtrustpeptides.com/shipping-info/","https://labtrustpeptides.com/returns/","https://labtrustpeptides.com/terms-of-service/","https://labtrustpeptides.com/refund-policy/"],"design":{"viewport":"390x844","mobileUsability":8,"visualPolish":8,"productClarity":8.5,"trustPresentation":10,"conversionUx":8,"overall":8.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://labtrustpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":2}},"auditType":"Anonymous Reta storefront and checkout scan"},"lifelinkresearch.com":{"domain":"lifelinkresearch.com","canonicalDomain":"lifelinkresearch.com","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://lifelinkresearch.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide (GLP-3) 20mg","strengths":["20mg"],"productUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":12801,"productType":"simple","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 200.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":true,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://lifelinkresearch.com/shipping-policy/"]},"tracking":{"stack":["Google Tag Manager","Meta Pixel"],"evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://lifelinkresearch.com/shipping-policy/","https://lifelinkresearch.com/refund-and-returns-policy/"],"shippingReturnSnippets":["9%+ Purity | Fast US Shipping Skip to content Order within 21h 2m for same day dispatch | Free shipping on orders $250+ | Free Bacteriostatic Water 30ml with $500+ Purchase Order within --h --m","tatic Water 30ml with $500+ Purchase Order within --h --m for same day shipping Mon-Fri • Free shipping on orders $250+ • Free Bacteriostatic Water 30ml with $500+ Purchase Order within --h --m","tatic Water 30ml with $500+ Purchase Order within --h --m for same day shipping Mon-Fri • Free shipping on orders $250+ • Free Bacteriostatic Water 30ml with $500+ Purchase Order within 21h 2m"],"pluginSignals":["*","address-autocomplete","address-validation-and-auto-complete-plugin","advanced-woo-search","cardsshield-gateway-stripe","cart-for-woocommerce","checkout-fees-for-woocommerce","custom-payment-gateways-woocommerce","disclaimer-popup","duracelltomi-google-tag-manager","elementor","elementor-pro","flexible-shipping","flexible-shipping-ups","flexible-shipping-usps","funnel-builder","funnel-builder-pro","gms_plugin_wordpress-2.0.2","header-footer-elementor","jetpack","maxtdesign-role-based-pricing","omnisend-connect","shippingeasy-for-wp-ecommerce","sublium-subscriptions-for-woocommerce","woo-cart-abandonment-recovery","woo-discount-rules","woo-product-bundle","woo-variation-swatches","woocommerce","wp-loyalty-rules"]},"payment":{"methods":[{"name":"mecom_stripe","id":"mecom_stripe","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"BTCPay (Get 3% Off on your purchase)","id":"amgexpress","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"BTCPay (Get 3% Off on your purchase)","id":"btcpaygf_default","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","observedAt":"2026-07-27"}],"activeMethodCount":3,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["mecom_stripe","amgexpress","btcpaygf_default"],"renderedCheckoutLabels":[{"id":"amgexpress","label":"BTCPay (Get 3% Off on your purchase)"},{"id":"btcpaygf_default","label":"BTCPay (Get 3% Off on your purchase)"}],"configuredBeforeCart":["mecom_stripe","amgexpress","btcpaygf_default"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://lifelinkresearch.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Stripe","roles":["payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"mecom_stripe","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://stripe.com/resources/more/payment-service-providers","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"BTCPay Server","roles":["self-hosted crypto payment server"],"providerClass":"crypto_payment_provider","sourceToken":"amgexpress","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://docs.btcpayserver.org/Guide/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"BTCPay Server","roles":["self-hosted crypto payment server"],"providerClass":"crypto_payment_provider","sourceToken":"btcpaygf_default","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://docs.btcpayserver.org/Guide/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://lifelinkresearch.com/shipping-policy/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":10,"trustPresentation":7.5,"conversionUx":10,"overall":8.9,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","1 image failed to load."],"observedUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"evidence":[{"type":"storefront","url":"https://lifelinkresearch.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://lifelinkresearch.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://lifelinkresearch.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://lifelinkresearch.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://lifelinkresearch.com/refund-and-returns-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://lifelinkresearch.com/terms-condition/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://lifelinkresearch.com/","https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","https://lifelinkresearch.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://lifelinkresearch.com/wp-json/wc/store/v1/cart","https://lifelinkresearch.com/checkout/","https://lifelinkresearch.com/shipping-policy/","https://lifelinkresearch.com/refund-and-returns-policy/","https://lifelinkresearch.com/terms-condition/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":10,"trustPresentation":7.5,"conversionUx":10,"overall":8.9,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","1 image failed to load."],"observedUrl":"https://lifelinkresearch.com/product/retatrutide-glp-3-20mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"luxaralabs.com":{"domain":"luxaralabs.com","canonicalDomain":"luxaralabs.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://luxaralabs.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://luxaralabs.com/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1185,"productType":"variable","evidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 90.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Subscription or auto-ship continuity","subscriptionDetected":true,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":true,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["Klaviyo","GoAffPro"],"evidenceUrls":["https://luxaralabs.com/refund_returns/"]},"tracking":{"stack":["Google Tag Manager"],"evidenceUrl":"https://luxaralabs.com/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":false,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":[],"shippingReturnEvidenceUrls":["https://luxaralabs.com/refund_returns/"],"shippingReturnSnippets":["eptides, Backed by Science 99%+ Purity. Trusted by those who value precision. Canada-wide delivery in 1-3 days. USA delivery in 3-5 days. Shop Peptides Now Lab Results About Us Research-Fo","99%+ Purity. Trusted by those who value precision. Canada-wide delivery in 1-3 days. USA delivery in 3-5 days. Shop Peptides Now Lab Results About Us Research-Focused Canadian Peptide Sup","bulk discount on qualified orders of 10+ vials ✓ Ships from Ontario with fast 1 to 3 day delivery across Canada ✓ Secure checkout, discreet packaging, and responsive support At Luxara Lab"],"pluginSignals":["*","age-gate","ajax-search-for-woocommerce","checkout-fees-for-woocommerce","duracelltomi-google-tag-manager","elementor","elementor-pro","elementskit-lite","essential-addons-for-elementor-lite","fluentform","klaviyo","woo-cart-abandonment-recovery","woocommerce","woocommerce-side-cart-premium","wpforms","wt-smart-coupons-for-woocommerce"]},"payment":{"methods":[{"name":"cheque","id":"cheque","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle - USD payment","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["cheque","bacs"],"renderedCheckoutLabels":[{"id":"bacs","label":"Zelle - USD payment"}],"configuredBeforeCart":["cheque","bacs"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://luxaralabs.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Manual check or cash on delivery","roles":["manual payment method"],"providerClass":"payment_method","sourceToken":"cheque","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://luxaralabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://luxaralabs.com/product/retatrutide/","confidence":"high"},{"claim":"Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://luxaralabs.com/refund_returns/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":6.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://luxaralabs.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Luxara Research Company Age and Research Use Confirmation You must be at least 21 years old and a research professional to proceed. Do you confirm that you meet these requirements?","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://luxaralabs.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://luxaralabs.com/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://luxaralabs.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://luxaralabs.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://luxaralabs.com/refund_returns/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://luxaralabs.com/","https://luxaralabs.com/product/retatrutide/","https://luxaralabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://luxaralabs.com/wp-json/wc/store/v1/cart","https://luxaralabs.com/checkout/","https://luxaralabs.com/refund_returns/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":6.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://luxaralabs.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Luxara Research Company Age and Research Use Confirmation You must be at least 21 years old and a research professional to proceed. Do you confirm that you meet these requirements?","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"milehighcompounds.is":{"domain":"milehighcompounds.is","canonicalDomain":"milehighcompounds.is","status":"complete","pagesCrawled":7,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"MHC-3 RT","strengths":[],"productUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":63515,"productType":"variation","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 279.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot","GoAffPro"],"evidenceUrls":["https://milehighcompounds.is/terms-conditions/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","TikTok Pixel"],"evidenceUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":3.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["are calculated and collected at checkout — no surprise charges or customs holds at delivery. ✈ International Shipping Notice Orders shipping outside the United States are proc","tained or deleted in accordance with the Privacy Policy and applicable law. 6. Shipping & Delivery Orders are typically shipped within 1–2 business days after payment confirmation. Same-da","circumstance beyond our reasonable control. Title and risk of loss pass to the buyer upon delivery of the package to the carrier. 7. Refunds & Returns We accept unused, unopened product re"],"pluginSignals":["*","back-in-stock-notifier-for-woocommerce","bulletinwp-pro","cart-for-woocommerce","checkout-fees-for-woocommerce","elementor","facebook-for-woocommerce","funnel-builder","funnel-builder-pro","google-listings-and-ads","google-site-kit","gtm-server-side","js_composer_salient","metorik-helper","microsoft-advertising-universal-event-tracking-uet","omnisend-connect","pepreviews-pro","salient-core","salient-portfolio","slicewp","tiktok-for-business","trustpilot-reviews","woo-checkout-field-editor-pro","woo-discount-rules","woo-discount-rules-pro","woocommerce","woocommerce-shipping","woocommerce-sstg-payments","wp-nmi-gateway-pci-woocommerce","wpforms-lite"]},"payment":{"methods":[{"name":"Card Number *","id":"nmi","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Credit/Debit Card (MASTERCARD)","id":"sstg_payments","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Same-Day Bank Payment","id":"maef_child_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Same-Day Bank Payment","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["nmi","sstg_payments","maef_child_gateway","linkmoney"],"renderedCheckoutLabels":[{"id":"nmi","label":"Card Number *"},{"id":"sstg_payments","label":"Credit/Debit Card (MASTERCARD)"},{"id":"maef_child_gateway","label":"Same-Day Bank Payment"},{"id":"linkmoney","label":"Same-Day Bank Payment"}],"configuredBeforeCart":["nmi","sstg_payments","maef_child_gateway","linkmoney"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://milehighcompounds.is/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmi","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"sstg","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"sstg_payments","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"maef child","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"maef_child_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://milehighcompounds.is/terms-conditions/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":7,"productClarity":2.5,"trustPresentation":3.5,"conversionUx":7,"overall":5.8,"reasons":["Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F","accessedAt":"2026-07-27"},{"type":"product","url":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://milehighcompounds.is/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://milehighcompounds.is/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://milehighcompounds.is/terms-conditions/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://milehighcompounds.is/product/mhc-3-rt/","https://milehighcompounds.is/research-access/?redirect_to=%2Fproduct%2Fmhc-3-rt%2F","https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","https://milehighcompounds.is/wp-json/wc/store/v1/products?slug=mhc-3-rt","https://milehighcompounds.is/wp-json/wc/store/v1/cart","https://milehighcompounds.is/checkout/","https://milehighcompounds.is/terms-conditions/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":7,"productClarity":2.5,"trustPresentation":3.5,"conversionUx":7,"overall":5.8,"reasons":["Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://milehighcompounds.is/product/mhc-3-rt/?attribute_vial-size=50mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"mytidelab.com":{"domain":"mytidelab.com","canonicalDomain":"mytidelab.com","status":"complete","pagesCrawled":6,"platform":{"name":"Next.js","confidence":"high","evidenceUrl":"https://mytidelab.com/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://mytidelab.com/products/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"MTL-RETA","productType":"JSON-LD product","evidenceUrl":"https://mytidelab.com/products/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 99.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Free-shipping threshold","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://mytidelab.com/fast-shipping-truck-clean.png","https://mytidelab.com/affiliate"]},"tracking":{"stack":[],"evidenceUrl":"https://mytidelab.com/products/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":9},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://mytidelab.com/fast-shipping-truck-clean.png","https://mytidelab.com/shipping"],"shippingReturnSnippets":["he ordering process felt simple. ✓ Verified Mytide Customer Professional from checkout to delivery. ✓ Verified Mytide Customer Exactly what our lab needed. ✓ Verified Mytide Customer COA w","mer Simple ordering for our lab. ✓ Verified Mytide Customer Professional from checkout to delivery. ✓ Verified Mytide Customer COA was easy to verify. ✓ Verified Mytide Customer Clean pack","Quality Standards Built for clean, reliable research sourcing. Shipping Fast, secure U.S. delivery with careful packaging and tracking on every order. U.S.-Based Fulfillment Domestic opera"],"pluginSignals":[]},"payment":{"methods":[{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://mytidelab.com/products/retatrutide","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://mytidelab.com/products/retatrutide","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://mytidelab.com/products/retatrutide","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://mytidelab.com/products/retatrutide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://mytidelab.com/products/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://mytidelab.com/products/retatrutide","confidence":"high"},{"claim":"Free-shipping threshold detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://mytidelab.com/fast-shipping-truck-clean.png","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":9,"conversionUx":3,"overall":7.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://mytidelab.com/products/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Researcher verification Confirm your eligibility before entering this research-use-only site. Mytide Lab sells research peptides exclusively to qualified researchers and laboratori","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://mytidelab.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://mytidelab.com/products/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://mytidelab.com/fast-shipping-truck-clean.png","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://mytidelab.com/affiliate","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://mytidelab.com/shipping","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://mytidelab.com/terms","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://mytidelab.com/","https://mytidelab.com/products/retatrutide","https://mytidelab.com/fast-shipping-truck-clean.png","https://mytidelab.com/affiliate","https://mytidelab.com/shipping","https://mytidelab.com/terms"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":9,"conversionUx":3,"overall":7.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://mytidelab.com/products/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Researcher verification Confirm your eligibility before entering this research-use-only site. Mytide Lab sells research peptides exclusively to qualified researchers and laboratori","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"neb.co":{"domain":"neb.co","canonicalDomain":"newbiorx.com","status":"complete","pagesCrawled":9,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://newbiorx.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"RETATRUTIDE RX MULTIDOSE 16mg PEN","strengths":["16mg"],"productUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":11953,"productType":"simple","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 285.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free","https://newbiorx.com/shipping-and-payments/"],"shippingReturnSnippets":["ice \\n Shipping Schedule: Orders placed Thursday–Sunday ship Tuesday for Wednesday delivery. Orders placed Monday–Wednesday ship Thursday for Friday delivery \\n \\n \",\"descript","day for Wednesday delivery. Orders placed Monday–Wednesday ship Thursday for Friday delivery \\n \\n \",\"description\":\"\",\"on_sale\":false,\"prices\":{\"price\":\"28500\",\"regular_price\":\"28500","t name * Country / Region * United States (US) Street address * Apt, suite, gate code, or delivery instructions (optional) Town / City * State * Select an option… Alabama Alaska Ari"],"pluginSignals":["*","age-gate","bankful","cashapp-gateway-woocommerce","checkout-upsell-and-order-bumps","conditional-shipping-for-woocommerce","duracelltomi-google-tag-manager","elementor","free-gifts-for-woocommerce","google-site-kit","hubspot-woocommerce-hpos-compatibility","ibs-upsells","kb-easter-egg-coupons","kb-peptide-auto-content","kb-wc-custom-login","kb-wc-role-based-product-visibility","king-baldwin-elementor","mailchimp-for-wp","neb-age-gate-tracker","neb-lp-tracker","newsletter","nexteng-sub-site-connector","revslider","venmo-gateway-woocommerce","wc-woopricely","woocommerce","woocommerce-avatax","woocommerce-smart-coupons"]},"payment":{"methods":[{"name":"eCheck- Save 5% off!","id":"nexteng_redirect","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Venmo","id":"bankful_hosted_gateway","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Venmo","id":"venmo_gateway_1","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","observedAt":"2026-07-27"}],"activeMethodCount":3,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["nexteng_redirect","bankful_hosted_gateway","venmo_gateway_1"],"renderedCheckoutLabels":[{"id":"nexteng_redirect","label":"eCheck- Save 5% off!"},{"id":"bankful_hosted_gateway","label":"Venmo"},{"id":"venmo_gateway_1","label":"Venmo"}],"configuredBeforeCart":["nexteng_redirect","bankful_hosted_gateway","venmo_gateway_1"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://newbiorx.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"nexteng redirect","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"nexteng_redirect","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bankful","roles":["payment gateway","payment service provider","conditional payment facilitator"],"providerClass":"gateway_or_psp","sourceToken":"bankful_hosted_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://bankful.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"venmo_gateway_1","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://newbiorx.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://venmo.com/business/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":8.3,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? NO YES Remember me All products on NewBioRx are intended solely for in vitro research and laboratory experimentation. These producsts sold on this web","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://newbiorx.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://newbiorx.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://newbiorx.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://newbiorx.com/terms/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://newbiorx.com/shipping-and-payments/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://neb.co/","https://newbiorx.com/","https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","https://newbiorx.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://newbiorx.com/wp-json/wc/store/v1/cart","https://newbiorx.com/checkout/","https://newbiorx.com/wp-content/plugins/conditional-shipping-for-woocommerce/frontend/css/woo-conditional-shipping.css?ver=3.6.1.free","https://newbiorx.com/terms/","https://newbiorx.com/shipping-and-payments/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":8.3,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://newbiorx.com/product/retatrutide-multidose-usp-pen-15mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? NO YES Remember me All products on NewBioRx are intended solely for in vitro research and laboratory experimentation. These producsts sold on this web","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"northwestpeptides.com":{"domain":"northwestpeptides.com","canonicalDomain":"northwestpeptides.com","status":"complete","pagesCrawled":7,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://northwestpeptides.com/product/glp-3/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3","strengths":["10mg","15mg","20mg","30mg","50mg","60mg"],"productUrl":"https://northwestpeptides.com/product/glp-3/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":188,"productType":"variable","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 109.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://northwestpeptides.com/product/glp-3/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://northwestpeptides.com/shipping-policy/"],"shippingReturnSnippets":["e accepted through IDEM Pay. Venmo and Zelle are currently our preferred payment methods. Free Shipping on orders $150+ - Free BAC water with every purchase. Home Shop About us Resources Contac","bout us Resources Contact us Home Shop About us Resources Contact us Legal Privacy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Privacy Policy Shipping Policy Terms of S","acy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Privacy Policy Shipping Policy Terms of Service Research Use Only (RUO) Policy Contact Us Email: [email protected] Phone"],"pluginSignals":["*","affiliate-wp","chargx-woocommerce-plugin-main","checkout-upsell-and-order-bumps","elementor","elementor-pro","jetpack","nwpep-coa-manager","omnisend-connect","pojo-accessibility","upsellwp-mini-cart","wc-zelle","woocommerce","woolentor-addons"]},"payment":{"methods":[{"name":"bacs","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"zelle","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"psifi","id":"psifi","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"idem","id":"idem","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["bacs","zelle","psifi","idem"],"renderedCheckoutLabels":[],"configuredBeforeCart":["bacs","zelle","psifi","idem"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://northwestpeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"psifi","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"psifi","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"IDEM","roles":["bank checkout integration"],"providerClass":"unresolved_provider","sourceToken":"idem","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://northwestpeptides.com/product/glp-3/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://northwestpeptides.com/checkout/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":9,"productClarity":7,"trustPresentation":8.5,"conversionUx":8,"overall":8.3,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://northwestpeptides.com/product/glp-3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://northwestpeptides.com/product/glp-3/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://northwestpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://northwestpeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://northwestpeptides.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://northwestpeptides.com/terms-of-service/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 522 ()"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://northwestpeptides.com/product/glp-3/","https://northwestpeptides.com/wp-json/wc/store/v1/products?slug=glp-3","https://northwestpeptides.com/wp-json/wc/store/v1/cart","https://northwestpeptides.com/checkout/","https://northwestpeptides.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","https://northwestpeptides.com/shipping-policy/","https://northwestpeptides.com/terms-of-service/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":9,"productClarity":7,"trustPresentation":8.5,"conversionUx":8,"overall":8.3,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://northwestpeptides.com/product/glp-3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"nosbarbersupply.com":{"domain":"nosbarbersupply.com","canonicalDomain":"nosbarbersupply.com","status":"complete","pagesCrawled":10,"platform":{"name":"Shopify","confidence":"high","evidenceUrl":"https://nosbarbersupply.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"HOLAS RETATRUTIDE PEPTIDE","strengths":[],"productUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":8684748996696,"productType":"Shopify product","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 199.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Subscription or auto-ship continuity","subscriptionDetected":true,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":false,"technologyStack":["Klaviyo","Judge.me"],"evidenceUrls":["https://nosbarbersupply.com/policies/shipping-policy","https://nosbarbersupply.com/pages/nos-rewards","https://nosbarbersupply.com/policies/subscription-policy"]},"tracking":{"stack":["Microsoft Clarity"],"evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":false,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":4.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":1,"checkoutPageHttpStatus":null,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://nosbarbersupply.com/policies/shipping-policy","https://nosbarbersupply.com/policies/refund-policy"],"shippingReturnSnippets":["Estimated total $0.00 USD Taxes, discounts and shipping calculated at checkout. Check out Free Shipping Order $125+ Direct Distributor 14+ Brands USA Fulfillment & Customer Service Family Owned","USA Fulfillment & Customer Service Family Owned & Operated Established 2017 Fully Insured Free Shipping Order $125+ Direct Distributor 14+ Brands USA Fulfillment & Customer Service Family Owned"],"pluginSignals":[]},"payment":{"methods":[{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"Apple Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"Google Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://nosbarbersupply.com/cart","checkoutEvidenceUrl":"https://nosbarbersupply.com/checkout","observedAt":"2026-07-27"},"grade":"B","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"Apple Pay","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://nosbarbersupply.com/checkout","confidence":"high"},{"claim":"Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://nosbarbersupply.com/policies/shipping-policy","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":7.5,"trustPresentation":4.5,"conversionUx":6.5,"overall":7.7,"reasons":["Mobile DOM is missing a clearly visible purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://nosbarbersupply.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://nosbarbersupply.com/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://nosbarbersupply.com/checkout","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/policies/shipping-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/cdn/shop/t/5/assets/component-list-payment.css?v=69253961410771838501765219478","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/pages/nos-rewards","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/policies/refund-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/policies/terms-of-service","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nosbarbersupply.com/policies/subscription-policy","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 401 ()","Failed to load resource: the server responded with a status of 404 ()"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"B","activeRetaCartVerified":true},"pageUrls":["https://nosbarbersupply.com/","https://nosbarbersupply.com/products/holas-retatrutide-peptide","https://nosbarbersupply.com/cart","https://nosbarbersupply.com/checkout","https://nosbarbersupply.com/policies/shipping-policy","https://nosbarbersupply.com/cdn/shop/t/5/assets/component-list-payment.css?v=69253961410771838501765219478","https://nosbarbersupply.com/pages/nos-rewards","https://nosbarbersupply.com/policies/refund-policy","https://nosbarbersupply.com/policies/terms-of-service","https://nosbarbersupply.com/policies/subscription-policy"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":7.5,"trustPresentation":4.5,"conversionUx":6.5,"overall":7.7,"reasons":["Mobile DOM is missing a clearly visible purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://nosbarbersupply.com/products/holas-retatrutide-peptide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"nurevpeptides.com":{"domain":"nurevpeptides.com","canonicalDomain":"nurevpeptides.com","status":"complete","pagesCrawled":9,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://nurevpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"RETA 30 GLP-3 RT 30 MG","strengths":["30 MG"],"productUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1963,"productType":"simple","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 269.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://nurevpeptides.com/shipping-policy/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel"],"evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://nurevpeptides.com/shipping-policy/","https://nurevpeptides.com/refund-return-policy/"],"shippingReturnSnippets":["ping may experience delays that are outside of our control. While USPS provides estimated delivery timeframes, these timelines are not guaranteed and may vary due to weather, carrier backl","and premium fast shipping through FedEx , for those who prefer a faster and more reliable delivery option. If you need your order sooner, we recommend selecting one of the expedited shippi","ommitted to providing high-quality research chemicals to the American market. QUICK LINKS Shipping Policy Disclaimer Terms & Conditions Privacy Policy FAQ COA's Indemnity Waiver Agreement SMS Ter"],"pluginSignals":["*","addify-refer-a-friend","ajax-search-for-woocommerce","chatway-live-chat","complianz-gdpr","custom-payment-gateways-woocommerce","edebit-direct-draft-yodlee-gateway","elementor","elementor-pro","elementskit-lite","google-site-kit","jetpack","printful-shipping-for-woocommerce","woocommerce","woocommerce-side-cart-premium","woocommerce-wholesale-lead-capture","wp-subscribe-form"]},"payment":{"methods":[{"name":"cod","id":"cod","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"cheque","id":"cheque","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"edd_draft_yodlee_gateway","id":"edd_draft_yodlee_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","observedAt":"2026-07-27"}],"activeMethodCount":3,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["cod","cheque","edd_draft_yodlee_gateway"],"renderedCheckoutLabels":[],"configuredBeforeCart":["cheque","edd_draft_yodlee_gateway"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://nurevpeptides.com/cart/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Manual check or cash on delivery","roles":["manual payment method"],"providerClass":"payment_method","sourceToken":"cod","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Manual check or cash on delivery","roles":["manual payment method"],"providerClass":"payment_method","sourceToken":"cheque","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"eDebit Direct","roles":["bank payment provider","card processing provider"],"providerClass":"bank_payment_provider","sourceToken":"edd_draft_yodlee_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://edebitdirect.com/low-fee-payment-processing/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://nurevpeptides.com/cart/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://nurevpeptides.com/shipping-policy/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":7,"trustPresentation":8,"conversionUx":6,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Researcher Verification Our company sells research products exclusively to qualified researchers and laboratories for in vitro and laboratory use. Please confirm before continuing.","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://nurevpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://nurevpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://nurevpeptides.com/cart/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nurevpeptides.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nurevpeptides.com/terms/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nurevpeptides.com/sms-terms/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nurevpeptides.com/refund-return-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://nurevpeptides.com/","https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","https://nurevpeptides.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","https://nurevpeptides.com/wp-json/wc/store/v1/cart","https://nurevpeptides.com/cart/","https://nurevpeptides.com/shipping-policy/","https://nurevpeptides.com/terms/","https://nurevpeptides.com/sms-terms/","https://nurevpeptides.com/refund-return-policy/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":7,"trustPresentation":8,"conversionUx":6,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://nurevpeptides.com/product/glp-3-rt-30mg-retatrutride/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Researcher Verification Our company sells research products exclusively to qualified researchers and laboratories for in vitro and laboratory use. Please confirm before continuing.","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"nxtstate.co":{"domain":"nxtstate.co","canonicalDomain":"nxtstate.co","status":"complete","pagesCrawled":13,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://nxtstate.co/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide","strengths":["10mg"],"productUrl":"https://nxtstate.co/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1223,"productType":"simple","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 79.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css","https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css","https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css","https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","TikTok Pixel"],"evidenceUrl":"https://nxtstate.co/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":9},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://nxtstate.co/shipping/","https://nxtstate.co/refund_returns/"],"shippingReturnSnippets":["NXTSTATE FREE SHIPPING OVER $200 · ORDERS SHIP IN 24 HRS · THIRD-PARTY LAB TESTED Shop Lab Reports About Contact","fied purity 99%+ PURITY High purity peptides you can trust DISCREET SHIPPING Fast, secure delivery to your door RESEARCH USE ONLY For laboratory research purposes Trusted peptides. Proven","Your Cart ✕ Add a coupon code APPLY Subtotal $0.00 Shipping calculated at checkout Free shipping on orders over $200 CHECKOUT → Visa & Mastercard accepted · Secure checkout"],"pluginSignals":["*","affiliate-wp","back-in-stock-notifier-for-woocommerce","blocksy-companion","embed-pdf-viewer","facebook-for-woocommerce","google-listings-and-ads","ithemeland-free-gifts-for-woocommerce","jetpack","litespeed-cache","mailin","momo-venmo","mps-gateway","optinmonster","pixelyoursite","tier-pricing-table","tiktok-for-woocommerce","trustpilot-reviews","wc-cashapp","wc-zelle","wll-loyalty-launcher","woo-cart-abandonment-recovery","woocommerce","wployalty"]},"payment":{"methods":[{"name":"Cardholder Name","id":"mps_v_2d_15","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Cash App","id":"cashapp","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Venmo","id":"venmo","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nxtstate.co/product/retatrutide/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://nxtstate.co/product/retatrutide/","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["mps_v_2d_15","zelle","cashapp","venmo"],"renderedCheckoutLabels":[{"id":"mps_v_2d_15","label":"Cardholder Name"},{"id":"zelle","label":"Zelle"},{"id":"cashapp","label":"Cash App"},{"id":"venmo","label":"Venmo"}],"configuredBeforeCart":["mps_v_2d_15","zelle","cashapp","venmo"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://nxtstate.co/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"mps v 2d 15","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"mps_v_2d_15","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"cashapp","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cash.app/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"venmo","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://nxtstate.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://venmo.com/business/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://nxtstate.co/product/retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://nxtstate.co/product/retatrutide/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://nxtstate.co/product/retatrutide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":9,"conversionUx":6,"overall":8.1,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://nxtstate.co/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"SEARCH SHOP ALL PRODUCTS METABOLIC RECOVERY MIND NASAL ANTI-AGING HAIR LAB SUPPLIES STANDARDS LAB REPORTS ABOUT CONTACT MY ACCOUNT FOR RESEARCH USE ONLY.","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://nxtstate.co/","accessedAt":"2026-07-27"},{"type":"product","url":"https://nxtstate.co/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://nxtstate.co/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://nxtstate.co/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/shipping/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://nxtstate.co/refund_returns/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 404 ()","[OptinMonster] The campaign could not be found. Check to make sure it is active."],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://nxtstate.co/","https://nxtstate.co/product/retatrutide/","https://nxtstate.co/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://nxtstate.co/wp-json/wc/store/v1/cart","https://nxtstate.co/checkout/","https://nxtstate.co/wp-content/plugins/wployalty/Assets/Admin/Css/alertify.min.css","https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-main.min.css","https://nxtstate.co/wp-content/plugins/wployalty/Assets/Site/Css/wlr-fonts.min.css","https://nxtstate.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","https://nxtstate.co/wp-content/plugins/wll-loyalty-launcher/assets/site/css/launcher-ui.css","https://nxtstate.co/shipping/","https://nxtstate.co/refund_returns/","https://nxtstate.co/terms-and-conditions/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":9,"conversionUx":6,"overall":8.1,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://nxtstate.co/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"SEARCH SHOP ALL PRODUCTS METABOLIC RECOVERY MIND NASAL ANTI-AGING HAIR LAB SUPPLIES STANDARDS LAB REPORTS ABOUT CONTACT MY ACCOUNT FOR RESEARCH USE ONLY.","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"onyxbiolabs.com":{"domain":"onyxbiolabs.com","canonicalDomain":"onyxbiolabs.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://onyxbiolabs.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide (Triple Agonist) – >99% Purity","strengths":[],"productUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1108,"productType":"variable","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 54.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://onyxbiolabs.com/affiliates/"]},"tracking":{"stack":["Google Tag Manager","TikTok Pixel"],"evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":6.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://onyxbiolabs.com/shipping-and-delivery-policy/","https://onyxbiolabs.com/return-and-refund-policy/"],"shippingReturnSnippets":["der Reyes Verified Buyer ★★★★★ Quality of products is great Quality of products is great. Delivery was quick and the package was unharmed or tampered with. The customer service is excellen","erified Buyer ★★★★★ Service is amazing Service is amazing! Very fast customer service and delivery. Would purchase again and again. Jasmine Santimaw Verified Buyer ★★★★★ Exactly what I ord","ks About Us Why Onyx Biolabs? Peptides for Sale Lab Results Peptide Calculator Shipping & Delivery Return & Refund Policy Payment & Billing Privacy Policy Terms and Conditions Contact Affi"],"pluginSignals":["address-autocomplete-anything","advanced-product-fields-for-woocommerce-pro","ajax-search-for-woocommerce","bytenft-payment-gateway-1.0.16","checkout-for-woocommerce","debug-log-manager","easy-woocommerce-discounts","elementor","elementor-pro","forumpay-crypto-payments","getautoseo-ai-content-publisher","gtm-server-side","jetpack","omnisend-connect","routeapp","tiktok-for-business","trustpilot-reviews","wc-cashapp","wc-cashapp-pro","wc-zelle","woo-cart-abandonment-recovery","woo-coupon-usage","woocommerce","woocommerce-abandoned-cart","woocommerce-back-in-stock-notifications","woocommerce-products-filter","woocommerce-shipping","wp-consent-api","wp-loyalty-rules"]},"payment":{"methods":[{"name":"Link Money Bank Payment (5% Additional Discount)","id":"tagada","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Link Money Bank Payment (5% Additional Discount)","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Send:","id":"cashapp","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle (5% Additional Discount)","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"forumpay","id":"forumpay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Cash App","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","observedAt":"2026-07-27"}],"activeMethodCount":5,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["tagada","linkmoney","cashapp","zelle","forumpay"],"renderedCheckoutLabels":[{"id":"tagada","label":"Link Money Bank Payment (5% Additional Discount)"},{"id":"linkmoney","label":"Link Money Bank Payment (5% Additional Discount)"},{"id":"cashapp","label":"Send:"},{"id":"zelle","label":"Zelle (5% Additional Discount)"},{"id":"forumpay","label":""}],"configuredBeforeCart":["tagada","linkmoney","cashapp","zelle","forumpay"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://onyxbiolabs.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"tagada","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"cashapp","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cash.app/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"ForumPay","roles":["crypto payment gateway"],"providerClass":"crypto_payment_provider","sourceToken":"forumpay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://forumpay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"Cash App","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://cash.app/business","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://onyxbiolabs.com/affiliates/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":9,"productClarity":6.5,"trustPresentation":6.5,"conversionUx":8,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://onyxbiolabs.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://onyxbiolabs.com/product/retatrutide-peptide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://onyxbiolabs.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://onyxbiolabs.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxbiolabs.com/affiliates/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxbiolabs.com/shipping-and-delivery-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxbiolabs.com/return-and-refund-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxbiolabs.com/payment-and-billing-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxbiolabs.com/terms-and-conditions/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://onyxbiolabs.com/","https://onyxbiolabs.com/product/retatrutide-peptide/","https://onyxbiolabs.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://onyxbiolabs.com/wp-json/wc/store/v1/cart","https://onyxbiolabs.com/checkout/","https://onyxbiolabs.com/affiliates/","https://onyxbiolabs.com/shipping-and-delivery-policy/","https://onyxbiolabs.com/return-and-refund-policy/","https://onyxbiolabs.com/payment-and-billing-policy/","https://onyxbiolabs.com/terms-and-conditions/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":9,"productClarity":6.5,"trustPresentation":6.5,"conversionUx":8,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://onyxbiolabs.com/product/retatrutide-peptide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"onyxresearch.shop":{"domain":"onyxresearch.shop","canonicalDomain":"onyxresearch.shop","status":"complete","pagesCrawled":7,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://onyxresearch.shop/product/glp-3-rt/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3 RT","strengths":["10mg","20mg","30mg","60mg"],"productUrl":"https://onyxresearch.shop/product/glp-3-rt/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":309,"productType":"variable","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 78.75","currency":"USD","secondaryIndexPricePerMg":"$6.57","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/onyx-research","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Loyalty or points retention","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo","GoAffPro"],"evidenceUrls":["https://onyxresearch.shop/terms-conditions/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","TikTok Pixel","Microsoft Clarity"],"evidenceUrl":"https://onyxresearch.shop/product/glp-3-rt/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/onyx-research","independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://onyxresearch.shop/shipping/","https://onyxresearch.shop/shipping-policy/"],"shippingReturnSnippets":["HPLC Form Lyophilized Dispatch Same-day Third-party tested COA on file Same-day dispatch Free shipping over $250 In stock · ships today View certificate of analysis Third-party tested H","ty for safe and lawful use. © 2026 Onyx Research. All rights reserved. Terms Privacy Shipping Policy RUO Agreement Your cart 0 Your cart is empty Browse the catalog Added to cart View cart &","ty for safe and lawful use. © 2026 Onyx Research. All rights reserved. Terms Privacy Shipping Policy RUO Agreement Your cart 1 GLP-3 RT - 10mg − 1 + $ 105.00 $ 78.75 Sale &mi"],"pluginSignals":["*","breeze","conditional-extra-fees-for-woocommerce","custom-payment-gateways-woocommerce","facebook-for-woocommerce","google-listings-and-ads","jetpack","klaviyo","omnisend-connect","payerurl-crypto-currency-payment-gateway-for-woocommerce","routeapp","tiktok-for-business","truvo-stripe-dropin","veylo-pay","wll-loyalty-launcher","woo-discount-rules","woo-discount-rules-pro","woocommerce","wp-loyalty-rules"]},"payment":{"methods":[{"name":"Credit / Debit Cards","id":"truvo_dropin","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)","id":"veylo_pay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Crypto (5% Discount)","id":"wc_payerurl_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["truvo_dropin","veylo_pay","linkmoney","wc_payerurl_gateway"],"renderedCheckoutLabels":[{"id":"veylo_pay","label":"Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)"},{"id":"linkmoney","label":"Pay Securely with Your U.S. Bank Account via Link Money. (3% Discount)"},{"id":"wc_payerurl_gateway","label":"Crypto (5% Discount)"},{"id":"truvo_dropin","label":"Credit / Debit Cards"}],"configuredBeforeCart":["truvo_dropin","veylo_pay","linkmoney","wc_payerurl_gateway"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://onyxresearch.shop/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Truvo","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"truvo_dropin","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Veylo","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"veylo_pay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"wc_payerurl_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://onyxresearch.shop/product/glp-3-rt/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://onyxresearch.shop/product/glp-3-rt/","confidence":"high"},{"claim":"Loyalty or points retention detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://onyxresearch.shop/terms-conditions/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":7.5,"conversionUx":8,"overall":8.3,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","A blocking overlay or gate covers the mobile viewport: RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente."],"observedUrl":"https://onyxresearch.shop/product/glp-3-rt/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://onyxresearch.shop/product/glp-3-rt/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://onyxresearch.shop/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://onyxresearch.shop/checkout/","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/onyx-research","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxresearch.shop/terms-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxresearch.shop/shipping/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://onyxresearch.shop/shipping-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://onyxresearch.shop/product/glp-3-rt/","https://onyxresearch.shop/wp-json/wc/store/v1/products?slug=glp-3-rt","https://onyxresearch.shop/wp-json/wc/store/v1/cart","https://onyxresearch.shop/checkout/","https://onyxresearch.shop/terms-conditions/","https://onyxresearch.shop/shipping/","https://onyxresearch.shop/shipping-policy/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":7.5,"conversionUx":8,"overall":8.3,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","A blocking overlay or gate covers the mobile viewport: RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente."],"observedUrl":"https://onyxresearch.shop/product/glp-3-rt/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"RESEARCH USE ONLY You must be 21 or older to enter Onyx Research supplies research compounds strictly for in-vitro laboratory use — not for human or veterinary consumption. By ente","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"optides.com":{"domain":"optides.com","canonicalDomain":"optides.com","status":"complete","pagesCrawled":3,"platform":{"name":"Next.js","confidence":"high","evidenceUrl":"https://optides.com/shop/retatrutide"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://optides.com/shop/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"RT10","productType":"JSON-LD product","evidenceUrl":"https://optides.com/shop/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 82.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://optides.com/terms"]},"tracking":{"stack":[],"evidenceUrl":"https://optides.com/shop/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://optides.com/refunds"],"shippingReturnSnippets":["areers Contact Legal All Policies Privacy Policy Terms of Service Research Use Disclaimer Refund Policy All Optides LLC products are for laboratory research use only — NOT for human or animal u","s LLC. All Rights Reserved. Terms of Service | Privacy Policy | Research Use Disclaimer | Refund Policy Email: [public business email omitted] | Phone: [public phone omitted] 0 items $0.00 subtotal View Cart → Vie","eptor research. Select size 10mg 20mg 30mg 50mg 60mg $82.99 $95.00 Quantity 1 Add to Cart Ships within 1 business day Ships from US 3rd-party lab tested Discreet packaging 99 % purity verified"],"pluginSignals":[]},"payment":{"methods":[{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://optides.com/shop/retatrutide","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://optides.com/shop/retatrutide","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://optides.com/shop/retatrutide","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://optides.com/shop/retatrutide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://optides.com/shop/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://optides.com/shop/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://optides.com/shop/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://optides.com/shop/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://optides.com/shop/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://optides.com/shop/retatrutide","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://optides.com/terms","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":9.5,"trustPresentation":8.5,"conversionUx":5,"overall":7.8,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://optides.com/shop/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://optides.com/shop/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://optides.com/terms","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://optides.com/refunds","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://optides.com/shop/retatrutide","https://optides.com/terms","https://optides.com/refunds"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":9.5,"trustPresentation":8.5,"conversionUx":5,"overall":7.8,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://optides.com/shop/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"orionpeptide.com":{"domain":"orionpeptide.com","canonicalDomain":"orionpeptide.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://orionpeptide.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide – 10mg","strengths":["10mg","5mg","15mg","20mg","30mg","12 mg"],"productUrl":"https://orionpeptide.com/product/retatrutide-10mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":793,"productType":"simple","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 80.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo"],"evidenceUrls":["https://orionpeptide.com/affiliates/","https://orionpeptide.com/rewards/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","Microsoft Clarity"],"evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://orionpeptide.com/shipping/","https://orionpeptide.com/returns/"],"shippingReturnSnippets":["vernight Option Available) • Same Day Shipping For Orders Placed Before 1PM PST Mon-Sat • Free Shipping On Orders Over $200 🚚 All Orders Shipped Via FedEx 2-Day Air (Overnight Option Available","vernight Option Available) • Same Day Shipping For Orders Placed Before 1PM PST Mon-Sat • Free Shipping On Orders Over $200 Products search 0 Products search Home PEPTIDES All Peptides Popular"],"pluginSignals":["*","advanced-free-flat-shipping-woocommerce","ajax-search-for-woocommerce","aurora-heatmap","back-in-stock-notifier-for-woocommerce","bytenft-payment-gateway-1.0.17","checkout-upsell-and-order-bumps","cryptopay-woocommerce","custom-compare-producs-plugins","custom-quick-cart-popup","custom-wishlist-plugin","dynamic-visibility-for-elementor","edebit-direct-draft-yodlee-gateway","elementor","elementor-pro","facebook-for-woocommerce","fastest-age-verification","forumpay-crypto-payments","google-listings-and-ads","google-site-kit","improved-shipping-insurance","notificationx","official-facebook-pixel","omnisend-connect","peptide-mixing-calculator","premium-cart-drawer","quiklie-payment-gateway-v2","sa-for-woocommerce","safe-svg","solid_affiliate"]},"payment":{"methods":[{"name":"edd_draft_yodlee_gateway","id":"edd_draft_yodlee_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"crypto","id":"crypto","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"zelle","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"},{"name":"Wire","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","observedAt":"2026-07-27"}],"activeMethodCount":3,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["edd_draft_yodlee_gateway","crypto","zelle"],"renderedCheckoutLabels":[],"configuredBeforeCart":["edd_draft_yodlee_gateway","crypto","zelle"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://orionpeptide.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"eDebit Direct","roles":["bank payment provider","card processing provider"],"providerClass":"bank_payment_provider","sourceToken":"edd_draft_yodlee_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://edebitdirect.com/low-fee-payment-processing/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"crypto","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://orionpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://orionpeptide.com/product/retatrutide-10mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://orionpeptide.com/affiliates/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7,"conversionUx":6,"overall":7.1,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://orionpeptide.com/product/retatrutide-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":18,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart (0) × Your cart is empty Add some peptides to get started Browse Products","brokenImages":1}},"evidence":[{"type":"storefront","url":"https://orionpeptide.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://orionpeptide.com/product/retatrutide-10mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://orionpeptide.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://orionpeptide.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://orionpeptide.com/affiliates/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://orionpeptide.com/rewards/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://orionpeptide.com/shipping/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://orionpeptide.com/returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://orionpeptide.com/terms/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://orionpeptide.com/","https://orionpeptide.com/product/retatrutide-10mg/","https://orionpeptide.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://orionpeptide.com/wp-json/wc/store/v1/cart","https://orionpeptide.com/checkout/","https://orionpeptide.com/affiliates/","https://orionpeptide.com/rewards/","https://orionpeptide.com/shipping/","https://orionpeptide.com/returns/","https://orionpeptide.com/terms/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7,"conversionUx":6,"overall":7.1,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 3 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://orionpeptide.com/product/retatrutide-10mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":18,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart (0) × Your cart is empty Add some peptides to get started Browse Products","brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"pacificresearchpeptides.com":{"domain":"pacificresearchpeptides.com","canonicalDomain":"pacificresearchpeptides.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://pacificresearchpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://pacificresearchpeptides.com/product/retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":7127,"productType":"variable","evidenceUrl":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 129.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://pacificresearchpeptides.com/shipping/"]},"tracking":{"stack":[],"evidenceUrl":"https://pacificresearchpeptides.com/product/retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://pacificresearchpeptides.com/shipping/","https://pacificresearchpeptides.com/return-and-refund-policy/"],"shippingReturnSnippets":["for laboratory research use only. Not for human or animal consumption. 1 Cart reviewed 2 Delivery details 3 Complete payment KMI payment workflow Place the order here. Complete payment se","vacy Policy . Agree and enter website I do not agree — leave this website Shipping & Delivery – Pacific Research Peptides Skip to content U.S. fulfillment Complimentary U.S. shi","account pricing Pacific Research Peptides Menu Pacific Research Peptides Shipping & Delivery Domestic fulfillment timing, current thresholds, tracking, delivery responsibilities, and"],"pluginSignals":["*","woocommerce"]},"payment":{"methods":[{"name":"KMI Payments","id":"kmi_payments","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["kmi_payments"],"renderedCheckoutLabels":[{"id":"kmi_payments","label":"KMI Payments"}],"configuredBeforeCart":["kmi_payments"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://pacificresearchpeptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"kmi","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"kmi_payments","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://pacificresearchpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://pacificresearchpeptides.com/product/retatrutide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://pacificresearchpeptides.com/shipping/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":8,"conversionUx":6,"overall":7.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://pacificresearchpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"BEFORE ENTERING Please confirm your eligibility. Pacific Research Peptides supplies products strictly for laboratory research and development. Please acknowledge both statements to","brokenImages":1}},"evidence":[{"type":"storefront","url":"https://pacificresearchpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://pacificresearchpeptides.com/product/retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://pacificresearchpeptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pacificresearchpeptides.com/shipping/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pacificresearchpeptides.com/payment-order-support/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pacificresearchpeptides.com/payment-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pacificresearchpeptides.com/return-and-refund-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pacificresearchpeptides.com/terms-conditions/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://pacificresearchpeptides.com/","https://pacificresearchpeptides.com/product/retatrutide/","https://pacificresearchpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://pacificresearchpeptides.com/wp-json/wc/store/v1/cart","https://pacificresearchpeptides.com/checkout/","https://pacificresearchpeptides.com/shipping/","https://pacificresearchpeptides.com/payment-order-support/","https://pacificresearchpeptides.com/payment-policy/","https://pacificresearchpeptides.com/return-and-refund-policy/","https://pacificresearchpeptides.com/terms-conditions/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":8,"conversionUx":6,"overall":7.5,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://pacificresearchpeptides.com/product/retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"BEFORE ENTERING Please confirm your eligibility. Pacific Research Peptides supplies products strictly for laboratory research and development. Please acknowledge both statements to","brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptalabs.com":{"domain":"peptalabs.com","canonicalDomain":"peptalabs.com","status":"complete","pagesCrawled":2,"platform":{"name":"Unknown","confidence":"low","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide 20mg","strengths":["20mg"],"productUrl":"https://peptalabs.com/peptides/retatrutide-20mg","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"PL-012","productType":"JSON-LD product","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 138.59","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://peptalabs.com/terms"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["fering ≥99.20% HPLC-verified purity with independent third-party COA documentation and free shipping on all US orders. After Peptide Sciences shut down in March 2026, Pepta Labs is one of th","Legal Classification Age & Eligibility Requirements Orders, Pricing & Payment Shipping & Delivery Returns & Refunds Warranty Disclaimer Limitation of Liability Indemnification Intellectua","Labs reserves the right to modify or discontinue any promotion at any time. 9. Shipping & Delivery Free standard shipping is included on all domestic (United States) orders. Orders placed"],"pluginSignals":[]},"payment":{"methods":[{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Cash App","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"Cash App","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://cash.app/business","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://peptalabs.com/peptides/retatrutide-20mg","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://peptalabs.com/terms","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":10,"conversionUx":5,"overall":8.4,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptalabs.com/peptides/retatrutide-20mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"PEPTALABS SHOP All Peptides Popular HOT Bundles CATALOG BPC & Thymosin Peptides 4 View all BPC & Thymosin Peptides → BPC-157 10mgPOPULAR $52.79 SS-31 25mg $158.39 TB-500 10mg $62.6","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://peptalabs.com/peptides/retatrutide-20mg","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptalabs.com/terms","accessedAt":"2026-07-27"}],"errors":["Loading the script 'https://cdn.taboola.com/libtrc/unip/2020006/tfa.js' violates the following Content Security Policy directive: \"script-src 'self' https://cdn.jsdelivr.net https://www.googletagmanager.com 'unsafe-inli…","Connecting to 'https://ad.doubleclick.net/ccm/s/collect?auid=1169433018.1785189651>m=45be67o1v9246153897za200zb9243682298zd9243682298xec' violates the following Content Security Policy directive: \"connect-src 'self' h…","Fetch API cannot load https://ad.doubleclick.net/ccm/s/collect?auid=1169433018.1785189651>m=45be67o1v9246153897za200zb9243682298zd9243682298xec. Refused to connect because it violates the document's Content Security P…"],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://peptalabs.com/peptides/retatrutide-20mg","https://peptalabs.com/terms"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":10,"conversionUx":5,"overall":8.4,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptalabs.com/peptides/retatrutide-20mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"PEPTALABS SHOP All Peptides Popular HOT Bundles CATALOG BPC & Thymosin Peptides 4 View all BPC & Thymosin Peptides → BPC-157 10mgPOPULAR $52.79 SS-31 25mg $158.39 TB-500 10mg $62.6","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptara.org":{"domain":"peptara.org","canonicalDomain":"peptara.org","status":"complete","pagesCrawled":4,"platform":{"name":"Unknown","confidence":"low","evidenceUrl":"https://peptara.org/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://peptara.org/product/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"retatrutide","productType":"JSON-LD product","evidenceUrl":"https://peptara.org/product/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 55","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Free-shipping threshold","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://peptara.org/shipping"]},"tracking":{"stack":[],"evidenceUrl":"https://peptara.org/product/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://peptara.org/shipping"],"shippingReturnSnippets":["Batch IDs Each batch is assigned a unique identifier for full traceability from source to delivery. Published COAs Certificates of Analysis are published publicly and linked directly to ea","% OFF Buy 3 $ 49.50 15 % OFF Buy 4 + $ 46.75 Research Grade Express Shipping 99%+ Purity Free Shipping $100+ Add to Cart Total: $ 55.00 Earn $ 2.75 back in store credit 5% back on every order","plain, unmarked outer packaging to protect product integrity during transit and keep your delivery private. Shipping Method USPS Priority Mail Express All orders are shipped exclusively vi"],"pluginSignals":[]},"payment":{"methods":[{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptara.org/product/retatrutide","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptara.org/product/retatrutide","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://peptara.org/product/retatrutide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptara.org/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptara.org/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptara.org/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://peptara.org/product/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://peptara.org/product/retatrutide","confidence":"high"},{"claim":"Free-shipping threshold detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://peptara.org/shipping","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":8.5,"conversionUx":5,"overall":7.7,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptara.org/product/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart 0 items Add $100.00 to reach the $100 minimum Your cart is empty Browse our research-grade peptides — every batch HPLC-MS verified. Browse Shop","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://peptara.org/","accessedAt":"2026-07-27"},{"type":"product","url":"https://peptara.org/product/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptara.org/shipping","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptara.org/terms","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://peptara.org/","https://peptara.org/product/retatrutide","https://peptara.org/shipping","https://peptara.org/terms"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":10,"trustPresentation":8.5,"conversionUx":5,"overall":7.7,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptara.org/product/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your Cart 0 items Add $100.00 to reach the $100 minimum Your cart is empty Browse our research-grade peptides — every batch HPLC-MS verified. Browse Shop","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptidehackers.com":{"domain":"peptidehackers.com","canonicalDomain":"peptidehackers.com","status":"complete","pagesCrawled":6,"platform":{"name":"Unknown","confidence":"low","evidenceUrl":"https://www.peptidehackers.com/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://www.peptidehackers.com/products/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"PH-RETA-001","productType":"JSON-LD product","evidenceUrl":"https://www.peptidehackers.com/products/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 100","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://www.peptidehackers.com/legal/terms"]},"tracking":{"stack":["Google Tag Manager"],"evidenceUrl":"https://www.peptidehackers.com/products/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":6.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://www.peptidehackers.com/legal/refund","https://www.peptidehackers.com/legal/shipping"],"shippingReturnSnippets":["at a $15 flat rate, free on orders over $199, in discreet, insulated packaging. Domestic delivery typically takes 1–3 business days. Can Retatrutide be used on humans or animals? No. Reta","GPT © 2026 Peptide Hackers. All rights reserved. Home Shop Stack Rewards Account Refund & Return Policy | Peptide Hackers Skip to content Peptide Hackers Products COA Research Docs Shop Now Log","oducts COA Research Documentation Cart Research Dashboard Login Legal Shop Now Refund and Return Policy Effective Date: January 2024 1. Policy Overview Due to the nature of research chemicals a"],"pluginSignals":[]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"D","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://www.peptidehackers.com/products/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://www.peptidehackers.com/products/retatrutide","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://www.peptidehackers.com/legal/terms","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":9.5,"trustPresentation":6.5,"conversionUx":7,"overall":8.6,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://www.peptidehackers.com/products/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://www.peptidehackers.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://www.peptidehackers.com/products/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.peptidehackers.com/legal/terms","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.peptidehackers.com/legal/refund","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.peptidehackers.com/legal/shipping","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://peptidehackers.com/","https://www.peptidehackers.com/","https://www.peptidehackers.com/products/retatrutide","https://www.peptidehackers.com/legal/terms","https://www.peptidehackers.com/legal/refund","https://www.peptidehackers.com/legal/shipping"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":9.5,"trustPresentation":6.5,"conversionUx":7,"overall":8.6,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://www.peptidehackers.com/products/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptidescollective.com":{"domain":"peptidescollective.com","canonicalDomain":"peptidescollective.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://peptidescollective.com/product/r/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3/R","strengths":["5mg","10mg","20mg","30mg","40mg"],"productUrl":"https://peptidescollective.com/product/r/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":5239,"productType":"variable","evidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 49.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://peptidescollective.com/terms-and-conditions/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://peptidescollective.com/product/r/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://peptidescollective.com/shipping-returns-policy/"],"shippingReturnSnippets":["-3/R – Peptides Collective Skip to content Use code: WELCOME30 for 30% off · Free shipping orders above $250 Home Shop Lab Reports FAQs About Contact EN / ES Account 0 Shop Peptide","Analysis ↓ For laboratory research use only. Third-Party Tested Batch & Lot Tracking Free Shipping Over $250 Secure Ordering 14-Day Returns Lab results Analytical Verification Each Certifi","ptions which are only available for orders placed Monday-Friday before 12pm est. We offer free shipping on all orders over $250. Read all FAQs New researchers 30% off your first order. Use code"],"pluginSignals":["*","affiliate-wp","cert-reports-mgr","coa-pdf-manager","elementor","elementor-pro","gtm-server-side","marquee-addons-for-elementor","pay-by-bank","sitepress-multilingual-cms","wapu-auth-social-login","woocommerce","woocommerce-multilingual"]},"payment":{"methods":[{"name":"Pay By Bank (3% Discount)","id":"tagada","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay By Bank (3% Discount)","id":"my_fingrid_gateway","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidescollective.com/product/r/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidescollective.com/product/r/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidescollective.com/product/r/","observedAt":"2026-07-27"},{"name":"Apple Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidescollective.com/product/r/","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["tagada","my_fingrid_gateway"],"renderedCheckoutLabels":[{"id":"tagada","label":"Pay By Bank (3% Discount)"},{"id":"my_fingrid_gateway","label":"Pay By Bank (3% Discount)"}],"configuredBeforeCart":["tagada","my_fingrid_gateway"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://peptidescollective.com/check-out/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"tagada","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"tagada","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"my fingrid","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"my_fingrid_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidescollective.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"Apple Pay","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptidescollective.com/product/r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://peptidescollective.com/product/r/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://peptidescollective.com/product/r/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://peptidescollective.com/terms-and-conditions/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":8,"overall":8.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://peptidescollective.com/product/r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15.5,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"evidence":[{"type":"storefront","url":"https://peptidescollective.com/product/r/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://peptidescollective.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://peptidescollective.com/check-out/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptidescollective.com/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptidescollective.com/shipping-returns-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://peptidescollective.com/product/r/","https://peptidescollective.com/wp-json/wc/store/v1/products?slug=r","https://peptidescollective.com/wp-json/wc/store/v1/cart","https://peptidescollective.com/check-out/","https://peptidescollective.com/terms-and-conditions/","https://peptidescollective.com/shipping-returns-policy/"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":8,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":8,"overall":8.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://peptidescollective.com/product/r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15.5,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptidology.co":{"domain":"peptidology.co","canonicalDomain":"peptidology.co","status":"complete","pagesCrawled":7,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://peptidology.co/product/g3/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP3 (PGL-GIC1)","strengths":[],"productUrl":"https://peptidology.co/product/g3/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":228,"productType":"variable","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/products?slug=g3","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 54.99","currency":"USD","secondaryIndexPricePerMg":"$7.90","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/peptidology","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot","GoAffPro"],"evidenceUrls":["https://peptidology.co/terms-of-service/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel"],"evidenceUrl":"https://peptidology.co/product/g3/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/peptidology","independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://peptidology.co/shipping-policy/","https://peptidology.co/return-policy/"],"shippingReturnSnippets":["e Competition Competitive Pricing Third-Party Tested Verified COAs Same Day Shipping Fast Delivery Overpriced No Testing or First Party Only Testing Same Day Shipping Fast Delivery Always","ng Fast Delivery Overpriced No Testing or First Party Only Testing Same Day Shipping Fast Delivery Always quality-tested, verified with third party COA’s At every step, we prioritize quali","Peptidology? Industry Discounts View Certificates of Analysis Search Legal Privacy Policy Shipping Policy Terms of Service Return Policy Contact [public phone omitted] Monday - Friday 9AM - 3PM MST Mailing"],"pluginSignals":["*","advanced-coupons-for-woocommerce","advanced-coupons-for-woocommerce-free","ajax-search-for-woocommerce-premium","cart-for-woocommerce","easy-product-bundles-for-woocommerce","jetpack","le-pixel-woo","omnisend-connect","peptide-coa-manager","simple-banner","trustpilot-reviews","user-registration-pro","woo-discount-rules","woo-discount-rules-pro","woo-variation-swatches","woocommerce","woocommerce-additional-variation-images","woocommerce-pixel-manager","wp-marketing-automations","zerobounce"]},"payment":{"methods":[{"name":"nmipay","id":"nmipay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"linkmoney","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"zelle","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"pep_applepay","id":"pep_applepay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidology.co/product/g3/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://peptidology.co/product/g3/","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["nmipay","linkmoney","zelle","pep_applepay"],"renderedCheckoutLabels":[],"configuredBeforeCart":["nmipay","linkmoney","zelle","pep_applepay"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmipay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"pep_applepay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://peptidology.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptidology.co/product/g3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://peptidology.co/product/g3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://peptidology.co/product/g3/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://peptidology.co/product/g3/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://peptidology.co/product/g3/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://peptidology.co/terms-of-service/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://peptidology.co/product/g3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"","brokenImages":2}},"evidence":[{"type":"storefront","url":"https://peptidology.co/product/g3/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://peptidology.co/wp-json/wc/store/v1/products?slug=g3","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://peptidology.co/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/peptidology","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptidology.co/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptidology.co/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptidology.co/return-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://peptidology.co/product/g3/","https://peptidology.co/wp-json/wc/store/v1/products?slug=g3","https://peptidology.co/wp-json/wc/store/v1/cart","https://peptidology.co/login/?redirect_to=https%3A%2F%2Fpeptidology.co%2Fcheckout%2F","https://peptidology.co/terms-of-service/","https://peptidology.co/shipping-policy/","https://peptidology.co/return-policy/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://peptidology.co/product/g3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"","brokenImages":2}},"auditType":"Anonymous Reta storefront and checkout scan"},"peptira.com":{"domain":"peptira.com","canonicalDomain":"peptira.com","status":"complete","pagesCrawled":9,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://peptira.com/product/reta3-9/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"RETA-3 | 30MG","strengths":["30MG"],"productUrl":"https://peptira.com/product/reta3-9/","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":121619,"productType":"simple","evidenceUrl":"https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 179.00","currency":"USD","secondaryIndexPricePerMg":"$4.77","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/peptira","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Batch/COA proof as conversion","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41"]},"tracking":{"stack":["Google Tag Manager","Meta Pixel","TikTok Pixel"],"evidenceUrl":"https://peptira.com/product/reta3-9/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/peptira","independentTestCount":4,"latestIndexedTest":"9 Jul 2026","mobileTrustPresentationScore":4.5},"operations":{"cartAccessible":true,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41","https://peptira.com/shipping-returns/","https://peptira.com/refunds-and-returns-policy/"],"shippingReturnSnippets":["A Library Careers 0 $ 0.00 Legal Research Use Only (RUO) Policy Terms and Conditions Shipping Policy Privacy Policy Refunds and Returns Policy My account Get in touch [public business email omitted] 402","issue refunds, or allow order cancellations once an order has been placed, regardless of delivery status. Delivered Packages Once a shipment is marked as “Delivered” by the carrier , resp","o the customer. Peptira LLC is not responsible for packages that are lost or stolen after delivery , including theft from porches, mailrooms, front desks, lockers, or other delivery locati"],"pluginSignals":["*","age-gate","ajax-search-for-woocommerce","cart-for-woocommerce","duracelltomi-google-tag-manager","funnel-builder","js_composer_salient","link-woocommerce-plugin-gty-main","metorik-helper","optinmonster","peachpay-for-woocommerce","peptira-gateway-rotator","peptira-hub","peptira-pack-selector","peptira-research-access-gate-v1.0.7","salient-core","salient-portfolio","salient-social","weglot","woocommerce","woocommerce-back-in-stock-notifications","woocommerce-composite-products","woocommerce-services","woofunnels-woocommerce-nmi-gateway","wp-marketing-automations"]},"payment":{"methods":[{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptira.com/product/reta3-9/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptira.com/product/reta3-9/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptira.com/product/reta3-9/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://peptira.com/product/reta3-9/","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":["nmi3_google_pay","nmi3_apple_pay","peachpay_nmi_card","nmi","nmi_gateway_woocommerce_credit_card","robust_nmi_gateway","linkmoney","peachpay_purchase_order"],"configuredButNotActiveForRetaCart":["nmi3_google_pay","nmi3_apple_pay","peachpay_nmi_card","nmi","nmi_gateway_woocommerce_credit_card","robust_nmi_gateway","linkmoney","peachpay_purchase_order"],"cartEvidenceUrl":"https://peptira.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://peptira.com/cart/","observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://peptira.com/product/reta3-9/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://peptira.com/product/reta3-9/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://peptira.com/product/reta3-9/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://peptira.com/cart/","confidence":"high"},{"claim":"Batch/COA proof as conversion detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":5.5,"productClarity":2.5,"trustPresentation":4.5,"conversionUx":2,"overall":4.6,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptira.com/product/reta3-9/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"In accordance with updated industry regulations, users must log in to access product details and browse our website. Login Register Continue with Google OR Username or email addres","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://peptira.com/product/reta3-9/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://peptira.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://peptira.com/cart/","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/peptira","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptira.com/wp-content/plugins/woofunnels-woocommerce-nmi-gateway/lib/skyverge/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=5.2.1","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptira.com/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptira.com/shipping-returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://peptira.com/refunds-and-returns-policy/","accessedAt":"2026-07-27"}],"errors":["Please select a variant and pack size from the product page."],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"B","activeRetaCartVerified":false},"pageUrls":["https://peptira.com/product/reta3-9/","https://peptira.com/wp-json/wc/store/v1/products?slug=reta3-9","https://peptira.com/wp-json/wc/store/v1/cart","https://peptira.com/cart/","https://peptira.com/wp-content/plugins/peptira-pack-selector/assets/css/shipping-protection.css?ver=1.6.41","https://peptira.com/wp-content/plugins/woofunnels-woocommerce-nmi-gateway/lib/skyverge/woocommerce/payment-gateway/assets/css/frontend/sv-wc-payment-gateway-payment-form.min.css?ver=5.2.1","https://peptira.com/terms-and-conditions/","https://peptira.com/shipping-returns/","https://peptira.com/refunds-and-returns-policy/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":5.5,"productClarity":2.5,"trustPresentation":4.5,"conversionUx":2,"overall":4.6,"reasons":["Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://peptira.com/product/reta3-9/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":false,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"In accordance with updated industry regulations, users must log in to access product details and browse our website. Login Register Continue with Google OR Username or email addres","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"protidehealth.com":{"domain":"protidehealth.com","canonicalDomain":"protidehealth.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://protidehealth.com/product/glp3/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3","strengths":["10mg","100mg","20mg","24mg","30mg","40mg","50mg"],"productUrl":"https://protidehealth.com/product/glp3/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":19451,"productType":"variable","evidenceUrl":"https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 145.00","currency":"USD","secondaryIndexPricePerMg":"$14.50","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/protide-health","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://protidehealth.com/terms-of-service/"]},"tracking":{"stack":["Google Tag Manager"],"evidenceUrl":"https://protidehealth.com/product/glp3/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/protide-health","independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://protidehealth.com/return-policy/"],"shippingReturnSnippets":["mg 100mg Choose an option 10mg 20mg 30mg 40mg 50mg 100mg Clear GLP-3 quantity Add to cart Free shipping on orders over $199! Done 99% Purity (HPLC-MS Verified) Done Independent Third-Party Test","as your package ships, you will receive an email with your tracking number and estimated delivery date. What if I have questions about a compound? Our USA-based support team is here to he","earch Shipping & Returns Terms of Service Privacy Policy Shipping Details 2-3 Day US Delivery Free shipping over $199 Mon – Fri / Except Holidays Orders after 12 PM PST ship next day."],"pluginSignals":["*","ajax-search-for-woocommerce-premium","back-in-stock-notifier-for-woocommerce","fluid-checkout","fluid-checkout-pro.off","kadence-blocks","kadence-conversions","kadence-pro","kadence-shop-kit","mailin","woocommerce","woocommerce-checkout-field-editor-pro","woocommerce-product-bundles","woonmipay","wp-rocket","yith-woocommerce-ajax-product-filter-premium"]},"payment":{"methods":[{"name":"nmipay","id":"nmipay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://protidehealth.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://protidehealth.com/product/glp3/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://protidehealth.com/product/glp3/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://protidehealth.com/product/glp3/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://protidehealth.com/product/glp3/","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["nmipay"],"renderedCheckoutLabels":[],"configuredBeforeCart":["nmipay"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://protidehealth.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://protidehealth.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmipay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://protidehealth.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://protidehealth.com/product/glp3/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://protidehealth.com/product/glp3/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://protidehealth.com/product/glp3/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://protidehealth.com/checkout/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://protidehealth.com/terms-of-service/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://protidehealth.com/product/glp3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Sign In Required Sign in to access our full catalog of 50+ research peptides and third-party COAs. New to Protide Health? Register your free account here. Email or Username Passwor","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://protidehealth.com/product/glp3/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://protidehealth.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://protidehealth.com/checkout/","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/protide-health","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://protidehealth.com/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://protidehealth.com/return-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://protidehealth.com/product/glp3/","https://protidehealth.com/wp-json/wc/store/v1/products?slug=glp3","https://protidehealth.com/wp-json/wc/store/v1/cart","https://protidehealth.com/checkout/","https://protidehealth.com/terms-of-service/","https://protidehealth.com/return-policy/"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":10,"conversionUx":6,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://protidehealth.com/product/glp3/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Sign In Required Sign in to access our full catalog of 50+ research peptides and third-party COAs. New to Protide Health? Register your free account here. Email or Username Passwor","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"pspeptides.com":{"domain":"pspeptides.com","canonicalDomain":"pspeptides.com","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://pspeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide (1 Vial)","strengths":["5mg","10mg","20mg","30mg","12mg","9mg","2mg","4mg"],"productUrl":"https://pspeptides.com/product/buy-retatrutide/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":115,"productType":"variable","evidenceUrl":"https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 39.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://pspeptides.com/affiliate-registration/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Microsoft Clarity"],"evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["Buy Peptides | US Made, 99%+ Purity | PSPeptides Free Shipping On Any Order | Free UPS 2nd Day Air Shipping On Orders Over $200 | Code 5OFF for 5% Off D","ers Over $200 | Code 5OFF for 5% Off Dismiss Great news — we now ship to your country ! | Free Shipping On Orders Over $200 | Code 5OFF for 5% Off Dismiss PSPeptides ™ Home Shop Certifica","ion was excellent, even late at night.\" D Dulcidio Gonzalez Verified on Trustpilot \"Quick delivery, quality product and great customer service! I ordered from a few companies and this was"],"pluginSignals":["*","cart-for-woocommerce","google-listings-and-ads","google-site-kit","jetpack","reddit-for-woocommerce","retainful","starter-affiliates","woocommerce","woocommerce-google-analytics-integration","wp-marketing-automations"]},"payment":{"methods":[{"name":"pay_with_affirm_shopify","id":"pay_with_affirm_shopify","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://pspeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Apple Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Google Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["pay_with_affirm_shopify"],"renderedCheckoutLabels":[],"configuredBeforeCart":["pay_with_affirm_shopify"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://pspeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Affirm","roles":["buy now, pay later provider"],"providerClass":"payment_method","sourceToken":"pay_with_affirm_shopify","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://pspeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.affirm.com/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"Apple Pay","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://pspeptides.com/product/buy-retatrutide/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://pspeptides.com/affiliate-registration/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.4,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://pspeptides.com/product/buy-retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"PSPeptides™ Home Shop Certifications Blog Contact Order Tracking","brokenImages":2}},"evidence":[{"type":"storefront","url":"https://pspeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://pspeptides.com/product/buy-retatrutide/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://pspeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pspeptides.com/affiliate-registration/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pspeptides.com/terms/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://pspeptides.com/peptide-payment-options/","accessedAt":"2026-07-27"}],"errors":["Access to XMLHttpRequest at 'https://mktg.pspeptides.com/mtc/event' from origin 'https://pspeptides.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Contr…","Failed to load resource: net::ERR_FAILED"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://pspeptides.com/","https://pspeptides.com/product/buy-retatrutide/","https://pspeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://pspeptides.com/wp-json/wc/store/v1/cart","https://checkout.pspeptides.com/checkout?customerId=cus_640ac444d189&funnelSessionId=fs_1785189421483_qnsurusop&funnelTracking=true&draft=false&funnelId=funnelv2_75e63dfd61e6&checkoutToken=a7747fd0b79529ceb5a8d0e3250a97dc&authCode=ah_dN4AO7VlkLNU4eYo4OWd7w","https://pspeptides.com/affiliate-registration/","https://pspeptides.com/terms/","https://pspeptides.com/peptide-payment-options/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":6.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.4,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://pspeptides.com/product/buy-retatrutide/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"PSPeptides™ Home Shop Certifications Blog Contact Order Tracking","brokenImages":2}},"auditType":"Anonymous Reta storefront and checkout scan"},"quantapeptides.com":{"domain":"quantapeptides.com","canonicalDomain":"quantapeptides.com","status":"complete","pagesCrawled":6,"platform":{"name":"Next.js","confidence":"high","evidenceUrl":"https://www.quantapeptides.com/"},"reta":{"listingStatus":"listing_present_not_currently_purchasable","productName":"Retatrutide (10mg)","strengths":["10mg"],"productUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","inStock":false,"purchasable":false,"anonymousCartAdd":false,"productId":"PEP-007-10MG","productType":"JSON-LD product","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 144.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Quantity or volume discount","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":true,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://www.quantapeptides.com/shipping"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":6.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://www.quantapeptides.com/shipping","https://www.quantapeptides.com/returns"],"shippingReturnSnippets":["ry held in the USA · no 3-week delays ≥99% Purity HPLC + Mass Spec · documented per batch Free shipping over $250 Same-day dispatch before 12pm ET GMP Compliant Good Manufacturing Practice stan","al facilities. Quick Links Shop All Peptides Blog FAQ About Us Request Product Contact Us Shipping Policy Returns & Refunds Contact Address Wilmington , DE 19801 USA Phone [public phone omitted] Email","rcard Amex Discover ACH / Bank Transfer © 2026 Quanta Peptides LLC . All rights reserved. Shipping Policy Returns & Refunds Privacy Policy Terms of Service Legal Disclaimer Buy Retatrutide 10mg ("],"pluginSignals":[]},"payment":{"methods":[{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","confidence":"high"},{"claim":"Quantity or volume discount detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://www.quantapeptides.com/shipping","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":6.5,"conversionUx":3,"overall":6.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your cart Your cart is empty Add some research compounds to get started. Browse Products","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://www.quantapeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://www.quantapeptides.com/shop/retatrutide-10mg","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.quantapeptides.com/shipping","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.quantapeptides.com/returns","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.quantapeptides.com/terms","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"listing_present_not_currently_purchasable","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"D","activeRetaCartVerified":false},"pageUrls":["https://quantapeptides.com/","https://www.quantapeptides.com/","https://www.quantapeptides.com/shop/retatrutide-10mg","https://www.quantapeptides.com/shipping","https://www.quantapeptides.com/returns","https://www.quantapeptides.com/terms"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":6.5,"conversionUx":3,"overall":6.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://www.quantapeptides.com/shop/retatrutide-10mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Your cart Your cart is empty Add some research compounds to get started. Browse Products","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"realpeptides.co":{"domain":"realpeptides.co","canonicalDomain":"realpeptides.co","status":"complete","pagesCrawled":12,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://www.realpeptides.co/products/trinity-x/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide (Trinity-X)","strengths":[],"productUrl":"https://www.realpeptides.co/products/trinity-x/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":419,"productType":"variable","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 130.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","https://www.realpeptides.co/affiliate-registration/","https://www.realpeptides.co/affiliate-login/","https://www.realpeptides.co/affiliate-area/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","Triple Whale"],"evidenceUrl":"https://www.realpeptides.co/products/trinity-x/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":6.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2","https://www.realpeptides.co/refund-return-chargeback-policy/","https://www.realpeptides.co/shipping-policy/"],"shippingReturnSnippets":["l purposes only, and are not for human consumption. © 2026 Real Peptides®. Privacy policy Refund policy Shiping policy Terms & Conditions Contact information Join Waitlist We will inform you wh","Real Peptides products are RUO materials, not intended for human or veterinary use. Post-delivery preparation (including reconstitution, solvent use, sterile technique, storage, and handl"],"pluginSignals":["*","affiliate-wp","elementor","elementor-pro","essential-addons-for-elementor-lite","facebook-for-woocommerce","flexible-shipping","fluentform","google-listings-and-ads","header-footer-elementor","hyros-tracking","nowpayments-for-woocommerce","official-facebook-pixel","omnisend-connect","quiz-maker","quiz-maker-woocommerce","royal-elementor-addons","rp-shipping-protection","triple-whale","trustpilot-reviews","unlimited-elements-for-elementor","waitlist-woocommerce","woo-checkout-field-editor-pro","woo-discount-rules","woo-discount-rules-pro","woocommerce","woocommerce-google-analytics-integration","wp-nmi-gateway-pci-woocommerce","wt-smart-coupons-for-woocommerce"]},"payment":{"methods":[{"name":"Same-Day Bank Payment (Save 10%)","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay with Crypto","id":"tagada","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay with Crypto","id":"cryptopay","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Card Number *","id":"nmi","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","tagada","cryptopay","nmi"],"renderedCheckoutLabels":[{"id":"linkmoney","label":"Same-Day Bank Payment (Save 10%)"},{"id":"tagada","label":"Pay with Crypto"},{"id":"cryptopay","label":"Pay with Crypto"},{"id":"nmi","label":"Card Number *"}],"configuredBeforeCart":["linkmoney","tagada","cryptopay","nmi"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://www.realpeptides.co/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"tagada","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"cryptopay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmi","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://www.realpeptides.co/products/trinity-x/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://www.realpeptides.co/products/trinity-x/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://www.realpeptides.co/products/trinity-x/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":7,"productClarity":7,"trustPresentation":6.5,"conversionUx":8,"overall":7.7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://www.realpeptides.co/products/trinity-x/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"evidence":[{"type":"storefront","url":"https://www.realpeptides.co/products/trinity-x/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://www.realpeptides.co/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://www.realpeptides.co/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/affiliate-registration/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/affiliate-login/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/affiliate-area/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/refund-return-chargeback-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.realpeptides.co/terms-of-service/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://www.realpeptides.co/products/trinity-x/","https://www.realpeptides.co/wp-json/wc/store/v1/products?slug=trinity-x","https://www.realpeptides.co/wp-json/wc/store/v1/cart","https://www.realpeptides.co/checkout/","https://www.realpeptides.co/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.0","https://www.realpeptides.co/wp-content/plugins/flexible-shipping/assets/dist/css/free-shipping.css?ver=6.9.0.2","https://www.realpeptides.co/affiliate-registration/","https://www.realpeptides.co/affiliate-login/","https://www.realpeptides.co/affiliate-area/","https://www.realpeptides.co/refund-return-chargeback-policy/","https://www.realpeptides.co/shipping-policy/","https://www.realpeptides.co/terms-of-service/"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":7,"productClarity":7,"trustPresentation":6.5,"conversionUx":8,"overall":7.7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://www.realpeptides.co/products/trinity-x/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":1}},"auditType":"Anonymous Reta storefront and checkout scan"},"regentide.net":{"domain":"regentide.net","canonicalDomain":"regentide.net","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://regentide.net/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide 30mg","strengths":["30mg","10mg","20mg"],"productUrl":"https://regentide.net/product/retatrutide-30mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":3586,"productType":"simple","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 375.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://regentide.net/shipping/"]},"tracking":{"stack":[],"evidenceUrl":"https://regentide.net/product/retatrutide-30mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":8},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://regentide.net/shipping/","https://regentide.net/refund_policy/"],"shippingReturnSnippets":["otected checkout, fast fulfillment, and discreet packaging for qualified research orders. Free shipping available on orders over $150 REGENTIDE™ CURATED CATALOG Regentide Signature Collection R","is received. All shipments are handled exclusively via UPS 2-Day Air to ensure consistent delivery standards. Orders placed before 1 PM ET (Monday to Friday) are typically shipped the same","and professional from start to finish. What truly stood out was the exceptional speed of delivery my package arrived much sooner than expected. The quality of the research materials excee"],"pluginSignals":["*","elementor","elementor-pro","quiklie-payment-gateway-v2","woocommerce","wp-rocket"]},"payment":{"methods":[{"name":"Pay with Credit/Debit Card","id":"quiklie","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Cash App — 10% Automatic Discount (Manual Verification)","id":"regentide_cashapp_qr","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Zelle","id":"regentide_zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Wise ACH / Wise Balance — Manual Verification","id":"regentide_wise_ach_manual","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["quiklie","regentide_cashapp_qr","regentide_zelle","regentide_wise_ach_manual"],"renderedCheckoutLabels":[{"id":"quiklie","label":"Pay with Credit/Debit Card"},{"id":"regentide_cashapp_qr","label":"Cash App — 10% Automatic Discount (Manual Verification)"},{"id":"regentide_zelle","label":"Zelle"},{"id":"regentide_wise_ach_manual","label":"Wise ACH / Wise Balance — Manual Verification"}],"configuredBeforeCart":["quiklie","regentide_cashapp_qr","regentide_zelle","regentide_wise_ach_manual"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://regentide.net/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Quiklie","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"quiklie","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Cash App","roles":["wallet or manual payment method"],"providerClass":"payment_method","sourceToken":"regentide_cashapp_qr","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cash.app/business","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"regentide_zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"regentide_wise_ach_manual","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://regentide.net/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://regentide.net/product/retatrutide-30mg/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://regentide.net/product/retatrutide-30mg/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://regentide.net/shipping/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":8,"conversionUx":8,"overall":8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://regentide.net/product/retatrutide-30mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://regentide.net/","accessedAt":"2026-07-27"},{"type":"product","url":"https://regentide.net/product/retatrutide-30mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://regentide.net/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://regentide.net/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://regentide.net/shipping/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://regentide.net/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://regentide.net/refund_policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://regentide.net/","https://regentide.net/product/retatrutide-30mg/","https://regentide.net/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://regentide.net/wp-json/wc/store/v1/cart","https://regentide.net/checkout/","https://regentide.net/shipping/","https://regentide.net/terms-and-conditions/","https://regentide.net/refund_policy/"],"design":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":8,"conversionUx":8,"overall":8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://regentide.net/product/retatrutide-30mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"researchchemhq.co":{"domain":"researchchemhq.co","canonicalDomain":"researchchemhq.co","status":"complete","pagesCrawled":7,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://researchchemhq.co/product/rc-3r/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"RC-3R (RETA) | 2 Sizes","strengths":[],"productUrl":"https://researchchemhq.co/product/rc-3r/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":5025,"productType":"variable","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 119.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":true,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":["Trustpilot","GoAffPro"],"evidenceUrls":["https://researchchemhq.co/terms-of-service-agreement/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Microsoft Clarity"],"evidenceUrl":"https://researchchemhq.co/product/rc-3r/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":10},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://researchchemhq.co/shipping-policy/","https://researchchemhq.co/refund-return-policy/"],"shippingReturnSnippets":["ceptance , RCHQ will issue $20 in loyalty points to your customer account, subject to our shipping policy terms. Please note that delivery timelines may vary due to carrier volume, weather, holid","y points to your customer account, subject to our shipping policy terms. Please note that delivery timelines may vary due to carrier volume, weather, holidays, destination, failed delivery","delivery timelines may vary due to carrier volume, weather, holidays, destination, failed delivery attempts, address issues, or other delays outside of RCHQ’s control. For more information"],"pluginSignals":["*","auxin-elements","auxin-pro-tools","cart-for-woocommerce","customer-reviews-woocommerce","duracelltomi-google-tag-manager","elementor","elementor-pro","funnel-builder","google-site-kit","gravityforms","omnisend","omnisend-connect","user-registration","wll-loyalty-launcher","woo-discount-rules","woo-discount-rules-pro","woocommerce","woocommerce-product-stock-alert","wp-loyalty-rules","wp-rocket"]},"payment":{"methods":[{"name":"linkmoney","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"noramp_platform","id":"noramp_platform","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"mecom_paypal","id":"mecom_paypal","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"idem","id":"idem","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"pipepay","id":"pipepay","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","id":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"Apple Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"Venmo","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","observedAt":"2026-07-27"}],"activeMethodCount":6,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","noramp_platform","mecom_paypal","idem","pipepay","paygatedotto-instant-payment-gateway-hostedpaygatedotto"],"renderedCheckoutLabels":[],"configuredBeforeCart":["linkmoney","noramp_platform","mecom_paypal","idem","pipepay","paygatedotto-instant-payment-gateway-hostedpaygatedotto"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://researchchemhq.co/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"noramp platform","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"noramp_platform","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"mecom_paypal","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"IDEM","roles":["bank checkout integration"],"providerClass":"unresolved_provider","sourceToken":"idem","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PipePay","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"pipepay","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayGate.to","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://researchchemhq.co/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://paygate.to/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"Apple Pay","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"Venmo","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://venmo.com/business/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://researchchemhq.co/product/rc-3r/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://researchchemhq.co/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://researchchemhq.co/terms-of-service-agreement/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":8,"trustPresentation":10,"conversionUx":8,"overall":9.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 6 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://researchchemhq.co/product/rc-3r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16.0016,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://researchchemhq.co/product/rc-3r/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://researchchemhq.co/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://researchchemhq.co/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://researchchemhq.co/terms-of-service-agreement/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://researchchemhq.co/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://researchchemhq.co/refund-return-policy/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://researchchemhq.co/product/rc-3r/","https://researchchemhq.co/wp-json/wc/store/v1/products?slug=rc-3r","https://researchchemhq.co/wp-json/wc/store/v1/cart","https://researchchemhq.co/","https://researchchemhq.co/terms-of-service-agreement/","https://researchchemhq.co/shipping-policy/","https://researchchemhq.co/refund-return-policy/"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":10,"productClarity":8,"trustPresentation":10,"conversionUx":8,"overall":9.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 6 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://researchchemhq.co/product/rc-3r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16.0016,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"riptidewellness.com":{"domain":"riptidewellness.com","canonicalDomain":"riptidewellness.com","status":"complete","pagesCrawled":6,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://riptidewellness.com/product/glp3-r/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP3-R","strengths":[],"productUrl":"https://riptidewellness.com/product/glp3-r/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1484,"productType":"variable","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 109.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://riptidewellness.com/terms-and-conditions/"]},"tracking":{"stack":["Google Tag Manager","Meta Pixel","TikTok Pixel"],"evidenceUrl":"https://riptidewellness.com/product/glp3-r/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://riptidewellness.com/refund_returns/"],"shippingReturnSnippets":["s Contact $ 0.00 0 Cart $ 0.00 0 Cart Tested in the USA >99% Purity In Stock — Ships Within 24h GLP3-R All Riptide Wellness products are t hird party tested in USA clinical labs to",";289.99 Weight Choose an option 10mg 20mg 30mg 50mg Clear - GLP3-R quantity + Add to cart Free shipping on orders over $150 99% purity — third-party verified Exceptional research support Certif","emap Home Our Shop About Us Contact Customer My Account Privacy Policy Terms & Conditions Return Policy RIPTIDE WELLNESS offers products solely for research and development purposes, not for hu"],"pluginSignals":["*","age-gate","buy-one-get-one-free","bytenft-payment-gateway-1.0.10","cashenvoy-payment-gateway","circoflows-payment","dfinsell-payment-gateway-1.1.5","edebit-direct-draft-plaid-gateway","edebit-direct-draft-yodlee-gateway","elementor","elementor-pro","gtm-server-side","insta-onramp-checkout8.ugotcryptoed-instant-payout-version-1.5","jetpack","omnisend-connect","payment-gateway-rotator-v2.7.17","pixelyoursite","tiktok-for-business","woo-product-bundle","woocommerce","woocommerce-product-stock-alert","wt-smart-coupons-for-woocommerce"]},"payment":{"methods":[{"name":"Credit / Debit Card","id":"maef_child_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Card Number *","id":"circoflows","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Credit Cards, Bank Transfer & Wallet","id":"dfinsell","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Bank Transfer","id":"edd_draft_yodlee_gateway","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Bank Transfer","id":"cashenvoy","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":5,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["maef_child_gateway","circoflows","dfinsell","edd_draft_yodlee_gateway","cashenvoy"],"renderedCheckoutLabels":[{"id":"maef_child_gateway","label":"Credit / Debit Card"},{"id":"circoflows","label":"Card Number *"},{"id":"dfinsell","label":"Credit Cards, Bank Transfer & Wallet"},{"id":"cashenvoy","label":"Bank Transfer"},{"id":"edd_draft_yodlee_gateway","label":"Bank Transfer"}],"configuredBeforeCart":["maef_child_gateway","circoflows","dfinsell","edd_draft_yodlee_gateway","cashenvoy"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://riptidewellness.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"maef child","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"maef_child_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"CircoFlows","roles":["payment processing provider"],"providerClass":"processor_or_full_stack_psp","sourceToken":"circoflows","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://circoflows.com/solutions","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"dfinsell","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"eDebit Direct","roles":["bank payment provider","card processing provider"],"providerClass":"bank_payment_provider","sourceToken":"edd_draft_yodlee_gateway","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://edebitdirect.com/low-fee-payment-processing/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"CashEnvoy","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"cashenvoy","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://riptidewellness.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://cashenvoy.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://riptidewellness.com/product/glp3-r/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://riptidewellness.com/product/glp3-r/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://riptidewellness.com/terms-and-conditions/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.6,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://riptidewellness.com/product/glp3-r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? Yes No Remember me","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://riptidewellness.com/product/glp3-r/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://riptidewellness.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://riptidewellness.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://riptidewellness.com/terms-and-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://riptidewellness.com/refund_returns/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 401 ()"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://riptidewellness.com/product/glp3-r/","https://riptidewellness.com/wp-json/wc/store/v1/products?slug=glp3-r","https://riptidewellness.com/wp-json/wc/store/v1/cart","https://riptidewellness.com/checkout/","https://riptidewellness.com/terms-and-conditions/","https://riptidewellness.com/refund_returns/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.6,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://riptidewellness.com/product/glp3-r/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Are you over 21 years of age? Yes No Remember me","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"rivnpeptides.com":{"domain":"rivnpeptides.com","canonicalDomain":"rivnpeptides.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://rivnpeptides.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3: RETA (Retatrutide) Research Peptide","strengths":[],"productUrl":"https://rivnpeptides.com/product/reta/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":740,"productType":"variable","evidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 99.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Trustpilot"],"evidenceUrls":["https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://rivnpeptides.com/product/reta/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":9},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://rivnpeptides.com/shipping-policy/"],"shippingReturnSnippets":["m Research Peptides | 99%+ Purity Skip to content FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURC","BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURC","BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE FREE SHIPPING FREE BAC WATER WITH EVERY VIAL PURCHASE & FREE SHIPPING OVER $150 Avail Now Home Shop COA"],"pluginSignals":["*","ajax-search-for-woocommerce","astra-sites","checkout-for-woocommerce","custom-payment-gateways-for-woocommerce-pro","duracelltomi-google-tag-manager","dynamic-ajax-product-filters-for-woocommerce","easy-sale-badges-for-woocommerce","easy-sale-badges-for-woocommerce-pro","elementor","elementor-pro","elementskit-lite","essential-addons-for-elementor-lite","google-listings-and-ads","gtm-server-side","hostinger-reach","jetpack","metasync","metorik-helper","nowpayments-for-woocommerce-premium","omnisend-connect","suretriggers","trustpilot-reviews","upsell-order-bump-offer-for-woocommerce","woo-custom-my-account-page","woo-discount-rules","woocommerce","woocommerce-side-cart-premium","wow-carousel-for-divi-lite","wp-nmi-gateway-pci-woocommerce"]},"payment":{"methods":[{"name":"nmi","id":"nmi","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"mecom_paypal","id":"mecom_paypal","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://rivnpeptides.com/product/reta/","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["nmi","mecom_paypal"],"renderedCheckoutLabels":[],"configuredBeforeCart":["nmi","mecom_paypal"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmi","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.nmi.com/products/payment-gateway/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"mecom_paypal","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://rivnpeptides.com/product/reta/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://rivnpeptides.com/product/reta/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://rivnpeptides.com/product/reta/","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://rivnpeptides.com/product/reta/","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8,"trustPresentation":9,"conversionUx":6,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://rivnpeptides.com/product/reta/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.7751,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Home Shop COA’s Contact About X","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://rivnpeptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://rivnpeptides.com/product/reta/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://rivnpeptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/now-payment.css?ver=1784922877","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/crypto-widgets.css?ver=1784922877","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://rivnpeptides.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://rivnpeptides.com/terms-conditions/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: net::ERR_NAME_NOT_RESOLVED"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://rivnpeptides.com/","https://rivnpeptides.com/product/reta/","https://rivnpeptides.com/wp-json/wc/store/v1/products?search=retatrutide&per_page=20","https://rivnpeptides.com/wp-json/wc/store/v1/cart","https://rivnpeptides.com/my-account/?action=register&redirect_to=https%3A%2F%2Frivnpeptides.com%2Fcheckout%2F","https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/hostinger-reach/frontend/dist/blocks/subscription.css?ver=1784922877","https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/now-payment.css?ver=1784922877","https://rivnpeptides.com/wp-content/cache/min/1/wp-content/plugins/nowpayments-for-woocommerce-premium/assets/css/crypto-widgets.css?ver=1784922877","https://rivnpeptides.com/shipping-policy/","https://rivnpeptides.com/terms-conditions/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8,"trustPresentation":9,"conversionUx":6,"overall":7.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://rivnpeptides.com/product/reta/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.7751,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Home Shop COA’s Contact About X","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"royal-peptides.com":{"domain":"royal-peptides.com","canonicalDomain":"royal-peptides.com","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide Single Vial","strengths":[],"productUrl":"https://royal-peptides.com/shop/retatrutide-vial/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":832,"productType":"variable","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 55.00","currency":"USD","secondaryIndexPricePerMg":"$2.77","secondaryIndexUrl":"https://www.finnrick.com/products/retatrutide/vendors/royal-peptides","note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":false,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":true,"quantityDiscountDetected":true,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://royal-peptides.com/shipping-returns/","https://royal-peptides.com/affiliates/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":"https://www.finnrick.com/products/retatrutide/vendors/royal-peptides","independentTestCount":15,"latestIndexedTest":"1 Jul 2026","mobileTrustPresentationScore":9},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://royal-peptides.com/shipping-returns/"],"shippingReturnSnippets":["tides® Bacteriostatic Water or genuine Hospira® / Pfizer® BAC Water. Check Mark Estimated Delivery : Up to 4 business days Check Mark Free Shipping : On all orders over $300 Check Mark 3rd","ra® / Pfizer® BAC Water. Check Mark Estimated Delivery : Up to 4 business days Check Mark Free Shipping : On all orders over $300 Check Mark 3rd Party Tested Premium Peptides : 99% Purity Visa","hone * Order notes (optional) Your order Congratulations! Your order is eligible for FREE Delivery. Your order Product Subtotal 1 Retatrutide Single Vial - 60mg $ 330 × 1 $"],"pluginSignals":["*","advanced-coupons-for-woocommerce-free","ajax-search-for-woocommerce","back-in-stock-notifier-for-woocommerce","cart-for-woocommerce","checkout-fees-for-woocommerce","contact-form-7","crypto-payment-gateway","custom-payment-gateways-woocommerce","elementor","elementor-pro","essential-addons-for-elementor-lite","funnel-builder-pro","google-analytics-for-wordpress","google-site-kit","header-footer-elementor","instant-approval-payment-gateway","omnisend","omnisend-connect","pixelyoursite","quiklie-payment-gateway-v2","simple-cloudflare-turnstile","templatemela-core","wc-product-table-lite","woo-cart-abandonment-recovery","woo-smart-quick-view","woo-variation-swatches","woocommerce","yith-infinite-scrolling"]},"payment":{"methods":[{"name":"Pay by USA Bank -Secure Instant Transfer","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Credit | Debit | ApplePay | Paypal","id":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"CashApp/ Venmo- *BITCOIN Payment Only*","id":"alg_custom_gateway_1","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"TransferWise / ACH / Wire Transfer","id":"bacs","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Bitcoin","id":"paygatedotto-crypto-payment-gateway-dynamic","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Visa","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"Mastercard","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"American Express","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"Discover","id":null,"layer":"card brand","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"Apple Pay","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","observedAt":"2026-07-27"}],"activeMethodCount":5,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","paygatedotto-instant-payment-gateway-hostedpaygatedotto","alg_custom_gateway_1","bacs","paygatedotto-crypto-payment-gateway-dynamic"],"renderedCheckoutLabels":[{"id":"linkmoney","label":"Pay by USA Bank -Secure Instant Transfer"},{"id":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","label":"Credit | Debit | ApplePay | Paypal"},{"id":"alg_custom_gateway_1","label":"CashApp/ Venmo- *BITCOIN Payment Only*"},{"id":"bacs","label":"TransferWise / ACH / Wire Transfer"},{"id":"paygatedotto-crypto-payment-gateway-dynamic","label":"Bitcoin"}],"configuredBeforeCart":["linkmoney","paygatedotto-instant-payment-gateway-hostedpaygatedotto","alg_custom_gateway_1","bacs","paygatedotto-crypto-payment-gateway-dynamic"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://royal-peptides.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayGate.to","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"paygatedotto-instant-payment-gateway-hostedpaygatedotto","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://paygate.to/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Venmo","roles":["digital wallet","P2P payment method"],"providerClass":"payment_method","sourceToken":"alg_custom_gateway_1","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://venmo.com/business/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"bacs","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayGate.to","roles":["checkout integration"],"providerClass":"unresolved_provider","sourceToken":"paygatedotto-crypto-payment-gateway-dynamic","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://royal-peptides.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://paygate.to/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Apple Pay","roles":["digital wallet"],"providerClass":"payment_method","sourceToken":"Apple Pay","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://developer.apple.com/apple-pay/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://royal-peptides.com/shop/retatrutide-vial/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://royal-peptides.com/shipping-returns/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":10,"visualPolish":9,"productClarity":7,"trustPresentation":9,"conversionUx":8,"overall":8.6,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://royal-peptides.com/shop/retatrutide-vial/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":17,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://royal-peptides.com/shop/retatrutide-vial/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://royal-peptides.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://royal-peptides.com/checkout/","accessedAt":"2026-07-27"},{"type":"independent_test_index","url":"https://www.finnrick.com/products/retatrutide/vendors/royal-peptides","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://royal-peptides.com/shipping-returns/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://royal-peptides.com/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://royal-peptides.com/affiliates/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://royal-peptides.com/wp-content/plugins/custom-payment-gateways-woocommerce/build/style-index.css?ver=236eb729738f64b534be","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 404 ()","requestStorageAccess: Permission denied."],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://royal-peptides.com/shop/retatrutide-vial/","https://royal-peptides.com/wp-json/wc/store/v1/products?slug=retatrutide-vial","https://royal-peptides.com/wp-json/wc/store/v1/cart","https://royal-peptides.com/checkout/","https://royal-peptides.com/shipping-returns/","https://royal-peptides.com/terms-of-service/","https://royal-peptides.com/affiliates/","https://royal-peptides.com/wp-content/plugins/custom-payment-gateways-woocommerce/build/style-index.css?ver=236eb729738f64b534be"],"design":{"viewport":"390x844","mobileUsability":10,"visualPolish":9,"productClarity":7,"trustPresentation":9,"conversionUx":8,"overall":8.6,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 5 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://royal-peptides.com/shop/retatrutide-vial/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":17,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"sunday-usa.com":{"domain":"sunday-usa.com","canonicalDomain":"sunday-usa.com","status":"complete","pagesCrawled":10,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://sunday-usa.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Reta","strengths":[],"productUrl":"https://sunday-usa.com/product/rt10/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":11201,"productType":"simple","evidenceUrl":"https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 200.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","TikTok Pixel","Triple Whale"],"evidenceUrl":"https://sunday-usa.com/product/rt10/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://sunday-usa.com/shipping-policy/","https://sunday-usa.com/refund-policy/"],"shippingReturnSnippets":["al email addresses, or other supporting documentation. Orders associated with residential delivery addresses may also be subject to additional review to ensure compliance with our Terms of","advice, prescriptions, or consultations. © 2026 Sunday Privacy Policy Contact information Shipping Policy Refund Policy Terms of Service You need to enable JavaScript in order to use the AI chatb","tions, or consultations. © 2026 Sunday Privacy Policy Contact information Shipping Policy Refund Policy Terms of Service You need to enable JavaScript in order to use the AI chatbot tool powere"],"pluginSignals":["*","aco-product-labels-for-woocommerce","affiliate-wp","all-in-one-seo-pack","code-snippets","contact-form-7","fake.css","google-analytics-for-wordpress","gtm-server-side","instaonramp-woocommerce-crypt2merchant-onramp-v2.7","jetpack","litespeed-cache","omnisend-connect","side-cart-woocommerce","woo-discount-rules-pro","woocommerce-product-bundles","wp-data-access"]},"payment":{"methods":[{"name":"Pay securely","id":"noramp_platform","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://sunday-usa.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["noramp_platform"],"renderedCheckoutLabels":[{"id":"noramp_platform","label":"Pay securely"}],"configuredBeforeCart":["noramp_platform"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://sunday-usa.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://sunday-usa.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"noramp platform","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"noramp_platform","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://sunday-usa.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://sunday-usa.com/product/rt10/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://sunday-usa.com/product/rt10/","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":4.5,"trustPresentation":7,"conversionUx":6,"overall":6.7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://sunday-usa.com/product/rt10/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Sunday Research access. This site provides research-grade products for laboratory and research purposes only. Please confirm before entering. I am 21 years of age or older. I under","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://sunday-usa.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://sunday-usa.com/product/rt10/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://sunday-usa.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://sunday-usa.com/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://sunday-usa.com/terms-conditions/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://sunday-usa.com/shipping-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://sunday-usa.com/refund-policy/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://sunday-usa.com/terms-of-service/","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 404 ()","Mixed Content: The page at 'https://sunday-usa.com/product/rt10/' was loaded over HTTPS, but requested an insecure font 'http://sunday-usa.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff2'. This request…","Mixed Content: The page at 'https://sunday-usa.com/product/rt10/' was loaded over HTTPS, but requested an insecure font 'http://sunday-usa.com/wp-content/plugins/woocommerce/assets/fonts/WooCommerce.woff'. This request …"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://sunday-usa.com/","https://sunday-usa.com/product/rt10/","https://sunday-usa.com/wp-json/wc/store/v1/products?search=reta&per_page=20","https://sunday-usa.com/wp-json/wc/store/v1/cart","https://sunday-usa.com/checkout/","https://sunday-usa.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css","https://sunday-usa.com/terms-conditions/","https://sunday-usa.com/shipping-policy/","https://sunday-usa.com/refund-policy/","https://sunday-usa.com/terms-of-service/"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":4.5,"trustPresentation":7,"conversionUx":6,"overall":6.7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://sunday-usa.com/product/rt10/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Sunday Research access. This site provides research-grade products for laboratory and research purposes only. Please confirm before entering. I am 21 years of age or older. I under","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"sunrisebioresearch.com":{"domain":"sunrisebioresearch.com","canonicalDomain":"sunrisebioresearch.com","status":"complete","pagesCrawled":4,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3 (R*) 200mg (10 x 20mg)","strengths":["200mg","20mg"],"productUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":11666,"productType":"simple","evidenceUrl":"https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 399.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Subscription or auto-ship continuity","subscriptionDetected":true,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":false,"technologyStack":["Klaviyo","GoAffPro"],"evidenceUrls":["https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel"],"evidenceUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":false,"reviewSignal":true,"ruoNotice":false,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":[],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["3 (R*) 200mg (10 x 20mg) Kits , Uncategorized GLP-3 (R*) 200mg (10 x 20mg) $ 399.00 & Free Shipping 10 x 20mg Availability: 42 in stock GLP-3 (R*) 200mg (10 x 20mg) quantity Add to cart Cat"],"pluginSignals":["*","astra-sites","drip","elementor","elementor-pro","elementskit-lite","google-listings-and-ads","google-site-kit","header-footer-elementor","klaviyo","mailchimp-for-woocommerce","print-invoices-packing-slip-labels-for-woocommerce","tablepress","wc-bulk-order-form-prepopulated","woocommerce","woocommerce-payments"]},"payment":{"methods":[{"name":"Zelle and chime payments are preferred. Zelle: [public business email omitted] Chime: $SunriseBio","id":"zelle","layer":"wallet/P2P method","status":"active_for_reta_cart_api","evidenceUrl":"https://sunrisebioresearch.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["zelle"],"renderedCheckoutLabels":[{"id":"zelle","label":"Zelle and chime payments are preferred. Zelle: [public business email omitted] Chime: $SunriseBio"}],"configuredBeforeCart":["zelle"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://sunrisebioresearch.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://sunrisebioresearch.com/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"zelle","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://sunrisebioresearch.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.zellepay.com/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","confidence":"high"},{"claim":"Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":9,"trustPresentation":5,"conversionUx":8,"overall":7.6,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","Anonymous Reta cart add succeeded and returned 1 active payment method.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.592,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://sunrisebioresearch.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://sunrisebioresearch.com/checkout/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","https://sunrisebioresearch.com/wp-json/wc/store/v1/products?slug=glp-3-r-200mg-10-x-20mg","https://sunrisebioresearch.com/wp-json/wc/store/v1/cart","https://sunrisebioresearch.com/checkout/"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":9,"trustPresentation":5,"conversionUx":8,"overall":7.6,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","Anonymous Reta cart add succeeded and returned 1 active payment method.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://sunrisebioresearch.com/product/glp-3-r-200mg-10-x-20mg/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14.592,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"tidetopia.com":{"domain":"tidetopia.com","canonicalDomain":"tidetopia.com","status":"complete","pagesCrawled":4,"platform":{"name":"Shopify","confidence":"high","evidenceUrl":"https://tidetopia.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"Retatrutide 30mg — The Extended Research Vial","strengths":["30mg"],"productUrl":"https://tidetopia.com/products/retatrutide-30mg","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":15672550850720,"productType":"Shopify product","evidenceUrl":"https://tidetopia.com/products/retatrutide-30mg","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 150.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Subscription or auto-ship continuity","subscriptionDetected":true,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://tidetopia.com/products/retatrutide-30mg"]},"tracking":{"stack":[],"evidenceUrl":"https://tidetopia.com/products/retatrutide-30mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":false,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":1,"checkoutPageHttpStatus":null,"gates":["account/login gate detected","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["ability Promise Learn Journal: The Current FAQs & Protocols Support Contact Us Shipping & Delivery Returns & Replacements Order Status Track Your Order Wholesale Inquiries Legal Terms of U"],"pluginSignals":[]},"payment":{"methods":[],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://tidetopia.com/cart","checkoutEvidenceUrl":"https://tidetopia.com/checkout","observedAt":"2026-07-27"},"grade":"B","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://tidetopia.com/products/retatrutide-30mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://tidetopia.com/products/retatrutide-30mg","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://tidetopia.com/checkout","confidence":"high"},{"claim":"Subscription or auto-ship continuity detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://tidetopia.com/products/retatrutide-30mg","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":9,"visualPolish":10,"productClarity":9.5,"trustPresentation":7,"conversionUx":8.5,"overall":8.8,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page."],"observedUrl":"https://tidetopia.com/products/retatrutide-30mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://tidetopia.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://tidetopia.com/products/retatrutide-30mg","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://tidetopia.com/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://tidetopia.com/checkout","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 401 ()"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"B","activeRetaCartVerified":true},"pageUrls":["https://tidetopia.com/","https://tidetopia.com/products/retatrutide-30mg","https://tidetopia.com/cart","https://tidetopia.com/checkout"],"design":{"viewport":"390x844","mobileUsability":9,"visualPolish":10,"productClarity":9.5,"trustPresentation":7,"conversionUx":8.5,"overall":8.8,"reasons":["Product name, price, and purchase CTA are visible in the mobile DOM.","COA, batch, or laboratory proof is surfaced on the page."],"observedUrl":"https://tidetopia.com/products/retatrutide-30mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":15,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":true,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"true-peptides.com":{"domain":"true-peptides.com","canonicalDomain":"true-peptides.com","status":"complete","pagesCrawled":5,"platform":{"name":"Next.js","confidence":"high","evidenceUrl":"https://true-peptides.com/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://true-peptides.com/product/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":"glp-retatrutide-10mg","productType":"JSON-LD product","evidenceUrl":"https://true-peptides.com/product/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":null,"currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://true-peptides.com/affiliate-program"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://true-peptides.com/product/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://true-peptides.com/shipping-policy"],"shippingReturnSnippets":["rt My Account Track Order Contact Affiliate Program Legal Terms of Service Privacy Policy Shipping Policy Research Compliance © 2026 True Peptides Terms and Policies Accessibility All products ar","3N48O64 Select Size 10mg $89.00 20mg $149.00 30mg $186.00 40mg $205.00 In Stock Estimated delivery: Wed, Jul 29 – Sun, Aug 2 Order within 23 hrs 41 mins for same-day shipping $89.00 Qty −","empt to purchase products. BY ACCESSING OR USING THE SITE, PLACING AN ORDER, OR ACCEPTING DELIVERY OF ANY PRODUCT, YOU REPRESENT AND WARRANT THAT: You have read, understood, and agree to b"],"pluginSignals":[]},"payment":{"methods":[{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://true-peptides.com/product/retatrutide","observedAt":"2026-07-27"},{"name":"Zelle","id":null,"layer":"wallet/P2P method","status":"public_claim_or_logo_only","evidenceUrl":"https://true-peptides.com/product/retatrutide","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://true-peptides.com/product/retatrutide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://true-peptides.com/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Zelle","roles":["P2P payment method"],"providerClass":"payment_method","sourceToken":"Zelle","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://true-peptides.com/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.zellepay.com/","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://true-peptides.com/product/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://true-peptides.com/product/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://true-peptides.com/product/retatrutide","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://true-peptides.com/affiliate-program","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":3,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://true-peptides.com/product/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"RESEARCH Research Use Only By using this site, you acknowledge that all products and information are provided for research purposes only and are not intended for human consumption ","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://true-peptides.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://true-peptides.com/product/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://true-peptides.com/affiliate-program","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://true-peptides.com/terms-of-service","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://true-peptides.com/shipping-policy","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://true-peptides.com/","https://true-peptides.com/product/retatrutide","https://true-peptides.com/affiliate-program","https://true-peptides.com/terms-of-service","https://true-peptides.com/shipping-policy"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":3,"overall":7,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://true-peptides.com/product/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"RESEARCH Research Use Only By using this site, you acknowledge that all products and information are provided for research purposes only and are not intended for human consumption ","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"truepeptidelabs.com":{"domain":"truepeptidelabs.com","canonicalDomain":"truepeptidelabs.com","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3RT","strengths":[],"productUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":1878,"productType":"variation","evidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 190.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Affiliate or ambassador acquisition","subscriptionDetected":true,"affiliateDetected":true,"referralDetected":true,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Klaviyo","Trustpilot","GoAffPro"],"evidenceUrls":["https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1"]},"tracking":{"stack":["Google Tag Manager","Google Analytics"],"evidenceUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":true,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":3.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["account/login gate detected","age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":[],"shippingReturnSnippets":["savings have been added to the cart. Close 1 Added to cart You're $ 60.00 away from free shipping! Close cart Review Your Cart 1 GLP-3RT - 30mg Price: $ 190.00 Remove Quantity contro"],"pluginSignals":["*","affiliate-wp","contact-form-7","elementor","jetpack","klaviyo","mailchimp-for-woocommerce","modern-cart","research-gate-pro","suretriggers","user-registration","wcpay-card2crypto-payments","woo-product-bundle","woocommerce"]},"payment":{"methods":[{"name":"linkmoney","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"clkk","id":"clkk","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":2,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","clkk"],"renderedCheckoutLabels":[],"configuredBeforeCart":["linkmoney","clkk"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"clkk","roles":["custom checkout integration"],"providerClass":"unresolved_provider","sourceToken":"clkk","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","confidence":"high"},{"claim":"Account or login gate observed in the public checkout journey.","evidenceUrl":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F","confidence":"high"},{"claim":"Affiliate or ambassador acquisition detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":2.5,"trustPresentation":3.5,"conversionUx":5,"overall":5.4,"reasons":["Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Age Verification Required This website is restricted. To continue, please confirm you meet the minimum age requirement and accept the agreement below. I confirm I am 21+ years of a","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F","accessedAt":"2026-07-27"},{"type":"product","url":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://truepeptidelabs.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fterms-of-service","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: the server responded with a status of 401 ()"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://truepeptidelabs.com/product/glp-3rt/","https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fproduct%2Fglp-3rt%2F","https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","https://truepeptidelabs.com/wp-json/wc/store/v1/products?slug=glp-3rt","https://truepeptidelabs.com/wp-json/wc/store/v1/cart","https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fcheckout%2F","https://truepeptidelabs.com/wp-content/plugins/affiliate-wp/assets/css/forms.min.css?ver=2.35.1","https://truepeptidelabs.com/my-account/?redirect_to=https%3A%2F%2Ftruepeptidelabs.com%2Fterms-of-service"],"design":{"viewport":"390x844","mobileUsability":8.5,"visualPolish":7.5,"productClarity":2.5,"trustPresentation":3.5,"conversionUx":5,"overall":5.4,"reasons":["Anonymous Reta cart add succeeded and returned 2 active payment methods.","Mobile DOM is missing a clearly visible product heading, price, purchase CTA.","No COA, batch, or laboratory-proof signal is visible in the loaded mobile page."],"observedUrl":"https://truepeptidelabs.com/product/glp-3rt/?attribute_pa_size=30mg","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":false,"visiblePrice":false,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":false,"blockingOverlay":true,"overlayText":"Age Verification Required This website is restricted. To continue, please confirm you meet the minimum age requirement and accept the agreement below. I confirm I am 21+ years of a","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"umbrellalabs.is":{"domain":"umbrellalabs.is","canonicalDomain":"umbrellalabs.is","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3R (LY-3437943) PEPTIDE VIAL","strengths":["1 mg","4 mg","2 mg","8 mg","12 mg","2mg","5mg","10mg"],"productUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":340888,"productType":"variable","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 64.99","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Loyalty or points retention","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":true,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["Yotpo","AfterShip"],"evidenceUrls":["https://umbrellalabs.is/payment-options/"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel","TikTok Pixel"],"evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://umbrellalabs.is/shipping-information/"],"shippingReturnSnippets":["abs ⭐️ ORDERS $100 OR MORE AND GET 10% OFF! ⭐️ ⭐️ ORDERS $200 OR MORE AND GET 20% OFF! ⭐️ FREE SHIPPING [public phone omitted] 0 0 Home My Account New Releases Peptides GLP’s Peptide Liquid Spray","Labs, Inc. (hereinafter “Umbrella Labs”) Acceptance of Terms By purchasing and accepting delivery of any products supplied by Umbrella Labs (“Products”) you agree to be bound by these ter"],"pluginSignals":["*","btcpay-greenfield-for-woocommerce","cartpops-pro","checkout-fees-for-woocommerce-pro","contact-form-7","elementor","essential-addons-for-elementor-lite","funnel-builder-pro","paynote","porto-functionality","read-more-without-refresh","simple-cloudflare-turnstile","smooth-back-to-top-button","wc-shipping-insurance","woo-bought-together-premium","woocommerce","woocommerce-advanced-products-labels","woocommerce-back-in-stock-notifications","wordlift","wp-marketing-automations","yaypricing-pro","yotpo-social-reviews-for-woocommerce"]},"payment":{"methods":[{"name":"Same-Day Bank Payment","id":"linkmoney","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay with US Bank Account","id":"btcpaygf_default","layer":"crypto checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"Pay with US Bank Account","id":"paynote","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"idem","id":"idem","layer":"bank checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"},{"name":"ACH","id":null,"layer":"bank checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","observedAt":"2026-07-27"},{"name":"Crypto","id":null,"layer":"crypto checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","observedAt":"2026-07-27"}],"activeMethodCount":4,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["linkmoney","btcpaygf_default","paynote","idem"],"renderedCheckoutLabels":[{"id":"linkmoney","label":"Same-Day Bank Payment"},{"id":"btcpaygf_default","label":"Pay with US Bank Account"},{"id":"paynote","label":"Pay with US Bank Account"}],"configuredBeforeCart":["linkmoney","btcpaygf_default","paynote","idem"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://umbrellalabs.is/checkout/","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Link Money","roles":["pay-by-bank provider"],"providerClass":"bank_payment_provider","sourceToken":"linkmoney","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://link.money/product/pay-by-bank","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"BTCPay Server","roles":["self-hosted crypto payment server"],"providerClass":"crypto_payment_provider","sourceToken":"btcpaygf_default","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://docs.btcpayserver.org/Guide/","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Paynote / Seamless ACH","roles":["ACH payment provider","bank checkout"],"providerClass":"bank_payment_provider","sourceToken":"paynote","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://developers-ach.seamlesschex.com/docs/overview","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"IDEM","roles":["bank checkout integration"],"providerClass":"unresolved_provider","sourceToken":"idem","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":null,"codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Bank transfer / ACH","roles":["bank transfer method"],"providerClass":"payment_method","sourceToken":"ACH","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."},{"provider":"Generic crypto method","roles":["crypto payment method or custom integration"],"providerClass":"crypto_payment_provider","sourceToken":"Crypto","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","capturedAt":"2026-07-27","confidence":"low","officialUrl":null,"codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","confidence":"high"},{"claim":"Loyalty or points retention detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://umbrellalabs.is/payment-options/","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":7.5,"conversionUx":8,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"evidence":[{"type":"storefront","url":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://umbrellalabs.is/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://umbrellalabs.is/checkout/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://umbrellalabs.is/payment-options/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://umbrellalabs.is/terms-of-service/","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://umbrellalabs.is/shipping-information/","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://umbrellalabs.is/shop/peptides/peptide-vials/retatrutide-ly-3437943/","https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","https://umbrellalabs.is/wp-json/wc/store/v1/products?slug=retatrutide-ly-3437943","https://umbrellalabs.is/wp-json/wc/store/v1/cart","https://umbrellalabs.is/checkout/","https://umbrellalabs.is/payment-options/","https://umbrellalabs.is/terms-of-service/","https://umbrellalabs.is/shipping-information/"],"design":{"viewport":"390x844","mobileUsability":8,"visualPolish":9,"productClarity":7,"trustPresentation":7.5,"conversionUx":8,"overall":7.9,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 4 active payment methods.","Mobile DOM is missing a clearly visible product heading, purchase CTA."],"observedUrl":"https://umbrellalabs.is/shop/peptides/peptide-glps/retatrutide-ly-3437943/","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":14,"visibleHeading":false,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":false,"overlayText":null,"brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"uspeptidescience.com":{"domain":"uspeptidescience.com","canonicalDomain":"uspeptidescience.com","status":"complete","pagesCrawled":7,"platform":{"name":"Next.js","confidence":"high","evidenceUrl":"https://www.uspeptidescience.com/"},"reta":{"listingStatus":"active_listing_found_cart_not_verified","productName":"Retatrutide","strengths":[],"productUrl":"https://uspeptidescience.com/shop/retatrutide","inStock":true,"purchasable":true,"anonymousCartAdd":false,"productId":null,"productType":"JSON-LD product","evidenceUrl":"https://www.uspeptidescience.com/shop/retatrutide","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":null,"currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Batch/COA proof as conversion","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":false,"coaLedConversionDetected":true,"technologyStack":[],"evidenceUrls":["https://www.uspeptidescience.com/legal/refund-policy"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","Meta Pixel"],"evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":true,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":6.5},"operations":{"cartAccessible":false,"anonymousCartAdd":false,"cartItemCount":null,"checkoutPageHttpStatus":null,"gates":["age gate or 21+ attestation","RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://www.uspeptidescience.com/legal/refund-policy","https://www.uspeptidescience.com/legal/shipping-policy"],"shippingReturnSnippets":["ibers get 20% off their first order. Submit → Buy Peptides Information Support Contact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research","off their first order. Submit → Buy Peptides Information Support Contact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research Use Only © 2026","ontact Us Return Policy Shipping Policy Track Order Legal Terms of Service Privacy Policy Refund Policy Research Use Only © 2026 US Peptide Science Terms Privacy Refund Policy Shipping Policy C"],"pluginSignals":[]},"payment":{"methods":[{"name":"PayPal","id":null,"layer":"checkout integration","status":"public_claim_or_logo_only","evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","observedAt":"2026-07-27"}],"activeMethodCount":0,"evidence":{"anonymousRetaCartAdded":false,"activeMethodIdsReturned":[],"renderedCheckoutLabels":[],"configuredBeforeCart":[],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":null,"checkoutEvidenceUrl":null,"observedAt":"2026-07-27"},"grade":"C","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"PayPal","roles":["digital wallet","payment service provider","payment processor"],"providerClass":"processor_or_full_stack_psp","sourceToken":"PayPal","sourceLayer":"visible_method","evidenceStatus":"public_claim_or_logo","evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","capturedAt":"2026-07-27","confidence":"low","officialUrl":"https://www.paypal.com/us/brc/article/how-paypal-works-for-sellers","codeIdentified":false,"whatCodeProves":"A provider-branded integration marker was present in public HTML, JavaScript, plugin, or API output.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","confidence":"high"},{"claim":"Age or 21+ attestation observed.","evidenceUrl":"https://uspeptidescience.com/shop/retatrutide","confidence":"high"},{"claim":"Batch/COA proof as conversion detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://www.uspeptidescience.com/legal/refund-policy","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":6.5,"conversionUx":3,"overall":6.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://uspeptidescience.com/shop/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Age & Research Disclaimer You must be 21 or older to enter this site. All products sold by US Peptide Science are intended for research purposes only. They are not intended for hum","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://www.uspeptidescience.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://uspeptidescience.com/shop/retatrutide","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://www.uspeptidescience.com/shop/retatrutide","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.uspeptidescience.com/legal/refund-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.uspeptidescience.com/legal/shipping-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://www.uspeptidescience.com/legal/terms","accessedAt":"2026-07-27"}],"errors":[],"statusEvidence":{"listing":"active_listing_found_cart_not_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"C","activeRetaCartVerified":false},"pageUrls":["https://uspeptidescience.com/","https://www.uspeptidescience.com/","https://uspeptidescience.com/shop/retatrutide","https://www.uspeptidescience.com/shop/retatrutide","https://www.uspeptidescience.com/legal/refund-policy","https://www.uspeptidescience.com/legal/shipping-policy","https://www.uspeptidescience.com/legal/terms"],"design":{"viewport":"390x844","mobileUsability":7.5,"visualPolish":8.5,"productClarity":8.5,"trustPresentation":6.5,"conversionUx":3,"overall":6.8,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Mobile DOM is missing a clearly visible purchase CTA.","The automated anonymous cart test did not reach a verified active payment-method state."],"observedUrl":"https://uspeptidescience.com/shop/retatrutide","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"Age & Research Disclaimer You must be 21 or older to enter this site. All products sold by US Peptide Science are intended for research purposes only. They are not intended for hum","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"},"veloraresearch.com":{"domain":"veloraresearch.com","canonicalDomain":"veloraresearch.com","status":"complete","pagesCrawled":8,"platform":{"name":"WooCommerce","confidence":"high","evidenceUrl":"https://veloraresearch.com/"},"reta":{"listingStatus":"active_listing_anonymous_cart_add_verified","productName":"GLP-3 RT","strengths":["10mg","20mg","30mg","5 mg"],"productUrl":"https://veloraresearch.com/product/glp-3-rt","inStock":true,"purchasable":true,"anonymousCartAdd":true,"productId":3341,"productType":"variable","evidenceUrl":"https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","verifiedAt":"2026-07-27"},"pricing":{"displayedPrice":"USD 81.00","currency":"USD","secondaryIndexPricePerMg":null,"secondaryIndexUrl":null,"note":"Not normalized for strength, bundle size, discount, tax, or shipping."},"marketing":{"strongestMechanic":"Free-shipping threshold","subscriptionDetected":false,"affiliateDetected":false,"referralDetected":false,"loyaltyDetected":false,"quantityDiscountDetected":false,"freeShippingDetected":true,"coaLedConversionDetected":true,"technologyStack":["GoAffPro"],"evidenceUrls":["https://veloraresearch.com/terms-conditions"]},"tracking":{"stack":["Google Tag Manager","Google Analytics","TikTok Pixel"],"evidenceUrl":"https://veloraresearch.com/product/glp-3-rt","note":"Public script/plugin marker only; campaign activity and attribution quality are unverified."},"trust":{"coaOrTestingSignal":true,"reviewSignal":true,"ruoNotice":true,"ageOr21PlusGate":false,"accountGate":false,"independentTestIndex":null,"independentTestCount":0,"latestIndexedTest":null,"mobileTrustPresentationScore":7.5},"operations":{"cartAccessible":true,"anonymousCartAdd":true,"cartItemCount":null,"checkoutPageHttpStatus":200,"gates":["RUO/not-for-human-consumption notice"],"shippingReturnEvidenceUrls":["https://veloraresearch.com/shipping-policy","https://veloraresearch.com/refund-return"],"shippingReturnSnippets":["rified | Velora Research Lab-Verified Research Peptides Third-Party Tested & COA Verified Free Shipping on Orders $200+ [public phone omitted] 0 Home About Us Shop Peptides Featured Products Blog Contact",". Lab-verified compounds with Certificates of Analysis. For laboratory research use only. Free shipping on orders $200+. Shop Now Learn More Third-Party Lab Tested Every batch verified 99%+ Pur","w Learn More Third-Party Lab Tested Every batch verified 99%+ Purity Pharmaceutical grade Free Shipping $200+ 2-day US delivery COA Verified Full documentation Shop Featured Products View All G"],"pluginSignals":["*","age-gate","checkout-for-woocommerce","google-site-kit","gravityforms","gtm-server-side","omnisend-connect","pixelyoursite","tiktok-for-woocommerce","wc-authorize-net-1-1","woocommerce","wt-smart-coupon-pro"]},"payment":{"methods":[{"name":"Credit Card","id":"authorize_net","layer":"checkout integration","status":"active_for_reta_cart_api","evidenceUrl":"https://veloraresearch.com/wp-json/wc/store/v1/cart","observedAt":"2026-07-27"}],"activeMethodCount":1,"evidence":{"anonymousRetaCartAdded":true,"activeMethodIdsReturned":["authorize_net"],"renderedCheckoutLabels":[{"id":"authorize_net","label":"Credit Card"}],"configuredBeforeCart":["authorize_net"],"configuredButNotActiveForRetaCart":[],"cartEvidenceUrl":"https://veloraresearch.com/wp-json/wc/store/v1/cart","checkoutEvidenceUrl":"https://veloraresearch.com/checkout","observedAt":"2026-07-27"},"grade":"A","note":"Public code and runtime can identify provider-branded integrations. Active cart evidence is stronger than an installed plugin or logo, but it does not prove a successful transaction, written underwriting, the merchant's contractual processor/ISO, merchant of record, downstream processor behind a multi-processor gateway, or the acquirer and sponsor bank.","providerSignals":[{"provider":"Authorize.Net","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"authorize_net","sourceLayer":"cart_method_id","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://veloraresearch.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high","officialUrl":"https://www.authorize.net/payments.html","codeIdentified":true,"whatCodeProves":"The storefront returned this provider-branded method for the tested anonymous Reta cart.","boundary":"Public code can identify a payment provider or integration. It does not by itself prove activation, a successful transaction, written underwriting for the catalog, the merchant of record, the downstream processor when a gateway can route to several, or the acquiring and sponsor-bank chain."}]},"claims":[{"claim":"Current Reta/retatrutide listing found on the public storefront.","evidenceUrl":"https://veloraresearch.com/product/glp-3-rt","confidence":"high"},{"claim":"Research-use-only or not-for-human-consumption notice observed.","evidenceUrl":"https://veloraresearch.com/product/glp-3-rt","confidence":"high"},{"claim":"Free-shipping threshold detected as the strongest public conversion/retention mechanic.","evidenceUrl":"https://veloraresearch.com/terms-conditions","confidence":"medium"}],"sourcing":{"manufacturer":"unknown","supplier":"unknown","evidence":[],"note":"No independently verifiable manufacturer or upstream supplier evidence found; no inference made."},"uiUx":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://veloraresearch.com/product/glp-3-rt","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"You must be 21 years of age or older to enter this site. By accessing this website, you agree to our Terms and Conditions. Are you over 21 years of age? No Yes Remember me All mate","brokenImages":0}},"evidence":[{"type":"storefront","url":"https://veloraresearch.com/","accessedAt":"2026-07-27"},{"type":"product","url":"https://veloraresearch.com/product/glp-3-rt","accessedAt":"2026-07-27"},{"type":"product_api_or_page","url":"https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","accessedAt":"2026-07-27"},{"type":"cart_api_or_page","url":"https://veloraresearch.com/wp-json/wc/store/v1/cart","accessedAt":"2026-07-27"},{"type":"checkout_page","url":"https://veloraresearch.com/checkout","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://veloraresearch.com/terms-conditions","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://veloraresearch.com/shipping-policy","accessedAt":"2026-07-27"},{"type":"policy_or_program","url":"https://veloraresearch.com/refund-return","accessedAt":"2026-07-27"}],"errors":["Failed to load resource: net::ERR_NAME_NOT_RESOLVED"],"statusEvidence":{"listing":"active_listing_anonymous_cart_add_verified","verifiedAt":"2026-07-27","storefrontHttpStatus":200,"evidenceGrade":"A","activeRetaCartVerified":true},"pageUrls":["https://veloraresearch.com/","https://veloraresearch.com/product/glp-3-rt","https://veloraresearch.com/wp-json/wc/store/v1/products?search=GLP-3&per_page=20","https://veloraresearch.com/wp-json/wc/store/v1/cart","https://veloraresearch.com/checkout","https://veloraresearch.com/terms-conditions","https://veloraresearch.com/shipping-policy","https://veloraresearch.com/refund-return"],"design":{"viewport":"390x844","mobileUsability":6.5,"visualPolish":7.5,"productClarity":8.5,"trustPresentation":7.5,"conversionUx":6,"overall":7.2,"reasons":["COA, batch, or laboratory proof is surfaced on the page.","Anonymous Reta cart add succeeded and returned 1 active payment method.","Mobile DOM is missing a clearly visible purchase CTA."],"observedUrl":"https://veloraresearch.com/product/glp-3-rt","scoringBasis":"Automated 390x844 mobile browser observation plus anonymous cart evidence. Visual-polish score is a reproducible DOM/image heuristic, not a subjective design review.","metrics":{"viewportMeta":true,"noHorizontalOverflow":true,"bodyFontSize":16,"visibleHeading":true,"visiblePrice":true,"visibleCartCta":false,"visibleProductImage":true,"visibleCoaSignal":true,"blockingOverlay":true,"overlayText":"You must be 21 years of age or older to enter this site. By accessing this website, you agree to our Terms and Conditions. Are you over 21 years of age? No Yes Remember me All mate","brokenImages":0}},"auditType":"Anonymous Reta storefront and checkout scan"}}}; diff --git a/biologix-strategy-board/research/retatrutide-payment-provider-data.js b/biologix-strategy-board/research/retatrutide-payment-provider-data.js new file mode 100644 index 0000000..f55186e --- /dev/null +++ b/biologix-strategy-board/research/retatrutide-payment-provider-data.js @@ -0,0 +1,2 @@ +/* Generated by scripts/build-retatrutide-payment-provider-data.mjs. Public code and checkout evidence only; no transaction was attempted. */ +window.NOLI_RETATRUTIDE_PAYMENT_PROVIDER_CENSUS = {"generatedAt":"2026-07-27T23:21:31.553Z","methodology":"Read-only census of payment names, checkout identifiers, SDK/plugin markers, and provider integrations already captured in the 48-store checkout dataset and 570-domain public crawl. No new transaction, order, account, credential, PII, or gate-bypass activity was performed.","correction":{"tooAbsoluteWording":"Zero processor/acquirer chains were independently verified.","whyItIsTooAbsolute":"The datasets do verify named provider integrations in public code, including PSP/PayFac/processor-level brands such as Stripe, Square, Airwallex, WooPayments, PayPal, Amazon Pay, QuickBooks Payments, and Affirm. Some provider IDs were also returned as active for an anonymous Reta cart. What remains unverified is the merchant's contractual processor/ISO/acquirer chain, transaction success, and settlement.","safeReplacement":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidenceBoundary":{"publicCodeCanEstablish":["A named SDK, script host, WooCommerce plugin, CSS/JS bundle, or checkout method identifier is exposed.","For active_for_reta_cart_api rows, the public cart API returned that identifier after an anonymous Reta cart add.","For configured_not_active_for_reta_cart rows, the integration was exposed/configured but unavailable for the tested cart."],"publicCodeCannotEstablishAlone":["That the merchant owns an approved and durable account with the named provider.","The legal merchant of record, ISO/MSP, acquiring processor, sponsor/acquiring bank, MCC, reserves, limits, or underwriting terms.","That a charge can be authorized, captured, settled, or survive future risk review."]},"stats":{"sourceCheckoutDomains":48,"sourceAuditDomains":570,"censusDomains":149,"evidenceRows":783,"canonicalProviderOrMethodCount":97,"classificationCounts":{"frontend SDK/plugin":79,"gateway":117,"method":459,"PSP/PayFac/processor":128},"evidenceStatusCounts":{"active_for_reta_cart_api":107,"visible_provider_mention_activation_unknown":109,"installed_plugin_signal_activation_unknown":80,"configured_not_active_for_reta_cart":14,"embedded_code_provider_marker_activation_unknown":27,"installed_or_code_exposed_activation_unknown":69,"planned_placeholder_not_active":1,"visible_first_party_language_activation_unknown":251,"public_claim_or_logo_only":122,"historical_failed_or_shut_down_code_comment":2,"configured_disabled_in_public_code":1},"sourceDatasetCounts":{"noli-checkout-scan-2026-07-27.json":243,"retatrutide-vendor-audit-data.js":540},"activeNamedGatewayOrPspRows":44,"pspProviderCount":10,"pspProviderDomainCount":71,"pspInstalledOrCodeExposedDomainCount":48,"pspActiveProviderLayerDomainCount":7,"explicitProcessorIsoRowsIn570StructuredFields":0,"explicitAcquirerSponsorBankRowsIn570StructuredFields":0},"providerRollup":{"AMG Express token":{"canonicalProvider":"AMG Express token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["geneticpeptide.com","lifelinkresearch.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["geneticpeptide.com","lifelinkresearch.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["geneticpeptide.com","lifelinkresearch.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["amgexpress"],"evidenceCount":2},"Azeban Pay":{"canonicalProvider":"Azeban Pay","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["midwestpeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["midwestpeptide.com"],"providerTokens":["Azeban Pay"],"evidenceCount":3},"ByteNFT token":{"canonicalProvider":"ByteNFT token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["behemothlabz.com","geneticpeptide.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["behemothlabz.com","geneticpeptide.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["behemothlabz.com","geneticpeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["bytenft"],"evidenceCount":2},"Card2Crypto":{"canonicalProvider":"Card2Crypto","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["truepeptidelabs.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["truepeptidelabs.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["wcpay-card2crypto-payments"],"evidenceCount":1},"CLKK token":{"canonicalProvider":"CLKK token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["ignitepeptides.com","truepeptidelabs.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["ignitepeptides.com","truepeptidelabs.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["ignitepeptides.com","truepeptidelabs.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["clkk"],"evidenceCount":2},"Conditional-payments plugin":{"canonicalProvider":"Conditional-payments plugin","layers":["frontend SDK/plugin"],"domainCount":3,"domains":["aminoannex.com","biolongevitylabs.com","nexaph.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["aminoannex.com","biolongevitylabs.com","nexaph.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["conditional-payments-for-woocommerce","conditional-payments-for-woocommerce-pro","conditional-payments-premium"],"evidenceCount":3},"Custom gateway token":{"canonicalProvider":"Custom gateway token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["hydroresearchpeptides.com","royal-peptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["royal-peptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["hydroresearchpeptides.com","royal-peptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["alg_custom_gateway_1","alg_custom_gateway_2"],"evidenceCount":2},"Custom payment gateway plugin":{"canonicalProvider":"Custom payment gateway plugin","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["lifelinkresearch.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["lifelinkresearch.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["custom-payment-gateways-woocommerce"],"evidenceCount":1},"DFIN Sell token":{"canonicalProvider":"DFIN Sell token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["riptidewellness.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["riptidewellness.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["dfinsell"],"evidenceCount":1},"Direct-payments plugin":{"canonicalProvider":"Direct-payments plugin","layers":["frontend SDK/plugin"],"domainCount":3,"domains":["gxresearch.shop","premierbiolabs.com","thepeptidehaven.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["gxresearch.shop","premierbiolabs.com","thepeptidehaven.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["direct-payments-for-woocommerce-pro"],"evidenceCount":3},"FinGrid token":{"canonicalProvider":"FinGrid token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["hydroresearchpeptides.com","peptidescollective.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["peptidescollective.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["hydroresearchpeptides.com","peptidescollective.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["my_fingrid_gateway"],"evidenceCount":2},"Gateway-rotator plugin":{"canonicalProvider":"Gateway-rotator plugin","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["peptira.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["peptira.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["peptira-gateway-rotator"],"evidenceCount":1},"IDEM token":{"canonicalProvider":"IDEM token","layers":["frontend SDK/plugin"],"domainCount":4,"domains":["hydroresearchpeptides.com","northwestpeptides.com","researchchemhq.co","umbrellalabs.is"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["northwestpeptides.com","researchchemhq.co","umbrellalabs.is"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":4,"installedOrCodeExposedDomains":["hydroresearchpeptides.com","northwestpeptides.com","researchchemhq.co","umbrellalabs.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["idem"],"evidenceCount":4},"iMerchant":{"canonicalProvider":"iMerchant","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["primepeptides.co"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["primepeptides.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["imerchant-payments"],"evidenceCount":1},"KMI Payments token":{"canonicalProvider":"KMI Payments token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["pacificresearchpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["pacificresearchpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["pacificresearchpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["kmi_payments"],"evidenceCount":1},"MAEF child gateway token":{"canonicalProvider":"MAEF child gateway token","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["milehighcompounds.is","riptidewellness.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["milehighcompounds.is","riptidewellness.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["milehighcompounds.is","riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["maef_child_gateway"],"evidenceCount":2},"MGPay token":{"canonicalProvider":"MGPay token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["hydroresearchpeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["hydroresearchpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["mgpay"],"evidenceCount":1},"MNet gateway token":{"canonicalProvider":"MNet gateway token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["hydroresearchpeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["hydroresearchpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["mnet_gateway"],"evidenceCount":1},"mps_v_2d_15":{"canonicalProvider":"mps_v_2d_15","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["nxtstate.co"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["nxtstate.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["nxtstate.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["mps_v_2d_15"],"evidenceCount":1},"NextEng redirect token":{"canonicalProvider":"NextEng redirect token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["neb.co"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["neb.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["neb.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["nexteng_redirect"],"evidenceCount":1},"Offsite-payments plugin":{"canonicalProvider":"Offsite-payments plugin","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["aminoannex.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["aminoannex.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["wcpo-offsite-payments"],"evidenceCount":1},"Pay by Bank (provider not named)":{"canonicalProvider":"Pay by Bank (provider not named)","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["peptidescollective.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["peptidescollective.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["pay-by-bank"],"evidenceCount":1},"PayerURL token":{"canonicalProvider":"PayerURL token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["onyxresearch.shop"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["onyxresearch.shop"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["onyxresearch.shop"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["wc_payerurl_gateway"],"evidenceCount":1},"PeachPay":{"canonicalProvider":"PeachPay","layers":["frontend SDK/plugin"],"domainCount":2,"domains":["biolongevitylabs.com","peptira.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["peptira.com"],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["biolongevitylabs.com","peptira.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["peachpay-for-woocommerce","peachpay_purchase_order"],"evidenceCount":2},"PipePay token":{"canonicalProvider":"PipePay token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["researchchemhq.co"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["researchchemhq.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["researchchemhq.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["pipepay"],"evidenceCount":1},"Plaid":{"canonicalProvider":"Plaid","layers":["frontend SDK/plugin"],"domainCount":3,"domains":["greatlifepeptides.com","pekcuralabs.com","riptidewellness.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["greatlifepeptides.com","pekcuralabs.com","riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Plaid"],"evidenceCount":6},"PsiFi token":{"canonicalProvider":"PsiFi token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["northwestpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["northwestpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["northwestpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["psifi"],"evidenceCount":1},"Quiklie token":{"canonicalProvider":"Quiklie token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["regentide.net"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["regentide.net"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["regentide.net"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["quiklie"],"evidenceCount":1},"regentide_wise_ach_manual":{"canonicalProvider":"regentide_wise_ach_manual","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["regentide.net"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["regentide.net"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["regentide.net"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["regentide_wise_ach_manual"],"evidenceCount":1},"Shield gateway token":{"canonicalProvider":"Shield gateway token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["adaptpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["adaptpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["adaptpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["shield_gateway"],"evidenceCount":1},"Site B gateway token":{"canonicalProvider":"Site B gateway token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["geneticpeptide.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["geneticpeptide.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["geneticpeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["site_b_gateway"],"evidenceCount":1},"SSTG Payments token":{"canonicalProvider":"SSTG Payments token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["milehighcompounds.is"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["milehighcompounds.is"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["milehighcompounds.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["sstg_payments"],"evidenceCount":1},"Tagada token":{"canonicalProvider":"Tagada token","layers":["frontend SDK/plugin"],"domainCount":3,"domains":["onyxbiolabs.com","peptidescollective.com","realpeptides.co"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["onyxbiolabs.com","peptidescollective.com","realpeptides.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["onyxbiolabs.com","peptidescollective.com","realpeptides.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["tagada"],"evidenceCount":3},"Truvo token":{"canonicalProvider":"Truvo token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["onyxresearch.shop"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["onyxresearch.shop"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["onyxresearch.shop"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["truvo_dropin"],"evidenceCount":1},"ven":{"canonicalProvider":"ven","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["behemothlabz.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["behemothlabz.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["behemothlabz.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["ven"],"evidenceCount":1},"Veylo Pay token":{"canonicalProvider":"Veylo Pay token","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["onyxresearch.shop"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["onyxresearch.shop"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["onyxresearch.shop"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["veylo_pay"],"evidenceCount":1},"WooCommerce Wallet":{"canonicalProvider":"WooCommerce Wallet","layers":["frontend SDK/plugin"],"domainCount":1,"domains":["biolongevitylabs.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["biolongevitylabs.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woo-wallet"],"evidenceCount":1},"Yodlee":{"canonicalProvider":"Yodlee","layers":["frontend SDK/plugin"],"domainCount":11,"domains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","longevityprolabs.com","nurevpeptides.com","pekcuralabs.com","pepclubusa.com","riptidewellness.com","xcelpeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":11,"installedOrCodeExposedDomains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","longevityprolabs.com","nurevpeptides.com","pekcuralabs.com","pepclubusa.com","riptidewellness.com","xcelpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Yodlee"],"evidenceCount":19},"4Square Gateway":{"canonicalProvider":"4Square Gateway","layers":["gateway"],"domainCount":1,"domains":["swisschems.is"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["swisschems.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["4square-gateway"],"evidenceCount":1},"Authorize.Net":{"canonicalProvider":"Authorize.Net","layers":["gateway"],"domainCount":9,"domains":["agelessvitalitypeptides.com","apex-peptides.com","greatestpeptides.com","libertypeptides.com","licensedpeptides.com","purelabsrx.com","swisschems.is","thepeptidehaven.com","veloraresearch.com"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["agelessvitalitypeptides.com","greatestpeptides.com","veloraresearch.com"],"activeProviderLayerDomainCount":3,"activeProviderLayerDomains":["agelessvitalitypeptides.com","greatestpeptides.com","veloraresearch.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":9,"installedOrCodeExposedDomains":["agelessvitalitypeptides.com","apex-peptides.com","greatestpeptides.com","libertypeptides.com","licensedpeptides.com","purelabsrx.com","swisschems.is","thepeptidehaven.com","veloraresearch.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Authorize.Net","anet","authorize_net","authorize_net_cim_credit_card","payment-gateway-for-authorize-net-for-woocommerce","woo-authorize-net-gateway-aim","woocommerce-gateway-authorize-net-cim"],"evidenceCount":15},"Bankful":{"canonicalProvider":"Bankful","layers":["gateway"],"domainCount":9,"domains":["biologixlabsresearch.com","evolvepeptides.com","evopeptidesus.com","gxresearch.shop","neb.co","rebirthlabs.org","sentinelvalor.com","smtpeptides.com","vertexpeptideslab.org"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["neb.co"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["neb.co"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":9,"installedOrCodeExposedDomains":["biologixlabsresearch.com","evolvepeptides.com","evopeptidesus.com","gxresearch.shop","neb.co","rebirthlabs.org","sentinelvalor.com","smtpeptides.com","vertexpeptideslab.org"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Bankful","bankful","bankful_hosted_gateway"],"evidenceCount":17},"Blockonomics":{"canonicalProvider":"Blockonomics","layers":["gateway"],"domainCount":4,"domains":["geneticpeptide.com","geneticpeptides.com","injectify.is","polarispeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["geneticpeptide.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["geneticpeptide.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":4,"installedOrCodeExposedDomains":["geneticpeptide.com","geneticpeptides.com","injectify.is","polarispeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Blockonomics","blockonomics"],"evidenceCount":5},"BTCPay Server":{"canonicalProvider":"BTCPay Server","layers":["gateway"],"domainCount":2,"domains":["lifelinkresearch.com","umbrellalabs.is"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["lifelinkresearch.com","umbrellalabs.is"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["lifelinkresearch.com","umbrellalabs.is"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["lifelinkresearch.com","umbrellalabs.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["btcpaygf_default"],"evidenceCount":2},"CashEnvoy":{"canonicalProvider":"CashEnvoy","layers":["gateway"],"domainCount":1,"domains":["riptidewellness.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["riptidewellness.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["riptidewellness.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["cashenvoy"],"evidenceCount":1},"CEvGate":{"canonicalProvider":"CEvGate","layers":["gateway"],"domainCount":1,"domains":["tryaurapeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["tryaurapeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["cevgate-payments"],"evidenceCount":1},"Coinbase / Coinbase Commerce":{"canonicalProvider":"Coinbase / Coinbase Commerce","layers":["gateway"],"domainCount":2,"domains":["midwestpeptide.com","researchchemhq.co"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":2,"visibleClaimDomains":["midwestpeptide.com","researchchemhq.co"],"providerTokens":["Coinbase / Coinbase Commerce"],"evidenceCount":4},"CryptoPay":{"canonicalProvider":"CryptoPay","layers":["gateway"],"domainCount":1,"domains":["realpeptides.co"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["realpeptides.co"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["realpeptides.co"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["realpeptides.co"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["cryptopay"],"evidenceCount":1},"ForumPay":{"canonicalProvider":"ForumPay","layers":["gateway"],"domainCount":2,"domains":["behemothlabz.com","onyxbiolabs.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["behemothlabz.com","onyxbiolabs.com"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["behemothlabz.com","onyxbiolabs.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["behemothlabz.com","onyxbiolabs.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["forumpay"],"evidenceCount":2},"Green.Money":{"canonicalProvider":"Green.Money","layers":["gateway"],"domainCount":1,"domains":["injectify.is"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["injectify.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["green-money-payment-gateway"],"evidenceCount":1},"InstaOnramp":{"canonicalProvider":"InstaOnramp","layers":["gateway"],"domainCount":1,"domains":["behemothlabz.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["behemothlabz.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["behemothlabz.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["behemothlabz.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["instaonrampdotto-instant-payment-gateway-hostedinstaonrampdotto"],"evidenceCount":1},"Link Money":{"canonicalProvider":"Link Money","layers":["gateway"],"domainCount":12,"domains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","peptira.com","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"activeForRetaCartDomainCount":11,"activeForRetaCartDomains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"activeProviderLayerDomainCount":11,"activeProviderLayerDomains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["peptira.com"],"installedOrCodeExposedDomainCount":12,"installedOrCodeExposedDomains":["adaptpeptides.com","ignitepeptides.com","milehighcompounds.is","onyxbiolabs.com","onyxresearch.shop","peptidology.co","peptira.com","realpeptides.co","researchchemhq.co","royal-peptides.com","truepeptidelabs.com","umbrellalabs.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["linkmoney"],"evidenceCount":12},"MoonPay":{"canonicalProvider":"MoonPay","layers":["gateway"],"domainCount":1,"domains":["researchchemhq.co"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["researchchemhq.co"],"providerTokens":["MoonPay"],"evidenceCount":1},"MyCryptoCheckout":{"canonicalProvider":"MyCryptoCheckout","layers":["gateway"],"domainCount":1,"domains":["labtrustpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["labtrustpeptides.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["labtrustpeptides.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["labtrustpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["mycryptocheckout"],"evidenceCount":1},"NMI":{"canonicalProvider":"NMI","layers":["gateway"],"domainCount":19,"domains":["bulkpeptidesupply.com","geneticpeptide.com","geneticpeptides.com","gentlemanpeptides.com","goalphalabs.com","milehighcompounds.is","myoasislabs.com","nexaph.com","peptidecrafters.com","peptidology.co","peptira.com","premierbiolabs.com","protidehealth.com","realpeptides.co","rebirthlabs.org","rivnpeptides.com","s1research.net","simplepeptide.com","valorpeptides.com"],"activeForRetaCartDomainCount":6,"activeForRetaCartDomains":["geneticpeptide.com","milehighcompounds.is","peptidology.co","protidehealth.com","realpeptides.co","rivnpeptides.com"],"activeProviderLayerDomainCount":6,"activeProviderLayerDomains":["geneticpeptide.com","milehighcompounds.is","peptidology.co","protidehealth.com","realpeptides.co","rivnpeptides.com"],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["peptira.com"],"installedOrCodeExposedDomainCount":19,"installedOrCodeExposedDomains":["bulkpeptidesupply.com","geneticpeptide.com","geneticpeptides.com","gentlemanpeptides.com","goalphalabs.com","milehighcompounds.is","myoasislabs.com","nexaph.com","peptidecrafters.com","peptidology.co","peptira.com","premierbiolabs.com","protidehealth.com","realpeptides.co","rebirthlabs.org","rivnpeptides.com","s1research.net","simplepeptide.com","valorpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["NMI","nmi","nmi3_apple_pay","nmi3_google_pay","nmi_gateway_woocommerce_credit_card","nmipay","oasis-nmi-extramid","peachpay_nmi_card","robust_nmi_gateway","woocommerce-gateway-nmi","woofunnels-woocommerce-nmi-gateway","wp-nmi-gateway-pci-woocommerce"],"evidenceCount":34},"NoRamp":{"canonicalProvider":"NoRamp","layers":["gateway"],"domainCount":2,"domains":["researchchemhq.co","sunday-usa.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["researchchemhq.co","sunday-usa.com"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["researchchemhq.co","sunday-usa.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["researchchemhq.co","sunday-usa.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["noramp_platform"],"evidenceCount":2},"NOWPayments":{"canonicalProvider":"NOWPayments","layers":["gateway"],"domainCount":8,"domains":["adaptpeptides.com","epic-pep.com","nexaph.com","nurevpeptides.com","omegamino.net","realpeptides.co","rhomeresearch.com","rivnpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["adaptpeptides.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["adaptpeptides.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":7,"installedOrCodeExposedDomains":["adaptpeptides.com","nexaph.com","nurevpeptides.com","omegamino.net","realpeptides.co","rhomeresearch.com","rivnpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["NOWPayments","nowpayments-for-woocommerce-premium","nowpayments_gateway"],"evidenceCount":10},"PayGate.to":{"canonicalProvider":"PayGate.to","layers":["gateway"],"domainCount":2,"domains":["researchchemhq.co","royal-peptides.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["researchchemhq.co","royal-peptides.com"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["researchchemhq.co","royal-peptides.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["researchchemhq.co","royal-peptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["paygatedotto-crypto-payment-gateway-dynamic","paygatedotto-instant-payment-gateway-hostedpaygatedotto"],"evidenceCount":3},"Ramp Network":{"canonicalProvider":"Ramp Network","layers":["gateway"],"domainCount":1,"domains":["researchchemhq.co"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["researchchemhq.co"],"providerTokens":["Ramp Network"],"evidenceCount":2},"Zigu Gateway":{"canonicalProvider":"Zigu Gateway","layers":["gateway"],"domainCount":1,"domains":["corepeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["corepeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["zigu-payment-gateway"],"evidenceCount":1},"ACH":{"canonicalProvider":"ACH","layers":["method"],"domainCount":17,"domains":["aloralab.shop","aminoannex.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","lifelinkresearch.com","northwestpeptides.com","nurevpeptides.com","omegamino.net","onyxbiolabs.com","orionpeptide.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","thepeplair.com","true-peptides.com","umbrellalabs.is"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":17,"visibleClaimDomains":["aloralab.shop","aminoannex.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","lifelinkresearch.com","northwestpeptides.com","nurevpeptides.com","omegamino.net","onyxbiolabs.com","orionpeptide.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","thepeplair.com","true-peptides.com","umbrellalabs.is"],"providerTokens":["ACH"],"evidenceCount":22},"Affirm":{"canonicalProvider":"Affirm","layers":["method"],"domainCount":1,"domains":["pspeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["pspeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["pspeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["pay_with_affirm_shopify"],"evidenceCount":1},"Afterpay":{"canonicalProvider":"Afterpay","layers":["method"],"domainCount":2,"domains":["peptidelabs.us","pspeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":2,"visibleClaimDomains":["peptidelabs.us","pspeptides.com"],"providerTokens":["Afterpay"],"evidenceCount":8},"Alibaba Payment":{"canonicalProvider":"Alibaba Payment","layers":["method"],"domainCount":1,"domains":["veltrixpeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["veltrixpeptide.com"],"providerTokens":["Alibaba Payment"],"evidenceCount":3},"Alipay":{"canonicalProvider":"Alipay","layers":["method"],"domainCount":4,"domains":["hjpeptide.com","keruihk.com","weipeptide.com","yidanbio.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":4,"visibleClaimDomains":["hjpeptide.com","keruihk.com","weipeptide.com","yidanbio.com"],"providerTokens":["Alipay"],"evidenceCount":18},"American Express":{"canonicalProvider":"American Express","layers":["method"],"domainCount":27,"domains":["bulkpeptides.com","cactuspeptides.com","epic-pep.com","glpeptides.is","greatestpeptides.com","lifelinkresearch.com","midwestpeptide.com","mytidelab.com","northlinelabs.org","nosbarbersupply.com","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidelabs.us","peptidescollective.com","peptira.com","protidehealth.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net","stratelabs.is"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":27,"visibleClaimDomains":["bulkpeptides.com","cactuspeptides.com","epic-pep.com","glpeptides.is","greatestpeptides.com","lifelinkresearch.com","midwestpeptide.com","mytidelab.com","northlinelabs.org","nosbarbersupply.com","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidelabs.us","peptidescollective.com","peptira.com","protidehealth.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net","stratelabs.is"],"providerTokens":["American Express"],"evidenceCount":33},"Apple Pay":{"canonicalProvider":"Apple Pay","layers":["method"],"domainCount":8,"domains":["nosbarbersupply.com","paradisopeptides.com","peptidelabs.us","peptidescollective.com","peptidology.co","pspeptides.com","researchchemhq.co","royal-peptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["peptidology.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["peptidology.co"],"visibleClaimDomainCount":7,"visibleClaimDomains":["nosbarbersupply.com","paradisopeptides.com","peptidelabs.us","peptidescollective.com","pspeptides.com","researchchemhq.co","royal-peptides.com"],"providerTokens":["Apple Pay","pep_applepay"],"evidenceCount":11},"BACS / bank transfer":{"canonicalProvider":"BACS / bank transfer","layers":["method"],"domainCount":6,"domains":["agelessvitalitypeptides.com","greatestpeptides.com","labtrustpeptides.com","luxaralabs.com","northwestpeptides.com","royal-peptides.com"],"activeForRetaCartDomainCount":6,"activeForRetaCartDomains":["agelessvitalitypeptides.com","greatestpeptides.com","labtrustpeptides.com","luxaralabs.com","northwestpeptides.com","royal-peptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":6,"installedOrCodeExposedDomains":["agelessvitalitypeptides.com","greatestpeptides.com","labtrustpeptides.com","luxaralabs.com","northwestpeptides.com","royal-peptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["bacs"],"evidenceCount":6},"Bank transfer":{"canonicalProvider":"Bank transfer","layers":["method"],"domainCount":17,"domains":["bulkpeptides.com","epic-pep.com","goodpeptides.com","huataipeptide.com","keruihk.com","labtrustpeptides.com","lyzelabs.com","medipeptide.com","onyxbiolabs.com","peptaion.com","peptara.org","quantapeptides.com","researchchemhq.co","retaonelabs.com","rhomeresearch.com","suaway.com","yidanbio.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":17,"visibleClaimDomains":["bulkpeptides.com","epic-pep.com","goodpeptides.com","huataipeptide.com","keruihk.com","labtrustpeptides.com","lyzelabs.com","medipeptide.com","onyxbiolabs.com","peptaion.com","peptara.org","quantapeptides.com","researchchemhq.co","retaonelabs.com","rhomeresearch.com","suaway.com","yidanbio.com"],"providerTokens":["Bank transfer"],"evidenceCount":17},"Bitcoin":{"canonicalProvider":"Bitcoin","layers":["method"],"domainCount":21,"domains":["ascendingpeptides.co","bizpeptide.com","bulkpeptides.com","goodpeptides.com","greatestpeptides.com","hjpeptide.com","huataipeptide.com","keruihk.com","lyzelabs.com","medipeptide.com","oupeptide.com","peptaion.com","peptalabs.com","peptidejft.shop","purerxpeptides.com","rhomeresearch.com","shopapexlabs.net","veltrixpeptide.com","weipeptide.com","xspeptide.com","yidanbio.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["greatestpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["greatestpeptides.com"],"visibleClaimDomainCount":20,"visibleClaimDomains":["ascendingpeptides.co","bizpeptide.com","bulkpeptides.com","goodpeptides.com","hjpeptide.com","huataipeptide.com","keruihk.com","lyzelabs.com","medipeptide.com","oupeptide.com","peptaion.com","peptalabs.com","peptidejft.shop","purerxpeptides.com","rhomeresearch.com","shopapexlabs.net","veltrixpeptide.com","weipeptide.com","xspeptide.com","yidanbio.com"],"providerTokens":["Bitcoin","gp_btc"],"evidenceCount":21},"Cash App":{"canonicalProvider":"Cash App","layers":["method"],"domainCount":6,"domains":["midwestpeptide.com","newbeginningpeps.com","nxtstate.co","onyxbiolabs.com","peptalabs.com","regentide.net"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["nxtstate.co","onyxbiolabs.com","regentide.net"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["nxtstate.co","onyxbiolabs.com","regentide.net"],"visibleClaimDomainCount":5,"visibleClaimDomains":["midwestpeptide.com","newbeginningpeps.com","nxtstate.co","onyxbiolabs.com","peptalabs.com"],"providerTokens":["Cash App","cashapp","regentide_cashapp_qr"],"evidenceCount":10},"Cash on delivery":{"canonicalProvider":"Cash on delivery","layers":["method"],"domainCount":1,"domains":["nurevpeptides.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["nurevpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["nurevpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["cod"],"evidenceCount":1},"Cheque":{"canonicalProvider":"Cheque","layers":["method"],"domainCount":2,"domains":["luxaralabs.com","nurevpeptides.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["luxaralabs.com","nurevpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["luxaralabs.com","nurevpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["cheque"],"evidenceCount":2},"Cryptocurrency":{"canonicalProvider":"Cryptocurrency","layers":["method"],"domainCount":39,"domains":["ameanopeptides.com","barnpeptides.com","behemothlabz.com","bizpeptide.com","bulkpeptides.com","dspeptides.com","epic-pep.com","greatestpeptides.com","kerisitepeptide.com","labtrustpeptides.com","lifelinkresearch.com","lyzelabs.com","medipeptide.com","midwestpeptide.com","newbeginningpeps.com","nexaph.com","omegamino.net","onyxbiolabs.com","optides.com","orionpeptide.com","peptaion.com","peptalabs.com","peptara.org","peptidology.co","protidehealth.com","pspeptides.com","researchchemhq.co","retaonelabs.com","rhomeresearch.com","rivnpeptides.com","royal-peptides.com","spartalabs.net","suaway.com","swisschems.is","thepeplair.com","true-peptides.com","umbrellalabs.is","vrilpeptides.shop","yidanbio.com"],"activeForRetaCartDomainCount":2,"activeForRetaCartDomains":["behemothlabz.com","orionpeptide.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":2,"installedOrCodeExposedDomains":["behemothlabz.com","orionpeptide.com"],"visibleClaimDomainCount":38,"visibleClaimDomains":["ameanopeptides.com","barnpeptides.com","behemothlabz.com","bizpeptide.com","bulkpeptides.com","dspeptides.com","epic-pep.com","greatestpeptides.com","kerisitepeptide.com","labtrustpeptides.com","lifelinkresearch.com","lyzelabs.com","medipeptide.com","midwestpeptide.com","newbeginningpeps.com","nexaph.com","omegamino.net","onyxbiolabs.com","optides.com","peptaion.com","peptalabs.com","peptara.org","peptidology.co","protidehealth.com","pspeptides.com","researchchemhq.co","retaonelabs.com","rhomeresearch.com","rivnpeptides.com","royal-peptides.com","spartalabs.net","suaway.com","swisschems.is","thepeplair.com","true-peptides.com","umbrellalabs.is","vrilpeptides.shop","yidanbio.com"],"providerTokens":["Crypto","Cryptocurrency","crypto"],"evidenceCount":45},"Discover":{"canonicalProvider":"Discover","layers":["method"],"domainCount":34,"domains":["adaptpeptides.com","behemothlabz.com","boruimei.com","bulkpeptides.com","cellularpeptides.com","dideu.com","greatestpeptides.com","hkpep.cc","labtrustpeptides.com","lyzelabs.com","midwestpeptide.com","modernpeptides.com","mytidelab.com","northlinelabs.org","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptalabs.com","peptidecrafters.com","peptira.com","primepeptides.co","protidehealth.com","pspeptides.com","purerxpeptides.com","puritypeptides.ca","quantapeptides.com","researchchemhq.co","royal-peptides.com","rxpharmaceuticals.me","s1research.net","spartalabs.net","summerperformance.com","triantex.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":34,"visibleClaimDomains":["adaptpeptides.com","behemothlabz.com","boruimei.com","bulkpeptides.com","cellularpeptides.com","dideu.com","greatestpeptides.com","hkpep.cc","labtrustpeptides.com","lyzelabs.com","midwestpeptide.com","modernpeptides.com","mytidelab.com","northlinelabs.org","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptalabs.com","peptidecrafters.com","peptira.com","primepeptides.co","protidehealth.com","pspeptides.com","purerxpeptides.com","puritypeptides.ca","quantapeptides.com","researchchemhq.co","royal-peptides.com","rxpharmaceuticals.me","s1research.net","spartalabs.net","summerperformance.com","triantex.com"],"providerTokens":["Discover"],"evidenceCount":40},"Ethereum":{"canonicalProvider":"Ethereum","layers":["method"],"domainCount":9,"domains":["bizpeptide.com","bulkpeptides.com","greatestpeptides.com","keruihk.com","lyzelabs.com","medipeptide.com","peptalabs.com","shopapexlabs.net","yidanbio.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["greatestpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["greatestpeptides.com"],"visibleClaimDomainCount":8,"visibleClaimDomains":["bizpeptide.com","bulkpeptides.com","keruihk.com","lyzelabs.com","medipeptide.com","peptalabs.com","shopapexlabs.net","yidanbio.com"],"providerTokens":["Ethereum","gp_eth"],"evidenceCount":9},"GCash":{"canonicalProvider":"GCash","layers":["method"],"domainCount":1,"domains":["weipeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["weipeptide.com"],"providerTokens":["GCash"],"evidenceCount":4},"Google Pay":{"canonicalProvider":"Google Pay","layers":["method"],"domainCount":4,"domains":["greatestpeptides.com","northlinelabs.org","nosbarbersupply.com","pspeptides.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":4,"visibleClaimDomains":["greatestpeptides.com","northlinelabs.org","nosbarbersupply.com","pspeptides.com"],"providerTokens":["Google Pay"],"evidenceCount":5},"Klarna":{"canonicalProvider":"Klarna","layers":["method"],"domainCount":3,"domains":["peptidelabs.us","pspeptides.com","wolverinepeptides.co.uk"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":3,"visibleClaimDomains":["peptidelabs.us","pspeptides.com","wolverinepeptides.co.uk"],"providerTokens":["Klarna"],"evidenceCount":7},"Mastercard":{"canonicalProvider":"Mastercard","layers":["method"],"domainCount":24,"domains":["adaptpeptides.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","lifelinkresearch.com","lyzelabs.com","mytidelab.com","neb.co","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidescollective.com","peptira.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":24,"visibleClaimDomains":["adaptpeptides.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","lifelinkresearch.com","lyzelabs.com","mytidelab.com","neb.co","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidescollective.com","peptira.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net"],"providerTokens":["Mastercard"],"evidenceCount":31},"PayPal":{"canonicalProvider":"PayPal","layers":["PSP/PayFac/processor","method"],"domainCount":31,"domains":["adaptpeptides.com","behemothlabz.com","bizpeptide.com","epic-pep.com","goodpeptides.com","hjpeptide.com","huataipeptide.com","hydroresearchpeptides.com","ignitepeptides.com","kerisitepeptide.com","lyzelabs.com","newbeginningpeps.com","nosbarbersupply.com","optides.com","oupeptide.com","paradisopeptides.com","peptidejft.shop","peptidelabs.us","pspeptides.com","purerxpeptides.com","researchchemhq.co","rivnpeptides.com","royal-peptides.com","sentinelvalor.com","thepeplair.com","tritideresearch.com","uspeptidescience.com","vrilpeptides.shop","weipeptide.com","xspeptide.com","zen-peptide.com"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["behemothlabz.com","researchchemhq.co","rivnpeptides.com"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["researchchemhq.co","rivnpeptides.com"],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":7,"installedOrCodeExposedDomains":["behemothlabz.com","hydroresearchpeptides.com","researchchemhq.co","rivnpeptides.com","sentinelvalor.com","tritideresearch.com","zen-peptide.com"],"visibleClaimDomainCount":25,"visibleClaimDomains":["adaptpeptides.com","bizpeptide.com","epic-pep.com","goodpeptides.com","hjpeptide.com","huataipeptide.com","ignitepeptides.com","kerisitepeptide.com","lyzelabs.com","newbeginningpeps.com","nosbarbersupply.com","optides.com","oupeptide.com","paradisopeptides.com","peptidejft.shop","peptidelabs.us","pspeptides.com","purerxpeptides.com","researchchemhq.co","royal-peptides.com","thepeplair.com","uspeptidescience.com","vrilpeptides.shop","weipeptide.com","xspeptide.com"],"providerTokens":["PayPal","mecom_paypal","pr_paypal_post_order_instructions","woo-paypal-gateway","woocommerce-paypal-payments"],"evidenceCount":78},"Robinhood":{"canonicalProvider":"Robinhood","layers":["method"],"domainCount":1,"domains":["researchchemhq.co"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":1,"visibleClaimDomains":["researchchemhq.co"],"providerTokens":["Robinhood"],"evidenceCount":1},"USDC":{"canonicalProvider":"USDC","layers":["method"],"domainCount":7,"domains":["bizpeptide.com","keruihk.com","shopapexlabs.net","veltrixpeptide.com","vrilpeptides.shop","weipeptide.com","yidanbio.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":7,"visibleClaimDomains":["bizpeptide.com","keruihk.com","shopapexlabs.net","veltrixpeptide.com","vrilpeptides.shop","weipeptide.com","yidanbio.com"],"providerTokens":["USDC"],"evidenceCount":7},"USDT":{"canonicalProvider":"USDT","layers":["method"],"domainCount":12,"domains":["bizpeptide.com","bulkpeptides.com","goodpeptides.com","greatestpeptides.com","hjpeptide.com","keruihk.com","lyzelabs.com","medipeptide.com","peptaion.com","veltrixpeptide.com","weipeptide.com","yidanbio.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["greatestpeptides.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["greatestpeptides.com"],"visibleClaimDomainCount":11,"visibleClaimDomains":["bizpeptide.com","bulkpeptides.com","goodpeptides.com","hjpeptide.com","keruihk.com","lyzelabs.com","medipeptide.com","peptaion.com","veltrixpeptide.com","weipeptide.com","yidanbio.com"],"providerTokens":["USDT","gp_usdt"],"evidenceCount":12},"Venmo":{"canonicalProvider":"Venmo","layers":["method"],"domainCount":14,"domains":["epic-pep.com","ignitepeptides.com","midwestpeptide.com","neb.co","newbeginningpeps.com","northwestpeptides.com","nurevpeptides.com","nxtstate.co","omegamino.net","optides.com","peptalabs.com","peptara.org","researchchemhq.co","vrilpeptides.shop"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["ignitepeptides.com","neb.co","nxtstate.co"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":3,"installedOrCodeExposedDomains":["ignitepeptides.com","neb.co","nxtstate.co"],"visibleClaimDomainCount":12,"visibleClaimDomains":["epic-pep.com","midwestpeptide.com","newbeginningpeps.com","northwestpeptides.com","nurevpeptides.com","nxtstate.co","omegamino.net","optides.com","peptalabs.com","peptara.org","researchchemhq.co","vrilpeptides.shop"],"providerTokens":["Venmo","peptipay_venmo","venmo","venmo_gateway_1"],"evidenceCount":19},"Visa":{"canonicalProvider":"Visa","layers":["method"],"domainCount":31,"domains":["adaptpeptides.com","bulkpeptides.com","cactuspeptides.com","epic-pep.com","glpeptides.is","greatestpeptides.com","lifelinkresearch.com","lyzelabs.com","midwestpeptide.com","mytidelab.com","neb.co","northlinelabs.org","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidelabs.us","peptidescollective.com","peptira.com","protidehealth.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net","stratelabs.is"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":31,"visibleClaimDomains":["adaptpeptides.com","bulkpeptides.com","cactuspeptides.com","epic-pep.com","glpeptides.is","greatestpeptides.com","lifelinkresearch.com","lyzelabs.com","midwestpeptide.com","mytidelab.com","neb.co","northlinelabs.org","nosbarbersupply.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","paradisopeptides.com","peptalabs.com","peptidecrafters.com","peptidelabs.us","peptidescollective.com","peptira.com","protidehealth.com","pspeptides.com","purerxpeptides.com","quantapeptides.com","researchchemhq.co","rhomeresearch.com","royal-peptides.com","spartalabs.net","stratelabs.is"],"providerTokens":["Visa"],"evidenceCount":39},"Wire transfer":{"canonicalProvider":"Wire transfer","layers":["method"],"domainCount":4,"domains":["bizpeptide.com","epic-pep.com","lyzelabs.com","orionpeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":4,"visibleClaimDomains":["bizpeptide.com","epic-pep.com","lyzelabs.com","orionpeptide.com"],"providerTokens":["Wire","Wire transfer"],"evidenceCount":4},"Wise":{"canonicalProvider":"Wise","layers":["method"],"domainCount":3,"domains":["veltrixpeptide.com","vrilpeptides.shop","weipeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":0,"installedOrCodeExposedDomains":[],"visibleClaimDomainCount":3,"visibleClaimDomains":["veltrixpeptide.com","vrilpeptides.shop","weipeptide.com"],"providerTokens":["Wise"],"evidenceCount":13},"Zelle":{"canonicalProvider":"Zelle","layers":["method"],"domainCount":31,"domains":["adaptpeptides.com","agelessvitalitypeptides.com","aloralab.shop","alphabiologix.com","behemothlabz.com","bizpeptide.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","midwestpeptide.com","newbeginningpeps.com","northwestpeptides.com","novaxpeptides.com","nurevpeptides.com","nxtstate.co","omegamino.net","onyxbiolabs.com","optides.com","orionpeptide.com","peptalabs.com","peptara.org","peptidology.co","pspeptides.com","regentide.net","retaonelabs.com","rhomeresearch.com","royal-peptides.com","sunrisebioresearch.com","thepeplair.com","true-peptides.com","vrilpeptides.shop"],"activeForRetaCartDomainCount":9,"activeForRetaCartDomains":["adaptpeptides.com","greatestpeptides.com","northwestpeptides.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptidology.co","regentide.net","sunrisebioresearch.com"],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":9,"installedOrCodeExposedDomains":["adaptpeptides.com","greatestpeptides.com","northwestpeptides.com","nxtstate.co","onyxbiolabs.com","orionpeptide.com","peptidology.co","regentide.net","sunrisebioresearch.com"],"visibleClaimDomainCount":27,"visibleClaimDomains":["agelessvitalitypeptides.com","aloralab.shop","alphabiologix.com","behemothlabz.com","bizpeptide.com","bulkpeptides.com","epic-pep.com","greatestpeptides.com","midwestpeptide.com","newbeginningpeps.com","northwestpeptides.com","novaxpeptides.com","nurevpeptides.com","nxtstate.co","omegamino.net","onyxbiolabs.com","optides.com","peptalabs.com","peptara.org","peptidology.co","pspeptides.com","retaonelabs.com","rhomeresearch.com","royal-peptides.com","thepeplair.com","true-peptides.com","vrilpeptides.shop"],"providerTokens":["Zelle","gp_zelle","regentide_zelle","zelle"],"evidenceCount":42},"Airwallex":{"canonicalProvider":"Airwallex","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["antaipeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["antaipeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["airwallex-online-payments-gateway"],"evidenceCount":1},"Amazon Pay":{"canonicalProvider":"Amazon Pay","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["bulkpeptidesupply.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["bulkpeptidesupply.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-gateway-amazon-payments-advanced"],"evidenceCount":1},"CircoFlows":{"canonicalProvider":"CircoFlows","layers":["PSP/PayFac/processor"],"domainCount":2,"domains":["aloralab.shop","riptidewellness.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["riptidewellness.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["riptidewellness.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["CircoFlows","circoflows"],"evidenceCount":2},"eDebit Direct":{"canonicalProvider":"eDebit Direct","layers":["PSP/PayFac/processor"],"domainCount":14,"domains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","greatlifepeptides.com","longevityprolabs.com","nurevpeptides.com","orionpeptide.com","pekcuralabs.com","pepclubusa.com","purepeptidelabs.com","riptidewellness.com","xcelpeptides.com"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"activeProviderLayerDomainCount":3,"activeProviderLayerDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":14,"installedOrCodeExposedDomains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","greatlifepeptides.com","longevityprolabs.com","nurevpeptides.com","orionpeptide.com","pekcuralabs.com","pepclubusa.com","purepeptidelabs.com","riptidewellness.com","xcelpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["eDebit Direct","edd_draft_yodlee_gateway","edebit-direct-ach-plaid-gateway","edebit-direct-ach-yodlee-gateway","edebit-direct-draft-plaid-gateway","edebit-direct-draft-yodlee-gateway","edebit-woo-ach-2.0"],"evidenceCount":30},"Paynote":{"canonicalProvider":"Paynote","layers":["PSP/PayFac/processor"],"domainCount":6,"domains":["alphaomegapeptide.com","goalphalabs.com","nxtstate.co","polarispeptides.com","simplepeptide.com","umbrellalabs.is"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["umbrellalabs.is"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["umbrellalabs.is"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":6,"installedOrCodeExposedDomains":["alphaomegapeptide.com","goalphalabs.com","nxtstate.co","polarispeptides.com","simplepeptide.com","umbrellalabs.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Paynote","paynote"],"evidenceCount":11},"QuickBooks Payments (Intuit)":{"canonicalProvider":"QuickBooks Payments (Intuit)","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["societypeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["societypeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-gateway-intuit-qbms"],"evidenceCount":1},"Square":{"canonicalProvider":"Square","layers":["PSP/PayFac/processor"],"domainCount":4,"domains":["apex-peptides.com","biopepusa.com","swisschems.is","triantex.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":4,"installedOrCodeExposedDomains":["apex-peptides.com","biopepusa.com","swisschems.is","triantex.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Square","woocommerce-square"],"evidenceCount":6},"Stripe":{"canonicalProvider":"Stripe","layers":["PSP/PayFac/processor"],"domainCount":11,"domains":["aloralab.shop","biomaxresearch.com","cactuspeptides.com","ironaminos.com","lifelinkresearch.com","nulifepeptides.com","regenerativeresearch.co","researchchemhq.co","risynthbio.com","shopbiohackerdirect.com","wolverinepeptides.co.uk"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["lifelinkresearch.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["lifelinkresearch.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":10,"installedOrCodeExposedDomains":["biomaxresearch.com","cactuspeptides.com","ironaminos.com","lifelinkresearch.com","nulifepeptides.com","regenerativeresearch.co","researchchemhq.co","risynthbio.com","shopbiohackerdirect.com","wolverinepeptides.co.uk"],"visibleClaimDomainCount":1,"visibleClaimDomains":["researchchemhq.co"],"providerTokens":["Stripe","adv%20checkout%20-%20woocommerce%20plugin%20(stripe)-%20v9","mecom_stripe","woocommerce-gateway-stripe"],"evidenceCount":15},"WooPayments":{"canonicalProvider":"WooPayments","layers":["PSP/PayFac/processor"],"domainCount":11,"domains":["antaipeptide.com","behemothlabz.com","bulkpeptidewholesale.com","healtlab.com","molipeptide.com","orionpeptide.com","pepclubusa.com","peptidejft.shop","peptidelabs.us","risynthbio.com","vertexpeptideslab.org"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":11,"installedOrCodeExposedDomains":["antaipeptide.com","behemothlabz.com","bulkpeptidewholesale.com","healtlab.com","molipeptide.com","orionpeptide.com","pepclubusa.com","peptidejft.shop","peptidelabs.us","risynthbio.com","vertexpeptideslab.org"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-payments"],"evidenceCount":11}},"pspProviderRollup":[{"canonicalProvider":"eDebit Direct","layers":["PSP/PayFac/processor"],"domainCount":14,"domains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","greatlifepeptides.com","longevityprolabs.com","nurevpeptides.com","orionpeptide.com","pekcuralabs.com","pepclubusa.com","purepeptidelabs.com","riptidewellness.com","xcelpeptides.com"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"activeProviderLayerDomainCount":3,"activeProviderLayerDomains":["nurevpeptides.com","orionpeptide.com","riptidewellness.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":14,"installedOrCodeExposedDomains":["aminoannex.com","bulkpeptidesupply.com","corepeptides.com","erospeptides.com","gorillahealing.com","greatlifepeptides.com","longevityprolabs.com","nurevpeptides.com","orionpeptide.com","pekcuralabs.com","pepclubusa.com","purepeptidelabs.com","riptidewellness.com","xcelpeptides.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["eDebit Direct","edd_draft_yodlee_gateway","edebit-direct-ach-plaid-gateway","edebit-direct-ach-yodlee-gateway","edebit-direct-draft-plaid-gateway","edebit-direct-draft-yodlee-gateway","edebit-woo-ach-2.0"],"evidenceCount":30},{"canonicalProvider":"PayPal","layers":["PSP/PayFac/processor","method"],"domainCount":31,"domains":["adaptpeptides.com","behemothlabz.com","bizpeptide.com","epic-pep.com","goodpeptides.com","hjpeptide.com","huataipeptide.com","hydroresearchpeptides.com","ignitepeptides.com","kerisitepeptide.com","lyzelabs.com","newbeginningpeps.com","nosbarbersupply.com","optides.com","oupeptide.com","paradisopeptides.com","peptidejft.shop","peptidelabs.us","pspeptides.com","purerxpeptides.com","researchchemhq.co","rivnpeptides.com","royal-peptides.com","sentinelvalor.com","thepeplair.com","tritideresearch.com","uspeptidescience.com","vrilpeptides.shop","weipeptide.com","xspeptide.com","zen-peptide.com"],"activeForRetaCartDomainCount":3,"activeForRetaCartDomains":["behemothlabz.com","researchchemhq.co","rivnpeptides.com"],"activeProviderLayerDomainCount":2,"activeProviderLayerDomains":["researchchemhq.co","rivnpeptides.com"],"configuredNotActiveDomainCount":1,"configuredNotActiveDomains":["hydroresearchpeptides.com"],"installedOrCodeExposedDomainCount":7,"installedOrCodeExposedDomains":["behemothlabz.com","hydroresearchpeptides.com","researchchemhq.co","rivnpeptides.com","sentinelvalor.com","tritideresearch.com","zen-peptide.com"],"visibleClaimDomainCount":25,"visibleClaimDomains":["adaptpeptides.com","bizpeptide.com","epic-pep.com","goodpeptides.com","hjpeptide.com","huataipeptide.com","ignitepeptides.com","kerisitepeptide.com","lyzelabs.com","newbeginningpeps.com","nosbarbersupply.com","optides.com","oupeptide.com","paradisopeptides.com","peptidejft.shop","peptidelabs.us","pspeptides.com","purerxpeptides.com","researchchemhq.co","royal-peptides.com","thepeplair.com","uspeptidescience.com","vrilpeptides.shop","weipeptide.com","xspeptide.com"],"providerTokens":["PayPal","mecom_paypal","pr_paypal_post_order_instructions","woo-paypal-gateway","woocommerce-paypal-payments"],"evidenceCount":78},{"canonicalProvider":"Stripe","layers":["PSP/PayFac/processor"],"domainCount":11,"domains":["aloralab.shop","biomaxresearch.com","cactuspeptides.com","ironaminos.com","lifelinkresearch.com","nulifepeptides.com","regenerativeresearch.co","researchchemhq.co","risynthbio.com","shopbiohackerdirect.com","wolverinepeptides.co.uk"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["lifelinkresearch.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["lifelinkresearch.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":10,"installedOrCodeExposedDomains":["biomaxresearch.com","cactuspeptides.com","ironaminos.com","lifelinkresearch.com","nulifepeptides.com","regenerativeresearch.co","researchchemhq.co","risynthbio.com","shopbiohackerdirect.com","wolverinepeptides.co.uk"],"visibleClaimDomainCount":1,"visibleClaimDomains":["researchchemhq.co"],"providerTokens":["Stripe","adv%20checkout%20-%20woocommerce%20plugin%20(stripe)-%20v9","mecom_stripe","woocommerce-gateway-stripe"],"evidenceCount":15},{"canonicalProvider":"Paynote","layers":["PSP/PayFac/processor"],"domainCount":6,"domains":["alphaomegapeptide.com","goalphalabs.com","nxtstate.co","polarispeptides.com","simplepeptide.com","umbrellalabs.is"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["umbrellalabs.is"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["umbrellalabs.is"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":6,"installedOrCodeExposedDomains":["alphaomegapeptide.com","goalphalabs.com","nxtstate.co","polarispeptides.com","simplepeptide.com","umbrellalabs.is"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Paynote","paynote"],"evidenceCount":11},{"canonicalProvider":"CircoFlows","layers":["PSP/PayFac/processor"],"domainCount":2,"domains":["aloralab.shop","riptidewellness.com"],"activeForRetaCartDomainCount":1,"activeForRetaCartDomains":["riptidewellness.com"],"activeProviderLayerDomainCount":1,"activeProviderLayerDomains":["riptidewellness.com"],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["riptidewellness.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["CircoFlows","circoflows"],"evidenceCount":2},{"canonicalProvider":"WooPayments","layers":["PSP/PayFac/processor"],"domainCount":11,"domains":["antaipeptide.com","behemothlabz.com","bulkpeptidewholesale.com","healtlab.com","molipeptide.com","orionpeptide.com","pepclubusa.com","peptidejft.shop","peptidelabs.us","risynthbio.com","vertexpeptideslab.org"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":11,"installedOrCodeExposedDomains":["antaipeptide.com","behemothlabz.com","bulkpeptidewholesale.com","healtlab.com","molipeptide.com","orionpeptide.com","pepclubusa.com","peptidejft.shop","peptidelabs.us","risynthbio.com","vertexpeptideslab.org"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-payments"],"evidenceCount":11},{"canonicalProvider":"Square","layers":["PSP/PayFac/processor"],"domainCount":4,"domains":["apex-peptides.com","biopepusa.com","swisschems.is","triantex.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":4,"installedOrCodeExposedDomains":["apex-peptides.com","biopepusa.com","swisschems.is","triantex.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["Square","woocommerce-square"],"evidenceCount":6},{"canonicalProvider":"Airwallex","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["antaipeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["antaipeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["airwallex-online-payments-gateway"],"evidenceCount":1},{"canonicalProvider":"Amazon Pay","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["bulkpeptidesupply.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["bulkpeptidesupply.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-gateway-amazon-payments-advanced"],"evidenceCount":1},{"canonicalProvider":"QuickBooks Payments (Intuit)","layers":["PSP/PayFac/processor"],"domainCount":1,"domains":["societypeptide.com"],"activeForRetaCartDomainCount":0,"activeForRetaCartDomains":[],"activeProviderLayerDomainCount":0,"activeProviderLayerDomains":[],"configuredNotActiveDomainCount":0,"configuredNotActiveDomains":[],"installedOrCodeExposedDomainCount":1,"installedOrCodeExposedDomains":["societypeptide.com"],"visibleClaimDomainCount":0,"visibleClaimDomains":[],"providerTokens":["woocommerce-gateway-intuit-qbms"],"evidenceCount":1}],"audits":{"geneticpeptide.com":{"domain":"geneticpeptide.com","payment":{"providerSignals":[{"provider":"AMG Express token","roles":["frontend SDK or plugin"],"providerClass":"frontend_integration","sourceToken":"amgexpress","sourceLayer":"frontend SDK/plugin","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high_for_method_id_not_transaction","codeIdentified":true,"activeForRetaCart":true,"whatCodeProves":"The public cart API returned this exact provider or method identifier after an anonymous Reta cart add.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"normalized_public_cart_api_observation","snippet":"payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]"},{"provider":"Blockonomics","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"blockonomics","sourceLayer":"gateway","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high_for_method_id_not_transaction","codeIdentified":true,"activeForRetaCart":true,"whatCodeProves":"The public cart API returned this exact provider or method identifier after an anonymous Reta cart add.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"normalized_public_cart_api_observation","snippet":"payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]"},{"provider":"ByteNFT token","roles":["frontend SDK or plugin"],"providerClass":"frontend_integration","sourceToken":"bytenft","sourceLayer":"frontend SDK/plugin","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high_for_method_id_not_transaction","codeIdentified":true,"activeForRetaCart":true,"whatCodeProves":"The public cart API returned this exact provider or method identifier after an anonymous Reta cart add.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"normalized_public_cart_api_observation","snippet":"payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]"},{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"nmi","sourceLayer":"gateway","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high_for_method_id_not_transaction","codeIdentified":true,"activeForRetaCart":true,"whatCodeProves":"The public cart API returned this exact provider or method identifier after an anonymous Reta cart add.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"normalized_public_cart_api_observation","snippet":"payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]"},{"provider":"Site B gateway token","roles":["frontend SDK or plugin"],"providerClass":"frontend_integration","sourceToken":"site_b_gateway","sourceLayer":"frontend SDK/plugin","evidenceStatus":"active_for_reta_cart_api","evidenceUrl":"https://geneticpeptide.com/wp-json/wc/store/v1/cart","capturedAt":"2026-07-27","confidence":"high_for_method_id_not_transaction","codeIdentified":true,"activeForRetaCart":true,"whatCodeProves":"The public cart API returned this exact provider or method identifier after an anonymous Reta cart add.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"normalized_public_cart_api_observation","snippet":"payment.evidence.activeMethodIdsReturned = [\"site_b_gateway\",\"nmi\",\"bytenft\",\"amgexpress\",\"blockonomics\"]"},{"provider":"Blockonomics","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"Blockonomics","sourceLayer":"gateway","evidenceStatus":"installed_or_code_exposed_activation_unknown","evidenceUrl":"https://geneticpeptide.com/product/bpc-157-stable-60-enteric-coated-capsules/","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"low","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"yment_method_idem\"] img[alt=\"Credit Card\"] { display: none; } .woocommerce-checkout label[for=\"payment_method_blockonomics\"] img { display: none !important; } /** Img Caption **/ .entry-content img[title]{ pointer-events"},{"provider":"NMI","roles":["payment gateway"],"providerClass":"gateway","sourceToken":"NMI","sourceLayer":"gateway","evidenceStatus":"installed_or_code_exposed_activation_unknown","evidenceUrl":"https://geneticpeptide.com/product/ghk-cu-copper-peptide-2mg-60-enteric-coated-capsules-2/","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"low","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"rel='stylesheet' id='wc-nmi-blocks-checkout-style-css' href='https://geneticpeptide.com/wp-content/plugins/wp-nmi-gateway-pci-woocommerce/build/style-index.css?ver=f7a4ecb70a39350e198c' media='all' /> var wcpayAssets = {\"url\":\"https://behemothlabz.com/wp-content/plugins/woocommerce-payments/dist/\"}; //# sourceURL=WCPAY_ASSETS-js-extra "}],"providerEvidenceBoundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidence":[{"field":"payment.provider.eDebit Direct","url":"https://purepeptidelabs.shop/?v=28886f13f578","capturedAt":"2026-07-27T22:14:58.045Z","confidence":"low","label":"eDebit Direct · installed_or_code_exposed_activation_unknown","sourceType":"html_source"},{"field":"payment.provider.eDebit Direct","url":"https://purepeptidelabs.shop/?v=28886f13f578","capturedAt":"2026-07-27T22:14:58.045Z","confidence":"medium","label":"eDebit Direct · installed_plugin_signal_activation_unknown","sourceType":"html_source"}],"auditType":"Public payment-provider code census"},"alphaomegapeptide.com":{"domain":"alphaomegapeptide.com","payment":{"providerSignals":[{"provider":"Paynote","roles":["payment service provider / payment facilitator / processor-level brand"],"providerClass":"processor_or_full_stack_psp","sourceToken":"Paynote","sourceLayer":"PSP/PayFac/processor","evidenceStatus":"installed_or_code_exposed_activation_unknown","evidenceUrl":"https://alphaomegapeptide.com/collections/accessories/","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"low","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"ns/donation-or-tip-for-woocommerce/public/css/design.css?ver=1.0.0' media='all' /> <"}],"providerEvidenceBoundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidence":[{"field":"payment.provider.PayPal","url":"https://tritideresearch.com/product/glp-r-10mg/","capturedAt":"2026-07-27T22:14:58.045Z","confidence":"medium","label":"PayPal · installed_plugin_signal_activation_unknown","sourceType":"html_source"}],"auditType":"Public payment-provider code census"},"zen-peptide.com":{"domain":"zen-peptide.com","payment":{"providerSignals":[{"provider":"PayPal","roles":["payment service provider / payment facilitator / processor-level brand"],"providerClass":"processor_or_full_stack_psp","sourceToken":"woo-paypal-gateway","sourceLayer":"PSP/PayFac/processor","evidenceStatus":"installed_plugin_signal_activation_unknown","evidenceUrl":"https://zen-peptide.com/shop/?per_page=9","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"medium","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"timize=\"1\" rel='stylesheet' id='ppcp-paypal-checkout-for-woocommerce-public-css' href='https://zen-peptide.com/wp-content/plugins/woo-paypal-gateway/ppcp/public/css/ppcp-paypal-checkout-for-woocommerce-public.css?ver=9.2"}],"providerEvidenceBoundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidence":[{"field":"payment.provider.PayPal","url":"https://zen-peptide.com/shop/?per_page=9","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"medium","label":"PayPal · installed_plugin_signal_activation_unknown","sourceType":"html_source"}],"auditType":"Public payment-provider code census"},"societypeptide.com":{"domain":"societypeptide.com","payment":{"providerSignals":[{"provider":"QuickBooks Payments (Intuit)","roles":["payment service provider / payment facilitator / processor-level brand"],"providerClass":"processor_or_full_stack_psp","sourceToken":"woocommerce-gateway-intuit-qbms","sourceLayer":"PSP/PayFac/processor","evidenceStatus":"installed_plugin_signal_activation_unknown","evidenceUrl":"https://societypeptide.com/product-category/research-blends/","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":" \"Visa\" \"Visa\" <"}],"providerEvidenceBoundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidence":[{"field":"payment.provider.Stripe","url":"https://nulifepeptides.com/guest-user/","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"medium","label":"Stripe · installed_plugin_signal_activation_unknown","sourceType":"html_source"}],"auditType":"Public payment-provider code census"},"regenerativeresearch.co":{"domain":"regenerativeresearch.co","payment":{"providerSignals":[{"provider":"Stripe","roles":["payment service provider / payment facilitator / processor-level brand"],"providerClass":"processor_or_full_stack_psp","sourceToken":"Stripe","sourceLayer":"PSP/PayFac/processor","evidenceStatus":"installed_or_code_exposed_activation_unknown","evidenceUrl":"https://regenerativeresearch.co/product/10","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"low","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"Content-Security-Policy\" content=\"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://js.stripe.com https://replit.com https://static.goaffpro.com https://api.goaffpro.com https://accounts.google."}],"providerEvidenceBoundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement."},"evidence":[{"field":"payment.provider.Stripe","url":"https://regenerativeresearch.co/product/10","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"low","label":"Stripe · installed_or_code_exposed_activation_unknown","sourceType":"html_source"}],"auditType":"Public payment-provider code census"},"risynthbio.com":{"domain":"risynthbio.com","payment":{"providerSignals":[{"provider":"Stripe","roles":["payment service provider / payment facilitator / processor-level brand"],"providerClass":"processor_or_full_stack_psp","sourceToken":"Stripe","sourceLayer":"PSP/PayFac/processor","evidenceStatus":"installed_or_code_exposed_activation_unknown","evidenceUrl":"https://risynthbio.com/product/rb-r3-retatrutide-research-grade-peptide-risynth-bio/","capturedAt":"2026-07-27T22:10:06.308Z","confidence":"low","codeIdentified":true,"activeForRetaCart":false,"whatCodeProves":"The provider-branded script, SDK, plugin, stylesheet, or source token was public; activation was not tested or established.","boundary":"Public code verifies named payment integrations—and some active Reta-cart method IDs—but not the merchant's contractual processor/ISO/acquirer chain or successful settlement.","sourceType":"html_source","snippet":"com/wp-includes/js/dist/vendor/wp-polyfill.min.js?m=1767615370'> ","capturedAt":"2026-07-27T22:37:29.843Z","confidence":"medium","sourceType":"html_source"},{"id":"3da71f409fec7bad18","field":"platform.plugin","value":"woo-notification","url":"https://accelerate-labs.us/product-category/laboratory-supplies/","snippet":"rel='stylesheet' id='woo-notification-icons-close-css' href='https://accelerate-labs.us/wp-content/cache/min/1/wp-content/plugins/woo-notification/css/icons-close.css?ver=1785139266' media='all' /> ","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","sourceType":"html_source"},{"id":"549f3c5706cdb82860","field":"pricing.price","value":{"amount":11,"currency":"USD","display":"$11.00"},"url":"https://adaptpeptides.com/product/retatrutide/","snippet":"table below: Vial size Price per vial Price per mg 5mg $89 $17.80 10mg $135 $13.50 15mg $180 $12.00 20mg $220 $11.00 30mg $299 $9.97 3. Is your retatrutide third-party tested? Yes. Every batch of retatrutide is tested by","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","sourceType":"first_party_page"},{"id":"5648adc0d740f8b0ff","field":"sourcing.claim","value":"purity_claim","url":"https://adaptpeptides.com/product/retatrutide/","snippet":"e when available For Research Use Only — Not for Human Consumption Free shipping on all orders over $200 (US) 99% Purity – Third-Party Tested Fast & Reliable Shipping About the Peptide Buy Retatrutide Premium GLP3-R rese","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","sourceType":"first_party_page"},{"id":"598c16a7ace20e8724","field":"reta.strength","value":"30mg","url":"https://adaptpeptides.com/product/retatrutide/","snippet":"Quantity Based Discount 20 + 25% $ 66.75 Size: : No selection More options Select size 5 mg 10 mg 15 mg 20 mg 30 mg Choose Size: 5 mg 10 mg 15 mg 20 mg 30 mg Clear Retatrutide quantity Buy Now Join Waitlist Enter your em","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"high","sourceType":"first_party_page"},{"id":"59ae6086068350660d","field":"tracking.tag","value":{"provider":"google_analytics","publicId":"G-MNNZ2SV2L7"},"url":"https://adaptpeptides.com/product-category/research-accessories/","snippet":"date\": 500, ...mode } ); } gtag(\"js\", new Date()); gtag(\"set\", \"developer_id.dOGY3NW\", true); gtag(\"config\", \"G-MNNZ2SV2L7\", {\"track_404\":true,\"allow_google_signals\":true,\"logged_in\":false,\"linker\":{\"domains\":[],\"allow_i","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"high","sourceType":"html_source"},{"id":"5aa683554fdb6d7628","field":"marketing.positioning.description","value":"Our peptides require reconstitution, using bacteriostatic (BAC) water, syringes, and alcohol prep pads.","url":"https://adaptpeptides.com/product-category/research-accessories/","snippet":"Our peptides require reconstitution, using bacteriostatic (BAC) water, syringes, and alcohol prep pads.","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"high","sourceType":"html_metadata"},{"id":"5c97441a5ba2fe8a61","field":"marketing.positioning.h1","value":"Buy Retatrutide & Peptides Online","url":"https://adaptpeptides.com/","snippet":"Buy Retatrutide & Peptides Online","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"high","sourceType":"html_metadata"},{"id":"5cd165a6253325b718","field":"claims.human_outcome","value":"Weight-loss or body-composition outcome","url":"https://adaptpeptides.com/product/retatrutide/","snippet":"y compounds, while also improving insulin sensitivity, lipid balance, and liver fat content [5]. Notably, the weight loss did not plateau early but continued over time, indicating a potentially durable metabolic effect.","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","sourceType":"first_party_page"},{"id":"612ed9da7dce18800b","field":"operations.shipping","value":"Free shipping","url":"https://adaptpeptides.com/product/retatrutide/","snippet":"ed when this item is back in stock. Email me when available For Research Use Only — Not for Human Consumption Free shipping on all orders over $200 (US) 99% Purity – Third-Party Tested Fast & Reliable Shipping About the","capturedAt":"2026-07-27T22:35:22.661Z","confidence":"medium","sourceType":"first_party_page"},{"id":"689a571cab47bd090e","field":"tracking.tag","value":{"provider":"klaviyo","publicId":"klaviyo"},"url":"https://adaptpeptides.com/shop/","snippet":"anguage\":\"en-US\"}]}