Files
lean-101-website/lean-101-website-html-v3/index.html
T
2026-05-06 22:38:06 +12:00

1998 lines
65 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lean 101 — Smarter Improvement Solutions</title>
<link rel="preconnect" href="https://api.fontshare.com">
<link href="https://api.fontshare.com/v2/css?f[]=general-sans@400,500,600,700&display=swap" rel="stylesheet">
<style>
:root {
--blue: #0070c7;
--blue-deep: #005aa3;
--orange: #ec8b33;
--charcoal: #565656;
--grey: #efefef;
--grey-soft: #f6f7f9;
--ink: #1a1a1a;
--white: #ffffff;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: 'General Sans', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--ink);
background: var(--white);
font-weight: 400;
line-height: 1.5;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
img { max-width: 100%; display: block; }
/* ───────── NAV ───────── */
.nav {
position: sticky;
top: 0;
z-index: 100;
background: rgba(255, 255, 255, 0.85);
backdrop-filter: saturate(180%) blur(20px);
-webkit-backdrop-filter: saturate(180%) blur(20px);
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.nav-inner {
max-width: 1200px;
margin: 0 auto;
padding: 0 28px;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
}
.nav-logo {
display: flex;
align-items: center;
text-decoration: none;
}
.nav-logo img {
height: 44px;
width: 44px;
object-fit: contain;
}
.nav-links {
display: flex;
gap: 32px;
list-style: none;
}
.nav-links > li { position: relative; }
.nav-links a {
color: var(--ink);
text-decoration: none;
font-size: 14px;
font-weight: 500;
opacity: 0.85;
transition: opacity 0.2s;
display: inline-flex;
align-items: center;
gap: 4px;
}
.nav-links a:hover { opacity: 1; }
/* Dropdown caret */
.nav-links .has-dropdown > a::after {
content: '';
width: 8px;
height: 8px;
border-right: 1.5px solid currentColor;
border-bottom: 1.5px solid currentColor;
transform: rotate(45deg) translate(-2px, -2px);
margin-left: 2px;
transition: transform 0.2s;
}
.nav-links .has-dropdown:hover > a::after {
transform: rotate(225deg) translate(-2px, -2px);
}
/* Dropdown menu */
.nav-dropdown {
position: absolute;
top: calc(100% + 6px);
left: 0;
min-width: 240px;
background: var(--white);
border: 1px solid rgba(0,0,0,0.06);
border-radius: 12px;
padding: 8px;
box-shadow: 0 16px 40px -12px rgba(0,0,0,0.18), 0 4px 10px -4px rgba(0,0,0,0.06);
list-style: none;
opacity: 0;
visibility: hidden;
transform: translateY(-6px);
transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
z-index: 200;
}
.nav-links .has-dropdown:hover .nav-dropdown,
.nav-links .has-dropdown:focus-within .nav-dropdown {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
/* Invisible bridge so cursor can travel from nav item to dropdown */
.nav-links .has-dropdown::before {
content: '';
position: absolute;
top: 100%;
left: 0;
right: 0;
height: 12px;
}
.nav-dropdown li { display: block; }
.nav-dropdown a {
display: block;
padding: 10px 14px;
border-radius: 8px;
text-decoration: none;
transition: background 0.15s ease, color 0.15s ease;
opacity: 1;
color: var(--ink);
font-size: 14px;
font-weight: 500;
letter-spacing: -0.005em;
}
.nav-dropdown a::after { display: none; }
.nav-dropdown a:hover {
background: var(--grey-soft);
color: var(--blue);
}
.nav-dropdown a.current {
background: var(--grey-soft);
color: var(--blue);
font-weight: 600;
}
.nav-cta {
background: var(--ink);
color: white;
padding: 9px 18px;
border-radius: 999px;
font-size: 13px;
font-weight: 500;
text-decoration: none;
transition: background 0.2s;
}
.nav-cta:hover { background: var(--blue); }
/* ─── Hamburger button (mobile only) ─── */
.nav-hamburger {
display: none;
background: transparent;
border: 1px solid rgba(0, 0, 0, 0.12);
border-radius: 10px;
padding: 8px;
cursor: pointer;
color: var(--ink);
transition: background 0.2s, border-color 0.2s;
margin-left: 12px;
}
.nav-hamburger:hover {
background: var(--grey-soft);
border-color: rgba(0, 0, 0, 0.2);
}
.nav-hamburger svg { display: block; width: 22px; height: 22px; }
/* ─── Mobile drawer overlay ─── */
.nav-drawer-overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.4);
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
z-index: 99;
}
.nav-drawer-overlay.is-open {
opacity: 1;
pointer-events: auto;
}
/* ─── Mobile drawer (slides in from right) ─── */
.nav-drawer {
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: min(320px, 85vw);
background: var(--white);
box-shadow: -8px 0 30px -10px rgba(0, 0, 0, 0.15);
transform: translateX(100%);
transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
z-index: 100;
display: flex;
flex-direction: column;
overflow-y: auto;
}
.nav-drawer.is-open { transform: translateX(0); }
.nav-drawer-head {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 24px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.nav-drawer-head img { height: 28px; width: auto; }
.nav-drawer-close {
background: transparent;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 10px;
padding: 8px;
cursor: pointer;
color: var(--ink);
transition: background 0.2s, border-color 0.2s;
}
.nav-drawer-close:hover {
background: var(--grey-soft);
border-color: rgba(0, 0, 0, 0.2);
}
.nav-drawer-close svg { display: block; width: 18px; height: 18px; }
.nav-drawer-body { padding: 16px 0; flex: 1; }
.nav-drawer ul {
list-style: none;
padding: 0;
margin: 0;
}
.nav-drawer-item {
display: block;
padding: 14px 24px;
color: var(--ink);
text-decoration: none;
font-size: 16px;
font-weight: 500;
border-left: 3px solid transparent;
transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.nav-drawer-item:hover {
background: var(--grey-soft);
border-left-color: var(--blue);
}
/* Services group — small heading + indented children */
.nav-drawer-group-label {
display: block;
padding: 18px 24px 8px;
color: var(--charcoal);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.nav-drawer-subitem {
display: block;
padding: 12px 24px 12px 36px;
color: var(--ink);
text-decoration: none;
font-size: 15px;
font-weight: 500;
border-left: 3px solid transparent;
transition: background 0.15s, border-color 0.15s;
}
.nav-drawer-subitem:hover {
background: var(--grey-soft);
border-left-color: var(--blue);
}
.nav-drawer-subitem.coaching:hover { border-left-color: var(--orange); }
.nav-drawer-foot {
padding: 20px 24px 28px;
border-top: 1px solid rgba(0, 0, 0, 0.06);
}
.nav-drawer-cta {
display: block;
text-align: center;
background: var(--blue);
color: var(--white);
padding: 14px 22px;
border-radius: 999px;
font-size: 15px;
font-weight: 500;
text-decoration: none;
transition: background 0.2s;
}
.nav-drawer-cta:hover { background: var(--blue-deep); }
/* Body scroll lock while drawer is open */
body.nav-drawer-locked { overflow: hidden; }
@media (max-width: 720px) {
.nav-links { display: none; }
.nav-cta { display: none; }
.nav-hamburger { display: inline-flex; align-items: center; justify-content: center; }
}
/* ───────── HERO ───────── */
.hero {
padding: 80px 28px 100px;
text-align: center;
background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
}
.hero-eyebrow {
display: inline-block;
color: var(--blue);
font-size: 14px;
font-weight: 600;
letter-spacing: 0.02em;
margin-bottom: 20px;
}
.hero h1 {
font-size: clamp(40px, 7vw, 84px);
font-weight: 600;
letter-spacing: -0.035em;
line-height: 1.02;
margin-bottom: 22px;
max-width: 1000px;
margin-left: auto;
margin-right: auto;
}
.hero h1 em {
font-style: normal;
background: linear-gradient(90deg, var(--blue) 0%, var(--orange) 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
}
.hero-sub {
font-size: clamp(17px, 2vw, 22px);
color: var(--charcoal);
max-width: 700px;
margin: 0 auto 36px;
line-height: 1.45;
}
.hero-ctas {
display: flex;
gap: 14px;
justify-content: center;
flex-wrap: wrap;
}
.btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 14px 26px;
border-radius: 999px;
font-size: 15px;
font-weight: 500;
text-decoration: none;
transition: all 0.2s;
border: none;
cursor: pointer;
}
.btn-primary {
background: var(--blue);
color: white;
}
.btn-primary:hover { background: var(--blue-deep); }
.btn-secondary {
background: transparent;
color: var(--ink);
border: 1px solid rgba(0, 0, 0, 0.15);
}
.btn-secondary:hover { background: rgba(0, 0, 0, 0.04); }
.btn-arrow { transition: transform 0.2s; }
.btn:hover .btn-arrow { transform: translateX(3px); }
/* hero visual — 3 metrics stacked on right */
.hero-visual {
max-width: 1100px;
margin: 64px auto 0;
aspect-ratio: 16/9;
border-radius: 24px;
overflow: hidden;
position: relative;
box-shadow: 0 30px 80px -30px rgba(0, 112, 199, 0.25);
background: var(--grey);
}
.hero-visual img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* Stats sit BELOW the hero photo in a 2x2 grid card panel */
.hero-stats {
max-width: 1100px;
margin: 22px auto 0;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
}
.hero-stat {
background: var(--white);
border: 1px solid rgba(0,0,0,0.06);
border-radius: 16px;
padding: 22px 28px;
box-shadow: 0 6px 22px -10px rgba(0,0,0,0.08);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 6px;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.hero-stat:hover {
transform: translateY(-3px);
box-shadow: 0 14px 36px -14px rgba(0, 112, 199, 0.18);
}
.hero-stat-num {
font-size: 32px;
font-weight: 600;
letter-spacing: -0.02em;
}
.hero-stat-num.up { color: var(--blue); }
.hero-stat-num.warn { color: var(--orange); }
.hero-stat-num.morale { color: var(--blue); }
.hero-stat-label {
font-size: 12px;
color: var(--charcoal);
text-transform: uppercase;
letter-spacing: 0.06em;
font-weight: 500;
}
@media (max-width: 720px) {
/* Mobile hero photo — slightly portrait for proper height */
.hero-visual {
aspect-ratio: 4 / 5;
margin-top: 40px;
border-radius: 18px;
}
.hero-stats {
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-top: 16px;
}
.hero-stat {
padding: 16px 18px;
}
.hero-stat-num { font-size: 24px; }
.hero-stat-label { font-size: 10px; }
}
@media (max-width: 460px) {
.hero-visual {
aspect-ratio: 3 / 4;
}
.hero-stat { padding: 14px 12px; }
.hero-stat-num { font-size: 22px; }
}
/* ───────── SECTION SHELL ───────── */
.section { padding: 140px 28px; }
.section-inner {
max-width: 1200px;
margin: 0 auto;
}
.section-eyebrow {
color: var(--blue);
font-size: 14px;
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
margin-bottom: 16px;
}
.section-title {
font-size: clamp(34px, 5vw, 56px);
font-weight: 600;
letter-spacing: -0.025em;
line-height: 1.05;
margin-bottom: 20px;
max-width: 820px;
}
.section-lede {
font-size: clamp(17px, 1.6vw, 20px);
color: var(--charcoal);
max-width: 680px;
line-height: 1.5;
}
/* ───────── SERVICES ───────── */
.services-head {
text-align: center;
margin-bottom: 64px;
}
.services-head .section-title { margin-left: auto; margin-right: auto; }
.services-head .section-lede { margin-left: auto; margin-right: auto; }
.services-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
@media (max-width: 980px) {
.services-grid { grid-template-columns: 1fr; }
}
.service-card {
border-radius: 24px;
overflow: hidden;
position: relative;
transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
background: var(--grey);
display: flex;
flex-direction: column;
}
.service-card:hover { transform: translateY(-6px); }
.service-card:hover .service-img img { transform: scale(1.05); }
.service-img {
aspect-ratio: 16/10;
overflow: hidden;
background: var(--charcoal);
position: relative;
}
.service-img img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.service-img::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(0,0,0,0) 50%, rgba(0,0,0,0.25) 100%);
pointer-events: none;
}
.service-tag {
position: absolute;
top: 18px;
left: 18px;
background: rgba(255,255,255,0.92);
backdrop-filter: blur(6px);
color: var(--blue);
padding: 6px 12px;
border-radius: 999px;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
z-index: 2;
}
.service-tag.orange { color: var(--orange); }
.service-tag.charcoal { color: var(--charcoal); }
.service-body {
padding: 32px;
flex: 1;
display: flex;
flex-direction: column;
gap: 12px;
}
.service-title {
font-size: 26px;
font-weight: 600;
letter-spacing: -0.02em;
line-height: 1.15;
margin-bottom: 4px;
}
.service-desc {
font-size: 15px;
line-height: 1.55;
color: var(--charcoal);
}
.service-link {
color: var(--blue);
text-decoration: none;
font-size: 14px;
font-weight: 600;
margin-top: 18px;
display: inline-flex;
align-items: center;
gap: 6px;
transition: gap 0.2s ease, color 0.2s ease;
align-self: flex-start;
}
.service-link.orange { color: var(--orange); }
.service-link svg {
width: 16px;
height: 16px;
transition: transform 0.2s ease;
}
.service-card:hover .service-link {
gap: 10px;
}
.service-card:hover .service-link svg {
transform: translateX(2px);
}
/* ───────── PROCESS / HOW IT WORKS — horizontal flow with arrows ───────── */
.process { background: var(--grey-soft); }
.process .section-title { color: var(--ink); }
.flow {
margin-top: 70px;
display: grid;
grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
align-items: stretch;
gap: 0;
max-width: 1300px;
margin-left: auto;
margin-right: auto;
}
.flow-step {
background: var(--white);
border: 1px solid rgba(0,0,0,0.07);
border-radius: 18px;
padding: 32px 28px;
display: flex;
flex-direction: column;
box-shadow: 0 4px 16px -8px rgba(0,0,0,0.06);
transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
position: relative;
border-top: 3px solid var(--accent, var(--blue));
}
/* Per-step accent: alternating blue/orange.
Note: cards sit at positions 1,3,5,7 in the .flow container — arrows are at 2,4,6.
Using nth-child to target the actual position so the alternation works. */
.flow-step:nth-child(1) { --accent: var(--blue); --accent-shadow: rgba(0, 112, 199, 0.22); }
.flow-step:nth-child(3) { --accent: var(--orange); --accent-shadow: rgba(236, 139, 51, 0.22); }
.flow-step:nth-child(5) { --accent: var(--blue); --accent-shadow: rgba(0, 112, 199, 0.22); }
.flow-step:nth-child(7) { --accent: var(--orange); --accent-shadow: rgba(236, 139, 51, 0.22); }
.flow-step:hover {
transform: translateY(-6px);
box-shadow: 0 22px 50px -22px var(--accent-shadow);
border-color: var(--accent);
border-top-color: var(--accent);
}
.flow-step-label {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.14em;
color: var(--accent);
margin-bottom: 8px;
text-transform: uppercase;
}
.flow-step-title {
font-size: 24px;
font-weight: 600;
margin-bottom: 14px;
letter-spacing: -0.02em;
color: var(--ink);
line-height: 1.15;
}
.flow-step-desc {
color: var(--charcoal);
font-size: 14.5px;
line-height: 1.6;
margin-bottom: 16px;
flex: 1;
}
.flow-step-outcome {
color: var(--accent);
font-size: 13.5px;
line-height: 1.5;
font-style: italic;
padding-top: 14px;
border-top: 1px solid rgba(0,0,0,0.07);
font-weight: 500;
}
/* Arrow connectors between cards */
.flow-arrow {
display: flex;
align-items: center;
justify-content: center;
width: 44px;
color: rgba(0, 0, 0, 0.18);
transition: color 0.3s ease, transform 0.3s ease;
}
.flow-arrow svg {
width: 28px;
height: 28px;
}
/* Subtle colour transition: blue → blue/orange mix → orange */
.flow-arrow:nth-child(2) { color: var(--blue); opacity: 0.5; }
.flow-arrow:nth-child(4) { color: #b08a6b; opacity: 0.6; }
.flow-arrow:nth-child(6) { color: var(--orange); opacity: 0.6; }
/* Tablet: 2x2 grid, arrows redirect appropriately */
@media (max-width: 1100px) {
.flow {
grid-template-columns: 1fr 1fr;
grid-template-rows: auto auto auto;
gap: 20px;
}
.flow-step:nth-child(1) { grid-column: 1; grid-row: 1; }
.flow-step:nth-child(3) { grid-column: 2; grid-row: 1; }
.flow-step:nth-child(5) { grid-column: 1; grid-row: 3; }
.flow-step:nth-child(7) { grid-column: 2; grid-row: 3; }
/* Hide horizontal arrows in tablet, simplify */
.flow-arrow { display: none; }
}
/* Mobile: single column stacked, arrows below each card */
@media (max-width: 600px) {
.flow {
grid-template-columns: 1fr;
grid-template-rows: auto;
gap: 12px;
}
.flow-step:nth-child(1),
.flow-step:nth-child(3),
.flow-step:nth-child(5),
.flow-step:nth-child(7) {
grid-column: 1;
grid-row: auto;
}
.flow-arrow {
display: flex;
width: 100%;
transform: rotate(90deg);
margin: -4px 0;
}
.flow-arrow svg { width: 24px; height: 24px; }
}
/* ───────── PARTNERSHIP RAIL beneath the 4-step flow ───────── */
/* The four steps are cycles within an ongoing partnership. The rail spans
the full row beneath the cards as a continuous gradient line — no panel
box. The line itself carries the meaning. A faint top-border above
the rail visually delineates it from the cards above. */
.flow-wrap {
position: relative;
}
.partnership-rail {
margin-top: 60px;
padding-top: 36px;
/* Soft top border above the rail — separates rail from cards */
border-top: 1px dashed rgba(0, 0, 0, 0.1);
position: relative;
}
/* The continuous "rail" line — full-width gradient, blue → orange */
.partnership-rail-line {
position: relative;
height: 4px;
background: linear-gradient(90deg, var(--blue) 0%, var(--orange) 100%);
border-radius: 4px;
margin: 0 14px;
}
/* Markers at each end of the line — circular, white-bordered */
.partnership-rail-marker {
position: absolute;
top: -7px;
width: 18px;
height: 18px;
border-radius: 50%;
background: var(--white);
box-shadow: 0 4px 12px -2px rgba(0,0,0,0.15);
}
.partnership-rail-marker-start {
left: -9px;
border: 3px solid var(--blue);
}
.partnership-rail-marker-end {
right: -9px;
border: 3px solid var(--orange);
}
.partnership-rail-content {
display: grid;
grid-template-columns: auto 1fr;
gap: 24px;
align-items: center;
margin-top: 24px;
padding: 0 14px;
}
@media (max-width: 720px) {
.partnership-rail-content {
grid-template-columns: 1fr;
gap: 14px;
}
}
.partnership-rail-label {
display: inline-block;
background: linear-gradient(135deg, var(--blue), var(--orange));
color: var(--white);
padding: 8px 18px;
border-radius: 999px;
font-size: 12px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
white-space: nowrap;
align-self: center;
box-shadow: 0 6px 16px -4px rgba(0, 112, 199, 0.25);
}
.partnership-rail-content p {
font-size: 15px;
line-height: 1.6;
color: var(--charcoal);
margin: 0;
}
.partnership-rail-content p em {
font-style: italic;
color: var(--ink);
font-weight: 500;
padding-right: 0.06em;
}
/* ───────── OUTCOMES — APPLE-STYLE HORIZONTAL CAROUSEL ───────── */
/* Replaces the old 5-column grid with a horizontally-scrollable rail.
Cards snap into place; navigation via touch-swipe or prev/next buttons.
Mirrors the Apple iPhone "Why Apple" carousel pattern. */
.outcomes-head {
display: grid;
grid-template-columns: 1fr auto;
align-items: end;
margin-bottom: 40px;
gap: 24px;
text-align: left;
}
.outcomes-head .section-title {
margin-left: 0;
margin-right: 0;
max-width: 720px;
}
.outcomes-head .section-lede {
margin-left: 0;
margin-right: 0;
margin-top: 12px;
max-width: 600px;
}
.outcomes-head-text { /* left column wrapper */ }
/* Right column: small contextual link, like "Shop iPhone >" on Apple */
.outcomes-head-link {
color: var(--blue);
font-size: 15px;
font-weight: 500;
text-decoration: none;
display: inline-flex;
align-items: center;
gap: 4px;
white-space: nowrap;
padding-bottom: 4px;
transition: gap 0.25s ease;
}
.outcomes-head-link:hover {
gap: 8px;
}
.outcomes-head-link svg {
width: 16px;
height: 16px;
}
/* The carousel rail — horizontally scrollable, snaps cards into place */
.levers-carousel-wrap {
position: relative;
/* Pull the rail to the section's full inner width so cards can peek
at the right edge without padding cutting them off. */
margin: 0 -28px;
padding: 0 28px;
}
.levers-rail {
display: grid;
grid-auto-flow: column;
grid-auto-columns: calc((100% - 36px) / 3); /* 3 visible + small peek */
gap: 18px;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-padding-left: 0;
/* Hide scrollbar but keep scrolling functional */
scrollbar-width: none;
-ms-overflow-style: none;
padding-bottom: 12px; /* space for hover lift shadows */
}
.levers-rail::-webkit-scrollbar { display: none; }
@media (max-width: 1100px) {
.levers-rail { grid-auto-columns: calc((100% - 18px) / 2 - 9px); } /* 2 visible */
}
@media (max-width: 720px) {
.levers-rail { grid-auto-columns: 78%; } /* 1 + clear peek */
.outcomes-head { grid-template-columns: 1fr; gap: 12px; }
}
@media (max-width: 460px) {
.levers-rail { grid-auto-columns: 84%; }
}
.lever {
background: var(--white);
border-radius: 22px;
padding: 32px 30px 28px;
position: relative;
overflow: hidden;
transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.3s ease;
display: flex;
flex-direction: column;
scroll-snap-align: start;
box-shadow: 0 4px 18px -8px rgba(0, 0, 0, 0.06);
min-height: 420px;
}
.lever:hover {
transform: translateY(-4px);
box-shadow: 0 22px 50px -25px rgba(0, 0, 0, 0.18);
}
.lever:nth-child(1) { --accent: var(--blue); }
.lever:nth-child(2) { --accent: var(--orange); }
.lever:nth-child(3) { --accent: var(--blue); }
.lever:nth-child(4) { --accent: var(--orange); }
.lever:nth-child(5) { --accent: var(--blue); }
.lever-eyebrow {
font-size: 13px;
font-weight: 500;
color: var(--charcoal);
margin-bottom: 14px;
letter-spacing: -0.005em;
}
.lever-title {
font-size: 26px;
font-weight: 600;
letter-spacing: -0.02em;
color: var(--ink);
margin-bottom: 14px;
line-height: 1.18;
}
.lever-desc {
color: var(--charcoal);
font-size: 14.5px;
line-height: 1.55;
margin-bottom: 20px;
}
/* Visual area at the bottom of the card — illustration + chevron */
.lever-visual {
margin-top: auto;
height: 140px;
display: flex;
align-items: center;
justify-content: center;
color: var(--accent);
position: relative;
}
.lever-visual svg {
max-width: 100%;
max-height: 100%;
}
/* Prev/Next navigation — bottom-right of the section, matches Apple */
.levers-nav {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 24px;
}
.levers-nav-btn {
width: 44px;
height: 44px;
border-radius: 50%;
border: none;
background: rgba(0, 0, 0, 0.06);
color: var(--ink);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s ease, color 0.2s ease;
}
.levers-nav-btn:hover:not(:disabled) {
background: rgba(0, 0, 0, 0.12);
}
.levers-nav-btn:disabled {
opacity: 0.35;
cursor: not-allowed;
}
.levers-nav-btn svg { width: 16px; height: 16px; }
/* Pagination dots — small visual indicator of current scroll position */
.levers-dots {
display: flex;
justify-content: center;
gap: 8px;
margin-top: 18px;
}
.levers-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: rgba(0, 0, 0, 0.18);
transition: background 0.2s ease, width 0.2s ease;
}
.levers-dot.is-active {
background: var(--ink);
width: 18px;
border-radius: 999px;
}
@media (max-width: 720px) {
.levers-dots { display: flex; }
}
@media (min-width: 721px) {
.levers-dots { display: none; } /* prev/next buttons handle this on desktop */
}
/* ───────── WHY US ───────── */
.whyus { background: var(--grey); }
.whyus-layout {
display: grid;
grid-template-columns: 5fr 7fr;
gap: 60px;
align-items: start;
}
@media (max-width: 880px) {
.whyus-layout { grid-template-columns: 1fr; gap: 32px; }
}
.whyus-list {
list-style: none;
display: flex;
flex-direction: column;
gap: 16px;
}
.whyus-item {
background: white;
border-radius: 16px;
padding: 24px 28px;
display: flex;
gap: 18px;
align-items: flex-start;
}
.whyus-icon {
flex-shrink: 0;
width: 44px;
height: 44px;
border-radius: 12px;
background: rgba(0, 112, 199, 0.1);
color: var(--blue);
display: flex;
align-items: center;
justify-content: center;
}
.whyus-icon svg { width: 22px; height: 22px; }
.whyus-icon.orange {
background: rgba(236, 139, 51, 0.12);
color: var(--orange);
}
.whyus-text h4 {
font-size: 17px;
font-weight: 600;
margin-bottom: 4px;
letter-spacing: -0.01em;
}
.whyus-text p {
font-size: 15px;
color: var(--charcoal);
line-height: 1.5;
}
/* ───────── CTA ───────── */
.cta-wrap {
padding: 80px 28px 110px;
background: var(--white);
}
.cta-card {
max-width: 1200px;
margin: 0 auto;
background: linear-gradient(135deg, #1a2230 0%, #1a1a1a 60%, #2a1f1a 100%);
border-radius: 28px;
padding: 90px 60px;
text-align: center;
position: relative;
overflow: hidden;
color: white;
}
.cta-card::before {
content: '';
position: absolute;
top: -30%;
left: -10%;
width: 60%;
height: 160%;
background: radial-gradient(ellipse, rgba(0,112,199,0.22), transparent 65%);
pointer-events: none;
}
.cta-card::after {
content: '';
position: absolute;
bottom: -30%;
right: -10%;
width: 60%;
height: 160%;
background: radial-gradient(ellipse, rgba(236,139,51,0.18), transparent 65%);
pointer-events: none;
}
.cta-inner {
position: relative;
z-index: 2;
max-width: 760px;
margin: 0 auto;
}
.cta-card h2 {
font-size: clamp(36px, 5vw, 60px);
font-weight: 600;
letter-spacing: -0.03em;
line-height: 1.05;
margin-bottom: 18px;
}
.cta-card h2 em {
font-style: italic;
font-weight: 500;
color: var(--orange);
margin-right: 0.12em;
}
.cta-card p {
font-size: 17px;
color: rgba(255,255,255,0.78);
margin-bottom: 36px;
line-height: 1.55;
}
.cta-flow {
display: flex;
gap: 20px;
justify-content: center;
margin-bottom: 40px;
flex-wrap: wrap;
}
.cta-flow-step {
display: flex;
align-items: center;
gap: 10px;
color: rgba(255,255,255,0.85);
font-size: 14px;
font-weight: 500;
}
.cta-flow-step .num {
width: 26px;
height: 26px;
border-radius: 50%;
background: rgba(255,255,255,0.1);
border: 1px solid rgba(255,255,255,0.2);
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 600;
color: var(--orange);
}
.cta-flow-arrow {
color: rgba(255,255,255,0.3);
font-size: 14px;
}
@media (max-width: 720px) {
.cta-card { padding: 60px 28px; }
.cta-flow-arrow { display: none; }
.cta-flow { flex-direction: column; align-items: center; gap: 12px; }
}
.btn-on-dark {
background: var(--blue);
color: white;
box-shadow: 0 12px 32px -8px rgba(0,112,199,0.5);
}
.btn-on-dark:hover { background: var(--blue-deep); }
.btn-ghost-dark {
background: transparent;
color: white;
border: 1px solid rgba(255,255,255,0.25);
}
.btn-ghost-dark:hover { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.4); }
/* ───────── FOOTER ───────── */
.footer {
background: var(--ink);
color: white;
padding: 60px 28px 28px;
}
.footer-inner {
max-width: 1200px;
margin: 0 auto;
}
.footer-grid {
display: grid;
grid-template-columns: 2fr 1fr 1fr 1fr;
gap: 40px;
margin-bottom: 48px;
}
@media (max-width: 720px) {
.footer-grid { grid-template-columns: 1fr 1fr; }
}
.footer-brand img {
max-height: 56px;
width: auto;
margin-bottom: 18px;
}
.footer-brand p {
font-size: 14px;
color: rgba(255,255,255,0.6);
line-height: 1.55;
max-width: 280px;
}
.footer-col h5 {
font-size: 13px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
margin-bottom: 16px;
color: rgba(255,255,255,0.5);
}
.footer-col ul {
list-style: none;
display: flex;
flex-direction: column;
gap: 10px;
}
.footer-col a {
color: rgba(255,255,255,0.85);
text-decoration: none;
font-size: 14px;
transition: color 0.2s;
}
.footer-col a:hover { color: var(--orange); }
.footer-bottom {
border-top: 1px solid rgba(255,255,255,0.1);
padding-top: 24px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 13px;
color: rgba(255,255,255,0.5);
flex-wrap: wrap;
gap: 12px;
}
/* fade-in on scroll */
@media (prefers-reduced-motion: no-preference) {
.reveal {
opacity: 0;
transform: translateY(20px);
transition: opacity 0.8s ease, transform 0.8s ease;
}
.reveal.in {
opacity: 1;
transform: translateY(0);
}
}
/* Mobile: dial back the bumped section padding so phones don't waste space */
@media (max-width: 720px) {
.section { padding: 80px 22px; }
}
</style>
</head>
<body>
<!-- ───── NAV — Isotipo only, no wordmark ───── -->
<nav class="nav">
<div class="nav-inner">
<a href="#" class="nav-logo" aria-label="Lean 101 home">
<img src="assets/lean101-isotipo.png" alt="Lean 101">
</a>
<ul class="nav-links">
<li class="has-dropdown">
<a href="#services">Services</a>
<ul class="nav-dropdown" role="menu">
<li role="none">
<a href="services/consulting.html" role="menuitem">Process Excellence &amp; Transformation</a>
</li>
<li role="none">
<a href="services/coaching.html" role="menuitem">Coaching &amp; Training</a>
</li>
<li role="none">
<a href="services/digital-solutions.html" role="menuitem">Digital Solutions</a>
</li>
</ul>
</li>
<li><a href="#process">How it works</a></li>
<li><a href="#why">Why Lean 101</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<a href="#contact" class="nav-cta">Book a call</a>
<!-- Hamburger menu button — mobile only -->
<button class="nav-hamburger" type="button" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="3" y1="6" x2="21" y2="6"/>
<line x1="3" y1="12" x2="21" y2="12"/>
<line x1="3" y1="18" x2="21" y2="18"/>
</svg>
</button>
</div>
</nav>
<!-- Mobile drawer + overlay -->
<div class="nav-drawer-overlay" data-drawer-overlay aria-hidden="true"></div>
<aside class="nav-drawer" id="nav-drawer" aria-label="Mobile navigation" aria-hidden="true">
<div class="nav-drawer-head">
<img src="assets/lean101-logotipo.png" alt="Lean 101">
<button class="nav-drawer-close" type="button" aria-label="Close menu">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<line x1="18" y1="6" x2="6" y2="18"/>
<line x1="6" y1="6" x2="18" y2="18"/>
</svg>
</button>
</div>
<nav class="nav-drawer-body">
<ul>
<li><span class="nav-drawer-group-label">Services</span></li>
<li><a class="nav-drawer-subitem" href="services/consulting.html">Process Excellence &amp; Transformation</a></li>
<li><a class="nav-drawer-subitem coaching" href="services/coaching.html">Coaching &amp; Training</a></li>
<li><a class="nav-drawer-subitem" href="services/digital-solutions.html">Digital Solutions</a></li>
<li><a class="nav-drawer-item" href="#process">How it works</a></li>
<li><a class="nav-drawer-item" href="#why">Why Lean 101</a></li>
<li><a class="nav-drawer-item" href="#contact">Contact</a></li>
</ul>
</nav>
<div class="nav-drawer-foot">
<a href="#contact" class="nav-drawer-cta">Book a call</a>
</div>
</aside>
<!-- ───── HERO ───── -->
<header class="hero">
<span class="hero-eyebrow">Smarter Improvement Solutions</span>
<h1>
Continuous improvement,<br>
<em>made simple.</em>
</h1>
<p class="hero-sub">
Practical consulting, coaching and analytics to help businesses eliminate waste,
improve performance, and build a culture that keeps improving — long after we've gone.
</p>
<div class="hero-ctas">
<a href="#contact" class="btn btn-primary">
Book a free intro call <span class="btn-arrow"></span>
</a>
<a href="#process" class="btn btn-secondary">See how it works</a>
</div>
<!-- Hero photo, then stats panel below it (matches live website layout) -->
<div class="hero-visual">
<img src="https://images.unsplash.com/photo-1542744173-8e7e53415bb0?auto=format&fit=crop&w=1600&q=80" alt="Team collaborating on a process improvement workshop">
</div>
<div class="hero-stats">
<div class="hero-stat">
<div class="hero-stat-label">Efficiency</div>
<div class="hero-stat-num up" data-target="35" data-prefix="+" data-suffix="%">+35%</div>
</div>
<div class="hero-stat">
<div class="hero-stat-label">Cost savings</div>
<div class="hero-stat-num warn" data-target="27" data-prefix="" data-suffix="%">27%</div>
</div>
<div class="hero-stat">
<div class="hero-stat-label">Lead time</div>
<div class="hero-stat-num warn" data-target="44" data-prefix="" data-suffix="%">44%</div>
</div>
<div class="hero-stat">
<div class="hero-stat-label">Engagement</div>
<div class="hero-stat-num morale" data-target="41" data-prefix="+" data-suffix="%">+41%</div>
</div>
</div>
</header>
<!-- ───── SERVICES ───── -->
<section class="section" id="services">
<div class="section-inner">
<div class="services-head">
<div class="section-eyebrow">What we do</div>
<h2 class="section-title">Three services. One outcome: improvement that lasts.</h2>
<p class="section-lede">
Frameworks aren't the goal — results are. Every engagement combines
consulting, capability building, and digital solutions — sized to what your team can sustain.
</p>
</div>
<div class="services-grid">
<article class="service-card">
<div class="service-img">
<span class="service-tag">Consulting</span>
<img src="https://images.unsplash.com/photo-1517245386807-bb43f82c33c4?auto=format&fit=crop&w=900&q=80" alt="Consultant mapping out a process on a whiteboard">
</div>
<div class="service-body">
<h3 class="service-title">Process Excellence &amp; Transformation</h3>
<p class="service-desc">
We diagnose where work is breaking down, design optimised processes, and
run the change with you — not just for you.
</p>
<a href="services/consulting.html" class="service-link">
Learn more
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</a>
</div>
</article>
<article class="service-card">
<div class="service-img">
<span class="service-tag orange">Coaching &amp; Training</span>
<img src="https://images.unsplash.com/photo-1543269865-cbf427effbad?auto=format&fit=crop&w=900&q=80" alt="Coach working with a small team in a workshop setting">
</div>
<div class="service-body">
<h3 class="service-title">Building capability and culture</h3>
<p class="service-desc">
Tailored coaching and bespoke training that turns Lean theory into everyday
practice. Your team owns the improvement.
</p>
<a href="services/coaching.html" class="service-link orange">
Learn more
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</a>
</div>
</article>
<article class="service-card">
<div class="service-img">
<span class="service-tag charcoal">Digital Solutions</span>
<img src="https://images.unsplash.com/photo-1551434678-e076c223a692?auto=format&fit=crop&w=900&q=80" alt="Custom software being developed on a laptop">
</div>
<div class="service-body">
<h3 class="service-title">Custom apps, dashboards &amp; automation</h3>
<p class="service-desc">
From Power BI dashboards to custom web apps that replace clunky spreadsheets — we build tailored software that streamlines your operations and makes data work for you.
</p>
<a href="services/digital-solutions.html" class="service-link">
Learn more
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</a>
</div>
</article>
</div>
</div>
</section>
<!-- ───── PROCESS / HOW IT WORKS ───── -->
<section class="section process" id="process">
<div class="section-inner">
<div class="services-head">
<div class="section-eyebrow">How it works</div>
<h2 class="section-title">A clear path from waste to flow.</h2>
<p class="section-lede">
Every engagement runs four cycles — adapted to your scale, industry and team capability. The cycles repeat as the business evolves; what stays constant is the partnership underneath.
</p>
</div>
<div class="flow-wrap">
<div class="flow">
<div class="flow-step">
<div class="flow-step-label">Step 01</div>
<h3 class="flow-step-title">Diagnose</h3>
<p class="flow-step-desc">
Process mapping, audits and a maturity assessment. We walk your operation alongside you, talk to the people doing the work, and quantify where the friction sits.
</p>
<div class="flow-step-outcome">
By the end: a clear map of where time, quality and cost are leaking — and which fix moves the dial first.
</div>
</div>
<div class="flow-arrow" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</div>
<div class="flow-step">
<div class="flow-step-label">Step 02</div>
<h3 class="flow-step-title">Design &amp; pilot</h3>
<p class="flow-step-desc">
We co-design the future state with your team, then run a focused pilot in one area. Real data, real people, real results — before we touch the rest of the business.
</p>
<div class="flow-step-outcome">
By the end: a proven future state, validated with hard data on a focused pilot.
</div>
</div>
<div class="flow-arrow" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</div>
<div class="flow-step">
<div class="flow-step-label">Step 03</div>
<h3 class="flow-step-title">Roll out</h3>
<p class="flow-step-desc">
Once the pilot proves the gains, we scale the approach across other teams, sites or business units — adapted to each context, with the same disciplined method.
</p>
<div class="flow-step-outcome">
By the end: the gains scaled across teams, sites or business units — same method, each context.
</div>
</div>
<div class="flow-arrow" aria-hidden="true">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</div>
<div class="flow-step">
<div class="flow-step-label">Step 04</div>
<h3 class="flow-step-title">Sustain</h3>
<p class="flow-step-desc">
Coaching, dashboards and train-the-trainer programs so the improvement becomes how your team operates — without us in the room.
</p>
<div class="flow-step-outcome">
By the end: the improvement runs without us — your team owns it, the data proves it.
</div>
</div>
</div>
<!-- Partnership rail: continuous line beneath the 4 steps. The four cycles happen *during* the partnership. -->
<div class="partnership-rail" aria-label="Continuous partnership underlying the four-step cycle">
<div class="partnership-rail-line">
<span class="partnership-rail-marker partnership-rail-marker-start" aria-hidden="true"></span>
<span class="partnership-rail-marker partnership-rail-marker-end" aria-hidden="true"></span>
</div>
<div class="partnership-rail-content">
<span class="partnership-rail-label">The Partnership</span>
<p>The four-step cycle happens <em>inside</em> an ongoing partnership. We stay alongside you across cycles — same team, same methods, learning your business as it evolves. Continuous improvement, made continuous.</p>
</div>
</div>
</div>
</div>
</section>
<!-- ───── OUTCOMES / FIVE LEVERS — Apple-style carousel ───── -->
<section class="section outcomes">
<div class="section-inner">
<div class="outcomes-head">
<div class="outcomes-head-text">
<div class="section-eyebrow">What good looks like</div>
<h2 class="section-title">The five things continuous improvement moves.</h2>
<p class="section-lede">
Industry benchmarks for organisations that commit to a structured improvement program. Whatever your industry, these are the levers that shift.
</p>
</div>
<a href="#contact" class="outcomes-head-link">
Book a call
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
</a>
</div>
<div class="levers-carousel-wrap">
<div class="levers-rail" data-levers-rail>
<!-- 01 — Cycle time -->
<article class="lever">
<div class="lever-eyebrow">Cycle time</div>
<h3 class="lever-title">Get work through faster.</h3>
<p class="lever-desc">Fewer hand-offs, less waiting, shorter lead times — without adding headcount or overtime.</p>
<div class="lever-visual" aria-hidden="true">
<!-- Stylised "fast clock" illustration: clock face with motion arcs -->
<svg viewBox="0 0 200 140" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="lev1grad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#0070c7"/>
<stop offset="1" stop-color="#005aa3"/>
</linearGradient>
</defs>
<!-- Motion arcs -->
<path d="M 30 70 Q 30 35, 75 35" stroke="#0070c7" stroke-width="2" stroke-linecap="round" fill="none" opacity="0.25"/>
<path d="M 22 70 Q 22 28, 75 28" stroke="#0070c7" stroke-width="2" stroke-linecap="round" fill="none" opacity="0.4"/>
<!-- Clock face -->
<circle cx="120" cy="70" r="48" fill="url(#lev1grad)"/>
<circle cx="120" cy="70" r="48" fill="none" stroke="#0070c7" stroke-width="1" opacity="0.2"/>
<!-- Hour and minute hands pointing toward 2 o'clock to suggest motion -->
<line x1="120" y1="70" x2="120" y2="40" stroke="white" stroke-width="3" stroke-linecap="round"/>
<line x1="120" y1="70" x2="142" y2="78" stroke="white" stroke-width="3" stroke-linecap="round"/>
<circle cx="120" cy="70" r="4" fill="white"/>
</svg>
</div>
</article>
<!-- 02 — Quality -->
<article class="lever">
<div class="lever-eyebrow">Quality</div>
<h3 class="lever-title">Fewer errors. Less rework.</h3>
<p class="lever-desc">Defects fixed at the source, not at the end. Customers stay, costs drop, your team stops firefighting.</p>
<div class="lever-visual" aria-hidden="true">
<!-- Shield with checkmark - quality / protection -->
<svg viewBox="0 0 200 140" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="lev2grad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#ec8b33"/>
<stop offset="1" stop-color="#d97520"/>
</linearGradient>
</defs>
<!-- Shield -->
<path d="M 100 18 L 60 35 L 60 78 Q 60 110, 100 122 Q 140 110, 140 78 L 140 35 Z" fill="url(#lev2grad)"/>
<!-- Checkmark -->
<polyline points="78,72 94,88 124,58" stroke="white" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
</svg>
</div>
</article>
<!-- 03 — Cost -->
<article class="lever">
<div class="lever-eyebrow">Cost</div>
<h3 class="lever-title">Eliminate waste — savings drop straight through.</h3>
<p class="lever-desc">Cut from how the work is done, not from headcount. Margin returns to the line, not to the spreadsheet.</p>
<div class="lever-visual" aria-hidden="true">
<!-- Downward bar chart: bars getting shorter -->
<svg viewBox="0 0 200 140" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="lev3grad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0070c7"/>
<stop offset="1" stop-color="#005aa3"/>
</linearGradient>
</defs>
<!-- Bars descending left to right -->
<rect x="40" y="30" width="22" height="92" rx="4" fill="url(#lev3grad)"/>
<rect x="70" y="50" width="22" height="72" rx="4" fill="url(#lev3grad)" opacity="0.85"/>
<rect x="100" y="68" width="22" height="54" rx="4" fill="url(#lev3grad)" opacity="0.7"/>
<rect x="130" y="84" width="22" height="38" rx="4" fill="url(#lev3grad)" opacity="0.55"/>
<!-- Down arrow indicator -->
<path d="M 168 35 L 168 75 M 158 65 L 168 78 L 178 65" stroke="#ec8b33" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none"/>
</svg>
</div>
</article>
<!-- 04 — Morale -->
<article class="lever">
<div class="lever-eyebrow">Morale</div>
<h3 class="lever-title">Engagement and retention follow.</h3>
<p class="lever-desc">When people fix the things that frustrate them, they stay, they refer, they bring their best work — every day.</p>
<div class="lever-visual" aria-hidden="true">
<!-- Three connected people / nodes - team -->
<svg viewBox="0 0 200 140" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="lev4grad" x1="0" y1="0" x2="1" y2="1">
<stop offset="0" stop-color="#ec8b33"/>
<stop offset="1" stop-color="#d97520"/>
</linearGradient>
</defs>
<!-- Connecting lines first (behind nodes) -->
<line x1="60" y1="80" x2="100" y2="50" stroke="#ec8b33" stroke-width="2" opacity="0.4" stroke-linecap="round"/>
<line x1="100" y1="50" x2="140" y2="80" stroke="#ec8b33" stroke-width="2" opacity="0.4" stroke-linecap="round"/>
<line x1="60" y1="80" x2="140" y2="80" stroke="#ec8b33" stroke-width="2" opacity="0.4" stroke-linecap="round"/>
<!-- Three person nodes (head + body) -->
<g>
<circle cx="100" cy="42" r="11" fill="url(#lev4grad)"/>
<path d="M 87 70 Q 87 56, 100 56 Q 113 56, 113 70 Z" fill="url(#lev4grad)"/>
</g>
<g opacity="0.85">
<circle cx="60" cy="72" r="9" fill="url(#lev4grad)"/>
<path d="M 49 96 Q 49 84, 60 84 Q 71 84, 71 96 Z" fill="url(#lev4grad)"/>
</g>
<g opacity="0.85">
<circle cx="140" cy="72" r="9" fill="url(#lev4grad)"/>
<path d="M 129 96 Q 129 84, 140 84 Q 151 84, 151 96 Z" fill="url(#lev4grad)"/>
</g>
</svg>
</div>
</article>
<!-- 05 — Safety -->
<article class="lever">
<div class="lever-eyebrow">Safety</div>
<h3 class="lever-title">Standard work reduces incidents.</h3>
<p class="lever-desc">Visual controls, predictable processes, fewer unknowns. Protecting your people and your uptime — both at once.</p>
<div class="lever-visual" aria-hidden="true">
<!-- Hexagon (echoing isotipo) with safety cross / check pattern -->
<svg viewBox="0 0 200 140" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="lev5grad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#0070c7"/>
<stop offset="1" stop-color="#005aa3"/>
</linearGradient>
</defs>
<!-- Outer hexagon — echoes the isotipo motif -->
<polygon points="100,20 150,48 150,92 100,120 50,92 50,48" fill="url(#lev5grad)"/>
<!-- Inner concentric hexagon for depth -->
<polygon points="100,38 134,57 134,83 100,102 66,83 66,57" fill="none" stroke="white" stroke-width="2" opacity="0.3"/>
<!-- Plus / cross symbol — safety/protection -->
<rect x="93" y="56" width="14" height="28" rx="2" fill="white"/>
<rect x="86" y="63" width="28" height="14" rx="2" fill="white"/>
</svg>
</div>
</article>
</div>
<!-- Pagination dots (mobile only) -->
<div class="levers-dots" data-levers-dots aria-hidden="true">
<span class="levers-dot is-active"></span>
<span class="levers-dot"></span>
<span class="levers-dot"></span>
<span class="levers-dot"></span>
<span class="levers-dot"></span>
</div>
<!-- Prev/Next navigation -->
<div class="levers-nav">
<button class="levers-nav-btn" type="button" data-levers-prev aria-label="Previous outcome" disabled>
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m15 18-6-6 6-6"/></svg>
</button>
<button class="levers-nav-btn" type="button" data-levers-next aria-label="Next outcome">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</button>
</div>
</div>
</div>
</section>
<!-- ───── WHY LEAN 101 — reframed around partnership ───── -->
<section class="section whyus" id="why">
<div class="section-inner">
<div class="whyus-layout">
<div>
<div class="section-eyebrow">Why Lean 101</div>
<h2 class="section-title">One framework. Customised to your business.</h2>
<p class="section-lede">
Lean&nbsp;101 is a one-on-one partnership. We bring globally recognised
frameworks — Lean, Six&nbsp;Sigma, continuous improvement best practice —
and adapt them to how <em>your</em> business actually runs. Every company,
every industry is different, so we work alongside you to solve the
problems that matter to you — not deliver a generic playbook.
</p>
</div>
<ul class="whyus-list">
<li class="whyus-item">
<div class="whyus-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/></svg>
</div>
<div class="whyus-text">
<h4>Globally recognised frameworks, practically applied</h4>
<p>Lean, Six Sigma, and continuous improvement best practice — adapted to how your business actually runs, not lifted from a generic playbook.</p>
</div>
</li>
<li class="whyus-item">
<div class="whyus-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.4 2.4 0 0 1 0-3.4l2.6-2.6a2.4 2.4 0 0 1 3.4 0Z"/><path d="m14.5 12.5 2-2"/><path d="m11.5 9.5 2-2"/><path d="m8.5 6.5 2-2"/><path d="m17.5 15.5 2-2"/></svg>
</div>
<div class="whyus-text">
<h4>Customised to each business, not off the shelf</h4>
<p>Every business is different. Focused coaching, a single process redesign, or full transformation — we shape the engagement around your priorities, capacity, and budget.</p>
</div>
</li>
<li class="whyus-item">
<div class="whyus-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 10v6M2 10l10-5 10 5-10 5z"/><path d="M6 12v5c3 3 9 3 12 0v-5"/></svg>
</div>
<div class="whyus-text">
<h4>We build capability, not dependency</h4>
<p>Our success metric is the day you no longer need us. Train-the-trainer, embedded dashboards, and clear playbooks make the improvement stick.</p>
</div>
</li>
<li class="whyus-item">
<div class="whyus-icon">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" x2="12" y1="20" y2="10"/><line x1="18" x2="18" y1="20" y2="4"/><line x1="6" x2="6" y1="20" y2="16"/></svg>
</div>
<div class="whyus-text">
<h4>Data-led from day one</h4>
<p>Power BI dashboards and automated reporting come standard. You see what's working, what isn't, and what to do next — in real time.</p>
</div>
</li>
</ul>
</div>
</div>
</section>
<!-- ───── CTA ───── -->
<section class="cta-wrap" id="contact">
<div class="cta-card">
<div class="cta-inner">
<h2>Let's find <em>your</em> first improvement.</h2>
<p>Start with a free 30-minute intro call. If it's a fit, we'll schedule a 1-hour site visit to walk your operation together — and from there we'll scope a tailored partnership.</p>
<div class="cta-flow">
<div class="cta-flow-step"><span class="num">1</span> 30-min intro call</div>
<span class="cta-flow-arrow"></span>
<div class="cta-flow-step"><span class="num">2</span> 1-hour site visit</div>
<span class="cta-flow-arrow"></span>
<div class="cta-flow-step"><span class="num">3</span> Tailored partnership</div>
</div>
<div class="hero-ctas">
<a href="#" class="btn btn-on-dark">
Book a free intro call <span class="btn-arrow"></span>
</a>
<a href="mailto:hello@lean-101.com" class="btn btn-ghost-dark">hello@lean-101.com</a>
</div>
</div>
</div>
</section>
<!-- ───── FOOTER — orange Logotipo (no tagline), tagline removed ───── -->
<footer class="footer">
<div class="footer-inner">
<div class="footer-grid">
<div class="footer-brand">
<img src="assets/lean101-logotipo.png" alt="Lean 101">
<p>For businesses that want change to last.</p>
</div>
<div class="footer-col">
<h5>Services</h5>
<ul>
<li><a href="services/consulting.html">Consulting</a></li>
<li><a href="services/coaching.html">Coaching &amp; Training</a></li>
<li><a href="services/digital-solutions.html">Digital Solutions</a></li>
</ul>
</div>
<div class="footer-col">
<h5>Company</h5>
<ul>
<li><a href="#why">About</a></li>
<li><a href="#process">Approach</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
<div class="footer-col">
<h5>Connect</h5>
<ul>
<li><a href="#">LinkedIn</a></li>
<li><a href="mailto:hello@lean-101.com">Email</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<span>© 2026 Lean 101. All rights reserved.</span>
<span>Based in Melbourne, working worldwide.</span>
</div>
</div>
</footer>
<script>
// ─── Reveal-on-scroll for sections ───
const observer = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add('in');
observer.unobserve(e.target);
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.section, .hero-visual, .cta-wrap').forEach(el => {
el.classList.add('reveal');
observer.observe(el);
});
// ─── Number counter animation for hero stats ───
// Counts up from 0 to the target value once the stats panel scrolls into view.
// Uses ease-out so it slows toward the end, ~1.5s total.
// Respects prefers-reduced-motion: skips animation, shows final value immediately.
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
function animateCounter(el) {
const target = parseFloat(el.dataset.target);
const prefix = el.dataset.prefix || '';
const suffix = el.dataset.suffix || '';
if (isNaN(target)) return;
if (prefersReducedMotion) {
el.textContent = `${prefix}${target}${suffix}`;
return;
}
const duration = 1500; // ms
const start = performance.now();
function step(now) {
const elapsed = now - start;
const t = Math.min(elapsed / duration, 1);
// Ease-out cubic: fast start, slow finish
const eased = 1 - Math.pow(1 - t, 3);
const current = Math.round(target * eased);
el.textContent = `${prefix}${current}${suffix}`;
if (t < 1) {
requestAnimationFrame(step);
} else {
// Snap to exact final value
el.textContent = `${prefix}${target}${suffix}`;
}
}
// Start at 0
el.textContent = `${prefix}0${suffix}`;
requestAnimationFrame(step);
}
// Watch for the stats panel entering viewport, then animate all stats once.
const statsPanel = document.querySelector('.hero-stats');
if (statsPanel) {
const statsObserver = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const stats = entry.target.querySelectorAll('.hero-stat-num[data-target]');
stats.forEach(animateCounter);
statsObserver.unobserve(entry.target);
}
});
}, { threshold: 0.4 });
statsObserver.observe(statsPanel);
}
// ─── Mobile drawer (hamburger menu) ───
const drawer = document.querySelector('.nav-drawer');
const overlay = document.querySelector('[data-drawer-overlay]');
const hamburger = document.querySelector('.nav-hamburger');
const drawerClose = document.querySelector('.nav-drawer-close');
function openDrawer() {
if (!drawer) return;
drawer.classList.add('is-open');
drawer.setAttribute('aria-hidden', 'false');
overlay.classList.add('is-open');
overlay.setAttribute('aria-hidden', 'false');
hamburger.setAttribute('aria-expanded', 'true');
document.body.classList.add('nav-drawer-locked');
}
function closeDrawer() {
if (!drawer) return;
drawer.classList.remove('is-open');
drawer.setAttribute('aria-hidden', 'true');
overlay.classList.remove('is-open');
overlay.setAttribute('aria-hidden', 'true');
hamburger.setAttribute('aria-expanded', 'false');
document.body.classList.remove('nav-drawer-locked');
}
if (hamburger) hamburger.addEventListener('click', openDrawer);
if (drawerClose) drawerClose.addEventListener('click', closeDrawer);
if (overlay) overlay.addEventListener('click', closeDrawer);
// ESC key closes drawer
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && drawer && drawer.classList.contains('is-open')) {
closeDrawer();
}
});
// Tapping any link inside the drawer closes it (so anchors work cleanly)
document.querySelectorAll('.nav-drawer a').forEach(link => {
link.addEventListener('click', closeDrawer);
});
// ─── Outcomes carousel: prev/next nav, dots, disable at edges ───
const rail = document.querySelector('[data-levers-rail]');
const prevBtn = document.querySelector('[data-levers-prev]');
const nextBtn = document.querySelector('[data-levers-next]');
const dotsContainer = document.querySelector('[data-levers-dots]');
const dots = dotsContainer ? dotsContainer.querySelectorAll('.levers-dot') : [];
if (rail && prevBtn && nextBtn) {
// Get the width of one card + gap, used as scroll step
function cardStep() {
const firstCard = rail.querySelector('.lever');
if (!firstCard) return 320;
const style = getComputedStyle(rail);
const gap = parseFloat(style.columnGap || style.gap || 18);
return firstCard.getBoundingClientRect().width + gap;
}
function updateState() {
// Disable prev when at the start
const atStart = rail.scrollLeft <= 4;
// Disable next when at (or very near) the end
const atEnd = rail.scrollLeft + rail.clientWidth >= rail.scrollWidth - 4;
prevBtn.disabled = atStart;
nextBtn.disabled = atEnd;
// Update dots — find the card index closest to current scroll position
if (dots.length > 0) {
const step = cardStep();
const idx = Math.round(rail.scrollLeft / step);
dots.forEach((dot, i) => {
dot.classList.toggle('is-active', i === Math.min(idx, dots.length - 1));
});
}
}
prevBtn.addEventListener('click', () => {
rail.scrollBy({ left: -cardStep(), behavior: 'smooth' });
});
nextBtn.addEventListener('click', () => {
rail.scrollBy({ left: cardStep(), behavior: 'smooth' });
});
// Throttle scroll handler with requestAnimationFrame so it stays smooth
let rafPending = false;
rail.addEventListener('scroll', () => {
if (!rafPending) {
rafPending = true;
requestAnimationFrame(() => {
updateState();
rafPending = false;
});
}
});
// Update on resize too — card width depends on viewport
window.addEventListener('resize', updateState);
// Initial state
updateState();
}
</script>
</body>
</html>