PageSourceSearch

https://salescollabseo.co.za/assets/index-XLMOVkZC.js

js salescollabseo.co.za collected 2026-10-09 22:01:16 UTC 77,026 bytes, 1 lines download raw bytes

1import{c as Z,u as oe,a as ie,b as re,r as u,j as e,L as N,P,H as ne,S as le,d as ce,t as W}from"./index-dgJjsOgZ.js";import{S as de}from"./SiteShell-B_4F-MW3.js";import{c as ee,u as B}from"./createServerFn-MMDj0dhI.js";import{c as S}from"./createLucideIcon-DOw7QICG.js";import{L as Y}from"./loader-circle-DYCo7yVl.js";import{C as b}from"./circle-check-DxINX0oe.js";import{S as J}from"./sparkles-C3tAr-8d.js";import{A as C}from"./arrow-right-BNTxjQ8b.js";import{M as he}from"./mail-BJ_CChPC.js";import{T as X}from"./trending-down-Dbzaxctb.js";import{F as me}from"./file-text-BazhES2A.js";import{C as pe}from"./circle-question-mark-K8cVl1mi.js";import"./Logo-DJjV6HB6.js";import"./x-Bh_s6yn2.js";const ue=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],ge=S("download",ue);const fe=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],ye=S("globe",fe);const we=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],xe=S("rotate-ccw",we);const be=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],$=S("search",be);const _e=[["circle",{cx:"8",cy:"21",r:"1",key:"jimo8o"}],["circle",{cx:"19",cy:"21",r:"1",key:"13723u"}],["path",{d:"M2.05 2.05h2l2.66 12.42a2 2 0 0 0 2 1.58h9.78a2 2 0 0 0 1.95-1.57l1.65-7.43H5.12",key:"9zh506"}]],Q=S("shopping-cart",_e),ve=ee({method:"POST"}).handler(Z("648dfaf9c596614baddb887eb030ab8465615c364d3a25ff9b5aeb8ff286e8c1")),ke=ee({method:"POST"}).handler(Z("1c69653ecb1ee0243e3c16e32c994850276f246ffe6aa8b45993ec0965bda05a")),Ne={shopify_home_title:{problem:"Homepage title is missing or a generic default (‘Home’, ‘Welcome’, store name only).",where:"Shopify Admin → Online Store → Preferences → Title and meta description.",steps:["Open Online Store → Preferences.","In ‘Title and meta description’ set a 40–60 character title that includes your brand + main product category (e.g. ‘Acme — Handmade Leather Bags & Wallets’).","Save. Ensure your theme's theme.liquid uses `{{ page_title }}` inside `<title>` (default Dawn does this)."],effort:"5 minutes · Admin only."},shopify_home_desc:{problem:"Homepage meta description is missing.",where:"Shopify Admin → Online Store → Preferences.",steps:["Open Online Store → Preferences.","Write a 130–160 character description that answers ‘what do you sell + who for + why buy from you’.",'Save. In theme.liquid the tag is rendered by `{% if page_description %}<meta name="description" content="{{ page_description | escape }}">{% endif %}` — keep that block.'],effort:"5 minutes · Admin only."},shopify_home_canonical:{problem:"Homepage canonical URL is missing or points elsewhere.",where:"Theme code — snippets/head or theme.liquid.",steps:["In Admin → Online Store → Themes → Edit code, open layout/theme.liquid.",'Confirm `<link rel="canonical" href="{{ canonical_url }}">` is present inside `<head>`.',"If you have any hard-coded canonical, delete it — Shopify's `{{ canonical_url }}` handles variants correctly.","Save and test with view-source on your homepage."],effort:"10 minutes · needs theme edit access."},shopify_home_h1:{problem:"Homepage has zero or multiple H1s.",where:"Homepage sections in Theme Editor (Customize).",steps:["Open Online Store → Themes → Customize.","Choose the Home template. Find your top hero/slideshow/rich-text section.","Set exactly one heading using ‘Heading’ level H1 (some themes call it ‘Heading size’ / ‘Heading level’). Every other section should use H2 or lower.","Save."],effort:"10 minutes · no code."},shopify_home_org:{problem:"Organization / WebSite schema missing on homepage.",where:"Theme code — snippets or theme.liquid.",steps:["In Admin → Online Store → Themes → Edit code, create a snippet `snippets/organization-schema.liquid`.",'Paste a JSON-LD block: `{"@context":"https://schema.org","@type":"Organization","name":"{{ shop.name }}","url":"{{ shop.url }}","logo":"{{ \'logo.png\' | asset_url }}","sameAs":["https://www.instagram.com/YOURHANDLE","https://www.facebook.com/YOURPAGE"]}` (edit socials).',"Include it once in layout/theme.liquid inside `<head>` with `{% render 'organization-schema' %}`.","Also add a `WebSite` block with `potentialAction` search action to unlock the sitelinks search box.","Test with Google Rich Results Test."],effort:"20 minutes · needs theme edit access."},shopify_product_title:{problem:"Product titles are too short or too long across the sample.",where:"Shopify Admin → Products → each product.",steps:["Open each flagged product.","Under ‘Search engine listing’ click Edit and set Page Title to 40–70 characters including the product name + one differentiator (material, size, category).","Leave the internal Title field for staff clarity; the SEO title is what Google sees.","For bulk edits use the Matrixify app or the Shopify bulk editor."],effort:"1–2 min per product · Admin only."},shopify_product_desc:{problem:"Product meta descriptions are blank on many products.",where:"Shopify Admin → Products → each product → Search engine listing.",steps:["For every flagged product, expand ‘Search engine listing’ and add a 130–160 character description that names the product, key benefit, and material/size.","Never leave blank — Shopify falls back to the auto-truncated product body which loses keywords.","For a whole catalogue, use Matrixify to export/import descriptions via CSV."],effort:"1 min per product · Admin only."},shopify_product_canonical:{problem:"Product canonicals point at variant URLs (?variant=…) instead of the master product URL.",where:"Theme code — templates/product.liquid or sections/main-product.liquid.",steps:["In Edit code, open layout/theme.liquid and confirm `{{ canonical_url }}` is the ONLY canonical tag.",'Search all product templates for hard-coded `<link rel="canonical"` — delete any that include `?variant=`.',"Shopify's built-in `{{ canonical_url }}` correctly points variants back to the master product URL when used alone.","Test: load `yourstore.com/products/handle?variant=123` and view-source; canonical must be the clean URL."],effort:"15 minutes · needs theme edit access."},shopify_product_schema:{problem:"Product schema is missing OR is missing Offer price/currency across the sample.",where:"Theme code — sections/main-product.liquid or snippets/product-schema.liquid.",steps:["Modern free themes (Dawn 5+) already emit Product schema — check first with Rich Results Test.","If missing, add a snippet `snippets/product-schema.liquid` with `@type: Product`, `name`, `image`, `description`, `sku`, `brand`, and an `offers` object c
1ontaining `priceCurrency: {{ cart.currency.iso_code }}`, `price: {{ product.selected_or_first_available_variant.price | money_without_currency | remove: ',' }}`, `availability`, and `url`.","Render it inside your product template.","Re-test with Rich Results Test until the Product panel shows green."],effort:"45 minutes · needs theme edit access."},shopify_product_og_image:{problem:"Product pages don't emit an og:image.",where:"Theme code — snippets/social-meta-tags.liquid or layout/theme.liquid.",steps:["In `<head>`, add: `{% if template contains 'product' %}<meta property=\"og:image\" content=\"https:{{ product.featured_image | img_url: '1200x630' }}\">{% endif %}`.","Add matching `twitter:image` with the same URL.","Also add width/height meta tags for cleaner previews."],effort:"15 minutes · needs theme edit access."},shopify_product_indexable:{problem:"One or more product pages carry a noindex robots meta tag.",where:"Shopify Admin → Products → Search engine listing OR theme code.",steps:['Open each flagged product. Below the description look for any manual `<meta name="robots" content="noindex">` in the body HTML — remove it.','Check theme code (layout/theme.liquid) for a conditional `{% if template contains \'product\' %}<meta name="robots" content="noindex">` — delete it.',"If products live under a hidden collection, verify the collection isn't excluded via robots.txt in Admin → Online Store → Preferences."],effort:"10 minutes · quick win with huge revenue impact."},shopify_product_h1:{problem:"Product pages have zero or multiple H1 headings.",where:"Theme code — sections/main-product.liquid.",steps:["Open sections/main-product.liquid.",'Find the block that renders `{{ product.title }}`. Wrap it in an `<h1>` exactly once, e.g. `<h1 class="product__title">{{ product.title }}</h1>`.',"Downgrade any other `<h1>` in the template to `<h2>` (badge headings, tab titles)."],effort:"15 minutes · needs theme edit access."},shopify_collection_title:{problem:"Collection titles are short/generic across the sample.",where:"Shopify Admin → Products → Collections → each collection → Search engine listing.",steps:["Open each flagged collection.","Set Page Title to 40–65 characters that include the category + a modifier (‘Handmade Leather Wallets for Men’ not ‘Wallets’).","The internal Title stays as-is — SEO title only affects Google."],effort:"2 min per collection · Admin only."},shopify_collection_desc:{problem:"Collection meta descriptions are blank.",where:"Shopify Admin → Collections → Search engine listing.",steps:["For every flagged collection, write a 130–160 character description that describes the range, materials or use-case.","This is the snippet Google shows for category searches — never leave blank."],effort:"2 min per collection · Admin only."},shopify_collection_canonical:{problem:"Collection canonicals don't point back to themselves after filter/sort URLs.",where:"Theme code — layout/theme.liquid.",steps:['Confirm `<link rel="canonical" href="{{ canonical_url }}">` is present in `<head>` (Shopify strips `?sort_by` and `?filter.*` correctly).',"Remove any hard-coded canonical or JS-injected canonical from the theme.","Test by loading a collection with `?sort_by=price-asc` — view-source canonical should be the clean URL."],effort:"10 minutes · needs theme edit access."},shopify_collection_schema:{problem:"Collection pages don't emit CollectionPage / ItemList schema.",where:"Theme code — sections/main-collection-product-grid.liquid or a new snippet.",steps:["Create snippet `snippets/collection-schema.liquid`.",'Emit JSON-LD: `{"@context":"https://schema.org","@type":"CollectionPage","name":"{{ collection.title | escape }}","description":"{{ collection.description | strip_html | escape }}","url":"{{ shop.url }}{{ collection.url }}","mainEntity":{"@type":"ItemList","itemListElement":[{% for p in collection.products limit: 12 %}{"@type":"ListItem","position":{{ forloop.index }},"url":"{{ shop.url }}{{ p.url }}"}{% unless forloop.last %},{% endunless %}{% endfor %}]}}
1`.',"Render inside sections/main-collection-product-grid.liquid.","Verify with Rich Results Test."],effort:"45 minutes · needs theme edit access."},shopify_collection_indexable:{problem:"One or more collection pages are set to noindex.",where:"Shopify Admin → Collections → Search engine listing OR theme.",steps:["Open the flagged collection; delete any manual noindex meta in the description body.",'Check theme conditions for `{% if template contains \'collection\' %}<meta name="robots" content="noindex">` and remove.',"If you intentionally hide seasonal collections, use scheduling (unpublish) rather than noindex."],effort:"10 minutes · quick win."},shopify_breadcrumb:{problem:"No BreadcrumbList schema across product/collection templates.",where:"Theme code — new snippet `snippets/breadcrumb-schema.liquid`.",steps:["Create the snippet with `@type: BreadcrumbList` and 3 items: Home → Collection → Product (or Home → Collection).","Populate `item` URLs with `{{ shop.url }}{{ product.url }}` etc. and `name` with the readable title.","Render inside your product and collection templates.","Test with Rich Results Test — breadcrumb URLs replace the messy path in Google results."],effort:"30 minutes · needs theme edit access."},schema_product:{problem:"Product schema (with price and stock) is missing on product pages.",where:"Theme code — see `shopify_product_schema` above for the full snippet.",steps:["Follow the ‘Products: Product schema with Offer/price’ fix — the same JSON-LD snippet resolves this check."]},schema_breadcrumb:{problem:"BreadcrumbList schema missing.",where:"Theme code — see `shopify_breadcrumb` above.",steps:["Follow the ‘BreadcrumbList schema across templates’ fix."]},schema_org:{problem:"Organization schema missing.",where:"Theme code — see `shopify_home_org` above.",steps:["Follow the ‘Homepage: Organization/WebSite schema’ fix."]},og_image:{problem:"Open Graph image missing.",where:"Theme code.",steps:["In layout/theme.liquid `<head>`, add: `<meta property=\"og:image\" content=\"{% if template contains 'product' %}https:{{ product.featured_image | img_url: '1200x630' }}{% elsif template contains 'collection' %}https:{{ collection.image | img_url: '1200x630' }}{% else %}{{ 'og-default.jpg' | asset_url | prepend: 'https:' }}{% endif %}\">`.","Upload an `og-default.jpg` (1200×630) via Settings → Files if you don't have one."]}};function je(i){const m=new Set,f=[];for(const p of i){const w=Ne[p];
1w&&!m.has(p)&&(m.add(p),f.push({key:p,fix:w}))}return f}const V={https:{what:"Your site loads over an encrypted HTTPS connection.",why:"Google ranks HTTPS pages higher and browsers warn visitors on HTTP sites."},doctype:{what:"An HTML5 doctype is declared at the top of the page.",why:"Helps browsers and crawlers render the page consistently."},charset:{what:"The character encoding (UTF-8) is declared.",why:"Prevents broken characters in titles, descriptions and content."},lang:{what:"The page declares its language with the html lang attribute.",why:"Helps Google show your site to the right language audience."},canonical:{what:"A canonical URL is set — the master version of this page.",why:"Stops Google from splitting ranking power across duplicate URLs."},canonical_self:{what:"The canonical URL points to this exact page (not a different one).",why:"Prevents accidental deindexing or wrong page showing in search."},robots_meta:{what:"No accidental 'noindex' tag is blocking Google from indexing this page.",why:"A stray noindex makes your page invisible in Google results."},hreflang:{what:"hreflang tags tell Google which country/language version to show.",why:"Critical for stores selling across regions; optional for single-market sites."},favicon:{what:"A favicon (the small icon shown in browser tabs) is declared.",why:"Small trust signal — also shows next to your result in Google."},status_ok:{what:"The page returns a 200 OK HTTP status.",why:"Anything else (404, 500, redirect) blocks Google from indexing it."},robots_txt:{what:"A robots.txt file is published at the root of your site.",why:"It's the first file every crawler (Google and AI) requests — without it you control nothing about how you're crawled."},sitemap_declared:{what:"Your robots.txt points crawlers at your XML sitemap.",why:"The fastest way for Google and Bing to discover every page you want indexed."},sitemap_xml:{what:"A valid XML sitemap is reachable and lists your pages.",why:"Without it new and deep pages can take weeks or months to get indexed."},googlebot_allowed:{what:"Googlebot is not blocked in your robots.txt file.",why:"One stray line here removes your entire site from Google — it is the single most damaging mistake we see."},x_robots_tag:{what:"No 'noindex' instruction is being sent in your server headers.",why:"This hides a page from Google even when the page itself looks perfectly fine — it is invisible unless you check the headers."},http_to_https:{what:"The insecure http:// version of your site redirects to https://.",why:"Without it Google sees two copies of every page and splits your ranking power between them."},real_404:{what:"A page that does not exist returns a proper 'not found' response.",why:"Fake 'not found' pages that return success waste Google's crawl budget on junk URLs instead of your real pages."},title:{what:"The page has a <title> tag — the blue line in Google results.",why:"The single biggest on-page ranking signal."},title_len:{what:"Title length is between 30–65 characters.",why:"Too short = no context; too long = Google cuts it off."},title_unique:{what:"The title is descriptive, not generic ('Home', 'Untitled').",why:"Generic titles waste your most valuable SEO real estate."},description:{what:"A meta description is set — the grey snippet under the blue link in Google.",why:"Drives click-through rate from search results to your site."},desc_len:{what:"Meta description is between 80–160 characters.",why:"Too short hurts CTR; too long gets truncated."},h1:{what:"The page has exactly one H1 heading.",why:"Google uses H1 to understand what the page is fundamentally about."},h1_text:{what:"The H1 contains meaningful text (not 'Welcome' or empty).",why:"A weak H1 means you're throwing away a top-3 ranking signal."},h2:{what:"The page uses H2 subheadings to break up content.",why:"Helps Google understand structure and improves readability."},heading_hierarchy:{what:"Headings follow a logical hierarchy (H2 → H3, not H2 → H4).",why:"Proper hierarchy helps both search engines and screen readers."},og_title:{what:"Open Graph title is set — what shows when shared on Facebook/LinkedIn.",why:"Without it your shared links look broken or generic."},og_description:{what:"Open Graph description is set for social media previews.",why:"Determines whether someone clicks your link from a social post."},og_image:{what:"Open Graph image is set — the picture shown when your link is shared.",why:"Posts with images get up to 2.3× more engagement."},words_300:{what:"The page has at least 300 words of real content.",why:"Thin pages rarely rank — Google sees them as low-value."},words_600:{what:"The page has at least 600 words.",why:"Depth signals authority on the topic."},words_1000:{what:"The page has at least 1000 words.",why:"Long-form pages dominate informational and category rankings."},paragraphs:{what:"Content is structured into paragraphs (<p> tags).",why:"Improves both crawlability and reader comprehension."},lists:{what:"Content uses lists for scannability.",why:"Lists win featured snippets in Google search."},internal_links:{what:"The page links to at least 3 other pages on your site.",why:"Internal links pass ranking power and help Google crawl your site."},internal_links_5:{what:"The page has 5+ internal links.",why:"More internal links = stronger site architecture."},external_links:{what:"The page links out to authoritative external sources.",why:"Outbound links to quality sources can actually boost your authority."},blog_link:{what:"A blog or news section is linked from the page.",why:"Content marketing is the single biggest long-term traffic driver."},about_link:{what:"An About page is linked.",why:"About pages build trust — Google's E-E-A-T guidelines reward this."},size_1500:{what:"The HTML payload is under 1.5 MB.",why:"Heavy pages load slowly, especially on mobile networks."},size_500:{what:"The HTML payload is under 500 KB.",why:"Lean pages load fast everywhere — better UX and ranking."},speed_2500:{what:"The server responds in under 2.5 seconds.",why:"Slow servers tank both rankings and conversion rate."},speed_1000:{what:"The server responds in under 1 second.",why:"Fast sites convert 2–3× better than slow ones."},lazy_loading:{what:"Images use loading='lazy' so they only load when scrolled into view.",why:"Massively reduces initial page load time."},modern_images:{what:"Images use modern formats like WebP or AVIF.",why:"30–50% smaller files = faster pages."}
1,preconnect:{what:"preconnect/preload hints prepare external resources early.",why:"Shaves hundreds of milliseconds off Largest Contentful Paint."},async_scripts:{what:"Most JavaScript files load async or defer (non-blocking).",why:"Blocking scripts delay everything visible on the page."},css_blocking:{what:"The page loads 4 or fewer external stylesheets.",why:"Each blocking CSS request delays first paint."},inline_styles:{what:"Inline style attributes are limited.",why:"Excessive inline styles bloat HTML and prevent caching."},cwv_lcp:{what:"Largest Contentful Paint on mobile is 2.5 seconds or faster.",why:"LCP is a direct Google ranking signal — anything above 2.5 s costs positions in competitive results."},cwv_inp:{what:"Interaction to Next Paint on mobile is 200 ms or faster.",why:"INP replaced FID in 2024 as a Core Web Vital — laggy interactions drop rankings and hurt conversion."},cwv_cls:{what:"Cumulative Layout Shift on mobile is under 0.10.",why:"Layout shifts (buttons moving as the page loads) trigger accidental clicks and fail Google's page-experience bar."},viewport:{what:"A mobile viewport meta tag is set.",why:"Without it your site won't display correctly on phones."},viewport_dvw:{what:"The viewport uses width=device-width.",why:"Required for true responsive layout on mobile."},responsive_images:{what:"Images use srcset or <picture> to serve the right size per device.",why:"Stops phones downloading huge desktop images."},alt_text:{what:"At least 80% of images have descriptive alt text.",why:"Alt text drives image-search traffic and is required for accessibility."},alt_text_full:{what:"Every image has alt text.",why:"Fully accessible sites rank better and reach more customers."},img_dimensions:{what:"Images declare their width and height in the HTML.",why:"Without them the page jumps around while loading, which Google measures and penalises."},tap_targets:{what:"The page has interactive elements (buttons, links).",why:"Pages without interaction signal low engagement to Google."},nav_present:{what:"A semantic <nav> element is present.",why:"Helps Google identify your site's main navigation."},footer_present:{what:"A semantic <footer> element is present.",why:"Helps Google find legal info, contact details, social links."},https_strict:{what:"The final URL (after any redirects) is HTTPS.",why:"Any HTTP step in the chain leaks data and trust."},hsts:{what:"HSTS header forces browsers to use HTTPS only.",why:"Protects users from downgrade attacks on public WiFi."},csp:{what:"Content-Security-Policy header blocks malicious scripts.",why:"First line of defence against XSS and supply-chain attacks."},xcto:{what:"X-Content-Type-Options: nosniff header is set.",why:"Stops browsers misinterpreting files as executable scripts."},xfo:{what:"Clickjacking protection (X-Frame-Options or CSP frame-ancestors) is set.",why:"Prevents your site being embedded in fake checkout pages."},referrer_policy:{what:"Referrer-Policy controls what is sent to other sites you link to.",why:"Protects customer privacy on outbound clicks."},permissions_policy:{what:"Permissions-Policy restricts browser features (camera, mic, geolocation).",why:"Reduces attack surface from third-party scripts."},mixed_content:{what:"No http:// assets are loaded from this HTTPS page.",why:"Mixed content makes browsers flag your site as 'Not Secure'."},server_hidden:{what:"The Server: header doesn't advertise software/versions.",why:"Hides hints attackers use to find known vulnerabilities."},no_inline_handlers:{what:"No inline event handlers (onclick=, onload=) in HTML.",why:"Inline handlers break CSP and are a XSS risk."},schema_jsonld:{what:"Structured data (JSON-LD) is present on the page.",why:"Unlocks rich results — star ratings, prices, FAQs in search."},schema_org:{what:"Organization or LocalBusiness schema identifies your business.",why:"Powers your Knowledge Panel and brand listings in Google."},schema_website:{what:"WebSite schema is declared.",why:"Enables sitelinks search box in your Google result."},schema_parses:{what:"All structured data on the page is valid, readable JSON-LD.",why:"One broken bracket makes Google ignore every piece of structured data on the page."},schema_org_fields:{what:"Organization schema includes name, URL and logo.",why:"This is what powers your brand panel and logo in Google results."},schema_product_fields:{what:"Product schema includes image, brand as an object, return policy and shipping details.",why:"Google Merchant listings reject products missing these — the product never shows in shopping or rich results."},schema_article_fields:{what:"Article schema includes headline, author, and published/modified dates.",why:"Incomplete article data means no rich result and weaker E-E-A-T credit."},schema_faq_fields:{what:"FAQ schema has real questions with real answer text.",why:"Empty answers get your FAQ markup ignored — and AI engines quote those answers."},schema_breadcrumb_fields:{what:"Breadcrumb schema lists properly ordered items with names and URLs.",why:"Malformed breadcrumbs drop the navigation trail from your Google result."},schema_no_critical_errors:{what:"No critical structured-data errors were found across the page.",why:"These are the exact errors Google Search Console emails you about."},breadcrumb_nav:{what:"A visible breadcrumb trail (Home / Category / Page) appears on the page.",why:"Breadcrumbs help visitors navigate and give Google a clean path to show instead of a messy URL."},schema_breadcrumb:{what:"BreadcrumbList schema describes the page's navigation path.",why:"Replaces messy URLs with clean breadcrumbs in search results."},schema_product:{what:"Product schema is present (for e-commerce pages).",why:"Required for price, stock and rating to appear in Google."},twitter_card:{what:"Twitter Card meta tag is configured.",why:"Determines how y
1our links look when shared on X / Twitter."},twitter_image:{what:"A Twitter Card image is set.",why:"Tweets with link cards get more clicks than those without."},og_type:{what:"Open Graph type (article, product, website) is declared.",why:"Helps Facebook and LinkedIn categorise your content correctly."},social_links:{what:"The site links out to social profiles.",why:"Helps Google verify brand identity for the Knowledge Panel."},contact_info:{what:"Contact details (email, phone or contact page) are present.",why:"Trust signal — both for Google E-E-A-T and for buyers."},copyright:{what:"The footer contains the current year's copyright.",why:"Tiny signal that the site is actively maintained."},ai_llms_txt:{what:"An llms.txt file is published at the root of your site.",why:"Emerging standard that tells AI assistants what your site is about and which pages to read — without it they guess."},ai_gptbot:{what:"ChatGPT's crawler (GPTBot) is allowed to read your site in robots.txt.",why:"Blocking GPTBot makes your site invisible to ChatGPT's training and ChatGPT-powered answers."},ai_oai_search:{what:"OpenAI's search crawler (OAI-SearchBot) is allowed to index your site.",why:"This is the crawler ChatGPT Search uses to find live answers — block it and ChatGPT will never cite you."},ai_perplexity:{what:"Perplexity's crawler (PerplexityBot) is allowed to index your site.",why:"Perplexity is the fastest-growing AI search engine — blocking it removes you from millions of answers."},ai_google_extended:{what:"Google-Extended (Google's AI crawler) is allowed to use your content.",why:"Lets Gemini use and cite your content. (Google AI Overviews use normal Googlebot, checked separately.)"},ai_claude_search:{what:"Claude's search crawler (Claude-SearchBot) is allowed to index your site.",why:"Claude uses this index to find and cite websites when it answers with web search."},ai_perplexity_user:{what:"Perplexity's live fetcher (Perplexity-User) can open your pages.",why:"When someone asks Perplexity about you, it fetches your page on the spot — blocked means no citation."},ai_claude:{what:"Anthropic's Claude crawler (ClaudeBot) is allowed to read your site.",why:"Claude is used by millions for research and shopping decisions — blocking it cuts you out."},ai_structured_data:{what:"Structured data (JSON-LD) is present so AI engines can extract facts cleanly.",why:"AI answer engines lean heavily on schema to quote prices, ratings, hours and product details accurately."},ai_bingbot:{what:"Bingbot is allowed to crawl your site.",why:"Bing's index powers Microsoft Copilot and parts of ChatGPT's web results — blocking it removes you from both."},ai_applebot_extended:{what:"Applebot-Extended is allowed, so Apple Intelligence and Siri can use your content.",why:"Apple's on-device AI answers pull from this crawler; blocking it removes you from iPhone-native answers."},ai_ccbot:{what:"CCBot (Common Crawl) is allowed to read your site.",why:"Common Crawl is the dataset most open AI models learn brand facts from — blocking it means models never learn you exist."},ai_chatgpt_user:{what:"ChatGPT's live browsing agent (ChatGPT-User) is allowed to fetch your site.",why:"This is the bot that visits your site while a customer is chatting — blocking it means ChatGPT cannot answer questions about you in real time."},ai_meta:{what:"Meta AI (Meta-ExternalAgent) is allowed to read your site.",why:"Powers AI answers inside WhatsApp, Instagram and Facebook."},ai_amazonbot:{what:"Amazonbot is allowed to read your site.",why:"Feeds Alexa+ answers on Amazon devices."},ai_bytespider:{what:"Bytespider is allowed to read your site.",why:"Feeds TikTok's in-app assistant and search."},ai_duckassist:{what:"DuckAssistBot is allowed to read your site.",why:"Powers DuckDuckGo's AI answers."},ai_mistral:{what:"MistralAI-User is allowed to read your site.",why:"Powers Le Chat, a fast-growing assistant in Europe."},ai_faq_schema:{what:"FAQPage schema wraps Q&A blocks in machine-readable form.",why:"Q&A is the single most-cited format in ChatGPT, Perplexity and Google AI Overviews."},ai_howto_article:{what:"HowTo or Article schema is declared on editorial pages.",why:"Tells AI engines this is authored, structured content — safe to summarise and cite."},ai_question_headings:{what:"At least one H2 is phrased as a question (How / What / Why…).",why:"AI answer engines pull answers from headings shaped like the user's own query."},ai_short_paragraphs:{what:"Average paragraph is 60 words or fewer.",why:"Long paragraphs get skipped — LLMs chunk and cite short, self-contained passages."},ai_definitional_intro:{what:"The opening paragraph contains a clean definitional sentence.",why:"AI Overviews and ChatGPT quote a definitional sentence verbatim when one is available."},ai_server_rendered:{what:"Your content is readable without running JavaScript.",why:"AI crawlers do not run JavaScript — if your text only appears after scripts load, AI engines see an empty page."},ai_llms_txt_useful:{what:"Your llms.txt actually lists your key pages, not just a heading.",why:"An empty llms.txt gives AI engines nothing to follow — it only helps if it points at real content."},eeat_author:{what:"The page identifies an author via schema, meta tag or byline link.",why:"Google's E-E-A-T guidelines and the Helpful Content system reward clear authorship."},eeat_date_modified:{what:"A dateModified value is set in JSON-LD or article metadata.",why:"Freshness is a direct ranking signal — stale pages lose to updated ones."},eeat_date_published:{what:"A datePublished value is set in JSON-LD or article metadata.",why:"Establishes originality and lets Google order results by recency."},eeat_updated_visible:{what:"A visible ‘Updated’ label or <time> element is shown to readers.",why:"Signals maintenance to humans and boosts click-through from search results."},eeat_sameas:{what:"Organization schema includes sameAs links to Wikidata, LinkedIn or socials.",why:"Required for Google to verify brand identity and unlock the Knowledge Panel."},eeat_org_identity:{what:"Organization schema identifies the business behind the site.",why:"AI engines and Google both cite brands they can identify with confidence."},eeat_figures:{what:"Content images are wrapped in <figure> / <figcaption> when captioned.",why:"AI Overviews increasingly show captioned images — plain <img> tags rarely qualify."},eeat_recent_update:{what:"The page shows it was updated within the last 12 months.",why:"Google and AI engines both favour recent content — a 2019 date actively works against you."},shopify_detected:{what:"Your store is running on Shopify.",why:"Enables deeper template-level checks we'll run below."},shopify_home_title:{what:"Your homepage has a unique, non-generic title.",why:"The homepage is your most valuable page — never leave its title at default."}
1,shopify_home_desc:{what:"Your homepage has a meta description.",why:"Determines the snippet shown when people search your brand name."},shopify_home_canonical:{what:"Your homepage canonical points to itself.",why:"Stops ranking power leaking to a duplicate URL."},shopify_home_h1:{what:"Your homepage has exactly one H1.",why:"Tells Google what your business is, in one short phrase."},shopify_home_org:{what:"Organization or WebSite schema is on the homepage.",why:"Required for sitelinks search box and Knowledge Panel."},shopify_product_sampled:{what:"We crawled a sample of your product pages.",why:"Product templates need to be tested across multiple URLs, not just one."},shopify_product_title:{what:"Product titles are 20–70 characters across the sample.",why:"Too short hides keywords; too long gets cut off in search results."},shopify_product_desc:{what:"Product meta descriptions are set across the sample.",why:"Without one, Google invents a snippet — usually a bad one."},shopify_product_canonical:{what:"Product canonicals point to the master product URL, ignoring variants.",why:"The #1 Shopify SEO mistake — variant URLs split ranking power."},shopify_product_schema:{what:"Product schema with price and currency is present.",why:"Required to show price, stock and ratings as rich results in Google."},shopify_product_og_image:{what:"Product pages have an Open Graph image.",why:"Determines the image shown when products are shared socially."},shopify_product_indexable:{what:"No product page in the sample is set to noindex.",why:"A noindex on a product page makes it impossible to rank — instant lost sales."},shopify_product_h1:{what:"Each product page has exactly one H1.",why:"The H1 should be the product name — that's how Google understands the page."},shopify_collection_sampled:{what:"We crawled a sample of your collection pages.",why:"Collections drive the bulk of category-level search traffic."}
1,shopify_collection_title:{what:"Collection titles are descriptive (20+ chars) across the sample.",why:"Generic titles like 'Collection' waste high-value ranking keywords."},shopify_collection_desc:{what:"Collection meta descriptions are set across the sample.",why:"Determines whether your category pages get clicks from search."},shopify_collection_canonical:{what:"Collection canonicals point to themselves.",why:"Faceted navigation (?sort=, ?filter=) creates duplicates without this."},shopify_collection_schema:{what:"CollectionPage / ItemList schema is present on collections.",why:"Helps Google show product carousels for category searches."},shopify_collection_indexable:{what:"No collection page is set to noindex.",why:"Hidden collections = whole categories invisible to Google."},shopify_breadcrumb:{what:"BreadcrumbList schema is present across product or collection templates.",why:"Replaces ugly URLs with clean breadcrumb trails in search results."}},Se={charset:5,lang:5,doctype:5,viewport:5,viewport_dvw:5,favicon:5,robots_meta:5,canonical:5,canonical_self:5,og_title:5,og_description:5,og_type:5,twitter_card:5,twitter_image:5,hreflang:10,title:5,title_len:5,title_unique:10,description:5,desc_len:5,copyright:5,status_ok:15,ai_llms_txt:15,ai_gptbot:10,ai_oai_search:10,ai_perplexity:10,ai_google_extended:10,ai_claude:10,ai_bingbot:10,ai_applebot_extended:10,ai_ccbot:10,ai_chatgpt_user:10,ai_meta:10,ai_amazonbot:10,ai_bytespider:10,ai_duckassist:10,ai_mistral:10,ai_llms_txt_useful:20,googlebot_allowed:5,x_robots_tag:15,http_to_https:30,real_404:45,img_dimensions:60,ai_claude_search:10,ai_perplexity_user:10,breadcrumb_nav:30,eeat_recent_update:30,ai_server_rendered:240,schema_parses:20,schema_org_fields:30,schema_product_fields:60,schema_article_fields:30,schema_faq_fields:30,schema_breadcrumb_fields:30,schema_no_critical_errors:45,robots_txt:10,sitemap_declared:5,sitemap_xml:30,hsts:15,csp:45,xcto:10,xfo:10,referrer_policy:10,permissions_policy:15,server_hidden:10,mixed_content:30,no_inline_handlers:60,schema_jsonld:30,schema_org:30,schema_website:20,schema_breadcrumb:30,schema_product:45,ai_faq_schema:30,ai_howto_article:30,ai_structured_data:30,eeat_sameas:15,eeat_org_identity:30,eeat_date_modified:15,eeat_date_published:15,eeat_updated_visible:15,eeat_author:30,eeat_figures:30,h1:15,h1_text:15,h2:20,heading_hierarchy:30,paragraphs:20,lists:20,og_image:20,internal_links:20,internal_links_5:30,external_links:15,blog_link:15,about_link:15,social_links:15,contact_info:15,ai_question_headings:20,ai_short_paragraphs:45,ai_definitional_intro:20,words_300:60,words_600:90,words_1000:120,alt_text:45,alt_text_full:90,responsive_images:60,tap_targets:30,nav_present:30,footer_present:30,lazy_loading:30,modern_images:120,preconnect:30,async_scripts:60,css_blocking:60,inline_styles:60,size_1500:90,size_500:120,speed_2500:120,speed_1000:180,cwv_lcp:180,cwv_inp:180,cwv_cls:90,https:60,https_strict:60},Ae={Technical:15,"On-page":20,Content:60,Performance:90,"Core Web Vitals":120,"Mobile & UX":30,Security:20,"Trust & Schema":30,"AI Search":15,"E-E-A-T & Freshness":20,Shopify:20},Te={schema_parses:"Fix the broken JSON-LD so it parses cleanly.",schema_org_fields:"Complete your Organization schema: name, url and logo.",schema_product_fields:"Add image, a Brand object, hasMerchantReturnPolicy and shippingDetails to Product schema.",schema_article_fields:"Add headline, author, datePublished and dateModified to Article schema.",schema_faq_fields:"Give every FAQ question a real answer in the schema.",schema_breadcrumb_fields:"Fix breadcrumb items so each has a position, name and URL.",schema_no_critical_errors:"Clear the critical structured-data errors listed in your report.",status_ok:"Fix the page so it returns a 200 OK response.",googlebot_allowed:"Remove the line in robots.txt that blocks Googlebot — this is urgent.",x_robots_tag:"Remove the noindex value from the X-Robots-Tag response header.",http_to_https:"Add a permanent 301 redirect from http:// to https://.",real_404:"Make missing pages return a real 404 status instead of a 200.",img_dimensions:"Add width and height attributes to your images.",ai_chatgpt_user:"Allow ChatGPT-User in robots.txt so ChatGPT can fetch pages live.",ai_meta:"Allow Meta-ExternalAgent in robots.txt.",ai_amazonbot:"Allow Amazonbot in robots.txt.",ai_bytespider:"Allow Bytespider in robots.txt.",ai_duckassist:"Allow DuckAssistBot in robots.txt.",ai_mistral:"Allow MistralAI-User in robots.txt.",ai_server_rendered:"Server-render or pre-render your main content so it exists in the raw HTML.",ai_llms_txt_useful:"Fill llms.txt with links to your key pages, not just a heading.",ai_claude_search:"Allow Claude-SearchBot in robots.txt so Claude can cite you.",ai_perplexity_user:"Allow Perplexity-User in robots.txt so Perplexity can fetch you live.",breadcrumb_nav:"Add a visible, linked breadcrumb trail near the top of your pages.",eeat_recent_update:"Refresh the page and update its dateModified.",https:"Force HTTPS across the whole site (redirect + HSTS).",https_strict:"Ensure every redirect chain ends on HTTPS.",title:"Add a unique, keyword-rich <title> to the page.",title_len:"Rewrite the title to 30–65 characters.",title_unique:"Replace the generic title with a descriptive one.",description:"Add a compelling meta description (80–160 chars).",desc_len:"Tighten the meta description to 80–160 chars.",h1:"Add exactly one H1 that describes the page.",h1_text:"Rewrite the H1 with meaningful keywords.",canonical:"Add a self-referencing <link rel=canonical>.",canonical_self:"Point the canonical to this exact URL.",robots_meta:"Remove the stray noindex/nofollow meta tag.",og_title:"Add an og:title tag for social sharing.",og_description:"Add an og:description tag.",og_image:"Add a 1200×630 og:image so shared links look right.",og_type:"Declare an og:type (website / article / product).",twitter_card:'Add <meta name="twitter:card" content="summary_large_image">.',twitter_image:"Add a twitter:image tag.",viewport:'Add <meta name="viewport" content="width=device-width, initial-scale=1">.',viewport_dvw:"Use width=device-width in the viewport meta.",favicon:"Add a favicon link in the <head>
1.",charset:'Add <meta charset="utf-8"> at the top of <head>.',lang:'Set the html lang attribute (e.g. lang="en").',doctype:"Add <!doctype html> at the top of the document.",hreflang:"Add hreflang tags for each language/region variant.",ai_llms_txt:"Publish an /llms.txt file describing your site to AI crawlers.",ai_gptbot:"Allow GPTBot in robots.txt so ChatGPT can index you.",ai_oai_search:"Allow OAI-SearchBot so ChatGPT Search can cite you.",ai_perplexity:"Allow PerplexityBot in robots.txt.",ai_google_extended:"Allow Google-Extended so Gemini can use and cite your content.",ai_claude:"Allow ClaudeBot in robots.txt.",ai_bingbot:"Allow Bingbot in robots.txt so Microsoft Copilot can cite you.",ai_applebot_extended:"Allow Applebot-Extended so Apple Intelligence can use your content.",ai_ccbot:"Allow CCBot so open AI models learn your brand facts.",robots_txt:"Publish a robots.txt at your site root.",sitemap_declared:"Add a 'Sitemap:' line to robots.txt pointing at your XML sitemap.",sitemap_xml:"Generate and publish an XML sitemap at /sitemap.xml, then submit it in Search Console.",ai_structured_data:"Add JSON-LD schema so AI engines can extract facts.",ai_faq_schema:"Wrap Q&A blocks in FAQPage JSON-LD.",ai_howto_article:"Add Article or HowTo JSON-LD to editorial pages.",ai_question_headings:"Reword at least one H2 as a natural question.",ai_short_paragraphs:"Split long paragraphs to <60 
1words each.",ai_definitional_intro:"Open with a clean definitional sentence.",hsts:"Add a Strict-Transport-Security header (max-age ≥ 6 months).",csp:"Add a Content-Security-Policy header.",xcto:"Add X-Content-Type-Options: nosniff.",xfo:"Add X-Frame-Options or CSP frame-ancestors.",referrer_policy:"Set a Referrer-Policy header.",permissions_policy:"Add a Permissions-Policy header.",server_hidden:"Strip the Server: header from responses.",mixed_content:"Rewrite any http:// asset URLs to https://.",no_inline_handlers:"Move inline onclick/onload handlers into JS files.",schema_jsonld:"Add JSON-LD structured data to the page.",schema_org:"Add Organization or LocalBusiness JSON-LD.",schema_website:"Add WebSite JSON-LD with a search action.",schema_breadcrumb:"Add BreadcrumbList JSON-LD.",schema_product:"Add Product JSON-LD with price, stock and rating.",social_links:"Link out to your social profiles from the footer.",contact_info:"Publish email/phone/contact page.",copyright:"Add a current-year copyright line in the footer.",eeat_author:"Add a visible byline and Author schema.",eeat_date_modified:"Set dateModified in JSON-LD.",eeat_date_published:"Set datePublished in JSON-LD.",eeat_updated_visible:"Show a visible 'Updated' date to readers.",eeat_sameas:"Add sameAs links (LinkedIn, Wikidata) to Organization schema.",eeat_org_identity:"Publish Organization schema with logo and legalName.",eeat_figures:"Wrap captioned images in <figure>/<figcaption>.",words_300:"Expand the page to at least 300 words of useful content.",words_600:"Grow the page to 600+ words of depth.",words_1000:"Publish a long-form 1000+ word version.",paragraphs:"Break content into proper <p> paragraphs.",lists:"Convert scannable content into bullet or numbered lists.",internal_links:"Add at least 3 internal links to related pages.",internal_links_5:"Add 5+ contextual internal links.",external_links:"Cite 1–2 authoritative external sources.",blog_link:"Link to your blog / news section from the nav.",about_link:"Link to an About page from the nav.",h2:"Add H2 subheadings to break up the content.",heading_hierarchy:"Fix heading order so H2 → H3 (no skipped levels).",alt_text:"Add descriptive alt text to at least 80% of images.",alt_text_full:"Add alt text to every remaining image.",responsive_images:"Serve responsive images via srcset / <picture>.",tap_targets:"Add real interactive elements (buttons, links).",nav_present:"Wrap main navigation in a <nav> element.",footer_present:"Wrap the site footer in a <footer> element.",size_1500:"Trim HTML payload below 1.5 MB.",size_500:"Get HTML payload under 500 KB.",speed_2500:"Get server response under 2.5 s (caching, CDN).",speed_1000:"Get server response under 1 s.",lazy_loading:'Add loading="lazy" to below-fold images.',modern_images:"Serve images as WebP / AVIF.",preconnect:"Add preconnect/preload hints for critical third parties.",async_scripts:"Add async or defer to non-critical <script> tags.",css_blocking:"Reduce blocking stylesheets to 4 or fewer.",inline_styles:"Move inline style attributes into CSS files.",cwv_lcp:"Improve LCP: preload the hero image, cut render-blocking CSS.",cwv_inp:"Reduce main-thread JS to bring INP under 200 ms.",cwv_cls:"Reserve dimensions for images/ads so nothing shifts."};function Pe(i){return Se[i.key]??Ae[i.category]??30}function Ce(i){return i<=15?"quick":i<=60?"medium":"deep"}function Ge(i){return Te[i.key]??`Fix "${i.label}" — see the plain-English explanation below.`}function Le(i){return i.effortMinutes<=15?"quick_wins":i.impact>=7?"high_impact":"polish"}const j={quick_wins:{title:"This week — Quick wins",subtitle:"15 minutes or less each. Do these first to bank instant momentum.",order:0},high_impact:{title:"Next 2 weeks — Heavy hitters",subtitle:"Bigger jobs, but each one moves your score meaningfully.",order:1},polish:{title:"Backlog — Polish & long tail",subtitle:"Nice-to-haves that lift you from good to great over time.",order:2}};function Oe(i){const f=i.checks.filter(s=>!s.passed).map(s=>{const n=Pe(s);return{key:s.key,label:s.label,category:s.category,impact:s.weight,effortMinutes:n,effort:Ce(n),what:V[s.key]?.what,why:V[s.key]?.why,action:Ge(s),_roi:s.weight/Math.max(5,n)}});f.sort((s,n)=>n._roi-s._roi||n.impact-s.impact||s.effortMinutes-n.effortMinutes);const p=f.map((s,n)=>({order:n+1,key:s.key,label:s.label,category:s.category,impact:s.impact,effortMinutes:s.effortMinutes,effort:s.effort,wave:Le({
1impact:s.impact,effortMinutes:s.effortMinutes}),what:s.what,why:s.why,action:s.action})),w=Object.keys(j).sort((s,n)=>j[s].order-j[n].order).map(s=>{const n=p.filter(x=>x.wave===s);return{id:s,title:j[s].title,subtitle:j[s].subtitle,items:n,totalMinutes:n.reduce((x,y)=>x+y.effortMinutes,0)}}).filter(s=>s.items.length>0),A=p.reduce((s,n)=>s+n.effortMinutes,0);return{items:p,waves:w,totalMinutes:A,totalHours:Math.round(A/60*10)/10}}function K(i){if(i<60)return`${i} min`;const m=i/60;return m===Math.floor(m)?`${m} h`:`${m.toFixed(1)} h`}const E={red:{label:"Critical · 🔴",headline:"Your site is missing the basics Google needs.",body:"We found multiple high-impact gaps. The good news: most of these are quick to fix and will move the needle fast."},orange:{label:"Weak · 🟠",headline:"You've started, but the foundation has holes.",body:"Some signals are in place, but inconsistencies are likely costing you organic traffic and rankings."},amber:{label:"On track · 🟡",headline:"Decent foundation — now it's time to grow.",body:"The basics are mostly there. To compound results, you need consistent monthly optimisation and content."},green:{label:"Strong · 🟢",headline:"Your site is in good SEO shape.",body:"You're set up well. The next move is to build authority, scale content, and out-execute competitors."}},Ie={fix:{product:"fix",primaryHref:"/fix",primaryLabel:"See the Launch Fix",pitch:"We can fix every red item from your report in 10 business days — and you can re-scan to see your new score. It includes 1 month of Visibility SaaS free."},growth:{product:"visibility",primaryHref:"/pricing",primaryLabel:"See all pricing",pitch:"You're ready for a monthly subscription that keeps your score high, publishes content and tracks your Google and AI-search rankings."}},He=i=>({red:"#ef4444",orange:"#f97316",amber:"#eab308",green:"#22c55e"})[i];function Qe(){const{url:i}=oe({from:"/"}),m=ie(),{market:f}=re(),p=B(ve),w=B(ke),A=P.fix.US.label,s=P.visibility.US.label,[n,x]=u.useState(i??""),[y,R]=u.useState(!1),[r,G]=u.useState(null),[M,L]=u.useState(null),[d,T]=u.useState({firstName:"",lastName:"",email:""}),[F,q]=u.useState(!1),[z,O]=u.useState(!1),[U,I]=u.useState(null),H=u.useRef(!1),D=async t=>{if(L(null),G(null),O(!1),I(null),!!t.trim()){R(!0);try{const l=await p({data:{url:t}});G(l),requestAnimationFrame(()=>document.getElementById("scan-result")?.scrollIntoView({behavior:"smooth",block:"start"}))}catch(l){L(l instanceof Error?l.message:"Something went wrong scanning that URL.")}finally{R(!1)}}};u.useEffect(()=>{i&&!H.current&&(H.current=!0,D(i))},[]);const te=t=>{t.preventDefault(),D(n)},se=async t=>{if(t.preventDefault(),!!r){q(!0);try{const l=await w({data:{firstName:d.firstName,lastName:d.lastName,email:d.email,market:f,result:r}});l?.downloadUrl&&I(l.downloadUrl),O(!0),W.success(l?.queued?"Report sent to your email — and you can download it below.":"Report ready below — email is being delivered.")}catch(l){W.error(l instanceof Error?l.message:"Couldn't send your report — please try again.")}finally{q(!1)}}},ae=()=>{G(null),x(""),L(null),T({firstName:"",lastName:"",email:""}),O(!1),I(null),H.current=!1,m({to:"/",search:{},replace:!0}),window.scrollTo({top:0,behavior:"smooth"})},h=r?Ie[r.recommendation]:null;return e.jsxs(de,{children:[e.jsx("section",{className:"bg-navy-signature text-white",children:e.jsxs("div",{className:"mx-auto max-w-4xl px-4 pt-16 pb-16 md:pt-24 md:pb-20 text-center",children:[e.jsx("span",{className:"pill-eyebrow text-cyan",children:"Get Found on Google AND AI Search."}),e.jsxs("h1",{className:"display-xl mt-5",children:["Is Your Website ",e.jsx("span",{className:"text-cyan",children:"Invisible"})," on Google ",e.jsx("span",{className:"text-cyan",children:"and"})," in AI Search?"]}),e.jsxs("p",{className:"mt-5 text-white/85 max-w-2xl mx-auto",children:["The SalesCollab SEO & AI Discovery Engine is a free 120-point health check that shows, in 60 seconds, whether Google and AI answer engines can find, read and cite your website. It covers technical SEO, E-E-A-T ",e.jsx("span",{className:"text-cyan font-semibold",children:"and"})," AI search visibility — ChatGPT, Perplexity, Google AI Overviews, Claude, Microsoft Copilot and Apple Intelligence. No sign-up to see your score."]}),e.jsxs("form",{onSubmit:te,className:"mt-9 flex flex-col sm:flex-row gap-3 max-w-xl mx-auto",children:[e.jsxs("div",{className:"flex-1 flex items-center gap-2 rounded-full bg-white text-foreground px-5 py-3.5 shadow-md",children:[e.jsx(ye,{size:18,className:"text-cyan flex-shrink-0"}),e.jsx("input",{type:"text",value:n,onChange:t=>x(t.target.value),placeholder:"yourstore.com",disabled:y,autoComplete:"off",autoCorrect:"off",autoCapitalize:"none",spellCheck:!1,inputMode:"url",name:"site-url-nofill","data-form-type":"other","data-lpignore":"true","data-1p-ignore":!0,className:"flex-1 bg-transparent outline-none text-sm md:text-base placeholder:text-muted-foreground"})]}),e.jsx("button",{type:"submit",disabled:y||!n.trim(),className:"rounded-full bg-coral px-6 py-3.5 font-semibold shadow-md hover:opacity-90 disabled:opacity-60 inline-flex items-center justify-center gap-2",children:y?e.jsxs(e.Fragment,{children:[e.jsx(Y,{size:16,className:"animate-spin"})," Scanning…"]}):e.jsxs(e.Fragment,{children:[e.jsx($,{size:16})," Scan My Site Free"]})})]}),M&&e.jsx("div",{className:"mt-5 text-sm text-coral bg-white/5 border border-coral/40 rounded-xl px-4 py-3 max-w-2xl mx-auto",children:M}),!r&&!y&&e.jsxs("ul",{className:"mt-9 flex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-sm text-white/80",children:[e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(b,{size:16,className:"text-cyan"})," Google SEO + AI Search visibility"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(b,{size:16,className:"text-cyan"})," Shopify & WooCommerce"]}),e.jsxs("li",{className:"flex items-center gap-2",children:[e.jsx(b,{size:16,className:"text-cyan"})," 120 checks · Plain English · Free"]})]})]})}),r&&h&&e.jsx("section",{id:"scan-result",className:"bg-cream",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-14",children:[e.jsxs("div",{className:"grid md:grid-cols-2 gap-8 items-center rounded-3xl bg-card border border-border p-8 shadow-md",children:[e.jsxs("div",{className:"text-center md:text-left",children:[e.jsx("div",{className:"text-xs uppercase tracking-[0.2em] text-muted-foreground font-bold",children:"SEO Health Score"}),e.jsxs("div",{className:"mt-3 flex items-end gap-3 justify-center md:justify-start",children:[e.jsx("div",{className:"text-7xl font-extrabold",style:{color:He(r.band)},children:r.score}),e.jsx("div",{className:"pb-3 text-muted-foreground",children:"/ 100"})]}),e.jsx("div",{className:"mt-3 text-lg font-bold",children:E[r.band].label}),e.jsx("div",{className:"mt-2 text-sm text-muted-foreground break-all",children:r.finalUrl})]}),e.jsx("div",{children:e.jsxs("div",{className:"rounded-2xl bg-watercolor p-5 border border-border",children:[e.jsx("h2",{className:"text-xl font-extrabold",children:E[r.band].headline}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:E[r.band].body})]})})]}),e.jsxs("div",{className:"mt-6 rounded-3xl bg-navy text-white p-6 md:p-8 border border-cyan/30 shadow-lg",children:[e.jsxs("div",{className:"flex items-center gap-2 text-cyan text-xs uppercase tracking-[0.2em] font-bold",children:[e.jsx(J,{size:14})," Recommended next step"]}),e.jsx("p",{className:"mt-3 text-base md:text-lg max-w-2xl",children:h.pitch}),e.jsxs("div",{className:"mt-5 flex flex-wrap gap-3",children:[e.jsxs(N,{to:h.primaryHref,className:"rounded-full bg-coral px-6 py-3 font-semibold shadow hover:opacity-90 inline-flex items-center gap-2",children:[h.primaryLabel," ",e.jsx(C,{size:16})]}),e.jsx(N,{to:"/contact",search:{interest:h.product},className:"rounded-full border border-white/30 px-6 py-3 font-semibold hover:bg-white/10",children:"Talk to a strategist"})]}),e.jsxs("div",{className:"mt-4 text-sm text-white/60",children:["Suggested: ",e.jsxs("span",{className:"font-bold text-white",children:[P[h.product].US.label,P[h.product].US.recurring?"/month":" once-off"]})]})]}),e.jsx("div",{className:"mt-6 rounded-3xl bg-watercolor border border-border p-6 md:p-8",children:z?e.jsxs("div",{className:"text-center py-2",children:[e.jsx(b,{size:32,className:"text-cyan mx-auto"}),e.jsxs("div",{className:"mt-3 font-extrabold text-xl",children:["Your report is ready, ",d.firstName,"!"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1",children:["We've emailed a copy to ",e.jsx("span",{className:"font-mono text-foreground",children:d.email}),". (Check your spam folder if it doesn't arrive within 2 minutes.)"]}),U&&e.jsxs("a",{href:U,target:"_blank",rel:"noopener noreferrer",download:!0,className:"mt-5 inline-flex items-center gap-2 rounded-full bg-coral text-white px-7 py-3.5 font-semibold shadow hover:opacity-90",children:[e.jsx(ge,{size:18})," Download my PDF report"]}),e.jsx("div",{className:"mt-6",children:e.jsxs(N,{to:h.primaryHref,className:"inline-flex items-center gap-2 text-sm font-semibold text-navy hover:underline",children:["Next: ",h.primaryLabel," ",e.jsx(C,{size:14})]})})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2 text-coral text-xs uppercase tracking-[0.2em] font-bold",children:[e.jsx(he,{size:14})," Get the full PDF report"]}),e.jsx("h3",{className:"text-xl md:text-2xl font-extrabold mt-2",children:"Want the full breakdown with plain-English explanations?"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 max-w-2xl",children:"We'll email you a branded PDF with every check, what each one means, and what to fix first. Plus a copy you can download instantly below."}),e.jsxs("form",{onSubmit:se,className:"mt-5 grid sm:grid-cols-2 lg:grid-cols-4 gap-3",children:[e.jsx("input",{required:!0,maxLength:100,autoComplete:"given-name",value:d.firstName,onChange:t=>T({...d,firstName:t.target.value}),placeholder:"First name",className:"rounded-lg border border-input bg-white px-3 py-2.5 outline-none focus:border-cyan focus:ring-2 focus:ring-cyan/30"}),e.jsx("input",{required:!0,maxLength:100,autoComplete:"family-name",value:d.lastName,onChange:t=>T({...d,lastName:t.target.value}),placeholder:"Surname",className:"rounded-lg border border-input bg-white px-3 py-2.5 outline-none focus:border-cyan focus:ring-2 focus:ring-cyan/30"}),e.jsx("input",{required:!0,type:"email",maxLength:200,autoComplete:"email",value:d.email,onChange:t=>T({...d,email:t.target.value}),placeholder:"[email protected]",className:"rounded-lg border border-input bg-white px-3 py-2.5 outline-none focus:border-cyan focus:ring-2 focus:ring-cyan/30"}),e.jsx("button",{disabled:F,className:"rounded-full bg-coral text-white px-5 py-2.5 font-semibold shadow hover:opacity-90 disabled:opacity-60 inline-flex items-center justify-center gap-2",children:F?e.jsx(Y,{size:16,className:"animate-spin"}):e.jsxs(e.Fragment,{children:["Email me the report ",e.jsx(C,{size:16})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-3",children:"No spam. We use your details only to send your report and follow up."})]})}),e.jsxs("div",{className:"mt-10",children:[e.jsx("h3",{className:"text-2xl font-extrabold",children:"Scan summary"}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-1",children:["We ran ",r.checks.length," checks across 10 categories on"," ",e.jsx("span",{className:"font-mono",children:new URL(r.finalUrl).hostname}),". The full check-by-check breakdown, plain-English explanations and priority fix list are in y
1our PDF report."]}),(()=>{const t=r.checks.filter(a=>a.passed).length,l=r.checks.length-t,g=new Map;for(const a of r.checks){const o=g.get(a.category)??{pass:0,fail:0};a.passed?o.pass++:o.fail++,g.set(a.category,o)}const c=Array.from(g.entries()).sort((a,o)=>o[1].fail-a[1].fail);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mt-5 grid sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-card p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-extrabold text-emerald-600",children:t}),e.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground mt-1",children:"Checks passed"})]}),e.jsxs("div",{className:"rounded-xl border border-coral/30 bg-coral/5 p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-extrabold text-coral",children:l}),e.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground mt-1",children:"Issues found"})]}),e.jsxs("div",{className:"rounded-xl border border-border bg-card p-4 text-center",children:[e.jsx("div",{className:"text-3xl font-extrabold text-navy",children:c.length}),e.jsx("div",{className:"text-xs uppercase tracking-wider text-muted-foreground mt-1",children:"Categories tested"})]})]}),e.jsxs("div",{className:"mt-5 rounded-2xl border border-border bg-card p-5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 mb-4",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-base font-extrabold text-navy",children:"Results by category"}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5",children:["Pass rate for each of the ",c.length," categories we tested."]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-3 text-[11px] text-muted-foreground shrink-0",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(b,{size:12,className:"text-emerald-600"})," Pass"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(X,{size:12,className:"text-coral"})," Needs work"]})]})]}),e.jsx("div",{className:"space-y-2",children:c.map(([a,o])=>{const _=o.pass+o.fail,v=_>0?Math.round(o.pass/_*100):0,k=o.fail===0;return e.jsxs("div",{className:"rounded-xl border border-border/70 bg-watercolor p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-bold text-sm text-navy truncate",children:a}),k&&e.jsx(b,{size:14,className:"text-emerald-600 shrink-0","aria-label":"All passed"})]}),e.jsx("div",{className:"mt-2 h-2 w-full rounded-full bg-black/5 overflow-hidden",children:e.jsx("div",{className:`h-full rounded-full ${k?"bg-emerald-500":v>=50?"bg-amber-500":"bg-coral"}`,style:{width:`${v}%`},"aria-hidden":"true"})})]}),e.jsxs("div",{className:"shrink-0 text-right",children:[e.jsx("div",{className:`text-sm font-extrabold ${k?"text-emerald-600":"text-coral"}`,children:k?"100%":`${v}%`}),e.jsxs("div",{className:"text-[11px] text-muted-foreground whitespace-nowrap mt-0.5",children:[o.pass,"/",_," passed"]})]})]}),e.jsx("div",{className:"mt-2 text-xs text-muted-foreground",children:k?e.jsx("span",{className:"text-emerald-700 font-medium",children:"All checks passed — no action needed."}):o.fail===1?e.jsxs("span",{children:[e.jsx("span",{className:"font-semibold text-coral",children:"1 issue"})," to fix in this category."]}):e.jsxs("span",{children:[e.jsxs("span",{className:"font-semibold text-coral",children:[o.fail," issues"]})," to fix in this category."]})})]},a)})})]})]})})()]}),z&&(()=>{const t=Oe(r);if(t.items.length===0)return null;const l={quick_wins:"border-emerald-300 bg-emerald-50/60",high_impact:"border-coral/40 bg-coral/5",polish:"border-border bg-watercolor"},g={quick:"bg-emerald-100 text-emerald-800",medium:"bg-amber-100 text-amber-800",deep:"bg-coral/15 text-coral"},c=a=>a>=8?"Critical":a>=6?"High":a>=4?"Medium":"Low";return e.jsxs("div",{className:"mt-10 rounded-3xl border border-border bg-card p-6 md:p-8 shadow-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 text-coral text-xs uppercase tracking-[0.2em] font-bold",children:[e.jsx(J,{size:14})," Fix next — your prioritized plan"]}),e.jsxs("h3",{className:"text-2xl font-extrabold mt-2",children:[t.items.length," fixes, grouped by impact and effort"]}),e.jsxs("p",{className:"text-sm text-muted-foreground mt-2 max-w-3xl",children:["Every failing check has been scored on how much it moves your rankings (impact) and how long it takes to fix (effort), then ordered so you always work on the highest-ROI item next. Estimated total hands-on t
1ime: ",e.jsxs("span",{className:"font-semibold text-navy",children:[t.totalHours," h"]}),"."]}),e.jsx("div",{className:"mt-6 space-y-6",children:t.waves.map(a=>e.jsxs("div",{className:`rounded-2xl border ${l[a.id]} p-5`,children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 flex-wrap",children:[e.jsxs("div",{children:[e.jsx("div",{className:"font-extrabold text-navy",children:a.title}),e.jsx("div",{className:"text-xs text-muted-foreground mt-0.5",children:a.subtitle})]}),e.jsxs("div",{className:"text-xs font-semibold text-navy/80 whitespace-nowrap",children:[a.items.length," item",a.items.length===1?"":"s"," · ~",K(a.totalMinutes)]})]}),e.jsx("ol",{className:"mt-4 space-y-3",children:a.items.map(o=>e.jsx("li",{className:"rounded-xl bg-card border border-border/70 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"shrink-0 w-8 h-8 rounded-full bg-navy text-white text-sm font-bold flex items-center justify-center",children:o.order}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"font-bold text-navy",children:o.label}),e.jsx("span",{className:"text-[10px] uppercase tracking-wider text-muted-foreground",children:o.category})]}),e.jsxs("div",{className:"mt-1.5 text-sm text-foreground/90",children:[e.jsx("span",{className:"font-semibold text-navy",children:"Do this: "}),o.action]}),o.why&&e.jsxs("div",{className:"mt-1 text-xs text-muted-foreground",children:[e.jsx("span",{className:"font-semibold text-navy",children:"Why: "}),o.why]}),e.jsxs("div",{className:"mt-2 flex flex-wrap gap-2",children:[e.jsxs("span",{className:"text-[11px] font-semibold px-2 py-0.5 rounded-full bg-navy/5 text-navy",children:["Impact: ",c(o.impact)," (",o.impact,"/10)"]}),e.jsxs("span",{className:`text-[11px] font-semibold px-2 py-0.5 rounded-full ${g[o.effort]}`,children:["Effort: ",K(o.effortMinutes)]})]})]})]})},o.key))})]},a.id))}),e.jsxs("div",{className:"mt-6 text-xs text-muted-foreground",children:["Prefer we do it for you? The ",e.jsx(N,{to:h.primaryHref,className:"font-semibold text-navy underline",children:h.primaryLabel.replace(/^See the /,"")})," covers every item above and re-scans after."]})]})})(),(()=>{if(!r.checks.some(c=>c.category==="Shopify"))return null;const l=r.checks.filter(c=>!c.passed).map(c=>c.key),g=je(l);return g.length===0?null:e.jsxs("div",{className:"mt-10 rounded-3xl border border-border bg-card p-6 md:p-8 shadow-sm",children:[e.jsxs("div",{className:"flex items-center gap-2 text-cyan text-xs uppercase tracking-[0.2em] font-bold",children:[e.jsx(Q,{size:14})," Shopify SEO setup guide"]}),e.jsx("h3",{className:"text-2xl font-extrabold mt-2",children:"Step-by-step: fix each failing check in your Shopify store"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 max-w-3xl",children:"We detected your store runs on Shopify, so we mapped every failing schema/content check to the exact Admin location or theme file to edit. Follow the numbered steps under each item — most are 5–15 minutes each."}),e.jsx("div",{className:"mt-6 space-y-4",children:g.map(({key:c,fix:a},o)=>e.jsxs("details",{className:"rounded-2xl border border-border bg-watercolor open:bg-card transition-colors",open:o<2,children:[e.jsxs("summary",{className:"cursor-pointer list-none px-5 py-4 flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1",children:[e.jsx("div",{className:"font-extrabold text-navy",children:a.problem}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:[e.jsx("span",{className:"font-semibold text-navy",children:"Where:"})," ",a.where]})]}),e.jsx("span",{className:"text-cyan text-xs font-bold uppercase tracking-wider shrink-0 mt-1",children:"Open"})]}),e.jsxs("div",{className:"px-5 pb-5 pt-1",children:[e.jsx("ol",{className:"list-decimal ml-5 space-y-2 text-sm text-foreground/90",children:a.steps.map((_,v)=>e.jsx("li",{children:_},v))}),a.effort&&e.jsxs("div",{className:"mt-3 text-xs text-muted-foreground italic",children:["Effort: ",a.effort]})]})]},c))})]})})(),e.jsxs("div",{className:"mt-12 rounded-3xl border-2 border-dashed border-border p-6 text-center bg-card",children:[e.jsx(me,{size:28,className:"mx-auto text-cyan"}),e.jsx("div",{className:"mt-3 font-extrabold",children:"Want to scan a different website?"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"This will reset everything and start fresh."}),e.jsxs("button",{onClick:ae,className:"mt-4 inline-flex items-center gap-2 rounded-full bg-navy text-white px-6 py-3 font-semibold hover:opacity-90",children:[e.jsx(xe,{size:16})," Scan another website"]})]})]})}),!r&&!y&&e.jsxs(e.Fragment,{children:[e.jsx("section",{className:"bg-watercolor",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-16",children:[e.jsxs("div",{className:"text-center max-w-3xl mx-auto",children:[e.jsx("span",{className:"pill-e
1yebrow",children:"The Problem"}),e.jsxs("h2",{className:"display-lg mt-3",children:["You're probably losing customers — on Google ",e.jsx("em",{children:"and"})," in AI search."]}),e.jsx("p",{className:"mt-5 text-muted-foreground",children:"People don't just Google any more. They ask ChatGPT, Perplexity, Google AI Overviews, Claude, Copilot and Siri — and those answers cite specific websites. If your site can't be read by AI crawlers, or has no structured data for them to quote, you're invisible to a fast-growing slice of buyers. Same for Google. Both are fixable, and it starts with knowing exactly what's wrong."})]}),e.jsx("div",{className:"mt-12 grid md:grid-cols-3 gap-5",children:[{icon:$,title:"My store doesn't show up on Google",body:"You're invisible to people searching for what you sell."},{icon:pe,title:"ChatGPT and Perplexity never mention me",body:"AI answer engines can't read your site, or have nothing structured to quote."},{icon:X,title:"I'm getting traffic but no sales",body:"The wrong visitors are landing on the wrong pages."}].map(t=>e.jsxs("div",{className:"rounded-2xl bg-card border border-border p-7 shadow-sm",children:[e.jsx("div",{className:"grid h-12 w-12 place-items-center rounded-full bg-coral/15 text-coral",children:e.jsx(t.icon,{size:22})}),e.jsx("div",{className:"mt-4 font-extrabold text-lg",children:t.title}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:t.body})]},t.title))})]})}),e.jsx("section",{className:"bg-cream",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-14",children:[e.jsxs("div",{className:"text-center mb-10",children:[e.jsx("span",{className:"pill-eyebrow",children:"What the free scan checks"}),e.jsx("h2",{className:"display-lg mt-3",children:"What does the free scan actually check?"}),e.jsx("p",{className:"mt-3 text-muted-foreground max-w-2xl mx-auto text-sm",children:"Refreshed for how Google, ChatGPT, Perplexity, Claude and Google AI Overviews actually rank and cite sites in 2026 — not the 2015 checklist you'll get from most tools."})]}),e.jsx("div",{className:"grid md:grid-cols-4 gap-4",children:[{t:"AI search visibility",b:"llms.txt (and whether it lists real pages), plus crawler access for GPTBot, ChatGPT live browsing, PerplexityBot, ClaudeBot, Google-Extended, Applebot-Extended, Bingbot, CCBot, Meta AI, Amazon Alexa+, DuckDuckGo AI, Mistral Le Chat and TikTok's assistant."},{t:"AI answer-readiness",b:"Whether your content is readable without JavaScript (AI bots don't run it), FAQ / HowTo / Article schema, question-style H2s, definitional intros and chunk-friendly paragraphs."},{t:"E-E-A-T & freshness",b:"Author identity, dateModified within the last 12 months, sameAs, Organization schema and visible ‘Updated’ labels — signals rewarded by Google's Helpful Content system."},{t:"Technical health",b:"HTTPS, http → https redirect, Googlebot not blocked, noindex in page or headers, canonical URLs, real 404s, status codes, robots.txt and a live XML sitemap check."},{t:"On-page SEO",b:"Title, meta description, H1/H2 structure, Open Graph tags."},{t:"Content depth",b:"Word count, paragraphs, internal links, blog presence."},{t:"Performance & Core Web Vitals",b:"Real-user LCP, INP and CLS from Google PageSpeed Insights, plus page weight, response time, lazy-loading and modern image formats."},{t:"Mobile & UX",b:"Viewport, responsive images, image width/height (stops layout jump), alt text, semantic nav/footer."},{t:"Security",b:"HSTS, CSP, X-Content-Type, mixed content, frame protection."},{t:"Trust & schema",b:"Field-level JSON-LD validation of Organization, Product, Article, FAQ, WebSite and Breadcrumb schema — the exact checks Google Search Console complains about."},{t:"Shopify template",b:"Product & collection canonicals, schema, descriptions, indexability."}].map(t=>e.jsxs("div",{className:"rounded-2xl bg-card border border-border p-6 shadow-sm",children:[e.jsx("div",{className:"font-extrabold break-words",children:t.t}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2 break-words",children:t.b})]},t.t))})]})}),e.jsx("section",{id:"how-it-works",className:"bg-watercolor",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-16",children:[e.jsxs("div",{className:"text-center mb-12",children:[e.jsx("span",{className:"pill-e
1yebrow",children:"How it works"}),e.jsx("h2",{className:"display-lg mt-3",children:"How do you get my store visible again?"})]}),e.jsx("div",{className:"grid md:grid-cols-2 gap-5",children:[{n:1,t:"Scan your site (free, 60 seconds)",b:"Enter your URL above. We run 120 checks covering Google SEO, E-E-A-T freshness signals and AI search visibility (ChatGPT, Perplexity, AI Overviews, Claude), and give you an instant score."},{n:2,t:"Get your full report (free)",b:"Register with your name and email to unlock your full branded PDF report. Every issue, what to fix, what to prioritise."},{n:3,t:`Launch Fix (${A} once-off)`,b:"We fix every red item from your report within 10 business days, then re-run the scan so you can see the improvement. Includes 1 month of Visibility SaaS free."},{n:4,t:`Stay visible from ${s}/month`,b:"Visibility SaaS is self-serve: monthly re-scans, dashboard, rank tracking, backlink alerts and 2 expert articles a month. Prefer we run the whole SEO function? Managed SEO Starter and Growth add ongoing technical work, 4–8 articles a month and a dedicated SEO manager."}].map(t=>e.jsxs("div",{className:"rounded-2xl bg-card border border-border p-7 shadow-sm flex gap-5",children:[e.jsx("div",{className:"grid h-12 w-12 place-items-center rounded-full bg-coral text-white font-extrabold shrink-0",children:t.n}),e.jsxs("div",{children:[e.jsx("div",{className:"font-extrabold text-lg",children:t.t}),e.jsx("p",{className:"mt-2 text-sm text-muted-foreground",children:t.b})]})]},t.n))})]})}),e.jsx("section",{className:"bg-cream",children:e.jsxs("div",{className:"mx-auto max-w-5xl px-4 py-16",children:[e.jsxs("div",{className:"text-center mb-10",children:[e.jsx("span",{className:"pill-eyebrow",children:"Stores we've helped"}),e.jsx("h2",{className:"display-lg mt-3",children:"Real results, real stores."})]}),e.jsx("div",{className:"grid md:grid-cols-3 gap-5",children:[{q:"Within 6 weeks our organic traffic doubled. The plain-English report made it easy to see exactly what was wrong.",a:"— Shopify store owner"},{q:"I'd been told for years I needed 'SEO'. SalesCollab actually showed me what to fix and just did it.",a:"— WooCommerce founder"},{q:"We went from page 4 to page 1 for our main product category in three months.",a:"— Online retailer"}].map((t,l)=>e.jsxs("div",{className:"rounded-2xl bg-card border border-border p-7 shadow-sm",children:[e.jsx("div",{className:"text-cyan text-3xl font-serif",children:'"'}),e.jsx("p",{className:"mt-1 text-sm leading-relaxed",children:t.q}),e.jsx("div",{className:"mt-4 text-xs uppercase tracking-widest text-muted-foreground font-bold",children:t.a})]},l))})]})}),e.jsx("section",{className:"bg-watercolor",children:e.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-16",children:[e.jsxs("div",{className:"text-center mb-8",children:[e.jsx("span",{className:"pill-eyebrow",children:"Frequently asked"}),e.jsx("h2",{className:"display-lg mt-3",children:"Questions about SEO and AI search, answered."})]}),e.jsx("div",{className:"space-y-3",children:ne.map(t=>e.jsxs("details",{className:"rounded-xl bg-card border border-border p-5 shadow-sm group",children:[e.jsxs("summary",{className:"cursor-pointer font-semibold flex items-center justify-between gap-4 min-h-11",children:[e.jsx("h3",{className:"text-base font-semibold",children:t.q}),e.jsx("span",{className:"text-cyan transition-transform group-open:rotate-45 text-xl leading-none",children:"+"})]}),e.jsx("p",{className:"mt-3 text-sm text-muted-foreground",children:t.a})]},t.q))}),e.jsxs("div",{className:"mt-8 text-center text-sm",children:[e.jsx(N,{to:"/insights",className:"font-semibold text-navy underline underline-offset-4 hover:text-cyan",children:"Read the full insights & guides library"}),e.jsxs("p",{className:"mt-4 text-xs text-muted-foreground",children:["Last updated ",e.jsx("time",{dateTime:ce,children:le})," · Reviewed by SalesCollab Marketing"]})]})]})}),e.jsx("section",{className:"bg-navy-signature text-white",children:e.jsxs("div",{className:"mx-auto max-w-3xl px-4 py-16 text-center",children:[e.jsx(Q,{size:36,className:"mx-auto text-cyan"}),e.jsx("h2",{className:"display-lg mt-4",children:"Stop losing customers — on Google and in AI search."}),e.jsx("p",{className:"mt-3 text-white/80",children:"Start with a free scan. See what's wrong on both fronts. Fix it once and for all."}),e.jsxs("a",{href:"#top",onClick:t=>{t.preventDefault(),window.scrollTo({top:0,behavior:"smooth"})},className:"mt-7 inline-flex items-center gap-2 rounded-full bg-coral px-6 py-3.5 font-semibold shadow hover:opacity-90",children:["Scan My Site Free ",e.jsx(C,{size:16})]})]})})]})]})}export{Qe as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.