{"id":25,"date":"2026-08-06T21:22:05","date_gmt":"2026-08-06T16:22:05","guid":{"rendered":"https:\/\/lifetimedealhq.com\/?page_id=25"},"modified":"2026-08-07T01:00:15","modified_gmt":"2026-08-06T20:00:15","slug":"what-happens-when-a-lifetime-deal-shuts-down","status":"publish","type":"page","link":"https:\/\/lifetimedealhq.com\/guides\/what-happens-when-a-lifetime-deal-shuts-down\/","title":{"rendered":"What Happens When a Lifetime Deal Shuts Down (2026)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">&#8220;Lifetime&#8221; means the product&#8217;s lifetime, not yours.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the entire thing, and almost nobody says it plainly because it makes the codes harder to sell. When a vendor shuts down, your lifetime access ends with them. There is no escrow, no refund pool, no obligation to hand over the source code, and after AppSumo&#8217;s 60-day window there is no refund. What you have is a licence to software that no longer exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is not an argument against lifetime deals. We recommend several of them. It is an argument for pricing the risk into the decision, which most buyers do not do because $69 does not feel like a decision that warrants due diligence.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What &#8220;lifetime&#8221; actually covers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The term is doing a lot of work in marketing copy and very little in the licence agreement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It means: for as long as the product exists.<\/strong> Not for as long as you live. Not a guaranteed number of years. If the vendor stops operating the service, the &#8220;lifetime&#8221; is over.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It usually does not guarantee feature parity.<\/strong> Vendors routinely launch new products, or new &#8220;Pro&#8221; tiers, that lifetime holders are not entitled to. Read the AppSumo listing&#8217;s terms \u2014 most spell out which features are included and which are not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It rarely guarantees infrastructure costs.<\/strong> Several categories of tool \u2014 anything using AI models, anything with a crawler, anything sending email \u2014 have per-use costs the vendor pays continuously. Lifetime holders are the customers generating cost without generating revenue. Watch for credit allowances being quietly reduced. This is the most common way a lifetime deal degrades without technically ending.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It does not mean the deal stays available.<\/strong> SnowSEO&#8217;s AppSumo listing has an explicit end date of <strong>3 September 2026 at 23:59 CT<\/strong>, per AppSumo&#8217;s own availabilityEnds field. Deals expire routinely and without much notice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The single clearest thing you can do before buying is read the &#8220;Deal terms &amp; conditions&#8221; block on the AppSumo listing rather than the feature bullets above it. It is short and it is the part that binds.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Deals that have already ended<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is not hypothetical, and the examples are recent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SiteGuru&#8217;s deal ended 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 the very few with a near-perfect average and a sample size large enough to trust it. It is not a failed product. But if you were waiting to buy, you cannot, and several aggregator sites are still listing it as live.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also confirmed ended and no longer buyable: <strong>Ranklytics, RanksPro, RankAtom, KeywordGap, and More Traffic Less Content<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is six tools in one category that a reader searching today might find recommended on a site that has not been updated. When we checked LTD aggregator sites against primary sources, every figure we checked was stale or wrong \u2014 one listed deals as &#8220;Live&#8221; that have no current AppSumo listing at all, one reported a vendor&#8217;s regular price as &#8220;$368\/month&#8221; when the vendor&#8217;s entry plan is $39\/mo, and one carried outdated tier structures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A deal ending is not the same as a company failing. But &#8220;the listing is gone&#8221; and &#8220;the company is gone&#8221; look identical from a stale directory page, and that is exactly the information environment you are buying in.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">AppSumo&#8217;s 60-day refund window<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is your real protection, and it is short.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AppSumo offers a 60-day refund window on deal purchases. After that, the money is spent regardless of what happens to the vendor. AppSumo is a marketplace \u2014 it is not underwriting the vendor&#8217;s continued existence, and it makes no promise to refund you in year two because a company folded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Because 60 days is the whole of your protection, treat it as an active testing period rather than a passive guarantee:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Redeem immediately.<\/strong> Some deals require it \u2014 Internal Linking Related Contents must be redeemed within 60 days, and the redemption clock and the refund clock are not the same clock. An unredeemed code is a total loss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Use it properly in the first two weeks.<\/strong> Not &#8220;log in and look around.&#8221; Run the actual job you bought it for, at the volume you expect to run it. Credit limits, crawl caps and integration failures only appear under real use, and they are exactly what you would want a refund for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Test the support channel deliberately.<\/strong> Send one real question in week one and time the response. Slow support is the most frequently reported complaint across the tools we track \u2014 Backlink Monitor, BerqWP and SEO Generator reviewers all raise it. Support response time is also the best available proxy for whether a company is healthy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Set a calendar reminder for day 50.<\/strong> Decide deliberately. Do not let the window close because you were busy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a marketplace-seller listing rather than a curated AppSumo Select deal \u2014 Internal Linking Related Contents is one \u2014 the support expectations are different. Check who you would actually be contacting.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What actually happens to your data<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When a SaaS tool shuts down, the sequence is usually some version of this: an email announcing sunset, a window of read-only access, then the servers go off. Sometimes the window is generous. Sometimes the first notice is that the login page is dead.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What you lose depends entirely on where your data lives.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Self-hosted WordPress plugins are the safest case.<\/strong> The plugin keeps running on your server after the vendor disappears. What you lose is updates and support. That is not nothing \u2014 an unmaintained plugin becomes a security liability and eventually breaks against a PHP or WordPress core update \u2014 but you keep functioning today and you can migrate on your own schedule.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Cloud SaaS is the worst case.<\/strong> Rank history, audit history, keyword lists, campaign data: all on the vendor&#8217;s servers. When they go, it goes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tools that modify your live site sit in between, and they deserve special attention.<\/strong> ClickRank auto-applies on-page changes. WP 301 Redirects manages your redirect table. MultiLipi serves localised URLs. If any of those stop working, you are not just losing a tool, you are potentially losing site functionality \u2014 reverting hundreds of applied optimisations, or worse, having live redirects fail. That is a migration project, not a subscription cancellation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Three defences, in order of usefulness:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Export on a schedule, not on notice.<\/strong> Once a quarter, pull everything the tool lets you export. If it does not have an export function, note that as a risk before you buy \u2014 several tools we track have export limits that reviewers complain about.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Know your reversal path before you deploy.<\/strong> For anything that changes your site, ask up front: if this vendor vanishes tomorrow, how do I undo what it did? If the answer is &#8220;manually, across 400 pages,&#8221; weigh that against the $89 you saved.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Do not make a lifetime tool load-bearing for something critical<\/strong> unless you have verified the reversal path yourself.<\/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 spot a vendor likely to fold<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You cannot audit a private company&#8217;s finances. You can read signals, and they are more reliable than you would expect.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Review count over star rating.<\/strong> This is the most useful single signal and the one most buyers get backwards. A 4.97\u2605 average from 37 reviews (ZeroRank AI) tells you far less than a 4.62\u2605 from 908 (Screpy). Volume means the vendor has been selling long enough and shipping well enough to accumulate a large sample. <strong>iGEO has 4.00\u2605 from two reviews<\/strong> \u2014 that is not an evidence base, it is two opinions, which is why we excluded it from our roundups entirely.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Discount depth.<\/strong> Deep discounts signal a vendor who needs cash flow now. Very shallow ones signal something else. <strong>BerqWP&#8217;s AppSumo discount is 19%<\/strong> \u2014 $39 against $48. When the comparison group is discounted 59% to 75%, a 19% discount tells you the vendor is not desperate but also that you are not getting much, and either way you should check their real prices.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Does the vendor have a working, coherent pricing page?<\/strong> This turned out to be a surprisingly strong filter. When we checked vendor pricing for our reviews: labrika.com\/pricing and \/prices both failed to return figures. wp301redirects.com did not return figures. <strong>wpautoblog.com\/pricing returned a 404.<\/strong> A company that cannot keep its own pricing page up is not necessarily failing, but a 404 on the page where you take money is a signal about operational attention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Contradictions between AppSumo and the vendor.<\/strong> AppSumo shows Screpy&#8217;s regular price as $204; Screpy&#8217;s own site sells Pro at $77\/year. That gap is not fraud, but it is a vendor comfortable with a marketplace overstating their prices. More seriously: <strong>GrackerAI&#8217;s AppSumo structured data reports 1.80\u2605 from 5 reviews while the rendered page says &#8220;no reviews yet.&#8221;<\/strong> We could not resolve that contradiction, so we refuse to publish either number \u2014 and an unresolvable data inconsistency on the listing itself is reason enough to wait.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Support responsiveness.<\/strong> Slow support appears in AppSumo reviews for Backlink Monitor, BerqWP and SEO Generator. Support is the first thing a struggling company cuts, because it is pure cost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Feature stagnation and unanswered requests.<\/strong> Screpy reviewers have asked for PDF reporting repeatedly and it is still missing. One missing feature is a roadmap decision. A pattern of long-requested, never-shipped features is a signal about engineering capacity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ratings below the category norm with a real sample.<\/strong> BerqWP&#8217;s 4.05\u2605 across 95 reviews is the lowest in our tracked set with a meaningful sample. Ninety-five people is enough to mean something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Single-tier deals with no upgrade path.<\/strong> Not necessarily bad \u2014 WP 301 Redirects is single-tier at $49 and rated 4.85\u2605 across 281 reviews, which is the best rating-to-volume ratio we track. But it does mean the vendor has no way to grow revenue from you.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The practical checklist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before you buy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Read the deal terms block, not the feature bullets<\/li>\n\n\n<li>[ ] Check the review <strong>count<\/strong>, not just the rating. Under 30 reviews, treat the average as noise<\/li>\n\n\n<li>[ ] Open the vendor&#8217;s own pricing page. Does it load? Does it match AppSumo&#8217;s struck-through figure?<\/li>\n\n\n<li>[ ] Check for an announced end date on the listing<\/li>\n\n\n<li>[ ] Find the export function before you buy, not after<\/li>\n\n\n<li>[ ] For anything that modifies your site, work out the reversal path<\/li>\n\n\n<li>[ ] Ask: at this price, would I be fine if it died in 18 months? If not, the break-even is too long<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In the first 60 days:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Redeem the code immediately<\/li>\n\n\n<li>[ ] Run your real workload at your real volume in week one<\/li>\n\n\n<li>[ ] Send one real support question and time the reply<\/li>\n\n\n<li>[ ] Export your data once, to confirm export works<\/li>\n\n\n<li>[ ] Calendar reminder at day 50 to decide<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ongoing:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>[ ] Quarterly export<\/li>\n\n\n<li>[ ] Notice if credit allowances are quietly reduced \u2014 that is the usual first sign<\/li>\n\n\n<li>[ ] Keep a note of what each tool changed on your site<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The honest summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lifetime deals are a reasonable bet when the break-even is short and the downside is bounded. Respona at $79 against a $198\/mo subscription pays back in under a month \u2014 even if the vendor folded in month four, you would be ahead. Screpy at $59 against a $77\/year plan takes about nine months, which is a materially different bet on the same $60-ish outlay.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the calculation that matters, and it is not the discount percentage. We set the method out in <a href=\"\/guides\/how-to-evaluate-a-lifetime-deal\/\">how to evaluate a lifetime deal<\/a>, and applied it deal by deal in <a href=\"\/best\/seo-tools-lifetime-deals\/\">Best SEO Tool Lifetime Deals (2026)<\/a> and <a href=\"\/best\/wordpress-plugin-lifetime-deals\/\">Best WordPress Plugin Lifetime Deals (2026)<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Buy the ones where you would be fine if it disappeared. Skip the rest.<\/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, tier structures and deal end dates from AppSumo product-page JSON-LD and rendered listings; vendor pricing from vendors&#8217; own pricing pages where they rendered. Refund and redemption terms are AppSumo&#8217;s and can change \u2014 check the current terms on the listing before purchase.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lifetime means the product&#8217;s life, not yours. What the term covers, AppSumo&#8217;s 60-day window, and how to spot a vendor about to fold.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":17,"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\/guides\/what-happens-when-a-lifetime-deal-shuts-down\/","_thinkrank_og_title":"What Happens When a Lifetime Deal Shuts Down (2026)","_thinkrank_og_description":"Lifetime means the product's life, not yours. What the term covers, AppSumo's 60-day window, and how to spot a vendor about to fold.","_thinkrank_og_image":"","_thinkrank_twitter_title":"What Happens When a Lifetime Deal Shuts Down (2026)","_thinkrank_twitter_description":"Lifetime means the product's life, not yours. What the term covers, AppSumo's 60-day window, and how to spot a vendor about to fold.","_thinkrank_twitter_image":"","_thinkrank_imported_from":"","_thinkrank_focus_keywords":[],"_thinkrank_focus_keyword":"what happens when a lifetime deal shuts down","_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-25","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\/25","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=25"}],"version-history":[{"count":2,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/25\/revisions"}],"predecessor-version":[{"id":141,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/25\/revisions\/141"}],"up":[{"embeddable":true,"href":"https:\/\/lifetimedealhq.com\/?rest_route=\/wp\/v2\/pages\/17"}],"wp:attachment":[{"href":"https:\/\/lifetimedealhq.com\/?rest_route=%2Fwp%2Fv2%2Fmedia&parent=25"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}