Rebuild SW site to OC standard (continuity-led, steel-accent sibling)
Sibling of the finished OC site: shared paper+navy + Playfair/Lora/DM Sans foundation, steel-blue accent (replaces warm amber). First-person voice. Restructured to diagnose -> fix -> keep-it-handled with the recurring Continuity Partner elevated as a feature card; web-tools cases kept as proof of delivery; single earned OC handoff. Tuned per the Charlene Li REC: reinvention-not-efficiency hero, messy-data objection killer, MIT 95% stat (primary-sourced), sovereignty stated louder. continuity-audit.html rebuilt to match. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+276
-185
@@ -4,16 +4,19 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Shop Wisdom | Keep What Your Best People Know — for Canadian Manufacturers</title>
|
||||
<meta name="description" content="Your best people are retiring. Shop Wisdom helps Canadian manufacturers and production shops capture the know-how that lives in a few heads and turn it into systems the whole shop can use — before it walks out the door. You own everything we build.">
|
||||
<meta name="description" content="Your best people are retiring. I help Canadian manufacturers capture the know-how that lives in a few heads, build it into systems the whole shop can run on, and stay on to keep it that way. You own everything — and it stays in Canada.">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&family=Lora:ital,wght@0,400;0,500;1,400&family=Playfair+Display:ital,wght@0,400;0,700;1,400&display=swap">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<meta name="robots" content="index,follow">
|
||||
<meta name="theme-color" content="#faf7f2">
|
||||
<meta name="theme-color" content="#f7f4ef">
|
||||
<link rel="canonical" href="https://shopwisdom.ca/">
|
||||
<link rel="icon" href="favicon.svg" type="image/svg+xml">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:site_name" content="Shop Wisdom">
|
||||
<meta property="og:title" content="Shop Wisdom — keep what your best people know">
|
||||
<meta property="og:description" content="Your best people are retiring. We help Canadian manufacturers capture the know-how that lives in a few heads and turn it into systems the whole shop can use — before it walks out the door.">
|
||||
<meta property="og:description" content="Your best people are retiring. I help Canadian manufacturers capture the know-how that lives in a few heads and build it into systems the whole shop can run on — before it walks out the door.">
|
||||
<meta property="og:url" content="https://shopwisdom.ca/">
|
||||
<meta property="og:locale" content="en_CA">
|
||||
<meta property="og:image" content="https://shopwisdom.ca/og-card.png">
|
||||
@@ -31,7 +34,7 @@
|
||||
"name": "Shop Wisdom",
|
||||
"url": "https://shopwisdom.ca/",
|
||||
"logo": "https://shopwisdom.ca/favicon.svg",
|
||||
"description": "Knowledge continuity for Canadian manufacturers — capturing veteran know-how and turning it into systems the whole shop can use, before it walks out the door.",
|
||||
"description": "Knowledge continuity for Canadian manufacturers — capturing veteran know-how and turning it into systems the whole shop can run on, before it walks out the door.",
|
||||
"areaServed": { "@type": "Country", "name": "Canada" },
|
||||
"founder": { "@type": "Person", "name": "Michael Victory" },
|
||||
"telephone": "+1-778-985-6736",
|
||||
@@ -41,28 +44,30 @@
|
||||
"knowsAbout": ["knowledge capture", "succession planning", "business continuity", "standard operating procedures", "manufacturing", "AI tools for business"]
|
||||
}
|
||||
</script>
|
||||
<script>document.documentElement.className += ' has-motion';</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="site-header">
|
||||
<div class="wrap header-row">
|
||||
<a class="wordmark" href="#top">Shop<span>Wisdom</span></a>
|
||||
<nav class="site-nav" aria-label="Main">
|
||||
<a href="#work">The work</a>
|
||||
<a href="#results">Client results</a>
|
||||
<a href="#process">How it works</a>
|
||||
<a href="#about">About</a>
|
||||
<a class="tel nav-phone" data-p1="778" data-p2="985" data-p3="6736" href="#contact" aria-label="Call Shop Wisdom">778‑985‑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"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
<header class="nav" id="nav">
|
||||
<a class="nav-logo" href="#top" aria-label="Shop Wisdom — home">
|
||||
<span class="nav-wordmark">Shop<span>Wisdom</span></span>
|
||||
</a>
|
||||
<nav class="nav-links-desktop" aria-label="Main">
|
||||
<a href="#work">The work</a>
|
||||
<a href="#results">Client results</a>
|
||||
<a href="#process">How it works</a>
|
||||
<a href="#about">About</a>
|
||||
<a class="tel nav-phone" data-p1="778" data-p2="985" data-p3="6736" href="#contact" aria-label="Call Shop Wisdom">778‑985‑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="#work">The work</a>
|
||||
@@ -75,202 +80,216 @@
|
||||
|
||||
<main id="top">
|
||||
|
||||
<section class="hero">
|
||||
<div class="wrap">
|
||||
<p class="eyebrow">For Canadian manufacturers & production shops</p>
|
||||
<h1>Your best people are retiring. Their know‑how doesn't have to.</h1>
|
||||
<p class="hero-sub">Before your veterans walk out the door, we turn what's in their heads into systems your whole shop can use.</p>
|
||||
<div class="hero-actions">
|
||||
<section class="hero band light" data-bg="light">
|
||||
<div class="wrap hero-wrap"><div class="hero-col">
|
||||
<p class="eyebrow">Knowledge continuity · for Canadian manufacturers</p>
|
||||
<h1>Your best people are retiring. Their know‑how doesn't <em>have to.</em></h1>
|
||||
<p class="lead">I don't just install AI. Before your best people walk out the door, I turn the pricing instincts, the fixes, the hard‑won judgment in their heads into systems your whole shop can run on — and I stay on to keep it that way.</p>
|
||||
<div class="actions">
|
||||
<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>
|
||||
<a class="btn ghost" href="#results">See client results</a>
|
||||
<a class="btn link" href="#results">See client results</a>
|
||||
</div>
|
||||
<p class="hero-call">or call <a class="tel" data-p1="778" data-p2="985" data-p3="6736" href="#contact">778‑985‑OPEN (6736)</a></p>
|
||||
<p class="call">or call <a class="tel" data-p1="778" data-p2="985" data-p3="6736" href="#contact">778‑985‑OPEN (6736)</a></p>
|
||||
</div></div>
|
||||
</section>
|
||||
|
||||
<section class="band dark statement" data-bg="dark" id="moment">
|
||||
<div class="motif" aria-hidden="true"></div>
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">The moment your shop is in</p>
|
||||
<h2 class="statement-line">The real work runs on what lives in two or three people's heads. And those heads are <em>heading for the door.</em></h2>
|
||||
<p>The veteran who knows which machine runs hot, how to save a bad batch, what the customer really meant — it's never been written down. Here's the part nobody likes to say out loud: a business that lives in a few people's heads is worth less the day you go to sell it. Buyers see the risk even when you don't. So do your best customers — the first time a job goes sideways after someone walks out the door.</p>
|
||||
<p class="emph">This isn't a technology problem. It's a continuity problem — and it's fixable.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="moment">
|
||||
<div class="wrap narrow">
|
||||
<h2>The moment your shop is in</h2>
|
||||
<p>The real work runs on knowledge that lives in one or two heads — the veteran who knows which machine runs hot, how to save a bad batch, what the customer really meant. It's never been written down. And those heads are heading for retirement.</p>
|
||||
<p>Here's the part nobody likes to say out loud: a business that lives in a few people's heads is worth less the day you go to sell it. Buyers see the risk even when you don't. So do your best customers — the first time a job goes sideways after someone walks out the door.</p>
|
||||
<p class="pull">This isn't a technology problem. It's a continuity problem — and it's fixable.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="principles">
|
||||
<div class="wrap">
|
||||
<h2>We work differently</h2>
|
||||
<p class="section-intro">The default approach — automation for cost reduction, AI as a sales pitch, delivered through tools you'll never own — leaves businesses anxious and people sidelined.</p>
|
||||
<div class="grid four">
|
||||
<section class="band light" data-bg="light">
|
||||
<div class="wrap reveal">
|
||||
<p class="eyebrow">How I work</p>
|
||||
<h2>I work differently — <em>on purpose.</em></h2>
|
||||
<p class="section-intro">The default — automation to cut headcount, AI as a sales pitch, delivered through tools you'll never own — leaves owners anxious and good people sidelined. That's not this.</p>
|
||||
<div class="cards four stagger">
|
||||
<div class="card">
|
||||
<h3>People stay essential</h3>
|
||||
<p>Used well, modern tools make your people more capable, not less needed. We design systems that respect the judgment your team has earned.</p>
|
||||
<p>Used well, modern tools make your people more capable, not less needed. I design systems that respect the judgment your team has earned.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>Wisdom over speed</h3>
|
||||
<p>Wisdom is a slower technology than intelligence. We work at the pace good work requires, not the pace the hype cycle demands.</p>
|
||||
<p>Wisdom is a slower technology than intelligence. I work at the pace good work needs, not the pace the hype cycle demands.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>You own everything</h3>
|
||||
<p>Every tool we build, every system we design — you own it completely. No retainers, no lock‑in, no subscriptions you can't escape.</p>
|
||||
<p>Every system I build is yours — hosted on Canadian soil, fully documented. Your data never leaves the country, and nothing locks you in.</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<h3>One person, accountable</h3>
|
||||
<p>The person you talk to is the person doing the work. No pipelines, no account managers, no chatbots between you and the help you need.</p>
|
||||
<p>The person you talk to is the person doing the work. No account managers, no pipelines, no chatbots between you and the help.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="services" id="work">
|
||||
<div class="wrap">
|
||||
<h2>The work</h2>
|
||||
<p class="section-intro">It starts with keeping what your best people know — then turning it into tools the whole shop can use. Every engagement begins with understanding your actual problem before suggesting a solution.</p>
|
||||
|
||||
<div class="service flagship">
|
||||
<h3>Wisdom preservation <span class="tag">Knowledge transfer · Succession</span></h3>
|
||||
<p>Before your best people retire — or before you sell the business — encode the judgment that lives in their heads. The shortcuts. The warnings. The feel for when something's off. The institutional knowledge that exists nowhere else. We document that expertise and build it into tools your team can use long after the experts are gone — decision guides, diagnostic tools, training systems.</p>
|
||||
<p>The value of a business isn't just its revenue — it's the knowledge that makes the revenue possible. We help you capture that before the transition, so the business retains its value after you step away. <strong>For owners thinking about exit: this work is one of the most direct ways to protect the value of what you've built.</strong></p>
|
||||
<p class="service-cta"><a href="continuity-audit.html">Start with a Continuity Audit — find out where you're exposed →</a></p>
|
||||
<section class="band light" data-bg="light" id="work">
|
||||
<div class="wrap reveal">
|
||||
<p class="eyebrow">The work</p>
|
||||
<h2>Keep what they know. <em>Then</em> build it into the shop.</h2>
|
||||
<p class="section-intro">Three steps: find out where you're exposed, fix it, and keep it handled. Every engagement starts by understanding your actual problem before I suggest a thing.</p>
|
||||
<div class="cards stagger">
|
||||
<div class="card">
|
||||
<span class="step-k">Start here · Diagnose</span>
|
||||
<h3>The Continuity Audit</h3>
|
||||
<p>I spend time on your floor and find exactly where you're exposed: who holds what, what it would cost you if they left tomorrow, and what it's doing to the value of your business. You get a plain‑English risk report and a roadmap. Fixed fee. Nothing to install.</p>
|
||||
<p class="outcome">You walk away knowing where your shop is exposed — and what to do about it.</p>
|
||||
<a class="card-link" href="continuity-audit.html">How the audit works →</a>
|
||||
</div>
|
||||
<div class="card">
|
||||
<span class="step-k">Fix · Capture & build</span>
|
||||
<h3>Capture it — and make it usable</h3>
|
||||
<p>I 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; the part that matters is human — getting your veteran to open up, and capturing the judgment, not just the steps.</p>
|
||||
<p class="outcome">The day your best person retires, the work doesn't stop.</p>
|
||||
</div>
|
||||
<div class="card feature">
|
||||
<span class="step-k">Keep it handled · Recurring</span>
|
||||
<span class="card-tag">The Continuity Partner</span>
|
||||
<h3>I stay on, so you never face this again</h3>
|
||||
<p>Continuity isn't a one‑time job. I stay on: capture the next person before they leave, bring new hires up to speed on the system, and keep everything current. Quarterly, on a simple retainer. This is where most shops finally stop firefighting.</p>
|
||||
<p class="outcome">Continuity stays handled — forever, not once.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class="reassure">Everything I build comes with full documentation and a handover session. You'll never be dependent on me to keep it running.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="band light" data-bg="light" id="results">
|
||||
<div class="wrap reveal">
|
||||
<p class="eyebrow">Client results</p>
|
||||
<h2>What "build it into a system" <em>actually</em> looks like.</h2>
|
||||
<p class="section-intro">Real projects for real Canadian shops — the before and after of taking knowledge that lived in a spreadsheet (and one person's head) and turning it into a tool the whole team can use.</p>
|
||||
<div class="cases">
|
||||
|
||||
<div class="case">
|
||||
<h3>Dealer pricing: from emailed workbook to live catalog</h3>
|
||||
<p><strong>Before —</strong> dealer pricing lived in a multi‑tab Excel workbook emailed to resellers on request. Dealers calculated their own pricing by hand, and any discount change meant redistributing the file. Staff spent real time fielding calls from dealers who couldn't find what they needed.</p>
|
||||
<p><strong>After —</strong> a hosted dealer pricing tool with real‑time discount logic, profile‑based pricing tiers, product filtering, and a built‑in order builder with export and email summary. Dealers access it directly — no file to download, no call required.</p>
|
||||
<div class="case-shots">
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">Before — Excel workbook</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ias-before.png" alt="Dealer pricing before: a multi-tab Excel workbook with manual price columns" width="1735" height="808" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">After — Hosted web app</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ias-after.png" alt="Dealer pricing after: a filterable product catalog with live discount logic and order export" width="1919" height="953" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
</div>
|
||||
<blockquote>
|
||||
<p>"We've been imagining something like this for years. Our catalog used to live in a spreadsheet we'd email back and forth — now our dealers can filter products, build orders in their own pricing, and send them through electronically. Mike built exactly what we needed."</p>
|
||||
<footer class="case-cite">
|
||||
<span class="case-headshot"><img src="assets/people/fred-hobeyn.webp" alt="Fred Hobeyn" width="160" height="160" loading="lazy" decoding="async"></span>
|
||||
<span class="case-cite-text"><span class="case-name">Fred Hobeyn</span><span class="case-role">Owner — Innovative Aluminum Systems</span></span>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<div class="case">
|
||||
<h3>Order forms: from printed sheet to guided system</h3>
|
||||
<p><strong>Before —</strong> the customer order form was a printed Excel sheet with basic formulas. Sales reps filled it in by hand, calculated totals manually, and emailed or faxed it in. Error‑prone, slow, and entirely dependent on one person knowing where everything was.</p>
|
||||
<p><strong>After —</strong> a hosted web order form with multiple pricing tiers, a pattern selector with live unit pricing, cut‑length calculators, and a print‑ready summary. Orders are submitted electronically — no phone call, no fax, no manual calculation.</p>
|
||||
<div class="case-shots">
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">Before — Printed Excel sheet</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ondek-before.png" alt="Order form before: a printed Excel sheet with manual product and quantity columns" width="895" height="715" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">After — Web order form</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ondek-after.png" alt="Order form after: a web-based order form with price tiers, pattern selector, and live totals" width="1546" height="806" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
</div>
|
||||
<blockquote>
|
||||
<p>"I've been in this industry long enough to be skeptical of tech promises. This wasn't that. Michael took the time to understand our process first, then built something that fits. It's a massive leap forward for us."</p>
|
||||
<footer class="case-cite">
|
||||
<span class="case-headshot"><img src="assets/people/jim-szlabon.webp" alt="Jim Szlabon" width="160" height="160" loading="lazy" decoding="async"></span>
|
||||
<span class="case-cite-text"><span class="case-name">Jim Szlabon</span><span class="case-role">Senior Sales — OnDek Vinyl Worx</span></span>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<p class="reassure">Have a spreadsheet or a process that should work this way? <a class="card-link" href="#contact">Start with a conversation.</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="band light" data-bg="light">
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">The honest part</p>
|
||||
<h2>The hard part isn't the paperwork. <em>It's people.</em></h2>
|
||||
<p>Most attempts at this quietly stall — MIT's 2025 "State of AI in Business" study found 95% of company AI projects deliver no measurable return, and the tools usually aren't the problem. Most shops have already learned it the hard way: there's a binder somewhere — half‑finished, on a shelf, out of date the week it was printed. It didn't fail because the writing was bad. It failed because getting a veteran to hand over what he knows, and getting a shop to actually change how it works, is a people problem, not a paperwork one. Your best people aren't holding back to be difficult — they're protecting the thing that's made them irreplaceable for thirty years.</p>
|
||||
<div class="handoff">
|
||||
<p>The hardest part of capturing what someone knows is getting them to share it — and getting a shop to actually change how it works. That's a people problem, not a paperwork one — and it's exactly what our sister practice, <a href="https://opencommunications.consulting">Open Communications →</a>, is built for.</p>
|
||||
<p>That human side is exactly what my other practice, <a href="https://www.opencommunications.consulting/">Open Communications →</a>, is built for. Same business, same straight talk — one side works on the shop, the other works with the crew.</p>
|
||||
</div>
|
||||
|
||||
<div class="service">
|
||||
<h3>From static to smart</h3>
|
||||
<p>Most shops are running on processes built for a world a decade behind. Pricelists in Excel. Catalogues in PDF. Order forms printed and faxed. These tools work — until they don't, and until the person who knows how to use them isn't there. We take what you have and turn it into a searchable, shareable, hosted web tool your team and customers can access from anywhere. The logic stays the same. The friction disappears.</p>
|
||||
</div>
|
||||
|
||||
<div class="service">
|
||||
<h3>Custom web tools</h3>
|
||||
<p>Phone‑tag quoting. Email‑chain approvals. Clipboard scheduling. These workflows depend on one person knowing where everything is — and they break the moment that person is unavailable. We replace them with guided online systems that get the right answer without back‑and‑forth. Your customers and partners self‑serve. Your staff focus on work that actually needs them.</p>
|
||||
</div>
|
||||
|
||||
<div class="service">
|
||||
<h3>Measured AI integration <span class="tag">No hype · No lock‑in</span></h3>
|
||||
<p>AI is genuinely useful in a narrow set of situations. It's also genuinely overhyped in most others. I'll tell you which is which before we start — and I'll tell you what it can't do, not just what it can. We add AI to your existing tools only where it saves real time, makes real decisions clearer, or protects work your team is already doing well. No proprietary platforms. No black boxes.</p>
|
||||
</div>
|
||||
|
||||
<div class="service">
|
||||
<h3>Personal AI practice</h3>
|
||||
<p>Most AI advice is written for people who already understand the tools. This isn't that. A personal session designed around your specific work and what you're trying to do — whether you're a business owner, a professional, or someone who just wants to stop feeling behind. We figure out where AI genuinely helps you, what tools fit how you actually think, and what habits will stick. Includes a 30‑day follow‑up to see what stuck, what didn't, and what to adjust.</p>
|
||||
</div>
|
||||
|
||||
<p class="reassure">All projects include full documentation and a handover session. You will never be dependent on me to keep your tool running.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="results" id="results">
|
||||
<div class="wrap">
|
||||
<h2>Client results</h2>
|
||||
<p class="section-intro">Real projects. Real clients. The before and after of replacing manual processes with intelligent web tools.</p>
|
||||
|
||||
<div class="case">
|
||||
<h3>Dealer pricing: from emailed workbook to live catalog</h3>
|
||||
<p><strong>Before —</strong> dealer pricing lived in a multi‑tab Excel workbook that was emailed to resellers on request. Dealers had to manually calculate their own pricing, and any discount change meant redistributing the file. Staff spent significant time fielding calls from dealers who couldn't find what they needed.</p>
|
||||
<p><strong>After —</strong> a hosted dealer pricing tool with real‑time discount logic, profile‑based pricing tiers, product filtering, and a built‑in order builder with export and email summary. Dealers access it directly — no file to download, no call required.</p>
|
||||
<div class="case-shots">
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">Before — Excel workbook</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ias-before.png" alt="Dealer pricing before: a multi-tab Excel workbook with manual price columns" width="1735" height="808" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">After — Hosted web app</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ias-after.png" alt="Dealer pricing after: a filterable product catalog with live discount logic and order export" width="1919" height="953" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
</div>
|
||||
<blockquote>
|
||||
<p>"We've been imagining something like this for years. Our catalog used to live in a spreadsheet we'd email back and forth — now our dealers can filter products, build orders in their own pricing, and send them through electronically. Mike built exactly what we needed."</p>
|
||||
<footer class="case-cite">
|
||||
<span class="case-headshot"><img src="assets/people/fred-hobeyn.webp" alt="Fred Hobeyn" width="160" height="160" loading="lazy" decoding="async"></span>
|
||||
<span class="case-cite-text"><span class="case-name">Fred Hobeyn</span><span class="case-role">Owner — Innovative Aluminum Systems</span></span>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<div class="case">
|
||||
<h3>Order forms: from printed sheet to guided system</h3>
|
||||
<p><strong>Before —</strong> the customer order form was a printed Excel sheet with basic formulas. Sales reps filled it in manually, calculated totals by hand, and emailed or faxed it in. The process was error‑prone, slow, and entirely dependent on one person knowing where everything was.</p>
|
||||
<p><strong>After —</strong> a hosted web order form with multiple pricing tiers, a pattern selector with live unit pricing, cut‑length calculators, and a print‑ready summary. Orders are submitted electronically — no phone call, no fax, no manual calculation.</p>
|
||||
<div class="case-shots">
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">Before — Printed Excel sheet</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ondek-before.png" alt="Order form before: a printed Excel sheet with manual product and quantity columns" width="895" height="715" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
<figure class="case-shot">
|
||||
<figcaption class="case-shot-label">After — Web order form</figcaption>
|
||||
<div class="case-shot-frame"><img src="assets/work/ondek-after.png" alt="Order form after: a web-based order form with price tiers, pattern selector, and live totals" width="1546" height="806" loading="lazy" decoding="async"></div>
|
||||
</figure>
|
||||
</div>
|
||||
<blockquote>
|
||||
<p>"I've been in this industry long enough to be skeptical of tech promises. This wasn't that. Michael took the time to understand our process first, then built something that fits. It's a massive leap forward for us."</p>
|
||||
<footer class="case-cite">
|
||||
<span class="case-headshot"><img src="assets/people/jim-szlabon.webp" alt="Jim Szlabon" width="160" height="160" loading="lazy" decoding="async"></span>
|
||||
<span class="case-cite-text"><span class="case-name">Jim Szlabon</span><span class="case-role">Senior Sales — OnDek Vinyl Worx</span></span>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<p class="reassure">Have a spreadsheet or process that needs the same treatment? <a href="#contact">Start with a conversation.</a></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="process" id="process">
|
||||
<div class="wrap narrow">
|
||||
<h2>How it works</h2>
|
||||
<p class="section-intro">Every step explained. Every decision yours to approve. No black boxes, no surprises — a transparent process from first call to final handoff.</p>
|
||||
<section class="band alt" data-bg="light" id="process">
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">How it works</p>
|
||||
<h2>Every step explained. <em>Every decision yours.</em></h2>
|
||||
<p class="section-intro">No black boxes, no surprises — a transparent path from the first call to the final handoff.</p>
|
||||
<ol class="steps">
|
||||
<li>
|
||||
<h3>A free fit call</h3>
|
||||
<p>A short conversation to see if there's a match. You describe what's slowing you down. I give you an honest read on whether I can help. No pitch, no obligation. If it's not the right match, I'll tell you honestly and point you somewhere that can help.</p>
|
||||
<p>A short conversation to see if there's a match. You describe what's slowing you down; I give you an honest read on whether I can help. No pitch, no obligation. If it's not a fit, I'll tell you and point you somewhere that is.</p>
|
||||
</li>
|
||||
<li>
|
||||
<h3>A paid discovery session</h3>
|
||||
<p>If there's a fit, a focused 90‑minute working meeting where we map the real problem, identify what's worth solving first, and outline what a solution would look like. You leave with a written recommendation, whether or not we work together further.</p>
|
||||
<p>If there's a fit, a focused 90‑minute working meeting where we map the real problem, decide what's worth solving first, and outline what a solution looks like. You leave with a written recommendation — whether or not we work together further.</p>
|
||||
</li>
|
||||
<li>
|
||||
<h3>A fixed‑scope proposal</h3>
|
||||
<p>You know exactly what gets built, what it costs, and what you own at the end — before any work begins. The proposal is written in plain language, not technical jargon. Scope changes are a conversation, not a surprise invoice.</p>
|
||||
<p>You know exactly what gets built, what it costs, and what you own at the end — before any work begins. Written in plain language, not jargon. Scope changes are a conversation, not a surprise invoice.</p>
|
||||
</li>
|
||||
<li>
|
||||
<h3>A deliverable you own</h3>
|
||||
<p>The work moves in iterative cycles with regular review meetings. At the end: hosted, documented, and yours. Full documentation and a walkthrough session. Update it, share it, use it — without ever calling me again. Unless you want to. Ongoing support is available, but never required.</p>
|
||||
<p>The work moves in short cycles with regular review. At the end it's hosted, documented, and yours — update it, share it, use it without ever calling me again. Unless you want to: ongoing support is available, never required.</p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="about" id="about">
|
||||
<div class="wrap narrow">
|
||||
<h2>About</h2>
|
||||
<p class="about-name">Michael Victory — Principal, Shop Wisdom</p>
|
||||
<p>I've spent 25 years inside small and mid‑sized businesses, including 13 years building long‑term partnerships across a dealer network, and the last several years training non‑technical people to use modern tools well. I know what it looks like when good people are slowed down by tools that were never built for how they actually work — and what it costs a shop when the person who knew how everything worked finally retires.</p>
|
||||
<p>I started this practice because I kept seeing the same gap: the distance between what a business needs and what technology vendors were willing to build honestly and affordably. Most consultants either over‑engineer the solution or under‑explain the cost. I've been on the receiving end of both.</p>
|
||||
<p>I use modern tools — including AI — to build faster and at lower cost than traditional development. I'll always tell you how something was built and what it can't do. No mystification, no inflated promises. And I'll tell you if you don't need me. That conversation costs nothing and saves everyone time.</p>
|
||||
<section class="band light" data-bg="light" id="about">
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">About</p>
|
||||
<h2>The person you'll <em>actually</em> be working with.</h2>
|
||||
<p class="about-name">Michael Victory — ShopWisdom</p>
|
||||
<p>I've spent 25 years inside small and mid‑sized businesses — including 13 building long‑term partnerships across a dealer network, and the last several years helping non‑technical people use modern tools well. I know what it looks like when good people are slowed down by tools that were never built for how they work — and what it costs a shop when the person who knew how everything ran finally retires.</p>
|
||||
<p>I started this practice because I kept seeing the same gap: the distance between what a business actually needs and what technology vendors were willing to build honestly and affordably. Most consultants either over‑engineer the solution or under‑explain the cost. I've been on the receiving end of both.</p>
|
||||
<p>I use modern tools — including AI — to build faster and cheaper than traditional development, and I'll always tell you how something was built and what it can't do. No mystification, no inflated promises. And I'll tell you if you don't need me. That conversation costs nothing and saves everyone time.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="fit" id="fit">
|
||||
<div class="wrap narrow">
|
||||
<h2>Honest about fit</h2>
|
||||
<p class="section-intro">Shop Wisdom isn't for everyone. We're probably not the right fit for:</p>
|
||||
<section class="band light" data-bg="light" id="fit">
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">Honest about fit</p>
|
||||
<h2>I'm <em>not</em> for everyone.</h2>
|
||||
<p class="section-intro">ShopWisdom is probably not the right fit if you're:</p>
|
||||
<ul class="notfor">
|
||||
<li><strong>Businesses looking to cut headcount through automation.</strong> AI used to make people redundant isn't what we do.</li>
|
||||
<li><strong>Anyone who wants a vendor forever.</strong> If you want to pay someone monthly to keep your system running, there are plenty of SaaS products. We're not one of them.</li>
|
||||
<li><strong>Anyone looking for a Super Bowl AI strategy.</strong> No hype, no transformation slides, no buzzwords. Just specific work with measurable outcomes.</li>
|
||||
<li><strong>Businesses where the people problems run deeper than systems.</strong> Tools amplify what's already there. If trust is missing, software won't fix it — though that's exactly the kind of work our sister practice, <a href="https://opencommunications.consulting">Open Communications</a>, takes on.</li>
|
||||
<li><strong>Looking to cut headcount through automation.</strong> AI used to make people redundant isn't what I do.</li>
|
||||
<li><strong>After a vendor forever.</strong> If you want to pay someone monthly just to keep your system running, there are plenty of SaaS products. I'm not one of them — the Continuity Partner keeps your knowledge current; it doesn't hold your tools hostage.</li>
|
||||
<li><strong>Shopping for a Super Bowl AI strategy.</strong> No hype, no transformation slides, no buzzwords. Just specific work with measurable outcomes.</li>
|
||||
<li><strong>Facing people problems that run deeper than systems.</strong> Tools amplify what's already there. If trust is missing, software won't fix it — though that's exactly what my other practice, <a href="https://www.opencommunications.consulting/">Open Communications</a>, takes on.</li>
|
||||
</ul>
|
||||
<p>If any of that describes you, we're probably not the right fit — and being honest now saves us both time.</p>
|
||||
<p>If any of that is you, we're probably not a fit — and being honest now saves us both time.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="contact" id="contact">
|
||||
<div class="wrap narrow">
|
||||
<h2>Start with a conversation</h2>
|
||||
<p>No pitch. No proposal until we've had a real conversation. Describe the friction — even roughly. The more context you share, the more useful our first conversation will be.</p>
|
||||
<p>I read every message personally and usually reply within one business day. If your problem isn't something I can help with, I'll tell you honestly — and point you somewhere that can.</p>
|
||||
<div class="o-divider" aria-hidden="true">
|
||||
<svg viewBox="0 0 538 538"><path d="M269.06,0C120.46,0,0,120.46,0,269.06s120.46,269.06,269.06,269.06,269.06-120.46,269.06-269.06S417.66,0,269.06,0ZM276.06,356.34c-48.2,0-87.28-39.07-87.28-87.28s39.07-87.28,87.28-87.28,87.28,39.08,87.28,87.28-39.07,87.28-87.28,87.28Z"/></svg>
|
||||
</div>
|
||||
|
||||
<section class="band light contact" data-bg="light" id="contact">
|
||||
<div class="wrap narrow reveal">
|
||||
<p class="eyebrow">Start a conversation</p>
|
||||
<h2>Your know‑how built this shop. Let's make sure it <em>stays</em> in it.</h2>
|
||||
<p>No pitch, no proposal until we've had a real conversation. Describe the friction — even roughly. The more context you share, the more useful our first call will be.</p>
|
||||
|
||||
<form class="lf" data-endpoint="https://n8n.shopwisdom.ca/webhook/lead" data-source="shopwisdom" novalidate>
|
||||
<div class="lf-progress" aria-hidden="true"><span class="lf-dot is-active"></span><span class="lf-dot"></span><span class="lf-dot"></span></div>
|
||||
@@ -287,7 +306,7 @@
|
||||
<fieldset class="lf-step" data-step="2">
|
||||
<legend class="lf-q">Anything you want me to know? <span class="lf-opt">(optional)</span></legend>
|
||||
<textarea class="lf-input" name="detail" rows="3" placeholder="Even a rough sentence helps."></textarea>
|
||||
<div class="lf-nav"><button type="button" class="btn ghost lf-back" data-back>← Back</button><button type="button" class="btn lf-next" data-next>Continue →</button></div>
|
||||
<div class="lf-nav"><button type="button" class="btn link lf-back" data-back>← Back</button><button type="button" class="btn lf-next" data-next>Continue →</button></div>
|
||||
</fieldset>
|
||||
<fieldset class="lf-step" data-step="3">
|
||||
<legend class="lf-q">Where do I reach you?</legend>
|
||||
@@ -295,39 +314,55 @@
|
||||
<input class="lf-input" type="email" name="email" placeholder="Email" required autocomplete="email">
|
||||
<input class="lf-input" type="tel" name="phone" placeholder="Phone (optional)" autocomplete="tel">
|
||||
<input type="text" name="company_website" class="lf-hp" tabindex="-1" autocomplete="off" aria-hidden="true">
|
||||
<div class="lf-nav"><button type="button" class="btn ghost lf-back" data-back>← Back</button><button type="submit" class="btn lf-submit">Send it →</button></div>
|
||||
<div class="lf-nav"><button type="button" class="btn link lf-back" data-back>← Back</button><button type="submit" class="btn lf-submit">Send it →</button></div>
|
||||
<p class="lf-err" hidden>Hmm — that didn't go through. Please <a href="mailto:michael@opencommunications.consulting">email me directly</a> and I'll get right back to you.</p>
|
||||
</fieldset>
|
||||
<div class="lf-done" hidden><p class="lf-done-msg">Got it — thanks. I read every message personally and usually reply within a business day.</p></div>
|
||||
</form>
|
||||
|
||||
<p class="lf-alt">Prefer to reach out directly?</p>
|
||||
<p class="contact-action">
|
||||
<a class="btn" href="mailto:michael@opencommunications.consulting?subject=Fit%20call%20—%20Shop%20Wisdom">Email Michael</a>
|
||||
<a class="btn ghost tel" data-p1="778" data-p2="985" data-p3="6736" href="mailto:michael@opencommunications.consulting">Call 778‑985‑OPEN (6736)</a>
|
||||
<p class="actions center">
|
||||
<a class="btn link" href="mailto:michael@opencommunications.consulting?subject=Fit%20call%20—%20Shop%20Wisdom">Email Michael</a>
|
||||
<a class="btn link tel" data-p1="778" data-p2="985" data-p3="6736" href="mailto:michael@opencommunications.consulting">Call 778‑985‑OPEN (6736)</a>
|
||||
</p>
|
||||
<p class="contact-promise">The first call is free and commits you to nothing.</p>
|
||||
<p class="promise">The first call is free and commits you to nothing.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<footer class="site-footer">
|
||||
<div class="wrap">
|
||||
<p class="footer-brand">Shop<span>Wisdom</span></p>
|
||||
<p>Built with care and AI · Work owned by its clients</p>
|
||||
<p>Hosted in Beauharnois, Québec — your data stays in Canada.</p>
|
||||
<p class="footer-call"><a class="tel" data-p1="778" data-p2="985" data-p3="6736" href="mailto:michael@opencommunications.consulting">778‑985‑OPEN (6736)</a></p>
|
||||
<p class="footer-legal">Shop Wisdom and Open Communications are practices of Open Communications, owned and operated by Michael Victory · British Columbia, Canada</p>
|
||||
<footer class="site-footer" data-bg="dark">
|
||||
<div class="footer-bg" aria-hidden="true">
|
||||
<svg class="footer-bg-img" viewBox="0 0 1267.12 317" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
|
||||
<path d="M158.5,0C70.96,0,0,70.96,0,158.5s70.96,158.5,158.5,158.5,158.5-70.96,158.5-158.5S246.04,0,158.5,0ZM158.42,210.08c-28.44,0-51.5-23.06-51.5-51.5s23.06-51.5,51.5-51.5,51.5,23.06,51.5,51.5-23.06,51.5-51.5,51.5Z"/>
|
||||
<path d="M475.45.08c-87.54,0-158.5,70.96-158.5,158.5,0,1.27.02,2.54.05,3.81v154.87h106.87v-158.6h0c0-28.44,23.06-51.5,51.5-51.5s51.5,23.06,51.5,51.5-23.06,51.5-51.5,51.5c-6.49,0-12.7-1.21-18.42-3.41v109.24c6.07.71,12.24,1.08,18.5,1.08,87.54,0,158.5-70.96,158.5-158.5S562.99.08,475.45.08Z"/>
|
||||
<path d="M791.96,210.25c-28.44,0-51.5-23.06-51.5-51.5s23.06-51.5,51.5-51.5,51.5,23.06,51.5,51.5c0,6.49-1.21,12.7-3.41,18.42h109.41c.71-6.07,1.08-12.24,1.08-18.5C950.54,71.13,879.57.17,792.04.17s-158.5,70.96-158.5,158.5,70.96,158.5,158.5,158.5c69.48,0,128.51-44.71,149.91-106.92h-149.99Z"/>
|
||||
<path d="M1109.31,0h0S950.12,0,950.12,0v159.19h0c.35,81.64,62.41,148.7,141.95,156.95v-156.13c0-9.14,7.41-16.54,16.54-16.54s16.54,7.41,16.54,16.54v156.13c79.76-8.27,141.96-75.69,141.96-157.64C1267.12,71.19,1196.53.38,1109.31,0Z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="footer-content">
|
||||
<div class="footer-block">
|
||||
<p class="footer-wordmark">Shop<span>Wisdom</span></p>
|
||||
<nav class="footer-links" aria-label="Footer">
|
||||
<a href="#work">The work</a>
|
||||
<a href="#results">Client results</a>
|
||||
<a href="#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 · Hosted in Beauharnois, Québec — your data stays in Canada.</p>
|
||||
<p class="footer-copy">Shop Wisdom and Open Communications are practices of Open Communications, owned and operated by Michael Victory · British Columbia, Canada</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<div class="float-cta">
|
||||
<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 call</a>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function () {
|
||||
var links = document.querySelectorAll('a.tel');
|
||||
for (var i = 0; i < links.length; i++) {
|
||||
var el = links[i];
|
||||
el.setAttribute('href', 'tel:+1' + el.dataset.p1 + el.dataset.p2 + el.dataset.p3);
|
||||
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');
|
||||
@@ -344,10 +379,34 @@
|
||||
toggle.classList.toggle('open', open);
|
||||
toggle.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');
|
||||
toggle.setAttribute('aria-expanded', open ? 'true' : 'false');
|
||||
updateNavTheme();
|
||||
});
|
||||
var mlinks = menu.querySelectorAll('a');
|
||||
for (var j = 0; j < mlinks.length; j++) { mlinks[j].addEventListener('click', closeMenu); }
|
||||
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
|
||||
: (function () { var mr = menu.getBoundingClientRect(); return (mr.top + mr.bottom) / 2; })();
|
||||
menu.classList.toggle('on-dark', darkBehind(probe));
|
||||
}
|
||||
}
|
||||
updateNavTheme();
|
||||
window.addEventListener('scroll', function () { window.requestAnimationFrame(updateNavTheme); }, { passive: true });
|
||||
window.addEventListener('resize', updateNavTheme);
|
||||
})();
|
||||
</script>
|
||||
|
||||
@@ -410,5 +469,37 @@
|
||||
Cal("init", { origin: "https://cal.shopwisdom.ca" });
|
||||
</script>
|
||||
|
||||
<!-- Motion: reveal-on-scroll + stagger + open-o divider + persistent CTA. Gated on html.has-motion. -->
|
||||
<script>
|
||||
(function () {
|
||||
var root = document.documentElement;
|
||||
if (!root.classList.contains('has-motion')) return;
|
||||
var nodes = [].slice.call(document.querySelectorAll('.reveal, .stagger, .o-divider'));
|
||||
function showAll() { nodes.forEach(function (n) { n.classList.add('in'); }); }
|
||||
try {
|
||||
if ('IntersectionObserver' in window) {
|
||||
var io = new IntersectionObserver(function (entries) {
|
||||
entries.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } });
|
||||
}, { rootMargin: '0px 0px -10% 0px', threshold: 0.12 });
|
||||
nodes.forEach(function (n) { io.observe(n); });
|
||||
} else { showAll(); }
|
||||
} catch (err) { showAll(); }
|
||||
|
||||
var cta = document.querySelector('.float-cta');
|
||||
var hero = document.querySelector('.hero');
|
||||
var contact = document.getElementById('contact');
|
||||
if (cta && hero) {
|
||||
var upd = function () {
|
||||
var pastHero = window.scrollY > hero.offsetHeight - 90;
|
||||
var atContact = contact && contact.getBoundingClientRect().top < window.innerHeight * 0.92;
|
||||
cta.classList.toggle('show', pastHero && !atContact);
|
||||
};
|
||||
upd();
|
||||
window.addEventListener('scroll', function () { window.requestAnimationFrame(upd); }, { passive: true });
|
||||
window.addEventListener('resize', upd);
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user