Sharper capture line + Vacation Test mock (staging review)

- Capture card: "software records which buttons get pushed. We capture the
  judgment — the human part, the part that leaves with them when a veteran
  moves on — and you own it." (from the exit-advisor research doc)
- New vacation-test.html: 5-question owner check ("could your business run
  three months without them?") -> scored read (Passes the test / Runs on
  goodwill / Runs on one person) + audit link + fit-call CTA. SW idiom
  (cobalt, squared), owner register, office-not-floor. noindex + unlinked
  while it's a mock — flip robots on ship.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Michael Victory
2026-07-07 20:39:45 -07:00
parent 2a30231b18
commit 4a87b94f4b
2 changed files with 305 additions and 1 deletions
+1 -1
View File
@@ -205,7 +205,7 @@
<div class="card">
<span class="step-k">Fix · Capture &amp; build</span>
<h3>Capture it — and make it usable</h3>
<p>We sit down with your best people, draw out what's in their heads, and build it into systems the whole crew can actually use — documented, trained, and built to last. You don't need to clean up thirty years of spreadsheets first: that mess <strong>is</strong> the knowledge, and waiting for perfect data is how it gets lost. The modern tools do the heavy lifting so it's fast and affordable — but a screen-recorder only captures the clicks. The part that matters is human, and it's the part that leaves with them: getting your veteran to open up, and capturing the judgment behind the work, not just the steps.</p>
<p>We sit down with your best people, draw out what's in their heads, and build it into systems the whole crew can actually use — documented, trained, and built to last. You don't need to clean up thirty years of spreadsheets first: that mess <strong>is</strong> the knowledge, and waiting for perfect data is how it gets lost. The modern tools do the heavy lifting so it's fast and affordable — but software records which buttons get pushed. We capture the judgment — the human part, the part that leaves with them when a veteran moves on — and you own it.</p>
<p class="outcome">The day your best person retires, the work doesn't stop.</p>
</div>
<div class="card feature">
+304
View File
@@ -0,0 +1,304 @@
<!DOCTYPE html>
<html lang="en-CA">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#f7f4ef">
<title>The Vacation Test — Could Your Business Run Without Them? | ShopWisdom</title>
<meta name="description" content="A 2-minute owner check: could your business run three months without its most knowledgeable person? Buyers ask exactly that. Find out where you stand — and what it means for what your business is worth.">
<link rel="preload" href="assets/fonts/playfair-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="assets/fonts/playfair-400i.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="assets/fonts/dmsans-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="assets/fonts/lora-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="style.css">
<!-- MOCK: flip to index,follow when this ships to production -->
<meta name="robots" content="noindex,nofollow">
<link rel="canonical" href="https://shopwisdom.ca/vacation-test.html">
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<meta property="og:type" content="website">
<meta property="og:site_name" content="ShopWisdom">
<meta property="og:title" content="The Vacation Test — could your business run three months without them?">
<meta property="og:description" content="Buyers ask exactly that. A 2-minute owner check on how much of your business lives in one person's head — and what that means for what it's worth.">
<meta property="og:url" content="https://shopwisdom.ca/vacation-test.html">
<meta property="og:image" content="https://shopwisdom.ca/og-card.png">
<style>
/* ---- Vacation Test: scoped quiz UI, SW palette (squared idiom) ---- */
.vt-wrap { max-width: 760px; }
.vt-card { background: var(--paper-2); border: 1px solid var(--line); border-radius: 3px;
padding: clamp(1.6rem, 4vw, 2.6rem); margin-top: 2.2rem; }
.vt-progress { font-family: 'DM Sans', sans-serif; font-size: 0.7rem; font-weight: 700;
letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-deep); margin: 0 0 0.4rem; }
.vt-bar { height: 4px; background: rgba(15,23,41,0.08); overflow: hidden; margin: 0 0 1.6rem; }
.vt-bar i { display: block; height: 100%; width: 0; background: var(--accent); transition: width .4s ease; }
.vt-q { font-family: 'Playfair Display', Georgia, serif; font-size: clamp(1.4rem, 3vw, 1.9rem);
line-height: 1.18; color: var(--ink); margin: 0 0 1.3rem; }
.vt-options { display: grid; gap: 0.7rem; }
.vt-opt { display: block; width: 100%; text-align: left; font-family: 'Lora', Georgia, serif;
font-size: 1.02rem; color: var(--ink); background: #fff; border: 1px solid var(--line);
border-radius: 2px; padding: 0.95rem 1.1rem; cursor: pointer;
transition: border-color .18s ease, background .18s ease, transform .18s ease; }
.vt-opt:hover { border-color: var(--accent); transform: translateY(-1px); }
.vt-opt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.vt-nav { display: flex; align-items: center; gap: 1.2rem; margin-top: 1.4rem; min-height: 1.5rem; }
.vt-back { font-family: 'DM Sans', sans-serif; font-size: 0.78rem; letter-spacing: 0.04em;
color: var(--ink-soft); background: none; border: none; cursor: pointer; padding: 0; }
.vt-back:hover { color: var(--ink); }
.vt-back[hidden] { display: none; }
/* result */
.vt-result { animation: vtFade .5s ease; }
@keyframes vtFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.vt-badge { font-family: 'DM Sans', sans-serif; font-size: 0.7rem; font-weight: 700;
letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent-deep); margin: 0 0 0.5rem; }
.vt-result h2 { margin: 0 0 0.6rem; }
.vt-result .vt-read { color: var(--ink-soft); }
.vt-tips { list-style: none; padding: 0; margin: 1.2rem 0 0; }
.vt-tips li { position: relative; padding: 0.6rem 0 0.6rem 1.8rem; line-height: 1.5; color: var(--ink); }
.vt-tips li + li { border-top: 1px solid var(--line); }
.vt-tips li::before { content: "→"; position: absolute; left: 0; top: 0.6rem; color: var(--accent-deep); font-weight: 700; }
.vt-result-cta { margin-top: 1.8rem; display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: center; }
.vt-retake { font-family: 'DM Sans', sans-serif; font-size: 0.78rem; letter-spacing: 0.04em;
color: var(--ink-soft); background: none; border: none; cursor: pointer; padding: 0; text-decoration: underline; }
.vt-line { font-family: 'Playfair Display', serif; font-style: italic; color: var(--ink-soft); margin-top: 1.4rem; }
.vt-result .vt-line a, .vt-read a { color: var(--accent-deep); }
@media (prefers-reduced-motion: reduce) { .vt-opt, .vt-bar i, .vt-result { transition: none; animation: none; } }
</style>
<script>document.documentElement.className += ' has-motion';</script>
</head>
<body>
<header class="nav" id="nav">
<a class="nav-logo" href="index.html#top" aria-label="ShopWisdom — home">
<img class="nav-logo-img nav-logo-light" src="assets/logo/logo-horizontal.svg" alt="ShopWisdom" width="214" height="36" />
<img class="nav-logo-img nav-logo-dark" src="assets/logo/logo-horizontal-rev.svg" alt="" aria-hidden="true" width="214" height="36" />
</a>
<nav class="nav-links-desktop" aria-label="Main">
<a href="index.html#work">The work</a>
<a href="index.html#results">Client results</a>
<a href="index.html#process">How it works</a>
<a href="index.html#about">About</a>
<a class="tel nav-phone" data-p1="778" data-p2="985" data-p3="6736" href="index.html#contact" aria-label="Call ShopWisdom">778&#8209;985&#8209;OPEN</a>
<a class="nav-cta" href="https://cal.shopwisdom.ca/michaelvictory/20-min-shop-wise-meeting" data-cal-link="michaelvictory/20-min-shop-wise-meeting" data-cal-origin="https://cal.shopwisdom.ca" data-cal-config='{"theme":"light"}'>Book a call</a>
</nav>
<button class="nav-toggle" id="navToggle" aria-label="Open menu" aria-expanded="false">
<svg class="nav-toggle-icon" viewBox="0 0 32 32" aria-hidden="true">
<line class="bar bar-top" x1="6" y1="10" x2="26" y2="10"/>
<line class="bar bar-mid" x1="6" y1="16" x2="26" y2="16"/>
<line class="bar bar-bot" x1="6" y1="22" x2="26" y2="22"/>
<circle class="o-ring" cx="16" cy="16" r="9"/>
</svg>
</button>
</header>
<div class="nav-mobile-menu" id="navMobileMenu">
<a href="index.html#work">The work</a>
<a href="index.html#results">Client results</a>
<a href="index.html#process">How it works</a>
<a href="index.html#about">About</a>
<a class="tel" data-p1="778" data-p2="985" data-p3="6736" href="index.html#contact">Call 778&#8209;985&#8209;OPEN (6736)</a>
<a class="nav-cta" href="https://cal.shopwisdom.ca/michaelvictory/20-min-shop-wise-meeting" data-cal-link="michaelvictory/20-min-shop-wise-meeting" data-cal-origin="https://cal.shopwisdom.ca" data-cal-config='{"theme":"light"}'>Book a call</a>
</div>
<main id="top">
<section class="band light" data-bg="light" style="padding-top: calc(var(--nav-h) + 72px);">
<div class="wrap vt-wrap">
<p class="eyebrow">The Vacation Test · a 2-minute owner check</p>
<h1>Could your business run three months <em>without them?</em></h1>
<p class="lead">Buyers ask exactly that question. The Vacation Test is a quick, honest read on how much of your business lives in one person's head — and what that means for what it's worth. Five questions, honest answers, no email required.</p>
<div class="vt-card" id="vtCard">
<!-- quiz -->
<div id="vtQuiz">
<p class="vt-progress" id="vtProgress">Question 1 of 5</p>
<div class="vt-bar"><i id="vtBar"></i></div>
<p class="vt-q" id="vtQuestion"></p>
<div class="vt-options" id="vtOptions"></div>
<div class="vt-nav"><button class="vt-back" id="vtBack" type="button" hidden>← Back</button></div>
</div>
<!-- result -->
<div id="vtResult" class="vt-result" hidden></div>
</div>
<p class="vt-line">When the answer is &ldquo;yes — it's captured, and it's ours,&rdquo; your business is worth more.</p>
</div>
</section>
</main>
<footer class="site-footer" data-bg="dark">
<div class="footer-bg" aria-hidden="true">
<img class="footer-bg-img" src="assets/logo/footer-watermark.svg" alt="" aria-hidden="true" />
</div>
<div class="footer-content">
<div class="footer-block">
<img class="footer-logo-img" src="assets/logo/logo-horizontal-rev.svg" alt="ShopWisdom" width="95" height="16" />
<nav class="footer-links" aria-label="Footer">
<a href="index.html#work">The work</a>
<a href="index.html#results">Client results</a>
<a href="index.html#process">How it works</a>
<a href="https://www.opencommunications.consulting/">Open Communications</a>
</nav>
<p class="footer-note">Built with care and AI · Work owned by its clients · Proudly Canadian.</p>
<p class="footer-copy">ShopWisdom and Open Communications are practices owned and operated by Michael Victory · British Columbia, Canada</p>
</div>
</div>
</footer>
<script>
(function () {
for (var l of document.querySelectorAll('a.tel')) {
l.setAttribute('href', 'tel:+1' + l.dataset.p1 + l.dataset.p2 + l.dataset.p3);
}
var toggle = document.getElementById('navToggle');
var menu = document.getElementById('navMobileMenu');
function closeMenu() {
menu.classList.remove('open'); toggle.classList.remove('open');
toggle.setAttribute('aria-label', 'Open menu'); toggle.setAttribute('aria-expanded', 'false');
}
if (toggle && menu) {
toggle.addEventListener('click', function () {
var open = !menu.classList.contains('open');
menu.classList.toggle('open', open); toggle.classList.toggle('open', open);
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
updateNavTheme();
});
for (var a of menu.querySelectorAll('a')) { a.addEventListener('click', closeMenu); }
}
var nav = document.getElementById('nav');
var sections = Array.prototype.slice.call(document.querySelectorAll('[data-bg]'));
function darkBehind(y) {
for (var i = 0; i < sections.length; i++) {
var r = sections[i].getBoundingClientRect();
if (r.top <= y && r.bottom > y) return sections[i].dataset.bg === 'dark';
}
return false;
}
function updateNavTheme() {
nav.classList.toggle('scrolled', window.scrollY > 24);
var nr = nav.getBoundingClientRect();
nav.classList.toggle('on-dark', darkBehind((nr.top + nr.bottom) / 2));
if (menu && menu.classList.contains('open')) {
var links = menu.querySelectorAll('a');
var probe = links.length ? links[links.length - 1].getBoundingClientRect().bottom : (nav.getBoundingClientRect().bottom);
menu.classList.toggle('on-dark', darkBehind(probe));
}
}
updateNavTheme();
window.addEventListener('scroll', function () { window.requestAnimationFrame(updateNavTheme); }, { passive: true });
window.addEventListener('resize', updateNavTheme);
})();
</script>
<!-- Cal.com booking embed (deferred init) -->
<script>
(function (C, A, L) { let p = function (a, ar) { a.q.push(ar); }; let d = C.document; C.Cal = C.Cal || function () { let cal = C.Cal; let ar = arguments; if (!cal.loaded) { cal.ns = {}; cal.q = cal.q || []; d.head.appendChild(d.createElement("script")).src = A; cal.loaded = true; } if (ar[0] === L) { const api = function () { p(api, arguments); }; const namespace = ar[1]; api.q = api.q || []; if (typeof namespace === "string") { cal.ns[namespace] = cal.ns[namespace] || api; p(cal.ns[namespace], ar); p(cal, ["initNamespace", namespace]); } else p(cal, ar); return; } p(cal, ar); }; })(window, "https://cal.shopwisdom.ca/embed/embed.js", "init");
(function(){var d=false;function go(){if(d)return;d=true;Cal("init",{origin:"https://cal.shopwisdom.ca"});}var ev=["pointerdown","mousemove","touchstart","scroll","keydown"];function on(){go();ev.forEach(function(e){window.removeEventListener(e,on);});}ev.forEach(function(e){window.addEventListener(e,on,{passive:true});});})();
</script>
<!-- The Vacation Test quiz -->
<script>
(function () {
var BOOK = '<a class="btn" href="https://cal.shopwisdom.ca/michaelvictory/20-min-shop-wise-meeting" data-cal-link="michaelvictory/20-min-shop-wise-meeting" data-cal-origin="https://cal.shopwisdom.ca" data-cal-config=\'{"theme":"light"}\'>Book a fit call — free, no pitch</a>';
var Q = [
{ q: "Your most knowledgeable person is away for three months, starting Monday. What happens to quoting and pricing?", a: [
{ t: "Not much — it's documented, and others already do it", s: 0 },
{ t: "We'd manage, with some digging and a few phone calls", s: 1 },
{ t: "Quotes would slow down, and some would go out wrong", s: 2 },
{ t: "Honestly? We'd be calling them by Wednesday", s: 3 } ] },
{ q: "Where does the know-how actually live — the pricing logic, the customer history, the way orders really get done?", a: [
{ t: "In systems and documents the team uses every day", s: 0 },
{ t: "Some written down, some in heads", s: 1 },
{ t: "Mostly in two or three heads", s: 2 },
{ t: "Mostly in one head", s: 3 } ] },
{ q: "A long-time customer calls with a tricky job while they're away. Who picks up the thread?", a: [
{ t: "Anyone — the history and pricing are where the team can see them", s: 0 },
{ t: "A couple of people could piece it together", s: 1 },
{ t: "We'd wait for them, or guess", s: 2 },
{ t: "That customer only deals with them", s: 3 } ] },
{ q: "If someone bought your business tomorrow, could they run it from what's written down?", a: [
{ t: "Yes — the systems are the business", s: 0 },
{ t: "Mostly, with a long handover", s: 1 },
{ t: "Only if the key people stayed on", s: 2 },
{ t: "No — the business is the people, honestly", s: 3 } ] },
{ q: "Is anyone learning what your most knowledgeable person knows?", a: [
{ t: "Yes — it's captured, and the training is deliberate", s: 0 },
{ t: "Informally, when there's time", s: 1 },
{ t: "We keep meaning to get to it", s: 2 },
{ t: "No — and they're closer to retirement every year", s: 3 } ] }
];
var R = [
{ max: 4, badge: "Passes the test", h: "Your business runs on systems — protect that.",
read: "If your most knowledgeable person left Monday, the office would carry on — quoting, orders, customers, all of it visible to the team. That's rare, and it's worth real money when a buyer looks at your business. The job now is keeping it true: knowledge drifts, tools age, and there's always a next key person.",
tips: ["Keep it current — captured knowledge goes quietly out of date.",
"Capture the <em>next</em> key person before they move on; there's always a next one.",
"Make the systems part of how you tell the business's story — buyers pay for proof."],
line: "You're in a strong spot. System Care exists to keep it that way." },
{ max: 10, badge: "Runs on goodwill", h: "It works — because certain people make it work.",
read: "Parts are written down, but the parts that matter most — the judgment calls, the pricing instincts, the customer history — still live in a few heads. You'd feel it within the month, and a buyer would price it in. Most businesses this size sit right here; it's workable, and the path out is specific.",
tips: ["Start with the knowledge that would hurt most to lose — usually quoting and pricing.",
"Get the customer history out of inboxes and memory, into something the team can see.",
"Don't wait for perfect data — the mess <em>is</em> the knowledge."],
line: "<a href=\"continuity-audit.html\">The Continuity Audit</a> maps exactly where you're exposed and what to capture first. Fixed fee, a few focused hours." },
{ max: 15, badge: "Runs on one person", h: "Right now, the business is the person.",
read: "That's not a criticism — it's how good businesses get built. But it's fragile, and it quietly discounts everything you've built: when it all lives in one head, buyers pay less, and every year closer to their retirement raises the stakes. The good news: this is exactly the fixable kind of problem.",
tips: ["Don't rush a replacement hire — capture first, then decide what the role even is.",
"Book the time with your key person now; a month of capture beats a year of intentions.",
"Treat it as protecting the value you've built — because that's what it is."],
line: "This is exactly what ShopWisdom is for — and the first step is small. Start with <a href=\"continuity-audit.html\">the Continuity Audit</a>; the fit call is free and commits you to nothing." }
];
var i = 0, answers = [], total = 0;
var qEl = document.getElementById('vtQuestion'), optEl = document.getElementById('vtOptions'),
progEl = document.getElementById('vtProgress'), barEl = document.getElementById('vtBar'),
backEl = document.getElementById('vtBack'), quizEl = document.getElementById('vtQuiz'),
resEl = document.getElementById('vtResult');
function render() {
var item = Q[i];
progEl.textContent = 'Question ' + (i + 1) + ' of ' + Q.length;
barEl.style.width = (i / Q.length * 100) + '%';
qEl.textContent = item.q;
optEl.innerHTML = '';
item.a.forEach(function (opt) {
var b = document.createElement('button');
b.type = 'button'; b.className = 'vt-opt'; b.textContent = opt.t;
b.addEventListener('click', function () { choose(opt.s); });
optEl.appendChild(b);
});
backEl.hidden = (i === 0);
qEl.focus && qEl.setAttribute('tabindex', '-1');
}
function choose(s) {
answers[i] = s;
if (i < Q.length - 1) { i++; render(); }
else { finish(); }
}
backEl.addEventListener('click', function () { if (i > 0) { i--; render(); } });
function finish() {
total = answers.reduce(function (a, b) { return a + b; }, 0);
var r = R.find(function (x) { return total <= x.max; });
quizEl.hidden = true;
resEl.hidden = false;
resEl.innerHTML =
'<p class="vt-badge">Your read &middot; ' + r.badge + '</p>' +
'<h2>' + r.h + '</h2>' +
'<p class="vt-read">' + r.read + '</p>' +
'<ul class="vt-tips">' + r.tips.map(function (t) { return '<li>' + t + '</li>'; }).join('') + '</ul>' +
'<p class="vt-line">' + r.line + '</p>' +
'<p class="vt-result-cta">' + BOOK + '<button class="vt-retake" type="button" id="vtRetake">Retake the test</button></p>';
barEl.style.width = '100%';
document.getElementById('vtRetake').addEventListener('click', function () {
i = 0; answers = []; total = 0; resEl.hidden = true; quizEl.hidden = false; render();
document.getElementById('vtCard').scrollIntoView({ behavior: 'smooth', block: 'start' });
});
if (window.Cal) { try { window.Cal('init', { origin: 'https://cal.shopwisdom.ca' }); } catch (e) {} }
resEl.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
render();
})();
</script>
</body>
</html>