{"compiledCode":"\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _react = require('react'); var _react2 = _interopRequireDefault(_react);\n\n function OutclimberPage() {\n  const [query, setQuery] = _react2.default.useState(\"\");\n  const [category, setCategory] = _react2.default.useState(\"All tools\");\n  const tools = [\n    {\n      name: \"Customer Journey Map\",\n      description:\n        \"A worksheet for mapping every stage a customer moves through, from first contact to after the sale.\",\n      group: \"Customer experience\",\n      id: \"customer-journey-map\",\n      guide: \"/blog/map-customer-journey-service-business\",\n      guideLabel: \"How to map your customer journey\",\n    },\n    {\n      name: \"CX Friction Audit\",\n      description:\n        \"A checklist that walks you through each touchpoint looking for the small frustrations that cost you customers.\",\n      group: \"Customer experience\",\n      id: \"cx-friction-audit\",\n      guide: \"/blog/find-friction-customer-journey\",\n      guideLabel: \"How to find friction in your customer journey\",\n    },\n    {\n      name: \"First-Impression Audit\",\n      description:\n        \"A worksheet for grading the very first thing a prospect sees or hears from you, before they decide whether to keep going.\",\n      group: \"Customer experience\",\n      id: \"first-impression-audit\",\n      guide: \"/customer-experience\",\n      guideLabel: \"Customer Experience hub\",\n    },\n    {\n      name: \"CX Priority Scorecard\",\n      description:\n        \"A scoring worksheet that ranks your customer-experience problems by impact and effort, so you know what to fix first.\",\n      group: \"Customer experience\",\n      id: \"cx-priority-scorecard\",\n      guide: \"/blog/where-to-start-improving-cx\",\n      guideLabel: \"Where to start improving your CX\",\n    },\n    {\n      name: \"Positioning Worksheet\",\n      description:\n        \"A set of prompts that turn a vague sense of being different into one clear, honest positioning sentence.\",\n      group: \"Positioning\",\n      id: \"positioning-worksheet\",\n      guide: \"/blog/write-a-positioning-statement\",\n      guideLabel: \"How to write a positioning statement\",\n    },\n    {\n      name: \"Competitor Analysis Template\",\n      description:\n        \"A structured grid for studying rivals fairly: what they offer, who they serve, and the gaps you can credibly own.\",\n      group: \"Positioning\",\n      id: \"competitor-analysis-template\",\n      guide: \"/competitive-strategy\",\n      guideLabel: \"Competitive Strategy hub\",\n    },\n    {\n      name: \"Competitive Differentiation Worksheet\",\n      description:\n        \"A worksheet for pinpointing what you genuinely do better and translating it into language customers care about.\",\n      group: \"Positioning\",\n      id: \"competitive-differentiation-worksheet\",\n      guide: \"/competitive-strategy\",\n      guideLabel: \"Competitive Strategy hub\",\n    },\n    {\n      name: \"Offer Packaging Worksheet\",\n      description:\n        \"A worksheet for turning a messy, custom-quoted service into one or more clear, buyable packages.\",\n      group: \"Offers\",\n      id: \"offer-packaging-worksheet\",\n      guide: \"/blog/package-a-service-offer\",\n      guideLabel: \"How to package a service into an offer\",\n    },\n    {\n      name: \"Service Page Template\",\n      description:\n        \"A page outline that lays out every section a service page needs to answer a buyer's questions and earn the inquiry.\",\n      group: \"Offers\",\n      id: \"service-page-template\",\n      guide: \"/blog/improve-service-page\",\n      guideLabel: \"How to improve your service page\",\n    },\n    {\n      name: \"Quote-Intake Checklist\",\n      description:\n        \"A checklist of everything to gather before quoting, so estimates are accurate and you stop chasing missing details.\",\n      group: \"Offers\",\n      id: \"quote-intake-checklist\",\n      guide: \"/offers\",\n      guideLabel: \"Offers hub\",\n    },\n    {\n      name: \"Homepage Trust Audit\",\n      description:\n        \"A checklist for grading whether your homepage answers the questions a first-time visitor needs answered to trust you.\",\n      group: \"Website\",\n      id: \"homepage-trust-audit\",\n      guide: \"/website-experience\",\n      guideLabel: \"Website Experience hub\",\n    },\n    {\n      name: \"Website Friction Audit\",\n      description:\n        \"A checklist that walks your site as a visitor would, flagging the dead ends and confusing steps that lose conversions.\",\n      group: \"Website\",\n      id: \"website-friction-audit\",\n      guide: \"/blog/diagnose-website-conversion-problem\",\n      guideLabel: \"How to diagnose a website conversion problem\",\n    },\n    {\n      name: \"Customer Onboarding Checklist\",\n      description:\n        'A step-by-step checklist for the \"after they say yes\" period, so new customers feel guided instead of abandoned.',\n      group: \"Onboarding & support\",\n      id: \"customer-onboarding-checklist\",\n      guide: \"/blog/customer-onboarding-process\",\n      guideLabel: \"How to build a customer onboarding process\",\n    },\n    {\n      name: \"Service Recovery Email Templates\",\n      description:\n        \"A set of email scripts for responding when something goes wrong, written to repair trust rather than dodge blame.\",\n      group: \"Onboarding & support\",\n      id: \"service-recovery-email-templates\",\n      guide: \"/onboarding\",\n      guideLabel: \"Onboarding & Support hub\",\n    },\n    {\n      name: \"Customer Follow-Up Sequence\",\n      description:\n        \"A worksheet for planning the messages that keep you in touch after the job is done, so customers come back and refer.\",\n      group: \"Retention & reviews\",\n      id: \"customer-follow-up-sequence\",\n      guide: \"/blog/customer-follow-up-system\",\n      guideLabel: \"How to build a customer follow-up system\",\n    },\n    {\n      name: \"Review Request Script\",\n      description:\n        \"A script for asking customers for honest reviews, written to follow FTC guidance: no gating, no incentives for positive reviews.\",\n      group: \"Retention & reviews\",\n      id: \"review-request-script\",\n      guide: \"/blog/how-to-ask-for-reviews-ethically\",\n      guideLabel: \"How to ask for reviews ethically\",\n    },\n    {\n      name: \"SOP Template\",\n      description:\n        \"A fill-in template for documenting a repeatable process so anyone on your team can run it the same way every time.\",\n      group: \"Operations\",\n      id: \"sop-template\",\n      guide: \"/blog/how-to-write-an-sop\",\n      guideLabel: \"How to write an SOP\",\n    },\n    {\n      name: \"Customer Feedback Survey\",\n      description:\n        \"A short, ready-to-send survey for learning what customers actually think, with questions designed to get honest answers.\",\n      group: \"Operations\",\n      id: \"customer-feedback-survey\",\n      guide: \"/operations\",\n      guideLabel: \"Operations hub\",\n    },\n  ];\n  const categories = [\n    \"All tools\",\n    \"Customer experience\",\n    \"Positioning\",\n    \"Offers\",\n    \"Website\",\n    \"Onboarding & support\",\n    \"Retention & reviews\",\n    \"Operations\",\n  ];\n  const visible = tools.filter(\n    (tool) =>\n      (category === \"All tools\" || tool.group === category) &&\n      [tool.name, tool.description, tool.group]\n        .join(\" \")\n        .toLowerCase()\n        .includes(query.trim().toLowerCase()),\n  );\n  return (\n    _react2.default.createElement('div', { className: \"oc-field\",}\n      , _react2.default.createElement('style', null\n        , \n          \".oc-field{width:100%;max-width:100%;min-width:0;margin:auto;padding:1.4rem 1rem 2rem;color:var(--c13eu7bh-runtime-text,#183731);font-family:var(--c13eu7bh-font-body,inherit);line-height:1.65}.oc-field *{box-sizing:border-box;min-width:0}.oc-field a{color:var(--c13eu7bh-runtime-accent,#1f6f6b);text-underline-offset:4px}.oc-field a:hover{text-decoration:underline}.oc-field :is(a,button,input,summary):focus-visible{outline:3px solid var(--c13eu7bh-runtime-accent,#1f6f6b);outline-offset:4px}.oc-field h1,.oc-field h2,.oc-field h3{font-family:var(--c13eu7bh-font-heading,Georgia,serif);font-weight:500;color:var(--c13eu7bh-runtime-text,#183731);line-height:1.13}.oc-field h1{font-size:clamp(2.5rem,5.2vw,4.5rem);letter-spacing:-.045em;margin:.7rem 0 1.2rem;max-width:16ch}.oc-field h2{font-size:clamp(1.75rem,3vw,2.25rem);letter-spacing:-.025em;margin:0 0 1.1rem}.oc-field h3{font-size:1.4rem;margin:0 0 .75rem}.oc-field p{margin:.6rem 0 1rem}.oc-field .oc-kicker{font:600 .72rem/1.5 var(--c13eu7bh-font-body,inherit);letter-spacing:.14em;text-transform:uppercase}.oc-field .oc-hero{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:3rem;align-items:center;border-bottom:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);padding:1rem 0 3.2rem;margin-bottom:3.2rem}.oc-field .oc-lead{font-size:1.1rem;max-width:54ch;color:var(--c13eu7bh-runtime-muted,#53615c)}.oc-field .oc-actions{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center;margin-top:1.5rem}.oc-field .oc-button{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.8rem 1.2rem;min-height:48px;border:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);border-radius:.4rem;font:600 .9rem/1.4 var(--c13eu7bh-font-body,inherit);text-decoration:none;background:var(--c13eu7bh-runtime-panel,#fff);color:var(--c13eu7bh-runtime-text,#183731);cursor:pointer}.oc-field .oc-button.primary{background:var(--c13eu7bh-runtime-action-bg,#1f6f6b);color:var(--c13eu7bh-runtime-action-fg,#fff);border-color:transparent}.oc-field .oc-note{border-radius:.7rem;background:var(--c13eu7bh-runtime-accent-soft,#e2ebe3);padding:1.7rem}.oc-field .oc-note strong{display:block;font:500 1.6rem/1.2 var(--c13eu7bh-font-heading,Georgia,serif);margin:.7rem 0}.oc-field .oc-number{font:500 4.5rem/1 var(--c13eu7bh-font-heading,Georgia,serif);letter-spacing:-.05em;opacity:.8}.oc-field .oc-note p{font-size:.9rem}.oc-field .oc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.oc-field .oc-card{padding:1.6rem;background:var(--c13eu7bh-runtime-panel,#fff);border:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);border-radius:.65rem;overflow-wrap:anywhere}.oc-field .oc-card p{color:var(--c13eu7bh-runtime-muted,#53615c);font-size:.94rem}.oc-field .oc-card .oc-actions{margin-top:1.2rem}.oc-field .oc-section{margin-bottom:3rem;scroll-margin-top:6rem}.oc-field .oc-group{margin:1.8rem 0}.oc-field .oc-guides{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.oc-field .oc-guides li{border-top:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);padding:1.15rem 0;color:var(--c13eu7bh-runtime-muted,#53615c);font-size:.94rem}.oc-field .oc-guides li>a:first-child{display:block;color:var(--c13eu7bh-runtime-text,#183731);font-size:1.05rem;font-weight:600;text-decoration:none;margin-bottom:.35rem}.oc-field .oc-prose{max-width:68ch}.oc-field .oc-prose p,.oc-field .oc-prose li{color:var(--c13eu7bh-runtime-muted,#53615c)}.oc-field .oc-reading{display:grid;grid-template-columns:14rem minmax(0,1fr);gap:3rem;align-items:start}.oc-field .oc-index{position:sticky;top:6rem;border-top:2px solid var(--c13eu7bh-runtime-accent,#1f6f6b);padding-top:1rem}.oc-field .oc-index a{display:block;font-size:.86rem;padding:.4rem 0;line-height:1.4;text-decoration:none}.oc-field .oc-index p{font-weight:600}.oc-field details{border-top:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);padding:1rem 0}.oc-field summary{cursor:pointer;font-weight:600;color:var(--c13eu7bh-runtime-text,#183731);padding:.35rem 0;min-height:44px}.oc-field details p{color:var(--c13eu7bh-runtime-muted,#53615c);max-width:70ch}.oc-field blockquote{margin:1rem 0;padding:.8rem 1.2rem;border-left:3px solid var(--c13eu7bh-runtime-accent,#1f6f6b);background:var(--c13eu7bh-runtime-accent-soft,#e2ebe3);font-size:.95rem}.oc-field .oc-search{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-bottom:1.5rem}.oc-field label{font-size:.85rem;font-weight:600}.oc-field input[type=search]{display:block;width:100%;max-width:32rem;min-height:48px;padding:.8rem 1rem;border:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);border-radius:.4rem;background:var(--c13eu7bh-runtime-panel,#fff);color:var(--c13eu7bh-runtime-text,#183731);font:inherit}.oc-field .oc-search label{flex:1 1 18rem}.oc-field .oc-search span{color:var(--c13eu7bh-runtime-muted,#53615c);font-size:.85rem}.oc-field .oc-chips{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.5rem}.oc-field .oc-chip{border:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);border-radius:2rem;background:transparent;color:var(--c13eu7bh-runtime-text,#183731);padding:.6rem .85rem;min-height:44px;font:500 .8rem/1.4 var(--c13eu7bh-font-body,inherit);cursor:pointer}.oc-field .oc-chip[aria-pressed=true]{background:var(--c13eu7bh-runtime-action-bg,#1f6f6b);color:var(--c13eu7bh-runtime-action-fg,#fff)}.oc-field .oc-term{display:grid;grid-template-columns:13rem minmax(0,1fr);gap:2rem;border-top:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);padding:1.5rem 0;scroll-margin-top:6rem}.oc-field .oc-term p{font-size:.95rem}.oc-field .oc-table{overflow-x:auto;max-width:100%;border:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);border-radius:.4rem;margin:1.3rem 0;outline-offset:3px}.oc-field table{width:100%;min-width:36rem;border-collapse:collapse;font-size:.8rem;line-height:1.5;background:var(--c13eu7bh-runtime-panel,#fff)}.oc-field th,.oc-field td{padding:.65rem .8rem;text-align:left;border-bottom:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);vertical-align:top}.oc-field th{background:var(--c13eu7bh-runtime-accent-soft,#e2ebe3);color:var(--c13eu7bh-runtime-text,#183731);font-weight:600}.oc-field .oc-workbook .oc-section{padding-bottom:2rem;border-bottom:1px solid var(--c13eu7bh-runtime-border,#d9dfd6)}.oc-field .oc-empty{padding:2rem;background:var(--c13eu7bh-runtime-accent-soft,#e2ebe3);border-radius:.6rem}.oc-field .oc-divider{border-top:1px solid var(--c13eu7bh-runtime-border,#d9dfd6);padding-top:2rem}.oc-field .oc-route-line{display:flex;gap:.6rem;align-items:center;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;margin-top:1rem}.oc-field .oc-route-line i{width:6px;height:6px;border-radius:100%;background:var(--c13eu7bh-runtime-accent,#1f6f6b)}@media(max-width:760px){.oc-field{padding-top:.5rem;padding-inline:1rem}.oc-field .oc-hero{grid-template-columns:1fr;gap:1.4rem;padding-bottom:2rem;margin-bottom:2rem}.oc-field .oc-reading{grid-template-columns:1fr;gap:1.5rem}.oc-field .oc-index{position:static}.oc-field .oc-index nav{display:flex;flex-wrap:wrap;gap:.35rem .9rem}.oc-field .oc-index a{min-height:44px;display:flex;align-items:center}.oc-field .oc-term{grid-template-columns:1fr;gap:.2rem}.oc-field .oc-grid,.oc-field .oc-guides{grid-template-columns:1fr}.oc-field .oc-card{padding:1.25rem}.oc-field .oc-card>p>a{min-height:44px}.oc-field .oc-note{padding:1.3rem}.oc-field .oc-note .oc-number{font-size:3rem}.oc-field a{display:inline-block;padding-top:.25rem;padding-bottom:.25rem}.oc-field .oc-actions{align-items:stretch}.oc-field .oc-actions .oc-button{flex:1 1 auto}}@media print{.oc-field .oc-index,.oc-field .oc-search,.oc-field .oc-chips,.oc-field .oc-actions{display:none}.oc-field .oc-reading{display:block}.oc-field .oc-table{overflow:visible}.oc-field table{min-width:0}.oc-field .oc-workbook .oc-section{break-before:page}.oc-field details>*{display:block}}\"\n        \n      )\n      , _react2.default.createElement('header', { className: \"oc-hero\",}\n        , _react2.default.createElement('div', null\n          , _react2.default.createElement('a', { className: \"oc-kicker\", href: \"/\",}, \"Outclimber / Tool library\"\n\n          )\n          , _react2.default.createElement('h1', null, \"Less reading. More doing.\")\n          , _react2.default.createElement('p', { className: \"oc-lead\",}\n            , \n              \"18 free worksheets, checklists, and scripts for the problem in front of you. Open a tool in the workbook, or read its companion guide when you need context. No account or email required.\"\n            \n          )\n          , _react2.default.createElement('div', { className: \"oc-actions\",}\n            , _react2.default.createElement('a', { className: \"oc-button primary\" , href: \"/templates/workbook\",}\n              , \"Open the complete workbook\"\n              , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \"↗\")\n            )\n          )\n        )\n        , _react2.default.createElement('aside', { className: \"oc-note\",}\n          , _react2.default.createElement('span', { className: \"oc-kicker\",}, \"A practical field guide\"   )\n          , _react2.default.createElement('div', { className: \"oc-number\", 'aria-hidden': \"true\",}, \"18\"\n\n          )\n          , _react2.default.createElement('strong', null, \"Small tools. Useful changes.\")\n          , _react2.default.createElement('p', null\n            , \n              \"Seven topics. One free workbook. Use the worksheet online or download an editable Markdown copy.\"\n            \n          )\n          , _react2.default.createElement('div', { className: \"oc-route-line\", 'aria-hidden': \"true\",}\n            , _react2.default.createElement('i', null ), \"Choose \"\n             , _react2.default.createElement('i', null ), \"Trust \"\n             , _react2.default.createElement('i', null ), \"Buy\"\n\n          )\n        )\n      )\n      , _react2.default.createElement('section', { className: \"oc-section\", 'aria-label': \"Tool library\" ,}\n        , _react2.default.createElement('div', { className: \"oc-search\",}\n          , _react2.default.createElement('label', null, \"Search tools\"\n\n            , _react2.default.createElement('input', {\n              type: \"search\",\n              placeholder: \"Try onboarding, reviews, or positioning\"    ,\n              value: query,\n              onChange: (event) => setQuery(event.target.value),}\n            )\n          )\n          , _react2.default.createElement('span', { role: \"status\", 'aria-live': \"polite\",}\n            , visible.length, \" of \"  , tools.length, \" tools\"\n          )\n        )\n        , _react2.default.createElement('div', { className: \"oc-chips\", 'aria-label': \"Filter by topic\"  ,}\n          , categories.map((item) => (\n            _react2.default.createElement('button', {\n              className: \"oc-chip\",\n              key: item,\n              'aria-pressed': category === item,\n              onClick: () => setCategory(item),}\n\n              , item\n            )\n          ))\n        )\n        , visible.length ? (\n          _react2.default.createElement('div', { className: \"oc-grid\",}\n            , visible.map((tool) => (\n              _react2.default.createElement('article', { className: \"oc-card\", key: tool.id,}\n                , _react2.default.createElement('span', { className: \"oc-kicker\",}, tool.group)\n                , _react2.default.createElement('h2', null, tool.name)\n                , _react2.default.createElement('p', null, tool.description)\n                , _react2.default.createElement('div', { className: \"oc-actions\",}\n                  , _react2.default.createElement('a', {\n                    className: \"oc-button primary\" ,\n                    href: \"/templates/workbook#\" + tool.id,}\n, \"Open worksheet \"\n                      , _react2.default.createElement('span', { 'aria-hidden': \"true\",}, \"↗\")\n                  )\n                )\n                , _react2.default.createElement('p', null\n                  , _react2.default.createElement('a', { href: tool.guide,}, \"Read the companion guide →\"    )\n                )\n              )\n            ))\n          )\n        ) : (\n          _react2.default.createElement('div', { className: \"oc-empty\",}\n            , _react2.default.createElement('h2', null, \"No tools match that search.\"    )\n            , _react2.default.createElement('p', null, \"Try a broader word or show the complete library.\"        )\n            , _react2.default.createElement('button', {\n              className: \"oc-button\",\n              onClick: () => {\n                setQuery(\"\");\n                setCategory(\"All tools\");\n              },}\n, \"Show all tools\"\n\n            )\n          )\n        )\n      )\n      , _react2.default.createElement('section', { className: \"oc-section oc-prose oc-divider\"  ,}\n        , _react2.default.createElement('h2', null, \"Use one tool well\")\n        , _react2.default.createElement('p', null\n          , \n            \"Choose the tool for your current problem. Work from observed customer behavior, mark assumptions, and finish with one action, one owner, and one way to tell whether it helped. You can adapt these tools for your business and client work; please do not resell them as a template pack.\"\n          \n        )\n      )\n      , _react2.default.createElement('section', { className: \"oc-section oc-prose oc-divider\"  ,}\n        , _react2.default.createElement('h2', null, \"Need help choosing?\")\n        , _react2.default.createElement('p', null\n          , _react2.default.createElement('a', { href: \"/start-here\",}, \"Find your starting point\")\n          , \" · \"\n          , _react2.default.createElement('a', { href: \"/blog/template-library\",}, \"Read the library guide\")\n          , \" · \"\n          , _react2.default.createElement('a', { href: \"/templates/workbook\",}, \"Open the complete workbook\")\n        )\n      )\n    )\n  );\n} exports.default = OutclimberPage;"}