<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<title>EV Efficiency Explained</title>
<style>
@import url(‘https://fonts.googleapis.com/css2?family=Caveat:wght@400;600;700&family=Kalam:wght@300;400;700&display=swap’);
– { margin: 0; padding: 0; box-sizing: border-box; }
:root {
–ink: #1a1a2e;
–blue: #2563eb;
–green: #16a34a;
–red: #dc2626;
–orange: #ea580c;
–yellow: #ca8a04;
–board: #fdfcf7;
–line: #e8e4d4;
}
body {
background: #e8e0cc;
font-family: ‘Kalam’, cursive;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
.page-title {
font-family: ‘Caveat’, cursive;
font-size: clamp(1.4rem, 4vw, 2.2rem);
color: #3d2b1a;
margin-bottom: 16px;
text-align: center;
letter-spacing: 1px;
}
/* Progress Nav */
.nav {
display: flex;
gap: 8px;
margin-bottom: 20px;
flex-wrap: wrap;
justify-content: center;
}
.nav-dot {
width: 12px; height: 12px;
border-radius: 50%;
background: #bbb;
border: 2px solid #999;
cursor: pointer;
transition: all 0.3s;
}
.nav-dot.active { background: var(–blue); border-color: var(–blue); transform: scale(1.4); }
.nav-dot.done { background: var(–green); border-color: var(–green); }
/* Whiteboard */
.board-wrap {
background: var(–board);
border-radius: 4px;
box-shadow: 0 4px 0 #b8a98a, 0 8px 24px rgba(0,0,0,0.25), inset 0 0 60px rgba(0,0,0,0.03);
width: 100%;
max-width: 860px;
min-height: 420px;
position: relative;
overflow: hidden;
border: 3px solid #c8b896;
}
/* Grid lines */
.board-wrap::before {
content:’’;
position: absolute; inset: 0;
background-image:
linear-gradient(var(–line) 1px, transparent 1px),
linear-gradient(90deg, var(–line) 1px, transparent 1px);
background-size: 40px 40px;
opacity: 0.5;
pointer-events: none;
}
/* Slides */
.slide {
position: absolute; inset: 0;
padding: 32px 40px;
opacity: 0;
pointer-events: none;
transition: opacity 0.4s;
}
.slide.active {
opacity: 1;
pointer-events: all;
}
/* Handwritten title on each slide */
.slide-title {
font-family: ‘Caveat’, cursive;
font-size: clamp(1.5rem, 4vw, 2.4rem);
color: var(–ink);
margin-bottom: 18px;
position: relative;
}
.slide-title::after {
content:’’;
display: block;
height: 3px;
background: var(–ink);
border-radius: 2px;
width: 0;
margin-top: 4px;
animation: none;
}
.slide.active .slide-title::after {
animation: underline-draw 0.6s 0.3s forwards;
}
@keyframes underline-draw {
to { width: 100%; }
}
/* Draw-in animations */
.draw { opacity: 0; transform: translateY(12px); }
.slide.active .draw { animation: draw-in 0.5s forwards; }
.draw:nth-child(1) { animation-delay: 0.4s; }
.draw:nth-child(2) { animation-delay: 0.7s; }
.draw:nth-child(3) { animation-delay: 1.0s; }
.draw:nth-child(4) { animation-delay: 1.3s; }
.draw:nth-child(5) { animation-delay: 1.6s; }
.draw:nth-child(6) { animation-delay: 1.9s; }
.draw:nth-child(7) { animation-delay: 2.2s; }
@keyframes draw-in {
to { opacity: 1; transform: translateY(0); }
}
/* Formula boxes */
.formula {
background: rgba(37,99,235,0.08);
border: 2px dashed var(–blue);
border-radius: 8px;
padding: 10px 18px;
display: inline-block;
font-size: clamp(1rem, 2.5vw, 1.3rem);
color: var(–blue);
font-family: ‘Caveat’, cursive;
font-weight: 700;
}
.formula.green { background: rgba(22,163,74,0.08); border-color: var(–green); color: var(–green); }
.formula.orange { background: rgba(234,88,12,0.08); border-color: var(–orange); color: var(–orange); }
.formula.red { background: rgba(220,38,38,0.08); border-color: var(–red); color: var(–red); }
/* Callout / sticky-note style */
.callout {
background: #fff9c4;
border-left: 4px solid var(–yellow);
border-radius: 4px;
padding: 8px 14px;
font-size: clamp(0.85rem, 2vw, 1rem);
color: #5a4000;
margin-top: 8px;
}
/* Two-column layout */
.cols {
display: flex;
gap: 20px;
flex-wrap: wrap;
align-items: flex-start;
}
.col { flex: 1 1 220px; }
/* Comparison bars */
.bar-row { margin: 8px 0; }
.bar-label { font-size: clamp(0.8rem, 1.8vw, 0.95rem); color: var(–ink); margin-bottom: 3px; }
.bar-track {
background: #e5e0d0;
border-radius: 20px;
height: 22px;
overflow: hidden;
position: relative;
}
.bar-fill {
height: 100%;
border-radius: 20px;
display: flex;
align-items: center;
padding-left: 10px;
font-size: 0.75rem;
font-weight: 700;
color: #fff;
width: 0;
transition: width 1.4s cubic-bezier(.2,.8,.3,1);
}
.slide.active .bar-fill { width: var(–w); }
/* Coin/dollar animation */
@keyframes coin-pop {
0% { transform: scale(0) rotate(-20deg); opacity: 0; }
70% { transform: scale(1.15) rotate(5deg); }
100% { transform: scale(1) rotate(0); opacity: 1; }
}
.coin {
display: inline-block;
animation: none;
opacity: 0;
}
.slide.active .coin { animation: coin-pop 0.5s forwards; }
/* Spec table */
table.spec {
border-collapse: collapse;
width: 100%;
font-size: clamp(0.78rem, 1.8vw, 0.95rem);
}
table.spec th {
background: var(–ink);
color: #fff;
padding: 6px 10px;
font-family: ‘Caveat’, cursive;
font-size: clamp(0.9rem, 2vw, 1.1rem);
text-align: left;
}
table.spec td {
padding: 5px 10px;
border-bottom: 1px dashed #ccc;
}
table.spec tr:nth-child(even) td { background: rgba(0,0,0,0.03); }
table.spec .good { color: var(–green); font-weight: 700; }
table.spec .bad { color: var(–red); font-weight: 700; }
/* SVG car sketch */
.car-svg { display: block; }
/* Arrow pointer */
.pointer {
font-size: 1.4rem;
display: inline-block;
animation: bounce-x 0.8s infinite alternate;
}
@keyframes bounce-x {
from { transform: translateX(0); }
to { transform: translateX(6px); }
}
/* Controls */
.controls {
display: flex;
align-items: center;
gap: 14px;
margin-top: 18px;
flex-wrap: wrap;
justify-content: center;
}
.btn {
font-family: ‘Caveat’, cursive;
font-size: 1.1rem;
padding: 10px 28px;
border-radius: 6px;
border: 2.5px solid var(–ink);
background: var(–ink);
color: #fff;
cursor: pointer;
transition: transform 0.15s, box-shadow 0.15s;
box-shadow: 3px 3px 0 #999;
letter-spacing: 0.5px;
}
.btn:hover { transform: translate(-1px,-1px); box-shadow: 4px 4px 0 #888; }
.btn:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 #888; }
.btn.outline {
background: transparent;
color: var(–ink);
}
.slide-counter {
font-family: ‘Caveat’, cursive;
font-size: 1.1rem;
color: #666;
min-width: 60px;
text-align: center;
}
p { font-size: clamp(0.88rem, 2vw, 1.05rem); line-height: 1.6; margin-bottom: 8px; }
.big { font-size: clamp(1.1rem, 2.8vw, 1.4rem); }
.accent { color: var(–blue); font-weight: 700; }
.g { color: var(–green); font-weight: 700; }
.r { color: var(–red); font-weight: 700; }
.o { color: var(–orange); font-weight: 700; }
ul { padding-left: 20px; margin: 6px 0; }
li { font-size: clamp(0.85rem, 1.9vw, 1rem); line-height: 1.7; }
/* Number counter animation */
.count-up {
font-family: ‘Caveat’, cursive;
font-size: clamp(1.6rem, 4vw, 2.4rem);
font-weight: 700;
}
/* Wiggle */
@keyframes wiggle {
0%,100% { transform: rotate(-2deg); }
50% { transform: rotate(2deg); }
}
.wiggle { animation: wiggle 1.5s infinite; display: inline-block; }
@media (max-width: 480px) {
.board-wrap { min-height: 520px; }
.slide { padding: 20px 18px; }
}
</style>
</head>
<body>
<div class=”page-title”>⚡ EV Efficiency Explained — Interactive Whiteboard</div>
<div class=”nav” id=”nav”></div>
<div class=”board-wrap” id=”board”>
<!– SLIDE 1: Intro –>
<div class=”slide active” id=”slide-0″>
<div class=”slide-title”>What Does “Efficiency” Mean for EVs? 🤔</div>
<div class=”draw”>
<p class=”big”>Gas cars use <span class=”r”>MPG</span> — miles per gallon.<br>
But EVs don’t burn gas… so how do we compare them?</p>
</div>
<div class=”draw” style=”margin-top:14px;”>
<p>Two key metrics to know:</p>
</div>
<div class=”draw” style=”margin-top:10px; display:flex; gap:16px; flex-wrap:wrap;”>
<div class=”formula”>⚡ MPGe — Miles Per Gallon Equivalent</div>
<div class=”formula green”>🔋 Mi/kWh — Miles per kilowatt-hour</div>
</div>
<div class=”draw” style=”margin-top:14px;”>
<div class=”callout”>
💡 Both measure how far you travel per unit of energy — they just use different units.
</div>
</div>
<div class=”draw” style=”margin-top:16px;”>
<p>By the end of this tutorial you’ll understand both — and what they actually cost you.</p>
</div>
</div>
<!– SLIDE 2: MPGe Explained –>
<div class=”slide” id=”slide-1″>
<div class=”slide-title”>MPGe — What It Is & Where It Comes From</div>
<div class=”draw”>
<p>The EPA invented <span class=”accent”>MPGe</span> so you can compare EVs and gas cars on the same label.</p>
</div>
<div class=”draw” style=”margin-top:10px;”>
<p>The key fact they used:</p>
<div class=”formula” style=”margin-top:6px;”>1 gallon of gasoline = 33.7 kWh of energy</div>
</div>
<div class=”draw” style=”margin-top:12px;”>
<p>So MPGe asks: <em>”If the car used 33.7 kWh of electricity, how far did it go?”</em></p>
</div>
<div class=”draw” style=”margin-top:8px;”>
<div class=”formula”>MPGe = (miles traveled ÷ kWh used) × 33.7</div>
</div>
<div class=”draw” style=”margin-top:12px;”>
<div class=”cols”>
<div class=”col”>
<p><strong>Example — Tesla Model 3:</strong></p>
<ul>
<li>Uses ~3.5 mi/kWh</li>
<li>3.5 × 33.7 = <span class=”accent”>~118 MPGe</span></li>
</ul>
</div>
<div class=”col”>
<div class=”callout”>
🏷️ You’ll see MPGe on the EPA sticker on every new EV or plug-in hybrid sold in the US.
</div>
</div>
</div>
</div>
</div>
<!– SLIDE 3: mi/kWh Explained –>
<div class=”slide” id=”slide-2″>
<div class=”slide-title”>Mi/kWh — The “Real” Efficiency Number</div>
<div class=”draw”>
<p><span class=”g”>Miles per kWh</span> is what EV owners actually track day-to-day.</p>
</div>
<div class=”draw”>
<p>A <strong>kilowatt-hour (kWh)</strong> is a unit of electrical energy — the same thing on your home electricity bill.</p>
</div>
<div class=”draw” style=”margin-top:6px;”>
<div class=”formula green”>Mi/kWh = Miles Traveled ÷ kWh consumed</div>
</div>
<div class=”draw” style=”margin-top:14px;”>
<p>Quick reference for typical EVs:</p>
</div>
<div class=”draw” style=”margin-top:8px;”>
<div class=”bar-row”>
<div class=”bar-label”>Tesla Model 3 Long Range — <strong>4.1 mi/kWh</strong> 🏆 Excellent</div>
<div class=”bar-track”><div class=”bar-fill” style=”–w:82%; background:var(–green);”>4.1</div></div>
</div>
<div class=”bar-row”>
<div class=”bar-label”>Chevy Bolt EV — <strong>3.5 mi/kWh</strong> ✅ Good</div>
<div class=”bar-track”><div class=”bar-fill” style=”–w:70%; background:var(–blue);”>3.5</div></div>
</div>
<div class=”bar-row”>
<div class=”bar-label”>Ford F-150 Lightning — <strong>2.0 mi/kWh</strong> ⚠️ Lower</div>
<div class=”bar-track”><div class=”bar-fill” style=”–w:40%; background:var(–orange);”>2.0</div></div>
</div>
<div class=”bar-row”>
<div class=”bar-label”>Rivian R1T (large truck) — <strong>1.7 mi/kWh</strong> 🔴 Poor</div>
<div class=”bar-track”><div class=”bar-fill” style=”–w:34%; background:var(–red);”>1.7</div></div>
</div>
</div>
</div>
<!– SLIDE 4: MPGe vs Mi/kWh –>
<div class=”slide” id=”slide-3″>
<div class=”slide-title”>MPGe vs Mi/kWh — Side by Side</div>
<div class=”draw”>
<table class=”spec”>
<tr>
<th>Feature</th>
<th>MPGe</th>
<th>Mi / kWh</th>
</tr>
<tr>
<td>Purpose</td>
<td>Compare EVs to gas cars</td>
<td>Day-to-day EV driving</td>
</tr>
<tr>
<td>Who uses it</td>
<td>EPA labels, car ads</td>
<td>EV owners, dashboards</td>
</tr>
<tr>
<td>Higher = better?</td>
<td class=”good”>Yes ↑ = more efficient</td>
<td class=”good”>Yes ↑ = more efficient</td>
</tr>
<tr>
<td>Easy to convert?</td>
<td>MPGe ÷ 33.7 = mi/kWh</td>
<td>mi/kWh × 33.7 = MPGe</td>
</tr>
<tr>
<td>Typical EV range</td>
<td class=”good”>90 – 140 MPGe</td>
<td class=”good”>2.5 – 4.5 mi/kWh</td>
</tr>
<tr>
<td>Gasoline car baseline</td>
<td>30 MPG car ≈ 30 MPGe</td>
<td>30 MPG car ≈ 0.9 mi/kWh</td>
</tr>
</table>
</div>
<div class=”draw” style=”margin-top:12px;”>
<div class=”callout”>
📌 A car with <strong>100 MPGe</strong> is roughly <strong>3× more efficient</strong> than a 33 MPG gasoline car.
</div>
</div>
</div>
<!– SLIDE 5: Real-World Cost Calculator –>
<div class=”slide” id=”slide-4″>
<div class=”slide-title”>Real-World Cost — How to Calculate 💰</div>
<div class=”draw”>
<p>The formula is simple:</p>
<div class=”formula orange” style=”margin-top:6px;”>Cost per mile = Electricity rate ($/kWh) ÷ Efficiency (mi/kWh)</div>
</div>
<div class=”draw” style=”margin-top:12px;”>
<p><strong>US average electricity rate:</strong> ~$0.17/kWh | <strong>Range:</strong> $0.10 – $0.35/kWh</p>
</div>
<div class=”draw” style=”margin-top:10px;”>
<div class=”cols”>
<div class=”col”>
<p><span class=”wiggle”>🧮</span> <strong>Tesla Model 3 (4.1 mi/kWh):</strong></p>
<div class=”formula green” style=”font-size:1rem;”>$0.17 ÷ 4.1 = ~<strong>$0.041/mile</strong></div>
</div>
<div class=”col”>
<p>⛽ <strong>Gas car (30 MPG @ $3.50/gal):</strong></p>
<div class=”formula red” style=”font-size:1rem;”>$3.50 ÷ 30 = ~<strong>$0.117/mile</strong></div>
</div>
</div>
</div>
<div class=”draw” style=”margin-top:12px;”>
<div class=”callout”>
💸 The EV costs <strong>~65% less per mile</strong> to fuel. On 12,000 miles/year that’s ~$912 saved annually!
</div>
</div>
<div class=”draw” style=”margin-top:10px;”>
<p>⚠️ <strong>DC Fast Charging (public):</strong> rates can hit $0.40–$0.60/kWh — 3× home rates. Always factor in where you charge!</p>
</div>
</div>
<!– SLIDE 6: Interactive Cost Estimator –>
<div class=”slide” id=”slide-5″>
<div class=”slide-title”>🧮 Try It — Your Cost Estimator</div>
<div class=”draw” style=”display:flex; flex-wrap:wrap; gap:16px; align-items:flex-start; margin-top:6px;”>
<div style=”flex:1 1 200px;”>
<label style=”display:block; font-size:0.95rem; margin-bottom:4px;”>Your electricity rate ($/kWh)</label>
<input id=”rate” type=”range” min=”0.08″ max=”0.40″ step=”0.01″ value=”0.17″
style=”width:100%;” oninput=”calcCost()”>
<div id=”rate-val” style=”font-family:’Caveat’,cursive; font-size:1.2rem; color:var(–blue);”>$0.17 /kWh</div>
</div>
<div style=”flex:1 1 200px;”>
<label style=”display:block; font-size:0.95rem; margin-bottom:4px;”>EV efficiency (mi/kWh)</label>
<input id=”eff” type=”range” min=”1.5″ max=”5.0″ step=”0.1″ value=”3.5″
style=”width:100%;” oninput=”calcCost()”>
<div id=”eff-val” style=”font-family:’Caveat’,cursive; font-size:1.2rem; color:var(–green);”>3.5 mi/kWh</div>
</div>
<div style=”flex:1 1 200px;”>
<label style=”display:block; font-size:0.95rem; margin-bottom:4px;”>Annual miles driven</label>
<input id=”miles” type=”range” min=”5000″ max=”30000″ step=”1000″ value=”12000″
style=”width:100%;” oninput=”calcCost()”>
<div id=”miles-val” style=”font-family:’Caveat’,cursive; font-size:1.2rem; color:var(–orange);”>12,000 miles</div>
</div>
</div>
<div class=”draw” id=”cost-result” style=”margin-top:16px; display:flex; flex-wrap:wrap; gap:12px;”>
</div>
</div>
<!– SLIDE 7: Key Takeaways –>
<div class=”slide” id=”slide-6″>
<div class=”slide-title”>Key Takeaways ✏️</div>
<div class=”draw”>
<p>1. <span class=”accent”>MPGe</span> lets you compare EVs to gas cars — defined by 1 gal = 33.7 kWh.</p>
</div>
<div class=”draw”>
<p>2. <span class=”g”>Mi/kWh</span> is the practical EV number — directly tied to your electricity bill.</p>
</div>
<div class=”draw”>
<p>3. Convert easily: <span class=”formula” style=”font-size:0.9rem; padding:4px 10px;”>MPGe ÷ 33.7 = mi/kWh</span></p>
</div>
<div class=”draw”>
<p>4. <span class=”o”>Real cost</span> = electricity rate ÷ efficiency. Home charging ≈ 3–5¢/mile.</p>
</div>
<div class=”draw”>
<p>5. <strong>Bigger vehicles use more energy</strong> — trucks and SUVs have lower mi/kWh even as EVs.</p>
</div>
<div class=”draw”>
<p>6. <strong>Public fast charging</strong> can be 3–4× pricier than home — impacts total cost of ownership.</p>
</div>
<div class=”draw” style=”margin-top:10px;”>
<div class=”callout”>
🎓 Rule of thumb: An EV with <strong>100+ MPGe</strong> (≈3.0+ mi/kWh) charging at home will almost always cost less per mile than a gasoline car at typical fuel prices.
</div>
</div>
</div>
</div><!– end board –>
<div class=”controls”>
<button class=”btn outline” onclick=”changeSlide(-1)”>← Prev</button>
<span class=”slide-counter” id=”counter”>1 / 7</span>
<button class=”btn” onclick=”changeSlide(1)”>Next →</button>
</div>
<script>
const totalSlides = 7;
let current = 0;
// Build nav dots
const nav = document.getElementById(‘nav’);
const labels = [‘Intro’,’MPGe’,’Mi/kWh’,’Comparison’,’Costs’,’Calculator’,’Summary’];
for (let i = 0; i < totalSlides; i++) {
const d = document.createElement(‘div’);
d.className = ‘nav-dot’ + (i===0?’ active’:”);
d.title = labels[i];
d.onclick = () => goTo(i);
nav.appendChild(d);
}
function goTo(n) {
document.getElementById(‘slide-‘+current).classList.remove(‘active’);
nav.children[current].className = ‘nav-dot done’;
current = Math.max(0, Math.min(totalSlides-1, n));
document.getElementById(‘slide-‘+current).classList.add(‘active’);
nav.children[current].className = ‘nav-dot active’;
document.getElementById(‘counter’).textContent = (current+1) + ‘ / ‘ + totalSlides;
if (current === 5) calcCost();
}
function changeSlide(dir) { goTo(current + dir); }
// Keyboard nav
document.addEventListener(‘keydown’, e => {
if (e.key===’ArrowRight’||e.key===’ ‘) changeSlide(1);
if (e.key===’ArrowLeft’) changeSlide(-1);
});
// Cost Calculator
function calcCost() {
const rate = parseFloat(document.getElementById(‘rate’).value);
const eff = parseFloat(document.getElementById(‘eff’).value);
const miles = parseInt(document.getElementById(‘miles’).value);
document.getElementById(‘rate-val’).textContent = ‘$’ + rate.toFixed(2) + ‘ /kWh’;
document.getElementById(‘eff-val’).textContent = eff.toFixed(1) + ‘ mi/kWh’;
document.getElementById(‘miles-val’).textContent = miles.toLocaleString() + ‘ miles’;
const costPerMile = rate / eff;
const annualCostEV = costPerMile * miles;
const mpge = (eff * 33.7).toFixed(0);
// Gas comparison (assume 30 MPG @ $3.50)
const gasPerMile = 3.50 / 30;
const annualGas = gasPerMile * miles;
const savings = annualGas – annualCostEV;
const r = document.getElementById(‘cost-result’);
r.innerHTML = `
<div class=”formula” style=”flex:1 1 160px; text-align:center;”>
<div style=”font-size:0.8rem; font-weight:400;”>Cost per mile (EV)</div>
<div style=”font-size:1.8rem;”>$${costPerMile.toFixed(3)}</div>
</div>
<div class=”formula green” style=”flex:1 1 160px; text-align:center;”>
<div style=”font-size:0.8rem; font-weight:400;”>Annual fuel cost (EV)</div>
<div style=”font-size:1.8rem;”>$${annualCostEV.toFixed(0)}</div>
</div>
<div class=”formula orange” style=”flex:1 1 160px; text-align:center;”>
<div style=”font-size:0.8rem; font-weight:400;”>Annual savings vs 30MPG gas</div>
<div style=”font-size:1.8rem; color:${savings>0?’var(–green)’:’var(–red)’};”>${savings>0?’+’:”} $${savings.toFixed(0)}</div>
</div>
<div class=”formula” style=”flex:1 1 140px; text-align:center; background:rgba(37,99,235,0.06);”>
<div style=”font-size:0.8rem; font-weight:400;”>Your MPGe</div>
<div style=”font-size:1.8rem;”>${mpge}</div>
</div>
`;
}
// Init calculator
calcCost();
</script>
</body>
</html>