tags. ========================================================== */ (function() { 'use strict'; /* ---------- Helpers ---------- */ function ldFmt(n) { return '$' + Math.round(n).toLocaleString(); } function ldRainCoins() { var container = document.getElementById('ld-coin-container'); if (!container) return; container.style.display = 'block'; container.innerHTML = ''; var emojis = ['๐Ÿ’ฐ','๐Ÿช™','๐Ÿ’ต','โœจ','๐ŸŽ‰','โญ']; for (var i = 0; i < 22; i++) { var coin = document.createElement('div'); coin.className = 'ld-coin'; coin.textContent = emojis[Math.floor(Math.random() * emojis.length)]; coin.style.left = (Math.random() * 100) + 'vw'; coin.style.animationDelay = (Math.random() * 1.5) + 's'; coin.style.fontSize = (16 + Math.random() * 16) + 'px'; container.appendChild(coin); } setTimeout(function() { container.style.display = 'none'; }, 3500); } /* ---------- Calculator ---------- */ window.ldCalculate = function() { var jackpotInput = document.getElementById('ld-jackpot'); var jackpot = parseFloat(jackpotInput.value); if (!jackpot || jackpot <= 0) { alert('Enter a jackpot amount, you future millionaire!'); return; } var stateRate = parseFloat(document.getElementById('ld-state').value) / 100; var federalRate = 0.37; // top federal bracket โ€” large jackpots will hit this var lumpSum = jackpot * 0.60; // ~60% cash value rule of thumb var afterFederal = lumpSum * (1 - federalRate); var afterState = afterFederal * (1 - stateRate); var annualRaw = jackpot / 30; var annualAfterFed = annualRaw * (1 - federalRate); var annualNet = annualAfterFed * (1 - stateRate); var annuityTotal = annualNet * 30; document.getElementById('ld-res-jackpot').textContent = ldFmt(jackpot); document.getElementById('ld-res-lump').textContent = ldFmt(lumpSum); document.getElementById('ld-res-federal').textContent = ldFmt(afterFederal); document.getElementById('ld-res-takehome').textContent = ldFmt(afterState); document.getElementById('ld-res-annual').textContent = ldFmt(annualRaw); document.getElementById('ld-res-annual-net').textContent = ldFmt(annualNet); document.getElementById('ld-res-annuity-total').textContent = ldFmt(annuityTotal); document.getElementById('ld-results-card').classList.remove('ld-hidden'); // Save take-home to localStorage so the planner page can autofill try { localStorage.setItem('ldTakehome', Math.round(afterState)); } catch (e) { /* private mode */ } ldRainCoins(); setTimeout(function() { document.getElementById('ld-results-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); }, 300); }; /* ---------- Split Winners ---------- */ var ldSplitJackpot = 0; var ldSplitState = 0; var ldActiveSplitCount = 1; window.ldCalcSplits = function() { ldSplitJackpot = parseFloat(document.getElementById('ld-split-jackpot').value) || 0; ldSplitState = (parseFloat(document.getElementById('ld-split-state').value) || 0) / 100; if (!ldSplitJackpot) { alert('Enter a jackpot amount first!'); return; } document.getElementById('ld-splits-results').classList.remove('ld-hidden'); ldRenderSplitCards(ldActiveSplitCount); ldRainCoins(); }; window.ldShowSplit = function(btn, n) { ldActiveSplitCount = n; var tabs = document.querySelectorAll('.ld-split-tab'); for (var i = 0; i < tabs.length; i++) tabs[i].classList.remove('active'); btn.classList.add('active'); ldRenderSplitCards(n); }; function ldRenderSplitCards(n) { var lump = ldSplitJackpot * 0.60; var perPerson = lump / n; var afterFed = perPerson * 0.63; var afterState = afterFed * (1 - ldSplitState); var soloTakehome = lump * 0.63 * (1 - ldSplitState); var reactions = ['', '๐Ÿ˜ค', '๐Ÿ˜ฌ', '๐Ÿ˜ฎ', '๐Ÿ˜ข', '๐Ÿ˜ญ']; var container = document.getElementById('ld-split-cards'); container.innerHTML = ''; var items = [ { label: 'Your Share of Lump Sum', value: ldFmt(perPerson), note: 'รท' + n + ' winner' + (n>1?'s':''), cls: '' }, { label: 'After Federal Tax', value: ldFmt(afterFed), note: '37% withheld', cls: '' }, { label: 'After State Tax', value: ldFmt(afterState), note: 'Your take-home ' + reactions[n], cls: 'highlight' }, { label: 'You "Lost" vs. Solo Win', value: ldFmt(soloTakehome - afterState), note: 'Due to ' + (n-1) + ' extra winner' + ((n-1)!==1?'s':''), cls: n>1 ? 'warn' : '' } ]; for (var i = 0; i < items.length; i++) { var item = items[i]; var c = document.createElement('div'); c.className = 'ld-result-card ' + item.cls; c.innerHTML = '
' + item.label + '
' + '
' + item.value + '
' + '
' + item.note + '
'; container.appendChild(c); } } /* ---------- Dream Planner ---------- */ var ldSpendingCategories = [ 'Family & Gifts', 'Pay Off Debt', 'Buy a Home', 'Buy a Car', 'Investments', 'Retirement Fund', 'Emergency Fund', 'Donate to Charity', 'Travel & Experiences', 'Education / Kids', 'Business Venture', 'Splurge Fund ๐ŸŽ‰', 'Other' ]; window.ldAddSpendingRow = function(cat, amt) { cat = cat || ''; amt = amt || ''; var id = 'r' + Date.now() + Math.floor(Math.random() * 1000); var container = document.getElementById('ld-spending-rows'); if (!container) return; var row = document.createElement('div'); row.className = 'ld-spending-row'; row.id = 'ld-row-' + id; var opts = ''; for (var i = 0; i < ldSpendingCategories.length; i++) { var c = ldSpendingCategories[i]; opts += ''; } row.innerHTML = '' + '' + ''; container.appendChild(row); ldUpdateSpendingTotal(); }; window.ldRemoveRow = function(id) { var el = document.getElementById('ld-row-' + id); if (el) el.remove(); ldUpdateSpendingTotal(); }; window.ldUpdateSpendingTotal = function() { var totalInput = document.getElementById('ld-planner-total'); if (!totalInput) return; var total = parseFloat(totalInput.value) || 0; var allocated = 0; var inputs = document.querySelectorAll('#ld-spending-rows input[type="number"]'); for (var i = 0; i < inputs.length; i++) { allocated += parseFloat(inputs[i].value) || 0; } var display = document.getElementById('ld-spending-total-display'); if (display) display.textContent = ldFmt(allocated); var label = document.getElementById('ld-remaining-label'); if (!label) return; if (total > 0) { var remaining = total - allocated; if (remaining < 0) { label.textContent = 'Overspent by ' + ldFmt(Math.abs(remaining)) + ' โ€” ease up!'; label.style.color = '#ffb703'; } else if (remaining === 0) { label.textContent = 'Every penny accounted for! ๐ŸŽฏ'; label.style.color = '#8ecae6'; } else { label.textContent = ldFmt(remaining) + ' still unallocated'; label.style.color = '#8ecae6'; } } else { label.textContent = 'Enter your take-home above'; label.style.color = 'rgba(255,255,255,0.7)'; } }; /* ---------- Initialize on page load ---------- */ document.addEventListener('DOMContentLoaded', function() { // If we're on the planner page, set up default rows + autofill from localStorage var plannerTotal = document.getElementById('ld-planner-total'); if (plannerTotal) { try { var saved = localStorage.getItem('ldTakehome'); if (saved && !plannerTotal.value) plannerTotal.value = saved; } catch (e) {} var rowsContainer = document.getElementById('ld-spending-rows'); if (rowsContainer && rowsContainer.children.length === 0) { window.ldAddSpendingRow('Family & Gifts', ''); window.ldAddSpendingRow('Pay Off Debt', ''); window.ldAddSpendingRow('Investments', ''); } window.ldUpdateSpendingTotal(); } }); })();

Plan Your
Fantasy Fortune

Go ahead โ€” allocate your millions. This is your consequence-free spending spree. No judgment here. (Okay, maybe a little.)

๐Ÿ’ต Your Imaginary Take-Home

๐Ÿ’ก Tip: Run the Calculator first โ€” your take-home will auto-fill if you came from there.

๐Ÿ›๏ธ How Are You Spending It All?
Total Allocated
Enter your take-home above
$0
๐Ÿ“ง Save Your Plan

Want to email yourself a copy of your dream plan? Use the form below โ€” we’ll send it to your inbox so you can dream again later.

*We will not share your email or your dream plan. Promise. We’re dream-keepers, not data-brokers.