{"compiledCode":"\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);\n\n function ToolsPage() {\n  const d = {\"h1\":\"AI visibility tools: how to evaluate them honestly\",\"intro\":\"RankRift evaluates trackers without selling one, so this hub publishes evaluation criteria instead of a winner: how data is collected, which assistants are covered, and what a defensible methodology has to disclose.\",\"notice\":\"Disclosure: RankRift does not sell, operate, or earn from any AI-visibility tracker, and carries no affiliate links. The disclosure page sets out the rules that keep tool coverage independent.\",\"primaryCtas\":[{\"label\":\"Read the disclosure\",\"href\":\"/disclosure\"},{\"label\":\"See how we define the metrics\",\"href\":\"/measure\"}],\"inShort\":\"This hub does not rank AI-visibility platforms and does not describe any vendor's features, model coverage, accuracy, or prices. Instead it publishes the criteria a buyer should apply to any tool that claims to measure whether assistants recommend a brand: data collection method, assistant coverage, published metric definitions, sampling and cadence, variance reporting, exports and API, data retention, method-change communication, and total cost including runs. It also covers when a spreadsheet is enough, when no tool is the right answer yet, and who a different approach fits better.\",\"whoFor\":[\"In-house SEO or organic growth leads who have been asked to pick an AI-visibility tool and defend the choice to a budget holder\",\"Agency and consultant strategists comparing platforms they will resell or report from across several clients\",\"Founders and heads of marketing who want to know whether this needs paid software at all yet\",\"Analytics and RevOps people who will inherit the exports, the API, and the data-retention questions\",\"Anyone who has sat through vendor demos that all sound identical and wants a test that separates them\"],\"whenToUse\":[\"You have a shortlist of measurement tools and no way to tell them apart on substance\",\"A vendor has quoted you a number for your brand's AI visibility and you do not know how it was produced\",\"You are deciding between building measurement in-house, buying a platform, or running a spreadsheet\",\"You already own brand monitoring or rank tracking and want to know whether it covers this job\",\"You need a written evaluation rubric to attach to a procurement request\"],\"sections\":[{\"heading\":\"Start with the disclosure, not with a shortlist\",\"paragraphs\":[\"We do not sell a tracker; the product page is an evaluation brief. A publication that writes about a paid category can still acquire an interest in it, so read tool coverage here, and anywhere, with that question in mind. We would rather say so at the top of the page than bury it in a footer.\",\"The way we keep tool coverage useful is structural: we publish criteria rather than verdicts, identify who is served better by a different approach, and disclose any commercial relationship before it can affect a comparison. If that policy changes, the disclosure page is where it will be recorded first.\"],\"bullets\":[{\"text\":\"How tool coverage stays independent, in plain terms\",\"href\":\"/disclosure\"},{\"text\":\"Our sourcing, review, and correction rules\",\"href\":\"/editorial-policy\"},{\"text\":\"The measurement method the criteria come from\",\"href\":\"/methodology\"}],\"note\":\"Discount anyone's opinion of a tool, including ours. You should not have to discount the criteria, because you can apply them yourself.\"},{\"heading\":\"Nine criteria that separate a ruler from a dashboard\",\"paragraphs\":[\"Most demos show a chart going in a pleasing direction. None of that tells you whether the number underneath is reproducible. These are the nine things we would want answered in writing before paying for any AI-visibility measurement, any candidate included.\",\"Notice that none of them are features. Features are easy to match; method is not.\"],\"bullets\":[{\"text\":\"Data collection method: does the tool query assistants through official provider APIs, and can it show that its collection respects provider terms? Collection method is the single biggest driver of why two tools disagree.\",\"href\":\"/blog/api-vs-ui-scraping\"},{\"text\":\"Assistant coverage: which assistants and which model versions are actually queried, and what happens to your historical data when a model version is retired.\"},{\"text\":\"Published metric definitions: is there a formula for every number on the dashboard, with its failure mode stated, or only a branded score with no arithmetic behind it?\",\"href\":\"/measure\"},{\"text\":\"Sampling and run cadence: how many runs per prompt, on what schedule, and can you change that? A single run is an anecdote, not a measurement.\"},{\"text\":\"Variance reporting: does the tool show the spread around a number, or present one figure as if the underlying system were deterministic?\"},{\"text\":\"Exports and API: can you get raw responses out, not just aggregates, so a skeptic on your team can recompute the number independently?\"},{\"text\":\"Data retention and confidentiality: where do your prompt sets and results live, how long are they kept, and are they used for anything other than serving you?\",\"href\":\"/blog/measurement-data-hygiene\"},{\"text\":\"Method-change communication: when the vendor changes how a metric is computed, do you get a versioned changelog before your trend line moves, or do you find out from a confused executive?\"},{\"text\":\"Total cost including runs: seat price is rarely the real price. Ask what happens to cost when you add prompts, assistants, brands, or run frequency.\"}]},{\"heading\":\"Questions that expose a weak methodology\",\"paragraphs\":[\"Ask these on the call. You are not looking for a perfect answer; you are looking for whether the vendor has thought about the problem at all. A confident non-answer to any of them is informative.\",\"Apply the same questions to any publication's tool coverage, including this one.\"],\"bullets\":[{\"text\":\"\\\"Show me the exact prompts behind this number, and the run dates.\\\" A tool that treats its prompt set as a trade secret is asking you to report a figure you cannot defend.\"},{\"text\":\"\\\"How many times was each prompt run, and what was the spread?\\\" If the answer is one run, the trend line is noise with a nice colour.\"},{\"text\":\"\\\"Which model version produced this, and what happens to the chart when the provider ships a new one?\\\"\"},{\"text\":\"\\\"How do you decide a mention counts as a recommendation?\\\" Mention counting and recommendation counting are different metrics with different failure modes.\"},{\"text\":\"\\\"How is the data collected?\\\" Ask specifically about official APIs and provider terms, and get the answer in writing.\",\"href\":\"/blog/methodology-questions-to-ask\"},{\"text\":\"\\\"What does your tool measure badly?\\\" A vendor with no honest answer has either not tested their own product or is not going to tell you the truth about anything harder.\"}],\"note\":\"Every figure you rely on should ship with its prompt set, model versions, run dates, sample size, and variance. Hold every vendor and publication to that standard.\"},{\"heading\":\"Build, buy, or spreadsheet - and why \\\"not yet\\\" is a real answer\",\"paragraphs\":[\"There are four honest outcomes to this decision, and only two of them involve paying anyone. You can run it manually in a spreadsheet, buy a platform, build collection in-house against provider APIs, or decide the category is not moving enough for you to spend on it this quarter.\",\"The spreadsheet route is genuinely viable for a single brand, a single category, and a modest prompt set. It stops scaling when run volume, multi-brand reporting, or scheduled re-runs turn into someone's part-time job - and the cost of that person's time is the number to compare against a subscription, not zero.\",\"Building in-house makes sense when you already have engineers comfortable with provider APIs and you need the raw responses inside your own warehouse. It is a maintenance commitment, because model versions and provider terms change on someone else's schedule.\"],\"bullets\":[{\"text\":\"Work through the decision tree, including the do-nothing branch\",\"href\":\"/blog/build-buy-or-spreadsheet\"},{\"text\":\"Understand what the three adjacent product categories each actually do\",\"href\":\"/blog/three-different-jobs\"},{\"text\":\"Check what a free checker can and cannot legitimately tell you\",\"href\":\"/blog/free-ai-visibility-checkers\"}],\"note\":\"If you cannot yet name the decision a measurement would change, \\\"not yet\\\" is the correct answer and no tool will improve it.\"},{\"heading\":\"Who a different tool or approach fits better\",\"paragraphs\":[\"This section exists so you can match the approach to the job rather than to the loudest demo. The cases below show when a different approach is the better fit.\"],\"bullets\":[{\"text\":\"You need a single suite covering classic rank tracking, backlink data, and AI answers in one contract - an established platform with a broad feature surface will serve procurement better than a focused tool.\",\"href\":\"/blog/three-different-jobs\"},{\"text\":\"You are an enterprise with dozens of brands, strict vendor-security review, and white-label reporting obligations - evaluate tools built for that operating model.\",\"href\":\"/blog/enterprise-vs-lean-tools\"},{\"text\":\"You want social listening, sentiment across networks, and press monitoring - that is brand monitoring, a different job with mature vendors already in it.\"},{\"text\":\"You need one number for one brand, once, to settle an internal argument - use the manual snapshot or a spreadsheet and stop there.\",\"href\":\"/check\"},{\"text\":\"You want a tool that will tell you how to make an assistant recommend you - nobody can offer that honestly, and a vendor implying otherwise is the strongest reason to walk away.\",\"href\":\"/get-recommended\"},{\"text\":\"You need engineering-grade access to raw responses inside your own infrastructure today - building against provider APIs may beat any subscription.\"}]},{\"heading\":\"Review-admission protocol for individual tools\",\"paragraphs\":[\"Admit a tool review only when the page records the review date, test date, reviewer identity, test scope, account tier, fixtures, results, limitations, and conflict disclosure. Describe pricing models with a dated link to the vendor's own page rather than copying an amount that can go stale.\",\"Do not assert model coverage, accuracy, or features from vendor marketing. A page without recorded hands-on use remains an evaluation rubric, not a review.\",\"Do not assert model coverage, accuracy, or features from vendor marketing. A page without recorded hands-on use remains an evaluation rubric, not a review.\"],\"bullets\":[{\"text\":\"Evidence-admission rules\",\"href\":\"/editorial-policy\"},{\"text\":\"Correction record\",\"href\":\"/corrections\"}],\"note\":\"Assistant answers vary by model, phrasing, region, personalization, and date, so any tool comparison based on a handful of one-off answers - including one we might be tempted to publish - is under-powered by construction.\"},{\"heading\":\"The rest of this cluster\",\"paragraphs\":[\"Each post below stands on its own. Together they are the buyer-education path for this pillar, from \\\"do I need anything\\\" through \\\"how do I audit a vendor's claim\\\".\"],\"bullets\":[{\"text\":\"Build, buy, or spreadsheet: choosing how to measure AI visibility\",\"href\":\"/blog/build-buy-or-spreadsheet\"},{\"text\":\"What to demand from any vendor's methodology\",\"href\":\"/blog/methodology-questions-to-ask\"},{\"text\":\"API-based measurement versus UI scraping, and why the numbers differ\",\"href\":\"/blog/api-vs-ui-scraping\"},{\"text\":\"AI-visibility platforms compared: what each category of tool actually measures\",\"href\":\"/blog/ai-visibility-platforms-compared\"},{\"text\":\"Free AI-visibility checkers: what they can and cannot tell you\",\"href\":\"/blog/free-ai-visibility-checkers\"},{\"text\":\"Brand monitoring, AI-visibility tracking, and rank tracking are three different jobs\",\"href\":\"/blog/three-different-jobs\"},{\"text\":\"Enterprise versus lean: matching tool class to team size\",\"href\":\"/blog/enterprise-vs-lean-tools\"}]}],\"related\":[{\"label\":\"Metric definitions and measurement\",\"href\":\"/measure\"},{\"label\":\"The published methodology\",\"href\":\"/methodology\"},{\"label\":\"Disclosure and conflicts\",\"href\":\"/disclosure\"},{\"label\":\"Reporting AI visibility to budget holders\",\"href\":\"/reporting\"},{\"label\":\"On-page measurement resources\",\"href\":\"/resources\"},{\"label\":\"Manual visibility snapshot\",\"href\":\"/check\"}],\"faqs\":[{\"q\":\"Why won't you just tell me which tool is best?\",\"a\":\"Because a ranked list without reproducible testing is marketing wearing a table. What this publication can give you honestly is a vendor-neutral rubric: collection method, assistant coverage, published metric formulas, sampling and cadence, variance reporting, exports, retention, method-change communication, and total cost including runs. Score your shortlist against those nine and the decision usually makes itself, without needing to trust us.\"},{\"q\":\"Two tools gave me completely different numbers for the same brand. Which one is wrong?\",\"a\":\"Possibly neither. Assistant answers vary by model, phrasing, region, personalization, and date, so two tools using different prompt sets, different run counts, or different model versions will legitimately disagree. Before deciding one is broken, ask both for their prompts, run counts, run dates, and metric definitions. If either cannot supply those, the disagreement is unresolvable and the number is not reportable. Comparable numbers require comparable inputs, which is why published method matters more than a dashboard.\"},{\"q\":\"Is a free checker good enough to start with?\",\"a\":\"For a first look, often yes. A free check can tell you whether your brand appears at all for a handful of buyer-style prompts, which is enough to decide whether to investigate further. What it cannot do is support a trend line: free checks typically run few samples, on few prompts, at one moment in time. Treat the result as a prompt to look harder, not as a baseline. The manual snapshot guide states these same limits on the page.\"},{\"q\":\"How do I know a tool is collecting its data legitimately?\",\"a\":\"Ask directly whether measurement runs through official provider APIs, and ask for it in writing. Collection that relies on automating consumer accounts or working around a provider's interface creates a supply risk for you: the data can stop without notice, and your historical trend can break mid-quarter. It is also a term-of-service question your legal team may care about more than your marketing team does. Method, provider terms, and continuity are one question, not three.\"},{\"q\":\"We already pay for an SEO suite and a social listening tool. Do we need anything else?\",\"a\":\"Maybe not. Rank tracking answers where you sit in a results page, brand monitoring answers who is talking about you, and AI-visibility tracking answers whether an assistant recommends you when asked for the best option. Those are three jobs, and some suites now cover part of the third. Check whether your existing tools query assistants directly, how many samples they run, and whether they publish metric definitions. If they do, use what you already own.\"},{\"q\":\"What does an AI-visibility tool cost?\",\"a\":\"We do not publish price amounts for other vendors, because prices change and a stale figure in our copy would mislead you. What this page can tell you is where cost tends to hide: pricing usually scales on some combination of tracked prompts, assistants queried, brands or domains, run frequency, and seats. Ask a vendor to price your actual prompt set at your actual cadence, then compare that against the internal hours a spreadsheet approach would consume.\"},{\"q\":\"Why does the rubric include “you might not need a tool”?\",\"a\":\"Because software is justified only when a reader can name the decision the measurement changes and the manual workload it replaces. A reader who can maintain a spreadsheet may not need a tracker. Apply the disclosure rules to any recommendation made by a publisher with a commercial interest.\"},{\"q\":\"What qualifies as a hands-on review of a platform?\",\"a\":\"A qualifying review records dated first-hand use, reviewer identity, account tier, test fixtures, observed output, limitations, and conflicts. Vendor marketing can identify a claim to test but cannot stand in for the test. Without that record, publish criteria and questions rather than a verdict.\"}],\"closingCtaHeading\":\"Apply the criteria\",\"closingCtaText\":\"Score your shortlist against the nine criteria before a demo. Apply the same evidence requirements to any owned or vendor implementation.\",\"closingCtas\":[{\"label\":\"Read the methodology\",\"href\":\"/methodology\"},{\"label\":\"Apply the tracker evaluation brief\",\"href\":\"/product\"},{\"label\":\"Use the briefing template\",\"href\":\"/newsletter\"}]};\n  const btn = (kind) => ({\n    display: \"inline-block\",\n    padding: kind === \"primary\" ? \"11px 18px\" : \"9px 16px\",\n    margin: \"6px 10px 6px 0\",\n    borderRadius: 8,\n    textDecoration: \"none\",\n    fontWeight: 700,\n    fontSize: 15,\n    background: kind === \"primary\" ? \"#3d3f8c\" : \"transparent\",\n    color: kind === \"primary\" ? \"#ffffff\" : \"#3d3f8c\",\n    border: \"2px solid #3d3f8c\",\n  });\n  return (\n    _react2.default.createElement('div', { className: [\"np-rankrift\",\"rrpage\"].join(\" \"), 'aria-labelledby': \"rr-title\",}\n, _react2.default.createElement('style', null, \"\\n        .np-rankrift.rrpage{max-width:880px;margin:0 auto;padding:28px 20px 64px;color:#1a1f2b;\\n          font-family:var(--cdqcat5-font-body, \\\"DM Sans\\\", Arial, sans-serif);\\n          line-height:1.62;font-size:17px}\\n        .np-rankrift.rrpage h1{font-size:2rem;line-height:1.2;margin:0 0 12px}\\n        .np-rankrift.rrpage h2{font-size:1.35rem;line-height:1.3;margin:36px 0 10px}\\n        .np-rankrift.rrpage p{margin:0 0 14px}\\n        .np-rankrift.rrpage ul{margin:0 0 16px;padding-left:22px}\\n        .np-rankrift.rrpage li{margin:0 0 8px}\\n        .np-rankrift.rrpage a{color:#33368a}\\n        .np-rankrift .rr-intro{font-size:1.16rem;color:#39414f}\\n        .np-rankrift .rr-callout{background:#f2f3fb;border-left:4px solid #3d3f8c;padding:12px 16px;border-radius:6px;margin:6px 0 16px;font-size:0.98rem}\\n        .np-rankrift.rrpage details{border:1px solid #e3e5ef;border-radius:8px;padding:10px 14px;margin:0 0 10px;background:#fbfbfe}\\n        .np-rankrift.rrpage summary{cursor:pointer;font-weight:600}\\n        .np-rankrift.rrpage details p{margin:10px 0 2px}\\n        .np-rankrift .rr-ctarow{margin:16px 0 10px}\\n        @media (max-width:560px){.np-rankrift.rrpage{font-size:16px;padding:22px 16px 56px}.np-rankrift.rrpage h1{font-size:1.6rem}}\\n      \")\n\n      , _react2.default.createElement('h1', { id: \"rr-title\",}, d.h1)\n      , _react2.default.createElement('p', { className: \"rr-intro\",}, d.intro)\n      , _react2.default.createElement('div', { className: \"rr-ctarow\",}\n        , d.primaryCtas.map((c, i) => (\n          _react2.default.createElement('a', { key: i, href: c.href, style: btn(i === 0 ? \"primary\" : \"ghost\"),}, c.label)\n        ))\n      )\n\n      , d.notice ? _react2.default.createElement('div', { className: \"rr-callout\",}, d.notice) : null\n\n      , d.inShort ? (\n        _react2.default.createElement('section', { 'aria-label': \"In short\" ,}\n          , _react2.default.createElement('h2', null, \"In short\" )\n          , _react2.default.createElement('p', null, d.inShort)\n        )\n      ) : null\n\n      , d.whoFor && d.whoFor.length ? (\n        _react2.default.createElement('section', { 'aria-label': \"Who this is for\"   ,}\n          , _react2.default.createElement('h2', null, \"Who this is for\"   )\n          , _react2.default.createElement('ul', null, d.whoFor.map((x, i) => _react2.default.createElement('li', { key: i,}, x)))\n        )\n      ) : null\n\n      , d.whenToUse && d.whenToUse.length ? (\n        _react2.default.createElement('section', { 'aria-label': \"When to use this\"   ,}\n          , _react2.default.createElement('h2', null, \"When to use this\"   )\n          , _react2.default.createElement('ul', null, d.whenToUse.map((x, i) => _react2.default.createElement('li', { key: i,}, x)))\n        )\n      ) : null\n\n      , d.sections.map((s, i) => (\n        _react2.default.createElement('section', { key: i,}\n          , _react2.default.createElement('h2', { id: s.heading.toLowerCase().replace(/[^a-z0-9]+/g, \"-\").replace(/^-|-$/g, \"\"),}, s.heading)\n          , (s.paragraphs || []).map((p, j) => _react2.default.createElement('p', { key: j,}, p))\n          , s.bullets && s.bullets.length ? (\n            _react2.default.createElement('ul', null\n              , s.bullets.map((b, j) => (\n                _react2.default.createElement('li', { key: j,}, b.href ? _react2.default.createElement('a', { href: b.href,}, b.text) : b.text)\n              ))\n            )\n          ) : null\n          , s.note ? _react2.default.createElement('div', { className: \"rr-callout\",}, s.note) : null\n        )\n      ))\n\n      , d.related && d.related.length ? (\n        _react2.default.createElement('section', { 'aria-label': \"Related pages\" ,}\n          , _react2.default.createElement('h2', null, \"Related pages\" )\n          , _react2.default.createElement('ul', null, d.related.map((r, i) => _react2.default.createElement('li', { key: i,}, _react2.default.createElement('a', { href: r.href,}, r.label))))\n        )\n      ) : null\n\n      , d.faqs && d.faqs.length ? (\n        _react2.default.createElement('section', { 'aria-label': \"Frequently asked questions\"  ,}\n          , _react2.default.createElement('h2', null, \"Frequently asked questions\"  )\n          , d.faqs.map((f, i) => (\n            _react2.default.createElement('details', { key: i,}\n              , _react2.default.createElement('summary', null, f.q)\n              , _react2.default.createElement('p', null, f.a)\n            )\n          ))\n        )\n      ) : null\n\n      , _react2.default.createElement('section', { 'aria-label': \"Next step\" ,}\n        , _react2.default.createElement('h2', null, d.closingCtaHeading)\n        , _react2.default.createElement('p', null, d.closingCtaText)\n        , _react2.default.createElement('div', { className: \"rr-ctarow\",}\n          , d.closingCtas.map((c, i) => (\n            _react2.default.createElement('a', { key: i, href: c.href, style: btn(i === 0 ? \"primary\" : \"ghost\"),}, c.label)\n          ))\n        )\n      )\n\n, _react2.default.createElement('style', null, \"\\n.np-rankrift{--np-paper:#eef0ef;--np-ink:#2b3439;--np-accent:#c8ccd9;box-sizing:border-box;max-width:none!important;width:100%;min-height:100vh;background:var(--np-paper)!important;color:var(--np-ink)!important;margin:0!important;padding:0 clamp(20px,5vw,72px) 72px!important;font-family:var(--cdqcat5-font-body, \\\"DM Sans\\\", Arial, sans-serif)!important;font-size:17px!important;line-height:1.75!important;overflow-wrap:anywhere}\\n.np-rankrift *{box-sizing:border-box;min-width:0}.np-rankrift>*{max-width:1080px;margin-left:auto;margin-right:auto}.np-rankrift .np-topbar{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 0;margin-bottom:52px;border-bottom:1px solid var(--np-ink)}.np-rankrift .np-brand{font-family:var(--cdqcat5-font-heading, \\\"Space Grotesk\\\", Arial, sans-serif);font-size:22px;letter-spacing:-.5px;text-decoration:none}.np-rankrift .np-topbar nav{display:flex;flex-wrap:wrap;gap:10px 22px}.np-rankrift .np-topbar nav a{display:inline-flex;align-items:center;min-height:44px;font-size:13px;text-decoration:none;border-bottom:1px solid transparent}.np-rankrift .np-topbar nav a:hover{border-bottom-color:currentColor}\\n.np-rankrift h1{font-family:var(--cdqcat5-font-heading, \\\"Space Grotesk\\\", Arial, sans-serif)!important;font-weight:400!important;font-size:clamp(36px,5.2vw,66px)!important;line-height:1.08!important;letter-spacing:-1.8px!important;max-width:960px;margin-top:0!important;margin-bottom:28px!important;text-wrap:balance;color:var(--np-ink)!important}.np-rankrift h2{font-family:var(--cdqcat5-font-heading, \\\"Space Grotesk\\\", Arial, sans-serif)!important;font-weight:400!important;font-size:clamp(25px,3vw,35px)!important;line-height:1.25!important;letter-spacing:-.5px!important;color:var(--np-ink)!important;margin-top:38px!important;margin-bottom:18px!important;text-wrap:balance}.np-rankrift h3{font-size:19px!important;line-height:1.4!important;color:var(--np-ink)!important;margin-top:24px!important;margin-bottom:10px!important}.np-rankrift p,.np-rankrift li{line-height:1.8!important;max-width:78ch}.np-rankrift p{margin-bottom:18px!important}.np-rankrift p,.np-rankrift li,.np-rankrift label{color:var(--np-ink)!important}.np-rankrift main,.np-rankrift article,.np-rankrift section{max-width:100%}.np-rankrift section{padding-top:8px!important;padding-bottom:24px!important;background:transparent!important}.np-rankrift section+section{border-top:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent);margin-top:32px!important}.np-rankrift ul,.np-rankrift ol{padding-left:24px;max-width:78ch}.np-rankrift li{margin-bottom:10px!important}\\n.np-rankrift a{color:var(--np-ink);text-underline-offset:4px;text-decoration-thickness:1px}.np-rankrift a:hover{text-decoration:underline}.np-rankrift a:focus-visible,.np-rankrift button:focus-visible,.np-rankrift input:focus-visible,.np-rankrift select:focus-visible,.np-rankrift textarea:focus-visible,.np-rankrift summary:focus-visible{outline:3px solid var(--np-ink);outline-offset:5px}.np-rankrift button,.np-rankrift input,.np-rankrift select,.np-rankrift textarea{font:inherit;max-width:100%;min-height:44px;border-radius:3px!important}.np-rankrift button{cursor:pointer}.np-rankrift [class*=\\\"cta\\\"] a,.np-rankrift [class*=\\\"button\\\"]{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:12px 20px!important;background:var(--np-ink)!important;color:var(--np-paper)!important;border:1px solid var(--np-ink)!important;border-radius:3px!important;text-decoration:none!important;font-size:14px!important;font-weight:600!important;white-space:normal;line-height:1.45!important}.np-rankrift details{border:1px solid color-mix(in srgb,var(--np-ink) 28%,transparent)!important;border-radius:3px!important;padding:0 18px!important;background:transparent!important;margin-bottom:12px!important}.np-rankrift summary{min-height:48px;padding:14px 0;cursor:pointer;font-weight:600;line-height:1.5}.np-rankrift details>p{padding-bottom:12px}.np-rankrift blockquote{border-left:3px solid var(--np-ink)!important;background:var(--np-accent)!important;color:var(--np-ink)!important;padding:18px 22px!important;margin:24px 0!important;max-width:78ch}.np-rankrift .np-table{width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:24px 0;outline-offset:4px}.np-rankrift table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.65;display:table!important;overflow:visible!important}.np-rankrift th{background:var(--np-accent)!important;color:var(--np-ink)!important;text-align:left;padding:15px!important;font-weight:600}.np-rankrift td{color:var(--np-ink)!important;background:transparent!important;padding:15px!important;border-bottom:1px solid color-mix(in srgb,var(--np-ink) 22%,transparent)!important;vertical-align:top}.np-rankrift pre{max-width:100%;overflow-x:auto;padding:20px;background:var(--np-ink)!important;color:var(--np-paper)!important;line-height:1.6;font-size:14px}.np-rankrift pre code{color:inherit!important;background:transparent!important}.np-rankrift img,.np-rankrift svg{max-width:100%;height:auto}\\n@media(max-width:680px){.np-rankrift{font-size:16px!important;padding-left:20px!important;padding-right:20px!important}.np-rankrift .np-topbar{display:block;margin-bottom:36px;padding-top:20px}.np-rankrift .np-topbar nav{margin-top:12px;gap:4px 18px}.np-rankrift h1{letter-spacing:-1px!important}.np-rankrift [style*=\\\"grid-template-columns\\\"]{grid-template-columns:minmax(0,1fr)!important}.np-rankrift [class*=\\\"cta\\\"]{flex-wrap:wrap!important;gap:12px!important}.np-rankrift .np-table table{min-width:580px}.np-rankrift th,.np-rankrift td{padding:12px!important}.np-rankrift blockquote{padding:16px!important}}\\n@media(prefers-reduced-motion:reduce){.np-rankrift *{scroll-behavior:auto!important;transition:none!important}}\\n\")\n, _react2.default.createElement('style', null, \".np-rankrift{--np-paper:var(--cdqcat5r-bg);--np-ink:var(--cdqcat5r-fg);--np-accent:var(--cdqcat5r-panel-muted);--tr-ink:var(--cdqcat5r-fg);--tr-ink-soft:var(--cdqcat5r-fg);--tr-muted:var(--cdqcat5r-muted);--tr-line:var(--cdqcat5r-border);--tr-bg:var(--cdqcat5r-bg);--tr-bg-soft:var(--cdqcat5r-panel-muted);--tr-accent:var(--cdqcat5r-link);--tr-accent-deep:var(--cdqcat5r-link);padding-top:64px!important;padding-bottom:88px!important;font-family:var(--cdqcat5-font-body)!important;background:var(--cdqcat5r-bg)!important;color:var(--cdqcat5r-fg)!important}\\n.np-rankrift h1,.np-rankrift h2,.np-rankrift h3{font-family:var(--cdqcat5-font-heading)!important;font-weight:400!important}.np-rankrift h1{max-width:22ch!important;font-size:clamp(36px,4.8vw,64px)!important;letter-spacing:-.04em!important;line-height:1.12!important}.np-rankrift h2{letter-spacing:-.025em!important}.np-rankrift h3{letter-spacing:-.015em!important}\\n.np-rankrift a{color:var(--cdqcat5r-link)!important}.np-rankrift p,.np-rankrift li{color:var(--cdqcat5r-fg)!important}.np-rankrift [class*=\\\"intro\\\"],.np-rankrift [class*=\\\"lede\\\"]{font-size:20px!important;line-height:1.7!important;max-width:64ch!important;color:var(--cdqcat5r-muted)!important}\\n.np-rankrift [class*=\\\"callout\\\"],.np-rankrift [class*=\\\"note\\\"],.np-rankrift [class*=\\\"summary\\\"],.np-rankrift [class*=\\\"card\\\"],.np-rankrift .tr-cta{background:var(--cdqcat5r-panel-muted)!important;border-color:var(--cdqcat5r-border)!important;color:var(--cdqcat5r-fg)!important;border-radius:8px!important}\\n.np-rankrift [class*=\\\"cta\\\"] a,.np-rankrift [class*=\\\"button\\\"],.np-rankrift .tr-btn{background:var(--cdqcat5r-fg)!important;color:var(--cdqcat5r-bg)!important;border-color:var(--cdqcat5r-fg)!important;min-height:48px!important}.np-rankrift [class*=\\\"eyebrow\\\"]{color:var(--cdqcat5r-link)!important;letter-spacing:.12em!important}.np-rankrift details{border-color:var(--cdqcat5r-border)!important}.np-rankrift th{background:var(--cdqcat5r-panel-muted)!important;color:var(--cdqcat5r-fg)!important}\\n.np-rankrift .tr-hero{padding-top:0!important}.np-rankrift .tr-wrap{max-width:1080px!important;padding-left:0!important;padding-right:0!important}.np-rankrift :focus-visible{outline-color:var(--cdqcat5r-link)!important}@media(max-width:680px){.np-rankrift{padding-top:38px!important;padding-bottom:56px!important}.np-rankrift [class*=\\\"intro\\\"],.np-rankrift [class*=\\\"lede\\\"]{font-size:18px!important}}\")\n)\n  );\n} exports.default = ToolsPage;"}