attr.so
FeaturesAboutChrome ExtensionFree toolsBlogPricingSign inSign up free
FeaturesAboutChrome ExtensionFree toolsBlogPricingSign inSign up free
attr.so/Free tools/Meta Tag / OG Preview
FREE TOOL · NO SIGNUP

Meta Tag Preview -free

Paste any URL and see exactly how it will render on Twitter, LinkedIn, Facebook, and Slack - with concrete fixes when a tag is missing or out of spec.

4platforms previewed
liveserver-side fetch
∞urls / day
attr.so/tools/meta-tag-previewLive preview
Paste any public URL above - we'll fetch its meta tags and show how it would look on social.
/ 5 quick steps

How to use this tool.

~ 30 seconds end to end
  1. 01

    Paste any public URL

    Blog post, product page, landing page - anything with a public HTML response.

  2. 02

    Read the live previews

    We fetch the meta tags and render Twitter, LinkedIn, Facebook, and Slack previews exactly as those platforms will.

  3. 03

    Edit and re-preview

    Change the title, description, or image to test before you change anything in your CMS.

  4. 04

    Copy the recommended HTML

    Once the preview looks right, copy the suggested <meta> tags and paste into your <head> section.

  5. 05

    Track the share URLOPTIONAL

    Wrap the canonical URL in an attr.so short link to see which platforms actually drive clicks once the preview is live.

    Make it trackable
/ Where people use it

Common use cases.

6 most popular
Content
Track every link.attr.so
USE CASE 01

Blog and content marketing

Make sure every post has a title, image, and description that look great on every social platform.

Launch
USE CASE 02

Product launches

Verify your launch URL renders correctly on the platforms your audience uses before you announce it.

Migrations
attr.so
USE CASE 03

Site redesigns

Catch missing or stale OG tags after a CMS migration before your search and social previews break.

Audit
✓utm_source = newsletter
✓utm_medium = email
!utm_campaign = Spring%20Sale
✓utm_content = button_a
USE CASE 04

SEO + social audits

Quick QA pass for agencies - does this client page have a description over 160 chars? Is og:image present?

Debug
USE CASE 05

"No preview" debugging

When LinkedIn or Slack shows a bare URL instead of a card, this tool tells you which tag is missing.

Internal
@attrso
attr.so/launch
USE CASE 06

Internal team links

Even Slack-shared internal links benefit from a clean preview - avoid bare-URL ugliness in team channels.

/ The difference

Free, then trackable when you need it.

vs typical free tools
⚠ Most free tools

What you usually get

  • Client-side only. Browser CORS rules block most pages; you get "fetch failed" half the time.
  • One platform per page. Twitter validator and LinkedIn inspector live on different sites with different UIs.
  • Cryptic error messages. "og:image missing or invalid" - good luck guessing which dimension is wrong.
  • No raw tag dump. You see the rendered preview but not which tag drove which decision.
  • URL added to history. Many free debuggers log queries publicly. Embarrassing for unreleased URLs.
attr.so · what we ship

What you get here

  • Server-side, real-crawler fetch. We follow redirects and read the final HTML the same way a social bot would.
  • Four platforms in one view. Twitter, LinkedIn, Facebook, Slack - side by side as you edit.
  • Concrete fix suggestions. We tell you which tag to change and what the new value should be, not just "missing".
  • Raw tag inspection. Every og:* and twitter:* tag the page emitted, sorted and labelled.
  • No URL logging. We fetch once, parse, and discard. Your URL never goes into a queryable log.
/ FAQ

Frequently asked.

Can't find it? Email us
What are Open Graph and Twitter Card tags?
Open Graph (og:*) is Facebook's standard for rich link previews; LinkedIn, Slack, Discord, iMessage, and most other apps also read it. Twitter Cards (twitter:*) are Twitter's parallel standard. Most pages set both.
What is the ideal og:image size?
1200 x 630 pixels at a 1.91 : 1 aspect ratio is the sweet spot - Facebook and LinkedIn both crop to roughly that. Keep file size under 8 MB; PNG and JPG both work.
Why does my OG image not show up on LinkedIn?
Three usual culprits: (1) image URL is relative not absolute, (2) image is behind authentication or referer-blocked, (3) LinkedIn cached an older version - use LinkedIn Post Inspector to flush.
Does Google use Open Graph tags for SEO?
Indirectly. Google primarily uses and <meta description>, but a complete Open Graph set helps with social sharing, which drives backlinks and brand searches that do affect ranking.</div></details><details class="tlp-q"><summary><span>How do platforms cache previews?</span><span class="tlp-q-tog" aria-hidden="true"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 5v14M5 12h14"></path></svg></span></summary><div class="tlp-q-a">Most platforms cache for ~7 days after first scrape. Facebook's Sharing Debugger and LinkedIn's Post Inspector both let you force a re-scrape.</div></details><details class="tlp-q"><summary><span>Can I generate the meta tag HTML automatically?</span><span class="tlp-q-tog" aria-hidden="true"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 5v14M5 12h14"></path></svg></span></summary><div class="tlp-q-a">Yes - see our Social Media Preview Generator, which produces the full Open Graph + Twitter Card HTML block ready to paste into your <head>.</div></details><details class="tlp-q"><summary><span>Does this tool send my URL anywhere?</span><span class="tlp-q-tog" aria-hidden="true"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 5v14M5 12h14"></path></svg></span></summary><div class="tlp-q-a">We fetch the URL once, server-side, parse the HTML, and discard it. We do not log the URL or its content.</div></details></div><script>(function(){ var root = document.querySelector('[data-tlp-faq]'); if (!root) return; var all = root.querySelectorAll('details.tlp-q'); all.forEach(function(d){ d.addEventListener('toggle', function(){ if (d.open) all.forEach(function(o){ if (o !== d) o.open = false; }); }); }); })();</script></div></section><section class="tlp-section tlp-section-tan"><div class="tlp-container"><div class="tlp-s-head"><div><span class="tlp-eyebrow">/ Keep going</span><h2 class="tlp-h2">Pair with these.</h2></div></div><div class="tlp-rel-grid"><div class="tlp-rel-col"><h3 class="tlp-rel-h3">Related free tools</h3><div class="tlp-rel-rows"><a class="tlp-rel-row" href="/tools/social-preview"><span class="tlp-rel-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-5-5L5 21"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Social Media Preview</span><span class="tlp-rel-sub">Preview every platform</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/link-privacy-checker"><span class="tlp-rel-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="11" width="18" height="11" rx="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Link Privacy Checker</span><span class="tlp-rel-sub">Where does a short link go?</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/utm-builder"><span class="tlp-rel-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h10"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">UTM Parameter Builder</span><span class="tlp-rel-sub">Tag campaigns properly</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/qr-code-generator"><span class="tlp-rel-icon" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7" rx="1"></rect><rect x="14" y="3" width="7" height="7" rx="1"></rect><rect x="3" y="14" width="7" height="7" rx="1"></rect><path d="M14 14h3v3M17 21h4v-4"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">QR Code Generator</span><span class="tlp-rel-sub">QR codes from any URL</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a></div></div><div class="tlp-rel-col"><h3 class="tlp-rel-h3">Related guides</h3><div class="tlp-rel-rows"><a class="tlp-rel-row" href="/tools/social-preview"><span class="tlp-rel-icon tlp-rel-icon-soft" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h12l4 4v12H4z"></path><path d="M16 4v4h4M8 12h8M8 16h6"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Generate full meta tag HTML</span><span class="tlp-rel-sub">FREE TOOL</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/link-privacy-checker"><span class="tlp-rel-icon tlp-rel-icon-soft" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h12l4 4v12H4z"></path><path d="M16 4v4h4M8 12h8M8 16h6"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Check the redirect chain</span><span class="tlp-rel-sub">FREE TOOL</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/utm-builder"><span class="tlp-rel-icon tlp-rel-icon-soft" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h12l4 4v12H4z"></path><path d="M16 4v4h4M8 12h8M8 16h6"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Build a tagged share URL with UTMs</span><span class="tlp-rel-sub">FREE TOOL</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a><a class="tlp-rel-row" href="/tools/qr-code-generator"><span class="tlp-rel-icon tlp-rel-icon-soft" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h12l4 4v12H4z"></path><path d="M16 4v4h4M8 12h8M8 16h6"></path></svg></span><span class="tlp-rel-text"><span class="tlp-rel-title">Generate a QR code for the share</span><span class="tlp-rel-sub">FREE TOOL</span></span><span class="tlp-rel-arr" aria-hidden="true">→</span></a></div></div></div><div class="tlp-track"><div class="tlp-track-tx"><h3 class="tlp-track-h">Track how each platform sends traffic.</h3><p>Wrap the canonical URL in an attr.so short link and see which platforms convert the previewed share.</p></div><div class="tlp-track-actions"><a class="tlp-btn tlp-btn-cyan" href="/login?mode=signup">Start free <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a><a class="tlp-btn tlp-btn-outline-white" href="/#pricing">See pricing</a></div></div></div></section><section class="tlp-section tlp-section-other"><div class="tlp-container"><div class="tlp-s-head"><div><span class="tlp-eyebrow">/ More from attr.so</span><h2 class="tlp-h2">Other free tools.</h2></div><a class="tlp-s-meta tlp-s-meta-link" href="/tools">Browse all <!-- -->12<!-- --> →</a></div><div class="tlp-otile-grid"><a class="tlp-otile" href="/tools/qr-code-generator"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="7" height="7" rx="1"></rect><rect x="14" y="3" width="7" height="7" rx="1"></rect><rect x="3" y="14" width="7" height="7" rx="1"></rect><path d="M14 14h3v3M17 21h4v-4"></path></svg></span><h3 class="tlp-otile-name">QR Code Generator</h3><p class="tlp-otile-desc">QR codes from any URL</p><span class="tlp-otile-foot">Open tool<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></a><a class="tlp-otile" href="/tools/url-shortener"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.71"></path></svg></span><h3 class="tlp-otile-name">URL Shortener</h3><p class="tlp-otile-desc">Shorten long URLs</p><span class="tlp-otile-foot">Open tool<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></a><a class="tlp-otile" href="/tools/utm-builder"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h10"></path></svg></span><h3 class="tlp-otile-name">UTM Parameter Builder</h3><p class="tlp-otile-desc">Tag campaigns properly</p><span class="tlp-otile-foot">Open tool<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></a><div class="tlp-otile tlp-otile-current" aria-current="page"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="14" rx="2"></rect><path d="M3 9h18M8 14h6"></path></svg></span><h3 class="tlp-otile-name">Meta Tag / OG Preview</h3><p class="tlp-otile-desc">See how a link looks</p><span class="tlp-otile-foot">You're here</span></div><a class="tlp-otile" href="/tools/link-privacy-checker"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="11" width="18" height="11" rx="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></span><h3 class="tlp-otile-name">Link Privacy Checker</h3><p class="tlp-otile-desc">Where does a short link go?</p><span class="tlp-otile-foot">Open tool<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></a><a class="tlp-otile" href="/tools/geo-blocker"><span class="tlp-otile-ic" aria-hidden="true"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><path d="M2 12h20M12 2a15 15 0 0 1 0 20M12 2a15 15 0 0 0 0 20"></path></svg></span><h3 class="tlp-otile-name">Geo-Block Tester</h3><p class="tlp-otile-desc">Country-level blocks</p><span class="tlp-otile-foot">Open tool<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></a></div></div></section></div></main><style> .ms-footer { /* Scope dark-palette values so the footer stays dark on every theme, matching the design spec in screenshots/footer.png. */ --ms-surface: #0a0d14; --ms-text: #e2eaf6; --ms-muted: #8ca0bc; --ms-border: rgba(255, 255, 255, 0.08); background: var(--ms-surface); border-top: 1px solid var(--ms-border); margin: 0; padding: 36px 40px 24px; color: var(--ms-text); } @media (max-width: 720px) { .ms-footer { padding: 28px 20px 20px; } } .ms-footer .ms-logo { font-family: var(--font-display); font-weight: 700; font-size: 18px; color: var(--ms-text); text-decoration: none; display: flex; align-items: center; gap: 8px; flex-shrink: 0; } .ms-footer .ms-logo-mark { width: 28px; height: 28px; border-radius: 6px; overflow: hidden; display: inline-flex; flex-shrink: 0; } .ms-footer .ms-logo-mark img { width: 100%; height: 100%; display: block; } .ms-footer-top { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 2fr); gap: 32px; align-items: start; max-width: 1200px; margin: 0 auto; } @media (max-width: 720px) { .ms-footer-top { grid-template-columns: 1fr; gap: 28px; } } .ms-footer-brand { display: flex; flex-direction: column; gap: 14px; max-width: 360px; } .ms-footer-tagline { font-size: 14px; color: var(--ms-muted); line-height: 1.55; } .ms-footer-cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; } @media (max-width: 480px) { .ms-footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); } } .ms-footer-col-title { font-size: 13px; font-weight: 700; color: var(--ms-text); margin: 0 0 12px; letter-spacing: 0.01em; } .ms-footer-col-list { display: flex; flex-direction: column; gap: 8px; list-style: none; padding: 0; margin: 0; } .ms-footer-link { font-size: 13px; color: var(--ms-muted); text-decoration: none; transition: color 0.15s; } .ms-footer-link:hover { color: var(--ms-text); } .ms-footer-credit-row { max-width: 1200px; margin: 28px auto 0; padding-top: 18px; border-top: 1px solid var(--ms-border); display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; } .ms-footer-credit { font-size: 12px; color: var(--ms-muted); font-family: var(--brand-font-mono-stack); } .ms-footer-built { font-size: 12px; color: var(--ms-muted); display: inline-flex; align-items: center; gap: 8px; text-decoration: none; } .ms-footer-built:hover { color: var(--ms-text); } .ms-footer-built-text { color: inherit; } .ms-footer-built-icon { width: 16px; height: 16px; display: block; border-radius: 4px; flex-shrink: 0; } </style><footer class="ms-footer"><div class="ms-footer-top"><div class="ms-footer-brand"><a class="ms-logo" aria-label="Attr.so" href="/"><span class="inline-flex items-center " style="gap:0.625rem"><svg width="28" height="28" viewBox="0 0 64 64" class="" style="color:var(--app-accent, #0DBDD5)" aria-hidden="true"><rect x="20" y="8" width="36" height="36" rx="8" fill="currentColor" fill-opacity="0.35"></rect><rect x="14" y="14" width="36" height="36" rx="8" fill="currentColor" fill-opacity="0.6"></rect><rect x="8" y="20" width="36" height="36" rx="8" fill="currentColor"></rect></svg><span class="font-bold " style="font-family:var(--brand-font-wordmark-stack, var(--brand-font-heading-stack));font-weight:700;font-size:22px;letter-spacing:-0.05em;line-height:1">attr<span style="color:var(--app-accent, #0DBDD5)">.so</span></span></span></a><p class="ms-footer-tagline">Privacy-first, developer-friendly link management software</p></div><div class="ms-footer-cols"><div><div class="ms-footer-col-title">Product</div><ul class="ms-footer-col-list"><li><a class="ms-footer-link" href="/features">Features</a></li><li><a class="ms-footer-link" href="/extension">Chrome Extension</a></li><li><a class="ms-footer-link" href="/tools">Free tools</a></li><li><a class="ms-footer-link" href="/#pricing">Pricing</a></li><li><a class="ms-footer-link" href="/docs">Docs</a></li><li><a class="ms-footer-link" href="/docs/api">API reference</a></li><li><a class="ms-footer-link" href="/changelog">Changelog</a></li><li><a class="ms-footer-link" href="/roadmap">Roadmap</a></li></ul></div><div><div class="ms-footer-col-title">Company</div><ul class="ms-footer-col-list"><li><a class="ms-footer-link" href="/about">About</a></li><li><a class="ms-footer-link" href="/blog">Blog</a></li><li><a class="ms-footer-link" href="/help">Help</a></li><li><a class="ms-footer-link" href="/feature-requests">Feature requests</a></li><li><a class="ms-footer-link" href="/support">Support</a></li><li><a class="ms-footer-link" href="/status">Status</a></li></ul></div><div><div class="ms-footer-col-title">Legal</div><ul class="ms-footer-col-list"><li><a class="ms-footer-link" href="/privacy">Privacy</a></li><li><a class="ms-footer-link" href="/terms">Terms</a></li><li><a class="ms-footer-link" href="/security">Security</a></li></ul></div></div></div><div class="ms-footer-credit-row"><div class="ms-footer-credit">© <!-- -->2026<!-- --> <!-- -->Attr.so<!-- --> - All rights reserved</div><a href="https://apptimistic.com" target="_blank" rel="noopener noreferrer" class="ms-footer-built" aria-label="Built by Apptimistic"><img src="/apptimistic.png" alt="" width="16" height="16" class="ms-footer-built-icon"/><span class="ms-footer-built-text">Built by Apptimistic</span></a></div></footer></div><!--$--><!--/$--></div><script>$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0}; $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:I[339756,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"LoadingBoundaryProvider\"]\n2:\"$Sreact.fragment\"\nd:I[253348,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/11d5cyyukrc_j.js\",\"/_next/static/chunks/0..wa5b-e~l7h.js\"],\"default\"]\n11:I[339756,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"default\"]\n12:I[837457,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"default\"]\n14:I[897367,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"OutletBoundary\"]\n15:\"$Sreact.suspense\"\n18:I[897367,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"ViewportBoundary\"]\n1a:I[897367,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"MetadataBoundary\"]\n1c:I[134377,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0myhs2tvc-1rr.js\"],\"GoogleAnalytics\"]\n1d:I[617571,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0myhs2tvc-1rr.js\"],\"AnnouncementBanner\"]\n1f:I[522016,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0myhs2tvc-1rr.js\",\"/_next/static/chunks/0fye6uqz4416y.js\",\"/_next/static/chunks/0a8ouwlg63mr2.js\",\"/_next/static/chunks/0qy5ye52vfqr2.js\",\"/_next/static/chunks/0v9_t5fti2j5z.js\",\"/_next/static/chunks/0jjjvmnuho84o.js\",\"/_next/static/chunks/06lb._za6beft.js\",\"/_next/static/chunks/08i6uf86v2s6h.js\"],\"\"]\n20:I[650466,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0myhs2tvc-1rr.js\"],\"CookieConsent\"]\n25:I[175696,[\"/_next/static/chunks/0l2986in4yq45.js\"],\"default\"]\n26:I[408821,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0i7zqk6lcdle7.js\",\"/_next/static/chunks/0..wa5b-e~l7h.js\"],\"default\"]\n33:I[593471,[\"/_next/static/chunks/0l2986in4yq45.js\",\"/_next/static/chunks/0myhs2tvc-1rr.js\",\"/_next/static/chunks/0fye6uqz4416y.js\",\"/_next/static/chunks/0a8ouwlg63mr2.js\",\"/_next/static/chunks/0qy5ye52vfqr2.js\",\"/_next/static/chunks/0v9_t5fti2j5z.js\",\"/_next/static/chunks/0jjjvmnuho84o.js\",\"/_next/static/chunks/06lb._za6beft.js\",\"/_next/static/chunks/08i6uf86v2s6h.js\"],\"OgChecker\"]\n49:I[27201,[\"/_next/static/chunks/0x.73w57rn4ou.js\",\"/_next/static/chunks/0i.l9589uvx0j.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/0-8lnz2e8l8ef.css\",\"style\"]\n:HL[\"/_next/static/chunks/12-e6yyrrosth.css\",\"style\"]\n:HL[\"/_next/static/media/051742360c26797e-s.p.0f97p8c3305p~.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.09zddjkbdep5a.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/7f85dd73dfdb86b2-s.p.02pc7aiy98wtw.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.09~u27dqhyhd6.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/fba5a26ea33df6a3-s.p.0eehd8tgys7nv.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/apptimistic.png\",\"image\"]\n3:T6f3,"])</script><script>self.__next_f.push([1,"\n .pb-skel-page { min-height: 100vh; background: var(--brand-page-bg); color: var(--brand-text-primary); font-family: var(--brand-font-body-stack); }\n .light .pb-skel-page { background: var(--brand-page-bg); color: var(--brand-text-primary); }\n\n .pb-skel-nav { height: 56px; border-bottom: 1px solid var(--brand-divider); display: flex; align-items: center; padding: 0 24px; gap: 16px; background: rgba(9,9,11,0.92); backdrop-filter: blur(12px); }\n .light .pb-skel-nav { border-bottom-color: var(--brand-border); background: rgba(255,255,255,0.92); }\n\n .pb-skel-block, .pb-skel-pill, .pb-skel-bar, .pb-skel-card {\n background: linear-gradient(90deg, rgba(255,255,255,0.04) 0%, var(--brand-border) 50%, rgba(255,255,255,0.04) 100%);\n background-size: 200% 100%;\n animation: pb-skel-shimmer 1.4s ease-in-out infinite;\n border-radius: 8px;\n }\n .light .pb-skel-block, .light .pb-skel-pill, .light .pb-skel-bar, .light .pb-skel-card {\n background: linear-gradient(90deg, var(--brand-input-bg) 0%, var(--brand-border) 50%, var(--brand-input-bg) 100%);\n background-size: 200% 100%;\n }\n\n .pb-skel-pill { height: 28px; width: 120px; border-radius: 999px; }\n .pb-skel-bar { height: 14px; }\n .pb-skel-card { height: 140px; border-radius: 14px; margin-bottom: 16px; }\n .pb-skel-card.tall { height: 240px; }\n .pb-skel-card.short { height: 80px; }\n\n @keyframes pb-skel-shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .pb-skel-block, .pb-skel-pill, .pb-skel-bar, .pb-skel-card { animation: none; }\n }\n "])</script><script>self.__next_f.push([1,"5:T6f3,"])</script><script>self.__next_f.push([1,"\n .pb-skel-page { min-height: 100vh; background: var(--brand-page-bg); color: var(--brand-text-primary); font-family: var(--brand-font-body-stack); }\n .light .pb-skel-page { background: var(--brand-page-bg); color: var(--brand-text-primary); }\n\n .pb-skel-nav { height: 56px; border-bottom: 1px solid var(--brand-divider); display: flex; align-items: center; padding: 0 24px; gap: 16px; background: rgba(9,9,11,0.92); backdrop-filter: blur(12px); }\n .light .pb-skel-nav { border-bottom-color: var(--brand-border); background: rgba(255,255,255,0.92); }\n\n .pb-skel-block, .pb-skel-pill, .pb-skel-bar, .pb-skel-card {\n background: linear-gradient(90deg, rgba(255,255,255,0.04) 0%, var(--brand-border) 50%, rgba(255,255,255,0.04) 100%);\n background-size: 200% 100%;\n animation: pb-skel-shimmer 1.4s ease-in-out infinite;\n border-radius: 8px;\n }\n .light .pb-skel-block, .light .pb-skel-pill, .light .pb-skel-bar, .light .pb-skel-card {\n background: linear-gradient(90deg, var(--brand-input-bg) 0%, var(--brand-border) 50%, var(--brand-input-bg) 100%);\n background-size: 200% 100%;\n }\n\n .pb-skel-pill { height: 28px; width: 120px; border-radius: 999px; }\n .pb-skel-bar { height: 14px; }\n .pb-skel-card { height: 140px; border-radius: 14px; margin-bottom: 16px; }\n .pb-skel-card.tall { height: 240px; }\n .pb-skel-card.short { height: 80px; }\n\n @keyframes pb-skel-shimmer {\n 0% { background-position: 200% 0; }\n 100% { background-position: -200% 0; }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .pb-skel-block, .pb-skel-pill, .pb-skel-bar, .pb-skel-card { animation: none; }\n }\n "])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"tools\",\"meta-tag-preview\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(marketing)\",{\"children\":[\"tools\",{\"children\":[\"meta-tag-preview\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",4]},\"$undefined\",\"$undefined\",28],[[\"$\",\"$L1\",null,{\"loading\":[[\"$\",\"$2\",\"l\",{\"children\":[[\"$\",\"style\",null,{\"children\":\"$3\"}],[\"$\",\"div\",null,{\"className\":\"pb-skel-page\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-skel-nav\",\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":110}}],[\"$\",\"div\",null,{\"style\":{\"flex\":1,\"display\":\"flex\",\"gap\":8},\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":70,\"height\":24}}],[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":70,\"height\":24}}],[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":70,\"height\":24}}],[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":70,\"height\":24}}]]}],[\"$\",\"div\",null,{\"className\":\"pb-skel-pill\",\"style\":{\"width\":32,\"height\":32,\"borderRadius\":\"50%\"}}]]}],[\"$\",\"main\",null,{\"style\":{\"maxWidth\":1280,\"margin\":\"0 auto\",\"padding\":\"32px 24px\"},\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-skel-bar\",\"style\":{\"width\":220,\"height\":22,\"marginBottom\":24}}],[[\"$\",\"div\",\"0\",{\"className\":\"pb-skel-card short\"}],[\"$\",\"div\",\"1\",{\"className\":\"pb-skel-card \"}],[\"$\",\"div\",\"2\",{\"className\":\"pb-skel-card \"}]]]}]]}]]}],[],[]],\"children\":[\"$\",\"$2\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-8lnz2e8l8ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/12-e6yyrrosth.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0l2986in4yq45.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L4\"]}]}],{\"children\":[[\"$\",\"$L1\",null,{\"loading\":[[\"$\",\"$2\",\"l\",{\"children\":[[\"$\",\"style\",null,{\"children\":\"$5\"}],\"$L6\"]}],[],[]],\"children\":\"$L7\"}],{\"children\":[\"$L8\",{\"children\":[\"$L9\",{\"children\":[\"$La\",{},null,false,null]},null,false,\"$@b\"]},null,false,\"$@b\"]},null,false,null]},null,false,null],\"$Lc\",false]],\"m\":\"$undefined\",\"G\":[\"$d\",[\"$Le\",\"$Lf\"]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"L6SJuJxQ6J8AaUJ5WNieh\"}\n"])</script><script>self.__next_f.push([1,"6:[\"$\",\"main\",null,{\"style\":{\"maxWidth\":1280,\"margin\":\"0 auto\",\"padding\":\"32px 24px\"},\"children\":[[\"$\",\"div\",null,{\"className\":\"pb-skel-bar\",\"style\":{\"width\":220,\"height\":22,\"marginBottom\":24}}],[[\"$\",\"div\",\"0\",{\"className\":\"pb-skel-card short\"}],[\"$\",\"div\",\"1\",{\"className\":\"pb-skel-card \"}],[\"$\",\"div\",\"2\",{\"className\":\"pb-skel-card \"}]]]}]\n7:[\"$\",\"$2\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0myhs2tvc-1rr.js\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L10\"]}]\n8:[\"$\",\"$2\",\"c\",{\"children\":[null,[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n9:[\"$\",\"$2\",\"c\",{\"children\":[null,[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\na:[\"$\",\"$2\",\"c\",{\"children\":[\"$L13\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0fye6uqz4416y.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0a8ouwlg63mr2.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0qy5ye52vfqr2.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/0v9_t5fti2j5z.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/0jjjvmnuho84o.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/06lb._za6beft.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/08i6uf86v2s6h.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L14\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@16\"}]}]]}]\n17:[]\nb:\"$W17\"\nc:[\"$\",\"$2\",\"h\",{\"children\":[null,[\"$\",\"$L18\",null,{\"children\":\"$L19\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1a\",null,{\"children\":[\"$\",\"$15\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1b\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\ne:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0-8lnz2e8l8ef.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\nf:[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/12-e6yyrrosth.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n1e:T63f,"])</script><script>self.__next_f.push([1,"\n .nf-shell { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:32px; background:var(--brand-page-bg); color:var(--brand-text-primary); font-family: var(--brand-font-body-stack); }\n .light .nf-shell { background:var(--brand-page-bg); color:var(--brand-text-primary); }\n .nf-card { width:100%; max-width:520px; background:var(--brand-surface); border:1px solid var(--brand-border); border-radius:16px; padding:40px 32px; text-align:center; }\n .light .nf-card { background:var(--brand-surface); border-color:var(--brand-border); }\n .nf-code { font-size:48px; font-weight:800; letter-spacing:-0.04em; color:var(--app-accent); margin:0 0 4px; line-height:1; }\n .nf-title { margin:0 0 12px; font-size:22px; font-weight:800; letter-spacing:-0.02em; }\n .nf-body { margin:0 0 24px; font-size:14px; line-height:1.6; color:var(--brand-text-secondary); }\n .light .nf-body { color:var(--brand-text-secondary); }\n .nf-actions { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }\n .nf-btn { padding:11px 18px; border-radius:10px; font-size:13px; font-weight:700; text-decoration:none; letter-spacing:-0.01em; }\n .nf-btn-primary { background:var(--app-accent); color:var(--app-accent-contrast); }\n .nf-btn-secondary { background:var(--brand-input-bg); color:var(--brand-text-primary); border:1px solid var(--brand-input-border); }\n .light .nf-btn-secondary { background:var(--brand-input-bg); color:var(--brand-text-primary); border-color:var(--brand-input-border); }\n "])</script><script>self.__next_f.push([1,"10:[\"$\",\"div\",null,{\"className\":\"plus_jakarta_sans_e515de72-module__peB0DW__variable plus_jakarta_sans_41b32ec9-module__tQNMAq__variable\",\"style\":{\"fontFamily\":\"var(--brand-font-body-stack)\"},\"children\":[[\"$\",\"$L1c\",null,{}],[\"$\",\"$L1d\",null,{\"announcement\":null}],[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"className\":\"nf-shell\",\"children\":[[\"$\",\"style\",null,{\"children\":\"$1e\"}],[\"$\",\"div\",null,{\"className\":\"nf-card\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"nf-body\",\"children\":\"The page you were looking for doesn't exist or has been moved.\"}],[\"$\",\"div\",null,{\"className\":\"nf-actions\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/\",\"className\":\"nf-btn nf-btn-primary\",\"children\":\"Go home\"}],[\"$\",\"$L1f\",null,{\"href\":\"/dashboard\",\"className\":\"nf-btn nf-btn-secondary\",\"children\":\"Open dashboard\"}]]}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],[\"$\",\"$L20\",null,{\"version\":\"1\"}]]}]\n21:T12ef,"])</script><script>self.__next_f.push([1,":root { --app-accent: #0DBDD5; --app-accent-rgb: 13, 189, 213; --app-accent-contrast: #ffffff; --brand-accent-deep: #04323a; --brand-accent-soft: #b8ecf3; --brand-accent-tint: #e6f8fb; --brand-line: rgba(4,50,58,0.12); --brand-radius: 0.5rem; --brand-focus-ring: rgba(var(--app-accent-rgb, 13, 189, 213), 0.4); --brand-font-body-stack: var(--brand-font-body), \"Plus Jakarta Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif; --brand-font-heading-stack: var(--brand-font-heading), \"Plus Jakarta Sans\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif; --brand-font-mono-stack: var(--brand-font-mono), ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; --brand-font-wordmark-stack: var(--brand-font-wordmark), Geist, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif; --font-geist-mono: var(--brand-font-mono); --font-display: var(--brand-font-heading); --font-body: var(--brand-font-body); --brand-text-xs: 11px; --brand-text-sm: 12px; --brand-text-base: 14px; --brand-text-md: 15px; --brand-text-lg: 17px; --brand-text-xl: 20px; --brand-text-2xl: 24px; --brand-text-3xl: 32px; --brand-text-4xl: 44px; --brand-page-bg: #090d14; --brand-surface: #111923; --brand-surface-elevated: #161e2c; --brand-text-primary: #e2eaf6; --brand-text-secondary: #8ca0bc; --brand-text-muted: #566880; --brand-placeholder: #3d5266; --brand-border: rgba(100,150,200,0.10); --brand-border-strong: rgba(100,150,200,0.18); --brand-divider: rgba(100,150,200,0.07); --brand-input-bg: rgba(255,255,255,0.04); --brand-input-border: rgba(100,150,200,0.14); --brand-hover-bg: rgba(100,150,200,0.07); --brand-success: #10b981; --brand-success-rgb: 16, 185, 129; --brand-danger: #f87171; --brand-danger-rgb: 248, 113, 113; --brand-warning: #f59e0b; --brand-warning-rgb: 245, 158, 11; --brand-status-hot: #ff5630; --background: var(--brand-page-bg); --foreground: var(--brand-text-primary); --card: var(--brand-surface); --card-foreground: var(--brand-text-primary); --popover: var(--brand-surface-elevated); --popover-foreground: var(--brand-text-primary); --primary: var(--app-accent, #0DBDD5); --primary-foreground: var(--app-accent-contrast, #ffffff); --secondary: rgba(255,255,255,0.06); --secondary-foreground: var(--brand-text-primary); --muted: rgba(255,255,255,0.05); --muted-foreground: var(--brand-text-muted); --accent: rgba(var(--app-accent-rgb, 13, 189, 213), 0.1); --accent-foreground: var(--app-accent, #0DBDD5); --destructive: var(--brand-danger); --border: var(--brand-border); --input: rgba(255,255,255,0.06); --ring: rgba(var(--app-accent-rgb, 13, 189, 213), 0.4); --radius: var(--brand-radius); --sidebar: var(--brand-surface); --sidebar-foreground: var(--brand-text-primary); --sidebar-primary: var(--app-accent, #0DBDD5); --sidebar-primary-foreground: var(--app-accent-contrast, #ffffff); --sidebar-accent: rgba(255,255,255,0.05); --sidebar-accent-foreground: var(--brand-text-primary); --sidebar-border: var(--brand-border); --sidebar-ring: rgba(var(--app-accent-rgb, 13, 189, 213), 0.4); } .light { --brand-page-bg: #f2f7fc; --brand-surface: #ffffff; --brand-surface-elevated: #e8f2f9; --brand-text-primary: #090d14; --brand-text-secondary: #3d5a76; --brand-text-muted: #6080a0; --brand-placeholder: #8cafc8; --brand-border: rgba(0,0,0,0.08); --brand-border-strong: rgba(0,0,0,0.14); --brand-divider: rgba(0,0,0,0.06); --brand-input-bg: rgba(0,0,0,0.03); --brand-input-border: rgba(0,0,0,0.10); --brand-hover-bg: rgba(0,0,0,0.05); --brand-success: #10b981; --brand-success-rgb: 16, 185, 129; --brand-danger: #dc2626; --brand-danger-rgb: 220, 38, 38; --brand-warning: #f59e0b; --brand-warning-rgb: 245, 158, 11; --brand-status-hot: #ff5630; --background: var(--brand-page-bg); --foreground: var(--brand-text-primary); --card: var(--brand-surface); --card-foreground: var(--brand-text-primary); --popover: var(--brand-surface-elevated); --popover-foreground: var(--brand-text-primary); --primary: var(--app-accent, #0DBDD5); --primary-foreground: var(--app-accent-contrast, #ffffff); --secondary: rgba(0,0,0,0.05); --secondary-foreground: var(--brand-text-primary); --muted: rgba(0,0,0,0.04); --muted-foreground: var(--brand-text-muted); --accent: rgba(var(--app-accent-rgb, 13, 189, 213), 0.12); --accent-foreground: var(--app-accent, #0DBDD5); --destructive: var(--brand-danger); --border: var(--brand-border); --input: rgba(0,0,0,0.06); --ring: rgba(var(--app-accent-rgb, 13, 189, 213), 0.4); --radius: var(--brand-radius); --sidebar: var(--brand-surface); --sidebar-foreground: var(--brand-text-primary); --sidebar-primary: var(--app-accent, #0DBDD5); --sidebar-primary-foreground: var(--app-accent-contrast, #ffffff); --sidebar-accent: rgba(0,0,0,0.04); --sidebar-accent-foreground: var(--brand-text-primary); --sidebar-border: var(--brand-border); --sidebar-ring: rgba(var(--app-accent-rgb, 13, 189, 213), 0.4); }"])</script><script>self.__next_f.push([1,"4:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"plus_jakarta_sans_41b32ec9-module__tQNMAq__variable plus_jakarta_sans_e515de72-module__peB0DW__variable geist_mono_c708d052-module__19RM2G__variable geist_7fb8541a-module__m4Oj1W__variable light\",\"children\":[[\"$\",\"head\",null,{\"children\":[[[\"$\",\"script\",\"4cbd9c6c-069a-4795-899c-aef6be764b5d_0\",{\"async\":\"\",\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-5Y2BQRF697\",\"dangerouslySetInnerHTML\":{\"__html\":\"\"}}],[\"$\",\"script\",\"4cbd9c6c-069a-4795-899c-aef6be764b5d_1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n window.dataLayer = window.dataLayer || [];\\n function gtag(){dataLayer.push(arguments);}\\n gtag('js', new Date());\\n\\n gtag('config', 'G-5Y2BQRF697');\\n\"}}]],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$21\"}}],\"$L22\",null,[]]}],\"$L23\"]}]\n22:[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root { --app-logo-url: url(\\\"/brand/icon-light.svg\\\"); --app-favicon-url: url(\\\"/favicon.ico\\\"); }\"}}]\n23:[\"$\",\"body\",null,{\"className\":\"min-h-screen bg-background text-foreground antialiased\",\"children\":[[],\"$L24\",[]]}]\n19:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n27:T63f,"])</script><script>self.__next_f.push([1,"\n .nf-shell { display:flex; align-items:center; justify-content:center; min-height:100vh; padding:32px; background:var(--brand-page-bg); color:var(--brand-text-primary); font-family: var(--brand-font-body-stack); }\n .light .nf-shell { background:var(--brand-page-bg); color:var(--brand-text-primary); }\n .nf-card { width:100%; max-width:520px; background:var(--brand-surface); border:1px solid var(--brand-border); border-radius:16px; padding:40px 32px; text-align:center; }\n .light .nf-card { background:var(--brand-surface); border-color:var(--brand-border); }\n .nf-code { font-size:48px; font-weight:800; letter-spacing:-0.04em; color:var(--app-accent); margin:0 0 4px; line-height:1; }\n .nf-title { margin:0 0 12px; font-size:22px; font-weight:800; letter-spacing:-0.02em; }\n .nf-body { margin:0 0 24px; font-size:14px; line-height:1.6; color:var(--brand-text-secondary); }\n .light .nf-body { color:var(--brand-text-secondary); }\n .nf-actions { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }\n .nf-btn { padding:11px 18px; border-radius:10px; font-size:13px; font-weight:700; text-decoration:none; letter-spacing:-0.01em; }\n .nf-btn-primary { background:var(--app-accent); color:var(--app-accent-contrast); }\n .nf-btn-secondary { background:var(--brand-input-bg); color:var(--brand-text-primary); border:1px solid var(--brand-input-border); }\n .light .nf-btn-secondary { background:var(--brand-input-bg); color:var(--brand-text-primary); border-color:var(--brand-input-border); }\n "])</script><script>self.__next_f.push([1,"24:[\"$\",\"$L25\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"common\":{\"appName\":\"PromptEzy\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"delete\":\"Delete\",\"loading\":\"Loading.\",\"saving\":\"Saving...\",\"back\":\"Back\",\"continue\":\"Continue\",\"yes\":\"Yes\",\"no\":\"No\",\"confirm\":\"Confirm\",\"close\":\"Close\"},\"nav\":{\"dashboard\":\"Dashboard\",\"settings\":\"Settings\",\"billing\":\"Billing\",\"team\":\"Team\",\"admin\":\"Admin\",\"signOut\":\"Sign out\"},\"auth\":{\"signIn\":\"Sign in\",\"signUp\":\"Create account\",\"email\":\"Email\",\"password\":\"Password\",\"forgotPassword\":\"Forgot password?\",\"newPassword\":\"New password\",\"confirmPassword\":\"Confirm password\",\"continueWith\":\"Continue with {provider}\"},\"settings\":{\"profile\":\"Profile\",\"security\":\"Security\",\"notifications\":\"Notifications\",\"apiKeys\":\"API Keys\",\"webhooks\":\"Webhooks\"}},\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":[\"$\",\"$L11\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$26\",\"errorStyles\":[],\"errorScripts\":[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0i7zqk6lcdle7.js\",\"async\":true}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0..wa5b-e~l7h.js\",\"async\":true}]],\"template\":[\"$\",\"$L12\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"className\":\"nf-shell\",\"children\":[[\"$\",\"style\",null,{\"children\":\"$27\"}],[\"$\",\"div\",null,{\"className\":\"nf-card\",\"children\":[[\"$\",\"p\",null,{\"className\":\"nf-code\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"nf-title\",\"children\":\"Page not found\"}],[\"$\",\"p\",null,{\"className\":\"nf-body\",\"children\":\"The page you were looking for doesn't exist or has been moved.\"}],[\"$\",\"div\",null,{\"className\":\"nf-actions\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/\",\"className\":\"nf-btn nf-btn-primary\",\"children\":\"Go home\"}],[\"$\",\"$L1f\",null,{\"href\":\"/dashboard\",\"className\":\"nf-btn nf-btn-secondary\",\"children\":\"Open dashboard\"}]]}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script><script>self.__next_f.push([1,"28:T112b,"])</script><script>self.__next_f.push([1,"\n .ms-page {\n --ms-ink: var(--brand-surface);\n --ms-surface: #131316;\n --ms-surface-2: #1c1c20;\n --ms-border: var(--brand-border);\n --ms-text: var(--brand-text-primary);\n --ms-muted: var(--brand-text-muted);\n --ms-amber: var(--app-accent);\n --ms-amber-dim: rgba(var(--app-accent-rgb), 0.12);\n background: var(--ms-ink);\n color: var(--ms-text);\n min-height: 100vh;\n font-family: var(--font-body), -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n }\n .light .ms-page {\n --ms-ink: var(--brand-page-bg);\n --ms-surface: var(--brand-surface);\n --ms-surface-2: var(--brand-surface);\n --ms-border: var(--brand-border);\n --ms-text: var(--brand-text-primary);\n --ms-muted: var(--brand-text-secondary);\n }\n\n .ms-nav {\n position: sticky; top: 0; z-index: 50;\n border-bottom: 1px solid var(--ms-border);\n background: rgba(12,12,14,0.85);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n }\n .light .ms-nav { background: rgba(255,255,255,0.85); }\n .ms-nav-inner {\n max-width: 1200px; margin: 0 auto;\n padding: 0 24px; height: 56px;\n display: flex; align-items: center; justify-content: space-between;\n }\n .ms-logo {\n font-family: var(--font-display);\n font-weight: 700; font-size: 18px;\n color: var(--ms-text); text-decoration: none;\n display: flex; align-items: center; gap: 8px;\n flex-shrink: 0;\n }\n .ms-logo-mark {\n width: 28px; height: 28px;\n border-radius: 6px; overflow: hidden;\n display: inline-flex; flex-shrink: 0;\n }\n .ms-logo-mark img { width: 100%; height: 100%; display: block; }\n .ms-nav-links { display: flex; align-items: center; gap: 4px; }\n .ms-nav-link {\n font-size: 14px; color: var(--ms-muted);\n text-decoration: none; padding: 6px 12px; border-radius: 8px;\n transition: color 0.15s, background 0.15s;\n }\n .ms-nav-link:hover { color: var(--ms-text); }\n .ms-nav-link.active { color: var(--ms-text); background: var(--ms-surface-2); }\n .light .ms-nav-link.active { background: var(--brand-input-bg); }\n .ms-btn-primary {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 8px 18px; background: var(--ms-amber); color: var(--app-accent-contrast, var(--brand-text-primary));\n border-radius: 8px; font-size: 13px; font-weight: 700;\n text-decoration: none; transition: opacity 0.15s;\n margin-left: 4px;\n }\n .ms-btn-primary:hover { opacity: 0.92; }\n\n /* Hamburger (mobile) */\n .ms-burger { display: none; position: relative; }\n .ms-burger \u003e summary {\n list-style: none; cursor: pointer;\n width: 36px; height: 36px; border-radius: 8px;\n border: 1px solid var(--ms-border); color: var(--ms-muted);\n display: inline-flex; align-items: center; justify-content: center;\n transition: background 0.15s, color 0.15s, border-color 0.15s;\n }\n .ms-burger \u003e summary::-webkit-details-marker { display: none; }\n .ms-burger \u003e summary::marker { content: ''; }\n .ms-burger \u003e summary:hover { color: var(--ms-text); background: var(--ms-surface-2); }\n .ms-burger[open] \u003e summary { color: var(--ms-text); background: var(--ms-surface-2); }\n .ms-burger-menu {\n position: absolute; top: calc(100% + 10px); right: 0;\n min-width: 220px;\n background: var(--ms-surface);\n border: 1px solid var(--ms-border);\n border-radius: 12px; padding: 8px;\n box-shadow: 0 20px 40px rgba(0,0,0,0.4);\n display: flex; flex-direction: column; gap: 2px;\n z-index: 60;\n }\n .light .ms-burger-menu { box-shadow: 0 12px 32px rgba(9,9,11,0.1); }\n .ms-burger-menu .ms-nav-link { padding: 10px 12px; font-size: 14px; }\n .ms-burger-menu .ms-btn-primary { justify-content: center; margin-left: 0; margin-top: 4px; }\n @media (max-width: 720px) {\n .ms-nav-links { display: none; }\n .ms-burger { display: inline-block; }\n }\n "])</script><script>self.__next_f.push([1,"13:[[\"$\",\"style\",null,{\"children\":\"$28\"}],\"$L29\"]\n2a:T9586,"])</script><script>self.__next_f.push([1,"\n.tlp-root {\n --accent: #0DBDD5;\n --accent-deep: #04323a;\n --accent-soft: #b8ecf3;\n --accent-tint: #e6f8fb;\n --ink: #0F0F0F;\n --ink-2: #1c1c1c;\n --paper: #FAFAF7;\n --tan: #f2efe7;\n --line: #e6e2da;\n --line-2: #efece5;\n --muted: #6b6b6b;\n --muted-2: #9a9a93;\n background: var(--paper);\n color: var(--ink);\n font-family: var(--brand-font-body-stack), 'Geist', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n -webkit-font-smoothing: antialiased;\n font-size: 16px;\n line-height: 1.5;\n}\n.tlp-root *,\n.tlp-root *::before,\n.tlp-root *::after { box-sizing: border-box; }\n.tlp-root a { color: inherit; text-decoration: none; }\n\n.tlp-container {\n max-width: 1180px;\n margin: 0 auto;\n padding: 0 32px;\n position: relative;\n z-index: 2;\n}\n@media (max-width: 600px) {\n .tlp-container { padding: 0 18px; }\n}\n\n.tlp-eyebrow {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', ui-monospace, monospace;\n font-size: 11px; font-weight: 600;\n letter-spacing: 1.6px; text-transform: uppercase;\n color: var(--accent);\n}\n\n.tlp-h2 {\n font-size: clamp(28px, 3.4vw, 40px);\n font-weight: 700; letter-spacing: -1.4px;\n line-height: 1.05;\n margin: 6px 0 0;\n color: var(--ink);\n}\n\n.tlp-s-head {\n display: flex; align-items: flex-end;\n justify-content: space-between;\n gap: 24px; margin-bottom: 36px;\n flex-wrap: wrap;\n}\n.tlp-s-meta {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', ui-monospace, monospace;\n font-size: 11px; color: var(--muted);\n letter-spacing: 1px; text-transform: uppercase;\n}\n.tlp-s-meta-link { color: var(--accent); font-weight: 600; }\n.tlp-s-meta-link:hover { color: var(--accent-deep); }\n\n/* ─── Hero (cyan band) ─── */\n.tlp-hero {\n background: var(--accent);\n color: var(--accent-deep);\n position: relative;\n overflow: hidden;\n border-bottom: 1px solid rgba(4,50,58,.12);\n padding: 32px 0 64px;\n}\n.tlp-hero::before {\n content: '';\n position: absolute; inset: 0;\n background-image:\n linear-gradient(rgba(4,50,58,.06) 1px, transparent 1px),\n linear-gradient(90deg, rgba(4,50,58,.06) 1px, transparent 1px);\n background-size: 56px 56px;\n -webkit-mask-image: radial-gradient(ellipse at 50% 0%, #000 40%, transparent 80%);\n mask-image: radial-gradient(ellipse at 50% 0%, #000 40%, transparent 80%);\n pointer-events: none;\n}\n.tlp-hero::after {\n content: '';\n position: absolute; inset: -40% -10% auto auto;\n width: 60%; aspect-ratio: 1;\n background: radial-gradient(circle, rgba(255,255,255,0.45), transparent 60%);\n pointer-events: none;\n z-index: 1;\n}\n\n.tlp-crumb {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 11px; letter-spacing: 1px;\n text-transform: uppercase;\n color: var(--accent-deep);\n opacity: 0.7;\n margin-bottom: 22px;\n display: flex; align-items: center; gap: 10px;\n flex-wrap: wrap;\n}\n.tlp-crumb a:hover { opacity: 1; }\n.tlp-crumb i { opacity: 0.5; font-style: normal; }\n\n.tlp-hero-grid {\n display: flex; flex-direction: column;\n gap: 36px; align-items: center; text-align: center;\n}\n.tlp-hero-intro {\n max-width: 720px;\n display: flex; flex-direction: column; align-items: center;\n}\n\n.tlp-pill {\n display: inline-flex; align-items: center; gap: 8px;\n background: rgba(4,50,58,.1);\n border: 1px solid rgba(4,50,58,.22);\n padding: 5px 11px; border-radius: 999px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; font-weight: 600;\n letter-spacing: 1.4px; text-transform: uppercase;\n color: var(--accent-deep);\n}\n.tlp-pill-dot {\n width: 6px; height: 6px; border-radius: 50%;\n background: var(--accent-deep);\n}\n\n.tlp-h1 {\n font-size: clamp(38px, 4.8vw, 64px);\n font-weight: 700; letter-spacing: -2.4px;\n line-height: 0.98;\n margin: 14px 0 16px;\n color: var(--accent-deep);\n}\n.tlp-h1-mark {\n font-style: normal;\n background: var(--ink);\n color: var(--accent);\n padding: 0 14px 4px;\n border-radius: 12px;\n display: inline-block;\n transform: rotate(-1deg);\n margin: 0 2px;\n}\n\n.tlp-lede {\n font-size: 17px;\n line-height: 1.55;\n max-width: 540px;\n color: var(--accent-deep);\n opacity: 0.82;\n margin: 0 0 22px;\n}\n\n.tlp-stat-row {\n display: flex; gap: 36px;\n flex-wrap: wrap; justify-content: center;\n margin-top: 4px;\n}\n.tlp-stat b {\n display: block; font-size: 24px;\n font-weight: 700; letter-spacing: -0.8px;\n line-height: 1;\n}\n.tlp-stat span {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; text-transform: uppercase;\n letter-spacing: 1.2px;\n color: var(--accent-deep);\n opacity: 0.7;\n margin-top: 5px;\n display: block;\n}\n\n/* ─── Interactive tool card ─── */\n.tlp-tool-card {\n width: 100%;\n max-width: 1080px;\n background: #fff;\n border-radius: 18px;\n box-shadow: 0 30px 60px -20px rgba(4,50,58,0.32), 0 0 0 1px rgba(4,50,58,0.1);\n overflow: hidden;\n text-align: left;\n}\n.tlp-tool-bar {\n background: #f5f3ee;\n padding: 9px 14px;\n display: flex; align-items: center; gap: 8px;\n border-bottom: 1px solid var(--line);\n}\n.tlp-tool-bar \u003e i {\n width: 9px; height: 9px; border-radius: 50%;\n background: #d7d2c7; flex-shrink: 0;\n}\n.tlp-tool-bar-url {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; color: var(--muted);\n margin-left: 8px;\n display: flex; align-items: center; gap: 6px;\n flex: 1; min-width: 0;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n}\n.tlp-tool-bar-live {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; color: #117a30;\n display: inline-flex; align-items: center; gap: 6px;\n flex-shrink: 0;\n}\n.tlp-tool-bar-live::before {\n content: '';\n width: 6px; height: 6px; border-radius: 50%;\n background: #1ee87f;\n box-shadow: 0 0 0 3px rgba(30,232,127,0.2);\n}\n.tlp-tool-body {\n background: #fff;\n color: var(--ink);\n /* Most of the existing widgets style their own internals against dark\n surfaces. We force a clean white surface and let them lay out. */\n padding: 0;\n}\n/* Ensure widget inputs / buttons read well on the white card. The\n widgets already use --brand-* tokens for their internal palette;\n inside the cyan hero we want their light-mode appearance. */\n.tlp-tool-body :is(input, select, textarea, button) { font-family: inherit; }\n.tlp-tool-body { color-scheme: light; }\n\n/* ─── Section scaffold ─── */\n.tlp-section {\n padding: 80px 0;\n position: relative;\n border-bottom: 1px solid var(--line);\n background: var(--paper);\n}\n.tlp-section:last-of-type { border-bottom: 0; }\n.tlp-section-tan { background: var(--tan); border-bottom-color: rgba(0,0,0,0.06); }\n.tlp-section-other { background: var(--tan); border-bottom: 0; }\n@media (max-width: 720px) {\n .tlp-section { padding: 56px 0; }\n}\n\n/* ─── How to use ─── */\n.tlp-steps {\n list-style: none; padding: 0; margin: 0;\n display: flex; flex-direction: column; gap: 14px;\n max-width: 820px; margin: 0 auto;\n position: relative;\n}\n.tlp-steps::before {\n content: '';\n position: absolute;\n left: 46px; top: 32px; bottom: 32px;\n width: 2px;\n background-image: linear-gradient(to bottom, var(--accent) 50%, var(--line) 50%);\n background-size: 2px 14px;\n opacity: 0.4;\n}\n.tlp-step {\n display: grid; grid-template-columns: 56px 1fr;\n gap: 22px;\n padding: 22px 24px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 14px;\n align-items: start;\n position: relative;\n}\n.tlp-step-num {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 38px; font-weight: 700;\n letter-spacing: -2px;\n color: var(--accent);\n line-height: 0.9;\n width: 54px;\n background: #fff;\n position: relative; z-index: 1;\n}\n.tlp-step-title {\n font-size: 16px; font-weight: 600;\n margin: 0 0 6px;\n letter-spacing: -0.3px;\n color: var(--ink);\n display: flex; align-items: center; gap: 10px;\n flex-wrap: wrap;\n}\n.tlp-step-body p {\n margin: 0;\n font-size: 13.5px; color: var(--muted);\n line-height: 1.55;\n}\n.tlp-step-badge {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px;\n background: var(--accent);\n color: var(--accent-deep);\n padding: 3px 7px;\n border-radius: 4px;\n letter-spacing: 1px;\n font-weight: 600;\n}\n.tlp-step-upsell {\n background: var(--ink);\n color: #fff;\n border-color: var(--ink);\n}\n.tlp-step-upsell .tlp-step-num { background: var(--ink); color: var(--accent); }\n.tlp-step-upsell .tlp-step-title { color: #fff; }\n.tlp-step-upsell .tlp-step-body p { color: rgba(255,255,255,0.65); }\n.tlp-step-cta {\n display: inline-flex; align-items: center; gap: 8px;\n margin-top: 12px;\n padding: 10px 16px;\n background: var(--accent);\n color: var(--accent-deep);\n border-radius: 10px;\n font-size: 13px; font-weight: 600;\n transition: transform 0.12s, box-shadow 0.15s;\n}\n.tlp-step-cta:hover { transform: translateY(-1px); }\n\n/* ─── Use cases ─── */\n.tlp-cases {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 18px;\n}\n@media (max-width: 960px) { .tlp-cases { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 600px) { .tlp-cases { grid-template-columns: 1fr; } }\n.tlp-case {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 14px;\n overflow: hidden;\n display: flex; flex-direction: column;\n transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s;\n}\n.tlp-case:hover {\n transform: translateY(-2px);\n border-color: var(--accent-soft);\n box-shadow: 0 18px 32px -16px rgba(4,50,58,0.18);\n}\n.tlp-case-ill {\n aspect-ratio: 5/3;\n display: flex; align-items: center; justify-content: center;\n background: var(--paper);\n border-bottom: 1px solid var(--line);\n position: relative;\n overflow: hidden;\n}\n.tlp-case-ill-cyan { background: var(--accent-tint); }\n.tlp-case-tag {\n position: absolute;\n top: 10px; left: 10px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 9.5px;\n font-weight: 600;\n letter-spacing: 1px;\n text-transform: uppercase;\n background: #fff;\n padding: 3px 7px; border-radius: 4px;\n color: var(--accent-deep);\n border: 1px solid var(--line);\n z-index: 2;\n}\n.tlp-case-body { padding: 18px 20px 20px; }\n.tlp-case-label {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10px; font-weight: 600;\n letter-spacing: 1.2px; text-transform: uppercase;\n color: var(--muted-2);\n display: block; margin-bottom: 6px;\n}\n.tlp-case-title {\n font-size: 18px; font-weight: 600;\n margin: 0 0 6px;\n letter-spacing: -0.2px;\n color: var(--ink);\n}\n.tlp-case-text {\n margin: 0;\n font-size: 14px;\n color: var(--muted);\n line-height: 1.55;\n}\n\n/* ─── Difference (split comparison) ─── */\n.tlp-diff {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 0;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 18px;\n overflow: hidden;\n}\n@media (max-width: 800px) { .tlp-diff { grid-template-columns: 1fr; } }\n.tlp-diff-col { padding: 36px; }\n.tlp-diff-us { background: var(--accent); color: var(--accent-deep); }\n.tlp-diff-them { background: #fff; }\n.tlp-diff-h3 {\n font-size: 20px; font-weight: 700;\n margin: 8px 0 22px;\n letter-spacing: -0.6px;\n}\n.tlp-diff-badge {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; font-weight: 600;\n letter-spacing: 1.4px; text-transform: uppercase;\n padding: 4px 9px;\n border-radius: 5px;\n display: inline-flex; align-items: center; gap: 6px;\n}\n.tlp-diff-badge-us {\n background: var(--accent-deep);\n color: var(--accent);\n}\n.tlp-diff-badge-them {\n background: var(--paper);\n color: var(--muted);\n border: 1px solid var(--line);\n}\n.tlp-diff-list {\n display: flex; flex-direction: column; gap: 14px;\n margin: 0; padding: 0; list-style: none;\n}\n.tlp-diff-list li {\n display: flex; gap: 12px; align-items: flex-start;\n font-size: 14px; line-height: 1.5;\n}\n.tlp-diff-mark {\n flex-shrink: 0;\n width: 18px; height: 18px;\n border-radius: 50%;\n display: flex; align-items: center; justify-content: center;\n margin-top: 1px;\n}\n.tlp-diff-mark-us {\n background: var(--accent-deep);\n color: var(--accent);\n}\n.tlp-diff-mark-them {\n background: var(--paper);\n color: var(--muted);\n border: 1px solid var(--line);\n}\n.tlp-diff-them li {\n color: var(--muted);\n text-decoration: line-through;\n text-decoration-color: rgba(0,0,0,0.15);\n}\n.tlp-diff-them li b { color: var(--ink-2); }\n.tlp-diff-us li b { color: var(--accent-deep); }\n\n/* ─── FAQ ─── */\n.tlp-faq {\n max-width: 840px;\n margin: 0 auto;\n}\n.tlp-q {\n border-bottom: 1px solid var(--line);\n padding: 20px 0;\n}\n.tlp-q:first-child { border-top: 1px solid var(--line); }\n.tlp-q summary {\n list-style: none; cursor: pointer;\n display: flex; gap: 16px; align-items: center;\n font-size: 16.5px; font-weight: 600;\n letter-spacing: -0.2px;\n color: var(--ink);\n}\n.tlp-q summary::-webkit-details-marker { display: none; }\n.tlp-q summary::marker { content: ''; }\n.tlp-q summary \u003e span:first-child { flex: 1; }\n.tlp-q-tog {\n margin-left: auto;\n width: 26px; height: 26px;\n border-radius: 50%;\n background: var(--paper);\n border: 1px solid var(--line);\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n transition: transform 0.2s, background 0.15s, border-color 0.15s, color 0.15s;\n color: var(--muted);\n}\n.tlp-q[open] \u003e summary .tlp-q-tog {\n transform: rotate(45deg);\n background: var(--accent);\n border-color: var(--accent);\n color: var(--accent-deep);\n}\n.tlp-q-a {\n padding: 12px 0 4px;\n font-size: 14.5px; line-height: 1.6;\n color: var(--muted);\n max-width: 680px;\n}\n\n/* ─── Related + track banner ─── */\n.tlp-rel-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 28px;\n}\n@media (max-width: 800px) { .tlp-rel-grid { grid-template-columns: 1fr; } }\n.tlp-rel-h3 {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 11px; font-weight: 600;\n letter-spacing: 1.6px; text-transform: uppercase;\n color: var(--muted);\n margin: 0 0 16px;\n}\n.tlp-rel-rows {\n display: flex; flex-direction: column; gap: 10px;\n}\n.tlp-rel-row {\n display: flex; align-items: center; gap: 14px;\n padding: 14px 18px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 12px;\n transition: border-color 0.15s, transform 0.12s, box-shadow 0.15s;\n}\n.tlp-rel-row:hover {\n border-color: var(--accent);\n transform: translateY(-2px);\n box-shadow: 0 14px 24px -16px rgba(4,50,58,0.18);\n}\n.tlp-rel-icon {\n width: 40px; height: 40px;\n border-radius: 10px;\n background: var(--ink);\n color: var(--accent);\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.tlp-rel-icon-soft {\n background: var(--accent-tint);\n color: var(--accent-deep);\n}\n.tlp-rel-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }\n.tlp-rel-title {\n font-size: 14.5px; font-weight: 600;\n letter-spacing: -0.2px;\n color: var(--ink);\n}\n.tlp-rel-sub {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px; color: var(--muted);\n letter-spacing: 0.4px;\n}\n.tlp-rel-arr {\n margin-left: auto;\n color: var(--muted);\n transition: transform 0.15s, color 0.15s;\n font-size: 18px; line-height: 1;\n}\n.tlp-rel-row:hover .tlp-rel-arr {\n color: var(--accent);\n transform: translateX(3px);\n}\n\n.tlp-track {\n margin-top: 36px;\n background: var(--ink);\n color: #fff;\n border-radius: 18px;\n padding: 32px 36px;\n display: flex; gap: 24px;\n align-items: center; justify-content: space-between;\n position: relative;\n overflow: hidden;\n flex-wrap: wrap;\n}\n.tlp-track::before {\n content: '';\n position: absolute; inset: 0;\n background-image:\n linear-gradient(rgba(13,189,213,0.04) 1px, transparent 1px),\n linear-gradient(90deg, rgba(13,189,213,0.04) 1px, transparent 1px);\n background-size: 48px 48px;\n -webkit-mask-image: radial-gradient(ellipse at 80% 50%, #000 0%, transparent 70%);\n mask-image: radial-gradient(ellipse at 80% 50%, #000 0%, transparent 70%);\n pointer-events: none;\n}\n.tlp-track-tx { position: relative; z-index: 2; min-width: 240px; flex: 1; }\n.tlp-track-h {\n margin: 0 0 6px;\n font-size: 22px; font-weight: 700;\n letter-spacing: -0.6px;\n color: #fff;\n}\n.tlp-track-tx p {\n margin: 0;\n font-size: 14px;\n color: rgba(255,255,255,0.6);\n max-width: 520px;\n line-height: 1.5;\n}\n.tlp-track-actions {\n position: relative; z-index: 2;\n display: flex; gap: 10px; flex-wrap: wrap;\n}\n.tlp-btn {\n display: inline-flex; align-items: center; gap: 8px;\n padding: 11px 18px;\n border-radius: 10px;\n font-size: 13.5px; font-weight: 600;\n transition: transform 0.12s, box-shadow 0.15s, background 0.15s;\n border: 1px solid transparent;\n cursor: pointer;\n}\n.tlp-btn:hover { transform: translateY(-1px); }\n.tlp-btn-cyan {\n background: var(--accent);\n color: var(--accent-deep);\n}\n.tlp-btn-outline-white {\n background: rgba(255,255,255,0.04);\n color: #fff;\n border-color: rgba(255,255,255,0.2);\n}\n.tlp-btn-outline-white:hover { background: rgba(255,255,255,0.08); }\n\n/* ─── Other tools tiles ─── */\n.tlp-otile-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 16px;\n}\n@media (max-width: 960px) { .tlp-otile-grid { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 600px) { .tlp-otile-grid { grid-template-columns: 1fr; } }\n.tlp-otile {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 14px;\n padding: 22px;\n display: flex; flex-direction: column; gap: 12px;\n transition: transform 0.15s, border-color 0.15s, box-shadow 0.15s;\n min-height: 170px;\n}\n.tlp-otile:hover {\n transform: translateY(-3px);\n border-color: var(--accent);\n box-shadow: 0 24px 40px -20px rgba(4,50,58,0.22);\n}\n.tlp-otile-current {\n opacity: 0.55;\n pointer-events: none;\n background: rgba(255,255,255,0.6);\n}\n.tlp-otile-ic {\n width: 42px; height: 42px;\n border-radius: 10px;\n background: var(--ink);\n color: var(--accent);\n display: flex; align-items: center; justify-content: center;\n flex-shrink: 0;\n}\n.tlp-otile-name {\n font-size: 16px; font-weight: 600;\n letter-spacing: -0.3px;\n margin: 0;\n color: var(--ink);\n}\n.tlp-otile-desc {\n font-size: 13px;\n color: var(--muted);\n margin: 0; line-height: 1.5;\n flex: 1;\n}\n.tlp-otile-foot {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10.5px;\n color: var(--accent);\n font-weight: 600;\n display: inline-flex; gap: 6px; align-items: center;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n}\n\n/* ────────────────────────────────────────────────────────────────────\n CSS-only illustrations\n ──────────────────────────────────────────────────────────────────── */\n\n.tlp-mqr { width: 100%; height: 100%; display: block; }\n\n.tlp-ill-menu {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 12px;\n width: 62%; max-width: 200px;\n display: flex; flex-direction: column; gap: 5px;\n transform: rotate(-3deg);\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-menu-ti {\n font-size: 11px; font-weight: 700;\n letter-spacing: -0.2px; margin-bottom: 4px;\n color: var(--ink);\n}\n.tlp-ill-menu-ln {\n height: 5px; background: var(--line-2); border-radius: 3px;\n}\n.tlp-ill-menu-ln-s { width: 60%; }\n.tlp-ill-qr {\n position: absolute; right: 14px; bottom: 14px;\n width: 54px; height: 54px;\n background: var(--accent);\n border-radius: 6px;\n padding: 6px;\n}\n\n.tlp-ill-poster {\n position: absolute;\n width: 78px; height: 108px;\n background: var(--ink);\n border-radius: 5px;\n color: #fff;\n padding: 8px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 7px;\n line-height: 1.3;\n box-shadow: 0 12px 24px -10px rgba(0,0,0,0.4);\n display: flex; flex-direction: column; gap: 3px;\n}\n.tlp-ill-poster-1 { left: 30%; top: 16%; transform: rotate(-7deg); }\n.tlp-ill-poster-2 {\n right: 24%; bottom: 12%; transform: rotate(5deg);\n background: var(--accent); color: var(--accent-deep);\n}\n.tlp-ill-poster-ti {\n font-weight: 700; font-size: 8px;\n letter-spacing: -0.2px;\n margin-bottom: 4px;\n}\n.tlp-ill-poster-ln {\n display: block;\n height: 3px; background: rgba(255,255,255,0.3);\n border-radius: 1px;\n margin: 1px 0;\n width: 80%;\n}\n.tlp-ill-poster-ln-s { width: 50%; }\n.tlp-ill-poster-2 .tlp-ill-poster-ln { background: rgba(4,50,58,0.3); }\n.tlp-ill-poster-q {\n width: 20px; height: 20px;\n background: #fff;\n border-radius: 2px;\n margin-top: auto;\n display: block;\n}\n.tlp-ill-poster-2 .tlp-ill-poster-q { background: var(--ink); }\n\n.tlp-ill-card {\n position: absolute;\n width: 140px; height: 88px;\n background: #fff;\n border-radius: 7px;\n border: 1px solid var(--line);\n padding: 10px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.2);\n display: flex; flex-direction: column; justify-content: space-between;\n}\n.tlp-ill-card-1 { transform: rotate(-4deg); left: 20%; top: 30%; }\n.tlp-ill-card-2 {\n transform: rotate(6deg); right: 18%; top: 18%;\n background: var(--accent-deep);\n color: #fff;\n border-color: var(--accent-deep);\n}\n.tlp-ill-card-nm { font-size: 11px; font-weight: 700; letter-spacing: -0.3px; }\n.tlp-ill-card-em {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 8.5px;\n color: var(--muted);\n}\n.tlp-ill-card-2 .tlp-ill-card-em { color: rgba(255,255,255,0.6); }\n.tlp-ill-card-ph {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 8px;\n color: var(--muted);\n}\n.tlp-ill-card-2 .tlp-ill-card-ph { color: rgba(255,255,255,0.7); }\n.tlp-ill-card-q {\n position: absolute;\n right: 8px; bottom: 8px;\n width: 32px; height: 32px;\n background: var(--ink);\n border-radius: 4px;\n padding: 3px;\n}\n.tlp-ill-card-2 .tlp-ill-card-q { background: var(--accent); }\n\n.tlp-ill-booth {\n position: absolute; inset: auto 0 0 0;\n height: 72%;\n background: linear-gradient(to bottom, transparent, var(--accent-tint));\n border-top: 2px solid var(--accent);\n display: flex; align-items: flex-end; justify-content: center;\n}\n.tlp-ill-booth-signs {\n display: flex; gap: 8px; padding: 14px;\n}\n.tlp-ill-booth-sg {\n width: 50px; height: 64px;\n background: #fff;\n border-radius: 4px;\n border: 1px solid var(--line);\n padding: 5px;\n display: flex; flex-direction: column;\n align-items: center; gap: 3px;\n box-shadow: 0 4px 12px -6px rgba(0,0,0,0.2);\n}\n.tlp-ill-booth-qq {\n width: 32px; height: 32px;\n background: var(--ink);\n border-radius: 3px;\n}\n.tlp-ill-booth-nb {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 7px; color: var(--muted);\n}\n\n.tlp-ill-wifi {\n display: flex; flex-direction: column; align-items: center; gap: 6px;\n}\n.tlp-ill-wifi-ssid {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 11px;\n background: var(--ink);\n color: var(--accent);\n padding: 5px 12px;\n border-radius: 5px;\n font-weight: 600;\n}\n.tlp-ill-wifi-qq {\n width: 64px; height: 64px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 6px;\n padding: 6px;\n}\n.tlp-ill-wifi-arrows {\n display: flex; gap: 14px;\n font-size: 18px; color: var(--accent-deep);\n align-items: center;\n}\n.tlp-ill-wifi-bars { font-weight: 700; }\n\n.tlp-ill-phones {\n display: flex; gap: 12px;\n}\n.tlp-ill-phone {\n width: 50px; height: 88px;\n background: var(--ink);\n border-radius: 8px;\n padding: 5px;\n border: 2px solid var(--ink);\n}\n.tlp-ill-phone-scr {\n width: 100%; height: 100%;\n background: #fff;\n border-radius: 4px;\n display: flex; flex-direction: column;\n align-items: center; justify-content: center;\n gap: 3px;\n}\n.tlp-ill-phone-ic {\n width: 18px; height: 18px;\n border-radius: 5px;\n background: var(--accent);\n}\n.tlp-ill-phone-tx {\n font-size: 6.5px; font-weight: 700;\n color: var(--ink);\n}\n.tlp-ill-phone-android .tlp-ill-phone-ic {\n background: #34a853;\n border-radius: 50%;\n}\n\n.tlp-ill-social {\n width: 70%; max-width: 220px;\n}\n.tlp-ill-social-card {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 10px;\n padding: 12px;\n display: flex; gap: 10px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-social-av {\n width: 32px; height: 32px;\n border-radius: 50%;\n background: var(--accent);\n flex-shrink: 0;\n}\n.tlp-ill-social-meta { flex: 1; display: flex; flex-direction: column; gap: 4px; min-width: 0; }\n.tlp-ill-social-name {\n font-size: 11px; font-weight: 700;\n color: var(--ink);\n}\n.tlp-ill-social-ln { height: 4px; background: var(--line-2); border-radius: 2px; }\n.tlp-ill-social-ln-s { width: 50%; }\n.tlp-ill-social-link {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 9px;\n color: var(--accent);\n}\n\n.tlp-ill-sig {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 14px 18px;\n width: 70%; max-width: 220px;\n display: flex; flex-direction: column; gap: 8px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-sig-name { font-size: 12px; line-height: 1.4; color: var(--ink); }\n.tlp-ill-sig-link {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10px;\n background: var(--accent-tint);\n color: var(--accent-deep);\n padding: 4px 8px;\n border-radius: 5px;\n align-self: flex-start;\n}\n\n.tlp-ill-podcast {\n display: flex; align-items: center; gap: 14px;\n}\n.tlp-ill-podcast-disc {\n width: 56px; height: 56px;\n border-radius: 50%;\n background: var(--ink);\n display: flex; align-items: center; justify-content: center;\n position: relative;\n}\n.tlp-ill-podcast-disc::after {\n content: '';\n position: absolute;\n inset: 16px;\n border-radius: 50%;\n background: var(--accent);\n}\n.tlp-ill-podcast-bars {\n display: flex; align-items: flex-end; gap: 3px;\n height: 50px;\n}\n.tlp-ill-podcast-bars span {\n width: 4px; height: var(--h, 30%);\n background: var(--accent-deep);\n border-radius: 2px;\n}\n\n.tlp-ill-sms {\n display: flex; flex-direction: column; gap: 6px;\n width: 65%; max-width: 200px;\n}\n.tlp-ill-sms-bubble {\n padding: 8px 11px;\n border-radius: 12px;\n font-size: 10.5px;\n line-height: 1.35;\n max-width: 80%;\n}\n.tlp-ill-sms-bubble-1 {\n background: #fff;\n border: 1px solid var(--line);\n color: var(--ink);\n align-self: flex-start;\n border-bottom-left-radius: 3px;\n}\n.tlp-ill-sms-bubble-2 {\n background: var(--accent);\n color: var(--accent-deep);\n align-self: flex-end;\n border-bottom-right-radius: 3px;\n}\n.tlp-ill-sms-link {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n color: var(--accent-deep); font-weight: 600;\n}\n\n.tlp-ill-chart {\n width: 82%; max-width: 240px;\n display: flex; flex-direction: column;\n align-items: stretch;\n}\n.tlp-ill-chart svg {\n width: 100%; height: 96px;\n display: block;\n}\n.tlp-ill-chart-axis {\n height: 2px;\n background: var(--line);\n border-radius: 2px;\n}\n\n.tlp-ill-redirect {\n display: flex; align-items: center; gap: 6px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n flex-wrap: wrap; justify-content: center;\n max-width: 90%;\n}\n.tlp-ill-redirect-pill {\n background: #fff;\n border: 1px solid var(--line);\n color: var(--muted);\n padding: 6px 10px;\n border-radius: 6px;\n font-size: 10.5px;\n}\n.tlp-ill-redirect-pill-mid {\n background: var(--paper);\n}\n.tlp-ill-redirect-pill-end {\n background: var(--accent);\n color: var(--accent-deep);\n border-color: var(--accent);\n font-weight: 600;\n}\n.tlp-ill-redirect-arr {\n color: var(--accent-deep);\n opacity: 0.5;\n font-size: 14px;\n}\n\n.tlp-ill-shield svg {\n width: 68px; height: auto; display: block;\n filter: drop-shadow(0 10px 20px rgba(4,50,58,0.2));\n}\n\n.tlp-ill-globe svg {\n width: 92px; height: 92px;\n display: block;\n}\n\n.tlp-ill-flags {\n display: flex; gap: 8px; flex-wrap: wrap; justify-content: center;\n max-width: 80%;\n}\n.tlp-ill-flags-chip {\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 6px;\n padding: 6px 9px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 11px;\n font-weight: 600;\n color: var(--accent-deep);\n display: inline-flex; align-items: center; gap: 6px;\n}\n.tlp-ill-flags-sw {\n width: 12px; height: 8px;\n background: linear-gradient(to bottom, var(--accent) 50%, var(--accent-deep) 50%);\n border-radius: 2px;\n display: inline-block;\n}\n\n.tlp-ill-browser {\n width: 70%; max-width: 220px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-browser-bar {\n background: var(--paper);\n padding: 5px 8px;\n display: flex; align-items: center; gap: 5px;\n border-bottom: 1px solid var(--line);\n}\n.tlp-ill-browser-bar i {\n width: 6px; height: 6px; border-radius: 50%;\n background: #d7d2c7;\n}\n.tlp-ill-browser-url {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 9px; color: var(--muted);\n margin-left: 6px;\n}\n.tlp-ill-browser-body {\n padding: 12px;\n display: flex; flex-direction: column; gap: 5px;\n}\n.tlp-ill-browser-row {\n height: 5px; background: var(--line-2); border-radius: 3px;\n}\n.tlp-ill-browser-row-s { width: 60%; }\n\n.tlp-ill-preview {\n width: 72%; max-width: 220px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n overflow: hidden;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-preview-img {\n height: 70px;\n background: linear-gradient(135deg, var(--accent-deep), var(--accent));\n}\n.tlp-ill-preview-meta {\n padding: 10px 12px;\n display: flex; flex-direction: column; gap: 2px;\n}\n.tlp-ill-preview-title {\n font-size: 11px; font-weight: 700;\n color: var(--ink);\n}\n.tlp-ill-preview-host {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 9px; color: var(--muted);\n}\n\n.tlp-ill-tags {\n display: flex; gap: 6px; flex-wrap: wrap; justify-content: center;\n max-width: 80%;\n}\n.tlp-ill-tags-chip {\n background: var(--accent);\n color: var(--accent-deep);\n padding: 5px 9px;\n border-radius: 999px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10px; font-weight: 600;\n}\n\n.tlp-ill-list {\n width: 80%; max-width: 230px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 10px;\n display: flex; flex-direction: column; gap: 6px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-list-row {\n display: flex; align-items: center; gap: 8px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 9px; color: var(--muted);\n}\n.tlp-ill-list-mark {\n width: 14px; height: 14px;\n border-radius: 50%;\n background: var(--accent-deep);\n color: var(--accent);\n display: inline-flex; align-items: center; justify-content: center;\n font-size: 9px; font-weight: 700;\n flex-shrink: 0;\n}\n.tlp-ill-list-row-bad .tlp-ill-list-mark {\n background: var(--paper);\n color: var(--ink);\n border: 1px solid var(--line);\n}\n.tlp-ill-list-row-bad { color: var(--ink); }\n\n.tlp-ill-cal {\n width: 64%; max-width: 180px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 10px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n}\n.tlp-ill-cal-head {\n display: flex; justify-content: space-between;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 10px; font-weight: 600;\n letter-spacing: 1px;\n color: var(--accent-deep);\n margin-bottom: 8px;\n}\n.tlp-ill-cal-grid {\n display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px;\n}\n.tlp-ill-cal-cell {\n aspect-ratio: 1;\n background: var(--line-2);\n border-radius: 3px;\n}\n.tlp-ill-cal-cell-mark {\n background: var(--accent);\n}\n\n.tlp-ill-launch svg {\n width: 72px; height: 90px;\n display: block;\n filter: drop-shadow(0 12px 22px rgba(4,50,58,0.25));\n}\n\n.tlp-ill-sparkles svg {\n width: 80%; max-width: 220px;\n height: auto;\n}\n\n.tlp-ill-meter {\n display: flex; flex-direction: column;\n align-items: center; gap: 4px;\n}\n.tlp-ill-meter svg {\n width: 120px; height: 70px;\n display: block;\n}\n.tlp-ill-meter-val {\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 16px; font-weight: 700;\n color: var(--accent-deep);\n margin-top: -8px;\n}\n\n.tlp-ill-inbox {\n display: flex; justify-content: center;\n}\n.tlp-ill-inbox-env {\n position: relative;\n width: 100px; height: 70px;\n background: #fff;\n border: 1px solid var(--line);\n border-radius: 6px;\n box-shadow: 0 12px 24px -10px rgba(4,50,58,0.18);\n overflow: hidden;\n}\n.tlp-ill-inbox-flap {\n position: absolute; inset: 0 0 auto 0;\n height: 50%;\n background: var(--accent);\n clip-path: polygon(0 0, 100% 0, 50% 100%);\n}\n.tlp-ill-inbox-body {\n position: absolute; left: 12px; right: 12px; bottom: 10px;\n display: flex; flex-direction: column; gap: 4px;\n}\n.tlp-ill-inbox-ln {\n height: 5px; background: var(--line-2); border-radius: 3px;\n}\n.tlp-ill-inbox-ln-s { width: 60%; }\n\n.tlp-ill-plate {\n width: 64px; height: 64px;\n border-radius: 14px;\n background: var(--accent-tint);\n color: var(--accent);\n display: flex; align-items: center; justify-content: center;\n}\n.tlp-ill-plate svg { width: 32px; height: 32px; }\n\n/* ────────────────────────────────────────────────────────────────────\n Legacy widget styles. The interactive tool widgets (QR generator, URL\n shortener, UTM builder, etc.) were written for the old dark-chrome\n ToolPage and use class names like .tool-input / .tool-btn-primary.\n We re-declare them here, scoped under .tlp-tool-body, so they read as\n crisp light-mode controls on the new white hero card without per-widget\n edits. New widgets should prefer real component-scoped styles.\n ──────────────────────────────────────────────────────────────────── */\n\n.tlp-tool-body .tool-card {\n /* The widget's own card wrapper - flatten inside our outer card. */\n background: transparent;\n border: 0;\n border-radius: 0;\n padding: 28px;\n margin: 0;\n}\n@media (max-width: 600px) {\n .tlp-tool-body .tool-card { padding: 18px; }\n}\n\n.tlp-tool-body .tool-label {\n display: block;\n font-size: 12.5px; font-weight: 600;\n color: var(--ink);\n margin-bottom: 6px;\n letter-spacing: 0.01em;\n}\n.tlp-tool-body .tool-help {\n font-size: 11.5px; color: var(--muted);\n margin-top: 5px; line-height: 1.5;\n}\n.tlp-tool-body .tool-input,\n.tlp-tool-body .tool-select,\n.tlp-tool-body .tool-textarea {\n width: 100%;\n background: var(--paper);\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 9px 12px;\n color: var(--ink);\n font-size: 13.5px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', ui-monospace, monospace;\n outline: none;\n transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;\n}\n.tlp-tool-body .tool-textarea { min-height: 88px; resize: vertical; line-height: 1.5; }\n.tlp-tool-body .tool-input:focus,\n.tlp-tool-body .tool-select:focus,\n.tlp-tool-body .tool-textarea:focus {\n border-color: var(--accent);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(13,189,213,0.18);\n}\n.tlp-tool-body .tool-btn-primary {\n display: inline-flex; align-items: center; gap: 8px;\n padding: 10px 18px;\n background: var(--accent);\n color: var(--accent-deep);\n border: 0;\n border-radius: 9px;\n font-size: 13px; font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n transition: transform 0.1s, box-shadow 0.15s, opacity 0.15s;\n}\n.tlp-tool-body .tool-btn-primary:hover { transform: translateY(-1px); }\n.tlp-tool-body .tool-btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n transform: none;\n}\n.tlp-tool-body .tool-btn-ghost {\n display: inline-flex; align-items: center; gap: 8px;\n padding: 10px 18px;\n background: #fff;\n color: var(--ink);\n border: 1px solid var(--line);\n border-radius: 9px;\n font-size: 13px; font-weight: 600;\n font-family: inherit;\n cursor: pointer;\n transition: border-color 0.15s, background 0.15s;\n}\n.tlp-tool-body .tool-btn-ghost:hover {\n border-color: var(--ink);\n background: var(--paper);\n}\n.tlp-tool-body .tool-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 14px;\n}\n@media (max-width: 600px) { .tlp-tool-body .tool-grid { grid-template-columns: 1fr; } }\n.tlp-tool-body .tool-result-box {\n background: var(--paper);\n border: 1px solid var(--line);\n border-radius: 10px;\n padding: 14px 16px;\n font-family: var(--brand-font-mono-stack), 'JetBrains Mono', monospace;\n font-size: 13px;\n color: var(--ink);\n word-break: break-all;\n line-height: 1.55;\n}\n.tlp-tool-body .tool-tag {\n display: inline-flex; align-items: center; gap: 6px;\n padding: 4px 10px; border-radius: 999px;\n background: var(--accent-tint);\n color: var(--accent-deep);\n font-size: 11px; font-weight: 600;\n letter-spacing: 0.04em;\n}\n.tlp-tool-body .tool-row {\n display: flex; align-items: center; gap: 8px;\n flex-wrap: wrap;\n}\n.tlp-tool-body .tool-cta {\n background: linear-gradient(135deg, rgba(13,189,213,0.12) 0%, rgba(13,189,213,0.04) 100%);\n border: 1px solid rgba(13,189,213,0.3);\n border-radius: 14px;\n padding: 22px 26px;\n margin: 22px 0 0;\n display: flex; align-items: center; gap: 22px;\n flex-wrap: wrap; justify-content: space-between;\n}\n.tlp-tool-body .tool-cta-body { flex: 1; min-width: 200px; }\n.tlp-tool-body .tool-cta-title {\n font-size: 16px; font-weight: 700;\n color: var(--ink);\n margin-bottom: 4px;\n}\n.tlp-tool-body .tool-cta-sub {\n font-size: 13.5px; color: var(--muted);\n line-height: 1.5;\n}\n/* The legacy .tool-page / .tool-hero / .tool-blurb / .tool-related blocks\n are obsolete - the new ToolPage renders all that chrome itself. Hide\n any stragglers a widget might still emit so they do not double up. */\n.tlp-tool-body :is(.tool-page, .tool-crumbs, .tool-hero, .tool-related) { display: none; }\n"])</script><script>self.__next_f.push([1,"29:[\"$\",\"div\",null,{\"className\":\"ms-page\",\"children\":[[\"$\",\"nav\",null,{\"className\":\"ms-nav\",\"children\":[\"$\",\"div\",null,{\"className\":\"ms-nav-inner\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/\",\"className\":\"ms-logo\",\"aria-label\":\"Attr.so\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex items-center \",\"style\":{\"gap\":\"0.625rem\"},\"children\":[[\"$\",\"svg\",null,{\"width\":28,\"height\":28,\"viewBox\":\"0 0 64 64\",\"className\":\"\",\"style\":{\"color\":\"var(--app-accent, #0DBDD5)\"},\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"20\",\"y\":\"8\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\",\"fillOpacity\":\"0.35\"}],[\"$\",\"rect\",null,{\"x\":\"14\",\"y\":\"14\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\",\"fillOpacity\":\"0.6\"}],[\"$\",\"rect\",null,{\"x\":\"8\",\"y\":\"20\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\"}]]}],[\"$\",\"span\",null,{\"className\":\"font-bold \",\"style\":{\"fontFamily\":\"var(--brand-font-wordmark-stack, var(--brand-font-heading-stack))\",\"fontWeight\":700,\"fontSize\":22,\"letterSpacing\":\"-0.05em\",\"lineHeight\":1},\"children\":[\"attr\",[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--app-accent, #0DBDD5)\"},\"children\":\".so\"}]]}]]}]}],[\"$\",\"div\",null,{\"className\":\"ms-nav-links\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/features\",\"className\":\"ms-nav-link \",\"children\":\"Features\"}],[\"$\",\"$L1f\",null,{\"href\":\"/about\",\"className\":\"ms-nav-link \",\"children\":\"About\"}],[\"$\",\"$L1f\",null,{\"href\":\"/extension\",\"className\":\"ms-nav-link \",\"children\":\"Chrome Extension\"}],[\"$\",\"$L1f\",null,{\"href\":\"/tools\",\"className\":\"ms-nav-link active\",\"children\":\"Free tools\"}],[\"$\",\"$L1f\",null,{\"href\":\"/blog\",\"className\":\"ms-nav-link \",\"children\":\"Blog\"}],[\"$\",\"$L1f\",null,{\"href\":\"/pricing\",\"className\":\"ms-nav-link \",\"children\":\"Pricing\"}],[[\"$\",\"$L1f\",null,{\"href\":\"/login\",\"className\":\"ms-nav-link\",\"children\":\"Sign in\"}],[\"$\",\"$L1f\",null,{\"href\":\"/login?mode=signup\",\"className\":\"ms-btn-primary\",\"children\":\"Sign up free\"}]]]}],[\"$\",\"details\",null,{\"className\":\"ms-burger\",\"children\":[[\"$\",\"summary\",null,{\"aria-label\":\"Menu\",\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"children\":[[\"$\",\"line\",null,{\"x1\":\"3\",\"y1\":\"6\",\"x2\":\"21\",\"y2\":\"6\"}],[\"$\",\"line\",null,{\"x1\":\"3\",\"y1\":\"12\",\"x2\":\"21\",\"y2\":\"12\"}],[\"$\",\"line\",null,{\"x1\":\"3\",\"y1\":\"18\",\"x2\":\"21\",\"y2\":\"18\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"ms-burger-menu\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/features\",\"className\":\"ms-nav-link \",\"children\":\"Features\"}],[\"$\",\"$L1f\",null,{\"href\":\"/about\",\"className\":\"ms-nav-link \",\"children\":\"About\"}],[\"$\",\"$L1f\",null,{\"href\":\"/extension\",\"className\":\"ms-nav-link \",\"children\":\"Chrome Extension\"}],[\"$\",\"$L1f\",null,{\"href\":\"/tools\",\"className\":\"ms-nav-link active\",\"children\":\"Free tools\"}],[\"$\",\"$L1f\",null,{\"href\":\"/blog\",\"className\":\"ms-nav-link \",\"children\":\"Blog\"}],[\"$\",\"$L1f\",null,{\"href\":\"/pricing\",\"className\":\"ms-nav-link \",\"children\":\"Pricing\"}],[[\"$\",\"$L1f\",null,{\"href\":\"/login\",\"className\":\"ms-nav-link\",\"children\":\"Sign in\"}],[\"$\",\"$L1f\",null,{\"href\":\"/login?mode=signup\",\"className\":\"ms-btn-primary\",\"children\":\"Sign up free\"}]]]}]]}]]}]}],[\"$\",\"main\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-root\",\"children\":[[\"$\",\"style\",null,{\"children\":\"$2a\"}],\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\",\"$L2f\",\"$L30\",\"$L31\"]}]}],\"$L32\"]}]\n"])</script><script>self.__next_f.push([1,"2b:[\"$\",\"section\",null,{\"className\":\"tlp-hero\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"nav\",null,{\"className\":\"tlp-crumb\",\"aria-label\":\"Breadcrumb\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/\",\"children\":\"attr.so\"}],[\"$\",\"i\",null,{\"aria-hidden\":true,\"children\":\"/\"}],[\"$\",\"$L1f\",null,{\"href\":\"/tools\",\"children\":\"Free tools\"}],[\"$\",\"i\",null,{\"aria-hidden\":true,\"children\":\"/\"}],[\"$\",\"span\",null,{\"children\":\"Meta Tag / OG Preview\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-hero-grid\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-hero-intro\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-pill\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-pill-dot\"}],\" \",\"FREE TOOL · NO SIGNUP\"]}],[\"$\",\"h1\",null,{\"className\":\"tlp-h1\",\"children\":[\"Meta Tag Preview \",[\"$\",\"em\",null,{\"className\":\"tlp-h1-mark\",\"children\":\"-free\"}],\"\"]}],[\"$\",\"p\",null,{\"className\":\"tlp-lede\",\"children\":\"Paste any URL and see exactly how it will render on Twitter, LinkedIn, Facebook, and Slack - with concrete fixes when a tag is missing or out of spec.\"}],[\"$\",\"div\",null,{\"className\":\"tlp-stat-row\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"tlp-stat\",\"children\":[[\"$\",\"b\",null,{\"children\":\"4\"}],[\"$\",\"span\",null,{\"children\":\"platforms previewed\"}]]}],[\"$\",\"div\",\"1\",{\"className\":\"tlp-stat\",\"children\":[[\"$\",\"b\",null,{\"children\":\"live\"}],[\"$\",\"span\",null,{\"children\":\"server-side fetch\"}]]}],[\"$\",\"div\",\"2\",{\"className\":\"tlp-stat\",\"children\":[[\"$\",\"b\",null,{\"children\":\"∞\"}],[\"$\",\"span\",null,{\"children\":\"urls / day\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-tool-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-tool-bar\",\"children\":[[\"$\",\"i\",null,{}],[\"$\",\"i\",null,{}],[\"$\",\"i\",null,{}],[\"$\",\"span\",null,{\"className\":\"tlp-tool-bar-url\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"11\",\"width\":\"18\",\"height\":\"11\",\"rx\":\"2\"}],[\"$\",\"path\",null,{\"d\":\"M7 11V7a5 5 0 0 1 10 0v4\"}]]}],\"attr.so/tools/meta-tag-preview\"]}],[\"$\",\"span\",null,{\"className\":\"tlp-tool-bar-live\",\"aria-hidden\":true,\"children\":\"Live preview\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-tool-body\",\"children\":[\"$\",\"$L33\",\".0\",{}]}]]}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"2c:[\"$\",\"section\",null,{\"className\":\"tlp-section\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ 5 quick steps\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"How to use this tool.\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-s-meta\",\"children\":\"~ 30 seconds end to end\"}]]}],[\"$\",\"ol\",null,{\"className\":\"tlp-steps\",\"children\":[[\"$\",\"li\",\"0\",{\"className\":\"tlp-step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-step-num\",\"children\":\"01\"}],[\"$\",\"div\",null,{\"className\":\"tlp-step-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-step-title\",\"children\":[\"Paste any public URL\",null]}],[\"$\",\"p\",null,{\"children\":\"Blog post, product page, landing page - anything with a public HTML response.\"}],null]}]]}],[\"$\",\"li\",\"1\",{\"className\":\"tlp-step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-step-num\",\"children\":\"02\"}],[\"$\",\"div\",null,{\"className\":\"tlp-step-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-step-title\",\"children\":[\"Read the live previews\",null]}],[\"$\",\"p\",null,{\"children\":\"We fetch the meta tags and render Twitter, LinkedIn, Facebook, and Slack previews exactly as those platforms will.\"}],null]}]]}],[\"$\",\"li\",\"2\",{\"className\":\"tlp-step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-step-num\",\"children\":\"03\"}],[\"$\",\"div\",null,{\"className\":\"tlp-step-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-step-title\",\"children\":[\"Edit and re-preview\",null]}],[\"$\",\"p\",null,{\"children\":\"Change the title, description, or image to test before you change anything in your CMS.\"}],null]}]]}],[\"$\",\"li\",\"3\",{\"className\":\"tlp-step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-step-num\",\"children\":\"04\"}],[\"$\",\"div\",null,{\"className\":\"tlp-step-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-step-title\",\"children\":[\"Copy the recommended HTML\",null]}],[\"$\",\"p\",null,{\"children\":\"Once the preview looks right, copy the suggested \u003cmeta\u003e tags and paste into your \u003chead\u003e section.\"}],null]}]]}],[\"$\",\"li\",\"4\",{\"className\":\"tlp-step tlp-step-upsell\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-step-num\",\"children\":\"05\"}],[\"$\",\"div\",null,{\"className\":\"tlp-step-body\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-step-title\",\"children\":[\"Track the share URL\",[\"$\",\"span\",null,{\"className\":\"tlp-step-badge\",\"children\":\"OPTIONAL\"}]]}],[\"$\",\"p\",null,{\"children\":\"Wrap the canonical URL in an attr.so short link to see which platforms actually drive clicks once the preview is live.\"}],[\"$\",\"$L1f\",null,{\"href\":\"/login?mode=signup\",\"className\":\"tlp-step-cta\",\"children\":[\"Make it trackable\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}]]}]]}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"2d:[\"$\",\"section\",null,{\"className\":\"tlp-section tlp-section-tan\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ Where people use it\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"Common use cases.\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-s-meta\",\"children\":\"6 most popular\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-cases\",\"children\":[[\"$\",\"article\",\"0\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Content\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-preview\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-ill-preview-img\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-preview-meta\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-preview-title\",\"children\":\"Track every link.\"}],[\"$\",\"span\",null,{\"className\":\"tlp-ill-preview-host\",\"children\":\"attr.so\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"01\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"Blog and content marketing\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"Make sure every post has a title, image, and description that look great on every social platform.\"}]]}]]}],[\"$\",\"article\",\"1\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill tlp-case-ill-cyan\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Launch\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-launch\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 80 100\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M40 8 C56 22 60 44 60 60 L40 78 L20 60 C20 44 24 22 40 8 Z\",\"fill\":\"var(--accent-deep)\"}],[\"$\",\"circle\",null,{\"cx\":\"40\",\"cy\":\"40\",\"r\":\"7\",\"fill\":\"var(--accent)\"}],[\"$\",\"path\",null,{\"d\":\"M20 60 L10 80 L26 72 Z\",\"fill\":\"var(--accent)\"}],[\"$\",\"path\",null,{\"d\":\"M60 60 L70 80 L54 72 Z\",\"fill\":\"var(--accent)\"}],[\"$\",\"path\",null,{\"d\":\"M40 78 L34 92 L46 92 Z\",\"fill\":\"var(--accent)\"}]]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"02\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"Product launches\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"Verify your launch URL renders correctly on the platforms your audience uses before you announce it.\"}]]}]]}],[\"$\",\"article\",\"2\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Migrations\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-browser\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-ill-browser-bar\",\"children\":[[\"$\",\"i\",null,{}],[\"$\",\"i\",null,{}],[\"$\",\"i\",null,{}],[\"$\",\"span\",null,{\"className\":\"tlp-ill-browser-url\",\"children\":\"attr.so\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-browser-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-browser-row\"}],[\"$\",\"span\",null,{\"className\":\"tlp-ill-browser-row tlp-ill-browser-row-s\"}],[\"$\",\"span\",null,{\"className\":\"tlp-ill-browser-row\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"03\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"Site redesigns\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"Catch missing or stale OG tags after a CMS migration before your search and social previews break.\"}]]}]]}],[\"$\",\"article\",\"3\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill tlp-case-ill-cyan\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Audit\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-list\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"tlp-ill-list-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-list-mark\",\"aria-hidden\":true,\"children\":\"✓\"}],[\"$\",\"span\",null,{\"children\":\"utm_source = newsletter\"}]]}],[\"$\",\"div\",\"1\",{\"className\":\"tlp-ill-list-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-list-mark\",\"aria-hidden\":true,\"children\":\"✓\"}],[\"$\",\"span\",null,{\"children\":\"utm_medium = email\"}]]}],[\"$\",\"div\",\"2\",{\"className\":\"tlp-ill-list-row tlp-ill-list-row-bad\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-list-mark\",\"aria-hidden\":true,\"children\":\"!\"}],[\"$\",\"span\",null,{\"children\":\"utm_campaign = Spring%20Sale\"}]]}],[\"$\",\"div\",\"3\",{\"className\":\"tlp-ill-list-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-ill-list-mark\",\"aria-hidden\":true,\"children\":\"✓\"}],[\"$\",\"span\",null,{\"children\":\"utm_content = button_a\"}]]}]]}]]}],\"$L34\"]}],\"$L35\",\"$L36\"]}]]}]}]\n"])</script><script>self.__next_f.push([1,"2e:[\"$\",\"section\",null,{\"className\":\"tlp-section\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ The difference\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"Free, then trackable when you need it.\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-s-meta\",\"children\":\"vs typical free tools\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-diff\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-diff-col tlp-diff-them\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-badge tlp-diff-badge-them\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"⚠\"}],\" Most free tools\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-diff-h3\",\"children\":\"What you usually get\"}],[\"$\",\"ul\",null,{\"className\":\"tlp-diff-list\",\"children\":[[\"$\",\"li\",\"0\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-them\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6 6l12 12M6 18L18 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Client-side only\",\".\"]}],\" \",\"Browser CORS rules block most pages; you get \\\"fetch failed\\\" half the time.\"]}]]}],[\"$\",\"li\",\"1\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-them\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6 6l12 12M6 18L18 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"One platform per page\",\".\"]}],\" \",\"Twitter validator and LinkedIn inspector live on different sites with different UIs.\"]}]]}],[\"$\",\"li\",\"2\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-them\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6 6l12 12M6 18L18 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Cryptic error messages\",\".\"]}],\" \",\"\\\"og:image missing or invalid\\\" - good luck guessing which dimension is wrong.\"]}]]}],[\"$\",\"li\",\"3\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-them\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6 6l12 12M6 18L18 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"No raw tag dump\",\".\"]}],\" \",\"You see the rendered preview but not which tag drove which decision.\"]}]]}],[\"$\",\"li\",\"4\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-them\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M6 6l12 12M6 18L18 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"URL added to history\",\".\"]}],\" \",\"Many free debuggers log queries publicly. Embarrassing for unreleased URLs.\"]}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-diff-col tlp-diff-us\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-badge tlp-diff-badge-us\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 64 64\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"20\",\"y\":\"8\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fillOpacity\":\".35\"}],[\"$\",\"rect\",null,{\"x\":\"14\",\"y\":\"14\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fillOpacity\":\".6\"}],[\"$\",\"rect\",null,{\"x\":\"8\",\"y\":\"20\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\"}]]}],\" attr.so · what we ship\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-diff-h3\",\"children\":\"What you get here\"}],[\"$\",\"ul\",null,{\"className\":\"tlp-diff-list\",\"children\":[[\"$\",\"li\",\"0\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-us\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M5 12l4 4L19 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Server-side, real-crawler fetch\",\".\"]}],\" \",\"We follow redirects and read the final HTML the same way a social bot would.\"]}]]}],[\"$\",\"li\",\"1\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-us\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M5 12l4 4L19 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Four platforms in one view\",\".\"]}],\" \",\"Twitter, LinkedIn, Facebook, Slack - side by side as you edit.\"]}]]}],\"$L37\",\"$L38\",\"$L39\"]}]]}]]}]]}]}]\n"])</script><script>self.__next_f.push([1,"2f:[\"$\",\"section\",null,{\"className\":\"tlp-section\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ FAQ\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"Frequently asked.\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-s-meta\",\"children\":[\"Can't find it? \",[\"$\",\"$L1f\",null,{\"href\":\"/support\",\"className\":\"tlp-s-meta-link\",\"children\":\"Email us\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-faq\",\"data-tlp-faq\":true,\"children\":[[\"$\",\"details\",\"0\",{\"className\":\"tlp-q\",\"open\":true,\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"What are Open Graph and Twitter Card tags?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"Open Graph (og:*) is Facebook\u0026apos;s standard for rich link previews; LinkedIn, Slack, Discord, iMessage, and most other apps also read it. Twitter Cards (twitter:*) are Twitter\u0026apos;s parallel standard. Most pages set both.\"}}]]}],[\"$\",\"details\",\"1\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"What is the ideal og:image size?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"1200 x 630 pixels at a 1.91 : 1 aspect ratio is the sweet spot - Facebook and LinkedIn both crop to roughly that. Keep file size under 8 MB; PNG and JPG both work.\"}}]]}],[\"$\",\"details\",\"2\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"Why does my OG image not show up on LinkedIn?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"Three usual culprits: (1) image URL is relative not absolute, (2) image is behind authentication or referer-blocked, (3) LinkedIn cached an older version - use LinkedIn Post Inspector to flush.\"}}]]}],[\"$\",\"details\",\"3\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"Does Google use Open Graph tags for SEO?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"Indirectly. Google primarily uses \u003ctitle\u003e and \u003cmeta description\u003e, but a complete Open Graph set helps with social sharing, which drives backlinks and brand searches that do affect ranking.\"}}]]}],[\"$\",\"details\",\"4\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"How do platforms cache previews?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"Most platforms cache for ~7 days after first scrape. Facebook\u0026apos;s Sharing Debugger and LinkedIn\u0026apos;s Post Inspector both let you force a re-scrape.\"}}]]}],[\"$\",\"details\",\"5\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"Can I generate the meta tag HTML automatically?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":\"$L3a\"}]]}],\"$L3b\"]}],\"$L3c\"]}],\"$L3d\"]}]}]\n"])</script><script>self.__next_f.push([1,"30:[\"$\",\"section\",null,{\"className\":\"tlp-section tlp-section-tan\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ Keep going\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"Pair with these.\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"tlp-rel-grid\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-rel-col\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-rel-h3\",\"children\":\"Related free tools\"}],[\"$\",\"div\",null,{\"className\":\"tlp-rel-rows\",\"children\":[[\"$\",\"$L1f\",\"social-preview\",{\"href\":\"/tools/social-preview\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"3\",\"width\":\"18\",\"height\":\"18\",\"rx\":\"2\"}],[\"$\",\"circle\",null,{\"cx\":\"9\",\"cy\":\"9\",\"r\":\"2\"}],[\"$\",\"path\",null,{\"d\":\"m21 15-5-5L5 21\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Social Media Preview\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"Preview every platform\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}],[\"$\",\"$L1f\",\"link-privacy-checker\",{\"href\":\"/tools/link-privacy-checker\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"11\",\"width\":\"18\",\"height\":\"11\",\"rx\":\"2\"}],[\"$\",\"path\",null,{\"d\":\"M7 11V7a5 5 0 0 1 10 0v4\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Link Privacy Checker\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"Where does a short link go?\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}],[\"$\",\"$L1f\",\"utm-builder\",{\"href\":\"/tools/utm-builder\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[\"$\",\"path\",null,{\"d\":\"M4 6h16M4 12h16M4 18h10\"}]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"UTM Parameter Builder\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"Tag campaigns properly\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}],[\"$\",\"$L1f\",\"qr-code-generator\",{\"href\":\"/tools/qr-code-generator\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"3\",\"width\":\"7\",\"height\":\"7\",\"rx\":\"1\"}],[\"$\",\"rect\",null,{\"x\":\"14\",\"y\":\"3\",\"width\":\"7\",\"height\":\"7\",\"rx\":\"1\"}],[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"14\",\"width\":\"7\",\"height\":\"7\",\"rx\":\"1\"}],[\"$\",\"path\",null,{\"d\":\"M14 14h3v3M17 21h4v-4\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"QR Code Generator\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"QR codes from any URL\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-rel-col\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-rel-h3\",\"children\":\"Related guides\"}],[\"$\",\"div\",null,{\"className\":\"tlp-rel-rows\",\"children\":[[\"$\",\"$L1f\",\"0\",{\"href\":\"/tools/social-preview\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon tlp-rel-icon-soft\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M4 4h12l4 4v12H4z\"}],[\"$\",\"path\",null,{\"d\":\"M16 4v4h4M8 12h8M8 16h6\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Generate full meta tag HTML\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"FREE TOOL\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}],[\"$\",\"$L1f\",\"1\",{\"href\":\"/tools/link-privacy-checker\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon tlp-rel-icon-soft\",\"aria-hidden\":true,\"children\":\"$L3e\"}],\"$L3f\",\"$L40\"]}],\"$L41\",\"$L42\"]}]]}]]}],\"$L43\"]}]}]\n"])</script><script>self.__next_f.push([1,"31:[\"$\",\"section\",null,{\"className\":\"tlp-section tlp-section-other\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-container\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-s-head\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-eyebrow\",\"children\":\"/ More from attr.so\"}],[\"$\",\"h2\",null,{\"className\":\"tlp-h2\",\"children\":\"Other free tools.\"}]]}],[\"$\",\"$L1f\",null,{\"href\":\"/tools\",\"className\":\"tlp-s-meta tlp-s-meta-link\",\"children\":[\"Browse all \",12,\" →\"]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-otile-grid\",\"children\":[[\"$\",\"$L1f\",\"qr-code-generator\",{\"href\":\"/tools/qr-code-generator\",\"className\":\"tlp-otile\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":\"$30:props:children:props:children:1:props:children:0:props:children:1:props:children:3:props:children:0:props:children:props:children\"}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"QR Code Generator\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"QR codes from any URL\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"Open tool\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}]]}],[\"$\",\"$L1f\",\"url-shortener\",{\"href\":\"/tools/url-shortener\",\"className\":\"tlp-otile\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"}],[\"$\",\"path\",null,{\"d\":\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.72-1.71\"}]]}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"URL Shortener\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"Shorten long URLs\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"Open tool\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}]]}],[\"$\",\"$L1f\",\"utm-builder\",{\"href\":\"/tools/utm-builder\",\"className\":\"tlp-otile\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":\"$30:props:children:props:children:1:props:children:0:props:children:1:props:children:2:props:children:0:props:children:props:children\"}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"UTM Parameter Builder\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"Tag campaigns properly\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"Open tool\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}]]}],[\"$\",\"div\",\"meta-tag-preview\",{\"className\":\"tlp-otile tlp-otile-current\",\"aria-current\":\"page\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"3\",\"y\":\"4\",\"width\":\"18\",\"height\":\"14\",\"rx\":\"2\"}],[\"$\",\"path\",null,{\"d\":\"M3 9h18M8 14h6\"}]]}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"Meta Tag / OG Preview\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"See how a link looks\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"You're here\",null]}]]}],[\"$\",\"$L1f\",\"link-privacy-checker\",{\"href\":\"/tools/link-privacy-checker\",\"className\":\"tlp-otile\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":\"$30:props:children:props:children:1:props:children:0:props:children:1:props:children:1:props:children:0:props:children:props:children\"}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"Link Privacy Checker\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"Where does a short link go?\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"Open tool\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[\"$L44\",\"$L45\"]}]]}]]}],\"$L46\"]}]]}]}]\n"])</script><script>self.__next_f.push([1,"47:Td14,"])</script><script>self.__next_f.push([1,"\n .ms-footer {\n /* Scope dark-palette values so the footer stays dark on every theme,\n matching the design spec in screenshots/footer.png. */\n --ms-surface: #0a0d14;\n --ms-text: #e2eaf6;\n --ms-muted: #8ca0bc;\n --ms-border: rgba(255, 255, 255, 0.08);\n background: var(--ms-surface);\n border-top: 1px solid var(--ms-border);\n margin: 0;\n padding: 36px 40px 24px;\n color: var(--ms-text);\n }\n @media (max-width: 720px) {\n .ms-footer { padding: 28px 20px 20px; }\n }\n .ms-footer .ms-logo {\n font-family: var(--font-display);\n font-weight: 700; font-size: 18px;\n color: var(--ms-text); text-decoration: none;\n display: flex; align-items: center; gap: 8px;\n flex-shrink: 0;\n }\n .ms-footer .ms-logo-mark {\n width: 28px; height: 28px;\n border-radius: 6px; overflow: hidden;\n display: inline-flex; flex-shrink: 0;\n }\n .ms-footer .ms-logo-mark img { width: 100%; height: 100%; display: block; }\n .ms-footer-top {\n display: grid;\n grid-template-columns: minmax(0, 1.4fr) minmax(0, 2fr);\n gap: 32px;\n align-items: start;\n max-width: 1200px; margin: 0 auto;\n }\n @media (max-width: 720px) {\n .ms-footer-top { grid-template-columns: 1fr; gap: 28px; }\n }\n .ms-footer-brand {\n display: flex; flex-direction: column; gap: 14px;\n max-width: 360px;\n }\n .ms-footer-tagline {\n font-size: 14px; color: var(--ms-muted); line-height: 1.55;\n }\n .ms-footer-cols {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 24px;\n }\n @media (max-width: 480px) {\n .ms-footer-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n }\n .ms-footer-col-title {\n font-size: 13px; font-weight: 700; color: var(--ms-text);\n margin: 0 0 12px; letter-spacing: 0.01em;\n }\n .ms-footer-col-list {\n display: flex; flex-direction: column; gap: 8px;\n list-style: none; padding: 0; margin: 0;\n }\n .ms-footer-link {\n font-size: 13px; color: var(--ms-muted);\n text-decoration: none; transition: color 0.15s;\n }\n .ms-footer-link:hover { color: var(--ms-text); }\n .ms-footer-credit-row {\n max-width: 1200px; margin: 28px auto 0;\n padding-top: 18px;\n border-top: 1px solid var(--ms-border);\n display: flex; justify-content: space-between; align-items: center;\n gap: 16px; flex-wrap: wrap;\n }\n .ms-footer-credit {\n font-size: 12px; color: var(--ms-muted);\n font-family: var(--brand-font-mono-stack);\n }\n .ms-footer-built {\n font-size: 12px; color: var(--ms-muted);\n display: inline-flex; align-items: center; gap: 8px;\n text-decoration: none;\n }\n .ms-footer-built:hover { color: var(--ms-text); }\n .ms-footer-built-text { color: inherit; }\n .ms-footer-built-icon {\n width: 16px; height: 16px; display: block;\n border-radius: 4px; flex-shrink: 0;\n }\n "])</script><script>self.__next_f.push([1,"32:[[\"$\",\"style\",null,{\"children\":\"$47\"}],\"$L48\"]\n34:[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"04\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"SEO + social audits\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"Quick QA pass for agencies - does this client page have a description over 160 chars? Is og:image present?\"}]]}]\n35:[\"$\",\"article\",\"4\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Debug\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-shield\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 64 72\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M32 4 L60 14 L60 38 C60 54 48 64 32 70 C16 64 4 54 4 38 L4 14 Z\",\"fill\":\"var(--accent-deep)\"}],[\"$\",\"path\",null,{\"d\":\"M22 36 L30 44 L46 28\",\"stroke\":\"var(--accent)\",\"strokeWidth\":\"5\",\"fill\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}]]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"05\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"\\\"No preview\\\" debugging\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"When LinkedIn or Slack shows a bare URL instead of a card, this tool tells you which tag is missing.\"}]]}]]}]\n36:[\"$\",\"article\",\"5\",{\"className\":\"tlp-case\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-case-ill tlp-case-ill-cyan\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-tag\",\"children\":\"Internal\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-social\",\"children\":[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-card\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-av\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-meta\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-name\",\"children\":\"@attrso\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-ln\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-ln tlp-ill-social-ln-s\"}],[\"$\",\"div\",null,{\"className\":\"tlp-ill-social-link\",\"children\":\"attr.so/launch\"}]]}]]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-case-body\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-case-label\",\"children\":[\"USE CASE \",\"06\"]}],[\"$\",\"h3\",null,{\"className\":\"tlp-case-title\",\"children\":\"Internal team links\"}],[\"$\",\"p\",null,{\"className\":\"tlp-case-text\",\"children\":\"Even Slack-shared internal links benefit from a clean preview - avoid bare-URL ugliness in team channels.\"}]]}]]}]\n37:[\"$\",\"li\",\"2\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-us\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M5 12l4 4L19 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Concrete fix suggestions\",\".\"]}],\" \",\"We tell you which tag to change and what the new value should be, not just \\\"missing\\\".\"]}]]}]\n38:[\"$\",\"li\",\"3\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-us\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M5 12l4 4L19 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"Raw tag inspection\",\".\"]}],\" \",\"Every og:* and twitter:* tag the page emitted, sorted and labelled.\"]}]]}]\n39:[\"$\",\"li\",\"4\",{\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-diff-mark tlp-diff-mark-us\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"9\",\"height\":\"9\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"3\",\"children\":[\"$\",\"path\",null,{\"d\":\"M5 12l4 4L19 6\"}]}]}],[\"$\",\"span\",null,{\"children\":[[\"$\",\"b\",null,{\"children\":[\"No URL logging\",\".\"]}],\" \",\"We fetch once, parse, and discard. Your URL never goes into a queryable log.\"]}]]}]\n3a:[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,"])</script><script>self.__next_f.push([1,"{\"d\":\"M12 5v14M5 12h14\"}]}]\n3b:[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"Yes - see our Social Media Preview Generator, which produces the full Open Graph + Twitter Card HTML block ready to paste into your \u003chead\u003e.\"}}]\n3c:[\"$\",\"details\",\"6\",{\"className\":\"tlp-q\",\"open\":\"$undefined\",\"children\":[[\"$\",\"summary\",null,{\"children\":[[\"$\",\"span\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"Does this tool send my URL anywhere?\"}}],[\"$\",\"span\",null,{\"className\":\"tlp-q-tog\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"11\",\"height\":\"11\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 5v14M5 12h14\"}]}]}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-q-a\",\"dangerouslySetInnerHTML\":{\"__html\":\"We fetch the URL once, server-side, parse the HTML, and discard it. We do not log the URL or its content.\"}}]]}]\n3d:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){\\n var root = document.querySelector('[data-tlp-faq]');\\n if (!root) return;\\n var all = root.querySelectorAll('details.tlp-q');\\n all.forEach(function(d){\\n d.addEventListener('toggle', function(){\\n if (d.open) all.forEach(function(o){ if (o !== d) o.open = false; });\\n });\\n });\\n})();\"}}]\n3e:[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M4 4h12l4 4v12H4z\"}],[\"$\",\"path\",null,{\"d\":\"M16 4v4h4M8 12h8M8 16h6\"}]]}]\n3f:[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Check the redirect chain\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"FREE TOOL\"}]]}]\n40:[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]\n41:[\"$\",\"$L1f\",\"2\",{\"href\":\"/tools/utm-builder\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon tlp-rel-icon-soft\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M4 4h12l4 4v12H4z\"}],[\"$\",\"path\",null,{\"d\":\"M16 4v4h4M8 12h8M8 16h6\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Build a tagged share URL with UTMs\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"FREE TOOL\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}]\n42:[\"$\",\"$L1f\",\"3\",{\"href\":\"/tools/qr-code-generator\",\"className\":\"tlp-rel-row\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-icon tlp-rel-icon-soft\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M4 4h12l4 4v12H4z\"}],[\"$\",\"path\",null,{\"d\":\"M16 4v4h4M8 12h8M8 16h6\"}]]}]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-text\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-rel-title\",\"children\":\"Generate a QR code for the share\"}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-sub\",\"children\":\"FREE TOOL\"}]]}],[\"$\",\"span\",null,{\"className\":\"tlp-rel-arr\",\"aria-hidden\":true,\"children\":\"→\"}]]}]\n43:[\"$\",\"div\",null,{\"className\":\"tlp-track\",\"children\":[[\"$\",\"div\",null,{\"className\":\"tlp-track-tx\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"tlp-track-h\",\"children\":\"Track how each platform sends traffic.\"}],[\"$\",\"p\",null,{\"children\":\"Wrap the canonical URL in an attr.so short link and see which platforms convert the previewed share.\"}]]}],[\"$\",\"div\",null,{\"className\":\"tlp-track-actions\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/login?mode=signup\",\"className\":\"tlp-btn tlp-btn-cyan\",\"children\":[\"Start free \",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}],[\"$\",\"$L1f\",null,{\"href\":\"/#prici"])</script><script>self.__next_f.push([1,"ng\",\"className\":\"tlp-btn tlp-btn-outline-white\",\"children\":\"See pricing\"}]]}]]}]\n44:[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}]\n45:[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]\n46:[\"$\",\"$L1f\",\"geo-blocker\",{\"href\":\"/tools/geo-blocker\",\"className\":\"tlp-otile\",\"children\":[[\"$\",\"span\",null,{\"className\":\"tlp-otile-ic\",\"aria-hidden\":true,\"children\":[\"$\",\"svg\",null,{\"width\":\"18\",\"height\":\"18\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"circle\",null,{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"10\"}],[\"$\",\"path\",null,{\"d\":\"M2 12h20M12 2a15 15 0 0 1 0 20M12 2a15 15 0 0 0 0 20\"}]]}]}],[\"$\",\"h3\",null,{\"className\":\"tlp-otile-name\",\"children\":\"Geo-Block Tester\"}],[\"$\",\"p\",null,{\"className\":\"tlp-otile-desc\",\"children\":\"Country-level blocks\"}],[\"$\",\"span\",null,{\"className\":\"tlp-otile-foot\",\"children\":[\"Open tool\",[\"$\",\"svg\",null,{\"width\":\"14\",\"height\":\"14\",\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"aria-hidden\":true,\"children\":[[\"$\",\"path\",null,{\"d\":\"M5 12h14\"}],[\"$\",\"path\",null,{\"d\":\"m12 5 7 7-7 7\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"48:[\"$\",\"footer\",null,{\"className\":\"ms-footer\",\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-top\",\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-brand\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/\",\"className\":\"ms-logo\",\"aria-label\":\"Attr.so\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex items-center \",\"style\":{\"gap\":\"0.625rem\"},\"children\":[[\"$\",\"svg\",null,{\"width\":28,\"height\":28,\"viewBox\":\"0 0 64 64\",\"className\":\"\",\"style\":{\"color\":\"var(--app-accent, #0DBDD5)\"},\"aria-hidden\":true,\"children\":[[\"$\",\"rect\",null,{\"x\":\"20\",\"y\":\"8\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\",\"fillOpacity\":\"0.35\"}],[\"$\",\"rect\",null,{\"x\":\"14\",\"y\":\"14\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\",\"fillOpacity\":\"0.6\"}],[\"$\",\"rect\",null,{\"x\":\"8\",\"y\":\"20\",\"width\":\"36\",\"height\":\"36\",\"rx\":\"8\",\"fill\":\"currentColor\"}]]}],[\"$\",\"span\",null,{\"className\":\"font-bold \",\"style\":{\"fontFamily\":\"var(--brand-font-wordmark-stack, var(--brand-font-heading-stack))\",\"fontWeight\":700,\"fontSize\":22,\"letterSpacing\":\"-0.05em\",\"lineHeight\":1},\"children\":[\"attr\",[\"$\",\"span\",null,{\"style\":{\"color\":\"var(--app-accent, #0DBDD5)\"},\"children\":\".so\"}]]}]]}]}],[\"$\",\"p\",null,{\"className\":\"ms-footer-tagline\",\"children\":\"Privacy-first, developer-friendly link management software\"}]]}],[\"$\",\"div\",null,{\"className\":\"ms-footer-cols\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-col-title\",\"children\":\"Product\"}],[\"$\",\"ul\",null,{\"className\":\"ms-footer-col-list\",\"children\":[[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/features\",\"className\":\"ms-footer-link\",\"children\":\"Features\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/extension\",\"className\":\"ms-footer-link\",\"children\":\"Chrome Extension\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/tools\",\"className\":\"ms-footer-link\",\"children\":\"Free tools\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/#pricing\",\"className\":\"ms-footer-link\",\"children\":\"Pricing\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/docs\",\"className\":\"ms-footer-link\",\"children\":\"Docs\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/docs/api\",\"className\":\"ms-footer-link\",\"children\":\"API reference\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/changelog\",\"className\":\"ms-footer-link\",\"children\":\"Changelog\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/roadmap\",\"className\":\"ms-footer-link\",\"children\":\"Roadmap\"}]}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-col-title\",\"children\":\"Company\"}],[\"$\",\"ul\",null,{\"className\":\"ms-footer-col-list\",\"children\":[[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/about\",\"className\":\"ms-footer-link\",\"children\":\"About\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/blog\",\"className\":\"ms-footer-link\",\"children\":\"Blog\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/help\",\"className\":\"ms-footer-link\",\"children\":\"Help\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/feature-requests\",\"className\":\"ms-footer-link\",\"children\":\"Feature requests\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/support\",\"className\":\"ms-footer-link\",\"children\":\"Support\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/status\",\"className\":\"ms-footer-link\",\"children\":\"Status\"}]}]]}]]}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-col-title\",\"children\":\"Legal\"}],[\"$\",\"ul\",null,{\"className\":\"ms-footer-col-list\",\"children\":[[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/privacy\",\"className\":\"ms-footer-link\",\"children\":\"Privacy\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/terms\",\"className\":\"ms-footer-link\",\"children\":\"Terms\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L1f\",null,{\"href\":\"/security\",\"className\":\"ms-footer-link\",\"children\":\"Security\"}]}]]}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"ms-footer-credit-row\",\"children\":[[\"$\",\"div\",null,{\"className\":\"ms-footer-credit\",\"children\":[\"© \",2026,\" \",\"Attr.so\",\" - All rights reserved\"]}],[\"$\",\"a\",null,{\"href\":\"https://apptimistic.com\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"className\":\"ms-footer-built\",\"aria-label\":\"Built by Apptimistic\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/apptimistic.png\",\"alt\":\"\",\"width\":16,\"height\":16,\"className\":\"ms-footer-built-icon\"}],[\"$\",\"span\",null,{\"className\":\"ms-footer-built-text\",\"children\":\"Built by Apptimistic\"}]]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"16:null\n"])</script><script>self.__next_f.push([1,"1b:[[\"$\",\"title\",\"0\",{\"children\":\"Free Meta Tag Preview \u0026 OG Checker | Attr.so\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Paste a URL and see how it renders on Twitter, LinkedIn, Facebook, and Slack. Free Open Graph + meta tag inspector with edit suggestions.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/site.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Attr.so - Privacy-first, developer-friendly link management software\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Transform weak prompts into expert-quality ones in one click. Works on ChatGPT, Claude, Gemini, Grok \u0026 Perplexity.\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:image\",\"content\":\"https://attr.so/og-image.png\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image:alt\",\"content\":\"Attr.so\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:title\",\"content\":\"Attr.so - Privacy-first, developer-friendly link management software\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:description\",\"content\":\"Transform weak prompts into expert-quality ones in one click. Works on ChatGPT, Claude, Gemini, Grok \u0026 Perplexity.\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:image\",\"content\":\"https://attr.so/og-image.png\"}],[\"$\",\"link\",\"14\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"15\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.03ha8wtwncf8v.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"16\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"18\",{\"rel\":\"icon\",\"href\":\"/icons/icon-16x16.png\",\"sizes\":\"16x16\",\"type\":\"image/png\"}],[\"$\",\"link\",\"19\",{\"rel\":\"icon\",\"href\":\"/icons/icon-32x32.png\",\"sizes\":\"32x32\",\"type\":\"image/png\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/icons/icon-96x96.png\",\"sizes\":\"96x96\",\"type\":\"image/png\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"/icons/icon-192x192.png\",\"sizes\":\"192x192\",\"type\":\"image/png\"}],[\"$\",\"link\",\"22\",{\"rel\":\"icon\",\"href\":\"/icons/icon-512x512.png\",\"sizes\":\"512x512\",\"type\":\"image/png\"}],[\"$\",\"link\",\"23\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$L49\",\"24\",{}]]\n"])</script></body></html>