The Over/Under ·
One number. One line. Over or under?
Every Parkonomics newsletter comes with a line on a real number from the world of parking and mobility. Make your call.
Your record
0 for 0
Bonus Round
Three more lines. No pressure.
Quick calls, instant answers. They count toward your record.
Next line drops in two weeks
A new Over/Under arrives with every Parkonomics newsletter, every other Tuesday. Results from this one, too.
Get the newsletter →'+esc(g.q)+'
The line is '+g.line+g.unit+'. Over or under?
'; card.querySelectorAll('button').forEach(function(b){b.onclick=function(){pick=b.getAttribute('data-p');state.picks[key]={pick:pick,win:pick===g.correct};save(state);history.replaceState(null,'','?q='+qid+'&pick='+pick);revealView();rec()}}); } function revealView(){ var win=pick===g.correct, pct=function(v){return Math.min(100,v/g.max*100)}; document.getElementById('pkg-h1').textContent=win?'You read the road.':'The road had other plans.'; document.getElementById('pkg-dek').textContent=win?'Good call. You may now say "induced demand" at parties. Here is the proof.':'Most people guess low. The road always takes the over. Here is why.'; card.innerHTML='The answer
'+(win?'Correct.':'Not this time.')+'
You took the '+pick+' on '+g.line+g.unit+'. The real number: '+esc(g.answerLabel)+'.
'+ ''+
''+
'
'+
'LINE '+g.line+g.unit+'
ANSWER '+g.answer+g.unit+'
'+esc(g.explain)+'
Source: '+esc(g.source.label)+'
'+ ''; requestAnimationFrame(function(){requestAnimationFrame(function(){document.getElementById('pkg-fill').style.width=pct(g.answer)+'%';document.getElementById('pkg-ans').classList.add('show')})}); } pick?revealView():askView(); var bw=document.getElementById('pkg-bonus'); BONUS.forEach(function(b){ var d=document.createElement('div');d.className='bq'; d.innerHTML=''+esc(b.q)+'
'; bw.appendChild(d); function show(p){var win=p===b.correct;d.querySelector('.mini').classList.add('done');d.querySelector('.res').innerHTML=''+(win?'Correct.':'Not quite.')+' '+esc(b.a)+''+esc(b.src)+''} var k='bonus-'+b.id; if(state.picks[k])show(state.picks[k].pick); d.querySelectorAll('button').forEach(function(btn){btn.onclick=function(){if(state.picks[k])return;var p=btn.getAttribute('data-p');state.picks[k]={pick:p,win:p===b.correct};save(state);show(p);rec()}}); }); rec(); })();