Skip to content

Instantly share code, notes, and snippets.

@dturner
Last active May 8, 2026 20:07
Show Gist options
  • Select an option

  • Save dturner/4833a8a5e770cd42ed036fa3d9962186 to your computer and use it in GitHub Desktop.

Select an option

Save dturner/4833a8a5e770cd42ed036fa3d9962186 to your computer and use it in GitHub Desktop.
Careers for Teens — presentation
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>What kind of life do you want?</title>
<style>
:root {
--bg: #0e0e10;
--bg-2: #18181b;
--ink: #f5efe5;
--ink-soft: #b8b3a8;
--ink-faint: #6b665d;
--amber: #f5a623;
--amber-soft: #f5c977;
--green: #8db580;
--rose: #e07a7a;
--rule: #2a2a2e;
--display: ui-serif, "Iowan Old Style", "Charter", Georgia, serif;
--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; background: var(--bg); color: var(--ink); font-family: var(--sans); -webkit-font-smoothing: antialiased; overflow: hidden; }
body { font-size: clamp(16px, 1.4vw, 22px); line-height: 1.5; }
/* progress + chrome */
.progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; background: transparent; z-index: 50; }
.progress > div { height: 100%; background: var(--amber); transition: width 400ms ease; }
.counter { position: fixed; bottom: 24px; right: 32px; color: var(--ink-faint); font-variant-numeric: tabular-nums; font-size: 14px; letter-spacing: 0.06em; z-index: 50; }
.hint { position: fixed; bottom: 24px; left: 32px; color: var(--ink-faint); font-size: 13px; letter-spacing: 0.04em; z-index: 50; }
.hint kbd { display: inline-block; padding: 2px 7px; border: 1px solid var(--rule); border-radius: 4px; background: var(--bg-2); color: var(--ink-soft); font-family: var(--sans); font-size: 11px; margin: 0 2px; }
/* slide system */
.deck { position: relative; width: 100vw; height: 100vh; }
.slide { position: absolute; inset: 0; padding: 6vh 8vw; display: none; flex-direction: column; justify-content: center; opacity: 0; transition: opacity 350ms ease; }
.slide.active { display: flex; opacity: 1; }
.slide.dim { opacity: 0; }
/* typography */
h1 { font-family: var(--display); font-weight: 500; font-size: clamp(40px, 6vw, 96px); line-height: 1.02; letter-spacing: -0.02em; }
h2 { font-family: var(--display); font-weight: 500; font-size: clamp(32px, 4.4vw, 68px); line-height: 1.05; letter-spacing: -0.015em; margin-bottom: 0.6em; }
h3 { font-size: clamp(20px, 1.8vw, 28px); font-weight: 600; letter-spacing: 0.02em; text-transform: uppercase; color: var(--amber); margin-bottom: 0.8em; }
p, li { font-size: clamp(18px, 1.5vw, 26px); color: var(--ink-soft); max-width: 60ch; }
p + p { margin-top: 0.7em; }
.lede { font-size: clamp(22px, 2vw, 32px); color: var(--ink); max-width: 28ch; line-height: 1.3; }
.sub { color: var(--ink-faint); margin-top: 1.2em; font-size: clamp(14px, 1.1vw, 18px); }
em.amber { color: var(--amber); font-style: normal; }
em.green { color: var(--green); font-style: normal; }
em.rose { color: var(--rose); font-style: normal; }
strong { color: var(--ink); font-weight: 600; }
.eyebrow { color: var(--amber); font-size: 14px; letter-spacing: 0.18em; text-transform: uppercase; margin-bottom: 1.2em; font-weight: 600; }
.footnote { position: absolute; bottom: 5vh; right: 8vw; color: var(--ink-faint); font-size: 12px; max-width: 36ch; text-align: right; }
/* layouts */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 6vw; align-items: center; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.4vw; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6vw; }
.stack > * + * { margin-top: 0.9em; }
.pill { display: inline-block; padding: 6px 14px; border: 1px solid var(--rule); border-radius: 999px; color: var(--ink-soft); font-size: 13px; letter-spacing: 0.05em; }
/* slide 1 — title */
.title-slide { justify-content: center; align-items: flex-start; }
.title-slide h1 { max-width: 16ch; }
.title-slide .sig { margin-top: 3vh; color: var(--ink-faint); font-style: italic; font-family: var(--display); }
/* slide 2 — three lives */
.lives { display: grid; grid-template-columns: repeat(3, 1fr); gap: 3vw; margin-top: 4vh; }
.life { padding: 2vh 1.6vw; border: 1px solid var(--rule); border-radius: 12px; background: var(--bg-2); }
.life svg { width: 100%; height: 12vh; margin-bottom: 1.2em; display: block; }
.life h4 { font-family: var(--display); font-size: clamp(22px, 2.2vw, 34px); margin-bottom: 0.3em; font-weight: 500; }
.life p { font-size: clamp(15px, 1.2vw, 19px); color: var(--ink-soft); }
/* slide 3 — money reality numbers */
.big-num { font-family: var(--display); font-weight: 500; font-size: clamp(64px, 9vw, 160px); line-height: 1; letter-spacing: -0.03em; color: var(--amber); }
.num-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4vw; margin-top: 2vh; }
.num-cell .label { color: var(--ink-faint); text-transform: uppercase; letter-spacing: 0.12em; font-size: 12px; margin-bottom: 0.5em; }
.num-cell .val { font-family: var(--display); font-size: clamp(36px, 5vw, 72px); line-height: 1; }
.num-cell .note { color: var(--ink-soft); margin-top: 0.5em; font-size: clamp(14px, 1.1vw, 18px); }
/* slide 4 — cost grid */
.costs { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.4vw 4vw; margin-top: 3vh; }
.cost-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.2em; padding: 0.7em 0; border-bottom: 1px solid var(--rule); }
.cost-row .what { color: var(--ink); font-size: clamp(16px, 1.4vw, 22px); display: flex; flex-direction: column; gap: 3px; }
.cost-row .src { color: var(--ink-faint); font-size: clamp(11px, 0.9vw, 14px); font-style: italic; line-height: 1.3; }
.cost-row .amt { font-family: var(--display); color: var(--amber); font-size: clamp(20px, 1.8vw, 28px); font-variant-numeric: tabular-nums; }
/* slide 5 — slider */
.slider-stage { display: grid; grid-template-rows: auto 1fr auto; gap: 3vh; height: 100%; }
.slider-top { display: flex; align-items: baseline; gap: 1.2em; flex-wrap: wrap; }
.slider-top .salary { font-family: var(--display); font-size: clamp(56px, 8vw, 120px); color: var(--amber); line-height: 1; letter-spacing: -0.02em; }
.slider-top .takehome { color: var(--ink-soft); font-size: clamp(16px, 1.4vw, 22px); }
.lifeboard { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6vw; }
.tile { border: 1px solid var(--rule); background: var(--bg-2); border-radius: 12px; padding: 1.6vh 1.4vw; min-height: 22vh; display: flex; flex-direction: column; gap: 0.8em; transition: border-color 250ms ease, background 250ms ease; }
.tile.live { border-color: var(--amber); }
.tile .icon { width: 36px; height: 36px; color: var(--amber); }
.tile .tlabel { color: var(--ink-faint); text-transform: uppercase; letter-spacing: 0.12em; font-size: 11px; }
.tile .tval { font-family: var(--display); font-size: clamp(20px, 1.8vw, 30px); color: var(--ink); line-height: 1.15; }
.tile .tnote { color: var(--ink-soft); font-size: clamp(13px, 1.1vw, 17px); margin-top: auto; }
.slider-wrap { display: flex; align-items: center; gap: 1.4em; }
.slider-wrap input[type=range] { flex: 1; -webkit-appearance: none; appearance: none; height: 8px; background: var(--rule); border-radius: 4px; outline: none; }
.slider-wrap input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 28px; height: 28px; background: var(--amber); border-radius: 50%; cursor: pointer; box-shadow: 0 0 0 4px rgba(245,166,35,0.18); }
.slider-wrap input[type=range]::-moz-range-thumb { width: 28px; height: 28px; background: var(--amber); border-radius: 50%; border: none; cursor: pointer; box-shadow: 0 0 0 4px rgba(245,166,35,0.18); }
.slider-ticks { display: flex; justify-content: space-between; color: var(--ink-faint); font-size: 12px; letter-spacing: 0.05em; padding: 0 4px; margin-top: 0.4em; }
.slider-quip { color: var(--ink-soft); font-style: italic; font-family: var(--display); margin-top: 1em; min-height: 1.6em; transition: opacity 200ms; }
/* slide 6/7 — career ladders */
.ladder { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.4vw 4vw; margin-top: 3vh; }
.rung { display: flex; align-items: baseline; gap: 1em; padding: 0.6em 0; border-bottom: 1px dashed var(--rule); }
.rung .role { color: var(--ink); font-size: clamp(15px, 1.3vw, 21px); flex: 1; }
.rung .pay { font-family: var(--display); color: var(--amber); font-size: clamp(15px, 1.3vw, 21px); font-variant-numeric: tabular-nums; white-space: nowrap; }
.rung.warn .pay { color: var(--rose); }
.ladder h3 { color: var(--ink); border-bottom: 2px solid var(--amber); padding-bottom: 0.4em; }
/* slide 8 — passion trap */
.quote { font-family: var(--display); font-size: clamp(28px, 3.2vw, 48px); line-height: 1.25; max-width: 22ch; }
.quote em { color: var(--amber); font-style: normal; }
.arrow-stack { display: flex; flex-direction: column; gap: 1em; margin-top: 3vh; }
.arrow-row { display: flex; align-items: center; gap: 1em; font-size: clamp(18px, 1.6vw, 26px); }
.arrow-row .step { padding: 0.5em 1em; border: 1px solid var(--rule); border-radius: 8px; background: var(--bg-2); }
.arrow-row .step.bad { border-color: var(--rose); color: var(--rose); }
.arrow-row .step.good { border-color: var(--green); color: var(--green); }
.arrow-row .arrow { color: var(--ink-faint); }
/* slide 9 — four pillars */
.pillars { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.6vw; margin-top: 4vh; }
.pillar { padding: 2vh 1.2vw; border-top: 3px solid var(--green); background: var(--bg-2); border-radius: 0 0 8px 8px; }
.pillar h4 { font-family: var(--display); font-size: clamp(22px, 2vw, 32px); margin-bottom: 0.4em; }
.pillar p { font-size: clamp(14px, 1.1vw, 18px); }
/* slide 10 — homework */
.checklist li { list-style: none; padding: 0.7em 0 0.7em 2em; position: relative; border-bottom: 1px solid var(--rule); font-size: clamp(18px, 1.6vw, 26px); color: var(--ink); }
.checklist li::before { content: ""; position: absolute; left: 0; top: 1.05em; width: 14px; height: 14px; border: 2px solid var(--amber); border-radius: 3px; }
/* close */
.close-slide { justify-content: center; align-items: center; text-align: center; }
.close-slide h1 { max-width: 18ch; }
.close-slide .sig { margin-top: 4vh; font-family: var(--display); font-style: italic; color: var(--amber); font-size: clamp(20px, 1.8vw, 28px); }
/* fullscreen tip */
.fs-tip { position: fixed; top: 16px; right: 16px; background: var(--bg-2); border: 1px solid var(--rule); padding: 8px 14px; border-radius: 6px; color: var(--ink-soft); font-size: 12px; z-index: 60; opacity: 0.9; }
.fs-tip kbd { font-family: var(--sans); }
</style>
</head>
<body>
<div class="progress"><div id="bar"></div></div>
<div class="counter"><span id="cur">1</span> / <span id="tot">10</span></div>
<div class="hint"><kbd>←</kbd> <kbd>→</kbd> to navigate · <kbd>F</kbd> for fullscreen</div>
<main class="deck" id="deck">
<!-- 1. TITLE -->
<section class="slide title-slide">
<div class="eyebrow">For James &amp; Chloe · May 2026</div>
<h1>What kind of <em class="amber">life</em> do you want?</h1>
<p class="sub" style="max-width: 36ch;">Not "what job." What life. The job is just how you pay for it.<br>This will take 20 minutes. There will be no quiz.</p>
<div class="sig">— Mum &amp; Dad</div>
</section>
<!-- 2. THREE LIVES -->
<section class="slide">
<div class="eyebrow">Three different lives</div>
<h2>Pick one. Be honest.</h2>
<div class="lives">
<div class="life">
<svg viewBox="0 0 100 60" fill="none" stroke="currentColor" stroke-width="2"><rect x="20" y="20" width="60" height="35" rx="2"/><rect x="35" y="35" width="12" height="20"/><rect x="55" y="30" width="10" height="10"/><path d="M15 20 L50 5 L85 20"/></svg>
<h4>Cosy</h4>
<p>Shared flat, mates round, takeaway Friday. Holidays once a year if you save. Bus and bike. <em class="amber" style="font-style:normal">Totally fine.</em></p>
</div>
<div class="life">
<svg viewBox="0 0 100 60" fill="none" stroke="currentColor" stroke-width="2"><rect x="10" y="22" width="80" height="33" rx="2"/><rect x="22" y="36" width="14" height="19"/><rect x="48" y="32" width="14" height="14"/><rect x="68" y="32" width="14" height="14"/><path d="M5 22 L50 4 L95 22"/><rect x="40" y="50" width="6" height="5" fill="currentColor"/></svg>
<h4>Comfortable</h4>
<p>Own home in a nice area, decent car, holiday abroad each year. Kids do clubs. Eat out when you fancy. <em class="amber" style="font-style:normal">The British dream.</em></p>
</div>
<div class="life">
<svg viewBox="0 0 100 60" fill="none" stroke="currentColor" stroke-width="2"><rect x="5" y="18" width="90" height="38" rx="2"/><path d="M0 18 L50 0 L100 18"/><rect x="20" y="32" width="14" height="24"/><rect x="44" y="28" width="14" height="14"/><rect x="64" y="28" width="14" height="14"/><circle cx="80" cy="48" r="3" fill="currentColor"/></svg>
<h4>Loaded</h4>
<p>Big house, two cars, ski + summer + half-term abroad. Private school maybe. <em class="amber" style="font-style:normal">Costs more than you think.</em></p>
</div>
</div>
<p class="sub" style="margin-top: 4vh;">There's no "right" answer. But the answer points at the kind of work you'll need to do.</p>
</section>
<!-- 3. MONEY REALITY -->
<section class="slide">
<div class="eyebrow">UK 2026 · the boring numbers first</div>
<h2>What people actually earn.</h2>
<div class="num-row">
<div class="num-cell">
<div class="label">Median full-time salary</div>
<div class="val">£37,000</div>
<div class="note">Half of working adults earn less than this.</div>
</div>
<div class="num-cell">
<div class="label">Take-home after tax</div>
<div class="val">£2,510 / mo</div>
<div class="note">After income tax and National Insurance. This is what hits your account.</div>
</div>
<div class="num-cell">
<div class="label">Top 10% earn over</div>
<div class="val">£75,000</div>
<div class="note">≈ £4,500 / month take-home. Rarer than Instagram suggests.</div>
</div>
</div>
<p class="sub">Source: ONS ASHE, HMRC tables. Figures rounded. Welcome to adulthood.</p>
</section>
<!-- 4. COST OF LIFE -->
<section class="slide">
<div class="eyebrow">What life actually costs</div>
<h2>A typical month, outside London.</h2>
<div class="costs">
<div class="cost-row"><span class="what">1-bed flat (your own)<span class="src">ONS Private Rent Index, Dec 2024 — UK avg 1-bed</span></span><span class="amt">£1,050</span></div>
<div class="cost-row"><span class="what">Energy + water<span class="src">Ofgem price cap 2025 + Water UK 2025/26 avg</span></span><span class="amt">£195</span></div>
<div class="cost-row"><span class="what">Council tax (Band A)<span class="src">GOV.UK Council Tax stats, England 2025/26</span></span><span class="amt">£125</span></div>
<div class="cost-row"><span class="what">Food shop<span class="src">ONS Family Spending Survey 2023/24, single adult</span></span><span class="amt">£200</span></div>
<div class="cost-row"><span class="what">Phone + broadband<span class="src">Ofcom Pricing Trends report 2024</span></span><span class="amt">£50</span></div>
<div class="cost-row"><span class="what">Used car (run + insure)<span class="src">RAC Cost of Motoring + ABI premium tracker, 2025</span></span><span class="amt">£230</span></div>
<div class="cost-row"><span class="what">A pint, a coffee, a Netflix<span class="src">illustrative — varies wildly by lifestyle</span></span><span class="amt">£120</span></div>
<div class="cost-row"><span class="what">A week in Spain (saved monthly)<span class="src">illustrative — ABTA avg holiday spend</span></span><span class="amt">£100</span></div>
</div>
<p class="sub">≈ <strong>£2,070/mo</strong> for a basic-but-decent solo life. That's roughly a £30k salary. Below it, things get tight fast.</p>
</section>
<!-- 5. FIRST JOB / TESCO -->
<section class="slide">
<div class="eyebrow">A reality check · your first job</div>
<h2>It will probably be <em class="amber">Tesco</em>.</h2>
<div class="grid-2" style="margin-top: 3vh;">
<div>
<h3>The maths</h3>
<div class="num-row" style="grid-template-columns: 1fr; gap: 1.6vh;">
<div class="num-cell">
<div class="label">Hourly rate (Real Living Wage)</div>
<div class="val">£12.60</div>
<div class="note">Living Wage Foundation, 2024–25 rate. Tesco's national hourly rate is similar.</div>
</div>
<div class="num-cell">
<div class="label">Full-time take-home</div>
<div class="val">£1,770 / mo</div>
<div class="note">37.5 hours a week, every week, after tax &amp; NI.</div>
</div>
</div>
</div>
<div>
<h3>What that life looks like</h3>
<div class="stack">
<p>→ Living at home, or sharing with mates.</p>
<p>→ Maybe £200–300 a month that's actually <em class="amber">yours</em> after bills.</p>
<p>→ Shifts on evenings, weekends, Christmas Eve.</p>
<p>→ You'll hate some customers. You'll love some colleagues.</p>
</div>
</div>
</div>
<p class="sub" style="margin-top: 3vh; max-width: 70ch;"><strong>This is completely normal.</strong> We both did jobs like this. You learn something there that school can't teach: how to <em class="amber">show up, do the work, and be useful</em>. Everything good builds on that.</p>
</section>
<!-- 6. INTERACTIVE SLIDER -->
<section class="slide" id="slider-slide">
<div class="slider-stage">
<div>
<div class="eyebrow">Drag the slider · this is the headline event</div>
<div class="slider-top">
<div class="salary" id="sal-display">£37,000</div>
<div class="takehome">≈ <span id="take-display">£2,470</span> / month take-home</div>
</div>
</div>
<div class="lifeboard">
<div class="tile" id="t-home">
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 12 L12 4 L21 12"/><path d="M5 11 V20 H19 V11"/></svg>
<div class="tlabel">Where you live</div>
<div class="tval" id="v-home">—</div>
<div class="tnote" id="n-home">—</div>
</div>
<div class="tile" id="t-car">
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M3 14 L5 8 H19 L21 14"/><rect x="3" y="14" width="18" height="5" rx="1"/><circle cx="7" cy="19" r="1.5"/><circle cx="17" cy="19" r="1.5"/></svg>
<div class="tlabel">Wheels</div>
<div class="tval" id="v-car">—</div>
<div class="tnote" id="n-car">—</div>
</div>
<div class="tile" id="t-hol">
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M2 18 H22"/><path d="M5 18 V12 L12 9 L19 12 V18"/><circle cx="6" cy="6" r="2"/></svg>
<div class="tlabel">Holidays / year</div>
<div class="tval" id="v-hol">—</div>
<div class="tnote" id="n-hol">—</div>
</div>
<div class="tile" id="t-fun">
<svg class="icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><path d="M5 8 H19 L17 18 H7 Z"/><path d="M9 8 V5 A3 3 0 0 1 15 5 V8"/></svg>
<div class="tlabel">Going out + spare cash</div>
<div class="tval" id="v-fun">—</div>
<div class="tnote" id="n-fun">—</div>
</div>
</div>
<div>
<div class="slider-wrap">
<input type="range" id="salary" min="0" max="100" step="0.5" value="21.6">
</div>
<div class="slider-ticks"><span>£18k</span><span>£40k</span><span>£75k</span><span>£120k</span><span>£200k</span></div>
<div class="slider-quip" id="quip">The median UK salary. Half of working adults are below this line.</div>
</div>
</div>
</section>
<!-- 6. MTB CAREERS -->
<section class="slide">
<div class="eyebrow">For James · if mountain biking is your world</div>
<h2>Lots of doors lead here.</h2>
<div class="ladder" style="grid-template-columns: 1fr 1fr;">
<div>
<h3>Hands-on the bike</h3>
<div class="rung"><span class="role">Bike mechanic (shop)</span><span class="pay">£22–30k</span></div>
<div class="rung"><span class="role">MTB coach / instructor</span><span class="pay">£25–40k</span></div>
<div class="rung"><span class="role">Trail builder (BikePark, Forestry)</span><span class="pay">£25–35k</span></div>
<div class="rung warn"><span class="role">Pro racer (Enduro / Downhill)</span><span class="pay">£0–500k+</span></div>
<div class="rung"><span class="role">Bike shop owner</span><span class="pay">£30–80k</span></div>
</div>
<div>
<h3>Around the bike</h3>
<div class="rung"><span class="role">Product designer (frames, kit)</span><span class="pay">£35–70k</span></div>
<div class="rung"><span class="role">Sports physiotherapist</span><span class="pay">£35–60k</span></div>
<div class="rung"><span class="role">Outdoor brand marketer</span><span class="pay">£30–65k</span></div>
<div class="rung"><span class="role">Orthopaedic surgeon (the broken-bones doctor)</span><span class="pay">£90–200k+</span></div>
<div class="rung warn"><span class="role">Outdoor brand founder</span><span class="pay">£0 → ∞</span></div>
</div>
</div>
<p class="sub">Red ones are <em class="rose">long shots</em>. Real, but very hard. Most people who try, fail. That doesn't mean don't try — it means have a plan B you respect.</p>
<p class="sub" style="margin-top: 0.4em; font-size: 12px;">Indicative UK ranges, 2025. Sources: ONS ASHE, NHS Agenda for Change &amp; consultant pay scales, Indeed/Glassdoor UK medians. Treat as ballparks, not quotes.</p>
</section>
<!-- 7. KIDS / ANIMALS / FASHION / BEAUTY -->
<section class="slide">
<div class="eyebrow">For Chloe · kids, animals, clothing, beauty</div>
<h2>Way more than the obvious.</h2>
<div class="ladder" style="grid-template-columns: 1fr 1fr;">
<div>
<h3>Kids & animals</h3>
<div class="rung"><span class="role">Nursery practitioner</span><span class="pay">£18–24k</span></div>
<div class="rung"><span class="role">Primary teacher</span><span class="pay">£32–50k</span></div>
<div class="rung"><span class="role">Child psychologist</span><span class="pay">£40–80k</span></div>
<div class="rung"><span class="role">Paediatrician (children's doctor)</span><span class="pay">£70–130k+</span></div>
<div class="rung"><span class="role">Veterinary nurse</span><span class="pay">£22–30k</span></div>
<div class="rung"><span class="role">Vet (your own surgery)</span><span class="pay">£40–90k</span></div>
</div>
<div>
<h3>Clothing & beauty</h3>
<div class="rung"><span class="role">Retail floor staff</span><span class="pay">£18–24k</span></div>
<div class="rung"><span class="role">Fashion buyer (M&amp;S, ASOS, Next)</span><span class="pay">£30–70k</span></div>
<div class="rung warn"><span class="role">Fashion designer (own label)</span><span class="pay">£0–100k+</span></div>
<div class="rung"><span class="role">Beautician / aesthetician</span><span class="pay">£20–35k</span></div>
<div class="rung"><span class="role">Cosmetic chemist (the science of skincare)</span><span class="pay">£32–60k</span></div>
<div class="rung"><span class="role">Dermatologist (skin doctor)</span><span class="pay">£90–200k+</span></div>
</div>
</div>
<p class="sub">Notice: every interest has a £20k version <em class="amber">and</em> a £100k version. The difference is usually <strong>training, mastery, and time</strong>.</p>
<p class="sub" style="margin-top: 0.4em; font-size: 12px;">Indicative UK ranges, 2025. Sources: ONS ASHE, DfE teacher pay scales, NHS Agenda for Change &amp; consultant pay, RCVS vet salary survey, Indeed/Glassdoor UK medians.</p>
</section>
<!-- 8. PASSION TRAP -->
<section class="slide">
<div class="grid-2">
<div>
<div class="eyebrow">The bit nobody tells you</div>
<h2>"Follow your passion" is half wrong.</h2>
<p>The advice sounds nice. Find the thing you love, do it forever, money follows.</p>
<p>But most people don't <em class="amber">have</em> a clear passion at 14 — and the ones who think they do at 14 usually love something different by 24.</p>
<p>The truth is sneakier and better:</p>
</div>
<div>
<div class="quote">"Passion follows <em>mastery</em>, not the other way around."</div>
<div class="arrow-stack">
<div class="arrow-row">
<div class="step bad">Wait for passion</div>
<div class="arrow">→</div>
<div class="step bad">Stay average</div>
<div class="arrow">→</div>
<div class="step bad">Hate it</div>
</div>
<div class="arrow-row">
<div class="step good">Get good at something</div>
<div class="arrow">→</div>
<div class="step good">Find it interesting</div>
<div class="arrow">→</div>
<div class="step good">Love it</div>
</div>
</div>
<p class="sub" style="margin-top:2.4vh;">Bike mechanics who learn to weld earn more <em class="amber">and</em> enjoy it more. Skill makes things fun.</p>
</div>
</div>
</section>
<!-- 9. FOUR PILLARS -->
<section class="slide">
<div class="eyebrow">What actually predicts a good life</div>
<h2>Money buys <em class="amber">comfort</em>. These four buy <em class="green">happiness</em>.</h2>
<div class="pillars">
<div class="pillar">
<h4>Autonomy</h4>
<p>Choosing how, when, and with whom you work. A self-employed plumber often has more of this than a junior banker on £80k.</p>
</div>
<div class="pillar">
<h4>Mastery</h4>
<p>Being noticeably good at something. The feeling of "I can do this thing other people can't." Quietly, deeply satisfying.</p>
</div>
<div class="pillar">
<h4>Purpose</h4>
<p>Your work makes a difference to someone, somewhere. A nursery worker has more of this than most CEOs.</p>
</div>
<div class="pillar">
<h4>People</h4>
<p>Working with humans you actually like. Most workplace misery is bad bosses and bad colleagues, not the work itself.</p>
</div>
</div>
<p class="sub" style="margin-top: 4vh;">All four are available at £25k <em class="amber">and</em> £125k. Some £200k jobs have none of them. Pick carefully.</p>
</section>
<!-- 10. HOMEWORK / CLOSE -->
<section class="slide">
<div class="eyebrow">What to do at 14 and 15</div>
<h2>You don't need to know.<br>But you do need to be <em class="amber">getting good</em> at something.</h2>
<ul class="checklist" style="margin-top: 2.5vh;">
<li>Keep maths open until you have to drop it. It quietly unlocks half of these careers.</li>
<li>Pick <strong>one thing</strong> for the next month. Try to be measurably better at it by June.</li>
<li>Try things. Quit things. Both are fine. The skill is <em class="amber">noticing</em> what pulls you back.</li>
<li>Find one adult who does something interesting. Ask them how they got there. People love being asked.</li>
<li>Be sceptical of TikTok careers. The visible 1% are not the median.</li>
</ul>
</section>
<!-- 11. CLOSE -->
<section class="slide close-slide">
<h1>Whatever you pick,<br>we've got you,<br><em class="amber">James &amp; Chloe</em>.</h1>
<p class="sub" style="text-align:center; max-width: 36ch; margin-top:2vh;">Just don't sleepwalk into it. Choose with your eyes open. The numbers are the floor, not the point.</p>
<div class="sig">— love, Mum &amp; Dad</div>
</section>
</main>
<script>
(() => {
const slides = Array.from(document.querySelectorAll('.slide'));
const total = slides.length;
let idx = 0;
const bar = document.getElementById('bar');
const cur = document.getElementById('cur');
const tot = document.getElementById('tot');
tot.textContent = total;
function show(n) {
idx = Math.max(0, Math.min(total - 1, n));
slides.forEach((s, i) => s.classList.toggle('active', i === idx));
cur.textContent = idx + 1;
bar.style.width = ((idx + 1) / total * 100) + '%';
if (slides[idx].id === 'slider-slide') updateLife(positionToSalary(parseFloat(salary.value)));
}
document.addEventListener('keydown', (e) => {
if (['ArrowRight', ' ', 'PageDown', 'ArrowDown'].includes(e.key)) { e.preventDefault(); show(idx + 1); }
else if (['ArrowLeft', 'PageUp', 'ArrowUp'].includes(e.key)) { e.preventDefault(); show(idx - 1); }
else if (e.key === 'Home') { show(0); }
else if (e.key === 'End') { show(total - 1); }
else if (e.key === 'f' || e.key === 'F') {
if (!document.fullscreenElement) document.documentElement.requestFullscreen();
else document.exitFullscreen();
}
});
document.addEventListener('click', (e) => {
if (e.target.closest('input,button,[type=range]')) return;
const x = e.clientX / window.innerWidth;
show(x < 0.3 ? idx - 1 : idx + 1);
});
show(0);
// ─── Lifestyle slider logic ─────────────────────────────────────────
// UK 2026 take-home approximations (after income tax + NI, no student loan)
// Buckets: £18k £25k £32k £40k £55k £75k £100k £150k £200k
function takeHome(gross) {
// Personal allowance: £12,570; tapers above £100k (lose £1 per £2 over)
let pa = 12570;
if (gross > 100000) pa = Math.max(0, 12570 - (gross - 100000) / 2);
const taxable = Math.max(0, gross - pa);
let tax = 0;
// bands above PA: basic 20% to £50,270; higher 40% to £125,140; additional 45%
const basicCap = 50270 - 12570; // £37,700
const higherCap = 125140 - 12570; // £112,570
if (taxable <= basicCap) tax = taxable * 0.2;
else if (taxable <= higherCap) tax = basicCap * 0.2 + (taxable - basicCap) * 0.4;
else tax = basicCap * 0.2 + (higherCap - basicCap) * 0.4 + (taxable - higherCap) * 0.45;
// NI 2026: 8% between £12,570 and £50,270, then 2%
let ni = 0;
if (gross > 12570) ni = Math.min(gross, 50270) - 12570;
ni = ni > 0 ? ni * 0.08 : 0;
if (gross > 50270) ni += (gross - 50270) * 0.02;
return Math.round((gross - tax - ni));
}
const buckets = [
{ min: 18000, max: 22999,
home: ["Room in a shared house", "Probably with three people who don't quite empty the dishwasher."],
car: ["No car, mostly", "Bus pass and a bike. Honestly fine. We both did this for years."],
hol: ["Maybe one", "A long weekend in Wales if you save. No flights."],
fun: ["Pub once a week", "About £200/mo left after rent and food. Dating is expensive — be charming instead."],
quip: "Tesco full-time, bike-mechanic, nursery-worker — your starter zone. Tight, but doable." },
{ min: 23000, max: 32999,
home: ["1-bed flat (regional)", "Your own place. Your own kettle. Your own rules. Worth a lot."],
car: ["Used Corsa / Fiesta", "Reliable but not glamorous. Costs about £250/mo to run."],
hol: ["1 abroad, 1 UK", "Spain in October when it's cheap. Cornwall in August."],
fun: ["Eat out monthly", "About £400/mo spare. Gym, a hobby, occasional treats."],
quip: "Teacher, vet nurse, trail builder, bike-shop manager. A real adult life." },
{ min: 33000, max: 49999,
home: ["Nice 1-bed or shared 2-bed", "Good area. Maybe saving for a deposit."],
car: ["Decent used car", "Modern hatchback, full insurance, no anxiety at MOT time."],
hol: ["2 abroad", "A proper summer trip and a winter break. Maybe ski once."],
fun: ["Eat out weekly", "£700+/mo spare after essentials. Quietly building savings."],
quip: "Median-plus territory. Most teachers, designers, nurses, marketers." },
{ min: 50000, max: 79999,
home: ["2-bed flat or starter home", "Mortgage on something modest. The keys are yours."],
car: ["New-ish family car", "Lease or owned. Maybe a Golf, Civic, modest SUV."],
hol: ["3 trips, 2 abroad", "Including one that involves the word 'villa'."],
fun: ["Eat out whenever", "£1,200+/mo spare. Real choices. Pension actually filling up."],
quip: "Senior teacher, vet, fashion buyer, software engineer, doctor in training." },
{ min: 80000, max: 129999,
home: ["3-bed semi, nice area", "House with a garden. Maybe a spare room you call 'the office'."],
car: ["Premium car", "BMW, Audi, Tesla. Not because you need it, but because you can."],
hol: ["4+ trips, ski included", "Half-term abroad becomes normal. The kids think it's normal."],
fun: ["Eat out without checking", "Significant savings. Investing. The boring rich-people stuff."],
quip: "Top 5–10%. GP, surgeon-in-training, senior engineer, head of department." },
{ min: 130000, max: 200000,
home: ["Detached house or central flat", "£600k+ mortgage. Or zero, if you bought early enough."],
car: ["Two cars, nice ones", "Plus an older 'fun' car for sunny weekends, probably."],
hol: ["6+ trips, premium", "Long-haul, ski chalet, beach club. The Instagram version."],
fun: ["Money mostly stops mattering", "But your time disappears instead. Nothing comes free."],
quip: "Top 1–2%. Consultant doctor, partner-track lawyer, CEO of a small firm, top tech." }
];
function findBucket(s) { return buckets.find(b => s >= b.min && s <= b.max) || buckets[buckets.length - 1]; }
// Slider position (0–100) maps non-linearly to salary so the tick labels
// (£18k · £40k · £75k · £120k · £200k) sit at 0/25/50/75/100% as drawn.
const tickPos = [0, 25, 50, 75, 100];
const tickSal = [18000, 40000, 75000, 120000, 200000];
function positionToSalary(pos) {
for (let i = 0; i < tickPos.length - 1; i++) {
if (pos <= tickPos[i + 1]) {
const t = (pos - tickPos[i]) / (tickPos[i + 1] - tickPos[i]);
const raw = tickSal[i] + t * (tickSal[i + 1] - tickSal[i]);
return Math.round(raw / 1000) * 1000;
}
}
return tickSal[tickSal.length - 1];
}
const salary = document.getElementById('salary');
const sal = document.getElementById('sal-display');
const take = document.getElementById('take-display');
const quip = document.getElementById('quip');
const fields = ['home', 'car', 'hol', 'fun'];
const tiles = Object.fromEntries(fields.map(f => [f, document.getElementById('t-' + f)]));
function updateLife(value) {
const b = findBucket(value);
sal.textContent = '£' + value.toLocaleString();
const m = Math.round(takeHome(value) / 12);
take.textContent = '£' + m.toLocaleString();
fields.forEach(f => {
document.getElementById('v-' + f).textContent = b[f][0];
document.getElementById('n-' + f).textContent = b[f][1];
tiles[f].classList.add('live');
setTimeout(() => tiles[f].classList.remove('live'), 220);
});
quip.textContent = b.quip;
}
salary.addEventListener('input', e => updateLife(positionToSalary(parseFloat(e.target.value))));
updateLife(positionToSalary(parseFloat(salary.value)));
})();
</script>
</body>
</html>

Speaker notes — What kind of life do you want?

Total: ~20 mins. Keep it conversational. Pause for reactions. Skip anything that's already landed.


1. Title — "What kind of life do you want?" (~1 min)

  • This isn't a careers lecture. It's a chat about the life you want first, the job second.
  • Promise: 20 minutes, no quiz, no pressure.
  • Tee them up: "I want you to have information I didn't have at your age."

2. Three lives — Cosy / Comfortable / Loaded (~2 min)

  • Ask each of them out loud: which one? Don't let them off the hook.
  • Important: there's no wrong answer. Cosy is fine. Some of the happiest people you know live cosy.
  • The point: the answer shapes the kind of work you'll need to do — that's all.

3. Money reality — UK 2026 (~2 min)

  • Median = £37k. Half the country earns less than this. Including most adults they know.
  • Take-home is what matters: £2,510/mo is the real number after tax & NI.
  • Top 10% earn over £75k — rarer than Instagram makes it look.
  • "Influencers and footballers are not the average."

4. Cost of life (~2 min)

  • Walk through fast. Don't read every line — let them eyeball it.
  • The punchline: a basic-but-decent life costs about £30k. Below that, things get tight.
  • "This is why your first job matters less than what it teaches you for your second."

5. Your first job — Tesco (~1.5 min)

  • Be plain: most adults' first proper job was retail or hospitality. Yours will probably be too.
  • £12.60/hr × full-time = ~£1,770/mo take-home. Not enough to live alone, but plenty as a starter.
  • £12.60 is the Real Living Wage (Living Wage Foundation, 2024–25 UK rate). Tesco's national hourly rate is in the same ballpark and updates annually — check tesco-careers.com if asked for the current figure.
  • The point isn't the money — it's that you learn how to work: show up on time, deal with humans, get paid for being useful. Nothing else builds without that.
  • Personal bit: tell them what your first job was. (They'll love this.)
  • "Tesco isn't where you stay. It's where you start. Both of us did jobs like this."

6. 🎚️ Salary slider (~4 min — the centrepiece)

  • Hand the laptop over. Let them drag it themselves.
  • Push them: "Try £20k. Try £200k. Try the salary of a teacher. A vet. A surgeon."
  • Key insight to land: the jump from £20k → £40k transforms a life. The jump from £80k → £200k doesn't, much. Money has diminishing returns.
  • Ask: "where does the lifestyle you actually want sit?" — usually lower than they'd guess.
  • The lifestyle tiles (rent, car, holidays, spare cash) are illustrative scenarios, not quotes — they sketch what each band typically buys outside London. Tax & NI calculations on take-home use 2025–26 HMRC bands.

7. MTB careers (~2 min — for James)

  • Notice: every door is open. From bike mechanic at 18 to surgeon at 35. Both legitimate.
  • The red ones (pro racer, brand founder) — say it plainly: most people who try, fail. Have a plan B you respect.
  • "Loving bikes doesn't mean you have to be on a bike for a living. You can be the physio, the designer, the surgeon who fixes the broken collarbones."
  • Salary ranges are indicative UK figures, 2025 — sourced from ONS ASHE, NHS Agenda for Change & consultant pay scales, and Indeed/Glassdoor UK medians. Treat as ballparks if pushed.

8. Kids/animals/clothing/beauty (~2 min — for Chloe)

  • Same insight, different world: every interest has a £20k version and a £100k version.
  • The difference is almost always: training, mastery, and time.
  • "Beauty isn't just being a beautician. There's a chemist who designs the actual product, earning twice as much, and a dermatologist earning four times as much."
  • Same caveat as slide 7: ranges are indicative (ONS ASHE, DfE teacher pay, NHS pay scales, RCVS vet salary survey, Indeed/Glassdoor). Primary teacher £32k matches the 2024 M1 starting scale; consultant doctor figures are NHS base + private uplift.

9. The passion trap (~3 min — the one to actually land)

  • "Follow your passion" is the worst careers advice ever given to teenagers.
  • Mastery comes first. You don't love something then get good. You get good and then you love it.
  • Personal example if you have one — something you learned to love by getting good at it.
  • "Don't wait for a calling. Get good at something interesting. The calling appears."

10. Four pillars — autonomy, mastery, purpose, people (~2 min)

  • These are what actually make people happy at work. Money beyond ~£60k barely shifts the dial.
  • Self-employed plumber > miserable banker. Nursery worker > burnt-out CEO.
  • "Pick a job where you have at least three of these four. Two if you're lucky. Zero is dangerous."

11. Homework (~1 min)

  • Read each line. Let them sink in.
  • The maths line is the most important — quietly closes more doors than anything else.
  • "Pick one thing this month. By June, be measurably better at it. Tell us what you picked."

12. Close (~30 sec)

  • Say it slowly. Mean it.
  • "Whatever you pick, we've got you. Just don't sleepwalk."
  • Hugs. Done. Open the biscuits.

Quick recovery if you lose the thread

  • Stuck → ask "which life on slide 2 did you pick again?"
  • Bored faces → skip to the slider (slide 5). It always wakes them up.
  • Argument → "we don't have to agree. I just want you to know the numbers."

Things to avoid

  • Don't compare them to each other.
  • Don't list specific careers you want them to pick.
  • Don't promise university is required — for half of these jobs it isn't.
  • Don't go over 25 minutes. Land the plane.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment