{"id":29,"date":"2026-08-06T21:22:22","date_gmt":"2026-08-06T16:22:22","guid":{"rendered":"https:\/\/lifetimedealhq.com\/?page_id=29"},"modified":"2026-08-07T01:00:01","modified_gmt":"2026-08-06T20:00:01","slug":"seo-tools-lifetime-deals","status":"publish","type":"page","link":"https:\/\/lifetimedealhq.com\/best\/seo-tools-lifetime-deals\/","title":{"rendered":"Best SEO Tool Lifetime Deals (2026): 9 Tested, 2 We&#8217;d Skip"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">There are nine SEO lifetime deals live on AppSumo right now that are worth a serious look. Two of them break even in under a month. Two of them sell you a plan materially smaller than the vendor&#8217;s own entry-level subscription, and the marketplace listing does not tell you that. This page separates the two groups.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Affiliate disclosure: the buy links on this page are affiliate links. If you purchase through them we earn a commission at no extra cost to you. It does not change our verdicts \u2014 two of the fifteen deals we cover carry Skip verdicts, and we still publish them. See our <a href=\"\/affiliate-disclosure\/\">affiliate disclosure<\/a> and <a href=\"\/how-we-test\/\">how we test<\/a>.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">All figures on this page were verified on <strong>6 August 2026<\/strong> against AppSumo&#8217;s product-page JSON-LD and, where the vendor&#8217;s pricing page rendered, against the vendor&#8217;s own published prices. Where a vendor&#8217;s pricing could not be verified, this page says UNKNOWN rather than guessing. We do not cite LTD aggregator sites \u2014 every aggregator figure we checked was stale or wrong.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The comparison table<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead><tr><th>Tool<\/th><th>T1 price<\/th><th>AppSumo rating (reviews)<\/th><th>Our verdict<\/th><th>Break-even<\/th><\/tr><\/thead>\n<tbody>\n<tr><td><a href=\"\/reviews\/respona-lifetime-deal\/\">Respona<\/a><\/td><td>$79<\/td><td>5.00\u2605 (11)<\/td><td>Buy<\/td><td>Under 1 month vs $198\/mo Starter<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/labrika-lifetime-deal\/\">Labrika<\/a><\/td><td>$68<\/td><td>4.76\u2605 (157)<\/td><td>Buy<\/td><td>UNKNOWN \u2014 vendor pricing did not render<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/writerzen-lifetime-deal\/\">WriterZen<\/a><\/td><td>$79<\/td><td>4.64\u2605 (271)<\/td><td>Buy<\/td><td>Not applicable \u2014 vendor sells lifetime at $135, not a subscription<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/multilipi-lifetime-deal\/\">MultiLipi<\/a><\/td><td>$79<\/td><td>4.66\u2605 (50)<\/td><td>Buy<\/td><td>2\u20134 months vs $19\u2013$49\/mo<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/clickrank-lifetime-deal\/\">ClickRank<\/a><\/td><td>$89<\/td><td>4.55\u2605 (481)<\/td><td>Consider<\/td><td>~1.5 months vs $59\/mo Solo \u2014 but a quarter of the crawl allowance<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/screpy-lifetime-deal\/\">Screpy<\/a><\/td><td>$59<\/td><td>4.62\u2605 (908)<\/td><td>Consider<\/td><td>~9 months vs $77\/yr Pro; ~4 months vs $182\/yr Max<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/snowseo-lifetime-deal\/\">SnowSEO<\/a><\/td><td>$79<\/td><td>4.69\u2605 (26)<\/td><td>Consider<\/td><td>~2 months vs $39\/mo Starter \u2014 but a sixth of the credits<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/zerorank-ai-lifetime-deal\/\">ZeroRank AI<\/a><\/td><td>$69<\/td><td>4.97\u2605 (37)<\/td><td>Consider<\/td><td>Under 1 month vs $76\/mo Starter \u2014 but T1 is tracking-only<\/td><\/tr>\n<tr><td><a href=\"\/reviews\/backlink-monitor-lifetime-deal\/\">Backlink Monitor<\/a><\/td><td>$69<\/td><td>4.63\u2605 (30)<\/td><td>Consider<\/td><td>UNKNOWN \u2014 vendor pricing not independently verified<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ratings and review counts from AppSumo product-page JSON-LD, 6 August 2026. Prices are tier-1 codes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to read this page<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every verdict here rests on one calculation and one judgement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The calculation is break-even: LTD price divided by the vendor&#8217;s real monthly price, which gives the number of months you would have to keep using the tool before the deal pays for itself. If that number is under six, the deal has a margin of safety. If it is over twelve, you are betting on a small software company still being here in a year. Our full method is in <a href=\"\/guides\/how-to-evaluate-a-lifetime-deal\/\">how to evaluate a lifetime deal<\/a>, and every review on this site links to it from inside its break-even section.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The judgement is whether the lifetime tier is the same product as the subscription it is being compared against. Usually it is not. This is the single most common way LTD marketplaces mislead, and it is not lying exactly \u2014 the tier limits are printed on the page. They are just printed a long way from the struck-through price. Three of the nine deals below have a tier-1 allowance materially below the vendor&#8217;s cheapest paid plan.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The four we&#8217;d buy<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Respona \u2014 $79, 5.00\u2605 (11 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Respona does blogger outreach and link building end to end: it finds opportunities, discovers contact emails, and runs personalised sequences from your own inboxes rather than a shared sending pool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The economics are the best on this list by a wide margin. AppSumo&#8217;s tier 1 is $79. Respona&#8217;s own published DIY pricing is Starter $198\/mo, Pro $495\/mo, Unlimited $799\/mo (annual). The $79 code pays for itself in under a month against Starter. Nothing else in the set is close.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tier 1 gives you 2 email accounts, 1,000 credits per month plus 5,000 bonus credits, and 30,000 active contacts. Tier 3 at $399 unlocks unlimited email accounts, workspaces, users and campaigns.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The honest caveats: the rating is 5.00\u2605 but it is drawn from <strong>11 reviews<\/strong>. That is a small sample and you should treat it as such \u2014 an average from eleven people tells you far less than Screpy&#8217;s average from 908. AppSumo reviewers also flag a steep learning curve for beginners and contact-accuracy problems, meaning wrong or stale email addresses. If you have never run an outreach campaign, the tool will not teach you how.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> anyone already doing outreach manually who wants to stop paying $198\/mo for the privilege. <strong>Skip if:<\/strong> you have no link-building process to automate. A tool does not create one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/respona-lifetime-deal\/\">Full Respona review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Labrika \u2014 $68, 4.76\u2605 (157 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Labrika crawls a site and returns 200+ prioritised ranking-factor issues with page-level fixes, plus rank tracking and an AI writer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reason this is a Buy despite an unverifiable break-even is the tier structure: <strong>all three tiers include unlimited websites<\/strong>. They differ only by crawl credits (10,000 \/ 20,000 \/ 30,000 pages per month) and rank checks (500 \/ 1,000 \/ 1,500 per month). Codes stack to three. For anyone running more than one site \u2014 and most of our readers do \u2014 a $68 entry with no site cap is unusual and genuinely valuable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Be clear about what we could not verify. Labrika&#8217;s pricing pages at labrika.com\/pricing and \/prices both failed to return figures when we checked. AppSumo shows struck-through values of $228 \/ $456 \/ $684, and we could not confirm those against the vendor. So the break-even is <strong>UNKNOWN<\/strong>. We are recommending this on the strength of the tier structure and a 4.76\u2605 average across 157 reviews (140 of them five-taco), not on a discount percentage we cannot check.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers consistently mention a dated interface, friction with data integrations, and requests for higher credit allowances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> consultants and small agencies auditing multiple client sites. <strong>Skip if:<\/strong> interface polish matters to you more than data coverage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/labrika-lifetime-deal\/\">Full Labrika review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">WriterZen \u2014 $79, 4.64\u2605 (271 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WriterZen chains keyword research, topic clustering, an NLP content optimiser and a plagiarism checker into one sequential workflow.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This one requires you to throw out the usual arithmetic. AppSumo shows a struck-through &#8220;$1,035&#8221;. <strong>WriterZen does not sell subscriptions.<\/strong> Its own site sells lifetime access directly at $135 \/ $270 \/ $405. So the honest comparison is not $79 against a recurring bill \u2014 it is $79 on AppSumo against $135 direct from the vendor. That is a real saving of $56 on the entry tier, and it is a completely different kind of decision from the others on this page. There is no break-even in months because there is no monthly cost to break even against.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One code gives 50 keyword lookups\/day, 50 topic lookups\/day, 50 articles\/mo, 25,000 words checked\/day, 5,000 AI words\/mo and 2 seats. The premium features \u2014 domain focus, golden filter, revenue forecasting \u2014 unlock at <strong>two codes<\/strong>, which is worth knowing before you buy one and feel short-changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers flag limited team management, shallow analysis for advanced SEOs, and interface complexity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> solo content people who want keyword research and content optimisation in one place and would rather own than rent. <strong>Skip if:<\/strong> you need agency-grade team management, or you specifically want the premium filters \u2014 then budget for two codes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/writerzen-lifetime-deal\/\">Full WriterZen review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">MultiLipi \u2014 $79, 4.66\u2605 (50 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MultiLipi translates a site into 120+ languages and serves them as crawlable, hreflang-tagged localised URLs rather than client-side text swaps. For an SEO audience that distinction is the entire point \u2014 client-side translation does not get you indexed international pages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tier 1 is $79 for 100,000 AI words, 4 languages, 10,000 requests\/mo and 3 projects. The vendor sells Starter at $19\/mo (100k words, 2 languages) and Business at $49\/mo (250k words, 4 languages), with annual billing 20% off. Tier 1 sits between the two, which puts break-even at roughly two to four months depending on which plan you would otherwise have bought. That is a healthy margin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The caveat matters for this audience specifically: alongside the usual complaints about translation accuracy and technical glitches, <strong>multiple prospective buyers raised site-speed concerns in the AppSumo Q&amp;A<\/strong>. If you are buying an SEO tool, a page-weight regression is not a minor side effect. Test it on a staging site before you roll it out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> a site with proven demand in a second language and a real reason to have indexable localised URLs. <strong>Skip if:<\/strong> you are translating speculatively. Four languages of thin translated content is four times the thin content.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/multilipi-lifetime-deal\/\">Full MultiLipi review \u2192<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The five to consider carefully<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are not bad tools. Each has a specific condition attached, and if the condition does not apply to you the deal is fine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ClickRank \u2014 $89, 4.55\u2605 (481 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ClickRank auto-applies on-page optimisations \u2014 titles, metas, alt text, schema, content edits \u2014 aimed at AI answer engines as well as Google. It has the second-largest review base in our set at 481, averaging 4.55\u2605.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The arithmetic looks great and the fine print undoes it. Tier 1 is $89 for 1 site, 1 user and a <strong>500-page crawl<\/strong>. ClickRank&#8217;s own Solo plan is $59\/mo ($590\/yr) with a <strong>2,000-page crawl<\/strong>. Break-even on price alone is about a month and a half. But you are buying a quarter of the crawl allowance. If your site is under 500 pages, that is irrelevant and the deal is strong. If it is over, you are comparing two different products.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tiers scale linearly: $178 for 2 sites \/ 1,000 pages, $267 for 5 sites \/ 2,500, $356 for 8 sites \/ 5,000. Optimisations are unlimited at every tier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers criticise the keyword research as weak against established competitors and note limited multilingual support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> a single site under 500 pages. <strong>Skip if:<\/strong> you are over the crawl cap, or you expected this to replace a keyword research tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/clickrank-lifetime-deal\/\">Full ClickRank review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Screpy \u2014 $59, 4.62\u2605 (908 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Screpy runs Lighthouse-based technical and performance audits, uptime and SEO monitoring, and rank tracking. With <strong>908 reviews<\/strong> it has by far the strongest evidence base of anything on this page, and 4.62\u2605 across that many buyers is a meaningful number in a way that 4.97\u2605 across 37 is not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The tier structure is generous: <strong>all tiers include unlimited websites and unlimited team members<\/strong>, differing only by monthly credits (8,000 \/ 16,000 \/ 24,000).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is the discrepancy we have to flag. AppSumo shows a regular price of <strong>$204<\/strong>. Screpy&#8217;s own pricing page sells Pro at $6\/mo or <strong>$77\/year<\/strong>, Max at $15\/mo or $182\/year, and Ultra at $30\/mo or $355\/year. Against Pro, the $59 code takes about nine months to break even. Against Max, about four. Neither number resembles the discount the marketplace listing implies. The tool is good; the framing is not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note also that a <strong>Plus-exclusive variant exists at $89 \/ $178 \/ $267<\/strong>, so what you see may depend on your AppSumo membership.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers report occasional bugs and repeatedly ask for PDF reporting, which is still missing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> agencies who want unlimited site monitoring for a flat one-time cost. <strong>Skip if:<\/strong> you would otherwise have bought Pro at $77\/yr. Nine months is a long exposure to a small vendor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/screpy-lifetime-deal\/\">Full Screpy review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SnowSEO \u2014 $79, 4.69\u2605 (26 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">An all-in-one: keyword research, site audit, rank tracking, AI article generation with CMS publishing, and AI-citation monitoring across ChatGPT, Perplexity and Gemini.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>This deal ends 3 September 2026 at 23:59 CT<\/strong>, per AppSumo&#8217;s own availabilityEnds field. If you are reading this after that date it is gone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tier 1 at $79 gives 1 seat, 1 brand, <strong>500 AI credits\/mo<\/strong>, 50 tracked keywords, 250 keyword lookups, 5 articles\/mo, and ChatGPT only \u2014 Claude and Gemini monitoring start at tier 3. The vendor&#8217;s Starter plan is $39\/mo with <strong>3,000 credits<\/strong>. So break-even is about two months on price, and you are getting a sixth of the credit allowance. Reviewers already complain about credit burn rate; 500 credits will not go far.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tiers run $79 \/ $159 \/ $269 \/ $469 \/ $689 \/ $999.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> someone who wants AI-citation monitoring cheaply and can live inside 500 credits. <strong>Skip if:<\/strong> you intend to use the article generation seriously. Five articles a month at tier 1, and reviewers question the output quality.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/snowseo-lifetime-deal\/\">Full SnowSEO review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ZeroRank AI \u2014 $69, 4.97\u2605 (37 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ZeroRank tracks how often your brand gets cited in AI assistant answers, benchmarks you against competitors, and issues fix recommendations. At 4.97\u2605 it is the highest-rated tool in our set \u2014 across 37 reviews, which is a small enough sample to say out loud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tier 1 is $69 for unlimited prompts but <strong>180 answers\/month, 1 workspace, and no content credits<\/strong>. The vendor&#8217;s Starter is $76\/mo, or $89\/mo billed annually; Pro is $169\/mo. On price alone the $69 code pays back in under a month against Starter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But tiers 1 and 2 are <strong>tracking-only<\/strong>. Content credits \u2014 the part that helps you act on what the tracking tells you \u2014 start at tier 3, $299. If you want the full loop, $299 is the honest entry point, not $69. Tiers run $69 \/ $159 \/ $299 \/ $499 \/ $799 \/ $1,199 \/ $1,699, with API, white-label and BYOK access higher up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers mention noisy brand auto-detection that needs manual cleanup, and citation export limits.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> measuring AI-search visibility you currently cannot see at all. At $69 that is cheap information. <strong>Skip if:<\/strong> you expected the tool to fix the problem it measures. That is tier 3.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/zerorank-ai-lifetime-deal\/\">Full ZeroRank AI review \u2192<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Backlink Monitor \u2014 $69, 4.63\u2605 (30 reviews)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Watches backlinks you have acquired and alerts you when one is removed, its anchor text changes, its rel attribute changes, or it gets de-indexed. That is a genuinely useful and genuinely boring job, and it is the kind of thing worth owning rather than renting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The plan ladder is ten linear steps from $69 to $690, and the first step is the problem. <strong>Plan 1 is 250 links and 5 domains. Plan 2, at $138, is 2,500 links and 20 domains.<\/strong> Doubling the price gets you ten times the capacity. Plan 3 is $207 for 4,000 links and 35 domains; Plan 4 is $276 for 6,500 and 60; the top plan is $690 for 9,500 links.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plan 1 is disproportionately weak. Most buyers should start at Plan 2 or not buy at all.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We could not verify the vendor&#8217;s own pricing. AppSumo states a regular annual value of $1,449\u2013$9,500, which we have not independently confirmed, so the break-even here is <strong>UNKNOWN<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reviewers report a clunky interface and slow support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Best for:<\/strong> anyone with an established link profile worth defending, buying at Plan 2. <strong>Skip if:<\/strong> you have fewer than 250 links worth monitoring \u2014 a spreadsheet does this.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"\/reviews\/backlink-monitor-lifetime-deal\/\">Full Backlink Monitor review \u2192<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The three we excluded, and why<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most roundups in this niche list everything currently live, because more listings means more affiliate links. We left three deals out. The reasons are the point.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>iGEO \u2014 $69 tier 1, 4.00\u2605 from 2 reviews, launched 3 August 2026.<\/strong> Two reviews is not an evidence base. It is two opinions. We have no way to distinguish a good product from a product whose first two buyers happened to be happy, and neither do you. Tier 1 also allows only 10 prompts per month. We will revisit it when there is something to review.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>GrackerAI \u2014 $69 tier 1.<\/strong> AppSumo&#8217;s structured data reports <strong>1.80\u2605 from 5 reviews<\/strong>. AppSumo&#8217;s rendered page says &#8220;No reviews yet.&#8221; Those two things cannot both be true, and we could not resolve which is correct. Publishing either number would mean publishing a rating we cannot stand behind \u2014 and a 1.80\u2605 average is a serious claim to make about someone&#8217;s business on the strength of a data inconsistency. So we publish neither. The deal ends 21 August 2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Blazly GEO &amp; SEO \u2014 $79 tier 1, 4.55\u2605 from 31 reviews.<\/strong> This one is <strong>AppSumo Plus\u2013exclusive<\/strong>. It may well be a decent deal. Most readers of this page cannot buy it, and recommending a purchase that requires a paid membership to access is a recommendation to buy the membership. We are not doing that sideways.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The one that got away: SiteGuru<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you were here two months ago, the answer to &#8220;which SEO lifetime deal should I buy&#8221; was easier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SiteGuru&#8217;s deal ended <strong>21 July 2026<\/strong>. It carried <strong>4.95\u2605 across 517 reviews<\/strong> \u2014 the best-rated SEO tool in AppSumo&#8217;s entire catalogue, and one of very few deals anywhere with both a near-perfect average and a sample size large enough to trust it. Nothing currently live matches that combination. Labrika at 4.76\u2605\/157 is the closest on evidence quality; Screpy has the volume at 908 reviews but a lower average.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We mention it for two reasons. First, so you do not waste an afternoon chasing an expired listing that aggregator sites are still showing as live \u2014 several are. Second, because it is the clearest illustration of how this market works: the genuinely good deals go, and they do not come back. That argues for buying decisively when the maths works, and it argues against buying something mediocre because you feel you should buy something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also confirmed ended and not buyable, regardless of what you may read elsewhere: Ranklytics, RanksPro, RankAtom, KeywordGap, and More Traffic Less Content.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What none of these tools replace<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A stack of the deals above will handle site auditing, keyword research, rank tracking, outreach and link monitoring. It will not replace Semrush or Ahrefs, and any page telling you otherwise is selling something. The gap is backlink index depth, historical data, and competitive intelligence at scale \u2014 infrastructure that costs millions of dollars a year to maintain and cannot be sold once for $79.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">We have written that out honestly in two places: <a href=\"\/alternatives\/semrush-alternative-lifetime-deal\/\">Semrush alternatives on a lifetime deal budget<\/a> and <a href=\"\/alternatives\/ahrefs-alternative-lifetime-deal\/\">Ahrefs alternatives on a lifetime deal budget<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Before you buy any of these<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Three things, in order.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Check the vendor&#8217;s pricing page yourself.<\/strong> Not AppSumo&#8217;s struck-through number. Screpy&#8217;s listing implies a $204 regular price against a vendor plan that costs $77 a year. That gap is not unusual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Read the tier limits before the tier price.<\/strong> ClickRank&#8217;s 500 pages against Solo&#8217;s 2,000, SnowSEO&#8217;s 500 credits against Starter&#8217;s 3,000. The limits are where the real price lives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Decide what you lose if the vendor disappears.<\/strong> &#8220;Lifetime&#8221; means the product&#8217;s life, not yours. Six tools in this category have already gone dark this year. What happens to your data, and how you spot a vendor likely to fold, is covered in <a href=\"\/guides\/what-happens-when-a-lifetime-deal-shuts-down\/\">what happens when a lifetime deal shuts down<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AppSumo&#8217;s 60-day refund window is your real protection, and it is short. Buy, install, and actually use the thing inside week one \u2014 not week nine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are here for WordPress plugins rather than SEO platforms, the companion page is <a href=\"\/best\/wordpress-plugin-lifetime-deals\/\">Best WordPress Plugin Lifetime Deals (2026)<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Last verified: 6 August 2026. Ratings, review counts and tier pricing checked against AppSumo product-page JSON-LD on that date; vendor pricing checked against vendors&#8217; own pricing pages where they rendered. Deal status changes without notice \u2014 verify before buying.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nine SEO lifetime deals on AppSumo, each with break-even maths against real vendor pricing, plus the three we refused to cover and why.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":15,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","_kad_blocks_custom_css":"\/* ==========================================================================\n   Lifetime Deal HQ \u2014 design system\n   Single-file theme layer for Kadence. No external requests, no build step.\n\n   Design intent: this is a publication people consult before spending money.\n   It should feel closer to a trade journal than to a deal blog. That means\n   restraint: one accent colour, a serif for headings, generous measure,\n   hairline rules instead of shadows, and semantic colour used sparingly and\n   only where it carries meaning.\n   ========================================================================== *\/\n\n\/* --------------------------------------------------------------------------\n   1. COLOUR\n   Kadence maps its palette roughly as: 1\u20133 accent, 4\u20136 text (dark\u2192light),\n   7\u20138 borders and tinted backgrounds, 9 page background. Overriding these\n   restyles the header, nav, footer, buttons and links in one move, so the\n   theme chrome and the article body stay in the same system.\n\n   Accent is a deep desaturated navy rather than a bright blue: it reads as\n   institutional rather than promotional, and it stays legible at small sizes.\n\n   Semantic verdict colours are deliberately low-chroma. Skip is a muted\n   oxblood, not a warning red \u2014 a Skip verdict is a considered editorial\n   judgment, and it should look as deliberate as a Buy. All three are AA or\n   better on white at body size (measured ratios in comments below).\n   -------------------------------------------------------------------------- *\/\n\n:root{\n  \/* Kadence global palette overrides *\/\n  --global-palette1:#17395a;   \/* accent \u2014 deep navy *\/\n  --global-palette2:#22507c;   \/* accent hover *\/\n  --global-palette3:#12283d;   \/* accent deep \/ wordmark *\/\n  --global-palette4:#14181d;   \/* headings *\/\n  --global-palette5:#2b3138;   \/* body text *\/\n  --global-palette6:#5b636e;   \/* muted text *\/\n  --global-palette7:#e3e6ea;   \/* hairline borders *\/\n  --global-palette8:#f5f6f8;   \/* tinted surface *\/\n  --global-palette9:#ffffff;   \/* page background *\/\n\n  \/* Semantic \u2014 verdicts *\/\n  --ldhq-buy:#12674a;          \/* 5.9:1 on white *\/\n  --ldhq-buy-bg:#e9f3ee;\n  --ldhq-buy-line:#bcd9cb;\n  --ldhq-consider:#7a5209;     \/* 6.1:1 on white *\/\n  --ldhq-consider-bg:#faf2e2;\n  --ldhq-consider-line:#e3d3ae;\n  --ldhq-skip:#8a3b3b;         \/* 6.5:1 on white \u2014 oxblood, not alarm red *\/\n  --ldhq-skip-bg:#f7eeee;\n  --ldhq-skip-line:#e0c8c8;\n\n  \/* Neutrals, aliased for the custom components *\/\n  --ldhq-accent:var(--global-palette1);\n  --ldhq-ink:var(--global-palette4);\n  --ldhq-body:var(--global-palette5);\n  --ldhq-muted:var(--global-palette6);\n  --ldhq-line:var(--global-palette7);\n  --ldhq-surface:var(--global-palette8);\n  --ldhq-paper:#ffffff;\n\n  \/* Elevation \u2014 one step only, and it is nearly invisible on purpose *\/\n  --ldhq-raise:0 1px 2px rgba(20,24,29,.05), 0 1px 1px rgba(20,24,29,.04);\n\n  \/* Radius \u2014 small and consistent. Nothing is a pill. *\/\n  --ldhq-r:6px;\n  --ldhq-r-lg:10px;\n\n  \/* Layout *\/\n  --global-content-width:1160px;\n  --global-content-narrow-width:748px;\n  --ldhq-measure:68ch;\n\n  \/* Typography: system stacks only, so no third-party font requests.\n     Serif headings + sans body is the editorial signal here. *\/\n  --global-heading-font-family:ui-serif,Georgia,Cambria,\"Times New Roman\",Times,serif;\n  --global-body-font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;\n  --ldhq-mono:ui-monospace,SFMono-Regular,\"SF Mono\",Menlo,Consolas,monospace;\n\n  \/* Modular scale, 1.25, base 17px *\/\n  --global-font-size-small:.8235rem;\n  --global-font-size-medium:1rem;\n  --global-font-size-large:1.375rem;\n  --global-font-size-larger:1.75rem;\n  --global-font-size-xxlarge:2.5rem;\n}\n\nhtml{ font-size:17px; -webkit-text-size-adjust:100%; }\n@media (max-width:600px){ html{ font-size:16px; } }\n\nbody{\n  font-family:var(--global-body-font-family);\n  color:var(--ldhq-body);\n  background:var(--ldhq-paper);\n  -webkit-font-smoothing:antialiased;\n  text-rendering:optimizeLegibility;\n}\n\n\/* --------------------------------------------------------------------------\n   2. HEADER + NAVIGATION\n   -------------------------------------------------------------------------- *\/\n\n.site-header{\n  background:var(--ldhq-paper);\n  border-bottom:1px solid var(--ldhq-line);\n}\n.site-header-wrap{ padding-block:.35rem; }\n\n\/* Wordmark \u2014 serif, tight, with the \"HQ\" held back so it reads as a masthead *\/\n.site-branding .site-title,\n.site-branding a.brand{\n  font-family:var(--global-heading-font-family);\n  font-weight:700;\n  font-size:1.4rem;\n  letter-spacing:-.02em;\n  color:var(--global-palette3);\n  text-decoration:none;\n}\n.site-branding .site-title:hover{ color:var(--global-palette1); }\n.site-branding .site-description{\n  font-size:.78rem;\n  color:var(--ldhq-muted);\n  letter-spacing:.005em;\n}\n\n.header-navigation .menu > li > a,\n.primary-menu-container .menu > li > a{\n  font-size:.855rem;\n  font-weight:550;\n  letter-spacing:.015em;\n  color:var(--global-palette5);\n  padding-inline:.85rem;\n}\n.header-navigation .menu > li > a:hover,\n.header-navigation .menu > li.current-menu-item > a{\n  color:var(--global-palette1);\n}\n\/* Current page gets a rule, not a colour-only cue *\/\n.header-navigation .menu > li.current-menu-item > a{\n  box-shadow:inset 0 -2px 0 0 var(--global-palette1);\n}\n\n@media (min-width:1025px){\n  .site-header{ position:sticky; top:0; z-index:60; }\n  .admin-bar .site-header{ top:32px; }\n}\n\n\/* --------------------------------------------------------------------------\n   3. LONG-FORM ARTICLE\n   Measure, rhythm and link treatment for 2,000\u20134,000 word reviews.\n   -------------------------------------------------------------------------- *\/\n\n.entry-content{\n  font-size:1.0625rem;\n  line-height:1.7;\n  color:var(--ldhq-body);\n}\n.entry-content > p,\n.entry-content > ul,\n.entry-content > ol,\n.entry-content > h2,\n.entry-content > h3,\n.entry-content > h4,\n.entry-content > blockquote{ max-width:var(--ldhq-measure); }\n\n.entry-content p{ margin:0 0 1.3em; }\n.entry-content > *:first-child{ margin-top:0; }\n\n.entry-content h1,\n.entry-content h2,\n.entry-content h3,\n.entry-content h4,\n.entry-title{\n  font-family:var(--global-heading-font-family);\n  color:var(--ldhq-ink);\n  letter-spacing:-.015em;\n  text-wrap:balance;\n}\n.entry-title{ font-size:clamp(1.95rem,4vw,2.7rem); line-height:1.18; font-weight:700; margin-bottom:.5em; }\n.entry-content h2{\n  font-size:1.6rem; line-height:1.28; font-weight:700;\n  margin:2.7em 0 .55em; padding-top:1.4rem; border-top:1px solid var(--ldhq-line);\n}\n.entry-content h3{ font-size:1.24rem; line-height:1.35; font-weight:700; margin:2.1em 0 .45em; }\n.entry-content h4{ font-size:1.06rem; line-height:1.4; font-weight:700; margin:1.8em 0 .4em; }\n.entry-content h2 + p, .entry-content h3 + p, .entry-content h4 + p{ margin-top:0; }\n\/* A heading immediately after the verdict box shouldn't get a second rule *\/\n.ldhq-verdict + h2, .ldhq-cta + h2{ border-top:0; padding-top:0; }\n\n.entry-content a{\n  color:var(--global-palette1);\n  text-decoration:underline;\n  text-decoration-thickness:1px;\n  text-underline-offset:.16em;\n  text-decoration-color:rgba(23,57,90,.35);\n}\n.entry-content a:hover{ text-decoration-color:currentColor; }\n\n.entry-content ul, .entry-content ol{ margin:0 0 1.3em; padding-left:1.35em; }\n.entry-content li{ margin-bottom:.5em; padding-left:.15em; }\n.entry-content li::marker{ color:var(--ldhq-muted); }\n\n.entry-content strong{ color:var(--ldhq-ink); font-weight:650; }\n.entry-content code{\n  font-family:var(--ldhq-mono); font-size:.9em;\n  background:var(--ldhq-surface); border:1px solid var(--ldhq-line);\n  border-radius:4px; padding:.1em .35em;\n}\n.entry-content hr,\n.entry-content .wp-block-separator{\n  border:0; border-top:1px solid var(--ldhq-line);\n  margin:2.6rem 0; max-width:var(--ldhq-measure); opacity:1;\n}\n\n\/* --------------------------------------------------------------------------\n   4. VERDICT BOX \u2014 the signature component\n   -------------------------------------------------------------------------- *\/\n\n.entry-content .ldhq-verdict{\n  max-width:var(--ldhq-measure);\n  margin:0 0 2.2rem;\n  padding:1.35rem 1.5rem;\n  background:var(--ldhq-surface);\n  border:1px solid var(--ldhq-line);\n  border-left:3px solid var(--global-palette1);\n  border-radius:var(--ldhq-r-lg);\n  font-style:normal;\n  quotes:none;\n}\n.entry-content .ldhq-verdict::before,\n.entry-content .ldhq-verdict::after{ content:none; }\n.entry-content .ldhq-verdict p{ margin-bottom:.8em; font-size:1rem; }\n.entry-content .ldhq-verdict p:last-child{ margin-bottom:0; }\n.entry-content .ldhq-verdict p:first-child{\n  font-family:var(--global-heading-font-family);\n  font-size:1.3rem; line-height:1.3; font-weight:700;\n  color:var(--ldhq-ink); margin-bottom:.55em; letter-spacing:-.01em;\n}\n.entry-content .ldhq-verdict p:first-child strong{ font-weight:700; }\n\/* trailing \"how we reach a verdict\" line *\/\n.entry-content .ldhq-verdict p:last-child{ font-size:.895rem; color:var(--ldhq-muted); }\n\n\/* --------------------------------------------------------------------------\n   5. VERDICT BADGES\n   Colour is never the only signal \u2014 each badge carries its own word.\n   -------------------------------------------------------------------------- *\/\n\n.ldhq-badge{\n  display:inline-block; padding:.16em .6em;\n  border-radius:4px; border:1px solid transparent;\n  font-size:.78rem; font-weight:700; letter-spacing:.025em;\n  text-transform:uppercase; white-space:nowrap; line-height:1.5;\n}\n.ldhq-buy{ color:var(--ldhq-buy); background:var(--ldhq-buy-bg); border-color:var(--ldhq-buy-line); }\n.ldhq-consider{ color:var(--ldhq-consider); background:var(--ldhq-consider-bg); border-color:var(--ldhq-consider-line); }\n.ldhq-skip{ color:var(--ldhq-skip); background:var(--ldhq-skip-bg); border-color:var(--ldhq-skip-line); }\n\n\/* --------------------------------------------------------------------------\n   6. TABLES \u2014 spec tables, tier tables, and the 15-row verdict table\n   Must never break the layout on a 360px phone.\n   -------------------------------------------------------------------------- *\/\n\n.entry-content .wp-block-table{\n  margin:1.9rem 0 2.2rem;\n  max-width:100%;\n  overflow-x:auto;\n  -webkit-overflow-scrolling:touch;\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r-lg);\n}\n.entry-content .wp-block-table table{\n  width:100%; border-collapse:collapse; font-size:.965rem; margin:0;\n  border:0;\n}\n.entry-content .wp-block-table th{\n  background:var(--ldhq-surface);\n  text-align:left; font-weight:650; color:var(--ldhq-ink);\n  font-size:.83rem; letter-spacing:.03em; text-transform:uppercase;\n  padding:.72rem .95rem; border-bottom:1px solid var(--ldhq-line);\n  white-space:nowrap;\n}\n.entry-content .wp-block-table td{\n  padding:.72rem .95rem; border-bottom:1px solid var(--ldhq-line);\n  vertical-align:top; line-height:1.55;\n}\n.entry-content .wp-block-table tr:last-child td{ border-bottom:0; }\n.entry-content .wp-block-table tbody tr:hover{ background:#fafbfc; }\n\n\/* Two-column \"At a glance\" spec tables read better with a label column *\/\n.entry-content .wp-block-table td:first-child{ color:var(--ldhq-ink); font-weight:600; }\n.entry-content .wp-block-table thead ~ tbody td:first-child{ font-weight:400; color:inherit; }\n\n\/* Homepage verdict table: keep all four columns readable, scroll if needed *\/\n.ldhq-verdict-table table{ min-width:520px; }\n.ldhq-verdict-table td:nth-child(2),\n.ldhq-verdict-table td:nth-child(4),\n.ldhq-verdict-table th:nth-child(2),\n.ldhq-verdict-table th:nth-child(4){ white-space:nowrap; }\n.ldhq-verdict-table td:first-child{ font-weight:600; }\n.ldhq-verdict-table td:first-child a{ text-decoration:none; }\n.ldhq-verdict-table td:first-child a:hover{ text-decoration:underline; }\n\n@media (max-width:600px){\n  .entry-content .wp-block-table table{ font-size:.9rem; }\n  .entry-content .wp-block-table th,\n  .entry-content .wp-block-table td{ padding:.6rem .7rem; }\n  \/* a subtle cue that the table scrolls *\/\n  .entry-content .wp-block-table{\n    background:\n      linear-gradient(to right,var(--ldhq-paper) 30%,rgba(255,255,255,0)),\n      linear-gradient(to left,var(--ldhq-paper) 30%,rgba(255,255,255,0)) 100% 0;\n    background-repeat:no-repeat; background-size:28px 100%; background-attachment:local,local;\n  }\n}\n\n\/* --------------------------------------------------------------------------\n   7. SCREENSHOT FIGURE\n   These are our own dated captures \u2014 the caption is evidence, so it is\n   styled as a credit line rather than decoration.\n   -------------------------------------------------------------------------- *\/\n\n.entry-content .wp-block-image{ margin:2rem 0 2.3rem; }\n.entry-content .wp-block-image img{\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r-lg);\n  display:block; height:auto; max-width:100%;\n}\n.entry-content .wp-block-image figcaption,\n.entry-content .wp-element-caption{\n  margin-top:.6rem; padding-left:.9rem;\n  border-left:2px solid var(--ldhq-line);\n  font-size:.865rem; line-height:1.55; color:var(--ldhq-muted); text-align:left;\n}\n\n\/* --------------------------------------------------------------------------\n   8. CTA CARD\n   Present, but never louder than the verdict above it.\n   -------------------------------------------------------------------------- *\/\n\n.ldhq-cta{\n  max-width:var(--ldhq-measure);\n  margin:2.1rem 0 2.4rem;\n  padding:1.25rem 1.4rem;\n  background:var(--ldhq-paper);\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r-lg);\n  box-shadow:var(--ldhq-raise);\n}\n.ldhq-cta .ldhq-cta-meta{\n  margin:0 0 .8rem; font-size:.98rem; color:var(--ldhq-ink);\n}\n.ldhq-cta .wp-block-buttons{ margin:0 0 .75rem; }\n.ldhq-cta p:last-child{ margin:0; font-size:.86rem; line-height:1.55; color:var(--ldhq-muted); }\n\n\/* Skip CTA is quieter \u2014 we are not asking anyone to buy *\/\n.ldhq-cta.is-skip{ background:var(--ldhq-surface); box-shadow:none; }\n\n\/* --------------------------------------------------------------------------\n   9. BUTTONS\n   -------------------------------------------------------------------------- *\/\n\n.entry-content .wp-block-button__link,\n.wp-element-button{\n  background:var(--global-palette1);\n  border:1px solid var(--global-palette1);\n  color:#fff;\n  border-radius:var(--ldhq-r);\n  font-size:.99rem; font-weight:600; letter-spacing:.005em;\n  padding:.72em 1.35em;\n  text-decoration:none;\n  transition:background-color .15s ease, border-color .15s ease;\n}\n.entry-content .wp-block-button__link:hover,\n.wp-element-button:hover{ background:var(--global-palette2); border-color:var(--global-palette2); color:#fff; }\n\n.entry-content .is-style-outline .wp-block-button__link{\n  background:transparent; color:var(--global-palette1); border:1px solid var(--ldhq-line);\n}\n.entry-content .is-style-outline .wp-block-button__link:hover{\n  background:var(--ldhq-surface); border-color:var(--global-palette1); color:var(--global-palette1);\n}\n.ldhq-cta.is-skip .wp-block-button__link{\n  background:transparent; color:var(--global-palette5);\n  border:1px solid var(--ldhq-line); font-weight:600;\n}\n.ldhq-cta.is-skip .wp-block-button__link:hover{\n  background:var(--ldhq-paper); border-color:var(--global-palette6); color:var(--ldhq-ink);\n}\n\n\/* --------------------------------------------------------------------------\n   10. HOMEPAGE\n   -------------------------------------------------------------------------- *\/\n\n.ldhq-hero{\n  padding:2.6rem 0 2.2rem;\n  margin-bottom:2.4rem;\n  border-bottom:1px solid var(--ldhq-line);\n}\n.ldhq-hero h1{\n  font-size:clamp(2rem,4.6vw,3.05rem);\n  line-height:1.13; letter-spacing:-.028em; font-weight:700;\n  margin:0 0 .45em; max-width:26ch; color:var(--ldhq-ink);\n}\n.ldhq-hero p{\n  font-size:1.16rem; line-height:1.62; color:var(--global-palette6);\n  max-width:60ch; margin-bottom:1.7em;\n}\n.ldhq-hero .wp-block-buttons{ gap:.7rem; }\n\n\/* Card grids \u2014 \"how this is different\" and \"start here\" *\/\n.entry-content .wp-block-columns{ gap:1.4rem; margin:1.6rem 0 2.6rem; }\n.entry-content .wp-block-column{\n  background:var(--ldhq-paper);\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r-lg);\n  padding:1.3rem 1.4rem;\n}\n.entry-content .wp-block-column > *:first-child{ margin-top:0; }\n.entry-content .wp-block-column h3{\n  margin:0 0 .5rem; font-size:1.09rem; line-height:1.35; border-top:0; padding-top:0;\n}\n.entry-content .wp-block-column h3 a{ text-decoration:none; }\n.entry-content .wp-block-column h3 a:hover{ text-decoration:underline; }\n.entry-content .wp-block-column p{ margin:0; font-size:.965rem; color:var(--global-palette6); }\n@media (max-width:781px){\n  .entry-content .wp-block-columns{ gap:1rem; }\n}\n\n\/* Disclosure strip *\/\n.ldhq-disclose{\n  margin:3rem 0 0;\n  padding:1.05rem 1.25rem;\n  background:var(--ldhq-surface);\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r);\n}\n.ldhq-disclose p{ margin:0; font-size:.885rem; line-height:1.6; color:var(--ldhq-muted); max-width:none; }\n\n\/* --------------------------------------------------------------------------\n   11. SECTION ARCHIVE LISTINGS (\/reviews\/, \/best\/, \/guides\/)\n   -------------------------------------------------------------------------- *\/\n\n.wp-block-query .wp-block-post-template{ margin:1.6rem 0 0; padding:0; list-style:none; }\n.wp-block-query .wp-block-post-template > li{\n  border-top:1px solid var(--ldhq-line);\n  padding:1.35rem 0;\n  margin:0;\n}\n.wp-block-query .wp-block-post-title{\n  font-family:var(--global-heading-font-family);\n  font-size:1.2rem; line-height:1.35; font-weight:700; margin:0 0 .35rem;\n}\n.wp-block-query .wp-block-post-title a{ color:var(--ldhq-ink); text-decoration:none; }\n.wp-block-query .wp-block-post-title a:hover{ color:var(--global-palette1); text-decoration:underline; }\n.wp-block-query .wp-block-post-excerpt{\n  margin:0; font-size:.975rem; line-height:1.6; color:var(--global-palette6); max-width:var(--ldhq-measure);\n}\n.wp-block-query .wp-block-post-excerpt__more-text{ display:none; }\n\n\/* --------------------------------------------------------------------------\n   12. FOOTER\n   -------------------------------------------------------------------------- *\/\n\n.site-footer{\n  border-top:1px solid var(--ldhq-line);\n  background:var(--ldhq-surface);\n  margin-top:4rem;\n}\n.site-footer,\n.site-footer p,\n.site-footer li{ font-size:.9rem; color:var(--ldhq-muted); line-height:1.65; }\n.site-footer a{ color:var(--global-palette5); text-decoration:none; }\n.site-footer a:hover{ color:var(--global-palette1); text-decoration:underline; }\n.site-footer .widget-title,\n.site-footer h2, .site-footer h3{\n  font-family:var(--global-body-font-family);\n  font-size:.79rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;\n  color:var(--ldhq-ink); margin-bottom:.7rem;\n}\n.site-footer .menu{ list-style:none; margin:0; padding:0; }\n.site-footer .menu li{ margin-bottom:.35rem; }\n\n\/* --------------------------------------------------------------------------\n   13. ACCESSIBILITY\n   -------------------------------------------------------------------------- *\/\n\na:focus-visible,\nbutton:focus-visible,\ninput:focus-visible,\ntextarea:focus-visible,\nselect:focus-visible,\n[tabindex]:focus-visible{\n  outline:2px solid var(--global-palette1);\n  outline-offset:2px;\n  border-radius:2px;\n}\n\/* Never remove focus without replacing it *\/\na:focus:not(:focus-visible){ outline:none; }\n\n\/* Tap targets on small screens *\/\n@media (max-width:781px){\n  .header-navigation .menu > li > a,\n  .site-footer .menu li a{ display:block; padding-block:.6rem; min-height:44px; line-height:1.6; }\n  .entry-content .wp-block-button__link{ min-height:44px; display:inline-flex; align-items:center; }\n}\n\n\/* Skip link *\/\n.skip-link:focus{\n  background:var(--global-palette1); color:#fff;\n  padding:.7rem 1.1rem; border-radius:0 0 var(--ldhq-r) 0; z-index:1000;\n}\n\n@media (prefers-reduced-motion:reduce){\n  *,*::before,*::after{\n    animation-duration:.001ms !important; animation-iteration-count:1 !important;\n    transition-duration:.001ms !important; scroll-behavior:auto !important;\n  }\n}\n\n\/* --------------------------------------------------------------------------\n   14. MOBILE REFINEMENTS (down to 360px)\n   -------------------------------------------------------------------------- *\/\n\n@media (max-width:600px){\n  .ldhq-hero{ padding:1.9rem 0 1.6rem; margin-bottom:1.8rem; }\n  .ldhq-hero h1{ max-width:none; }\n  .ldhq-hero p{ font-size:1.06rem; }\n  .entry-content .ldhq-verdict{ padding:1.1rem 1.15rem; border-radius:var(--ldhq-r); }\n  .entry-content .ldhq-verdict p:first-child{ font-size:1.16rem; }\n  .ldhq-cta{ padding:1.05rem 1.1rem; border-radius:var(--ldhq-r); }\n  .entry-content .wp-block-column{ padding:1.05rem 1.15rem; }\n  .entry-content h2{ font-size:1.42rem; margin-top:2.2em; }\n  .entry-content h3{ font-size:1.15rem; }\n  .entry-content .wp-block-image figcaption{ font-size:.83rem; }\n}\n\n\/* --------------------------------------------------------------------------\n   15. PRINT\n   Reviews get printed and emailed around. Make that version useful:\n   drop the chrome, keep the evidence, expose link targets.\n   -------------------------------------------------------------------------- *\/\n\n@media print{\n  .site-header, .site-footer, .ldhq-cta, .header-navigation,\n  #wpadminbar, .skip-link{ display:none !important; }\n  body{ font-size:11pt; color:#000; background:#fff; }\n  .entry-content{ font-size:11pt; line-height:1.5; }\n  .entry-content > *{ max-width:none; }\n  .entry-content h2{ border-top:1px solid #999; page-break-after:avoid; }\n  .entry-content h3, .entry-content h4{ page-break-after:avoid; }\n  .entry-content .ldhq-verdict{\n    background:#fff; border:1px solid #000; border-left-width:3px; page-break-inside:avoid;\n  }\n  .entry-content .wp-block-table{ page-break-inside:avoid; border:1px solid #000; }\n  .entry-content .wp-block-table th{ background:#eee !important; -webkit-print-color-adjust:exact; }\n  .entry-content .wp-block-image{ page-break-inside:avoid; }\n  .entry-content a{ color:#000; text-decoration:underline; }\n  .entry-content a[href^=\"http\"]::after{\n    content:\" (\" attr(href) \")\"; font-size:9pt; color:#444; word-break:break-all;\n  }\n  .ldhq-badge{ border:1px solid #000; color:#000 !important; background:#fff !important; }\n}\n\n\/* --------------------------------------------------------------------------\n   16. PAGE TITLE HERO (Kadence .entry-hero)\n   Kadence renders the page H1 in a hero band above the content. On the\n   homepage that duplicates the wordmark AND creates a second H1, so it is\n   removed there \u2014 the hero block in the content supplies the H1. Everywhere\n   else it IS the article headline, so it is restyled as a masthead: white,\n   left-aligned, hairline rule, no grey slab.\n   -------------------------------------------------------------------------- *\/\n\n.home .entry-hero.page-hero-section{ display:none; }\n\n.entry-hero.page-hero-section{\n  background-color:var(--ldhq-paper) !important;\n  border-bottom:1px solid var(--ldhq-line);\n  padding:0;\n}\n.entry-hero .hero-section-overlay{ display:none; }\n.entry-hero .entry-hero-container-inner{\n  background:transparent !important;\n  min-height:0 !important;\n}\n.entry-hero .hero-container{ padding-block:2.5rem 1.9rem; }\n.entry-hero .entry-header{ text-align:left !important; }\n.entry-hero .entry-title{\n  font-family:var(--global-heading-font-family);\n  font-size:clamp(1.85rem,3.8vw,2.65rem);\n  line-height:1.16;\n  letter-spacing:-.025em;\n  font-weight:700;\n  color:var(--ldhq-ink);\n  margin:0;\n  max-width:24ch;\n  text-wrap:balance;\n}\n.entry-hero .kadence-breadcrumbs{\n  font-size:.83rem; color:var(--ldhq-muted); margin-bottom:.75rem;\n}\n.entry-hero .kadence-breadcrumbs a{ color:var(--ldhq-muted); text-decoration:none; }\n.entry-hero .kadence-breadcrumbs a:hover{ color:var(--global-palette1); text-decoration:underline; }\n\n\/* Content sits closer to its headline than Kadence's default *\/\n.content-area{ padding-top:2.2rem; }\n.home .content-area{ padding-top:0; }\n\n@media (max-width:600px){\n  .entry-hero .hero-container{ padding-block:1.7rem 1.3rem; }\n  .entry-hero .entry-title{ max-width:none; }\n  .content-area{ padding-top:1.5rem; }\n}\n\n\/* --------------------------------------------------------------------------\n   17. RULE COLLISIONS\n   The hero already ends in a rule, h2 opens with one, and a block separator\n   can sit between them. Three hairlines in a row reads as a mistake, so\n   adjacent rules collapse to one.\n   -------------------------------------------------------------------------- *\/\n\n.ldhq-hero + .wp-block-separator,\n.ldhq-hero + hr{ display:none; }\n\n.entry-content .wp-block-separator + h2,\n.entry-content hr + h2{ border-top:0; padding-top:0; margin-top:.6em; }\n\n.entry-content > h2:first-child{ border-top:0; padding-top:0; margin-top:0; }\n\n\/* Separator matches the reading measure so it lines up with the text above it *\/\n.entry-content .wp-block-separator{ width:100%; }\n\n\/* Kadence centres the hero header from a couple of levels up; override both *\/\n.entry-hero-container-inner,\n.entry-hero .hero-container,\n.entry-hero .entry-header,\n.entry-hero .entry-header .entry-title,\n.entry-hero .kadence-breadcrumbs{ text-align:left !important; }\n.entry-hero .entry-header{ margin-inline:0 !important; max-width:none !important; }\n\n.content-area{ padding-top:1.6rem; }\n@media (max-width:600px){ .content-area{ padding-top:1.2rem; } }\n\n\n\/* ==========================================================================\n   19. RICHER SURFACES\n   ========================================================================== *\/\n\n\/* Cards lift very slightly on hover \u2014 enough to read as interactive,\n   not enough to look like a marketing page. *\/\n.entry-content .wp-block-column{\n  transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;\n}\n.entry-content .wp-block-column:hover{\n  border-color:#cfd6de;\n  box-shadow:var(--ldhq-raise);\n  transform:translateY(-1px);\n}\n\/* A hairline accent along the top of each card *\/\n.entry-content .wp-block-columns .wp-block-column{\n  background-image:linear-gradient(to right,var(--global-palette1),var(--global-palette1));\n  background-repeat:no-repeat;\n  background-size:38px 2px;\n  background-position:1.4rem 0;\n}\n\n\/* Stat band \u2014 three numbers that carry the site's whole promise *\/\n.ldhq-stats{\n  display:flex; flex-wrap:wrap; gap:0;\n  margin:2.4rem 0 2.8rem;\n  border:1px solid var(--ldhq-line);\n  border-radius:var(--ldhq-r-lg);\n  background:var(--ldhq-surface);\n  overflow:hidden;\n}\n.ldhq-stats > .wp-block-column,\n.ldhq-stats .wp-block-column{\n  flex:1 1 0; min-width:160px;\n  background:transparent !important; border:0 !important; border-radius:0 !important;\n  background-image:none !important;\n  padding:1.35rem 1.5rem;\n  border-right:1px solid var(--ldhq-line) !important;\n}\n.ldhq-stats .wp-block-column:last-child{ border-right:0 !important; }\n.ldhq-stats .wp-block-column:hover{ transform:none; box-shadow:none; border-color:var(--ldhq-line); }\n.ldhq-stats h3{\n  font-family:var(--global-heading-font-family);\n  font-size:2.05rem !important; line-height:1.05; font-weight:700;\n  color:var(--global-palette1); margin:0 0 .2rem !important; letter-spacing:-.02em;\n}\n.ldhq-stats p{ font-size:.9rem !important; line-height:1.5; color:var(--ldhq-muted) !important; }\n@media (max-width:600px){\n  .ldhq-stats{ flex-direction:column; }\n  .ldhq-stats .wp-block-column{ border-right:0 !important; border-bottom:1px solid var(--ldhq-line) !important; }\n  .ldhq-stats .wp-block-column:last-child{ border-bottom:0 !important; }\n  .ldhq-stats h3{ font-size:1.75rem !important; }\n}\n\n\/* Pull quote \/ callout for guides *\/\n.ldhq-note{\n  margin:2rem 0; padding:1.15rem 1.35rem;\n  border:1px solid var(--ldhq-line); border-left:3px solid var(--global-palette6);\n  border-radius:var(--ldhq-r); background:var(--ldhq-paper);\n}\n.ldhq-note p{ margin:0; font-size:.99rem; color:var(--ldhq-body); }\n\n\/* Section index listings get a numbered rail *\/\n.wp-block-query .wp-block-post-template{ counter-reset:ldhq; }\n.wp-block-query .wp-block-post-template > li{ counter-increment:ldhq; position:relative; padding-left:2.6rem; }\n.wp-block-query .wp-block-post-template > li::before{\n  content:counter(ldhq,decimal-leading-zero);\n  position:absolute; left:0; top:1.5rem;\n  font-family:var(--ldhq-mono); font-size:.78rem; letter-spacing:.04em;\n  color:var(--ldhq-muted);\n}\n@media (max-width:600px){\n  .wp-block-query .wp-block-post-template > li{ padding-left:2.1rem; }\n}\n\n\/* Screenshot figures get a soft mat so they read as evidence exhibits *\/\n.entry-content .wp-block-image{\n  background:var(--ldhq-surface);\n  border-radius:var(--ldhq-r-lg);\n  padding:.75rem;\n}\n.entry-content .wp-block-image img{ border-radius:6px; }\n.entry-content .wp-block-image figcaption{ margin:.75rem .25rem .15rem; }\n\n\/* CTA gains a left accent so it reads as an action, not a note *\/\n.ldhq-cta{ border-left:3px solid var(--global-palette1); }\n.ldhq-cta.is-skip{ border-left-color:var(--global-palette6); }\n\n\/* --------------------------------------------------------------------------\n   20. HERO CONTAINER ALIGNMENT\n   Kadence renders the page-title hero in a narrower centred container than\n   the article body, which made headlines sit indented relative to the\n   wordmark and the text below. Align both to the same measure.\n   -------------------------------------------------------------------------- *\/\n\n.entry-hero .hero-container{\n  max-width:var(--global-content-width) !important;\n  width:100% !important;\n  margin-inline:auto !important;\n  padding-inline:var(--global-content-edge-padding,1.5rem) !important;\n}\n.entry-hero .entry-header{ width:100%; }\n.entry-hero .entry-title{ max-width:30ch; }\n\n\/* Banner artwork needs the hero tall enough to show it *\/\n.entry-hero.page-hero-section{ min-height:0; }\n@media (min-width:821px){\n  .entry-hero .hero-container{ min-height:190px; display:flex; flex-direction:column; justify-content:center; }\n}\n\n\/* Headline must sit on the same left edge as the body text below it *\/\n.entry-hero .entry-header,\n.entry-hero .entry-header > *{ padding-inline:0 !important; margin-inline:0 !important; }\n.entry-hero .kadence-breadcrumbs{ padding-inline:0 !important; }\n\n\/* ==========================================================================\n   18. HERO IMAGE \u2014 one graphic, used everywhere\n   A single hand-drawn SVG (about 2KB, inlined, no HTTP request) carries the\n   site's whole argument: bars of unequal height measured against a dashed\n   break-even threshold. Using one image on every hero rather than a\n   different picture per section is what makes the site feel like one\n   publication instead of a collection of landing pages.\n   ========================================================================== *\/\n\n.home .ldhq-hero,\n.entry-hero.page-hero-section{\n  background-image:url(\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20520%22%20width%3D%221200%22%20height%3D%22520%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22fade%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%220%22%3E%3Cstop%20offset%3D%220.30%22%20stop-color%3D%22%23000000%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%220.62%22%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%221%22%2F%3E%3C%2FlinearGradient%3E%3Cmask%20id%3D%22m%22%3E%3Crect%20width%3D%221200%22%20height%3D%22520%22%20fill%3D%22url(%23fade)%22%2F%3E%3C%2Fmask%3E%3C%2Fdefs%3E%3Cg%20mask%3D%22url(%23m)%22%3E%3Cg%20stroke%3D%22%2317395a%22%20stroke-opacity%3D%220.10%22%20stroke-width%3D%221%22%3E%3Cpath%20d%3D%22M0%20130H1200M0%20260H1200M0%20390H1200%22%2F%3E%3Cpath%20d%3D%22M760%200V520M880%200V520M1000%200V520M1120%200V520%22%2F%3E%3C%2Fg%3E%3Cg%3E%3Crect%20x%3D%22720%22%20y%3D%22300%22%20width%3D%2256%22%20height%3D%22130%22%20fill%3D%22%2317395a%22%20opacity%3D%220.12%22%2F%3E%3Crect%20x%3D%22800%22%20y%3D%22240%22%20width%3D%2256%22%20height%3D%22190%22%20fill%3D%22%2317395a%22%20opacity%3D%220.18%22%2F%3E%3Crect%20x%3D%22880%22%20y%3D%22170%22%20width%3D%2256%22%20height%3D%22260%22%20fill%3D%22%2317395a%22%20opacity%3D%220.26%22%2F%3E%3Crect%20x%3D%22960%22%20y%3D%22270%22%20width%3D%2256%22%20height%3D%22160%22%20fill%3D%22%2312674a%22%20opacity%3D%220.30%22%2F%3E%3Crect%20x%3D%221040%22%20y%3D%22330%22%20width%3D%2256%22%20height%3D%22100%22%20fill%3D%22%238a3b3b%22%20opacity%3D%220.26%22%2F%3E%3C%2Fg%3E%3Cpath%20d%3D%22M700%20430H1130%22%20stroke%3D%22%2317395a%22%20stroke-opacity%3D%220.30%22%20stroke-width%3D%221.5%22%2F%3E%3Cpath%20d%3D%22M700%20262H1130%22%20stroke%3D%22%2317395a%22%20stroke-opacity%3D%220.38%22%20stroke-width%3D%221.5%22%20stroke-dasharray%3D%225%205%22%2F%3E%3Ccircle%20cx%3D%221130%22%20cy%3D%22262%22%20r%3D%223.5%22%20fill%3D%22%2317395a%22%20fill-opacity%3D%220.5%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\") !important;\n  background-repeat:no-repeat !important;\n  background-position:right center !important;\n}\n\n\/* Homepage: the image gets room to breathe *\/\n.home .ldhq-hero{\n  position:relative;\n  padding:3.4rem 0 2.8rem;\n  border-bottom:1px solid var(--ldhq-line);\n  background-size:auto 100% !important;\n}\n.home .ldhq-hero > *{ position:relative; z-index:1; }\n\n\/* Every other page: same image, quieter, sitting behind the headline *\/\n.entry-hero.page-hero-section{\n  background-size:auto 150% !important;\n  background-position:right -30px center !important;\n}\n\n@media (max-width:1100px){\n  .home .ldhq-hero{ background-size:auto 80% !important; background-position:right -70px center !important; }\n  .entry-hero.page-hero-section{ background-size:auto 120% !important; }\n}\n@media (max-width:820px){\n  .home .ldhq-hero,\n  .entry-hero.page-hero-section{ background-image:none !important; }\n  .home .ldhq-hero{ padding:2.1rem 0 1.7rem; }\n}\n\n\n\/* --------------------------------------------------------------------------\n   21. LOGO\n   The wordmark is now an image, so the text styling in section 2 no longer\n   applies. Constrain it and keep the header compact.\n   -------------------------------------------------------------------------- *\/\n\n.site-branding .custom-logo-link img,\n.site-branding img.custom-logo{\n  max-height:52px; width:auto; height:auto; display:block;\n}\n@media (max-width:781px){\n  .site-branding .custom-logo-link img,\n  .site-branding img.custom-logo{ max-height:40px; }\n}\n.site-branding{ padding-block:.35rem; }\n\/* If both logo and site title render, hide the duplicate text title *\/\n.site-branding .custom-logo-link + .site-title-wrap .site-title{ display:none; }\n\n\/* Hero image sits further right on inner pages so it never crowds the headline *\/\n.entry-hero.page-hero-section{\n  background-size:auto 118% !important;\n  background-position:right -80px center !important;\n}\n@media (max-width:1240px){\n  .entry-hero.page-hero-section{ background-size:auto 105% !important; background-position:right -140px center !important; }\n}\n\n\/* The logo carries the name, so the text title beside it is a duplicate *\/\n.site-branding .site-title,\n.site-branding .site-title-wrap .site-title{ display:none !important; }\n.site-branding .custom-logo-link{ display:block; }\n\n\/* Final hero image placement: the whole graphic sits inside the band, with\n   the break-even dot visible at its right edge rather than cropped off. *\/\n.entry-hero.page-hero-section{\n  background-size:auto 96% !important;\n  background-position:right 1.5rem center !important;\n}\n@media (max-width:1240px){\n  .entry-hero.page-hero-section{ background-size:auto 86% !important; background-position:right -20px center !important; }\n}\n.home .ldhq-hero{ background-position:right 0 center !important; }\n\n\n\/* ==========================================================================\n   22. HERO \u2014 alignment, density, and page identity\n   Three problems this fixes:\n   (a) Kadence renders .entry-header as a centred flex container, which\n       overrode every text-align rule and pushed short titles to the middle.\n   (b) The band was 275px tall for a 52px headline \u2014 mostly dead space.\n   (c) Every page looked identical above the fold. Each page type now\n       announces itself with an eyebrow label, so a reader landing from\n       search immediately knows what kind of page they are on.\n   ========================================================================== *\/\n\n.entry-hero .entry-header{\n  display:block !important;\n  align-items:flex-start !important;\n  justify-content:flex-start !important;\n  text-align:left !important;\n}\n\n@media (min-width:821px){\n  .entry-hero .hero-container{ min-height:0 !important; display:block !important; }\n  .entry-hero .hero-container{ padding-block:2.1rem 1.9rem !important; }\n}\n@media (max-width:820px){\n  .entry-hero .hero-container{ padding-block:1.5rem 1.3rem !important; }\n}\n.entry-hero .entry-title{ max-width:22ch; }\n\n\/* ---- Eyebrow labels ---- *\/\n.entry-hero .entry-title::before{\n  display:block;\n  font-family:var(--global-body-font-family);\n  font-size:.72rem;\n  font-weight:700;\n  letter-spacing:.14em;\n  text-transform:uppercase;\n  color:var(--global-palette1);\n  margin-bottom:.55rem;\n}\n.page-id-32 .entry-hero .entry-title::before,\n.page-id-33 .entry-hero .entry-title::before,\n.page-id-38 .entry-hero .entry-title::before,\n.page-id-35 .entry-hero .entry-title::before,\n.page-id-40 .entry-hero .entry-title::before,\n.page-id-45 .entry-hero .entry-title::before,\n.page-id-44 .entry-hero .entry-title::before,\n.page-id-37 .entry-hero .entry-title::before,\n.page-id-31 .entry-hero .entry-title::before,\n.page-id-36 .entry-hero .entry-title::before,\n.page-id-41 .entry-hero .entry-title::before,\n.page-id-34 .entry-hero .entry-title::before,\n.page-id-39 .entry-hero .entry-title::before,\n.page-id-43 .entry-hero .entry-title::before,\n.page-id-42 .entry-hero .entry-title::before{ content:\"Review\"; }\n.page-id-30 .entry-hero .entry-title::before,\n.page-id-29 .entry-hero .entry-title::before{ content:\"Shortlist\"; }\n.page-id-28 .entry-hero .entry-title::before,\n.page-id-27 .entry-hero .entry-title::before,\n.page-id-26 .entry-hero .entry-title::before{ content:\"Comparison\"; }\n.page-id-25 .entry-hero .entry-title::before,\n.page-id-24 .entry-hero .entry-title::before{ content:\"Guide\"; }\n.page-id-14 .entry-hero .entry-title::before,\n.page-id-15 .entry-hero .entry-title::before,\n.page-id-16 .entry-hero .entry-title::before,\n.page-id-17 .entry-hero .entry-title::before{ content:\"Index\"; }\n.page-id-21 .entry-hero .entry-title::before,\n.page-id-20 .entry-hero .entry-title::before,\n.page-id-18 .entry-hero .entry-title::before,\n.page-id-22 .entry-hero .entry-title::before,\n.page-id-19 .entry-hero .entry-title::before,\n.page-id-3 .entry-hero .entry-title::before{ content:\"About this site\"; color:var(--ldhq-muted); }\n\n\/* ==========================================================================\n   23. SECTION INDEX PAGES\n   These were a thin numbered list on a mostly empty page. They are now a\n   card grid \u2014 the same treatment as the homepage cards, so the site reads\n   as one system.\n   ========================================================================== *\/\n\n.page-id-14 .wp-block-query .wp-block-post-template,\n.page-id-15 .wp-block-query .wp-block-post-template,\n.page-id-16 .wp-block-query .wp-block-post-template,\n.page-id-17 .wp-block-query .wp-block-post-template{\n  display:grid !important;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:1.1rem;\n  margin:1.8rem 0 0 !important;\n  padding:0;\n  list-style:none;\n  counter-reset:ldhq;\n}\n.page-id-14 .wp-block-query .wp-block-post-template > li,\n.page-id-15 .wp-block-query .wp-block-post-template > li,\n.page-id-16 .wp-block-query .wp-block-post-template > li,\n.page-id-17 .wp-block-query .wp-block-post-template > li{\n  counter-increment:ldhq;\n  position:relative;\n  border:1px solid var(--ldhq-line) !important;\n  border-top:1px solid var(--ldhq-line) !important;\n  border-radius:var(--ldhq-r-lg);\n  background:var(--ldhq-paper);\n  padding:1.25rem 1.35rem 1.3rem !important;\n  margin:0 !important;\n  transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease;\n  background-image:linear-gradient(to right,var(--global-palette1),var(--global-palette1));\n  background-repeat:no-repeat;\n  background-size:34px 2px;\n  background-position:1.35rem 0;\n}\n.page-id-14 .wp-block-query .wp-block-post-template > li:hover,\n.page-id-15 .wp-block-query .wp-block-post-template > li:hover,\n.page-id-16 .wp-block-query .wp-block-post-template > li:hover,\n.page-id-17 .wp-block-query .wp-block-post-template > li:hover{\n  border-color:#cfd6de !important;\n  box-shadow:var(--ldhq-raise);\n  transform:translateY(-1px);\n}\n.page-id-14 .wp-block-query .wp-block-post-template > li::before,\n.page-id-15 .wp-block-query .wp-block-post-template > li::before,\n.page-id-16 .wp-block-query .wp-block-post-template > li::before,\n.page-id-17 .wp-block-query .wp-block-post-template > li::before{\n  content:counter(ldhq,decimal-leading-zero);\n  position:static;\n  display:block;\n  font-family:var(--ldhq-mono);\n  font-size:.72rem;\n  letter-spacing:.08em;\n  color:var(--ldhq-muted);\n  margin-bottom:.5rem;\n}\n.page-id-14 .wp-block-query .wp-block-post-title,\n.page-id-15 .wp-block-query .wp-block-post-title,\n.page-id-16 .wp-block-query .wp-block-post-title,\n.page-id-17 .wp-block-query .wp-block-post-title{\n  font-size:1.1rem !important;\n  line-height:1.32;\n  margin:0 0 .4rem !important;\n}\n.page-id-14 .wp-block-query .wp-block-post-excerpt,\n.page-id-15 .wp-block-query .wp-block-post-excerpt,\n.page-id-16 .wp-block-query .wp-block-post-excerpt,\n.page-id-17 .wp-block-query .wp-block-post-excerpt{\n  font-size:.94rem !important;\n  line-height:1.55;\n  margin:0 !important;\n}\n@media (max-width:900px){\n.page-id-14 .wp-block-query .wp-block-post-template,\n.page-id-15 .wp-block-query .wp-block-post-template,\n.page-id-16 .wp-block-query .wp-block-post-template,\n.page-id-17 .wp-block-query .wp-block-post-template{ grid-template-columns:1fr; }\n}\n\n\/* Index pages: intro paragraph reads as a standfirst, not body copy *\/\n.page-id-14 .entry-content > p:first-of-type,\n.page-id-15 .entry-content > p:first-of-type,\n.page-id-16 .entry-content > p:first-of-type,\n.page-id-17 .entry-content > p:first-of-type{\n  font-size:1.14rem;\n  line-height:1.6;\n  color:var(--global-palette6);\n  max-width:62ch;\n  margin-bottom:.4rem;\n}\n\n\/* --------------------------------------------------------------------------\n   24. VERTICAL DENSITY\n   Two Kadence defaults were producing a lot of dead space above the fold:\n   a 200px min-height on the hero header, and an 85px margin on the content\n   area. Measured, not guessed.\n   -------------------------------------------------------------------------- *\/\n\n.entry-hero .entry-header{ min-height:0 !important; }\n.entry-hero .hero-container{ padding-block:2.2rem 2rem !important; }\n\n.content-area{ margin-top:2.4rem !important; margin-bottom:3.4rem !important; padding-top:0 !important; }\n.home .content-area{ margin-top:0 !important; }\n.entry-content-wrap{ padding-block:0 !important; }\n\n@media (max-width:820px){\n  .entry-hero .hero-container{ padding-block:1.6rem 1.4rem !important; }\n  .content-area{ margin-top:1.6rem !important; margin-bottom:2.4rem !important; }\n}\n\n\/* Index pages: the standfirst sits right under the rule, then the grid *\/\n.wp-block-query{ margin-top:1.4rem; }\n\n\n\/* ==========================================================================\n   25. HERO VARIANTS \u2014 a different treatment per page type\n   Colour here is information, not decoration. A review's hero is tinted by\n   its verdict, so a reader arriving from search sees the answer before they\n   read a word: green for Buy, amber for Consider, oxblood for Skip. The two\n   shortlists get an inverted navy hero because they are the destination\n   pages the whole site points at. Guides, comparisons, indexes and the\n   about-pages each get their own tint so no two page types look alike.\n   ========================================================================== *\/\n\n\/* ---- Base: every hero keeps a top accent rule in its own colour ---- *\/\n.entry-hero.page-hero-section{ position:relative; }\n.entry-hero.page-hero-section::before{\n  content:\"\"; position:absolute; inset:0 0 auto 0; height:3px;\n  background:var(--global-palette1);\n}\n\n\/* ---- REVIEWS: tinted by verdict ---- *\/\n.page-id-41.page .entry-hero.page-hero-section,\n.page-id-37.page .entry-hero.page-hero-section,\n.page-id-44.page .entry-hero.page-hero-section,\n.page-id-35.page .entry-hero.page-hero-section,\n.page-id-36.page .entry-hero.page-hero-section,\n.page-id-34.page .entry-hero.page-hero-section{\n  background-color:#eef6f1 !important;\n  border-bottom-color:var(--ldhq-buy-line);\n}\n.page-id-41.page .entry-hero.page-hero-section::before,\n.page-id-37.page .entry-hero.page-hero-section::before,\n.page-id-44.page .entry-hero.page-hero-section::before,\n.page-id-35.page .entry-hero.page-hero-section::before,\n.page-id-36.page .entry-hero.page-hero-section::before,\n.page-id-34.page .entry-hero.page-hero-section::before{ background:var(--ldhq-buy); }\n.page-id-41.page .entry-hero .entry-title::before,\n.page-id-37.page .entry-hero .entry-title::before,\n.page-id-44.page .entry-hero .entry-title::before,\n.page-id-35.page .entry-hero .entry-title::before,\n.page-id-36.page .entry-hero .entry-title::before,\n.page-id-34.page .entry-hero .entry-title::before{ content:\"Verdict: Buy\"; color:var(--ldhq-buy); }\n\n.page-id-45.page .entry-hero.page-hero-section,\n.page-id-33.page .entry-hero.page-hero-section,\n.page-id-38.page .entry-hero.page-hero-section,\n.page-id-31.page .entry-hero.page-hero-section,\n.page-id-43.page .entry-hero.page-hero-section,\n.page-id-40.page .entry-hero.page-hero-section,\n.page-id-39.page .entry-hero.page-hero-section{\n  background-color:#fdf7ec !important;\n  border-bottom-color:var(--ldhq-consider-line);\n}\n.page-id-45.page .entry-hero.page-hero-section::before,\n.page-id-33.page .entry-hero.page-hero-section::before,\n.page-id-38.page .entry-hero.page-hero-section::before,\n.page-id-31.page .entry-hero.page-hero-section::before,\n.page-id-43.page .entry-hero.page-hero-section::before,\n.page-id-40.page .entry-hero.page-hero-section::before,\n.page-id-39.page .entry-hero.page-hero-section::before{ background:var(--ldhq-consider); }\n.page-id-45.page .entry-hero .entry-title::before,\n.page-id-33.page .entry-hero .entry-title::before,\n.page-id-38.page .entry-hero .entry-title::before,\n.page-id-31.page .entry-hero .entry-title::before,\n.page-id-43.page .entry-hero .entry-title::before,\n.page-id-40.page .entry-hero .entry-title::before,\n.page-id-39.page .entry-hero .entry-title::before{ content:\"Verdict: Consider\"; color:var(--ldhq-consider); }\n\n.page-id-32.page .entry-hero.page-hero-section,\n.page-id-42.page .entry-hero.page-hero-section{\n  background-color:#faf1f1 !important;\n  border-bottom-color:var(--ldhq-skip-line);\n}\n.page-id-32.page .entry-hero.page-hero-section::before,\n.page-id-42.page .entry-hero.page-hero-section::before{ background:var(--ldhq-skip); }\n.page-id-32.page .entry-hero .entry-title::before,\n.page-id-42.page .entry-hero .entry-title::before{ content:\"Verdict: Skip\"; color:var(--ldhq-skip); }\n\n\/* ---- SHORTLISTS: inverted navy, the boldest surface on the site ---- *\/\n.page-id-29.page .entry-hero.page-hero-section,\n.page-id-30.page .entry-hero.page-hero-section{\n  background-color:#12283d !important;\n  background-image:url(\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201200%20520%22%20width%3D%221200%22%20height%3D%22520%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22fade%22%20x1%3D%220%22%20y1%3D%220%22%20x2%3D%221%22%20y2%3D%220%22%3E%3Cstop%20offset%3D%220.30%22%20stop-color%3D%22%23000000%22%20stop-opacity%3D%220%22%2F%3E%3Cstop%20offset%3D%220.62%22%20stop-color%3D%22%23ffffff%22%20stop-opacity%3D%221%22%2F%3E%3C%2FlinearGradient%3E%3Cmask%20id%3D%22m%22%3E%3Crect%20width%3D%221200%22%20height%3D%22520%22%20fill%3D%22url(%23fade)%22%2F%3E%3C%2Fmask%3E%3C%2Fdefs%3E%3Cg%20mask%3D%22url(%23m)%22%3E%3Cg%20stroke%3D%22%23ffffff%22%20stroke-opacity%3D%220.14%22%20stroke-width%3D%221%22%3E%3Cpath%20d%3D%22M0%20130H1200M0%20260H1200M0%20390H1200%22%2F%3E%3Cpath%20d%3D%22M760%200V520M880%200V520M1000%200V520M1120%200V520%22%2F%3E%3C%2Fg%3E%3Cg%3E%3Crect%20x%3D%22720%22%20y%3D%22300%22%20width%3D%2256%22%20height%3D%22130%22%20fill%3D%22%23ffffff%22%20opacity%3D%220.18%22%2F%3E%3Crect%20x%3D%22800%22%20y%3D%22240%22%20width%3D%2256%22%20height%3D%22190%22%20fill%3D%22%23ffffff%22%20opacity%3D%220.28%22%2F%3E%3Crect%20x%3D%22880%22%20y%3D%22170%22%20width%3D%2256%22%20height%3D%22260%22%20fill%3D%22%23ffffff%22%20opacity%3D%220.45%22%2F%3E%3Crect%20x%3D%22960%22%20y%3D%22270%22%20width%3D%2256%22%20height%3D%22160%22%20fill%3D%22%236fcfa6%22%20opacity%3D%220.62%22%2F%3E%3Crect%20x%3D%221040%22%20y%3D%22330%22%20width%3D%2256%22%20height%3D%22100%22%20fill%3D%22%23e0a3a3%22%20opacity%3D%220.55%22%2F%3E%3C%2Fg%3E%3Cpath%20d%3D%22M700%20430H1130%22%20stroke%3D%22%23ffffff%22%20stroke-opacity%3D%220.42%22%20stroke-width%3D%221.5%22%2F%3E%3Cpath%20d%3D%22M700%20262H1130%22%20stroke%3D%22%23ffffff%22%20stroke-opacity%3D%220.52%22%20stroke-width%3D%221.5%22%20stroke-dasharray%3D%225%205%22%2F%3E%3Ccircle%20cx%3D%221130%22%20cy%3D%22262%22%20r%3D%223.5%22%20fill%3D%22%23ffffff%22%20fill-opacity%3D%220.75%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\") !important;\n  border-bottom-color:#12283d;\n}\n.page-id-29.page .entry-hero.page-hero-section::before,\n.page-id-30.page .entry-hero.page-hero-section::before{ background:#6fcfa6; }\n.page-id-29.page .entry-hero .entry-title,\n.page-id-30.page .entry-hero .entry-title{ color:#ffffff; }\n.page-id-29.page .entry-hero .entry-title::before,\n.page-id-30.page .entry-hero .entry-title::before{ content:\"Shortlist\"; color:#8fd9b6; }\n\n\/* ---- COMPARISONS: cool slate ---- *\/\n.page-id-28.page .entry-hero.page-hero-section,\n.page-id-27.page .entry-hero.page-hero-section,\n.page-id-26.page .entry-hero.page-hero-section{\n  background-color:#eef2f7 !important;\n  border-bottom-color:#cfd9e6;\n}\n.page-id-28.page .entry-hero.page-hero-section::before,\n.page-id-27.page .entry-hero.page-hero-section::before,\n.page-id-26.page .entry-hero.page-hero-section::before{ background:#3a6ea5; }\n.page-id-28.page .entry-hero .entry-title::before,\n.page-id-27.page .entry-hero .entry-title::before,\n.page-id-26.page .entry-hero .entry-title::before{ content:\"Comparison\"; color:#2f5c8a; }\n\n\/* ---- GUIDES: warm sand ---- *\/\n.page-id-24.page .entry-hero.page-hero-section,\n.page-id-25.page .entry-hero.page-hero-section{\n  background-color:#f8f4ec !important;\n  border-bottom-color:#e6dcc9;\n}\n.page-id-24.page .entry-hero.page-hero-section::before,\n.page-id-25.page .entry-hero.page-hero-section::before{ background:#a07a34; }\n.page-id-24.page .entry-hero .entry-title::before,\n.page-id-25.page .entry-hero .entry-title::before{ content:\"Guide\"; color:#7d5d20; }\n\n\/* ---- INDEXES: pale navy wash ---- *\/\n.page-id-14.page .entry-hero.page-hero-section,\n.page-id-15.page .entry-hero.page-hero-section,\n.page-id-16.page .entry-hero.page-hero-section,\n.page-id-17.page .entry-hero.page-hero-section{\n  background-color:#f1f4f8 !important;\n  border-bottom-color:#d8e0ea;\n}\n.page-id-14.page .entry-hero.page-hero-section::before,\n.page-id-15.page .entry-hero.page-hero-section::before,\n.page-id-16.page .entry-hero.page-hero-section::before,\n.page-id-17.page .entry-hero.page-hero-section::before{ background:var(--global-palette1); }\n.page-id-14.page .entry-hero .entry-title::before,\n.page-id-15.page .entry-hero .entry-title::before,\n.page-id-16.page .entry-hero .entry-title::before,\n.page-id-17.page .entry-hero .entry-title::before{ content:\"Index\"; color:var(--global-palette1); }\n\n\/* ---- ABOUT-THIS-SITE pages: deliberately the quietest ---- *\/\n.page-id-18.page .entry-hero.page-hero-section,\n.page-id-22.page .entry-hero.page-hero-section,\n.page-id-21.page .entry-hero.page-hero-section,\n.page-id-19.page .entry-hero.page-hero-section,\n.page-id-3.page .entry-hero.page-hero-section,\n.page-id-20.page .entry-hero.page-hero-section{\n  background-color:var(--ldhq-paper) !important;\n  background-image:none !important;\n  border-bottom-color:var(--ldhq-line);\n}\n.page-id-18.page .entry-hero.page-hero-section::before,\n.page-id-22.page .entry-hero.page-hero-section::before,\n.page-id-21.page .entry-hero.page-hero-section::before,\n.page-id-19.page .entry-hero.page-hero-section::before,\n.page-id-3.page .entry-hero.page-hero-section::before,\n.page-id-20.page .entry-hero.page-hero-section::before{ background:var(--global-palette6); }\n.page-id-18.page .entry-hero .entry-title::before,\n.page-id-22.page .entry-hero .entry-title::before,\n.page-id-21.page .entry-hero .entry-title::before,\n.page-id-19.page .entry-hero .entry-title::before,\n.page-id-3.page .entry-hero .entry-title::before,\n.page-id-20.page .entry-hero .entry-title::before{ content:\"About this site\"; color:var(--ldhq-muted); }\n\n\/* --------------------------------------------------------------------------\n   26. FOOTER SOCIAL ROW\n   The social links share the footer menu with the policy pages, so they are\n   set apart with a rule and a lighter weight rather than a separate widget.\n   -------------------------------------------------------------------------- *\/\n\n.site-footer .menu li.ldhq-social{ display:inline-block; margin-right:1.1rem; }\n.site-footer .menu li.ldhq-social a{ font-size:.85rem; color:var(--ldhq-muted); }\n.site-footer .menu li.ldhq-social a:hover{ color:var(--global-palette1); }\n.site-footer .menu li.ldhq-social:first-of-type{\n  display:block; margin-top:1rem; padding-top:.9rem;\n  border-top:1px solid var(--ldhq-line);\n}\n.site-footer .menu li.ldhq-social:first-of-type{ display:inline-block; }\n.site-footer .menu{ position:relative; }\n\n\/* \"Elsewhere\" link row on About and Contact *\/\n.entry-content h2 + p a[rel~=\"me\"]{ white-space:nowrap; }\n","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_thinkrank_schema_form_data":"","_thinkrank_selected_schema_type":"Article","_thinkrank_additional_schemas":"","_thinkrank_canonical_url":"https:\/\/lifetimedealhq.com\/best\/seo-tools-lifetime-deals\/","_thinkrank_og_title":"Best SEO Tool Lifetime Deals (2026): 9 Tested, 2 We'd Skip","_thinkrank_og_description":"Nine SEO lifetime deals on AppSumo, each with break-even maths against real vendor pricing, plus the three we refused to cover and why.","_thinkrank_og_image":"","_thinkrank_twitter_title":"Best SEO Tool Lifetime Deals (2026): 9 Tested, 2 We'd Skip","_thinkrank_twitter_description":"Nine SEO lifetime deals on AppSumo, each with break-even maths against real vendor pricing, plus the three we refused to cover and why.","_thinkrank_twitter_image":"","_thinkrank_imported_from":"","_thinkrank_focus_keywords":[],"_thinkrank_focus_keyword":"seo tools lifetime deals","_thinkrank_robots_meta_enabled":0,"_thinkrank_robots_meta":"","_thinkrank_advanced_robots_meta":"","_thinkrank_primary_category":0,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-29","page","type-page","status-publish","hentry"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Zeshan Majeed","author_link":"https:\/\/lifetimedealhq.com\/author\/zeshan-raza128gmail-com\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lifetimedealhq.com\/?rest_route=%2Fwp%2Fv2%2Fcomments&post=29"}],"version-history":[{"count":2,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/29\/revisions"}],"predecessor-version":[{"id":137,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/29\/revisions\/137"}],"up":[{"embeddable":true,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"https:\/\/lifetimedealhq.com\/?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}