Commit Graph

52 Commits

Author SHA1 Message Date
mike 12db89f891 Fix Call buttons: tel: fallback instead of mailto
The Call buttons fell back to mailto: when the tel-rewrite script hadn't
run, so tapping "Call" opened an email draft on mobile. Switch the static
fallback to tel:+17789856736 (number is already public in JSON-LD, so no
added scraper exposure). Display text unchanged. Email Michael buttons untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 19:19:31 -07:00
mike cc6212b5c6 Perf: self-host fonts (drop render-blocking Google Fonts) + defer Cal embed + lighter mobile hero
Self-hosted woff2 (8 latin faces, subset, font-display swap), preload H1/body faces; removed Google Fonts link. Cal embed now loads on first interaction, not page load. Re-encoded mobile hero 1.9MB->0.48MB. A11y: eyebrow size up to 0.72rem + amber text -> amber-deep.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 19:16:32 -07:00
mike 993eae882c OC: sync og:image:alt to the regenerated card (drop stale 'systems are the easy part')
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 06:11:46 -07:00
mike 090757152f OC pitch refresh: 'New systems don't fail on the tech. They fail on the people' + brand-review fixes
Per a brand-voice review of the 'systems are the easy part' pitch: new hero H1; rigor cue added to the lead ('a clear method, and the people skill to make it land') so the page carries rigor AND soul above the fold; problem eyebrow changed to 'Where change actually breaks' (off the consultant axis Dale distrusts); tightened the emph line. Synced meta description + JSON-LD slogan to the new hero. Regenerated the OG share card (og-card.svg re-lettered, og-card.png re-rasterized via Chrome headless).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 06:06:35 -07:00
mike 8e658ba6fd OC SEO/GEO: rich JSON-LD @graph (Org + ProfessionalService w/ service catalog + Person + WebSite + WebPage); inga page schema linked to org + og:image/twitter; sitemap adds inga.html + lastmod; add llms.txt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 00:20:23 -07:00
mike ea2ccb6dfe OC: cross-brand SW logos — full-colour horizontal SW logo replaces the bridge text link; all-white SW logo replaces the plain ShopWisdom footer link.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 23:45:26 -07:00
mike 20fc98b652 Language: restore "we" voice; list Inga as an Associate (per her review)
Inga reviewed and prefers the "we" voice and to be listed as an Associate (as other
firms do, e.g. roundtableconsulting.ca). Roll back the sole-prop "I" pass to "we",
and reframe her from "independent coach we work with" to "Associate … collaborates
with us" — affiliated but still independent (not partner, not employee).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 17:13:31 -07:00
mike fda7cc434e Voice: sole-proprietor first person — practice "we/our" -> "I/my"
Mike is a sole proprietor. Convert Open Communications' practice voice from "we/our"
to "I/my" (Michael) across the homepage + Inga page. Labels: "How we work" -> "How I
work"; "Who we are" -> "Who you work with" (the section lists Michael + Inga).
Collaborative "we" (you + me) and Inga's own first-person/project "we" left intact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 11:48:40 -07:00
mike 85c58b8fea Language: position Inga as an independent coach OC works with — not partner/staff
Mike is a sole proprietor; Inga is an independent subcontractor. Remove framing that
implied a firm/partnership/employment: "leads our practice", "co-facilitator", "the
backbone of how we work", schema worksFor (= employee). Replace with "Open
Communications works with Inga Michaelsen, an independent leadership and team coach."

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 10:57:36 -07:00
mike a8a01871b1 Integrate Inga's content as an OC page (inga.html) — drop the separate subdomain
Build Inga's coaching practice as a native OC page in the OC design system: hero,
familiar-symptoms, approach + outcomes, "where to start" service cards, deeper-
engagement principles, social-impact callout, dark "in practice" band (count-up
stats + quotes), about essay, and a CTA wired to OC's real Cal.com booking. New
scoped inga.css for the components OC lacked. Repoint "More about Inga" from the
inga.opencommunications.consulting subdomain to the internal page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 10:34:44 -07:00
mike 5fa57cf11c OC hero: halve particle opacity (.55 -> .275) and slow desktop drift to 0.5x
Mike: lighter and calmer. Desktop particle loop plays at half speed (playbackRate
0.5, set on loadedmetadata + playing); mobile C unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 06:45:39 -07:00
mike 723de7aaf8 OC: point "More about Inga" to our mirror (inga.opencommunications.consulting)
Repoint from the old external ingamichaelsen.com to our sovereign Inga mirror at
its production subdomain; opens in a new tab. Link goes live with the Inga deploy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 05:00:15 -07:00
mike 2c61b75a77 Hero: waves on desktop, C (dots) on mobile — viewport picks the loop
Desktop swaps to the flowing thin-line waves (they blend clean against the cream;
C's cool-gray background never did) with the Manus-style left-edge paper fade
restored. Mobile keeps the C loop Mike approved (rotated 90deg, centered, tinted).
JS chooses the source by viewport at load. Drop the unused comparison clips.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 22:37:58 -07:00
mike 5c6cbde329 Hero: revert zoom (full-cover/full-res), keep 50% opacity; navy theme-color; add video comparison page
- Revert the scale/translate zoom that softened the loop and pulled it off the
  edges; back to full-cover (full res). Re-encoded current loop at 1080p (2.4MB).
- Keep the 50% opacity lightening. Mobile loop back to centered (left:50%).
- theme-color -> navy (#0f1729) so the mobile address-bar UI is dark blue, not amber.
- Add hero-previews.html: 4 hero options (current + A/B/C) at 50%, full-cover, noindex,
  for side-by-side comparison. Preview videos are temporary.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:55:11 -07:00
mike 057ccb7ba6 Hero loop: swap to the Adobe Stock flowing-wave clip (mp4-only)
Replace the spheres with AdobeStock_1457104053 — abstract flowing wave/particle
field on near-white (blends into paper). Optimized 60MB->1.1MB H.264 (1280x720,
crf 25, faststart). Dropped the webm: VP9 came out larger than H.264 for this
thin-line content, and H.264 plays everywhere, so a single mp4 source is smaller
and universal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:24:27 -07:00
mike 8691e083a4 Hero loop: add H.264 mp4 fallback source for old Safari/iOS
Transcoded the VP9 webm to H.264 mp4 (~220KB) and add it as a second <source>
after the webm — modern browsers take the smaller VP9, pre-2021 Safari/iOS fall
back to mp4. JS appends both sources before load().

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:16:00 -07:00
mike acf161a192 Favicon: bigger open-o, transparent (no square), + PNGs
Match the reference treatment — the open-o large with minimal padding and NO
background — keeping the brand amber. favicon.svg transparent; rasterized
transparent favicon.png (64) + apple-touch-icon.png (180) via Chrome headless;
wired all three in <head>.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 21:04:41 -07:00
mike 09a0009053 Nav transparent until scroll; mobile hero loop rotated 90deg CW + fit
- Nav: fully transparent over the hero (no bg/blur/border), frosts in once
  scrolled past 24px (.scrolled toggled in updateNavTheme; on-dark still wins
  over dark sections).
- Mobile hero loop: rotate 90deg CW and size (240px x 100vw, centered) so it
  fills the landscape strip after rotation; warm tint ::after still applies.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 20:15:36 -07:00
mike 89ce3cdcac Hero: full-bleed ambient loop behind nav + left-edge blend (match reference)
Stop boxing the loop. Pull .hero-media out of the content grid to a direct child
of .hero, absolutely positioned to bleed off the right edge and up behind the
frosted nav. Dissolve its left edge into the paper with a gradient mask-image and
warm it with a subtle paper/multiply overlay so it reads as cream, not stark
white — matching how Manus meshed it in. Mobile = full-width strip with a
bottom fade.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 19:58:52 -07:00
mike 77f5cf493d Hero loop: drop poster, fade the video in on play
Can't generate a frame poster (the loop is VP9; fine for real browsers but the
review tooling can't decode it), so rely on the paper-tinted panel as the
instant never-blank base and fade the video in on the 'playing' event. Cleaner
and removes a 404. VP9 confirmed — plays on all modern browsers + iOS 14.5+.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 18:34:57 -07:00
mike 2da2797b2c Hero: reinstate the ambient loop as a split layout, done right
Bring back the reference's hero ambient — text left, looping WebM right — but
fixed: self-hosted (62KB, off Manus's S3), poster-first with a paper-tinted
container so it's NEVER blank, and loaded via JS only when appropriate (skipped
on Save-Data and prefers-reduced-motion; poster stays if autoplay is blocked).
No autoplay attribute = no surprise download. Poster image added next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 18:32:07 -07:00
mike a2a57ce8a1 Add tasteful motion starter set (reviewable, gated, LCP-safe)
Progressive-enhancement motion, all gated on a single html.has-motion line so
it's trivially on/off:
- Section reveal-on-scroll (fade + 10px rise), below the fold only — hero stays
  instant so LCP is untouched. Animates opacity/transform only (CLS 0).
- Staggered reveal on the three "how we work" blocks.
- Grow-on-hover underline for prose links (clearer affordance).
- An open-o divider that settles in just before the contact CTA.
- Persistent "Book a conversation" that returns after the hero scrolls off and
  steps aside at the contact section.
~1KB inline vanilla JS (IntersectionObserver), try/catch + reduced-motion guard
so content is never left hidden. No animation library.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 17:47:02 -07:00
mike 57842ca771 Update footer watermark to the refreshed o·P·e·n mark
The large footer background mark still used the old letterforms; swap in the
updated mark paths (same as the new logo + favicon) so the watermark matches.
Aspect ratio unchanged, so footer height is unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 07:45:14 -07:00
mike 3adce443d1 Rewrite 'How we work' as the three-places model (Inga's feedback)
Replaces the model-teaching cards (and the 'Clear models / not just a
workshop' heading) with Inga's concrete framing: the work happens in three
places — the people who carry the knowledge (coaching), the team that has to
get on board (facilitation), and the process that could work better
(redesign). Stacked editorial rows; new .work-list styles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 06:37:52 -07:00
mike 13625a8db0 Remove above-the-line / drama-triangle framework material (Inga's review)
Inga's feedback: the framework focus is too much to give away on the site —
it belongs in a live session/workshop. Removed both dedicated diagram
sections (above/below the line graphic; drama->empowerment triangles) and
their IP-attribution credits. Reworded the two "How we work" cards to drop
the named models, keeping the plain-language value.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 06:10:27 -07:00
mike 9b2ccdb865 Coaching card: clarify sessions are ongoing, not one-and-done
Inga's review flagged that "Booked in single sessions" read as a single
total session. Reword to "one session at a time — as many as the work
calls for" so the individually-booked-but-ongoing nature is clear.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-22 05:29:11 -07:00
mike 259ecf28fd Point lead form to unified n8n webhook /webhook/lead
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:47:53 -07:00
mike 3537cd62f9 Add low-friction 3-step lead form to contact section (posts to n8n)
Soft conversion path alongside booking: situation -> optional detail -> name/email.
Honeypot-protected, posts JSON to https://n8n.shopwisdom.ca/webhook/oc-lead, with an
email fallback on error. Captures the 'interested but not ready to book' visitor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 21:26:47 -07:00
mike 05bf44e05c Wire 'Book a conversation' CTAs to Cal.com booking popup (OC event)
Nav (x2) + hero buttons now open the michaelvictory/20min-opencommunications-meeting
event in an on-brand Cal.com modal overlay; href points at the booking page as a
no-JS fallback. Adds the Cal embed loader.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 20:28:36 -07:00
mike 1ab78f0c76 Reframe drama/empowerment model (not a workshop) + separate triangles + add IP attribution + above/below-the-line graphic
- Reframe: card tags Workshop/Flagship -> 'A shared lens' / 'The core shift';
  diagram intro now 'not a workshop you sit through - a lens for the room'.
- Separate the two triangles: drama points DOWN (Persecutor/Rescuer/Victim),
  empowerment points UP (Creator/Challenger/Coach), with a 'the shift' arrow +
  role-mapping legend (Victim->Creator, Persecutor->Challenger, Rescuer->Coach).
- Proper IP attribution: Karpman (1968) for the Drama Triangle; David Emerald
  (TED*) for the Empowerment Dynamic; Conscious Leadership Group for above/below.
- New 'above / below the line' teaching graphic with its own section + credit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 14:20:35 -07:00
mike 4d42fbf43f Move case-study proof to ShopWisdom (systems proof belongs on the systems site)
The IAS/OnDek before-after testimonials praise tool delivery, which is SW's
domain — and SW already hosts them in text at #results. Remove the OC 'Proof,
from the field' section + its assets; OC's proof should be human-change work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 13:59:20 -07:00
mike 0925d2b82d Add 'Proof, from the field' section — real before/after work + client testimonials
Two case studies pulled from the reference build: Innovative Aluminum Systems
(dealer pricing tool) and OnDek Vinyl Worx (customer order form), each showing a
before/after screenshot pair plus the client's quote and headshot. Side-by-side
with an arrow on desktop; stacks with the arrow hidden on mobile. Framed to OC's
adoption thesis (systems stick because the people were brought along). Assets in
assets/work/ + assets/people/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 12:45:57 -07:00
mike 2113694308 Add social share card (og:image) + summary_large_image
Brand-accurate 1200x630 OG card (paper bg, navy serif headline, amber accent,
navy footer band). Wires og:image/twitter:image so shared links render a card
on LinkedIn/iMessage/Slack instead of a blank preview. SVG source kept alongside.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 11:52:01 -07:00
mike 1f2e84658d Flip expanded menu theme at the text's leading edge, not panel midpoint
The mobile menu links are top-anchored, so the panel's vertical midpoint sits
well below them. Triggering the light/dark flip at that midpoint meant the dark
boundary had already risen past the text before the switch fired. Probe the
lowest link's bottom edge instead so the fade lands as the boundary reaches the
text — matching how the thin nav bar flips at its own content.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 11:09:38 -07:00
Michael Victory fcfbfd8817 OC nav flip: independent per-area detection (bar + menu read their own bg, re-check on open) + fade transitions
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 10:52:13 -07:00
Michael Victory 3267a6e8cc OC nav: adaptive — nav + mobile menu flip to dark frosted with light text over dark sections
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:47:04 -07:00
Michael Victory 0c42369220 OC nav: move mobile dropdown out of the backdrop-filtered nav so its own glass (backdrop-filter) actually blurs the page — fixes missing frosted effect on the open menu
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:21:38 -07:00
Michael Victory 651d429645 OC: SEO/GEO scaffolding — JSON-LD (ProfessionalService + NAP), OG/Twitter, canonical, robots.txt, sitemap.xml, SVG favicon
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 06:25:44 -07:00
Michael Victory 049e9aec11 OC nav: match Manus — always-white frosted glass, small no-wrap desktop links + smaller CTA, hamburger->circle mobile menu with CTA inside the dropdown
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 06:15:57 -07:00
Michael Victory d2f80b1565 OC footer: exact match to Manus build (footer-bg watermark svg + scaled content block on mobile, align-items center, logo 28/21px)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 14:45:21 -07:00
Michael Victory aeb57c0a01 OC: correct the diagram to the real model — interlocking drama (Persecutor/Rescuer/Victim) + empowerment (Creator/Challenger/Coach) triangles with proper transformation pairings
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:47:05 -07:00
Michael Victory 3661d41eee OC footer: image-based watermark (no aspect-ratio width-blowout); mobile content-driven height with logo anchored bottom — fixes 640px horizontal overflow
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 12:07:06 -07:00
Michael Victory f43dd5bf78 OC footer: match reference content (~98px) — drop phone line, tighten so it fits the 4:1 logo-sized footer at phone widths
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:43:05 -07:00
Michael Victory 1693c97f65 OC footer: height = bg logo (aspect-ratio 4:1), no padding/min-height; mobile lets content drive height with logo covering — fixes empty gap
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:16:49 -07:00
Michael Victory 5b287335df OC: match reference layout — full-width sections w/ 48px padding, left-aligned ~600px content column, reading max-widths (was centered 1100 column)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:55:13 -07:00
Michael Victory c0fef0e18e OC footer: full-bleed open watermark (img drives height, ~4:1), content overlaid bottom-left — matches reference geometry
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:47:42 -07:00
Michael Victory c6a32665be OC: match reference exactly — Playfair 400 headlines, DM Sans 400 wide-tracked UI, navy #0F1729, bg #F7F4EF, small squared buttons
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 10:05:32 -07:00
Michael Victory 7a52ad6b11 OC: rebuild to match reference — light/cream main theme, Playfair + amber-italic headlines, Lora body, squared amber buttons, navy statement band + footer anchor with open watermark
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 09:29:37 -07:00
Michael Victory fb44bc8a15 OC: restore reference color scheme (navy + amber + glass); keep real logo + pattern
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 08:53:21 -07:00
Michael Victory a054a4fe91 OC: adopt real 2026 brand — monochrome palette, official open-communications logo (adaptive via CSS mask), geometric pattern motif; drop placeholder amber
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 08:00:43 -07:00