{"course":{"slug":"equations-that-changed-the-world","title":"The Equations That Changed the World","progressPercent":0,"tone":"friendly"},"today":{"goal":"Show that the two smaller square areas combine into the area on the hypotenuse.","durationMinutes":12},"featuredLesson":{"title":"Pythagoras's Theorem","objective":"Show that the two smaller square areas combine into the area on the hypotenuse.","steps":["Resize the legs of a right triangle.","Watch the attached squares change area.","See that a² + b² always equals c²."]},"equationAtlas":[{"id":1,"slug":"pythagorass-theorem","title":"Pythagoras's Theorem","formula":"a^2 + b^2 = c^2","author":"Pythagoras","year":"530 BC","category":"geometry","description":"The fundamental relationship between the sides of a right triangle.","stage":"live-demo","hook":"You need to build a ramp. The step is 3 feet high, the base starts 4 feet away. How long is the ramp?","hook_action":"Drag the sides of the triangle to see a² + b² always equals c².","variables_data":[{"max":12,"min":1,"name":"a","step":0.5,"unit":null,"color":"primary","symbol":"a","default":3,"description":"Vertical side"},{"max":12,"min":1,"name":"b","step":0.5,"unit":null,"color":"secondary","symbol":"b","default":4,"description":"Horizontal side"},{"max":20,"min":0,"name":"c","step":0.01,"unit":null,"color":"result","symbol":"c","default":5,"constant":true,"description":"Hypotenuse (computed)"}],"presets_data":[{"label":"3-4-5","values":{"a":3,"b":4}},{"label":"5-12-13","values":{"a":5,"b":12}},{"label":"Ladder","values":{"a":2,"b":6}}],"lessons_data":[{"id":"touch","hint":"Find the blue handle at the top of side a.","insight":"The hypotenuse c grew too. The squares always balance: a² + b² = c².","unlocked":["a"],"celebration":"subtle","instruction":"Grab the blue dot on side a and drag to make it longer.","successType":"variable_changed","successTarget":"a"},{"id":"squares","insight":"a² + b² = c². Always. No matter what size.","unlocked":["a","b"],"celebration":"subtle","instruction":"Watch the squares. Blue + amber always equals red. Drag both a and b.","successType":"variable_changed","successTarget":"b"},{"id":"classic","insight":"c = 5. The famous 3-4-5 triangle. Builders have used this for 4,000 years.","unlocked":["a","b"],"celebration":"big","instruction":"Set a = 3 and b = 4. What is c?","successType":"value_reached","successValue":3,"successTarget":"a","successTolerance":0.5}],"glossary_data":[{"color":"#ef4444","words":["hypotenuse"],"tooltip":"The longest side, opposite the right angle","highlightClass":"sq-c"},{"color":"#64748b","words":["right angle","right triangle"],"tooltip":"The 90° corner","highlightClass":"right-angle"},{"color":"#8b5cf6","words":["square","squares","area"],"tooltip":"Area squares attached to each side","highlightClass":"all-squares"},{"color":"#334155","words":["triangle"],"tooltip":"The right triangle","highlightClass":"tri"},{"color":"#ef4444","words":["ramp"],"tooltip":"The ramp length equals the hypotenuse","highlightClass":"sq-c"}]},{"id":2,"slug":"logarithms","title":"Logarithms","formula":"\\log xy = \\log x + \\log y","author":"John Napier","year":"1610","category":"algebra","description":"Logarithms convert multiplication into addition, revolutionizing computation.","stage":"live-demo","hook":"An earthquake at 7.0 vs 8.0 on the Richter scale — it's not 'a little bigger'. It's 10× more powerful.","hook_action":"Drag x and y to see how log turns multiplication into addition.","variables_data":[{"max":100,"min":1,"name":"x","step":1,"unit":null,"color":"primary","symbol":"x","default":20,"description":"First number to multiply"},{"max":100,"min":1,"name":"y","step":1,"unit":null,"color":"secondary","symbol":"y","default":5,"description":"Second number to multiply"}],"presets_data":[{"label":"10 × 10","values":{"x":10,"y":10}},{"label":"2 × 50","values":{"x":2,"y":50}},{"label":"100 × 100","values":{"x":100,"y":100}}],"lessons_data":[{"id":"drag-x","insight":"log(100) is only 2. Logarithms compress huge ranges into small numbers.","unlocked":["x"],"celebration":"subtle","instruction":"Drag x to change the first number. Watch the bars.","successType":"variable_changed","successTarget":"x"},{"id":"product","insight":"The product rule: log turns multiplication into addition. Before calculators, this is how people did arithmetic.","unlocked":["x","y"],"celebration":"subtle","instruction":"Change both. Verify log(x) + log(y) = log(x×y).","successType":"variable_changed","successTarget":"y"},{"id":"earthquake","insight":"Each +1 on Richter means 10× more powerful. Magnitude 8 isn't 'slightly bigger' than 7.","unlocked":["x","y"],"celebration":"big","instruction":"Set x=10, y=10. Then try x=100, y=100.","successType":"variable_changed","successTarget":"x"}],"glossary_data":[{"color":"#3b82f6","words":["bars","bar"],"tooltip":"Visual bars showing log values","highlightClass":"bars"},{"color":"#1e293b","words":["curve"],"tooltip":"The logarithm curve y = log(x)","highlightClass":"curve"},{"color":"#16a34a","words":["product rule"],"tooltip":"log(xy) = log(x) + log(y)","highlightClass":"verify"}]},{"id":3,"slug":"calculus","title":"Calculus","formula":"\\frac{df}{dt}=\\lim_{h\\to0}\\frac{f(t+h)-f(t)}{h}","author":"Newton","year":"1668","category":"calculus","description":"The derivative measures instantaneous rate of change.","stage":"live-demo","hook":"Your speedometer is broken. You only have the odometer. How do you figure out your speed?","hook_action":"Grab the blue dot and drag it along the curve to see speed as steepness.","variables_data":[{"max":9.5,"min":0.5,"name":"t","step":0.1,"unit":null,"color":"primary","symbol":"t","default":3,"description":"Point on the curve"},{"max":3,"min":0.05,"name":"h","step":0.05,"unit":null,"color":"secondary","symbol":"h","default":1.5,"description":"Distance between two points"}],"presets_data":[{"label":"Peak (t=2)","values":{"h":1.5,"t":2}},{"label":"Valley (t=7)","values":{"h":1.5,"t":7}},{"label":"Steep (t=9)","values":{"h":1.5,"t":9}}],"lessons_data":[{"id":"touch","insight":"The orange line tilts as you move. Its steepness IS the speed — that's a derivative.","unlocked":["t"],"celebration":"subtle","instruction":"Grab the blue dot and drag it along the curve.","successType":"variable_changed","successTarget":"t"},{"id":"secant","insight":"As h → 0, the secant becomes the tangent. That's what 'limit' means — just zooming in.","unlocked":["h"],"celebration":"subtle","instruction":"Drag h smaller. Watch the orange line approach the gray tangent.","successType":"variable_changed","successTarget":"h"},{"id":"explore","insight":"Slope = 0 at peaks and valleys. Setting derivative to zero finds maximums and minimums.","unlocked":["t","h"],"celebration":"medium","instruction":"Find where the slope is zero — the flat spots.","successType":"time_elapsed","successDuration":15000}],"glossary_data":[{"color":"#1e293b","words":["curve"],"tooltip":"The function f(x)","highlightClass":"main-curve"},{"color":"#3b82f6","words":["blue dot","dot"],"tooltip":"The point you're examining","highlightClass":"primary-dot"},{"color":"#f59e0b","words":["orange line","secant"],"tooltip":"Line through two points on the curve","highlightClass":"secant-line"},{"color":"#94a3b8","words":["tangent"],"tooltip":"Line touching the curve at exactly one point","highlightClass":"tangent-line"},{"color":"#ef4444","words":["slope","steepness","speed"],"tooltip":"How steep the curve is at this point","highlightClass":"slope-box"},{"color":"#1e293b","words":["peaks","valleys","flat spots"],"tooltip":"Where slope = 0","highlightClass":"main-curve"},{"color":"#ef4444","words":["derivative"],"tooltip":"The rate of change — slope at a point","highlightClass":"slope-box"}]},{"id":4,"slug":"law-of-gravity","title":"Law of Gravity","formula":"F=G\\frac{m_1m_2}{r^2}","author":"Newton","year":"1687","category":"physics","description":"Every mass attracts every other mass with a force proportional to their product and inversely proportional to distance squared.","stage":"live-demo","hook":"Astronauts don't escape gravity — they fall sideways. The force barely changes at space-station altitude.","hook_action":"Drag the masses to see how gravity changes.","variables_data":[{"max":10,"min":1,"name":"m1","step":0.5,"unit":"kg","color":"primary","symbol":"m₁","default":3,"description":"Mass of first object"},{"max":10,"min":1,"name":"m2","step":0.5,"unit":"kg","color":"secondary","symbol":"m₂","default":7,"description":"Mass of second object"},{"max":10,"min":1.5,"name":"r","step":0.1,"unit":"m","color":"tertiary","symbol":"r","default":5,"description":"Distance between centers"}],"presets_data":[{"label":"Two balls","values":{"r":5,"m1":3,"m2":7}},{"label":"Close up","values":{"r":2,"m1":8,"m2":8}},{"label":"Far apart","values":{"r":9,"m1":5,"m2":5}}],"lessons_data":[{"id":"touch","insight":"More mass = more gravitational pull. That's why Jupiter has such strong gravity.","unlocked":["m1"],"celebration":"subtle","instruction":"Drag m₁ in the formula to make the first mass heavier.","successType":"variable_changed","successTarget":"m1"},{"id":"distance","insight":"Halve the distance, quadruple the force. The r² makes gravity extremely strong up close.","unlocked":["r"],"celebration":"subtle","instruction":"Drag r downward. Make the objects closer.","successType":"variable_changed","successTarget":"r"},{"id":"break-it","insight":"Huge masses + tiny distance = enormous force. This is black-hole territory.","unlocked":["m1","m2","r"],"celebration":"big","instruction":"Maximize the force. Max masses, min distance.","successType":"value_reached","successValue":1.5,"successTarget":"r","successTolerance":0.2}],"glossary_data":[{"color":"#3b82f6","words":["mass","masses"],"tooltip":"The objects being attracted","highlightClass":"m1-group"},{"color":"#ef4444","words":["force","pull","gravity"],"tooltip":"Gravitational attraction between the masses","highlightClass":"force-box"},{"color":"#ef4444","words":["force arrow","arrow"],"tooltip":"Shows direction and strength of gravity","highlightClass":"arrow-r"},{"color":"#10b981","words":["distance"],"tooltip":"Gap between the centers of the two masses","highlightClass":"dist-line"}]},{"id":5,"slug":"wave-equation","title":"Wave Equation","formula":"\\frac{\\partial^2 u}{\\partial t^2}=c^2\\frac{\\partial^2 u}{\\partial x^2}","author":"J. d'Alembert","year":"1746","category":"physics","description":"Describes how waves propagate through space and time.","stage":"live-demo","hook":"Pluck a guitar string. Why a musical note instead of noise? Only certain wave shapes fit.","hook_action":"Adjust frequency and amplitude to see how waves behave.","variables_data":[{"max":5,"min":0.5,"name":"freq","step":0.1,"unit":"Hz","color":"primary","symbol":"f","default":1.5,"description":"Frequency — how fast the wave oscillates"},{"max":100,"min":20,"name":"amp","step":1,"unit":"px","color":"secondary","symbol":"A","default":60,"description":"Amplitude — how tall the wave is"},{"max":200,"min":50,"name":"wavelength","step":1,"unit":"px","color":"tertiary","symbol":"λ","default":120,"description":"Wavelength — distance between peaks"}],"presets_data":[{"label":"Low bass","values":{"amp":80,"freq":0.5,"wavelength":180}},{"label":"High pitch","values":{"amp":40,"freq":4,"wavelength":60}},{"label":"Tall wave","values":{"amp":100,"freq":1,"wavelength":150}}],"lessons_data":[{"id":"freq","insight":"Higher frequency = more waves per second = higher pitch in sound.","unlocked":["freq"],"celebration":"subtle","instruction":"Drag frequency higher. Watch the waves compress.","successType":"variable_changed","successTarget":"freq"},{"id":"amp","insight":"Amplitude is loudness in sound, brightness in light. The wave shape stays the same.","unlocked":["amp"],"celebration":"subtle","instruction":"Now change amplitude. The wave gets taller or shorter.","successType":"variable_changed","successTarget":"amp"},{"id":"super","insight":"When waves combine, they add up. This is how noise-canceling headphones work — by adding an opposite wave.","unlocked":["freq","amp","wavelength"],"celebration":"medium","instruction":"Watch the red superposition — two waves combining.","successType":"time_elapsed","successDuration":10000}],"glossary_data":[]},{"id":6,"slug":"the-square-root-of-minus-one","title":"The Square Root of Minus One","formula":"i^2=-1","author":"Euler","year":"1750","category":"complex_numbers","description":"The imaginary unit extends the real numbers into the complex plane.","stage":"live-demo","hook":"Your phone screen can rotate 90°. The software multiplies every coordinate by i.","hook_action":"Tap 'Multiply by i' and watch every point rotate exactly 90°.","variables_data":[{"max":2.5,"min":-2.5,"name":"a","step":0.1,"unit":null,"color":"primary","symbol":"a","default":1,"description":"Real part Re(z)"},{"max":2.5,"min":-2.5,"name":"b","step":0.1,"unit":null,"color":"secondary","symbol":"b","default":0.5,"description":"Imaginary part Im(z)"}],"presets_data":[{"label":"Unit (1+0i)","values":{"a":1,"b":0}},{"label":"Pure i (0+1i)","values":{"a":0,"b":1}},{"label":"45° (1+1i)","values":{"a":1,"b":1}}],"lessons_data":[{"id":"real","insight":"The real part moves horizontally, like a normal number line. Complex numbers add a second dimension.","unlocked":["a"],"celebration":"subtle","instruction":"Drag a to move the point left and right on the real axis.","successType":"variable_changed","successTarget":"a"},{"id":"imag","insight":"The imaginary axis is perpendicular to the real axis. Every point is a complex number a + bi.","unlocked":["b"],"celebration":"subtle","instruction":"Now drag b to move the point up and down.","successType":"variable_changed","successTarget":"b"},{"id":"rotate","insight":"Multiplying by i rotates 90°. Do it twice (i×i) = 180° = multiplying by -1. That's why i² = -1!","unlocked":["a","b"],"celebration":"big","instruction":"Set a=1, b=0, then use 'Multiply by i' button.","successType":"variable_changed","successTarget":"b"}],"glossary_data":[]},{"id":7,"slug":"eulers-formula-for-polyhedra","title":"Euler's Formula for Polyhedra","formula":"V-E+F=2","author":"Euler","year":"1751","category":"topology","description":"For any convex polyhedron, vertices minus edges plus faces always equals two.","stage":"live-demo","hook":"Count corners, edges, and faces of any 3D shape. Corners − edges + faces always equals 2.","hook_action":"Tap different shapes and try to break the rule.","variables_data":[{"max":20,"min":4,"name":"V","step":1,"unit":null,"color":"primary","symbol":"V","default":8,"constant":true,"description":"Vertices (corners)"},{"max":30,"min":6,"name":"E","step":1,"unit":null,"color":"secondary","symbol":"E","default":12,"constant":true,"description":"Edges"},{"max":20,"min":4,"name":"F","step":1,"unit":null,"color":"tertiary","symbol":"F","default":6,"constant":true,"description":"Faces"}],"presets_data":[{"label":"Tetrahedron","values":{"E":6,"F":4,"V":4}},{"label":"Cube","values":{"E":12,"F":6,"V":8}},{"label":"Icosahedron","values":{"E":30,"F":20,"V":12}}],"lessons_data":[{"id":"cube","insight":"8 - 12 + 6 = 2. It works!","unlocked":[],"celebration":"subtle","instruction":"Look at the cube: 8 corners, 12 edges, 6 faces. Does 8-12+6 = 2?","successType":"time_elapsed","successDuration":8000},{"id":"try","insight":"V - E + F = 2 for every convex polyhedron. Euler proved this in 1751.","unlocked":[],"celebration":"subtle","instruction":"Click other shapes. Count V, E, F for each.","successType":"time_elapsed","successDuration":12000},{"id":"icosa","insight":"12 - 30 + 20 = 2. Still works! This is a topological invariant — it doesn't change no matter how you stretch the shape.","unlocked":[],"celebration":"big","instruction":"Try the icosahedron: 12 vertices, 30 edges, 20 faces.","successType":"time_elapsed","successDuration":8000}],"glossary_data":[]},{"id":8,"slug":"normal-distribution","title":"Normal Distribution","formula":"\\Phi(x)=\\frac{1}{\\sqrt{2\\pi\\sigma}}e^{-\\frac{(x-\\mu)^2}{2\\sigma^2}}","author":"C. F. Gauss","year":"1810","category":"statistics","description":"The bell curve that describes how data clusters around the mean.","stage":"live-demo","hook":"In a class of 1000 students, how many score above 90%? This curve answers that.","hook_action":"Drag the center and width of the curve to see how scores spread.","variables_data":[{"max":3,"min":-3,"name":"mu","step":0.1,"unit":null,"color":"primary","symbol":"μ","default":0,"description":"Mean — center of the bell curve"},{"max":3,"min":0.3,"name":"sigma","step":0.1,"unit":null,"color":"secondary","symbol":"σ","default":1,"description":"Standard deviation — width of the spread"}],"presets_data":[{"label":"Standard","values":{"mu":0,"sigma":1}},{"label":"Wide","values":{"mu":0,"sigma":2.5}},{"label":"Narrow","values":{"mu":0,"sigma":0.5}}],"lessons_data":[{"id":"mu","insight":"μ is the average. Shifting it moves the entire bell curve.","unlocked":["mu"],"celebration":"subtle","instruction":"Drag μ to shift the curve left and right.","successType":"variable_changed","successTarget":"mu"},{"id":"sigma","insight":"Bigger σ = more spread. Smaller σ = everyone clustered around the mean.","unlocked":["sigma"],"celebration":"subtle","instruction":"Drag σ to make the curve wider or narrower.","successType":"variable_changed","successTarget":"sigma"},{"id":"rule","insight":"68% within 1σ, 95% within 2σ, 99.7% within 3σ. Works for heights, test scores, manufacturing — everything.","unlocked":["mu","sigma"],"celebration":"big","instruction":"Set σ=1. The shaded region is 68% of all data.","successType":"value_reached","successValue":1,"successTarget":"sigma","successTolerance":0.2}],"glossary_data":[]},{"id":9,"slug":"fourier-transform","title":"Fourier Transform","formula":"f(\\omega)=\\int_{-\\infty}^{\\infty}f(x)e^{-2\\pi i x\\omega}\\,dx","author":"J. Fourier","year":"1822","category":"signal_processing","description":"Decomposes any signal into its constituent frequencies.","stage":"live-demo","hook":"Every sound your phone plays is just a recipe of pure tones mixed together.","hook_action":"Toggle harmonics on/off to build complex sounds from simple waves.","variables_data":[{"max":1,"min":0,"name":"a1","step":0.05,"unit":null,"color":"primary","symbol":"A₁","default":0.8,"description":"Fundamental amplitude"},{"max":1,"min":0,"name":"a2","step":0.05,"unit":null,"color":"secondary","symbol":"A₂","default":0.4,"description":"2nd harmonic amplitude"},{"max":1,"min":0,"name":"a3","step":0.05,"unit":null,"color":"tertiary","symbol":"A₃","default":0.25,"description":"3rd harmonic amplitude"},{"max":1,"min":0,"name":"a4","step":0.05,"unit":null,"color":"quaternary","symbol":"A₄","default":0.15,"description":"4th harmonic amplitude"}],"presets_data":[{"label":"Pure tone","values":{"a1":1,"a2":0,"a3":0,"a4":0}},{"label":"Square-ish","values":{"a1":1,"a2":0,"a3":0.33,"a4":0}},{"label":"Rich","values":{"a1":0.8,"a2":0.5,"a3":0.3,"a4":0.2}}],"lessons_data":[{"id":"fundamental","insight":"A pure sine wave is the simplest possible sound. Every complex sound is built from these.","unlocked":["a1","a2","a3","a4"],"celebration":"subtle","instruction":"Set all harmonics to 0 except A₁. That's a pure sine wave.","successType":"variable_changed","successTarget":"a2"},{"id":"add","insight":"Adding harmonics creates timbre — why a piano and violin sound different playing the same note.","unlocked":["a1","a2","a3","a4"],"celebration":"subtle","instruction":"Now add A₂ and A₃. Watch the shape change.","successType":"variable_changed","successTarget":"a3"},{"id":"square","insight":"A perfect square wave needs infinite harmonics. This is how synthesizers and MP3 compression work.","unlocked":["a1","a2","a3","a4"],"celebration":"big","instruction":"Try the 'Square-ish' preset. Odd harmonics make square waves.","successType":"time_elapsed","successDuration":10000}],"glossary_data":[]},{"id":10,"slug":"navier-stokes-equation","title":"Navier-Stokes Equation","formula":"\\rho\\left(\\frac{\\partial \\mathbf{v}}{\\partial t}+\\mathbf{v}\\cdot\\nabla\\mathbf{v}\\right)=-\\nabla p+\\nabla\\cdot\\mathbf{T}+\\mathbf{f}","author":"Navier, Stokes","year":"1845","category":"fluid_dynamics","description":"Governs the motion of fluid substances like water and air.","stage":"live-demo","hook":"Why does smoke curl? Why do planes fly? This equation governs every fluid — and we still can't fully solve it.","hook_action":"Adjust viscosity and flow speed to watch fluid behavior change.","variables_data":[{"max":5,"min":0.1,"name":"viscosity","step":0.1,"unit":null,"color":"primary","symbol":"ν","default":1,"description":"Viscosity — how thick/sticky the fluid is"},{"max":5,"min":0.5,"name":"flowSpeed","step":0.1,"unit":null,"color":"secondary","symbol":"v","default":2,"description":"Flow speed"}],"presets_data":[{"label":"Laminar","values":{"flowSpeed":1,"viscosity":3}},{"label":"Turbulent","values":{"flowSpeed":4,"viscosity":0.5}},{"label":"Honey","values":{"flowSpeed":1,"viscosity":5}}],"lessons_data":[{"id":"watch","insight":"The particles follow streamlines — paths that the fluid naturally takes.","unlocked":["flowSpeed"],"celebration":"subtle","instruction":"Watch the particles flow around the obstacle.","successType":"time_elapsed","successDuration":8000},{"id":"viscosity","insight":"High viscosity = honey. Low viscosity = water. The fluid resists deformation more.","unlocked":["viscosity"],"celebration":"subtle","instruction":"Increase viscosity. The flow becomes smoother.","successType":"variable_changed","successTarget":"viscosity"},{"id":"turbulence","insight":"This transition from smooth to chaotic flow is why Navier-Stokes is a million-dollar unsolved problem.","unlocked":["viscosity","flowSpeed"],"celebration":"big","instruction":"Try 'Turbulent' preset. Low viscosity + high speed = chaos.","successType":"variable_changed","successTarget":"flowSpeed"}],"glossary_data":[]},{"id":11,"slug":"maxwells-equations","title":"Maxwell's Equations","formula":"\\nabla\\cdot\\mathbf{E}=0,\\;\\nabla\\cdot\\mathbf{H}=0,\\;\\nabla\\times\\mathbf{E}=-\\frac{1}{c}\\frac{\\partial \\mathbf{H}}{\\partial t},\\;\\nabla\\times\\mathbf{H}=\\frac{1}{c}\\frac{\\partial \\mathbf{E}}{\\partial t}","author":"J. C. Maxwell","year":"1865","category":"electromagnetism","description":"The unified theory of electricity, magnetism, and light.","stage":"live-demo","hook":"How does WiFi get through walls? Electric fields shaking back and forth launch waves at the speed of light.","hook_action":"Place charges and watch field lines appear. Switch to wave mode.","variables_data":[{"max":300,"min":50,"name":"wavelength","step":5,"unit":"px","color":"primary","symbol":"λ","default":150,"description":"Wavelength of the electromagnetic wave"}],"presets_data":[{"label":"Short (X-ray)","values":{"wavelength":60}},{"label":"Visible","values":{"wavelength":150}},{"label":"Long (radio)","values":{"wavelength":280}}],"lessons_data":[{"id":"field","insight":"Electric field lines show the force direction. They flow from positive to negative charges.","unlocked":["wavelength"],"celebration":"subtle","instruction":"Click to place charges. Watch field lines appear.","successType":"time_elapsed","successDuration":10000},{"id":"wave","insight":"E and B fields create each other — a changing E makes B, a changing B makes E. This self-sustaining loop IS light.","unlocked":["wavelength"],"celebration":"subtle","instruction":"Switch to Wave mode. See E and B fields oscillating.","successType":"variable_changed","successTarget":"wavelength"},{"id":"lambda","insight":"All electromagnetic radiation — radio, microwave, light, X-rays, gamma — is the same thing, just different wavelengths.","unlocked":["wavelength"],"celebration":"big","instruction":"Change wavelength. Shorter = higher energy (X-rays). Longer = radio.","successType":"variable_changed","successTarget":"wavelength"}],"glossary_data":[]},{"id":12,"slug":"second-law-of-thermodynamics","title":"Second Law of Thermodynamics","formula":"dS\\ge0","author":"L. Boltzmann","year":"1874","category":"thermodynamics","description":"Entropy of an isolated system never decreases.","stage":"live-demo","hook":"Why can't you unscramble an egg? The odds are 1 in a number with more digits than atoms in the universe.","hook_action":"Drag temperature and watch order dissolve into chaos.","variables_data":[{"max":100,"min":0,"name":"temperature","step":1,"unit":null,"color":"primary","symbol":"T","default":30,"description":"Temperature — how much energy the particles have"}],"presets_data":[{"label":"Frozen","values":{"temperature":0}},{"label":"Room temp","values":{"temperature":40}},{"label":"Max entropy","values":{"temperature":100}}],"lessons_data":[{"id":"order","insight":"At low temperature, particles stay organized. Low entropy = high order.","unlocked":["temperature"],"celebration":"subtle","instruction":"Set temperature to 0. Look at the ordered particles on the left.","successType":"time_elapsed","successDuration":6000},{"id":"heat","insight":"More energy = particles scatter randomly. Entropy (disorder) increases.","unlocked":["temperature"],"celebration":"subtle","instruction":"Drag temperature up. Watch the right panel get chaotic.","successType":"variable_changed","successTarget":"temperature"},{"id":"arrow","insight":"Entropy always increases. This gives time its direction — the 'arrow of time'. You can't unscramble an egg.","unlocked":["temperature"],"celebration":"big","instruction":"Set to maximum. This always happens — never the reverse.","successType":"value_reached","successValue":100,"successTarget":"temperature","successTolerance":5}],"glossary_data":[]},{"id":13,"slug":"relativity","title":"Relativity","formula":"E=mc^2","author":"Einstein","year":"1905","category":"physics","description":"Mass and energy are equivalent, connected by the speed of light squared.","stage":"live-demo","hook":"GPS satellites need Einstein's corrections. Without them, your location drifts 10 km per day.","hook_action":"Drag speed to see time slow down and objects shrink.","variables_data":[{"max":0.99,"min":0,"name":"v","step":0.01,"unit":"c","color":"primary","symbol":"v","default":0.3,"description":"Velocity as fraction of light speed"}],"presets_data":[{"label":"Walking","values":{"v":0.01}},{"label":"Airplane","values":{"v":0.1}},{"label":"90% light","values":{"v":0.9}}],"lessons_data":[{"id":"slow","insight":"At low speeds, γ ≈ 1 — time and space are normal. Relativity only matters at extreme speeds.","unlocked":["v"],"celebration":"subtle","instruction":"Drag v up slowly. Watch the Lorentz factor γ.","successType":"variable_changed","successTarget":"v"},{"id":"fast","insight":"At 90% light speed, time runs 2.3× slower. A 10-year trip feels like 4.4 years. The twin paradox is real.","unlocked":["v"],"celebration":"subtle","instruction":"Push v to 0.9c. Watch time dilation and length contraction.","successType":"value_reached","successValue":0.9,"successTarget":"v","successTolerance":0.05},{"id":"limit","insight":"γ goes to infinity as v → c. You'd need infinite energy to reach light speed. Nothing with mass can get there.","unlocked":["v"],"celebration":"big","instruction":"Try to reach v = 1.0. You can't.","successType":"value_reached","successValue":0.99,"successTarget":"v","successTolerance":0.01}],"glossary_data":[]},{"id":14,"slug":"schrodingers-equation","title":"Schrodinger's Equation","formula":"i\\hbar\\frac{\\partial}{\\partial t}\\Psi=H\\Psi","author":"E. Schrodinger","year":"1927","category":"quantum_mechanics","description":"Describes how quantum states evolve over time.","stage":"live-demo","hook":"An electron isn't a ball — it's a probability cloud. Confine it more, and it gets MORE energetic.","hook_action":"Change quantum number n and box width L to see the wave function change.","variables_data":[{"max":5,"min":1,"name":"n","step":1,"unit":null,"color":"primary","symbol":"n","default":1,"description":"Quantum number (energy level)"},{"max":2,"min":0.5,"name":"L","step":0.1,"unit":null,"color":"secondary","symbol":"L","default":1,"description":"Box width"}],"presets_data":[{"label":"Ground state","values":{"L":1,"n":1}},{"label":"Excited","values":{"L":1,"n":3}},{"label":"Tight box","values":{"L":0.5,"n":1}}],"lessons_data":[{"id":"ground","insight":"A quantum particle doesn't have a definite position. The wave function gives probabilities.","unlocked":["n"],"celebration":"subtle","instruction":"This is n=1, the ground state. The blue wave shows where the particle is likely to be.","successType":"time_elapsed","successDuration":8000},{"id":"excite","insight":"Higher n = more nodes = higher energy. Energy goes as n².","unlocked":["n"],"celebration":"subtle","instruction":"Increase n. Watch the wave function develop more peaks.","successType":"variable_changed","successTarget":"n"},{"id":"squeeze","insight":"Heisenberg Uncertainty: confine the particle more → energy increases. This is why atoms don't collapse.","unlocked":["n","L"],"celebration":"big","instruction":"Shrink the box (L). Watch energy levels spread apart.","successType":"variable_changed","successTarget":"L"}],"glossary_data":[]},{"id":15,"slug":"information-theory","title":"Information Theory","formula":"H=-\\sum p(x)\\log p(x)","author":"C. Shannon","year":"1949","category":"information","description":"Shannon entropy measures the uncertainty in a random variable.","stage":"live-demo","hook":"Playing 20 Questions? If the answer is almost certainly 'yes', the question was useless.","hook_action":"Drag probability to see how uncertainty changes.","variables_data":[{"max":0.99,"min":0.01,"name":"p","step":0.01,"unit":null,"color":"primary","symbol":"p","default":0.5,"description":"Probability of outcome"}],"presets_data":[{"label":"Fair coin","values":{"p":0.5}},{"label":"Biased","values":{"p":0.9}},{"label":"Certain","values":{"p":0.99}}],"lessons_data":[{"id":"max","insight":"H = 1 bit at p = 0.5. A fair coin carries the most information — you genuinely don't know what's coming.","unlocked":["p"],"celebration":"subtle","instruction":"Set p = 0.5. This is maximum uncertainty.","successType":"value_reached","successValue":0.5,"successTarget":"p","successTolerance":0.05},{"id":"certain","insight":"Near-certain outcomes carry almost no information. 'Will the sun rise?' tells you nothing — you already knew.","unlocked":["p"],"celebration":"subtle","instruction":"Push p toward 0.99. Watch entropy drop to nearly zero.","successType":"value_reached","successValue":0.99,"successTarget":"p","successTolerance":0.02},{"id":"explore","insight":"H(p) = H(1-p). Knowing something is 90% likely or 10% likely gives the same amount of information. Entropy measures surprise.","unlocked":["p"],"celebration":"big","instruction":"Find the symmetric shape of the entropy curve.","successType":"variable_changed","successTarget":"p"}],"glossary_data":[]},{"id":16,"slug":"chaos-theory","title":"Chaos Theory","formula":"x_{t+1}=r x_t(1-x_t)","author":"R. May","year":"1975","category":"dynamical_systems","description":"The logistic map shows how simple rules create complex, unpredictable behavior.","stage":"live-demo","hook":"Weather forecasts fail past 10 days. The tiniest change leads to completely different outcomes.","hook_action":"Drag r and watch order dissolve into chaos.","variables_data":[{"max":4,"min":2.5,"name":"r","step":0.001,"unit":null,"color":"primary","symbol":"r","default":3.2,"description":"Growth parameter — controls stability vs chaos"},{"max":0.9,"min":0.1,"name":"x0","step":0.01,"unit":null,"color":"secondary","symbol":"x₀","default":0.5,"description":"Initial population value"}],"presets_data":[{"label":"Stable","values":{"r":2.8,"x0":0.5}},{"label":"Period-2","values":{"r":3.2,"x0":0.5}},{"label":"Chaos","values":{"r":3.8,"x0":0.5}}],"lessons_data":[{"id":"stable","insight":"At low r, the system finds equilibrium. Like a stable ecosystem.","unlocked":["r"],"celebration":"subtle","instruction":"Set r ≈ 2.8. The time series settles to one value.","successType":"value_reached","successValue":2.8,"successTarget":"r","successTolerance":0.15},{"id":"oscillate","insight":"Period-2 cycle: the population overshoots, then undershoots. Predictable but not fixed.","unlocked":["r"],"celebration":"subtle","instruction":"Set r ≈ 3.2. Now it oscillates between two values.","successType":"value_reached","successValue":3.2,"successTarget":"r","successTolerance":0.15},{"id":"chaos","insight":"Looks random but it's deterministic. This is chaos: predictable rules, unpredictable behavior.","unlocked":["r"],"celebration":"medium","instruction":"Push r to 3.8. Welcome to chaos.","successType":"value_reached","successValue":3.8,"successTarget":"r","successTolerance":0.1},{"id":"butterfly","insight":"The butterfly effect. A butterfly in Brazil can change Texas weather. That's why forecasts fail past 10 days.","unlocked":["r","x0"],"celebration":"big","instruction":"Change x₀ by just 0.01. Watch trajectories diverge.","successType":"variable_changed","successTarget":"x0"}],"glossary_data":[]},{"id":17,"slug":"black-scholes-equation","title":"Black-Scholes Equation","formula":"\\frac{1}{2}\\sigma^2S^2\\frac{\\partial^2V}{\\partial S^2}+rS\\frac{\\partial V}{\\partial S}+\\frac{\\partial V}{\\partial t}-rV=0","author":"Black, Scholes","year":"1973","category":"finance","description":"Determines the fair price of financial options.","stage":"live-demo","hook":"You can buy the RIGHT to purchase a stock at today's price, but in the future. How much is that right worth?","hook_action":"Drag volatility and time to see how option prices change.","variables_data":[{"max":150,"min":50,"name":"K","step":1,"unit":"$","color":"primary","symbol":"K","default":100,"description":"Strike price — the agreed buy/sell price"},{"max":1,"min":0.05,"name":"sigma","step":0.01,"unit":null,"color":"secondary","symbol":"σ","default":0.3,"description":"Volatility — how much the stock price swings"},{"max":2,"min":0.01,"name":"T","step":0.01,"unit":"yr","color":"tertiary","symbol":"T","default":0.5,"description":"Time to expiry"},{"max":0.15,"min":0.01,"name":"r","step":0.005,"unit":null,"color":"quaternary","symbol":"r","default":0.05,"description":"Risk-free interest rate"}],"presets_data":[{"label":"Low vol","values":{"K":100,"T":0.5,"r":0.05,"sigma":0.1}},{"label":"High vol","values":{"K":100,"T":0.5,"r":0.05,"sigma":0.8}},{"label":"Near expiry","values":{"K":100,"T":0.02,"r":0.05,"sigma":0.3}}],"lessons_data":[{"id":"strike","insight":"Call = right to BUY. Higher strike means you pay more to exercise, so the right is worth less.","unlocked":["K"],"celebration":"subtle","instruction":"Drag K. Higher strike = cheaper call option (you'd pay more to exercise).","successType":"variable_changed","successTarget":"K"},{"id":"vol","insight":"More volatility = more valuable options. If the stock could go way up, you profit. If it goes down, you just don't exercise.","unlocked":["sigma"],"celebration":"subtle","instruction":"Drag volatility up. Both call and put get more expensive.","successType":"variable_changed","successTarget":"sigma"},{"id":"time","insight":"As expiry approaches, time value evaporates. The smooth curve collapses into a sharp corner. This is theta decay.","unlocked":["K","sigma","T","r"],"celebration":"big","instruction":"Drag T toward zero. Watch the curve sharpen.","successType":"variable_changed","successTarget":"T"}],"glossary_data":[]},{"id":18,"slug":"big-o-notation","title":"Big-O Notation","formula":"f(n)=O(g(n))","author":"Bachmann, Landau","year":"1894","category":"computer_science","description":"Big-O describes how an algorithm's cost grows as the input gets large.","stage":"live-demo","hook":"Two programs sort your photos. One is fine for 100 photos and chokes on 100,000. Same task, wildly different scaling. Big-O is how we predict that before it happens.","hook_action":"Drag the input size n and watch how different growth rates pull apart.","variables_data":[{"max":100,"min":1,"name":"n","step":1,"unit":null,"color":"primary","symbol":"n","default":8,"constant":false,"description":"Input size"}],"presets_data":[{"label":"Tiny (n=4)","values":{"n":4}},{"label":"Medium (n=32)","values":{"n":32}},{"label":"Large (n=100)","values":{"n":100}}],"lessons_data":[{"id":"touch-n","hint":"Find n and drag it to the right.","insight":"At small n almost any algorithm feels instant. The differences only show up as n grows.","unlocked":["n"],"celebration":"subtle","instruction":"Drag n, the input size, upward.","successType":"variable_changed","successTarget":"n"},{"id":"grow","hint":"Drag n above 50.","insight":"O(n²) work grows with the square of the input — doubling n quadruples the work. That is why nested loops get dangerous.","unlocked":["n"],"celebration":"medium","instruction":"Push n past 50.","successType":"value_reached","successValue":50,"successTarget":"n","successTolerance":10},{"id":"scale","hint":"Drag n to 100.","insight":"O(log n) barely moves while O(n²) explodes. Big-O ignores constants and keeps only the dominant term — because at scale, that is all that matters.","unlocked":["n"],"celebration":"big","instruction":"Take n all the way to its maximum.","successType":"value_reached","successValue":100,"successTarget":"n","successTolerance":5}],"glossary_data":[{"color":"#3b82f6","words":["O"],"tooltip":"Order of growth — the upper bound on how cost scales","highlightClass":"big-o"}]},{"id":19,"slug":"binary-search","title":"Binary Search","formula":"T(n)=O(\\log n)","author":"John Mauchly","year":"1946","category":"computer_science","description":"Halving the search space each step finds an item in a sorted list astonishingly fast.","stage":"live-demo","hook":"Guess my number between 1 and 1000. Guess randomly and you could take 1000 tries. Always guess the middle and you will win in at most 10. That is binary search.","hook_action":"Drag the array size n and watch how few steps log₂(n) really is.","variables_data":[{"max":1024,"min":2,"name":"n","step":1,"unit":null,"color":"primary","symbol":"n","default":64,"constant":false,"description":"Sorted array size"}],"presets_data":[{"label":"16 items","values":{"n":16}},{"label":"256 items","values":{"n":256}},{"label":"1024 items","values":{"n":1024}}],"lessons_data":[{"id":"touch-n","hint":"Drag n to the right.","insight":"Each comparison throws away half of what is left. The worst case is the number of halvings: log₂(n).","unlocked":["n"],"celebration":"subtle","instruction":"Drag n, the size of the sorted array.","successType":"variable_changed","successTarget":"n"},{"id":"double","hint":"Drag n to its maximum.","insight":"1024 items need only 10 comparisons. Double the data to 2048 and you add just one step. Logarithmic growth is the next best thing to free.","unlocked":["n"],"celebration":"big","instruction":"Set n to 1024.","successType":"value_reached","successValue":1024,"successTarget":"n","successTolerance":20},{"id":"small","hint":"Drag n down to about 16.","insight":"For tiny inputs a plain linear scan is just as fast and simpler. Binary search earns its keep on large, sorted data.","unlocked":["n"],"celebration":"subtle","instruction":"Now drag n back down near 16.","successType":"value_reached","successValue":16,"successTarget":"n","successTolerance":8}],"glossary_data":[{"color":"#3b82f6","words":["sorted"],"tooltip":"Binary search only works on pre-sorted data","highlightClass":"g19-0"},{"color":"#f59e0b","words":["half","halves"],"tooltip":"Each comparison throws away half of what's left","highlightClass":"g19-1"},{"color":"#10b981","words":["logarithmic","log"],"tooltip":"Doubling the list adds just one more step","highlightClass":"g19-2"}]},{"id":20,"slug":"master-theorem","title":"Master Theorem","formula":"T(n)=aT(n/b)+f(n)","author":"Bentley, Haken, Saxe","year":"1980","category":"computer_science","description":"A recipe for the running time of divide-and-conquer algorithms.","stage":"live-demo","hook":"Merge sort splits a list in two, sorts each half, then merges. How fast is that? The Master Theorem reads the answer straight off the recursion.","hook_action":"Drag a (how many subproblems) and b (how much smaller each one is).","variables_data":[{"max":8,"min":1,"name":"a","step":1,"unit":null,"color":"primary","symbol":"a","default":2,"constant":false,"description":"Subproblems per split"},{"max":8,"min":2,"name":"b","step":1,"unit":null,"color":"secondary","symbol":"b","default":2,"constant":false,"description":"Shrink factor per split"}],"presets_data":[{"label":"Merge sort","values":{"a":2,"b":2}},{"label":"Binary search","values":{"a":1,"b":2}},{"label":"Strassen","values":{"a":7,"b":2}}],"lessons_data":[{"id":"touch-a","hint":"Drag a to the right.","insight":"More subproblems means more work flows down the recursion tree. a and b together decide who wins: the splitting or the combining.","unlocked":["a","b"],"celebration":"subtle","instruction":"Drag a — the number of subproblems each split creates.","successType":"variable_changed","successTarget":"a"},{"id":"merge","hint":"Use the Merge sort preset or set a=2, b=2.","insight":"With a = b the work is balanced at every level, giving the classic O(n log n).","unlocked":["a","b"],"celebration":"medium","instruction":"Set a = 2 and b = 2 (merge sort).","successType":"value_reached","successValue":2,"successTarget":"a","successTolerance":0.5},{"id":"strassen","hint":"Drag a to 7.","insight":"Strassen multiplies matrices with 7 subproblems instead of 8, dropping the exponent below the naive O(n³). Tiny changes in a reshape the whole running time.","unlocked":["a","b"],"celebration":"big","instruction":"Push a up to 7 (Strassen's matrix trick).","successType":"value_reached","successValue":7,"successTarget":"a","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["subproblems","subproblem"],"tooltip":"a — how many subproblems each split creates","highlightClass":"g20-0"},{"color":"#f59e0b","words":["divides","shrinks"],"tooltip":"b — the factor each subproblem shrinks by","highlightClass":"g20-1"},{"color":"#10b981","words":["recurrence","recursion"],"tooltip":"Cost of a problem written in terms of its smaller copies","highlightClass":"g20-2"}]},{"id":21,"slug":"bayes-theorem","title":"Bayes' Theorem","formula":"P(A|B)=\\frac{P(B|A)P(A)}{P(B)}","author":"Thomas Bayes","year":"1763","category":"computer_science","description":"How to update a belief when new evidence arrives.","stage":"live-demo","hook":"A test for a rare disease is 99% accurate and you test positive. Are you doomed? Probably not — and Bayes' theorem shows why the base rate dominates.","hook_action":"Drag the prior, the test sensitivity, and the false-positive rate.","variables_data":[{"max":0.5,"min":0.001,"name":"prior","step":0.001,"unit":null,"color":"primary","symbol":"P(A)","default":0.01,"constant":false,"description":"Prior — how common the condition is"},{"max":1,"min":0.5,"name":"sens","step":0.01,"unit":null,"color":"secondary","symbol":"P(B|A)","default":0.99,"constant":false,"description":"Sensitivity — true positive rate"},{"max":0.5,"min":0.001,"name":"fpr","step":0.001,"unit":null,"color":"tertiary","symbol":"P(B|¬A)","default":0.05,"constant":false,"description":"False-positive rate"}],"presets_data":[{"label":"Rare disease","values":{"fpr":0.05,"sens":0.99,"prior":0.01}},{"label":"Common condition","values":{"fpr":0.05,"sens":0.99,"prior":0.3}},{"label":"Near-perfect test","values":{"fpr":0.001,"sens":0.99,"prior":0.01}}],"lessons_data":[{"id":"touch-prior","hint":"Drag P(A) to the right.","insight":"The prior is how common the condition is before any test. When it is tiny, even a positive result usually means a false alarm.","unlocked":["prior","sens","fpr"],"celebration":"subtle","instruction":"Drag the prior P(A) upward.","successType":"variable_changed","successTarget":"prior"},{"id":"raise-prior","hint":"Drag P(A) to roughly 0.3.","insight":"As the condition becomes common, a positive test becomes much more trustworthy. Evidence is only as strong as the base rate it updates.","unlocked":["prior","sens","fpr"],"celebration":"medium","instruction":"Push the prior up to about 0.3.","successType":"value_reached","successValue":0.3,"successTarget":"prior","successTolerance":0.05},{"id":"lower-fpr","hint":"Drag P(B|¬A) toward 0.","insight":"Cutting false positives is what makes a test convincing for rare conditions. This is the base-rate fallacy that fools doctors, juries, and spam filters alike.","unlocked":["prior","sens","fpr"],"celebration":"big","instruction":"Now drag the false-positive rate down toward 0.","successType":"value_reached","successValue":0.001,"successTarget":"fpr","successTolerance":0.01}],"glossary_data":[{"color":"#3b82f6","words":["prior"],"tooltip":"Belief before seeing the evidence","highlightClass":"prior"}]},{"id":22,"slug":"gradient-descent","title":"Gradient Descent","formula":"\\theta:=\\theta-\\alpha\\nabla J(\\theta)","author":"Augustin-Louis Cauchy","year":"1847","category":"computer_science","description":"Walk downhill on the error surface to train a model.","stage":"live-demo","hook":"Training a neural network is just rolling a ball downhill toward the lowest error. Step too small and it crawls; step too big and it bounces out of the valley.","hook_action":"Drag the learning rate α and the starting point θ.","variables_data":[{"max":1.5,"min":0.001,"name":"alpha","step":0.001,"unit":null,"color":"primary","symbol":"α","default":0.1,"constant":false,"description":"Learning rate — step size"},{"max":5,"min":-5,"name":"theta","step":0.1,"unit":null,"color":"secondary","symbol":"θ","default":4,"constant":false,"description":"Starting parameter"}],"presets_data":[{"label":"Tiny steps","values":{"alpha":0.01,"theta":4}},{"label":"Good step","values":{"alpha":0.3,"theta":4}},{"label":"Too big","values":{"alpha":1.2,"theta":4}}],"lessons_data":[{"id":"touch-alpha","hint":"Drag α to the right.","insight":"α controls how far you move against the gradient each step. It is the single most important knob in training.","unlocked":["alpha","theta"],"celebration":"subtle","instruction":"Drag the learning rate α.","successType":"variable_changed","successTarget":"alpha"},{"id":"good","hint":"Drag α to roughly 0.3.","insight":"A well-chosen rate slides smoothly to the minimum in a few steps. This is the sweet spot every optimizer hunts for.","unlocked":["alpha","theta"],"celebration":"medium","instruction":"Set α to about 0.3.","successType":"value_reached","successValue":0.3,"successTarget":"alpha","successTolerance":0.05},{"id":"diverge","hint":"Drag α past 1.0.","insight":"Too large a step overshoots the valley and the error grows instead of shrinks — the model diverges. Picking α is a balance between speed and stability.","unlocked":["alpha","theta"],"celebration":"big","instruction":"Now push α above 1.0.","successType":"value_reached","successValue":1.2,"successTarget":"alpha","successTolerance":0.2}],"glossary_data":[{"color":"#3b82f6","words":["learning rate","rate"],"tooltip":"α — how far you step against the gradient","highlightClass":"g22-0"},{"color":"#f59e0b","words":["gradient"],"tooltip":"Slope of the error surface; it points uphill","highlightClass":"g22-1"},{"color":"#10b981","words":["minimum"],"tooltip":"The lowest-error point training is hunting for","highlightClass":"g22-2"}]},{"id":23,"slug":"softmax","title":"Softmax","formula":"\\sigma(z)_i=\\frac{e^{z_i}}{\\sum_j e^{z_j}}","author":"John S. Bridle","year":"1989","category":"computer_science","description":"Turns a vector of scores into a probability distribution.","stage":"live-demo","hook":"A classifier outputs raw scores: cat 2.0, dog 1.0, bird 0.0. Softmax turns those into clean probabilities that sum to 100% — the language models speak.","hook_action":"Drag the three logits and watch one win the probability mass.","variables_data":[{"max":5,"min":-5,"name":"z1","step":0.1,"unit":null,"color":"primary","symbol":"z₁","default":2,"constant":false,"description":"Logit for class 1"},{"max":5,"min":-5,"name":"z2","step":0.1,"unit":null,"color":"secondary","symbol":"z₂","default":1,"constant":false,"description":"Logit for class 2"},{"max":5,"min":-5,"name":"z3","step":0.1,"unit":null,"color":"tertiary","symbol":"z₃","default":0,"constant":false,"description":"Logit for class 3"}],"presets_data":[{"label":"Uniform","values":{"z1":0,"z2":0,"z3":0}},{"label":"Slight lead","values":{"z1":2,"z2":1,"z3":0}},{"label":"Confident","values":{"z1":5,"z2":0,"z3":0}}],"lessons_data":[{"id":"touch-z1","hint":"Drag z₁ upward.","insight":"Softmax exponentiates each score, so even a small lead in z₁ grabs a big share of the probability.","unlocked":["z1","z2","z3"],"celebration":"subtle","instruction":"Drag z₁, the score for the first class.","successType":"variable_changed","successTarget":"z1"},{"id":"equal","hint":"Use the Uniform preset, or set z₁=z₂=z₃.","insight":"Equal scores give equal probabilities — here, 33% each. With no information, softmax spreads belief evenly.","unlocked":["z1","z2","z3"],"celebration":"medium","instruction":"Set all three logits equal (try the Uniform preset).","successType":"value_reached","successValue":0,"successTarget":"z1","successTolerance":0.3},{"id":"dominate","hint":"Drag z₁ to 5.","insight":"A large gap makes softmax nearly one-hot: class 1 takes almost all the probability. Temperature scaling tunes exactly how sharp this gets.","unlocked":["z1","z2","z3"],"celebration":"big","instruction":"Push z₁ up to 5 while the others stay low.","successType":"value_reached","successValue":5,"successTarget":"z1","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["logits","logit","scores"],"tooltip":"Raw, unnormalised class scores","highlightClass":"g23-0"},{"color":"#f59e0b","words":["probabilities","probability"],"tooltip":"Softmax turns scores into probabilities summing to 1","highlightClass":"g23-1"},{"color":"#10b981","words":["exponential","exponentiating"],"tooltip":"Exponentiating makes the largest score dominate","highlightClass":"g23-2"}]},{"id":24,"slug":"cross-entropy","title":"Cross Entropy","formula":"H(p,q)=-\\sum_x p(x)\\log q(x)","author":"Claude Shannon","year":"1948","category":"computer_science","description":"The loss that punishes a model for confident wrong answers.","stage":"live-demo","hook":"A model says it is 99% sure the image is a cat. It is a dog. Cross-entropy loss makes that mistake hurt — a lot. Confidence is only rewarded when it is right.","hook_action":"Drag q, the probability the model assigned to the correct answer.","variables_data":[{"max":1,"min":0.01,"name":"q","step":0.01,"unit":null,"color":"primary","symbol":"q","default":0.5,"constant":false,"description":"Predicted probability of the true class"}],"presets_data":[{"label":"Unsure (q=0.5)","values":{"q":0.5}},{"label":"Confident right","values":{"q":0.98}},{"label":"Confident wrong","values":{"q":0.02}}],"lessons_data":[{"id":"touch-q","hint":"Drag q to the right.","insight":"Cross-entropy loss is -log(q). The closer q is to 1, the smaller the loss.","unlocked":["q"],"celebration":"subtle","instruction":"Drag q, the probability the model gave the correct class.","successType":"variable_changed","successTarget":"q"},{"id":"right","hint":"Drag q close to 1.","insight":"When the model is confidently correct, the loss approaches zero. This is the target every training step is reaching for.","unlocked":["q"],"celebration":"medium","instruction":"Push q up toward 1.","successType":"value_reached","successValue":1,"successTarget":"q","successTolerance":0.05},{"id":"wrong","hint":"Drag q toward 0.","insight":"Confident and wrong is the worst case — the loss shoots toward infinity. That steep penalty is exactly what pushes the model to calibrate its confidence.","unlocked":["q"],"celebration":"big","instruction":"Now drag q down near 0.","successType":"value_reached","successValue":0.02,"successTarget":"q","successTolerance":0.05}],"glossary_data":[{"color":"#3b82f6","words":["predicted","prediction"],"tooltip":"q — the probability the model assigned","highlightClass":"g24-0"},{"color":"#f59e0b","words":["loss"],"tooltip":"Penalty that grows as confident answers go wrong","highlightClass":"g24-1"},{"color":"#10b981","words":["surprise"],"tooltip":"−log q: how surprised the model is by the truth","highlightClass":"g24-2"}]},{"id":25,"slug":"attention","title":"Attention","formula":"\\text{Attention}(Q,K,V)=\\text{softmax}\\!\\left(\\frac{QK^{T}}{\\sqrt{d_k}}\\right)V","author":"Vaswani et al.","year":"2017","category":"computer_science","description":"The mechanism that lets transformers decide what to focus on.","stage":"live-demo","hook":"When you read \"the animal didn't cross the street because it was tired\", you know \"it\" means the animal. Attention is how a transformer learns to look back at the right word.","hook_action":"Drag the key dimension d_k and the match score to see why we divide by √d_k.","variables_data":[{"max":512,"min":1,"name":"dk","step":1,"unit":null,"color":"primary","symbol":"d_k","default":64,"constant":false,"description":"Key/query dimension"},{"max":10,"min":-10,"name":"score","step":0.1,"unit":null,"color":"secondary","symbol":"QKᵀ","default":4,"constant":false,"description":"Raw match score between a query and a key"}],"presets_data":[{"label":"Toy model","values":{"dk":8,"score":4}},{"label":"Transformer base","values":{"dk":64,"score":4}},{"label":"Large model","values":{"dk":512,"score":4}}],"lessons_data":[{"id":"touch-dk","hint":"Drag d_k to the right.","insight":"Dot products of longer vectors get larger just from having more terms. d_k measures that length.","unlocked":["dk","score"],"celebration":"subtle","instruction":"Drag d_k, the dimension of the query and key vectors.","successType":"variable_changed","successTarget":"dk"},{"id":"big-dk","hint":"Drag d_k to 512.","insight":"Without scaling, large d_k makes the scores huge, softmax saturates, and gradients vanish. Dividing by √d_k keeps the scores in a sane range — the trick that made deep transformers trainable.","unlocked":["dk","score"],"celebration":"big","instruction":"Push d_k up to 512.","successType":"value_reached","successValue":512,"successTarget":"dk","successTolerance":20},{"id":"score","hint":"Drag QKᵀ around.","insight":"A high score means this query strongly matches this key, so softmax sends more weight to that value V. Attention is just a soft, learned lookup table.","unlocked":["dk","score"],"celebration":"medium","instruction":"Now drag the match score QKᵀ up and down.","successType":"variable_changed","successTarget":"score"}],"glossary_data":[{"color":"#3b82f6","words":["query","key","keys"],"tooltip":"Q·Kᵀ — how well a query matches each key","highlightClass":"g25-0"},{"color":"#f59e0b","words":["scale","scaling"],"tooltip":"Dividing by √dₖ keeps the scores from exploding","highlightClass":"g25-1"},{"color":"#10b981","words":["weights","softmax"],"tooltip":"Scores become weights that blend the values V","highlightClass":"g25-2"}]},{"id":26,"slug":"ideal-gas-law","title":"Ideal Gas Law","formula":"PV=nRT","author":"Émile Clapeyron","year":"1834","category":"chemistry","description":"Pressure, volume, moles, and temperature of a gas, all in one relation.","stage":"live-demo","hook":"A balloon shrinks in the freezer and swells in the sun. The ideal gas law ties pressure, volume, and temperature together so you can predict exactly how much.","hook_action":"Drag temperature, volume, or the amount of gas and watch the balance shift.","variables_data":[{"max":10,"min":0.1,"name":"n","step":0.1,"unit":"mol","color":"primary","symbol":"n","default":1,"constant":false,"description":"Amount of gas"},{"max":1000,"min":100,"name":"T","step":1,"unit":"K","color":"secondary","symbol":"T","default":300,"constant":false,"description":"Temperature"},{"max":50,"min":1,"name":"V","step":0.1,"unit":"L","color":"tertiary","symbol":"V","default":22.4,"constant":false,"description":"Volume"}],"presets_data":[{"label":"STP","values":{"T":273,"V":22.4,"n":1}},{"label":"Hot","values":{"T":600,"V":22.4,"n":1}},{"label":"Compressed","values":{"T":300,"V":5,"n":1}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"At fixed volume, heating a gas raises its pressure — the molecules hit the walls harder and more often.","unlocked":["n","T","V"],"celebration":"subtle","instruction":"Drag the temperature T upward.","successType":"variable_changed","successTarget":"T"},{"id":"compress","hint":"Drag V down to ~5.","insight":"Squeeze the same gas into less space and the pressure climbs. Halve the volume, double the pressure — Boyle's law lives inside this equation.","unlocked":["n","T","V"],"celebration":"medium","instruction":"Now drag the volume V down to about 5 L.","successType":"value_reached","successValue":5,"successTarget":"V","successTolerance":2},{"id":"moles","hint":"Drag n upward.","insight":"More molecules in the same box means more collisions and higher pressure. R, the gas constant, is the fixed conversion that makes all of this line up.","unlocked":["n","T","V"],"celebration":"big","instruction":"Increase n, the amount of gas.","successType":"variable_changed","successTarget":"n"}],"glossary_data":[{"color":"#10b981","words":["R"],"tooltip":"The universal gas constant, 8.314 J/(mol·K)","highlightClass":"gas-const"}]},{"id":27,"slug":"arrhenius-equation","title":"Arrhenius Equation","formula":"k=Ae^{-E_a/RT}","author":"Svante Arrhenius","year":"1889","category":"chemistry","description":"Why reactions speed up dramatically when you heat them.","stage":"live-demo","hook":"Milk lasts days in the fridge and hours on the counter. A 10°C rise can double a reaction rate. Arrhenius explains the exponential payoff of heat.","hook_action":"Drag the temperature and the activation energy barrier.","variables_data":[{"max":1000,"min":200,"name":"T","step":1,"unit":"K","color":"primary","symbol":"T","default":298,"constant":false,"description":"Temperature"},{"max":200,"min":10,"name":"Ea","step":1,"unit":"kJ/mol","color":"secondary","symbol":"E_a","default":50,"constant":false,"description":"Activation energy"}],"presets_data":[{"label":"Room temp","values":{"T":298,"Ea":50}},{"label":"Heated","values":{"T":500,"Ea":50}},{"label":"High barrier","values":{"T":298,"Ea":150}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"Higher temperature means more molecules carry enough energy to clear the barrier, so the rate constant k climbs — fast.","unlocked":["T","Ea"],"celebration":"subtle","instruction":"Drag the temperature T upward.","successType":"variable_changed","successTarget":"T"},{"id":"heat","hint":"Drag T to ~500.","insight":"Because T sits inside an exponential, modest heating can multiply the rate many times over. This is why cooking and catalysis care so much about temperature.","unlocked":["T","Ea"],"celebration":"medium","instruction":"Push T up to about 500 K.","successType":"value_reached","successValue":500,"successTarget":"T","successTolerance":30},{"id":"barrier","hint":"Drag E_a up to ~150.","insight":"A taller barrier slows everything down exponentially. Catalysts work by lowering E_a, opening an easier path over the hill.","unlocked":["T","Ea"],"celebration":"big","instruction":"Now raise the activation energy E_a toward 150.","successType":"value_reached","successValue":150,"successTarget":"Ea","successTolerance":15}],"glossary_data":[{"color":"#3b82f6","words":["temperature"],"tooltip":"T — raising it speeds the reaction","highlightClass":"g27-0"},{"color":"#f59e0b","words":["activation energy","barrier"],"tooltip":"Eₐ — the energy hill reactants must clear","highlightClass":"g27-1"},{"color":"#ef4444","words":["rate constant","rate"],"tooltip":"k — how fast the reaction proceeds","highlightClass":"g27-2"}]},{"id":28,"slug":"henderson-hasselbalch","title":"Henderson-Hasselbalch","formula":"pH=pK_a+\\log\\frac{[A^-]}{[HA]}","author":"Henderson, Hasselbalch","year":"1917","category":"chemistry","description":"How a buffer holds its pH steady.","stage":"live-demo","hook":"Your blood stays at pH 7.4 even after a sour lemon or a hard workout. Buffers make that possible, and this equation is their control dial.","hook_action":"Drag the ratio of base to acid and the acid's pKa.","variables_data":[{"max":14,"min":0,"name":"pKa","step":0.1,"unit":null,"color":"primary","symbol":"pK_a","default":4.76,"constant":false,"description":"Acid dissociation constant"},{"max":100,"min":0.01,"name":"ratio","step":0.01,"unit":null,"color":"secondary","symbol":"[A⁻]/[HA]","default":1,"constant":false,"description":"Ratio of conjugate base to acid"}],"presets_data":[{"label":"Balanced","values":{"pKa":4.76,"ratio":1}},{"label":"More base","values":{"pKa":4.76,"ratio":10}},{"label":"More acid","values":{"pKa":4.76,"ratio":0.1}}],"lessons_data":[{"id":"equal","hint":"Drag the ratio to 1.","insight":"When base and acid are equal, log(1) = 0, so pH equals pKa exactly. This is the center of a buffer's working range.","unlocked":["pKa","ratio"],"celebration":"subtle","instruction":"Set the ratio [A⁻]/[HA] to 1.","successType":"value_reached","successValue":1,"successTarget":"ratio","successTolerance":0.5},{"id":"base","hint":"Drag the ratio to ~10.","insight":"Tenfold more base shifts pH up by exactly 1 unit. A buffer resists change best within about one pH unit of its pKa.","unlocked":["pKa","ratio"],"celebration":"medium","instruction":"Now drag the ratio up toward 10.","successType":"value_reached","successValue":10,"successTarget":"ratio","successTolerance":2},{"id":"pka","hint":"Drag pKa around.","insight":"You choose a buffer by matching its pKa to the pH you want to hold. That is how chemists and your bloodstream lock in a target.","unlocked":["pKa","ratio"],"celebration":"big","instruction":"Change the pKa to pick a different acid.","successType":"variable_changed","successTarget":"pKa"}],"glossary_data":[{"color":"#3b82f6","words":["acid strength","pKa"],"tooltip":"pH at which half the acid is dissociated","highlightClass":"g28-0"},{"color":"#f59e0b","words":["ratio"],"tooltip":"[A⁻]/[HA] — the base-to-acid balance","highlightClass":"g28-1"},{"color":"#10b981","words":["buffer"],"tooltip":"Resists pH change near its pKa","highlightClass":"g28-2"}]},{"id":29,"slug":"nernst-equation","title":"Nernst Equation","formula":"E=E^{0}-\\frac{RT}{nF}\\ln Q","author":"Walther Nernst","year":"1889","category":"chemistry","description":"The voltage of a battery as its chemistry runs down.","stage":"live-demo","hook":"A fresh battery reads 1.5 V; a dying one sags lower. The Nernst equation predicts the voltage from the concentrations inside the cell.","hook_action":"Drag the standard potential, electrons transferred, and reaction quotient.","variables_data":[{"max":3,"min":-3,"name":"E0","step":0.01,"unit":"V","color":"primary","symbol":"E⁰","default":1.1,"constant":false,"description":"Standard cell potential"},{"max":6,"min":1,"name":"n","step":1,"unit":null,"color":"secondary","symbol":"n","default":2,"constant":false,"description":"Electrons transferred"},{"max":1000,"min":0.001,"name":"Q","step":0.001,"unit":null,"color":"tertiary","symbol":"Q","default":1,"constant":false,"description":"Reaction quotient"}],"presets_data":[{"label":"Standard","values":{"Q":1,"n":2,"E0":1.1}},{"label":"Discharged","values":{"Q":1000,"n":2,"E0":1.1}},{"label":"Charged","values":{"Q":0.001,"n":2,"E0":1.1}}],"lessons_data":[{"id":"standard","hint":"Drag Q to 1.","insight":"At Q = 1, ln(1) = 0, so the cell sits exactly at its standard potential E⁰. This is the reference point for every electrochemical table.","unlocked":["E0","n","Q"],"celebration":"subtle","instruction":"Set the reaction quotient Q to 1.","successType":"value_reached","successValue":1,"successTarget":"Q","successTolerance":0.5},{"id":"discharge","hint":"Drag Q to ~1000.","insight":"As products accumulate, Q rises and the voltage drops. A battery is dead when Q reaches equilibrium and E falls to zero.","unlocked":["E0","n","Q"],"celebration":"medium","instruction":"Drag Q up toward 1000 (products piling up).","successType":"value_reached","successValue":1000,"successTarget":"Q","successTolerance":200},{"id":"electrons","hint":"Drag n.","insight":"More electrons per reaction flattens the voltage's sensitivity to concentration. F, Faraday's constant, converts moles of electrons into charge.","unlocked":["E0","n","Q"],"celebration":"big","instruction":"Change n, the number of electrons transferred.","successType":"variable_changed","successTarget":"n"}],"glossary_data":[{"color":"#3b82f6","words":["standard potential","potential"],"tooltip":"E⁰ — cell voltage at standard conditions","highlightClass":"g29-0"},{"color":"#f59e0b","words":["electrons"],"tooltip":"n — electrons transferred per reaction","highlightClass":"g29-1"},{"color":"#10b981","words":["reaction quotient","quotient"],"tooltip":"Q — current ratio of products to reactants","highlightClass":"g29-2"}]},{"id":30,"slug":"beer-lambert-law","title":"Beer-Lambert Law","formula":"A=\\varepsilon l c","author":"Beer, Lambert","year":"1852","category":"chemistry","description":"How much light a solution absorbs tells you how concentrated it is.","stage":"live-demo","hook":"Deeper-colored juice is more concentrated — your eyes already do spectroscopy. Beer-Lambert turns that intuition into a precise measurement.","hook_action":"Drag the concentration, path length, and how strongly the molecule absorbs.","variables_data":[{"max":50000,"min":100,"name":"eps","step":100,"unit":"M⁻¹cm⁻¹","color":"primary","symbol":"ε","default":5000,"constant":false,"description":"Molar absorptivity"},{"max":10,"min":0.1,"name":"l","step":0.1,"unit":"cm","color":"secondary","symbol":"l","default":1,"constant":false,"description":"Path length"},{"max":0.01,"min":0,"name":"c","step":0.0001,"unit":"M","color":"tertiary","symbol":"c","default":0.001,"constant":false,"description":"Concentration"}],"presets_data":[{"label":"Dilute","values":{"c":0.0002,"l":1,"eps":5000}},{"label":"Standard cuvette","values":{"c":0.001,"l":1,"eps":5000}},{"label":"Concentrated","values":{"c":0.008,"l":1,"eps":5000}}],"lessons_data":[{"id":"touch-c","hint":"Drag c to the right.","insight":"Absorbance is directly proportional to concentration — twice the dye, twice the absorbance. This straight line is what makes the law so useful.","unlocked":["eps","l","c"],"celebration":"subtle","instruction":"Drag the concentration c upward.","successType":"variable_changed","successTarget":"c"},{"id":"path","hint":"Drag l to ~10.","insight":"Light passing through more solution meets more molecules, so absorbance scales with path length too. A longer cuvette boosts sensitivity.","unlocked":["eps","l","c"],"celebration":"medium","instruction":"Now lengthen the path l toward 10 cm.","successType":"value_reached","successValue":10,"successTarget":"l","successTolerance":1},{"id":"eps","hint":"Drag ε around.","insight":"ε is fixed by the molecule and the wavelength. Pick a wavelength where ε is large and even trace amounts become measurable — the heart of analytical chemistry.","unlocked":["eps","l","c"],"celebration":"big","instruction":"Change ε, how strongly the molecule absorbs.","successType":"variable_changed","successTarget":"eps"}],"glossary_data":[{"color":"#3b82f6","words":["absorptivity"],"tooltip":"ε — how strongly the species absorbs light","highlightClass":"g30-0"},{"color":"#f59e0b","words":["path length","path"],"tooltip":"l — distance light travels through the sample","highlightClass":"g30-1"},{"color":"#10b981","words":["concentration"],"tooltip":"c — amount of absorbing species present","highlightClass":"g30-2"}]},{"id":31,"slug":"gibbs-free-energy","title":"Gibbs Free Energy","formula":"\\Delta G=\\Delta H-T\\Delta S","author":"J. Willard Gibbs","year":"1876","category":"chemistry","description":"Whether a reaction will happen on its own.","stage":"live-demo","hook":"Ice melts above 0°C and freezes below it — same process, opposite directions. Gibbs free energy says which way any reaction will spontaneously run.","hook_action":"Drag enthalpy, entropy, and temperature to flip ΔG's sign.","variables_data":[{"max":200,"min":-200,"name":"dH","step":1,"unit":"kJ/mol","color":"primary","symbol":"ΔH","default":-100,"constant":false,"description":"Enthalpy change"},{"max":1000,"min":0,"name":"T","step":1,"unit":"K","color":"secondary","symbol":"T","default":298,"constant":false,"description":"Temperature"},{"max":300,"min":-300,"name":"dS","step":1,"unit":"J/mol·K","color":"tertiary","symbol":"ΔS","default":50,"constant":false,"description":"Entropy change"}],"presets_data":[{"label":"Spontaneous","values":{"T":298,"dH":-100,"dS":50}},{"label":"Endothermic","values":{"T":298,"dH":80,"dS":50}},{"label":"High temperature","values":{"T":900,"dH":80,"dS":200}}],"lessons_data":[{"id":"touch-T","hint":"Drag T.","insight":"ΔG = ΔH − TΔS is negative when a reaction runs on its own. Temperature scales the entropy term, so it can flip the outcome.","unlocked":["dH","T","dS"],"celebration":"subtle","instruction":"Drag the temperature T.","successType":"variable_changed","successTarget":"T"},{"id":"endo","hint":"Drag ΔH above 0.","insight":"An energy-absorbing reaction looks unfavorable at first. But a large positive entropy plus enough heat can still make ΔG negative.","unlocked":["dH","T","dS"],"celebration":"medium","instruction":"Set ΔH positive (try the Endothermic preset).","successType":"value_reached","successValue":80,"successTarget":"dH","successTolerance":20},{"id":"hot","hint":"Drag T to ~900.","insight":"At high temperature the −TΔS term dominates: entropy-driven reactions that refuse to go when cold suddenly become spontaneous. This is why heating drives so much chemistry.","unlocked":["dH","T","dS"],"celebration":"big","instruction":"Now push the temperature up to about 900 K.","successType":"value_reached","successValue":900,"successTarget":"T","successTolerance":50}],"glossary_data":[{"color":"#3b82f6","words":["enthalpy"],"tooltip":"ΔH — heat released or absorbed","highlightClass":"g31-0"},{"color":"#f59e0b","words":["temperature"],"tooltip":"T — couples to the entropy term","highlightClass":"g31-1"},{"color":"#10b981","words":["entropy"],"tooltip":"ΔS — change in disorder","highlightClass":"g31-2"},{"color":"#ef4444","words":["spontaneous"],"tooltip":"ΔG < 0 means the reaction proceeds on its own","highlightClass":"g31-3"}]},{"id":32,"slug":"rate-law","title":"Rate Law","formula":"r=k[A]^{m}[B]^{n}","author":"Cato Guldberg, Peter Waage","year":"1864","category":"chemistry","description":"How reaction speed depends on concentration.","stage":"live-demo","hook":"Why does a fire roar in pure oxygen but smolder in air? The rate law connects how fast a reaction goes to how much reactant is present — and the exponents are the surprise.","hook_action":"Drag the concentration of A and the reaction order m.","variables_data":[{"max":2,"min":0,"name":"A","step":0.01,"unit":"M","color":"primary","symbol":"[A]","default":0.5,"constant":false,"description":"Concentration of reactant A"},{"max":3,"min":0,"name":"m","step":1,"unit":null,"color":"secondary","symbol":"m","default":1,"constant":false,"description":"Order with respect to A"},{"max":5,"min":0.01,"name":"k","step":0.01,"unit":null,"color":"tertiary","symbol":"k","default":1,"constant":false,"description":"Rate constant"}],"presets_data":[{"label":"First order","values":{"A":0.5,"k":1,"m":1}},{"label":"Second order","values":{"A":0.5,"k":1,"m":2}},{"label":"Zero order","values":{"A":0.5,"k":1,"m":0}}],"lessons_data":[{"id":"touch-A","hint":"Drag [A] to the right.","insight":"For a first-order reaction, doubling [A] doubles the rate. The reaction speeds up as reactant piles up.","unlocked":["A","m","k"],"celebration":"subtle","instruction":"Drag the concentration [A] upward.","successType":"variable_changed","successTarget":"A"},{"id":"order","hint":"Drag m to 2.","insight":"A second-order reaction quadruples its rate when you double [A]. The exponent — which you can only find by experiment — controls how dramatically concentration matters.","unlocked":["A","m","k"],"celebration":"medium","instruction":"Set the order m to 2.","successType":"value_reached","successValue":2,"successTarget":"m","successTolerance":0.5},{"id":"zero","hint":"Drag m to 0.","insight":"A zero-order reaction ignores concentration entirely — its rate is just k. This happens when a surface or enzyme is saturated and working flat out.","unlocked":["A","m","k"],"celebration":"big","instruction":"Now set m to 0.","successType":"value_reached","successValue":0,"successTarget":"m","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["concentration"],"tooltip":"[A] — amount of reactant","highlightClass":"g32-0"},{"color":"#f59e0b","words":["order"],"tooltip":"m — how sensitively rate depends on [A]","highlightClass":"g32-1"},{"color":"#10b981","words":["rate constant","rate"],"tooltip":"k — the intrinsic speed of the reaction","highlightClass":"g32-2"}]},{"id":33,"slug":"clausius-clapeyron","title":"Clausius-Clapeyron","formula":"\\frac{dP}{dT}=\\frac{\\Delta H_{vap}}{T\\,\\Delta V}","author":"Clausius, Clapeyron","year":"1850","category":"chemistry","description":"Why water boils cooler on a mountain.","stage":"live-demo","hook":"On Everest, water boils at 71°C and you cannot brew a proper cup of tea. The Clausius-Clapeyron relation ties boiling point to pressure.","hook_action":"Drag the temperature and the heat of vaporization.","variables_data":[{"max":100,"min":10,"name":"dHvap","step":1,"unit":"kJ/mol","color":"primary","symbol":"ΔH_vap","default":40,"constant":false,"description":"Heat of vaporization"},{"max":500,"min":250,"name":"T","step":1,"unit":"K","color":"secondary","symbol":"T","default":373,"constant":false,"description":"Temperature"},{"max":50,"min":1,"name":"dV","step":1,"unit":"L/mol","color":"tertiary","symbol":"ΔV","default":30,"constant":false,"description":"Volume change on vaporizing"}],"presets_data":[{"label":"Water boiling","values":{"T":373,"dV":30,"dHvap":40}},{"label":"On a mountain","values":{"T":344,"dV":45,"dHvap":40}},{"label":"Volatile solvent","values":{"T":320,"dV":30,"dHvap":20}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"The slope dP/dT tells you how steeply vapor pressure climbs with temperature. Near boiling, a small temperature change moves the pressure a lot.","unlocked":["dHvap","T","dV"],"celebration":"subtle","instruction":"Drag the temperature T upward.","successType":"variable_changed","successTarget":"T"},{"id":"mountain","hint":"Drag T down to ~344.","insight":"At reduced pressure, water reaches its boiling vapor pressure at a lower temperature — exactly the high-altitude tea problem.","unlocked":["dHvap","T","dV"],"celebration":"medium","instruction":"Lower T toward 344 K (about 71°C).","successType":"value_reached","successValue":344,"successTarget":"T","successTolerance":8},{"id":"heat","hint":"Drag ΔH_vap upward.","insight":"Liquids that take more energy to vaporize have steeper pressure-temperature curves. This single relation underlies pressure cookers, refrigerators, and weather.","unlocked":["dHvap","T","dV"],"celebration":"big","instruction":"Raise the heat of vaporization ΔH_vap.","successType":"variable_changed","successTarget":"dHvap"}],"glossary_data":[{"color":"#3b82f6","words":["vaporization","vaporisation"],"tooltip":"ΔH_vap — heat to turn liquid into gas","highlightClass":"g33-0"},{"color":"#f59e0b","words":["temperature"],"tooltip":"T — where the phase boundary sits","highlightClass":"g33-1"},{"color":"#ef4444","words":["vapor pressure","pressure"],"tooltip":"How vapour pressure climbs with temperature","highlightClass":"g33-2"}]},{"id":34,"slug":"newtons-second-law","title":"Newton's Second Law","formula":"F=ma","author":"Isaac Newton","year":"1687","category":"physics","description":"Force equals mass times acceleration — the engine of classical mechanics.","stage":"live-demo","hook":"Push a shopping cart and it rolls; push a loaded truck the same way and it barely budges. The same force produces different acceleration depending on mass.","hook_action":"Drag the mass and the acceleration to feel how force responds.","variables_data":[{"max":100,"min":0.1,"name":"m","step":0.1,"unit":"kg","color":"primary","symbol":"m","default":10,"constant":false,"description":"Mass"},{"max":20,"min":0,"name":"a","step":0.1,"unit":"m/s²","color":"secondary","symbol":"a","default":2,"constant":false,"description":"Acceleration"}],"presets_data":[{"label":"Shopping cart","values":{"a":1,"m":15}},{"label":"Loaded cart","values":{"a":2,"m":80}},{"label":"Heavy crate","values":{"a":0.5,"m":100}}],"lessons_data":[{"id":"touch-a","hint":"Drag a to the right.","insight":"Force is proportional to acceleration. To speed up faster, you need more force — every time.","unlocked":["m","a"],"celebration":"subtle","instruction":"Drag the acceleration a upward.","successType":"variable_changed","successTarget":"a"},{"id":"mass","hint":"Drag m up.","insight":"Heavier objects need more force for the same acceleration. Mass is exactly the resistance to being accelerated — inertia made quantitative.","unlocked":["m","a"],"celebration":"medium","instruction":"Now increase the mass m.","successType":"variable_changed","successTarget":"m"},{"id":"heavy","hint":"Drag m to ~100.","insight":"A huge mass barely accelerates under a modest force. This is why rockets need enormous thrust and why stopping a train takes kilometers.","unlocked":["m","a"],"celebration":"big","instruction":"Set the mass near its maximum.","successType":"value_reached","successValue":100,"successTarget":"m","successTolerance":10}],"glossary_data":[{"color":"#3b82f6","words":["mass"],"tooltip":"m — resistance to being accelerated","highlightClass":"g34-0"},{"color":"#f59e0b","words":["acceleration"],"tooltip":"a — the rate of change of velocity","highlightClass":"g34-1"},{"color":"#ef4444","words":["force"],"tooltip":"F = ma — the push that results","highlightClass":"g34-2"}]},{"id":35,"slug":"kinetic-energy","title":"Kinetic Energy","formula":"E_k=\\frac{1}{2}mv^2","author":"Gottfried Leibniz","year":"1686","category":"physics","description":"The energy of motion grows with the square of speed.","stage":"live-demo","hook":"A car at 60 mph has four times the crash energy of one at 30 mph — not twice. That squared term is why speed limits matter so much.","hook_action":"Drag the speed and watch energy climb far faster than the speed itself.","variables_data":[{"max":100,"min":0.1,"name":"m","step":0.1,"unit":"kg","color":"primary","symbol":"m","default":10,"constant":false,"description":"Mass"},{"max":50,"min":0,"name":"v","step":0.1,"unit":"m/s","color":"secondary","symbol":"v","default":10,"constant":false,"description":"Speed"}],"presets_data":[{"label":"Walking","values":{"m":70,"v":1.5}},{"label":"Cyclist","values":{"m":80,"v":10}},{"label":"Highway car","values":{"m":1,"v":30}}],"lessons_data":[{"id":"touch-v","hint":"Drag v to the right.","insight":"Energy depends on v², so doubling the speed quadruples the energy. Speed matters far more than mass here.","unlocked":["m","v"],"celebration":"subtle","instruction":"Drag the speed v upward.","successType":"variable_changed","successTarget":"v"},{"id":"double","hint":"Drag v to ~20.","insight":"Going from 10 to 20 m/s is a 4× jump in energy. That extra energy must go somewhere in a crash — into crumpling metal.","unlocked":["m","v"],"celebration":"medium","instruction":"Push v to about 20 (then imagine doubling it).","successType":"value_reached","successValue":20,"successTarget":"v","successTolerance":3},{"id":"mass","hint":"Drag m around.","insight":"Mass matters linearly — double the mass, double the energy — but speed matters quadratically. That asymmetry shapes everything from car safety to ballistics.","unlocked":["m","v"],"celebration":"big","instruction":"Now change the mass m.","successType":"variable_changed","successTarget":"m"}],"glossary_data":[{"color":"#3b82f6","words":["mass"],"tooltip":"m — heavier means more energy","highlightClass":"g35-0"},{"color":"#f59e0b","words":["velocity","speed"],"tooltip":"v — energy grows with its square","highlightClass":"g35-1"},{"color":"#ef4444","words":["kinetic energy","energy"],"tooltip":"½mv² — the energy of motion","highlightClass":"g35-2"}]},{"id":36,"slug":"coulombs-law","title":"Coulomb's Law","formula":"F=k\\frac{q_1 q_2}{r^2}","author":"Charles-Augustin de Coulomb","year":"1785","category":"physics","description":"The electric force between charges, an inverse-square twin of gravity.","stage":"live-demo","hook":"Rub a balloon on your hair and it sticks to the wall. Coulomb's law is the force doing the sticking — and it falls off with distance just like gravity.","hook_action":"Drag the charges and the distance between them.","variables_data":[{"max":5,"min":-5,"name":"q1","step":0.1,"unit":"µC","color":"primary","symbol":"q₁","default":1,"constant":false,"description":"First charge"},{"max":5,"min":-5,"name":"q2","step":0.1,"unit":"µC","color":"secondary","symbol":"q₂","default":1,"constant":false,"description":"Second charge"},{"max":5,"min":0.1,"name":"r","step":0.1,"unit":"m","color":"tertiary","symbol":"r","default":1,"constant":false,"description":"Separation"}],"presets_data":[{"label":"Like charges","values":{"r":1,"q1":2,"q2":2}},{"label":"Opposite","values":{"r":1,"q1":2,"q2":-2}},{"label":"Far apart","values":{"r":5,"q1":2,"q2":2}}],"lessons_data":[{"id":"touch-r","hint":"Drag r to the right.","insight":"Force falls off with the square of distance — move twice as far and the force drops to a quarter.","unlocked":["q1","q2","r"],"celebration":"subtle","instruction":"Drag the separation r and watch the force change.","successType":"variable_changed","successTarget":"r"},{"id":"close","hint":"Drag r toward 0.1.","insight":"Up close the force becomes enormous. The r² in the denominator is what makes nearby charges grip so hard.","unlocked":["q1","q2","r"],"celebration":"medium","instruction":"Bring r down toward 0.1.","successType":"value_reached","successValue":0.1,"successTarget":"r","successTolerance":0.2},{"id":"flip","hint":"Drag q₂ below zero.","insight":"Same signs repel, opposite signs attract. Unlike gravity, the electric force comes in two flavors — which is why atoms can both bind and push apart.","unlocked":["q1","q2","r"],"celebration":"big","instruction":"Make one charge negative.","successType":"variable_changed","successTarget":"q2"}],"glossary_data":[{"color":"#3b82f6","words":["charge","charges"],"tooltip":"q — like charges repel, opposite attract","highlightClass":"g36-0"},{"color":"#10b981","words":["distance"],"tooltip":"r — force falls off as 1/r²","highlightClass":"g36-1"},{"color":"#ef4444","words":["force"],"tooltip":"The electrostatic push between charges","highlightClass":"g36-2"}]},{"id":37,"slug":"ohms-law","title":"Ohm's Law","formula":"V=IR","author":"Georg Ohm","year":"1827","category":"physics","description":"Voltage, current, and resistance in the simplest circuit relation.","stage":"live-demo","hook":"Why does a thin wire get hot and a thick one stay cool? Ohm's law links the push (voltage), the flow (current), and the friction (resistance).","hook_action":"Drag the current and the resistance to see the voltage respond.","variables_data":[{"max":10,"min":0,"name":"I","step":0.1,"unit":"A","color":"primary","symbol":"I","default":2,"constant":false,"description":"Current"},{"max":100,"min":1,"name":"R","step":1,"unit":"Ω","color":"secondary","symbol":"R","default":10,"constant":false,"description":"Resistance"}],"presets_data":[{"label":"Dim LED","values":{"I":0.05,"R":100}},{"label":"Heater","values":{"I":8,"R":24}},{"label":"Near short","values":{"I":10,"R":2}}],"lessons_data":[{"id":"touch-R","hint":"Drag R to the right.","insight":"At a fixed current, more resistance needs more voltage to push the charge through.","unlocked":["I","R"],"celebration":"subtle","instruction":"Drag the resistance R upward.","successType":"variable_changed","successTarget":"R"},{"id":"current","hint":"Drag I up.","insight":"Voltage rises with current too. The three quantities lock together: fix any two and the third is determined.","unlocked":["I","R"],"celebration":"medium","instruction":"Now increase the current I.","successType":"variable_changed","successTarget":"I"},{"id":"short","hint":"Drag R near 1.","insight":"Low resistance and high current means power (I²R) dumps as heat — exactly what happens in a short circuit, and why fuses exist.","unlocked":["I","R"],"celebration":"big","instruction":"Set R very low while I is high.","successType":"value_reached","successValue":1,"successTarget":"R","successTolerance":2}],"glossary_data":[{"color":"#3b82f6","words":["current"],"tooltip":"I — the flow of charge","highlightClass":"g37-0"},{"color":"#f59e0b","words":["resistance"],"tooltip":"R — opposition to the current","highlightClass":"g37-1"},{"color":"#ef4444","words":["voltage"],"tooltip":"V = IR — the driving push","highlightClass":"g37-2"}]},{"id":38,"slug":"snells-law","title":"Snell's Law","formula":"n_1\\sin\\theta_1=n_2\\sin\\theta_2","author":"Willebrord Snellius","year":"1621","category":"physics","description":"How light bends when it crosses between materials.","stage":"live-demo","hook":"A straw in a glass of water looks broken at the surface. Light bends as it slows down entering the water — and Snell's law says by exactly how much.","hook_action":"Drag the incidence angle and the refractive indices.","variables_data":[{"max":89,"min":0,"name":"theta1","step":1,"unit":"°","color":"primary","symbol":"θ₁","default":30,"constant":false,"description":"Angle of incidence"},{"max":2.5,"min":1,"name":"n1","step":0.01,"unit":null,"color":"secondary","symbol":"n₁","default":1.0,"constant":false,"description":"Index of first medium"},{"max":2.5,"min":1,"name":"n2","step":0.01,"unit":null,"color":"tertiary","symbol":"n₂","default":1.5,"constant":false,"description":"Index of second medium"}],"presets_data":[{"label":"Air → water","values":{"n1":1.0,"n2":1.33,"theta1":30}},{"label":"Air → glass","values":{"n1":1.0,"n2":1.5,"theta1":30}},{"label":"Steep entry","values":{"n1":1.0,"n2":1.5,"theta1":80}}],"lessons_data":[{"id":"touch-angle","hint":"Drag θ₁.","insight":"Light entering a denser medium bends toward the normal. The steeper the entry, the more dramatic the bend.","unlocked":["theta1","n1","n2"],"celebration":"subtle","instruction":"Drag the angle of incidence θ₁.","successType":"variable_changed","successTarget":"theta1"},{"id":"denser","hint":"Drag n₂ up.","insight":"A higher index means light slows more and bends more sharply. This is exactly how a lens focuses light to a point.","unlocked":["theta1","n1","n2"],"celebration":"medium","instruction":"Raise n₂, the index of the second medium.","successType":"variable_changed","successTarget":"n2"},{"id":"steep","hint":"Drag θ₁ toward 80°.","insight":"Reverse the direction and at steep angles light can't escape at all — total internal reflection. That trapped light is what carries the internet through fiber optics.","unlocked":["theta1","n1","n2"],"celebration":"big","instruction":"Set θ₁ near 80° going into a denser medium.","successType":"value_reached","successValue":80,"successTarget":"theta1","successTolerance":8}],"glossary_data":[{"color":"#3b82f6","words":["angle"],"tooltip":"θ — measured from the surface normal","highlightClass":"g38-0"},{"color":"#f59e0b","words":["refractive index","index"],"tooltip":"n — how much a medium slows light","highlightClass":"g38-1"},{"color":"#10b981","words":["refraction","bends"],"tooltip":"Light bends toward the slower medium","highlightClass":"g38-2"}]},{"id":39,"slug":"doppler-effect","title":"Doppler Effect","formula":"f'=f\\frac{v\\pm v_o}{v\\mp v_s}","author":"Christian Doppler","year":"1842","category":"physics","description":"Why a passing siren drops in pitch.","stage":"live-demo","hook":"An ambulance races toward you — high pitch — then past you — low pitch. The sound waves bunch up ahead and stretch out behind. Same trick reveals the expanding universe.","hook_action":"Drag the source speed and watch the heard frequency shift.","variables_data":[{"max":1000,"min":100,"name":"f","step":1,"unit":"Hz","color":"primary","symbol":"f","default":440,"constant":false,"description":"Source frequency"},{"max":100,"min":-100,"name":"vs","step":1,"unit":"m/s","color":"secondary","symbol":"v_s","default":30,"constant":false,"description":"Source speed (toward you positive)"}],"presets_data":[{"label":"Approaching","values":{"f":440,"vs":60}},{"label":"Stationary","values":{"f":440,"vs":0}},{"label":"Receding","values":{"f":440,"vs":-60}}],"lessons_data":[{"id":"approach","hint":"Drag v_s above 0.","insight":"As the source approaches, each wave is emitted a little closer than the last, so the waves bunch up and the pitch rises.","unlocked":["f","vs"],"celebration":"subtle","instruction":"Drag the source speed positive (toward you).","successType":"variable_changed","successTarget":"vs"},{"id":"recede","hint":"Drag v_s below 0.","insight":"Moving away stretches the waves and the pitch drops. That sudden high-to-low flip as the ambulance passes is the Doppler effect you hear.","unlocked":["f","vs"],"celebration":"medium","instruction":"Now drag the source speed negative.","successType":"value_reached","successValue":-60,"successTarget":"vs","successTolerance":20},{"id":"freq","hint":"Drag f.","insight":"The shift is proportional to the original frequency. Astronomers use the same idea on light: galaxies are redshifted because the universe is stretching them away.","unlocked":["f","vs"],"celebration":"big","instruction":"Change the source frequency f.","successType":"variable_changed","successTarget":"f"}],"glossary_data":[{"color":"#3b82f6","words":["frequency","pitch"],"tooltip":"f — the perceived pitch of the wave","highlightClass":"g39-0"},{"color":"#f59e0b","words":["source"],"tooltip":"v_s — speed of the emitter","highlightClass":"g39-1"},{"color":"#10b981","words":["shift"],"tooltip":"Approaching raises pitch, receding lowers it","highlightClass":"g39-2"}]},{"id":40,"slug":"stefan-boltzmann-law","title":"Stefan-Boltzmann Law","formula":"P=\\sigma A T^4","author":"Stefan, Boltzmann","year":"1879","category":"physics","description":"How brightly a hot object glows — with a ferocious fourth power.","stage":"live-demo","hook":"An electric stove glows dull red; the Sun blazes white. A modest rise in temperature makes a huge jump in radiated power, because of that T⁴.","hook_action":"Drag the temperature and watch radiated power explode.","variables_data":[{"max":6000,"min":100,"name":"T","step":10,"unit":"K","color":"primary","symbol":"T","default":300,"constant":false,"description":"Temperature"},{"max":10,"min":0.1,"name":"A","step":0.1,"unit":"m²","color":"secondary","symbol":"A","default":1,"constant":false,"description":"Surface area"}],"presets_data":[{"label":"Human body","values":{"A":1.8,"T":310}},{"label":"Lightbulb","values":{"A":0.5,"T":2800}},{"label":"Sun's surface","values":{"A":1,"T":5800}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"Radiated power scales with T to the fourth power. Double the temperature and you radiate sixteen times as much energy.","unlocked":["T","A"],"celebration":"subtle","instruction":"Drag the temperature T upward.","successType":"variable_changed","successTarget":"T"},{"id":"hot","hint":"Drag T to ~5800.","insight":"That brutal fourth power is why stars are so luminous and why a small temperature error in climate models matters so much.","unlocked":["T","A"],"celebration":"big","instruction":"Push T up toward 5800 K (the Sun's surface).","successType":"value_reached","successValue":5800,"successTarget":"T","successTolerance":300},{"id":"area","hint":"Drag A.","insight":"Power scales linearly with area but with the fourth power of temperature. Temperature, not size, dominates how bright something glows.","unlocked":["T","A"],"celebration":"medium","instruction":"Change the surface area A.","successType":"variable_changed","successTarget":"A"}],"glossary_data":[{"color":"#3b82f6","words":["temperature"],"tooltip":"T — radiated power scales as T⁴","highlightClass":"g40-0"},{"color":"#f59e0b","words":["area"],"tooltip":"A — a larger surface radiates more","highlightClass":"g40-1"},{"color":"#ef4444","words":["radiated power","power"],"tooltip":"Total energy a hot body emits","highlightClass":"g40-2"}]},{"id":41,"slug":"de-broglie-wavelength","title":"de Broglie Wavelength","formula":"\\lambda=\\frac{h}{mv}","author":"Louis de Broglie","year":"1924","category":"physics","description":"Every moving particle is also a wave.","stage":"live-demo","hook":"Electrons make interference patterns just like light. de Broglie said all matter has a wavelength — we just never notice it for anything bigger than an atom.","hook_action":"Drag the mass and speed to see the wavelength shrink toward nothing.","variables_data":[{"max":2000,"min":1,"name":"m","step":1,"unit":null,"color":"primary","symbol":"m","default":1,"constant":false,"description":"Mass (in electron masses)"},{"max":10,"min":0.1,"name":"v","step":0.1,"unit":null,"color":"secondary","symbol":"v","default":1,"constant":false,"description":"Speed (×10⁶ m/s)"}],"presets_data":[{"label":"Slow electron","values":{"m":1,"v":0.5}},{"label":"Fast electron","values":{"m":1,"v":8}},{"label":"Proton","values":{"m":1836,"v":1}}],"lessons_data":[{"id":"touch-v","hint":"Drag v to the right.","insight":"Faster particles have shorter wavelengths. This is why electron microscopes accelerate electrons hard — to get a tiny wavelength and sharp images.","unlocked":["m","v"],"celebration":"subtle","instruction":"Drag the speed v upward.","successType":"variable_changed","successTarget":"v"},{"id":"mass","hint":"Drag m up.","insight":"Heavier particles have far shorter wavelengths. A baseball's wavelength is so absurdly small we can never observe its wave nature.","unlocked":["m","v"],"celebration":"big","instruction":"Now increase the mass toward a proton (1836).","successType":"value_reached","successValue":1836,"successTarget":"m","successTolerance":200},{"id":"slow","hint":"Drag v toward 0.1.","insight":"Slow, light particles have the longest, most observable wavelengths. This wave-particle duality is the strange heart of quantum mechanics.","unlocked":["m","v"],"celebration":"medium","instruction":"Drag the speed back down low.","successType":"value_reached","successValue":0.1,"successTarget":"v","successTolerance":0.3}],"glossary_data":[{"color":"#3b82f6","words":["mass"],"tooltip":"m — heavier means a shorter wavelength","highlightClass":"g41-0"},{"color":"#f59e0b","words":["velocity","speed"],"tooltip":"v — faster means a shorter wavelength","highlightClass":"g41-1"},{"color":"#ef4444","words":["wavelength"],"tooltip":"λ = h/mv — matter behaving as a wave","highlightClass":"g41-2"}]},{"id":42,"slug":"heisenberg-uncertainty","title":"Heisenberg Uncertainty","formula":"\\Delta x\\,\\Delta p\\ge\\frac{\\hbar}{2}","author":"Werner Heisenberg","year":"1927","category":"physics","description":"You cannot know both position and momentum perfectly.","stage":"live-demo","hook":"Pin down exactly where a particle is, and its speed becomes a total blur. This isn't a measurement flaw — it's a hard limit baked into reality.","hook_action":"Squeeze the position uncertainty and watch momentum uncertainty blow up.","variables_data":[{"max":10,"min":0.01,"name":"dx","step":0.01,"unit":"nm","color":"primary","symbol":"Δx","default":2,"constant":false,"description":"Position uncertainty"}],"presets_data":[{"label":"Loosely located","values":{"dx":8}},{"label":"Atom-sized","values":{"dx":0.1}},{"label":"Pinned down","values":{"dx":0.01}}],"lessons_data":[{"id":"touch-dx","hint":"Drag Δx to the right.","insight":"A larger Δx means you know the position only roughly — which lets the momentum be sharply defined.","unlocked":["dx"],"celebration":"subtle","instruction":"Drag the position uncertainty Δx upward.","successType":"variable_changed","successTarget":"dx"},{"id":"squeeze","hint":"Drag Δx toward 0.01.","insight":"The tighter you locate the particle, the more its momentum must spread out, because their product can't drop below ℏ/2.","unlocked":["dx"],"celebration":"big","instruction":"Now squeeze Δx down toward 0.01.","successType":"value_reached","successValue":0.01,"successTarget":"dx","successTolerance":0.05},{"id":"atom","hint":"Drag Δx to ~0.1.","insight":"Confine an electron to an atom and its momentum uncertainty is enormous — that restless motion is exactly why electrons don't fall into the nucleus.","unlocked":["dx"],"celebration":"medium","instruction":"Set Δx to atomic scale (~0.1 nm).","successType":"value_reached","successValue":0.1,"successTarget":"dx","successTolerance":0.1}],"glossary_data":[{"color":"#3b82f6","words":["position"],"tooltip":"Δx — uncertainty in location","highlightClass":"g42-0"},{"color":"#f59e0b","words":["momentum"],"tooltip":"Δp — pinning one blurs the other","highlightClass":"g42-1"},{"color":"#10b981","words":["uncertainty"],"tooltip":"Their product can't drop below ℏ/2","highlightClass":"g42-2"}]},{"id":43,"slug":"plancks-relation","title":"Planck's Relation","formula":"E=h\\nu","author":"Max Planck","year":"1900","category":"physics","description":"Light comes in packets of energy set by its frequency.","stage":"live-demo","hook":"Why does UV light burn your skin but red light doesn't? Because energy comes in chunks proportional to frequency — and only high-frequency chunks pack enough punch.","hook_action":"Drag the frequency and watch each photon's energy rise.","variables_data":[{"max":30,"min":1,"name":"nu","step":0.1,"unit":null,"color":"primary","symbol":"ν","default":5,"constant":false,"description":"Frequency (×10¹⁴ Hz)"}],"presets_data":[{"label":"Red light","values":{"nu":4.3}},{"label":"Blue light","values":{"nu":6.5}},{"label":"Ultraviolet","values":{"nu":15}}],"lessons_data":[{"id":"touch-nu","hint":"Drag ν to the right.","insight":"Energy is exactly proportional to frequency. Bluer light carries more energy per photon than redder light.","unlocked":["nu"],"celebration":"subtle","instruction":"Drag the frequency ν upward.","successType":"variable_changed","successTarget":"nu"},{"id":"uv","hint":"Drag ν to ~15.","insight":"Above a threshold, each photon finally carries enough energy to knock electrons loose or damage DNA. This quantized jump is the photoelectric effect — Einstein's Nobel work.","unlocked":["nu"],"celebration":"big","instruction":"Push ν up into the ultraviolet (~15).","successType":"value_reached","successValue":15,"successTarget":"nu","successTolerance":2},{"id":"red","hint":"Drag ν to ~4.","insight":"No matter how bright you make red light, each photon is too weak to do UV's job. Energy depends on frequency, not brightness — the insight that launched quantum theory.","unlocked":["nu"],"celebration":"medium","instruction":"Drag ν back down to red light.","successType":"value_reached","successValue":4.3,"successTarget":"nu","successTolerance":1}],"glossary_data":[{"color":"#3b82f6","words":["frequency"],"tooltip":"ν — the colour of the light","highlightClass":"g43-0"},{"color":"#f59e0b","words":["quantum","photon"],"tooltip":"Energy arrives in discrete packets","highlightClass":"g43-1"},{"color":"#ef4444","words":["energy"],"tooltip":"E = hν — the energy of one photon","highlightClass":"g43-2"}]},{"id":44,"slug":"lorentz-force","title":"Lorentz Force","formula":"\\mathbf{F}=q(\\mathbf{E}+\\mathbf{v}\\times\\mathbf{B})","author":"Hendrik Lorentz","year":"1895","category":"physics","description":"The force on a charge moving through electric and magnetic fields.","stage":"live-demo","hook":"A magnet bends a beam of electrons in an old TV; the same force spins every electric motor and paints the northern lights across the sky.","hook_action":"Drag the charge's speed and the magnetic field strength.","variables_data":[{"max":5,"min":-5,"name":"q","step":0.1,"unit":"µC","color":"primary","symbol":"q","default":1,"constant":false,"description":"Charge"},{"max":10,"min":0,"name":"v","step":0.1,"unit":null,"color":"secondary","symbol":"v","default":5,"constant":false,"description":"Speed (×10⁶ m/s)"},{"max":5,"min":0,"name":"B","step":0.1,"unit":"T","color":"tertiary","symbol":"B","default":1,"constant":false,"description":"Magnetic field"}],"presets_data":[{"label":"At rest","values":{"B":2,"q":1,"v":0}},{"label":"Cyclotron","values":{"B":2,"q":1,"v":8}},{"label":"Strong field","values":{"B":5,"q":1,"v":5}}],"lessons_data":[{"id":"touch-v","hint":"Drag v to the right.","insight":"The magnetic part of the force only acts on moving charges — and grows with speed. A stationary charge feels nothing from the magnetic field.","unlocked":["q","v","B"],"celebration":"subtle","instruction":"Drag the speed v upward.","successType":"variable_changed","successTarget":"v"},{"id":"field","hint":"Drag B up.","insight":"A stronger field curves the charge more tightly. Cyclotrons and mass spectrometers use exactly this to bend particles into circles.","unlocked":["q","v","B"],"celebration":"medium","instruction":"Now raise the magnetic field B.","successType":"variable_changed","successTarget":"B"},{"id":"rest","hint":"Drag v to 0.","insight":"With v = 0 the magnetic force vanishes and only the electric field pushes. The v×B cross product is why magnetism is really electricity seen from a moving frame.","unlocked":["q","v","B"],"celebration":"big","instruction":"Set the speed v to zero.","successType":"value_reached","successValue":0,"successTarget":"v","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["charge"],"tooltip":"q — the moving particle's charge","highlightClass":"g44-0"},{"color":"#f59e0b","words":["velocity"],"tooltip":"v — only moving charges feel the magnetic part","highlightClass":"g44-1"},{"color":"#10b981","words":["magnetic field","field"],"tooltip":"B — bends the path perpendicular to motion","highlightClass":"g44-2"}]},{"id":45,"slug":"hardy-weinberg-principle","title":"Hardy-Weinberg Principle","formula":"p^2+2pq+q^2=1","author":"Hardy, Weinberg","year":"1908","category":"biology","description":"How allele frequencies stay constant in an idealized population.","stage":"live-demo","hook":"If brown eyes are dominant, why don't they take over and eliminate blue eyes? Hardy-Weinberg shows that, left alone, gene frequencies don't drift — they hold steady.","hook_action":"Drag the allele frequency p and watch the genotype mix.","variables_data":[{"max":1,"min":0,"name":"p","step":0.01,"unit":null,"color":"primary","symbol":"p","default":0.5,"constant":false,"description":"Frequency of dominant allele"}],"presets_data":[{"label":"Even split","values":{"p":0.5}},{"label":"Common allele","values":{"p":0.9}},{"label":"Rare allele","values":{"p":0.1}}],"lessons_data":[{"id":"touch-p","hint":"Drag p.","insight":"p is the fraction of one allele; q = 1 − p is the other. The three genotype frequencies (p², 2pq, q²) always sum to 1.","unlocked":["p"],"celebration":"subtle","instruction":"Drag the allele frequency p.","successType":"variable_changed","successTarget":"p"},{"id":"carriers","hint":"Drag p to ~0.5.","insight":"Heterozygous carriers (2pq) peak when the alleles are balanced — half the population at p = 0.5. This is why recessive traits hide in carriers.","unlocked":["p"],"celebration":"medium","instruction":"Set p to about 0.5.","successType":"value_reached","successValue":0.5,"successTarget":"p","successTolerance":0.05},{"id":"rare","hint":"Drag p toward 0.1.","insight":"When an allele is rare, almost every copy hides in a carrier rather than showing up as the recessive trait. That's why rare genetic diseases persist quietly for generations.","unlocked":["p"],"celebration":"big","instruction":"Now drag p down toward 0.1.","successType":"value_reached","successValue":0.1,"successTarget":"p","successTolerance":0.05}],"glossary_data":[{"color":"#3b82f6","words":["allele frequency","allele"],"tooltip":"p — fraction of one allele in the pool","highlightClass":"g45-0"},{"color":"#f59e0b","words":["genotype"],"tooltip":"p², 2pq, q² — the expected genotype shares","highlightClass":"g45-1"},{"color":"#10b981","words":["equilibrium"],"tooltip":"Frequencies stay fixed without selection","highlightClass":"g45-2"}]},{"id":46,"slug":"logistic-growth","title":"Logistic Growth","formula":"\\frac{dN}{dt}=rN\\left(1-\\frac{N}{K}\\right)","author":"Pierre Verhulst","year":"1838","category":"biology","description":"Populations grow fast, then level off at the limit of their resources.","stage":"live-demo","hook":"Bacteria in a dish double and double — then suddenly stop. No environment has infinite food. Logistic growth is the S-curve every real population follows.","hook_action":"Drag the population, growth rate, and carrying capacity.","variables_data":[{"max":1000,"min":0,"name":"N","step":1,"unit":null,"color":"primary","symbol":"N","default":50,"constant":false,"description":"Current population"},{"max":2,"min":0,"name":"r","step":0.01,"unit":null,"color":"secondary","symbol":"r","default":0.5,"constant":false,"description":"Growth rate"},{"max":1000,"min":100,"name":"K","step":10,"unit":null,"color":"tertiary","symbol":"K","default":500,"constant":false,"description":"Carrying capacity"}],"presets_data":[{"label":"Early boom","values":{"K":500,"N":50,"r":0.8}},{"label":"Near capacity","values":{"K":500,"N":480,"r":0.8}},{"label":"Slow grower","values":{"K":500,"N":50,"r":0.1}}],"lessons_data":[{"id":"touch-N","hint":"Drag N to the right.","insight":"Growth is fastest when N is small and there's room to spare. As N approaches the carrying capacity K, the (1 − N/K) brake kicks in.","unlocked":["N","r","K"],"celebration":"subtle","instruction":"Drag the population N upward toward K.","successType":"variable_changed","successTarget":"N"},{"id":"full","hint":"Drag N close to 500.","insight":"Near capacity, growth nearly stops — the resources are used up. This is the flat top of the S-curve where the population plateaus.","unlocked":["N","r","K"],"celebration":"medium","instruction":"Set N very close to K.","successType":"value_reached","successValue":480,"successTarget":"N","successTolerance":30},{"id":"rate","hint":"Drag r.","insight":"r sets how quickly the population climbs the curve. Push r too high in the discrete version of this equation and you get chaos — the same logistic map behind chaos theory.","unlocked":["N","r","K"],"celebration":"big","instruction":"Change the growth rate r.","successType":"variable_changed","successTarget":"r"}],"glossary_data":[{"color":"#3b82f6","words":["population"],"tooltip":"N — the current number of individuals","highlightClass":"g46-0"},{"color":"#f59e0b","words":["growth rate","rate"],"tooltip":"r — the intrinsic reproduction rate","highlightClass":"g46-1"},{"color":"#10b981","words":["carrying capacity","capacity"],"tooltip":"K — the ceiling the environment allows","highlightClass":"g46-2"}]},{"id":47,"slug":"michaelis-menten-kinetics","title":"Michaelis-Menten Kinetics","formula":"v=\\frac{V_{max}[S]}{K_m+[S]}","author":"Michaelis, Menten","year":"1913","category":"biology","description":"How fast an enzyme works as substrate piles up.","stage":"live-demo","hook":"An enzyme speeds up as you feed it more substrate — but only to a point. Once every enzyme is busy, adding more does nothing. This curve describes nearly all enzymes.","hook_action":"Drag the substrate concentration and the enzyme's parameters.","variables_data":[{"max":100,"min":0,"name":"S","step":0.5,"unit":"µM","color":"primary","symbol":"[S]","default":10,"constant":false,"description":"Substrate concentration"},{"max":50,"min":0.5,"name":"Km","step":0.5,"unit":"µM","color":"secondary","symbol":"K_m","default":10,"constant":false,"description":"Michaelis constant"},{"max":100,"min":1,"name":"Vmax","step":1,"unit":null,"color":"tertiary","symbol":"V_max","default":50,"constant":false,"description":"Maximum rate"}],"presets_data":[{"label":"Starved","values":{"S":2,"Km":10,"Vmax":50}},{"label":"Saturated","values":{"S":90,"Km":10,"Vmax":50}},{"label":"High affinity","values":{"S":10,"Km":1,"Vmax":50}}],"lessons_data":[{"id":"touch-S","hint":"Drag [S] to the right.","insight":"At low substrate the rate climbs almost linearly — the enzyme has plenty of free capacity.","unlocked":["S","Km","Vmax"],"celebration":"subtle","instruction":"Drag the substrate concentration [S] upward.","successType":"variable_changed","successTarget":"S"},{"id":"saturate","hint":"Drag [S] toward 90.","insight":"Eventually every enzyme is occupied and the rate flattens at Vmax. More substrate can't help when there are no free enzymes left.","unlocked":["S","Km","Vmax"],"celebration":"medium","instruction":"Push [S] up high.","successType":"value_reached","successValue":90,"successTarget":"S","successTolerance":15},{"id":"km","hint":"Drag K_m down.","insight":"K_m is the substrate level for half-maximum speed — a measure of affinity. A small K_m means the enzyme grabs substrate eagerly and saturates early.","unlocked":["S","Km","Vmax"],"celebration":"big","instruction":"Lower the Michaelis constant K_m.","successType":"variable_changed","successTarget":"Km"}],"glossary_data":[{"color":"#3b82f6","words":["substrate"],"tooltip":"[S] — concentration feeding the enzyme","highlightClass":"g47-0"},{"color":"#f59e0b","words":["affinity"],"tooltip":"K_m — the [S] giving half the maximum rate","highlightClass":"g47-1"},{"color":"#10b981","words":["maximum rate"],"tooltip":"V_max — speed when the enzyme is saturated","highlightClass":"g47-2"}]},{"id":48,"slug":"dna-base-pairing","title":"DNA Base Pairing","formula":"A\\equiv T,\\;G\\equiv C","author":"Watson, Crick","year":"1953","category":"biology","description":"The complementary rule that lets DNA copy itself.","stage":"live-demo","hook":"A always pairs with T, G always with C. That rigid rule is why one strand of DNA contains all the information to rebuild the other — the basis of all inheritance.","hook_action":"Drag the GC content and watch how tightly the helix holds together.","variables_data":[{"max":100,"min":0,"name":"gc","step":1,"unit":"%","color":"primary","symbol":"GC%","default":50,"constant":false,"description":"Fraction of G-C pairs"}],"presets_data":[{"label":"AT-rich","values":{"gc":20}},{"label":"Balanced","values":{"gc":50}},{"label":"GC-rich","values":{"gc":80}}],"lessons_data":[{"id":"touch-gc","hint":"Drag GC% to the right.","insight":"G-C pairs are held by three hydrogen bonds; A-T pairs by only two. More G-C means a more tightly bound double helix.","unlocked":["gc"],"celebration":"subtle","instruction":"Drag the GC content upward.","successType":"variable_changed","successTarget":"gc"},{"id":"hot","hint":"Drag GC% toward 80.","insight":"GC-rich DNA needs more heat to separate the strands — a higher melting temperature. Organisms in hot springs tend to have GC-rich genomes for exactly this reason.","unlocked":["gc"],"celebration":"big","instruction":"Push GC content up toward 80%.","successType":"value_reached","successValue":80,"successTarget":"gc","successTolerance":10},{"id":"at","hint":"Drag GC% toward 20.","insight":"AT-rich regions unzip easily — which is why replication and transcription often start there. The pairing rule turns sequence into mechanical behavior.","unlocked":["gc"],"celebration":"medium","instruction":"Now drag GC content down low.","successType":"value_reached","successValue":20,"successTarget":"gc","successTolerance":10}],"glossary_data":[{"color":"#3b82f6","words":["GC content","GC"],"tooltip":"Fraction of G–C base pairs","highlightClass":"g48-0"},{"color":"#f59e0b","words":["bonds"],"tooltip":"G–C share three hydrogen bonds, A–T only two","highlightClass":"g48-1"},{"color":"#10b981","words":["stability","melting"],"tooltip":"More G–C makes a hotter-melting, stabler helix","highlightClass":"g48-2"}]},{"id":49,"slug":"goldman-equation","title":"Goldman Equation","formula":"V_m=\\frac{RT}{F}\\ln\\frac{P_K[K^+]_o+P_{Na}[Na^+]_o}{P_K[K^+]_i+P_{Na}[Na^+]_i}","author":"Goldman, Hodgkin, Katz","year":"1943","category":"biology","description":"The voltage across a living cell's membrane.","stage":"live-demo","hook":"Every neuron in your brain holds a tiny voltage across its membrane, set by ion concentrations. Flip that voltage and a thought fires. The Goldman equation gives its resting value.","hook_action":"Drag the outside potassium and sodium concentrations.","variables_data":[{"max":20,"min":1,"name":"Ko","step":0.5,"unit":"mM","color":"primary","symbol":"[K⁺]ₒ","default":4,"constant":false,"description":"Outside potassium"},{"max":200,"min":50,"name":"Nao","step":1,"unit":"mM","color":"secondary","symbol":"[Na⁺]ₒ","default":145,"constant":false,"description":"Outside sodium"}],"presets_data":[{"label":"Resting","values":{"Ko":4,"Nao":145}},{"label":"High potassium","values":{"Ko":15,"Nao":145}},{"label":"Low sodium","values":{"Ko":4,"Nao":70}}],"lessons_data":[{"id":"touch-K","hint":"Drag [K⁺]ₒ to the right.","insight":"The membrane is far more permeable to potassium, so external K⁺ dominates the resting voltage. Raise it and the cell depolarizes.","unlocked":["Ko","Nao"],"celebration":"subtle","instruction":"Drag the outside potassium concentration upward.","successType":"variable_changed","successTarget":"Ko"},{"id":"depolarize","hint":"Drag [K⁺]ₒ to ~15.","insight":"High external potassium pulls the membrane voltage toward zero — which is why potassium imbalances can stop the heart. Tiny ion changes carry life-or-death stakes.","unlocked":["Ko","Nao"],"celebration":"big","instruction":"Push outside potassium up toward 15 mM.","successType":"value_reached","successValue":15,"successTarget":"Ko","successTolerance":2},{"id":"sodium","hint":"Drag [Na⁺]ₒ.","insight":"Sodium has only a small effect at rest because the membrane barely lets it through. But open sodium channels and that stored gradient drives the spike of a nerve impulse.","unlocked":["Ko","Nao"],"celebration":"medium","instruction":"Now change the outside sodium.","successType":"variable_changed","successTarget":"Nao"}],"glossary_data":[{"color":"#3b82f6","words":["potassium"],"tooltip":"[K⁺] — the dominant ion at rest","highlightClass":"g49-0"},{"color":"#f59e0b","words":["sodium"],"tooltip":"[Na⁺] — drives the depolarising swing","highlightClass":"g49-1"},{"color":"#ef4444","words":["membrane potential","potential"],"tooltip":"Resting voltage across the membrane","highlightClass":"g49-2"}]},{"id":50,"slug":"lotka-volterra-equations","title":"Lotka-Volterra Equations","formula":"\\frac{dx}{dt}=\\alpha x-\\beta xy","author":"Lotka, Volterra","year":"1925","category":"biology","description":"The boom-and-bust cycle of predators and prey.","stage":"live-demo","hook":"Lots of rabbits, foxes feast and multiply; too many foxes, rabbits crash, then foxes starve. Predator and prey populations chase each other in endless cycles.","hook_action":"Drag the prey growth rate and the predation rate.","variables_data":[{"max":2,"min":0,"name":"alpha","step":0.01,"unit":null,"color":"primary","symbol":"α","default":1,"constant":false,"description":"Prey growth rate"},{"max":1,"min":0,"name":"beta","step":0.01,"unit":null,"color":"secondary","symbol":"β","default":0.1,"constant":false,"description":"Predation rate"},{"max":100,"min":0,"name":"x","step":1,"unit":null,"color":"tertiary","symbol":"x","default":40,"constant":false,"description":"Prey population"}],"presets_data":[{"label":"Prey boom","values":{"x":40,"beta":0.05,"alpha":1.5}},{"label":"Heavy predation","values":{"x":40,"beta":0.5,"alpha":1}},{"label":"Balance","values":{"x":40,"beta":0.1,"alpha":1}}],"lessons_data":[{"id":"touch-alpha","hint":"Drag α to the right.","insight":"With few predators, prey multiply almost exponentially — the αx term. This is the boom half of the cycle.","unlocked":["alpha","beta","x"],"celebration":"subtle","instruction":"Drag the prey growth rate α upward.","successType":"variable_changed","successTarget":"alpha"},{"id":"predation","hint":"Drag β up.","insight":"The βxy term is where predators eat prey — it grows when both are abundant. Crank it up and the prey population gets driven down hard.","unlocked":["alpha","beta","x"],"celebration":"medium","instruction":"Now raise the predation rate β.","successType":"variable_changed","successTarget":"beta"},{"id":"cycle","hint":"Drag β toward 0.5.","insight":"Strong predation crashes the prey, then the predators starve, then prey recover — the famous out-of-phase cycle seen in real lynx and hare records.","unlocked":["alpha","beta","x"],"celebration":"big","instruction":"Set β high while α stays moderate.","successType":"value_reached","successValue":0.5,"successTarget":"beta","successTolerance":0.15}],"glossary_data":[{"color":"#3b82f6","words":["prey"],"tooltip":"x — the prey population","highlightClass":"g50-0"},{"color":"#f59e0b","words":["predation"],"tooltip":"β — rate at which predators consume prey","highlightClass":"g50-1"},{"color":"#10b981","words":["oscillation","cycle"],"tooltip":"Predator and prey rise and fall out of phase","highlightClass":"g50-2"}]},{"id":51,"slug":"compound-interest","title":"Compound Interest","formula":"A=P\\left(1+\\frac{r}{n}\\right)^{nt}","author":"Jacob Bernoulli","year":"1683","category":"economics","description":"Money that earns money on money — exponential growth.","stage":"live-demo","hook":"Save $1,000 at 7% and in 40 years it's nearly $15,000 — you barely lifted a finger. Compound interest is the closest thing to magic in personal finance.","hook_action":"Drag the rate and the number of years and watch the balance snowball.","variables_data":[{"max":10000,"min":100,"name":"P","step":100,"unit":"$","color":"primary","symbol":"P","default":1000,"constant":false,"description":"Principal"},{"max":0.2,"min":0,"name":"r","step":0.001,"unit":null,"color":"secondary","symbol":"r","default":0.05,"constant":false,"description":"Annual rate"},{"max":40,"min":1,"name":"t","step":1,"unit":null,"color":"tertiary","symbol":"t","default":10,"constant":false,"description":"Years"}],"presets_data":[{"label":"Savings account","values":{"P":1000,"r":0.02,"t":10}},{"label":"Stock market","values":{"P":1000,"r":0.08,"t":30}},{"label":"Lifetime","values":{"P":1000,"r":0.07,"t":40}}],"lessons_data":[{"id":"touch-t","hint":"Drag t to the right.","insight":"Because t is in the exponent, balance grows faster and faster over time. The longest stretch of years does the heaviest lifting.","unlocked":["P","r","t"],"celebration":"subtle","instruction":"Drag the number of years t upward.","successType":"variable_changed","successTarget":"t"},{"id":"long","hint":"Drag t to 40.","insight":"Most of the growth happens in the final years — the curve bends sharply upward. Starting early beats saving more later.","unlocked":["P","r","t"],"celebration":"big","instruction":"Push t out to 40 years.","successType":"value_reached","successValue":40,"successTarget":"t","successTolerance":4},{"id":"rate","hint":"Drag r.","insight":"Even a couple of extra percentage points compounds into a huge difference over decades. This is why fees and returns matter enormously over a lifetime.","unlocked":["P","r","t"],"celebration":"medium","instruction":"Now change the interest rate r.","successType":"variable_changed","successTarget":"r"}],"glossary_data":[{"color":"#3b82f6","words":["principal"],"tooltip":"P — the starting amount","highlightClass":"g51-0"},{"color":"#f59e0b","words":["rate"],"tooltip":"r — the interest rate per period","highlightClass":"g51-1"},{"color":"#10b981","words":["compounding","exponential"],"tooltip":"Interest earns interest over time","highlightClass":"g51-2"}]},{"id":52,"slug":"supply-and-demand","title":"Supply and Demand","formula":"Q_d=a-bP,\\;Q_s=c+dP","author":"Alfred Marshall","year":"1890","category":"economics","description":"Where buyers and sellers meet sets the price.","stage":"live-demo","hook":"Raise the price and shoppers buy less while producers make more. The price where those two forces balance is the market price — no committee required.","hook_action":"Drag the price and watch quantity demanded and supplied diverge.","variables_data":[{"max":100,"min":0,"name":"P","step":1,"unit":"$","color":"primary","symbol":"P","default":50,"constant":false,"description":"Price"}],"presets_data":[{"label":"Bargain price","values":{"P":20}},{"label":"Equilibrium","values":{"P":50}},{"label":"Overpriced","values":{"P":85}}],"lessons_data":[{"id":"touch-P","hint":"Drag P to the right.","insight":"As price rises, quantity demanded falls (a − bP) while quantity supplied rises (c + dP). Buyers and sellers pull in opposite directions.","unlocked":["P"],"celebration":"subtle","instruction":"Drag the price P upward.","successType":"variable_changed","successTarget":"P"},{"id":"high","hint":"Drag P toward 85.","insight":"At a high price, supply outruns demand — a surplus of unsold goods. That glut pressures sellers to cut prices back down.","unlocked":["P"],"celebration":"medium","instruction":"Push the price up high.","successType":"value_reached","successValue":85,"successTarget":"P","successTolerance":10},{"id":"equilibrium","hint":"Drag P to ~50.","insight":"At equilibrium, quantity demanded equals quantity supplied — the market clears with no shortage or surplus. This self-correcting balance is the heart of free markets.","unlocked":["P"],"celebration":"big","instruction":"Now bring the price to around 50.","successType":"value_reached","successValue":50,"successTarget":"P","successTolerance":5}],"glossary_data":[{"color":"#3b82f6","words":["price"],"tooltip":"P — adjusts until the market clears","highlightClass":"g52-0"},{"color":"#f59e0b","words":["equilibrium"],"tooltip":"Where quantity supplied meets quantity demanded","highlightClass":"g52-1"},{"color":"#10b981","words":["shortage","surplus"],"tooltip":"A mispriced market over- or under-supplies","highlightClass":"g52-2"}]},{"id":53,"slug":"gdp-expenditure","title":"GDP Expenditure","formula":"Y=C+I+G+(X-M)","author":"Simon Kuznets","year":"1934","category":"economics","description":"A nation's output, added up from how it's spent.","stage":"live-demo","hook":"When politicians argue about \"the economy\", this is the number. GDP sums everything a country produces — by adding up consumption, investment, government, and net trade.","hook_action":"Drag the spending components and watch total output respond.","variables_data":[{"max":100,"min":0,"name":"C","step":1,"unit":null,"color":"primary","symbol":"C","default":60,"constant":false,"description":"Consumption"},{"max":50,"min":0,"name":"I","step":1,"unit":null,"color":"secondary","symbol":"I","default":15,"constant":false,"description":"Investment"},{"max":50,"min":0,"name":"G","step":1,"unit":null,"color":"tertiary","symbol":"G","default":20,"constant":false,"description":"Government spending"}],"presets_data":[{"label":"Healthy economy","values":{"C":65,"G":20,"I":18}},{"label":"Recession","values":{"C":45,"G":20,"I":5}},{"label":"Stimulus","values":{"C":55,"G":40,"I":12}}],"lessons_data":[{"id":"touch-C","hint":"Drag C to the right.","insight":"Consumer spending is usually the biggest slice of GDP — often around two-thirds. When shoppers stop spending, output sags.","unlocked":["C","I","G"],"celebration":"subtle","instruction":"Drag consumption C upward.","successType":"variable_changed","successTarget":"C"},{"id":"stimulus","hint":"Drag G to ~40.","insight":"In a downturn, governments boost G to make up for falling C and I. That's the logic behind stimulus packages and public works programs.","unlocked":["C","I","G"],"celebration":"big","instruction":"Raise government spending G toward 40.","successType":"value_reached","successValue":40,"successTarget":"G","successTolerance":8},{"id":"investment","hint":"Drag I.","insight":"Investment — factories, housing, equipment — is the most volatile component, swinging hard between booms and busts. The (X − M) trade term can be positive or negative.","unlocked":["C","I","G"],"celebration":"medium","instruction":"Change investment I.","successType":"variable_changed","successTarget":"I"}],"glossary_data":[{"color":"#3b82f6","words":["consumption"],"tooltip":"C — household spending","highlightClass":"g53-0"},{"color":"#f59e0b","words":["investment"],"tooltip":"I — business spending on capital","highlightClass":"g53-1"},{"color":"#10b981","words":["government"],"tooltip":"G — public spending","highlightClass":"g53-2"}]},{"id":54,"slug":"fisher-equation","title":"Fisher Equation","formula":"1+i=(1+r)(1+\\pi)","author":"Irving Fisher","year":"1907","category":"economics","description":"How inflation eats into the interest you actually earn.","stage":"live-demo","hook":"Your savings account pays 3%, but prices rose 4% — you actually lost money. The Fisher equation separates the headline rate from your real return.","hook_action":"Drag the real rate and inflation to see the nominal rate change.","variables_data":[{"max":0.1,"min":-0.05,"name":"r","step":0.001,"unit":null,"color":"primary","symbol":"r","default":0.02,"constant":false,"description":"Real interest rate"},{"max":0.2,"min":0,"name":"pi","step":0.001,"unit":null,"color":"secondary","symbol":"π","default":0.03,"constant":false,"description":"Inflation rate"}],"presets_data":[{"label":"Calm","values":{"r":0.02,"pi":0.02}},{"label":"High inflation","values":{"r":0.02,"pi":0.12}},{"label":"Negative real","values":{"r":-0.03,"pi":0.06}}],"lessons_data":[{"id":"touch-pi","hint":"Drag π to the right.","insight":"To keep the same real return, the nominal rate i must rise with inflation. Lenders demand it; this is why rates climb when prices do.","unlocked":["r","pi"],"celebration":"subtle","instruction":"Drag the inflation rate π upward.","successType":"variable_changed","successTarget":"pi"},{"id":"high","hint":"Drag π to ~0.12.","insight":"When inflation spikes, nominal rates have to chase it just to break even. Borrowers love high inflation; savers in cash get quietly robbed.","unlocked":["r","pi"],"celebration":"big","instruction":"Push inflation up toward 12%.","successType":"value_reached","successValue":0.12,"successTarget":"pi","successTolerance":0.02},{"id":"real","hint":"Drag r below 0.","insight":"A negative real rate means your money loses purchasing power even while it earns interest. Central banks sometimes engineer this on purpose to push people to spend.","unlocked":["r","pi"],"celebration":"medium","instruction":"Set the real rate r negative.","successType":"value_reached","successValue":-0.03,"successTarget":"r","successTolerance":0.02}],"glossary_data":[{"color":"#3b82f6","words":["nominal"],"tooltip":"The stated, before-inflation interest rate","highlightClass":"g54-0"},{"color":"#f59e0b","words":["inflation"],"tooltip":"π — erodes purchasing power","highlightClass":"g54-1"},{"color":"#ef4444","words":["real rate","real"],"tooltip":"Nominal rate minus inflation","highlightClass":"g54-2"}]},{"id":55,"slug":"capital-asset-pricing-model","title":"Capital Asset Pricing Model","formula":"E(R_i)=R_f+\\beta_i(E(R_m)-R_f)","author":"William Sharpe","year":"1964","category":"economics","description":"The return you should expect for taking on market risk.","stage":"live-demo","hook":"Why should a volatile tech stock pay more than a government bond? CAPM says: only the risk you can't diversify away earns extra return — and beta measures it.","hook_action":"Drag beta and the market return to price the risk.","variables_data":[{"max":3,"min":0,"name":"beta","step":0.05,"unit":null,"color":"primary","symbol":"β","default":1,"constant":false,"description":"Beta (market sensitivity)"},{"max":0.1,"min":0,"name":"Rf","step":0.001,"unit":null,"color":"secondary","symbol":"R_f","default":0.03,"constant":false,"description":"Risk-free rate"},{"max":0.2,"min":0,"name":"Rm","step":0.001,"unit":null,"color":"tertiary","symbol":"R_m","default":0.1,"constant":false,"description":"Expected market return"}],"presets_data":[{"label":"Treasury bond","values":{"Rf":0.03,"Rm":0.1,"beta":0}},{"label":"Index fund","values":{"Rf":0.03,"Rm":0.1,"beta":1}},{"label":"Volatile stock","values":{"Rf":0.03,"Rm":0.1,"beta":2}}],"lessons_data":[{"id":"touch-beta","hint":"Drag β to the right.","insight":"Beta measures how much a stock swings with the market. Higher beta means more risk — and CAPM says investors demand more expected return to bear it.","unlocked":["beta","Rf","Rm"],"celebration":"subtle","instruction":"Drag beta β upward.","successType":"variable_changed","successTarget":"beta"},{"id":"safe","hint":"Drag β to 0.","insight":"A beta of zero means no market risk, so the expected return collapses to the risk-free rate. That's the return on a government bond — the floor for everything else.","unlocked":["beta","Rf","Rm"],"celebration":"medium","instruction":"Set beta to 0.","successType":"value_reached","successValue":0,"successTarget":"beta","successTolerance":0.2},{"id":"aggressive","hint":"Drag β to 2.","insight":"A beta of 2 amplifies the market's risk premium twofold — bigger gains in booms, bigger losses in busts. CAPM turns that risk into a precise required return.","unlocked":["beta","Rf","Rm"],"celebration":"big","instruction":"Push beta up to 2.","successType":"value_reached","successValue":2,"successTarget":"beta","successTolerance":0.3}],"glossary_data":[{"color":"#3b82f6","words":["beta"],"tooltip":"β — how much an asset swings with the market","highlightClass":"g55-0"},{"color":"#f59e0b","words":["risk-free","risk"],"tooltip":"R_f — the return that carries no risk","highlightClass":"g55-1"},{"color":"#10b981","words":["market return","market"],"tooltip":"R_m — return of the whole market","highlightClass":"g55-2"}]},{"id":56,"slug":"nash-equilibrium","title":"Nash Equilibrium","formula":"u_i(s_i^*,s_{-i}^*)\\ge u_i(s_i,s_{-i}^*)","author":"John Nash","year":"1950","category":"economics","description":"A stable outcome where no one can gain by changing alone.","stage":"live-demo","hook":"Two suspects are interrogated separately. Each is better off betraying the other — so both confess, even though staying silent would help them both. Welcome to the prisoner's dilemma.","hook_action":"Drag the temptation to defect and watch cooperation collapse.","variables_data":[{"max":5,"min":0,"name":"T","step":0.1,"unit":null,"color":"primary","symbol":"T","default":3,"constant":false,"description":"Temptation to defect"}],"presets_data":[{"label":"Cooperative","values":{"T":0.5}},{"label":"Prisoner's dilemma","values":{"T":3}},{"label":"Strong temptation","values":{"T":5}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"As betraying becomes more rewarding, cooperation gets harder to sustain. Each player reasons the same way, independently.","unlocked":["T"],"celebration":"subtle","instruction":"Drag the temptation to defect T upward.","successType":"variable_changed","successTarget":"T"},{"id":"dilemma","hint":"Drag T to ~3 or higher.","insight":"When defecting always beats cooperating no matter what the other does, both defect — even though mutual cooperation would have been better. That mutual betrayal is the Nash equilibrium.","unlocked":["T"],"celebration":"big","instruction":"Push T up into prisoner's-dilemma territory.","successType":"value_reached","successValue":3,"successTarget":"T","successTolerance":0.6},{"id":"cooperate","hint":"Drag T toward 0.5.","insight":"With little temptation, cooperation becomes the stable equilibrium. Repeated games, reputations, and contracts all work by lowering the payoff to defection.","unlocked":["T"],"celebration":"medium","instruction":"Now drag T back down low.","successType":"value_reached","successValue":0.5,"successTarget":"T","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["strategy"],"tooltip":"A plan no player wants to change alone","highlightClass":"g56-0"},{"color":"#f59e0b","words":["payoff"],"tooltip":"The reward each outcome pays out","highlightClass":"g56-1"},{"color":"#10b981","words":["equilibrium"],"tooltip":"Stable when unilateral defection doesn't help","highlightClass":"g56-2"}]},{"id":57,"slug":"cobb-douglas-production","title":"Cobb-Douglas Production","formula":"Y=AK^\\alpha L^{1-\\alpha}","author":"Cobb, Douglas","year":"1928","category":"economics","description":"How capital and labor combine to produce output.","stage":"live-demo","hook":"A factory needs both machines and workers. Add more of either and output grows — but each new machine, with workers fixed, helps a little less. Diminishing returns, quantified.","hook_action":"Drag capital, labor, and the capital share α.","variables_data":[{"max":100,"min":1,"name":"K","step":1,"unit":null,"color":"primary","symbol":"K","default":50,"constant":false,"description":"Capital"},{"max":100,"min":1,"name":"L","step":1,"unit":null,"color":"secondary","symbol":"L","default":50,"constant":false,"description":"Labor"},{"max":1,"min":0,"name":"alpha","step":0.01,"unit":null,"color":"tertiary","symbol":"α","default":0.3,"constant":false,"description":"Capital share"}],"presets_data":[{"label":"Balanced","values":{"K":50,"L":50,"alpha":0.3}},{"label":"Capital-heavy","values":{"K":90,"L":20,"alpha":0.6}},{"label":"Labor-heavy","values":{"K":20,"L":90,"alpha":0.2}}],"lessons_data":[{"id":"touch-K","hint":"Drag K to the right.","insight":"Adding capital raises output — but because the exponent α is less than 1, each extra unit adds a little less. That's diminishing returns.","unlocked":["K","L","alpha"],"celebration":"subtle","instruction":"Drag capital K upward.","successType":"variable_changed","successTarget":"K"},{"id":"labor","hint":"Drag L up.","insight":"Labor and capital both contribute, weighted by α and (1 − α). Output grows fastest when you scale both together rather than piling on just one.","unlocked":["K","L","alpha"],"celebration":"medium","instruction":"Now increase labor L.","successType":"variable_changed","successTarget":"L"},{"id":"share","hint":"Drag α.","insight":"α sets how much capital versus labor drives output. Economists estimate it around 0.3 for whole economies — labor earns roughly two-thirds of the pie.","unlocked":["K","L","alpha"],"celebration":"big","instruction":"Change the capital share α.","successType":"variable_changed","successTarget":"alpha"}],"glossary_data":[{"color":"#3b82f6","words":["capital"],"tooltip":"K — machines and tools","highlightClass":"g57-0"},{"color":"#f59e0b","words":["labor","labour"],"tooltip":"L — the workforce","highlightClass":"g57-1"},{"color":"#ef4444","words":["output"],"tooltip":"Production from combining capital and labour","highlightClass":"g57-2"}]},{"id":58,"slug":"standard-deviation","title":"Standard Deviation","formula":"\\sigma=\\sqrt{\\frac{1}{N}\\sum(x_i-\\mu)^2}","author":"Karl Pearson","year":"1893","category":"statistics","description":"A single number for how spread out data is.","stage":"live-demo","hook":"Two classes both average 75 on a test. In one, everyone scored near 75; in the other, scores ranged from 40 to 100. The average hides that — standard deviation reveals it.","hook_action":"Drag the spread and watch the data tighten or scatter.","variables_data":[{"max":25,"min":0.5,"name":"spread","step":0.5,"unit":null,"color":"primary","symbol":"σ","default":5,"constant":false,"description":"Spread of the data"}],"presets_data":[{"label":"Consistent","values":{"spread":2}},{"label":"Typical","values":{"spread":8}},{"label":"All over the place","values":{"spread":22}}],"lessons_data":[{"id":"touch-spread","hint":"Drag σ to the right.","insight":"Standard deviation measures the typical distance of a data point from the mean. A bigger σ means the data is more scattered.","unlocked":["spread"],"celebration":"subtle","instruction":"Drag the spread σ upward.","successType":"variable_changed","successTarget":"spread"},{"id":"tight","hint":"Drag σ toward 2.","insight":"A small σ means values cluster tightly around the average — predictable, consistent data. Manufacturing quality control lives and dies by keeping σ small.","unlocked":["spread"],"celebration":"medium","instruction":"Drag the spread down low.","successType":"value_reached","successValue":2,"successTarget":"spread","successTolerance":1.5},{"id":"wide","hint":"Drag σ toward 22.","insight":"A large σ means the average tells you little about any single point. About 68% of normal data falls within one σ of the mean — the rule that turns σ into probability.","unlocked":["spread"],"celebration":"big","instruction":"Now push the spread up high.","successType":"value_reached","successValue":22,"successTarget":"spread","successTolerance":3}],"glossary_data":[{"color":"#3b82f6","words":["spread","deviation"],"tooltip":"σ — the typical distance from the mean","highlightClass":"g58-0"},{"color":"#f59e0b","words":["variance"],"tooltip":"σ² — the average squared deviation","highlightClass":"g58-1"},{"color":"#10b981","words":["mean"],"tooltip":"The centre the spread is measured from","highlightClass":"g58-2"}]},{"id":59,"slug":"linear-regression","title":"Linear Regression","formula":"y=\\beta_0+\\beta_1 x+\\varepsilon","author":"Francis Galton","year":"1886","category":"statistics","description":"Drawing the best straight line through a cloud of points.","stage":"live-demo","hook":"Does studying more raise your grade? Plot the data and fit a line. Its slope tells you how much, on average, one variable moves with another — the workhorse of data science.","hook_action":"Drag the slope and intercept to fit the trend.","variables_data":[{"max":5,"min":-5,"name":"beta1","step":0.1,"unit":null,"color":"primary","symbol":"β₁","default":1,"constant":false,"description":"Slope"},{"max":10,"min":-10,"name":"beta0","step":0.1,"unit":null,"color":"secondary","symbol":"β₀","default":0,"constant":false,"description":"Intercept"}],"presets_data":[{"label":"Flat","values":{"beta0":5,"beta1":0}},{"label":"Rising trend","values":{"beta0":1,"beta1":2}},{"label":"Falling trend","values":{"beta0":8,"beta1":-1.5}}],"lessons_data":[{"id":"touch-slope","hint":"Drag β₁.","insight":"The slope is the heart of the model: how much y changes for each one-unit step in x. A positive slope rises, a negative one falls.","unlocked":["beta1","beta0"],"celebration":"subtle","instruction":"Drag the slope β₁.","successType":"variable_changed","successTarget":"beta1"},{"id":"flat","hint":"Drag β₁ to 0.","insight":"A zero slope means x tells you nothing about y — no relationship. Detecting whether the true slope is really nonzero is the point of a significance test.","unlocked":["beta1","beta0"],"celebration":"medium","instruction":"Set the slope to 0.","successType":"value_reached","successValue":0,"successTarget":"beta1","successTolerance":0.3},{"id":"intercept","hint":"Drag β₀.","insight":"The intercept shifts the whole line up or down — the predicted y when x is zero. Regression finds the β₀ and β₁ that minimize the total squared error ε.","unlocked":["beta1","beta0"],"celebration":"big","instruction":"Now change the intercept β₀.","successType":"variable_changed","successTarget":"beta0"}],"glossary_data":[{"color":"#3b82f6","words":["slope"],"tooltip":"β₁ — change in y per unit of x","highlightClass":"g59-0"},{"color":"#f59e0b","words":["intercept"],"tooltip":"β₀ — the value of y when x is zero","highlightClass":"g59-1"},{"color":"#10b981","words":["best fit","fit"],"tooltip":"The line minimising squared residuals","highlightClass":"g59-2"}]},{"id":60,"slug":"chi-square-test","title":"Chi-Square Test","formula":"\\chi^2=\\sum\\frac{(O_i-E_i)^2}{E_i}","author":"Karl Pearson","year":"1900","category":"statistics","description":"Does the data match what you expected, or not?","stage":"live-demo","hook":"You flip a coin 100 times and get 60 heads. Is it rigged, or just luck? Chi-square measures how far observed counts stray from expected — and whether that gap is suspicious.","hook_action":"Drag the observed count away from the expected and watch χ² climb.","variables_data":[{"max":100,"min":0,"name":"O","step":1,"unit":null,"color":"primary","symbol":"O","default":50,"constant":false,"description":"Observed count"},{"max":100,"min":1,"name":"E","step":1,"unit":null,"color":"secondary","symbol":"E","default":50,"constant":false,"description":"Expected count"}],"presets_data":[{"label":"Perfect match","values":{"E":50,"O":50}},{"label":"Mild deviation","values":{"E":50,"O":60}},{"label":"Big deviation","values":{"E":50,"O":90}}],"lessons_data":[{"id":"match","hint":"Drag O to equal E (50).","insight":"When observed equals expected, the gap is zero and so is χ². The data perfectly matches the hypothesis.","unlocked":["O","E"],"celebration":"subtle","instruction":"Set the observed count equal to the expected.","successType":"value_reached","successValue":50,"successTarget":"O","successTolerance":3},{"id":"deviate","hint":"Drag O toward 90.","insight":"The bigger the gap between observed and expected, the larger χ² grows — and squaring makes big deviations count far more than small ones.","unlocked":["O","E"],"celebration":"big","instruction":"Now drag the observed count up toward 90.","successType":"value_reached","successValue":90,"successTarget":"O","successTolerance":8},{"id":"expected","hint":"Drag E.","insight":"Dividing by E means the same absolute gap matters more when few events were expected. Cross a χ² threshold and you reject the hypothesis as too unlikely to be chance.","unlocked":["O","E"],"celebration":"medium","instruction":"Change the expected count E.","successType":"variable_changed","successTarget":"E"}],"glossary_data":[{"color":"#3b82f6","words":["observed"],"tooltip":"O — the counts you actually measured","highlightClass":"g60-0"},{"color":"#f59e0b","words":["expected"],"tooltip":"E — the counts the null hypothesis predicts","highlightClass":"g60-1"},{"color":"#10b981","words":["goodness of fit","fit"],"tooltip":"How far observed strays from expected","highlightClass":"g60-2"}]},{"id":61,"slug":"central-limit-theorem","title":"Central Limit Theorem","formula":"\\bar{X}\\sim N\\left(\\mu,\\frac{\\sigma^2}{n}\\right)","author":"Laplace, Lyapunov","year":"1810","category":"statistics","description":"Why averages are always bell-shaped, whatever the data.","stage":"live-demo","hook":"Roll one die and the outcomes are flat. Average ten dice and you get a bell curve. The central limit theorem is why the normal distribution shows up absolutely everywhere.","hook_action":"Drag the sample size and watch the distribution of the average narrow.","variables_data":[{"max":200,"min":1,"name":"n","step":1,"unit":null,"color":"primary","symbol":"n","default":30,"constant":false,"description":"Sample size"}],"presets_data":[{"label":"Single sample","values":{"n":1}},{"label":"Rule of 30","values":{"n":30}},{"label":"Large sample","values":{"n":200}}],"lessons_data":[{"id":"touch-n","hint":"Drag n to the right.","insight":"The distribution of the sample mean has variance σ²/n — so as n grows, the average becomes more tightly pinned around the true mean.","unlocked":["n"],"celebration":"subtle","instruction":"Drag the sample size n upward.","successType":"variable_changed","successTarget":"n"},{"id":"thirty","hint":"Drag n to ~30.","insight":"By around n = 30, the sampling distribution looks reliably bell-shaped even if the raw data was skewed. That's the rule of thumb behind countless statistical tests.","unlocked":["n"],"celebration":"medium","instruction":"Set n to about 30.","successType":"value_reached","successValue":30,"successTarget":"n","successTolerance":5},{"id":"large","hint":"Drag n to 200.","insight":"Quadruple the sample size and you only halve the error — precision improves with √n, not n. This is why big studies are expensive: certainty gets pricey fast.","unlocked":["n"],"celebration":"big","instruction":"Push n up to its maximum.","successType":"value_reached","successValue":200,"successTarget":"n","successTolerance":20}],"glossary_data":[{"color":"#3b82f6","words":["sample size","sample"],"tooltip":"n — observations averaged together","highlightClass":"g61-0"},{"color":"#f59e0b","words":["normal","bell"],"tooltip":"Sample means approach a bell curve","highlightClass":"g61-1"},{"color":"#10b981","words":["standard error"],"tooltip":"The spread of the mean shrinks as 1/√n","highlightClass":"g61-2"}]},{"id":62,"slug":"poisson-distribution","title":"Poisson Distribution","formula":"P(k)=\\frac{\\lambda^k e^{-\\lambda}}{k!}","author":"Siméon Poisson","year":"1837","category":"statistics","description":"The math of rare, random events over time.","stage":"live-demo","hook":"How many buses arrive in an hour? How many typos on a page? For rare independent events with a steady average rate, the Poisson distribution predicts the spread.","hook_action":"Drag the average rate λ and the count k.","variables_data":[{"max":20,"min":0.1,"name":"lam","step":0.1,"unit":null,"color":"primary","symbol":"λ","default":3,"constant":false,"description":"Average rate"},{"max":20,"min":0,"name":"k","step":1,"unit":null,"color":"secondary","symbol":"k","default":2,"constant":false,"description":"Number of events"}],"presets_data":[{"label":"Rare events","values":{"k":1,"lam":1}},{"label":"Moderate","values":{"k":5,"lam":5}},{"label":"Frequent","values":{"k":15,"lam":15}}],"lessons_data":[{"id":"touch-lam","hint":"Drag λ to the right.","insight":"λ is the mean number of events per interval. As it rises, the most likely count rises with it — and the whole distribution shifts right.","unlocked":["lam","k"],"celebration":"subtle","instruction":"Drag the average rate λ upward.","successType":"variable_changed","successTarget":"lam"},{"id":"count","hint":"Drag k near λ.","insight":"The probability peaks when k is near λ. Asking for a count far from the average — many events when few are expected — becomes vanishingly unlikely.","unlocked":["lam","k"],"celebration":"medium","instruction":"Now drag the count k to match λ.","successType":"variable_changed","successTarget":"k"},{"id":"rare","hint":"Drag λ toward 1.","insight":"A high count when the rate is low is extremely improbable — exactly how Poisson flags surprising clusters, from disease outbreaks to server failures.","unlocked":["lam","k"],"celebration":"big","instruction":"Set λ low (around 1) and k high.","successType":"value_reached","successValue":1,"successTarget":"lam","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["rate"],"tooltip":"λ — the average number of events per interval","highlightClass":"g62-0"},{"color":"#f59e0b","words":["events","count"],"tooltip":"k — how many actually occur","highlightClass":"g62-1"},{"color":"#10b981","words":["rare"],"tooltip":"Models independent, rare events","highlightClass":"g62-2"}]},{"id":63,"slug":"markov-chain","title":"Markov Chain","formula":"P(X_{n+1}\\mid X_n)=P(X_{n+1}\\mid X_1,\\dots,X_n)","author":"Andrey Markov","year":"1906","category":"statistics","description":"The future depends only on the present, not the past.","stage":"live-demo","hook":"Predict tomorrow's weather from today's, ignoring last week entirely. This \"memoryless\" assumption powers Google's PageRank, text generators, and board-game odds alike.","hook_action":"Drag the transition probability and watch the system's behavior shift.","variables_data":[{"max":1,"min":0,"name":"p","step":0.01,"unit":null,"color":"primary","symbol":"p","default":0.5,"constant":false,"description":"Probability of staying in the same state"}],"presets_data":[{"label":"Sticky","values":{"p":0.9}},{"label":"Fair","values":{"p":0.5}},{"label":"Flip-flop","values":{"p":0.1}}],"lessons_data":[{"id":"touch-p","hint":"Drag p.","insight":"p is the chance the system stays put each step. The next state depends only on the current one — never on how you got there.","unlocked":["p"],"celebration":"subtle","instruction":"Drag the transition probability p.","successType":"variable_changed","successTarget":"p"},{"id":"sticky","hint":"Drag p toward 0.9.","insight":"A high stay-probability makes states sticky — sunny days tend to follow sunny days. The chain lingers, and long runs of the same state become common.","unlocked":["p"],"celebration":"big","instruction":"Push p up toward 0.9.","successType":"value_reached","successValue":0.9,"successTarget":"p","successTolerance":0.1},{"id":"mix","hint":"Drag p toward 0.1.","insight":"A low stay-probability makes the system flip constantly. Over many steps a Markov chain settles into a steady-state distribution — the math behind PageRank ranking the whole web.","unlocked":["p"],"celebration":"medium","instruction":"Now drag p down toward 0.1.","successType":"value_reached","successValue":0.1,"successTarget":"p","successTolerance":0.1}],"glossary_data":[{"color":"#3b82f6","words":["transition"],"tooltip":"p — probability of switching state","highlightClass":"g63-0"},{"color":"#f59e0b","words":["state"],"tooltip":"Where the system currently sits","highlightClass":"g63-1"},{"color":"#10b981","words":["memoryless"],"tooltip":"The next step depends only on the present","highlightClass":"g63-2"}]},{"id":64,"slug":"hookes-law","title":"Hooke's Law","formula":"F=-kx","author":"Robert Hooke","year":"1678","category":"engineering","description":"A spring pushes back in proportion to how far you stretch it.","stage":"live-demo","hook":"Stretch a spring twice as far and it pulls back twice as hard. This simple linear law sits inside every scale, mattress, and car suspension.","hook_action":"Drag the displacement and the spring stiffness.","variables_data":[{"max":100,"min":1,"name":"k","step":1,"unit":"N/m","color":"primary","symbol":"k","default":20,"constant":false,"description":"Spring constant"},{"max":10,"min":-10,"name":"x","step":0.1,"unit":"cm","color":"secondary","symbol":"x","default":2,"constant":false,"description":"Displacement"}],"presets_data":[{"label":"Soft spring","values":{"k":5,"x":4}},{"label":"Stiff spring","values":{"k":80,"x":4}},{"label":"Compressed","values":{"k":20,"x":-6}}],"lessons_data":[{"id":"touch-x","hint":"Drag x.","insight":"The restoring force grows in direct proportion to displacement — and the minus sign means it always points back toward rest.","unlocked":["k","x"],"celebration":"subtle","instruction":"Drag the displacement x.","successType":"variable_changed","successTarget":"x"},{"id":"stiff","hint":"Drag k up.","insight":"A stiffer spring (larger k) fights back harder for the same stretch. k is exactly the slope of the force-versus-stretch line.","unlocked":["k","x"],"celebration":"medium","instruction":"Now raise the spring constant k.","successType":"variable_changed","successTarget":"k"},{"id":"compress","hint":"Drag x below 0.","insight":"Compress instead of stretch and the force flips direction — still pushing back toward rest. This restoring force is what makes springs oscillate and clocks tick.","unlocked":["k","x"],"celebration":"big","instruction":"Drag x negative to compress the spring.","successType":"value_reached","successValue":-6,"successTarget":"x","successTolerance":2}],"glossary_data":[{"color":"#3b82f6","words":["stiffness","spring constant"],"tooltip":"k — how stiff the spring is","highlightClass":"g64-0"},{"color":"#f59e0b","words":["displacement","stretch"],"tooltip":"x — distance from the rest position","highlightClass":"g64-1"},{"color":"#ef4444","words":["restoring force","force"],"tooltip":"Pulls the spring back toward rest","highlightClass":"g64-2"}]},{"id":65,"slug":"stress-and-strain","title":"Stress and Strain","formula":"\\sigma=E\\varepsilon","author":"Thomas Young","year":"1807","category":"engineering","description":"How stiff a material is, captured in one number.","stage":"live-demo","hook":"Pull on a rubber band and it stretches a lot; pull on a steel cable and it barely moves. Young's modulus E is the number that says how stiff a material is.","hook_action":"Drag the strain and the material's stiffness E.","variables_data":[{"max":400,"min":0.01,"name":"E","step":1,"unit":"GPa","color":"primary","symbol":"E","default":200,"constant":false,"description":"Young's modulus"},{"max":0.02,"min":0,"name":"eps","step":0.0001,"unit":null,"color":"secondary","symbol":"ε","default":0.005,"constant":false,"description":"Strain"}],"presets_data":[{"label":"Rubber","values":{"E":0.01,"eps":0.02}},{"label":"Steel","values":{"E":200,"eps":0.005}},{"label":"Diamond","values":{"E":400,"eps":0.002}}],"lessons_data":[{"id":"touch-eps","hint":"Drag ε to the right.","insight":"Strain is the fractional stretch. For a given material, stress rises in step with strain — the steeper the line, the stiffer the material.","unlocked":["E","eps"],"celebration":"subtle","instruction":"Drag the strain ε upward.","successType":"variable_changed","successTarget":"eps"},{"id":"stiff","hint":"Drag E up high.","insight":"A large Young's modulus means huge stress for even a tiny stretch. This is why steel beams barely flex under enormous loads.","unlocked":["E","eps"],"celebration":"big","instruction":"Set E high (toward steel or diamond).","successType":"value_reached","successValue":400,"successTarget":"E","successTolerance":40},{"id":"soft","hint":"Drag E near 0.","insight":"A low modulus stretches easily under little stress. Engineers pick materials by matching this stiffness to the job — rigid where it must hold, flexible where it must bend.","unlocked":["E","eps"],"celebration":"medium","instruction":"Now drag E way down (rubber).","successType":"value_reached","successValue":0.01,"successTarget":"E","successTolerance":10}],"glossary_data":[{"color":"#3b82f6","words":["modulus","stiffness"],"tooltip":"E — the material's stiffness","highlightClass":"g65-0"},{"color":"#f59e0b","words":["strain"],"tooltip":"ε — the fractional deformation","highlightClass":"g65-1"},{"color":"#ef4444","words":["stress"],"tooltip":"Internal force per unit area","highlightClass":"g65-2"}]},{"id":66,"slug":"bernoullis-equation","title":"Bernoulli's Equation","formula":"P+\\frac{1}{2}\\rho v^2+\\rho gh=\\text{const}","author":"Daniel Bernoulli","year":"1738","category":"engineering","description":"Faster-moving fluid has lower pressure.","stage":"live-demo","hook":"Why does an airplane wing lift? Air rushes faster over the curved top, dropping the pressure there. Bernoulli's equation trades fluid speed for pressure.","hook_action":"Drag the flow speed and the height.","variables_data":[{"max":50,"min":0,"name":"v","step":0.5,"unit":"m/s","color":"primary","symbol":"v","default":10,"constant":false,"description":"Flow speed"},{"max":20,"min":0,"name":"h","step":0.5,"unit":"m","color":"secondary","symbol":"h","default":0,"constant":false,"description":"Height"}],"presets_data":[{"label":"Slow wide pipe","values":{"h":0,"v":2}},{"label":"Fast narrow pipe","values":{"h":0,"v":40}},{"label":"Uphill flow","values":{"h":15,"v":10}}],"lessons_data":[{"id":"touch-v","hint":"Drag v to the right.","insight":"Since the total stays constant, speeding the fluid up forces the pressure term down. Fast flow means low pressure.","unlocked":["v","h"],"celebration":"subtle","instruction":"Drag the flow speed v upward.","successType":"variable_changed","successTarget":"v"},{"id":"fast","hint":"Drag v toward 40.","insight":"Where a pipe narrows, the fluid speeds up and its pressure plummets. This is the Venturi effect — and the suction that pulls fuel into an old carburetor.","unlocked":["v","h"],"celebration":"big","instruction":"Push v up high (a narrow, fast section).","successType":"value_reached","successValue":40,"successTarget":"v","successTolerance":6},{"id":"height","hint":"Drag h up.","insight":"Lifting the fluid spends energy on the ρgh term, leaving less for pressure and motion. Speed, height, and pressure all trade against one fixed total.","unlocked":["v","h"],"celebration":"medium","instruction":"Now raise the height h.","successType":"variable_changed","successTarget":"h"}],"glossary_data":[{"color":"#3b82f6","words":["velocity","speed"],"tooltip":"v — faster flow means lower pressure","highlightClass":"g66-0"},{"color":"#f59e0b","words":["height"],"tooltip":"h — elevation within the flow","highlightClass":"g66-1"},{"color":"#ef4444","words":["pressure"],"tooltip":"Trades off against speed and height","highlightClass":"g66-2"}]},{"id":67,"slug":"transfer-function","title":"Transfer Function","formula":"H(s)=\\frac{Y(s)}{X(s)}","author":"Oliver Heaviside","year":"1893","category":"engineering","description":"How a system turns an input signal into an output.","stage":"live-demo","hook":"A cruise control, a thermostat, a guitar amp — each takes an input and produces an output. The transfer function is the compact recipe for that relationship.","hook_action":"Drag the system gain and how fast it responds.","variables_data":[{"max":10,"min":0,"name":"K","step":0.1,"unit":null,"color":"primary","symbol":"K","default":1,"constant":false,"description":"Gain"},{"max":10,"min":0.1,"name":"pole","step":0.1,"unit":null,"color":"secondary","symbol":"p","default":1,"constant":false,"description":"Pole (response speed)"}],"presets_data":[{"label":"Sluggish","values":{"K":1,"pole":0.3}},{"label":"Snappy","values":{"K":1,"pole":8}},{"label":"High gain","values":{"K":8,"pole":1}}],"lessons_data":[{"id":"touch-K","hint":"Drag K to the right.","insight":"Gain sets how strongly the output responds to the input — a small change in can become a big change out.","unlocked":["K","pole"],"celebration":"subtle","instruction":"Drag the gain K upward.","successType":"variable_changed","successTarget":"K"},{"id":"pole","hint":"Drag p.","insight":"The pole controls how fast the system reacts. A large pole snaps to the new value quickly; a small one drifts there slowly.","unlocked":["K","pole"],"celebration":"medium","instruction":"Now change the pole p.","successType":"variable_changed","successTarget":"pole"},{"id":"gain","hint":"Drag K toward 8.","insight":"Too much gain can make a feedback system overshoot and ring — or even go unstable. Tuning the transfer function is the central craft of control engineering.","unlocked":["K","pole"],"celebration":"big","instruction":"Push the gain K high.","successType":"value_reached","successValue":8,"successTarget":"K","successTolerance":1.5}],"glossary_data":[{"color":"#3b82f6","words":["gain"],"tooltip":"K — the overall amplification","highlightClass":"g67-0"},{"color":"#f59e0b","words":["pole"],"tooltip":"p — where the response blows up","highlightClass":"g67-1"},{"color":"#10b981","words":["stability","stable"],"tooltip":"Poles in the left half-plane stay stable","highlightClass":"g67-2"}]},{"id":68,"slug":"nyquist-stability-criterion","title":"Nyquist Stability Criterion","formula":"N=Z-P","author":"Harry Nyquist","year":"1932","category":"engineering","description":"Will a feedback loop stay stable or spiral out of control?","stage":"live-demo","hook":"Point a microphone at its own speaker and you get a screaming feedback howl. Every control loop risks the same runaway. Nyquist's count tells you whether yours is safe.","hook_action":"Drag the encirclements and unstable open-loop poles.","variables_data":[{"max":5,"min":0,"name":"P","step":1,"unit":null,"color":"primary","symbol":"P","default":0,"constant":false,"description":"Unstable open-loop poles"},{"max":5,"min":-5,"name":"N","step":1,"unit":null,"color":"secondary","symbol":"N","default":0,"constant":false,"description":"Clockwise encirclements of -1"}],"presets_data":[{"label":"Stable","values":{"N":0,"P":0}},{"label":"On the edge","values":{"N":1,"P":1}},{"label":"Unstable","values":{"N":2,"P":0}}],"lessons_data":[{"id":"touch-N","hint":"Drag N.","insight":"N counts how many times the system's frequency response loops around the critical −1 point. Z = N + P is the number of unstable closed-loop poles.","unlocked":["P","N"],"celebration":"subtle","instruction":"Drag the number of encirclements N.","successType":"variable_changed","successTarget":"N"},{"id":"stable","hint":"Drag N and P to 0.","insight":"No encirclements and no unstable open-loop poles means Z = 0 — the closed loop is stable. This is the configuration every controller aims for.","unlocked":["P","N"],"celebration":"medium","instruction":"Set both N and P to 0.","successType":"value_reached","successValue":0,"successTarget":"N","successTolerance":0.5},{"id":"unstable","hint":"Drag N to 2.","insight":"Encircling −1 with no unstable poles to cancel means Z is positive — the loop will oscillate and blow up. That's the mathematical signature of the feedback howl.","unlocked":["P","N"],"celebration":"big","instruction":"Now drive N up to 2 with P at 0.","successType":"value_reached","successValue":2,"successTarget":"N","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["poles"],"tooltip":"P — unstable open-loop poles","highlightClass":"g68-0"},{"color":"#f59e0b","words":["encirclements"],"tooltip":"N — times the plot circles the −1 point","highlightClass":"g68-1"},{"color":"#10b981","words":["stability","stable"],"tooltip":"Z = N + P must be zero for stability","highlightClass":"g68-2"}]},{"id":69,"slug":"reynolds-number","title":"Reynolds Number","formula":"Re=\\frac{\\rho vL}{\\mu}","author":"Osborne Reynolds","year":"1883","category":"engineering","description":"Smooth flow or chaotic turbulence? One number decides.","stage":"live-demo","hook":"Water from a tap can run glass-smooth or break into churning chaos. The Reynolds number predicts the switch — and lets engineers test a ship design in a small tank.","hook_action":"Drag the speed, size, and viscosity to cross into turbulence.","variables_data":[{"max":20,"min":0,"name":"v","step":0.1,"unit":"m/s","color":"primary","symbol":"v","default":2,"constant":false,"description":"Flow velocity"},{"max":10,"min":0.01,"name":"L","step":0.01,"unit":"m","color":"secondary","symbol":"L","default":1,"constant":false,"description":"Characteristic length"},{"max":1,"min":0.0001,"name":"mu","step":0.0001,"unit":"Pa·s","color":"tertiary","symbol":"µ","default":0.001,"constant":false,"description":"Viscosity"}],"presets_data":[{"label":"Laminar","values":{"L":0.05,"v":0.2,"mu":0.5}},{"label":"Transition","values":{"L":0.5,"v":2,"mu":0.05}},{"label":"Turbulent","values":{"L":5,"v":15,"mu":0.001}}],"lessons_data":[{"id":"touch-v","hint":"Drag v to the right.","insight":"Faster flow raises the Reynolds number. Below about 2000 the flow is smooth and layered; above about 4000 it tumbles into turbulence.","unlocked":["v","L","mu"],"celebration":"subtle","instruction":"Drag the flow velocity v upward.","successType":"variable_changed","successTarget":"v"},{"id":"turbulent","hint":"Drag v toward 15.","insight":"High speed, large size, and thin fluid all push Re sky-high and the flow becomes turbulent — the chaotic regime that makes the Navier-Stokes equations so hard.","unlocked":["v","L","mu"],"celebration":"big","instruction":"Push velocity and length up while viscosity is low.","successType":"value_reached","successValue":15,"successTarget":"v","successTolerance":3},{"id":"viscous","hint":"Drag µ up.","insight":"Thick, sticky fluids resist turbulence and keep flow laminar even when fast. Because Re is dimensionless, a tiny model in a tank can faithfully mimic a full-size ship.","unlocked":["v","L","mu"],"celebration":"medium","instruction":"Now raise the viscosity µ.","successType":"variable_changed","successTarget":"mu"}],"glossary_data":[{"color":"#3b82f6","words":["velocity"],"tooltip":"v — the flow speed","highlightClass":"g69-0"},{"color":"#f59e0b","words":["length"],"tooltip":"L — the characteristic size","highlightClass":"g69-1"},{"color":"#10b981","words":["viscosity"],"tooltip":"µ — the fluid's resistance to flow","highlightClass":"g69-2"},{"color":"#ef4444","words":["turbulent","turbulence"],"tooltip":"A high Reynolds number means chaotic flow","highlightClass":"g69-3"}]},{"id":70,"slug":"keplers-third-law","title":"Kepler's Third Law","formula":"T^2=\\frac{4\\pi^2}{GM}a^3","author":"Johannes Kepler","year":"1619","category":"astronomy","description":"How long a planet takes to orbit depends on its distance.","stage":"live-demo","hook":"Mercury whips around the Sun in 88 days; Neptune takes 165 years. The further out a planet sits, the dramatically slower it orbits — and Kepler nailed the exact rule.","hook_action":"Drag the orbit size and the central mass.","variables_data":[{"max":40,"min":0.1,"name":"a","step":0.1,"unit":"AU","color":"primary","symbol":"a","default":1,"constant":false,"description":"Semi-major axis"},{"max":10,"min":0.1,"name":"M","step":0.1,"unit":"M☉","color":"secondary","symbol":"M","default":1,"constant":false,"description":"Central mass"}],"presets_data":[{"label":"Earth","values":{"M":1,"a":1}},{"label":"Jupiter","values":{"M":1,"a":5.2}},{"label":"Neptune","values":{"M":1,"a":30}}],"lessons_data":[{"id":"touch-a","hint":"Drag a to the right.","insight":"Orbital period grows with a to the 3/2 power. Double the distance and the year gets nearly three times longer.","unlocked":["a","M"],"celebration":"subtle","instruction":"Drag the orbit size a outward.","successType":"variable_changed","successTarget":"a"},{"id":"far","hint":"Drag a to ~30.","insight":"Distant planets crawl around enormous orbits — Neptune's year is 165 of ours. The a³ in the law makes outer orbits brutally slow.","unlocked":["a","M"],"celebration":"big","instruction":"Push a out toward Neptune's orbit (~30 AU).","successType":"value_reached","successValue":30,"successTarget":"a","successTolerance":4},{"id":"mass","hint":"Drag M.","insight":"A heavier star pulls harder, speeding orbits up. Astronomers run this backward: time an orbit, and the law weighs the star or hidden black hole at its center.","unlocked":["a","M"],"celebration":"medium","instruction":"Now change the central mass M.","successType":"variable_changed","successTarget":"M"}],"glossary_data":[{"color":"#3b82f6","words":["semi-major axis","orbit"],"tooltip":"a — the size of the orbit","highlightClass":"g70-0"},{"color":"#f59e0b","words":["mass"],"tooltip":"M — the mass of the central body","highlightClass":"g70-1"},{"color":"#ef4444","words":["period"],"tooltip":"T — how long one orbit takes","highlightClass":"g70-2"}]},{"id":71,"slug":"hubbles-law","title":"Hubble's Law","formula":"v=H_0 d","author":"Edwin Hubble","year":"1929","category":"astronomy","description":"Distant galaxies fly away faster — the universe is expanding.","stage":"live-demo","hook":"Every galaxy is rushing away from us, and the farther one is, the faster it flees. This isn't us being unpopular — space itself is stretching.","hook_action":"Drag a galaxy's distance and watch its recession speed climb.","variables_data":[{"max":1000,"min":0,"name":"d","step":5,"unit":"Mpc","color":"primary","symbol":"d","default":100,"constant":false,"description":"Distance"},{"max":100,"min":50,"name":"H0","step":1,"unit":"km/s/Mpc","color":"secondary","symbol":"H₀","default":70,"constant":false,"description":"Hubble constant"}],"presets_data":[{"label":"Nearby galaxy","values":{"d":20,"H0":70}},{"label":"Distant galaxy","values":{"d":500,"H0":70}},{"label":"Edge of view","values":{"d":1000,"H0":70}}],"lessons_data":[{"id":"touch-d","hint":"Drag d to the right.","insight":"Recession speed is simply distance times the Hubble constant. Twice as far means twice as fast — a clean straight line across the cosmos.","unlocked":["d","H0"],"celebration":"subtle","instruction":"Drag the galaxy's distance d outward.","successType":"variable_changed","successTarget":"d"},{"id":"far","hint":"Drag d toward 1000.","insight":"The most distant galaxies recede at a sizeable fraction of light speed. Far enough out, they slip beyond our horizon — their light can never reach us.","unlocked":["d","H0"],"celebration":"big","instruction":"Push d out toward 1000 Mpc.","successType":"value_reached","successValue":1000,"successTarget":"d","successTolerance":100},{"id":"constant","hint":"Drag H₀.","insight":"H₀ is the expansion rate, and its inverse estimates the age of the universe. Pinning down its exact value is one of cosmology's hottest open arguments.","unlocked":["d","H0"],"celebration":"medium","instruction":"Now change the Hubble constant H₀.","successType":"variable_changed","successTarget":"H0"}],"glossary_data":[{"color":"#3b82f6","words":["distance"],"tooltip":"d — how far the galaxy is","highlightClass":"g71-0"},{"color":"#f59e0b","words":["Hubble constant","constant"],"tooltip":"H₀ — the expansion rate of the universe","highlightClass":"g71-1"},{"color":"#ef4444","words":["recession","redshift"],"tooltip":"More distant galaxies recede faster","highlightClass":"g71-2"}]},{"id":72,"slug":"schwarzschild-radius","title":"Schwarzschild Radius","formula":"r_s=\\frac{2GM}{c^2}","author":"Karl Schwarzschild","year":"1916","category":"astronomy","description":"Squeeze any mass small enough and it becomes a black hole.","stage":"live-demo","hook":"Crush the Earth to the size of a marble and not even light could escape it. The Schwarzschild radius is the point of no return for any given mass.","hook_action":"Drag the mass and watch the event horizon grow.","variables_data":[{"max":1000000,"min":1,"name":"M","step":1,"unit":"M☉","color":"primary","symbol":"M","default":1,"constant":false,"description":"Mass"}],"presets_data":[{"label":"The Sun","values":{"M":1}},{"label":"Stellar black hole","values":{"M":10}},{"label":"Supermassive","values":{"M":1000000}}],"lessons_data":[{"id":"touch-M","hint":"Drag M to the right.","insight":"The event horizon radius is directly proportional to mass. Pile on more mass and the point of no return expands outward.","unlocked":["M"],"celebration":"subtle","instruction":"Drag the mass M upward.","successType":"variable_changed","successTarget":"M"},{"id":"sun","hint":"Drag M to 1.","insight":"Compress the entire Sun inside a radius of just 3 km and it would become a black hole. Our Sun is nowhere near dense enough — it never will.","unlocked":["M"],"celebration":"medium","instruction":"Set the mass to 1 solar mass.","successType":"value_reached","successValue":1,"successTarget":"M","successTolerance":2},{"id":"supermassive","hint":"Drag M to its maximum.","insight":"Supermassive black holes lurk at galaxy centers, with horizons larger than our Solar System. The one in M87 was the first ever photographed.","unlocked":["M"],"celebration":"big","instruction":"Push the mass up to a million suns.","successType":"value_reached","successValue":1000000,"successTarget":"M","successTolerance":100000}],"glossary_data":[{"color":"#3b82f6","words":["mass"],"tooltip":"M — the collapsed mass of the black hole","highlightClass":"g72-0"},{"color":"#f59e0b","words":["event horizon","horizon"],"tooltip":"The radius of no return","highlightClass":"g72-1"},{"color":"#10b981","words":["escape"],"tooltip":"Below it, not even light escapes","highlightClass":"g72-2"}]},{"id":73,"slug":"stellar-luminosity","title":"Stellar Luminosity","formula":"L=4\\pi R^2\\sigma T^4","author":"Stefan, Boltzmann","year":"1879","category":"astronomy","description":"A star's total power, from its size and temperature.","stage":"live-demo","hook":"A small white-hot star can outshine a huge cool red one. A star's brightness depends on its surface area and, ferociously, on the fourth power of its temperature.","hook_action":"Drag the radius and surface temperature.","variables_data":[{"max":100,"min":0.1,"name":"R","step":0.1,"unit":"R☉","color":"primary","symbol":"R","default":1,"constant":false,"description":"Radius"},{"max":40000,"min":2000,"name":"T","step":100,"unit":"K","color":"secondary","symbol":"T","default":5800,"constant":false,"description":"Surface temperature"}],"presets_data":[{"label":"The Sun","values":{"R":1,"T":5800}},{"label":"Red giant","values":{"R":80,"T":3500}},{"label":"Blue giant","values":{"R":8,"T":30000}}],"lessons_data":[{"id":"touch-T","hint":"Drag T to the right.","insight":"Luminosity scales with T to the fourth power. A modest temperature rise makes a star vastly brighter — temperature dominates.","unlocked":["R","T"],"celebration":"subtle","instruction":"Drag the surface temperature T upward.","successType":"variable_changed","successTarget":"T"},{"id":"blue","hint":"Drag T toward 30000.","insight":"Hot blue stars blaze with enormous luminosity and burn through their fuel fast — living only millions of years instead of billions.","unlocked":["R","T"],"celebration":"big","instruction":"Push T up toward a blue giant (~30000 K).","successType":"value_reached","successValue":30000,"successTarget":"T","successTolerance":3000},{"id":"radius","hint":"Drag R up.","insight":"A bloated red giant is cool yet luminous simply because it's so vast. Plotting luminosity against temperature for many stars gives the famous Hertzsprung-Russell diagram.","unlocked":["R","T"],"celebration":"medium","instruction":"Now expand the radius R.","successType":"variable_changed","successTarget":"R"}],"glossary_data":[{"color":"#3b82f6","words":["radius"],"tooltip":"R — the size of the star","highlightClass":"g73-0"},{"color":"#f59e0b","words":["temperature"],"tooltip":"T — surface temperature, raised to the 4th power","highlightClass":"g73-1"},{"color":"#ef4444","words":["luminosity"],"tooltip":"The total power the star radiates","highlightClass":"g73-2"}]},{"id":74,"slug":"drake-equation","title":"Drake Equation","formula":"N=R_*\\,f_p\\,n_e\\,f_l\\,f_i\\,f_c\\,L","author":"Frank Drake","year":"1961","category":"astronomy","description":"An estimate for how many alien civilizations we might hear.","stage":"live-demo","hook":"Are we alone? The Drake equation doesn't answer that — it organizes our ignorance into factors, then shows how wildly the estimate swings on a few guesses.","hook_action":"Drag the most uncertain factors and watch N explode or collapse.","variables_data":[{"max":1,"min":0,"name":"fl","step":0.01,"unit":null,"color":"primary","symbol":"f_l","default":0.5,"constant":false,"description":"Fraction of worlds that develop life"},{"max":1,"min":0,"name":"fi","step":0.01,"unit":null,"color":"secondary","symbol":"f_i","default":0.1,"constant":false,"description":"Fraction that become intelligent"},{"max":1000000,"min":100,"name":"L","step":100,"unit":"yr","color":"tertiary","symbol":"L","default":10000,"constant":false,"description":"Civilization lifetime"}],"presets_data":[{"label":"Optimistic","values":{"L":1000000,"fi":1,"fl":1}},{"label":"Pessimistic","values":{"L":200,"fi":0.01,"fl":0.01}},{"label":"Sagan's guess","values":{"L":10000,"fi":0.1,"fl":0.5}}],"lessons_data":[{"id":"touch-L","hint":"Drag L to the right.","insight":"L — how long a civilization broadcasts — multiplies the whole result. The longer civilizations last, the more of them exist at once to detect.","unlocked":["fl","fi","L"],"celebration":"subtle","instruction":"Drag the civilization lifetime L upward.","successType":"variable_changed","successTarget":"L"},{"id":"optimistic","hint":"Drag L toward its maximum.","insight":"Generous guesses give millions of civilizations. The galaxy should be buzzing — which sharpens the Fermi paradox: so where is everybody?","unlocked":["fl","fi","L"],"celebration":"big","instruction":"Push every factor high (try the Optimistic preset).","successType":"value_reached","successValue":1000000,"successTarget":"L","successTolerance":100000},{"id":"intelligence","hint":"Drag f_i toward 0.","insight":"Make any single factor tiny and N collapses toward one — just us. The equation's real lesson is how little we know, not what the answer is.","unlocked":["fl","fi","L"],"celebration":"medium","instruction":"Now drag the intelligence fraction f_i down low.","successType":"value_reached","successValue":0,"successTarget":"fi","successTolerance":0.05}],"glossary_data":[{"color":"#3b82f6","words":["life"],"tooltip":"f_l — fraction of worlds where life starts","highlightClass":"g74-0"},{"color":"#f59e0b","words":["intelligence"],"tooltip":"f_i — fraction that become intelligent","highlightClass":"g74-1"},{"color":"#10b981","words":["lifetime"],"tooltip":"L — how long a civilisation broadcasts","highlightClass":"g74-2"}]},{"id":75,"slug":"friedmann-equation","title":"Friedmann Equation","formula":"H^2=\\frac{8\\pi G}{3}\\rho-\\frac{k}{a^2}","author":"Alexander Friedmann","year":"1922","category":"astronomy","description":"How the whole universe expands — and what its fate will be.","stage":"live-demo","hook":"Will the universe expand forever, or collapse in a Big Crunch? The Friedmann equation links the expansion rate to how much stuff the universe contains.","hook_action":"Drag the cosmic density and the curvature.","variables_data":[{"max":10,"min":0,"name":"rho","step":0.1,"unit":null,"color":"primary","symbol":"ρ","default":1,"constant":false,"description":"Energy density (relative)"},{"max":1,"min":-1,"name":"k","step":1,"unit":null,"color":"secondary","symbol":"k","default":0,"constant":false,"description":"Spatial curvature"}],"presets_data":[{"label":"Flat universe","values":{"k":0,"rho":1}},{"label":"Open (forever)","values":{"k":-1,"rho":0.5}},{"label":"Closed (crunch)","values":{"k":1,"rho":5}}],"lessons_data":[{"id":"touch-rho","hint":"Drag ρ to the right.","insight":"More density means stronger gravity pulling against the expansion. Density and curvature together decide whether expansion wins or loses.","unlocked":["rho","k"],"celebration":"subtle","instruction":"Drag the energy density ρ upward.","successType":"variable_changed","successTarget":"rho"},{"id":"closed","hint":"Drag ρ high and k to +1.","insight":"Enough density curves space closed — gravity eventually halts and reverses the expansion into a Big Crunch. The universe's geometry is its destiny.","unlocked":["rho","k"],"celebration":"big","instruction":"Set high density with positive curvature (Closed preset).","successType":"value_reached","successValue":1,"successTarget":"k","successTolerance":0.5},{"id":"flat","hint":"Drag k to 0.","insight":"A perfectly flat universe sits on the knife-edge between expanding forever and collapsing. Measurements say ours is astonishingly close to exactly flat.","unlocked":["rho","k"],"celebration":"medium","instruction":"Now set curvature k to 0.","successType":"value_reached","successValue":0,"successTarget":"k","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["density"],"tooltip":"ρ — the matter and energy density","highlightClass":"g75-0"},{"color":"#f59e0b","words":["curvature"],"tooltip":"k — the geometry of space","highlightClass":"g75-1"},{"color":"#10b981","words":["expansion"],"tooltip":"Sets how fast the universe grows","highlightClass":"g75-2"}]},{"id":76,"slug":"matrix-multiplication","title":"Matrix Multiplication","formula":"(AB)_{ij}=\\sum_k A_{ik}B_{kj}","author":"Arthur Cayley","year":"1858","category":"linear_algebra","description":"Chaining two transformations into one.","stage":"live-demo","hook":"Rotate an image, then scale it — matrix multiplication fuses those two steps into a single operation. It's the engine behind graphics, neural nets, and search rankings.","hook_action":"Drag the matrix dimension and feel the cost grow.","variables_data":[{"max":8,"min":1,"name":"n","step":1,"unit":null,"color":"primary","symbol":"n","default":3,"constant":false,"description":"Matrix dimension"}],"presets_data":[{"label":"2 × 2","values":{"n":2}},{"label":"3 × 3","values":{"n":3}},{"label":"8 × 8","values":{"n":8}}],"lessons_data":[{"id":"touch-n","hint":"Drag n to the right.","insight":"Each output entry is a dot product of a row and a column. An n×n product needs about n³ multiplications.","unlocked":["n"],"celebration":"subtle","instruction":"Drag the matrix dimension n upward.","successType":"variable_changed","successTarget":"n"},{"id":"big","hint":"Drag n to 8.","insight":"That n³ cost is why multiplying large matrices dominates the runtime of training neural networks — and why faster matrix-multiply algorithms are worth millions.","unlocked":["n"],"celebration":"big","instruction":"Push n to its maximum.","successType":"value_reached","successValue":8,"successTarget":"n","successTolerance":1},{"id":"order","hint":"Drag n down.","insight":"Matrix multiplication isn't commutative: AB usually differs from BA. Rotating then scaling is not the same as scaling then rotating — order is meaning.","unlocked":["n"],"celebration":"medium","instruction":"Drag n back down and think about order.","successType":"variable_changed","successTarget":"n"}],"glossary_data":[{"color":"#3b82f6","words":["rows","columns"],"tooltip":"Row i dotted with column j gives entry (i,j)","highlightClass":"g76-0"},{"color":"#f59e0b","words":["dimension","size"],"tooltip":"n — only matched inner dimensions can multiply","highlightClass":"g76-1"},{"color":"#10b981","words":["dot product"],"tooltip":"Each output entry is one dot product","highlightClass":"g76-2"}]},{"id":77,"slug":"eigenvalue-equation","title":"Eigenvalue Equation","formula":"A\\mathbf{v}=\\lambda\\mathbf{v}","author":"David Hilbert","year":"1904","category":"linear_algebra","description":"The special directions a transformation only stretches.","stage":"live-demo","hook":"Most vectors get rotated when you apply a matrix. A precious few only get stretched, never turned — those eigenvectors reveal the true axes of a transformation.","hook_action":"Drag the eigenvalue to stretch, shrink, or flip the eigenvector.","variables_data":[{"max":5,"min":-5,"name":"lam","step":0.1,"unit":null,"color":"primary","symbol":"λ","default":2,"constant":false,"description":"Eigenvalue"}],"presets_data":[{"label":"Stretch","values":{"lam":3}},{"label":"Shrink","values":{"lam":0.5}},{"label":"Flip","values":{"lam":-1}}],"lessons_data":[{"id":"touch-lam","hint":"Drag λ to the right.","insight":"Along an eigenvector, the matrix acts like simple multiplication by λ — pure stretching, no rotation. λ is the stretch factor.","unlocked":["lam"],"celebration":"subtle","instruction":"Drag the eigenvalue λ upward.","successType":"variable_changed","successTarget":"lam"},{"id":"shrink","hint":"Drag λ to ~0.5.","insight":"An eigenvalue below 1 shrinks that direction. Repeatedly applying the matrix makes those components fade — which is exactly how systems settle toward a steady state.","unlocked":["lam"],"celebration":"medium","instruction":"Drag λ between 0 and 1.","successType":"value_reached","successValue":0.5,"successTarget":"lam","successTolerance":0.3},{"id":"flip","hint":"Drag λ below 0.","insight":"A negative eigenvalue flips the eigenvector to point the opposite way. Eigenvalues run everything from PageRank to the vibration modes of a bridge.","unlocked":["lam"],"celebration":"big","instruction":"Now drag λ negative.","successType":"value_reached","successValue":-1,"successTarget":"lam","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["eigenvalue"],"tooltip":"λ — the factor a vector is scaled by","highlightClass":"g77-0"},{"color":"#f59e0b","words":["eigenvector"],"tooltip":"A direction the matrix leaves unrotated","highlightClass":"g77-1"},{"color":"#10b981","words":["scaling"],"tooltip":"Av = λv — pure stretch, no turn","highlightClass":"g77-2"}]},{"id":78,"slug":"determinant-22","title":"Determinant (2×2)","formula":"\\det\\begin{pmatrix}a&b\\\\c&d\\end{pmatrix}=ad-bc","author":"Gottfried Leibniz","year":"1693","category":"linear_algebra","description":"How much a transformation scales area — and whether it's reversible.","stage":"live-demo","hook":"A matrix can stretch, squash, or flip space. The determinant is the single number telling you how much area it scales — and a determinant of zero means it crushes space flat.","hook_action":"Drag the matrix entries and watch the determinant change.","variables_data":[{"max":5,"min":-5,"name":"a","step":0.1,"unit":null,"color":"primary","symbol":"a","default":2,"constant":false,"description":"Top-left entry"},{"max":5,"min":-5,"name":"b","step":0.1,"unit":null,"color":"secondary","symbol":"b","default":0,"constant":false,"description":"Top-right entry"},{"max":5,"min":-5,"name":"c","step":0.1,"unit":null,"color":"tertiary","symbol":"c","default":0,"constant":false,"description":"Bottom-left entry"},{"max":5,"min":-5,"name":"d","step":0.1,"unit":null,"color":"quaternary","symbol":"d","default":2,"constant":false,"description":"Bottom-right entry"}],"presets_data":[{"label":"Identity","values":{"a":1,"b":0,"c":0,"d":1}},{"label":"Singular","values":{"a":2,"b":1,"c":4,"d":2}},{"label":"Reflection","values":{"a":1,"b":0,"c":0,"d":-1}}],"lessons_data":[{"id":"touch-a","hint":"Drag a.","insight":"The determinant is the area-scaling factor of the transformation. Bigger magnitude means the unit square is stretched into a larger parallelogram.","unlocked":["a","b","c","d"],"celebration":"subtle","instruction":"Drag the entry a and watch ad − bc change.","successType":"variable_changed","successTarget":"a"},{"id":"singular","hint":"Use the Singular preset, or set a·d = b·c.","insight":"When ad equals bc, the determinant is zero: the transformation flattens 2D space onto a line. Such a matrix has no inverse — information is irretrievably lost.","unlocked":["a","b","c","d"],"celebration":"big","instruction":"Try to make the determinant zero (Singular preset).","successType":"variable_changed","successTarget":"c"},{"id":"flip","hint":"Drag d below 0.","insight":"A negative determinant means the transformation flips orientation — like a mirror. The sign tells you whether space was reflected, the size tells you by how much it grew.","unlocked":["a","b","c","d"],"celebration":"medium","instruction":"Now make d negative (a reflection).","successType":"value_reached","successValue":-1,"successTarget":"d","successTolerance":0.5}],"glossary_data":[{"color":"#3b82f6","words":["determinant"],"tooltip":"ad − bc — the area-scaling factor","highlightClass":"g78-0"},{"color":"#f59e0b","words":["area"],"tooltip":"How the matrix scales a unit area","highlightClass":"g78-1"},{"color":"#10b981","words":["invertible","singular"],"tooltip":"A zero determinant means non-invertible","highlightClass":"g78-2"}]},{"id":79,"slug":"singular-value-decomposition","title":"Singular Value Decomposition","formula":"A=U\\Sigma V^T","author":"Eugenio Beltrami","year":"1873","category":"linear_algebra","description":"Break any matrix into rotation, stretch, and rotation.","stage":"live-demo","hook":"Every matrix, no matter how messy, is secretly just a rotation, then a stretch along clean axes, then another rotation. That decomposition powers image compression and recommendation engines.","hook_action":"Drag the singular values to keep or discard information.","variables_data":[{"max":10,"min":0,"name":"s1","step":0.1,"unit":null,"color":"primary","symbol":"σ₁","default":5,"constant":false,"description":"Largest singular value"},{"max":10,"min":0,"name":"s2","step":0.1,"unit":null,"color":"secondary","symbol":"σ₂","default":2,"constant":false,"description":"Second singular value"}],"presets_data":[{"label":"Balanced","values":{"s1":5,"s2":5}},{"label":"Compressible","values":{"s1":8,"s2":0.5}},{"label":"Rank deficient","values":{"s1":6,"s2":0}}],"lessons_data":[{"id":"touch-s2","hint":"Drag σ₂ to the left.","insight":"Singular values rank directions by importance. Shrinking the small ones loses little — most of the matrix's structure lives in the largest few.","unlocked":["s1","s2"],"celebration":"subtle","instruction":"Drag the second singular value σ₂ down.","successType":"variable_changed","successTarget":"s2"},{"id":"compress","hint":"Drag σ₂ toward 0.","insight":"Throwing away tiny singular values is lossy compression: a photo or dataset rebuilt from just the top few looks almost identical at a fraction of the size.","unlocked":["s1","s2"],"celebration":"big","instruction":"Drive σ₂ to nearly zero while σ₁ stays large.","successType":"value_reached","successValue":0,"successTarget":"s2","successTolerance":0.5},{"id":"balanced","hint":"Drag σ₂ back up near σ₁.","insight":"When all singular values matter, nothing can be discarded — the matrix is genuinely full-rank. SVD is the math behind PCA, latent semantic analysis, and Netflix-style recommenders.","unlocked":["s1","s2"],"celebration":"medium","instruction":"Now set both singular values roughly equal.","successType":"value_reached","successValue":5,"successTarget":"s2","successTolerance":1}],"glossary_data":[{"color":"#3b82f6","words":["singular values","singular value"],"tooltip":"σ — the strength of each component","highlightClass":"g79-0"},{"color":"#f59e0b","words":["rank"],"tooltip":"The number of non-zero singular values","highlightClass":"g79-1"},{"color":"#10b981","words":["compression"],"tooltip":"Dropping small σ compresses the data","highlightClass":"g79-2"}]},{"id":80,"slug":"dot-product","title":"Dot Product","formula":"\\mathbf{a}\\cdot\\mathbf{b}=|\\mathbf{a}||\\mathbf{b}|\\cos\\theta","author":"Josiah Willard Gibbs","year":"1881","category":"linear_algebra","description":"How much two vectors point the same way.","stage":"live-demo","hook":"Search engines, recommendation systems, and neural networks all ask the same question billions of times: how similar are these two vectors? The dot product is the answer.","hook_action":"Drag the angle between the vectors and their lengths.","variables_data":[{"max":180,"min":0,"name":"theta","step":1,"unit":"°","color":"primary","symbol":"θ","default":60,"constant":false,"description":"Angle between vectors"},{"max":10,"min":0,"name":"magA","step":0.1,"unit":null,"color":"secondary","symbol":"|a|","default":5,"constant":false,"description":"Length of a"},{"max":10,"min":0,"name":"magB","step":0.1,"unit":null,"color":"tertiary","symbol":"|b|","default":5,"constant":false,"description":"Length of b"}],"presets_data":[{"label":"Aligned","values":{"magA":5,"magB":5,"theta":0}},{"label":"Perpendicular","values":{"magA":5,"magB":5,"theta":90}},{"label":"Opposite","values":{"magA":5,"magB":5,"theta":180}}],"lessons_data":[{"id":"touch-theta","hint":"Drag θ.","insight":"The dot product follows the cosine of the angle: largest when the vectors align, shrinking as they diverge.","unlocked":["theta","magA","magB"],"celebration":"subtle","instruction":"Drag the angle θ between the vectors.","successType":"variable_changed","successTarget":"theta"},{"id":"perp","hint":"Drag θ to 90°.","insight":"At a right angle, cos(90°) = 0, so the dot product vanishes. A zero dot product is the definition of perpendicular — the test for orthogonality everywhere in math.","unlocked":["theta","magA","magB"],"celebration":"big","instruction":"Set the angle to 90°.","successType":"value_reached","successValue":90,"successTarget":"theta","successTolerance":8},{"id":"aligned","hint":"Drag θ toward 0°.","insight":"Perfectly aligned vectors give the maximum dot product. Cosine similarity uses exactly this to measure how alike two documents, songs, or word-embeddings are.","unlocked":["theta","magA","magB"],"celebration":"medium","instruction":"Now drag the angle to 0°.","successType":"value_reached","successValue":0,"successTarget":"theta","successTolerance":8}],"glossary_data":[{"color":"#3b82f6","words":["magnitude","length"],"tooltip":"|a| — the length of a vector","highlightClass":"g80-0"},{"color":"#f59e0b","words":["angle"],"tooltip":"θ — the angle between the two vectors","highlightClass":"g80-1"},{"color":"#10b981","words":["projection"],"tooltip":"Measures how much one vector lies along another","highlightClass":"g80-2"}]},{"id":81,"slug":"cross-product","title":"Cross Product","formula":"|\\mathbf{a}\\times\\mathbf{b}|=|\\mathbf{a}||\\mathbf{b}|\\sin\\theta","author":"Josiah Willard Gibbs","year":"1881","category":"linear_algebra","description":"A vector perpendicular to two others — and the area they span.","stage":"live-demo","hook":"Turn a wrench: the force and the handle define a twisting axis pointing straight out. The cross product produces that perpendicular vector — torque, magnetism, and 3D normals all rely on it.","hook_action":"Drag the angle between the vectors and their lengths.","variables_data":[{"max":180,"min":0,"name":"theta","step":1,"unit":"°","color":"primary","symbol":"θ","default":90,"constant":false,"description":"Angle between vectors"},{"max":10,"min":0,"name":"magA","step":0.1,"unit":null,"color":"secondary","symbol":"|a|","default":5,"constant":false,"description":"Length of a"},{"max":10,"min":0,"name":"magB","step":0.1,"unit":null,"color":"tertiary","symbol":"|b|","default":5,"constant":false,"description":"Length of b"}],"presets_data":[{"label":"Perpendicular","values":{"magA":5,"magB":5,"theta":90}},{"label":"Parallel","values":{"magA":5,"magB":5,"theta":0}},{"label":"Oblique","values":{"magA":5,"magB":5,"theta":45}}],"lessons_data":[{"id":"touch-theta","hint":"Drag θ.","insight":"The cross product's magnitude follows the sine of the angle — the exact opposite of the dot product. It measures the area of the parallelogram the vectors span.","unlocked":["theta","magA","magB"],"celebration":"subtle","instruction":"Drag the angle θ between the vectors.","successType":"variable_changed","successTarget":"theta"},{"id":"perp","hint":"Drag θ to 90°.","insight":"At a right angle, sin(90°) = 1 and the cross product is largest. This maximum is why torque is greatest when you push a wrench perpendicular to the handle.","unlocked":["theta","magA","magB"],"celebration":"big","instruction":"Set the angle to 90°.","successType":"value_reached","successValue":90,"successTarget":"theta","successTolerance":8},{"id":"parallel","hint":"Drag θ toward 0°.","insight":"Parallel vectors span no area, so their cross product is zero. The result also points perpendicular to both inputs — which is how 3D graphics compute surface normals for lighting.","unlocked":["theta","magA","magB"],"celebration":"medium","instruction":"Now drag the angle to 0°.","successType":"value_reached","successValue":0,"successTarget":"theta","successTolerance":8}],"glossary_data":[{"color":"#3b82f6","words":["magnitude","length"],"tooltip":"|a| — the length of a vector","highlightClass":"g81-0"},{"color":"#f59e0b","words":["angle"],"tooltip":"θ — the angle between the two vectors","highlightClass":"g81-1"},{"color":"#10b981","words":["perpendicular","normal"],"tooltip":"The result points perpendicular to both","highlightClass":"g81-2"}]}]}