<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Break Free from Debt in 24-48 Months | DebtCalculor</title>
    <style>
        body { 
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            margin: 0; 
            padding: 0;
            background: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 100%);
            color: white;
            min-height: 100vh;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .container { 
            max-width: 800px; 
            padding: 40px 20px; 
            text-align: center; 
        }
        h1 { 
            font-size: 3em; 
            margin-bottom: 20px; 
            font-weight: 700; 
        }
        .subtitle { 
            font-size: 1.2em; 
            margin-bottom: 30px; 
            opacity: 0.9; 
        }
        .calculator { 
            background: rgba(255,255,255,0.1); 
            padding: 40px; 
            border-radius: 20px; 
            margin: 30px 0;
            backdrop-filter: blur(10px);
        }
        .calculator h2 { 
            font-size: 1.8em; 
            margin-bottom: 20px; 
        }
        .slider { 
            width: 100%; 
            height: 8px; 
            background: rgba(255,255,255,0.2); 
            border-radius: 4px;
            margin: 20px 0;
            appearance: none;
            outline: none;
            cursor: pointer;
        }
        .slider::-webkit-slider-thumb {
            appearance: none;
            width: 24px;
            height: 24px;
            background: #10b981;
            border-radius: 50%;
            cursor: pointer;
        }
        .result { 
            font-size: 1.8em; 
            margin: 15px 0; 
            font-weight: 600;
            padding: 15px;
            background: rgba(255,255,255,0.1);
            border-radius: 10px;
        }
        .btn { 
            background: #10b981; 
            color: white; 
            padding: 15px 30px; 
            border: none; 
            border-radius: 10px; 
            font-size: 1.1em; 
            cursor: pointer; 
            text-decoration: none; 
            display: inline-block; 
            margin: 10px; 
            transition: all 0.3s ease;
            font-weight: 600;
        }
        .btn:hover { 
            background: #059669; 
            transform: translateY(-2px);
        }
        .features {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
            gap: 20px;
            margin: 30px 0;
        }
        .feature {
            background: rgba(255,255,255,0.1);
            padding: 20px;
            border-radius: 10px;
            text-align: center;
        }
        .feature h3 { 
            margin-bottom: 10px; 
            color: #10b981; 
        }
        .trust { 
            margin-top: 30px; 
            font-size: 0.9em; 
            opacity: 0.8; 
        }
        
        @media (max-width: 768px) {
            h1 { font-size: 2em; }
            .calculator { padding: 20px; }
            .container { padding: 20px 10px; }
        }
    </style>
</head>
<body>
    <div class='container'>
        <h1>Break Free from Debt in 24-48 Months</h1>
        <p class='subtitle'>Get your financial life back with proven debt relief strategies</p>
        
        <div class='calculator'>
            <h2>Debt Relief Calculator</h2>
            <p>Total Debt Amount: <strong>$<span id='debt'>50,000</span></strong></p>
            <input type='range' class='slider' id='debtSlider' min='10000' max='100000' value='50000' step='1000'>
            <div class='result' style='color: #10b981;'>
                Estimated Settlement: $<span id='settlement'>30,000</span>
            </div>
            <div class='result' style='color: #fbbf24;'>
                Your Savings: $<span id='savings'>20,000</span>
            </div>
        </div>
        
        <div class='features'>
            <div class='feature'>
                <h3>🏆 Proven Results</h3>
                <p>Average 40-60% debt reduction</p>
            </div>
            <div class='feature'>
                <h3>⚡ Fast Process</h3>
                <p>Get relief in 24-48 months</p>
            </div>
            <div class='feature'>
                <h3>🛡️ Expert Support</h3>
                <p>Dedicated debt specialists</p>
            </div>
        </div>
        
        <a href='https://www.anrdoezrs.net/links/101490029/type/dlg/https://www.nationaldebtrelief.com/' target='_blank' class='btn'>Get Free Consultation</a>
        <a href='https://www.jdoqocy.com/links/101490029/type/dlg/https://www.freedomdebtrelief.com/' target='_blank' class='btn'>Compare Options</a>
        
        <div class='trust'>
            <p>✅ Free consultation • ✅ No upfront fees • ✅ A+ BBB rating • ✅ Licensed & bonded</p>
        </div>
    </div>
    
    <script>
        const slider = document.getElementById('debtSlider');
        const debtSpan = document.getElementById('debt');
        const settlementSpan = document.getElementById('settlement');
        const savingsSpan = document.getElementById('savings');
        
        function updateCalculator() {
            const debt = parseInt(slider.value);
            const settlement = Math.round(debt * 0.6);
            const savings = debt - settlement;
            
            debtSpan.textContent = debt.toLocaleString();
            settlementSpan.textContent = settlement.toLocaleString();
            savingsSpan.textContent = savings.toLocaleString();
        }
        
        slider.addEventListener('input', updateCalculator);
        updateCalculator();
    </script>
</body>
</html>