// ============================================
// ALL REACT COMPONENTS FOR PROPTRACK
// ============================================
const { useState, useEffect } = React;

// ============================================
// ICONS
// ============================================
const Icons = {
    TrendUp: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6" />
        </svg>
    ),
    Shield: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
        </svg>
    ),
    Calendar: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
        </svg>
    ),
    Target: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z" />
        </svg>
    ),
    ChartBar: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z" />
        </svg>
    ),
    Clipboard: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" />
        </svg>
    ),
    Warning: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
        </svg>
    ),
    Plus: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 4v16m8-8H4" />
        </svg>
    ),
    Power: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M5.636 5.636a9 9 0 1012.728 0M12 3v9" />
        </svg>
    ),
    User: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
        </svg>
    ),
    Menu: () => (
        <svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M4 6h16M4 12h16M4 18h16" />
        </svg>
    ),
    Close: () => (
        <svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M6 18L18 6M6 6l12 12" />
        </svg>
    ),
    Sun: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z" />
        </svg>
    ),
    Moon: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z" />
        </svg>
    ),
    Pencil: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z" />
        </svg>
    ),
    Trash: () => (
        <svg className="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
        </svg>
    ),
    // Logo components
    LogoFull: () => (
        <div className="flex items-center gap-3 mb-6">
            <svg className="w-12 h-12" viewBox="0 0 48 48" fill="none">
                <rect width="48" height="48" rx="10" className="fill-slate-900 dark:fill-slate-700"/>
                <path d="M12 34L18 22L24 28L36 14" stroke="#10b981" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"/>
                <path d="M30 14H36V20" stroke="#10b981" strokeWidth="3" strokeLinecap="round" strokeLinejoin="round"/>
            </svg>
            <div className="flex flex-col">
                <span className="text-3xl font-bold text-slate-900 dark:text-slate-100 leading-none">PropTrack</span>
                <span className="text-sm text-slate-600 dark:text-slate-400 leading-none mt-1.5">Prop Firm Management</span>
            </div>
        </div>
    ),
    LogoMinimal: () => (
        <div className="flex items-center gap-2.5">
            <div className="w-8 h-8 bg-slate-900 dark:bg-slate-700 rounded-lg flex items-center justify-center">
                <svg className="w-5 h-5" viewBox="0 0 20 20" fill="none">
                    <path d="M3 16L6.5 8L10 12L17 4" stroke="#10b981" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"/>
                </svg>
            </div>
            <span className="text-xl font-bold text-slate-900 dark:text-slate-100">PropTrack</span>
        </div>
    ),
};

// ============================================
// ONBOARDING TOUR COMPONENT
// ============================================
function OnboardingTour({ onComplete }) {
    const [currentStep, setCurrentStep] = useState(0);
    const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });
    const [spotlightPosition, setSpotlightPosition] = useState({ top: 0, left: 0, width: 0, height: 0 });
    const [arrowPosition, setArrowPosition] = useState('top');

    const steps = [
        {
            target: 'tour-filter-active',
            title: 'Active Accounts',
            description: 'This tab shows all your live prop firm challenges. Track your progress in real-time as you work towards getting funded!',
            position: 'bottom'
        },
        {
            target: 'tour-filter-approved',
            title: 'Millionaire Loading...',
            description: 'When you pass a challenge, your account moves here! 🎉 This is your wall of victories.',
            position: 'bottom'
        },
        {
            target: 'tour-filter-breached',
            title: 'Wall of Shame',
            description: 'Accounts that hit max drawdown end up here. Learn from them and come back stronger! 💪',
            position: 'bottom'
        },
        {
            target: 'tour-add-account',
            title: 'Add New Account',
            description: 'Click this button to add a new prop firm account. Enter your challenge details and start tracking!',
            position: 'bottom'
        },
        {
            target: 'tour-profile',
            title: 'Your Profile',
            description: 'View your profile, check your trial status, and see how much time you have left to use PropTrack.',
            position: 'bottom'
        }
    ];

    useEffect(() => {
        positionTooltip();
        window.addEventListener('resize', positionTooltip);
        return () => window.removeEventListener('resize', positionTooltip);
    }, [currentStep]);

    const positionTooltip = () => {
        const step = steps[currentStep];
        const element = document.getElementById(step.target);

        if (!element) {
            console.warn('Tour element not found:', step.target);
            return;
        }

        const rect = element.getBoundingClientRect();
        const padding = 8;

        // Set spotlight position
        setSpotlightPosition({
            top: rect.top - padding,
            left: rect.left - padding,
            width: rect.width + (padding * 2),
            height: rect.height + (padding * 2)
        });

        // Calculate tooltip position based on step's position preference
        const tooltipWidth = 320;
        const tooltipHeight = 180;
        let top, left, arrow;

        switch (step.position) {
            case 'bottom':
                top = rect.bottom + 20;
                left = Math.max(16, Math.min(rect.left + (rect.width / 2) - (tooltipWidth / 2), window.innerWidth - tooltipWidth - 16));
                arrow = 'top';
                break;
            case 'top':
                top = rect.top - tooltipHeight - 20;
                left = Math.max(16, Math.min(rect.left + (rect.width / 2) - (tooltipWidth / 2), window.innerWidth - tooltipWidth - 16));
                arrow = 'bottom';
                break;
            case 'left':
                top = rect.top + (rect.height / 2) - (tooltipHeight / 2);
                left = rect.left - tooltipWidth - 20;
                arrow = 'right';
                break;
            case 'right':
                top = rect.top + (rect.height / 2) - (tooltipHeight / 2);
                left = rect.right + 20;
                arrow = 'left';
                break;
            default:
                top = rect.bottom + 20;
                left = rect.left;
                arrow = 'top';
        }

        // Keep tooltip in viewport
        if (top < 16) top = 16;
        if (top + tooltipHeight > window.innerHeight - 16) {
            top = rect.top - tooltipHeight - 20;
            arrow = 'bottom';
        }

        setTooltipPosition({ top, left });
        setArrowPosition(arrow);
    };

    const handleNext = () => {
        if (currentStep < steps.length - 1) {
            setCurrentStep(currentStep + 1);
        } else {
            handleComplete();
        }
    };

    const handleSkip = () => {
        handleComplete();
    };

    const handleComplete = () => {
        localStorage.setItem('proptrack-tour-seen', 'true');
        onComplete();
    };

    const step = steps[currentStep];

    return (
        <div className="fixed inset-0 z-[9998]">
            {/* Dark overlay */}
            <div className="tour-overlay" onClick={handleSkip}></div>

            {/* Spotlight */}
            <div
                className="tour-spotlight"
                style={{
                    top: spotlightPosition.top,
                    left: spotlightPosition.left,
                    width: spotlightPosition.width,
                    height: spotlightPosition.height
                }}
            />

            {/* Tooltip */}
            <div
                className="tour-tooltip"
                style={{
                    top: tooltipPosition.top,
                    left: tooltipPosition.left
                }}
            >
                <div className={`tour-tooltip-arrow ${arrowPosition}`}></div>

                <div className="tour-title">{step.title}</div>
                <div className="tour-description">{step.description}</div>

                <div className="tour-buttons">
                    <button
                        className="tour-btn tour-btn-skip"
                        onClick={handleSkip}
                    >
                        Skip Tour
                    </button>
                    <button
                        className="tour-btn tour-btn-next"
                        onClick={handleNext}
                    >
                        {currentStep === steps.length - 1 ? "Get Started!" : "Next"}
                    </button>
                </div>

                {/* Step indicators */}
                <div className="tour-step-indicator">
                    {steps.map((_, index) => (
                        <div
                            key={index}
                            className={`tour-step-dot ${
                                index === currentStep ? 'active' :
                                index < currentStep ? 'completed' : ''
                            }`}
                        />
                    ))}
                </div>
            </div>
        </div>
    );
}

// ============================================
// LOGIN COMPONENT
// ============================================
function LoginScreen({ onLogin }) {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const [error, setError] = useState('');
    const [loading, setLoading] = useState(false);
    const [resetEmail, setResetEmail] = useState('');
    const [showReset, setShowReset] = useState(false);
    const [forceReset, setForceReset] = useState(false);

    const handleGoogleLogin = async () => {
        setError('');
        setLoading(true);

        try {
            const provider = new firebase.auth.GoogleAuthProvider();
            const result = await auth.signInWithPopup(provider);

            // Check if user document exists, create if not
            const userDoc = await db.collection('users').doc(result.user.uid).get();

            if (!userDoc.exists) {
                // New Google user - create Firestore document
                await db.collection('users').doc(result.user.uid).set({
                    email: result.user.email,
                    name: result.user.displayName,
                    createdAt: firebase.firestore.FieldValue.serverTimestamp(),
                    lastLogin: firebase.firestore.FieldValue.serverTimestamp(),
                    accounts: [],
                    trades: {}
                });

                // Increment user count
                try {
                    await db.collection('stats').doc('public').update({
                        totalUsers: firebase.firestore.FieldValue.increment(1),
                        lastUpdated: firebase.firestore.FieldValue.serverTimestamp()
                    });
                } catch (err) {
                    console.error('Error updating user count:', err);
                }
            } else {
                // Existing user - update last login
                await db.collection('users').doc(result.user.uid).update({
                    lastLogin: firebase.firestore.FieldValue.serverTimestamp()
                });
            }

            onLogin(result.user);

        } catch (error) {
            console.error('Google login error:', error);
            if (error.code === 'auth/popup-closed-by-user') {
                setError('Login cancelled. Please try again.');
            } else if (error.code === 'auth/popup-blocked') {
                setError('Popup blocked. Please enable popups for this site.');
            } else {
                setError('Google login failed: ' + error.message);
            }
        }

        setLoading(false);
    };

    const handleLogin = async (e) => {
        e.preventDefault();
        setError('');
        setLoading(true);

        try {
            const result = await auth.signInWithEmailAndPassword(email, password);

            try {
                const userDoc = await db.collection('users').doc(result.user.uid).get();

                if (!userDoc.exists) {
                    await db.collection('users').doc(result.user.uid).set({
                        email: result.user.email,
                        createdAt: firebase.firestore.FieldValue.serverTimestamp(),
                        needsPasswordReset: false,
                        accounts: [],
                        trades: {}
                    });

                    // Increment user count for new email users
                    try {
                        await db.collection('stats').doc('public').set({
                            totalUsers: firebase.firestore.FieldValue.increment(1),
                            lastUpdated: firebase.firestore.FieldValue.serverTimestamp()
                        }, { merge: true });
                    } catch (err) {
                        console.error('Error updating user count:', err);
                    }

                    onLogin(result.user);
                    setLoading(false);
                    return;
                }

                const userData = userDoc.data();

                // Update last login
                await db.collection('users').doc(result.user.uid).update({
                    lastLogin: firebase.firestore.FieldValue.serverTimestamp()
                });

            } catch (err) {
                console.error('User check error:', err);
            }

            onLogin(result.user);

        } catch (error) {
            console.error(error);
            if (error.code === 'auth/user-not-found') {
                setError('No account found. Please contact admin for access.');
            } else if (error.code === 'auth/wrong-password') {
                setError('Incorrect password. Click "Reset Password" if you forgot it.');
            } else if (error.code === 'auth/invalid-email') {
                setError('Please enter a valid email address.');
            } else if (error.code === 'auth/too-many-requests') {
                setError('Too many failed attempts. Please try again later.');
            } else {
                setError('Login failed: ' + error.message);
            }
        }

        setLoading(false);
    };

    const handlePasswordReset = async () => {
        if (!resetEmail) {
            setError('Please enter your email address first');
            return;
        }

        setLoading(true);
        setError('');

        try {
            await auth.sendPasswordResetEmail(resetEmail, {
                url: window.location.origin,
                handleCodeInApp: false
            });

            alert('Password reset email sent! Please check your inbox (and spam folder).');

            if (forceReset) {
                setForceReset(false);
                setShowReset(false);
                setError('Check your email to set a new password, then login with your new password.');
            } else {
                setShowReset(false);
            }

            setResetEmail('');
        } catch (error) {
            console.error('Password reset error:', error);
            if (error.code === 'auth/user-not-found') {
                setError('No account found with this email address.');
            } else {
                setError('Failed to send reset email. Please try again.');
            }
        }
        setLoading(false);
    };

    if (forceReset) {
        return (
            <div className="min-h-screen flex items-center justify-center p-6 bg-white dark:bg-slate-900">
                <div className="max-w-md w-full">
                    <h1 className="text-3xl font-bold mb-8 text-slate-900 dark:text-slate-100">
                        Password Reset Required
                    </h1>

                    <div className="bg-amber-50 border border-amber-200 text-amber-800 px-4 py-3 rounded-lg mb-6">
                        <p className="font-semibold">First Time Login Detected</p>
                        <p className="text-sm mt-1">For security, please reset your password before continuing.</p>
                    </div>

                    {error && (
                        <div className="bg-blue-50 border border-blue-200 text-blue-700 px-4 py-3 rounded-lg mb-6">
                            {error}
                        </div>
                    )}

                    <div className="space-y-5">
                        <div>
                            <label className="block text-sm font-medium text-slate-900 dark:text-slate-100 mb-2">
                                Your Email
                            </label>
                            <input
                                type="email"
                                value={resetEmail}
                                onChange={(e) => setResetEmail(e.target.value)}
                                className="w-full px-4 py-3 bg-slate-50 dark:bg-slate-800 border-0 rounded-lg text-slate-900 dark:text-slate-100"
                                readOnly
                            />
                        </div>

                        <button
                            onClick={handlePasswordReset}
                            disabled={loading}
                            className="w-full btn-primary py-3 rounded-lg font-semibold disabled:opacity-50"
                        >
                            {loading ? 'Sending...' : 'Send Password Reset Email'}
                        </button>

                        <button
                            onClick={() => {
                                setForceReset(false);
                                setError('');
                                setPassword('');
                            }}
                            className="w-full text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-100 font-medium"
                        >
                            Back to Login
                        </button>
                    </div>
                </div>
            </div>
        );
    }

    return (
        <div className="min-h-screen bg-white dark:bg-slate-900">
            {/* Marquee at top */}
            <div style={{
                overflow: 'hidden',
                background: 'transparent',
                padding: '20px 0'
            }}>
                <div style={{
                    display: 'flex',
                    animation: 'marqueeScroll 20s linear infinite',
                    whiteSpace: 'nowrap'
                }}>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Master Your Mind. Master Your Trades. Get Funded $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Master Your Mind. Master Your Trades. Get Funded $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Master Your Mind. Master Your Trades. Get Funded $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Master Your Mind. Master Your Trades. Get Funded $$
                    </span>
                </div>
            </div>

            {/* Login Form */}
            <div className="flex items-center justify-center p-6">
                <div className="max-w-md w-full">
                    <Icons.LogoFull />

                {error && (
                    <div className="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-800 text-red-700 dark:text-red-400 px-4 py-3 rounded-lg mb-6 text-sm">
                        {error}
                    </div>
                )}

                {!showReset ? (
                    <div className="space-y-5">
                        {/* Google Sign-In Button (Primary) */}
                        <button
                            onClick={handleGoogleLogin}
                            disabled={loading}
                            className="w-full bg-white dark:bg-slate-800 border-2 border-slate-300 dark:border-slate-600 text-slate-700 dark:text-slate-200 py-3 px-4 rounded-lg font-semibold hover:bg-slate-50 dark:hover:bg-slate-700 disabled:opacity-50 transition-all flex items-center justify-center gap-3"
                        >
                            <svg className="w-5 h-5" viewBox="0 0 24 24">
                                <path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
                                <path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
                                <path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/>
                                <path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/>
                            </svg>
                            {loading ? 'Signing in...' : 'Continue with Google'}
                        </button>

                        {/* Divider */}
                        <div className="relative">
                            <div className="absolute inset-0 flex items-center">
                                <div className="w-full border-t border-slate-300 dark:border-slate-700"></div>
                            </div>
                            <div className="relative flex justify-center text-sm">
                                <span className="px-2 bg-white dark:bg-slate-900 text-slate-500 dark:text-slate-400">OR</span>
                            </div>
                        </div>

                        {/* Email/Password Form (Secondary) */}
                        <form onSubmit={handleLogin} className="space-y-4">
                            <div>
                                <label className="block text-sm font-medium text-slate-900 dark:text-slate-100 mb-2">
                                    Email
                                </label>
                                <input
                                    type="email"
                                    value={email}
                                    onChange={(e) => {
                                        setEmail(e.target.value);
                                        setResetEmail(e.target.value);
                                    }}
                                    required
                                    className="w-full px-4 py-3 bg-slate-50 dark:bg-slate-800 border-0 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 text-slate-900 dark:text-slate-100"
                                    placeholder="your@email.com"
                                />
                            </div>

                            <div>
                                <label className="block text-sm font-medium text-slate-900 dark:text-slate-100 mb-2">
                                    Password
                                </label>
                                <input
                                    type="password"
                                    value={password}
                                    onChange={(e) => setPassword(e.target.value)}
                                    required
                                    className="w-full px-4 py-3 bg-slate-50 dark:bg-slate-800 border-0 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 text-slate-900 dark:text-slate-100"
                                    placeholder="••••••••"
                                />
                            </div>

                            <button
                                type="submit"
                                disabled={loading}
                                className="w-full btn-primary py-3 rounded-lg font-semibold disabled:opacity-50"
                            >
                                {loading ? 'Logging in...' : 'Login with Email'}
                            </button>

                            <button
                                type="button"
                                onClick={() => setShowReset(true)}
                                className="w-full text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-100 font-medium text-sm"
                            >
                                Forgot Password?
                            </button>
                        </form>
                    </div>
                ) : (
                    <div className="space-y-5">
                        <div>
                            <label className="block text-sm font-medium text-slate-900 dark:text-slate-100 mb-2">
                                Enter your email for password reset
                            </label>
                            <input
                                type="email"
                                value={resetEmail}
                                onChange={(e) => setResetEmail(e.target.value)}
                                className="w-full px-4 py-3 bg-slate-50 dark:bg-slate-800 border-0 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 text-slate-900 dark:text-slate-100"
                                placeholder="your@email.com"
                            />
                        </div>

                        <button
                            onClick={handlePasswordReset}
                            disabled={loading}
                            className="w-full btn-primary py-3 rounded-lg font-semibold disabled:opacity-50"
                        >
                            {loading ? 'Sending...' : 'Send Reset Email'}
                        </button>

                        <button
                            onClick={() => {
                                setShowReset(false);
                                setError('');
                            }}
                            className="w-full text-slate-600 dark:text-slate-400 hover:text-slate-900 dark:hover:text-slate-100 font-medium"
                        >
                            Back to Login
                        </button>
                    </div>
                )}

                <div className="mt-8 text-center text-xs text-slate-500 dark:text-slate-400">
                    <p>New users: Check email for password reset before login</p>
                </div>
            </div>
            </div>

            {/* Marquee at bottom */}
            <div style={{
                position: 'fixed',
                bottom: 0,
                left: 0,
                right: 0,
                overflow: 'hidden',
                background: 'transparent',
                padding: '20px 0'
            }}>
                <div style={{
                    display: 'flex',
                    animation: 'marqueeScroll 20s linear infinite',
                    whiteSpace: 'nowrap'
                }}>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Discipline Over Emotion. Strategy Over Chaos. Funded Over Failed $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Discipline Over Emotion. Strategy Over Chaos. Funded Over Failed $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Discipline Over Emotion. Strategy Over Chaos. Funded Over Failed $$
                    </span>
                    <span style={{
                        fontStyle: 'italic',
                        fontWeight: '600',
                        fontSize: '2rem',
                        color: 'white',
                        WebkitTextStroke: '1px rgba(15, 23, 42, 0.3)',
                        padding: '0 3rem'
                    }}>
                        Discipline Over Emotion. Strategy Over Chaos. Funded Over Failed $$
                    </span>
                </div>
            </div>
        </div>
    );
}

// ============================================
// MAIN APP WITH AUTHENTICATION
// ============================================
function App() {
    const [user, setUser] = useState(null);
    const [loading, setLoading] = useState(true);

    useEffect(() => {
        const unsubscribe = auth.onAuthStateChanged((user) => {
            setUser(user);
            setLoading(false);
        });

        return () => unsubscribe();
    }, []);

    const handleLogout = async () => {
        try {
            await auth.signOut();
            setUser(null);
        } catch (error) {
            console.error('Error logging out:', error);
        }
    };

    if (loading) {
        return (
            <div className="min-h-screen flex items-center justify-center bg-slate-50">
                <div className="loader"></div>
            </div>
        );
    }

    if (!user) {
        return <LoginScreen onLogin={setUser} />;
    }

    return <PropFirmTracker user={user} onLogout={handleLogout} />;
}

// ===================================================================
// PROPFIRMTRACKER - MAIN DASHBOARD COMPONENT
// ===================================================================
function PropFirmTracker({ user, onLogout }) {
    const [accounts, setAccounts] = useState([]);
    const [showForm, setShowForm] = useState(false);
    const [currentAccount, setCurrentAccount] = useState(null);
    const [viewingAccount, setViewingAccount] = useState(null);
    const [tradeJournals, setTradeJournals] = useState({});
    const [saving, setSaving] = useState(false);
    const [filterStatus, setFilterStatus] = useState('ALL');
    const [deleteConfirm, setDeleteConfirm] = useState(null);
    const [showProfile, setShowProfile] = useState(false);
    const [userData, setUserData] = useState(null);
    const [showMobileMenu, setShowMobileMenu] = useState(false);
    const [showWelcome, setShowWelcome] = useState(false);
    const [showTour, setShowTour] = useState(false);
    const [theme, setTheme] = useState(() => {
        // Initialize from localStorage or default to light
        const saved = localStorage.getItem('proptrack-theme');
        return saved || 'light';
    });

    // Apply theme on mount and when it changes
    useEffect(() => {
        document.documentElement.setAttribute('data-theme', theme);
        localStorage.setItem('proptrack-theme', theme);
    }, [theme]);

    const toggleTheme = () => {
        setTheme(prev => prev === 'light' ? 'dark' : 'light');
    };

    const [formData, setFormData] = useState({
        accountName: '',
        propFirmName: '',
        accountSize: '',
        accountBalance: '',
        peakBalance: '', // Track highest balance for trailing drawdown
        targetPercent: '',
        challengeStartDate: '',
        daysToPass: '',
        riskPerTrade: '',
        dailyDrawdownPercent: '',
        maxDrawdownType: 'static',
        maxDrawdownLevel: ''
    });

    useEffect(() => {
        loadUserData();
    }, [user]);

    const loadUserData = async () => {
        try {
            const userDoc = await db.collection('users').doc(user.uid).get();
            if (userDoc.exists) {
                const data = userDoc.data();
                setAccounts(data.accounts || []);
                setTradeJournals(data.trades || {});
                setUserData(data); // Store full user data for profile

                // Check if first-time user (no accounts and hasn't seen welcome)
                const hasSeenWelcome = localStorage.getItem('proptrack-welcome-seen');
                if (!hasSeenWelcome && (!data.accounts || data.accounts.length === 0)) {
                    setShowWelcome(true);
                }
            } else {
                await db.collection('users').doc(user.uid).set({
                    email: user.email,
                    createdAt: firebase.firestore.FieldValue.serverTimestamp(),
                    accounts: [],
                    trades: {}
                });
                setUserData({
                    email: user.email,
                    createdAt: new Date(),
                    accounts: [],
                    trades: {}
                });
                // Show welcome for brand new users
                setShowWelcome(true);
            }
        } catch (error) {
            console.error('Error loading user data:', error);
            const savedAccounts = localStorage.getItem('propFirmAccounts');
            const savedTrades = localStorage.getItem('tradeJournals');
            if (savedAccounts) setAccounts(JSON.parse(savedAccounts));
            if (savedTrades) setTradeJournals(JSON.parse(savedTrades));
        }
    };

    const saveToFirestore = async (newAccounts, newTrades) => {
        setSaving(true);
        try {
            await db.collection('users').doc(user.uid).update({
                accounts: newAccounts,
                trades: newTrades,
                lastUpdated: firebase.firestore.FieldValue.serverTimestamp()
            });
            localStorage.setItem('propFirmAccounts', JSON.stringify(newAccounts));
            localStorage.setItem('tradeJournals', JSON.stringify(newTrades));
        } catch (error) {
            console.error('Error saving to Firestore:', error);
            localStorage.setItem('propFirmAccounts', JSON.stringify(newAccounts));
            localStorage.setItem('tradeJournals', JSON.stringify(newTrades));
        }
        setSaving(false);
    };

    useEffect(() => {
        if (accounts.length > 0 || Object.keys(tradeJournals).length > 0) {
            const debounceTimer = setTimeout(() => {
                saveToFirestore(accounts, tradeJournals);
            }, 1000);

            return () => clearTimeout(debounceTimer);
        }
    }, [accounts, tradeJournals]);

    const handleInputChange = (e) => {
        const { name, value } = e.target;
        setFormData(prev => ({
            ...prev,
            [name]: value
        }));
    };

    const handleSubmit = (e) => {
        e.preventDefault();

        // Prepare account data
        let accountData = { ...formData };

        // For new accounts: initialize peakBalance
        if (!currentAccount) {
            accountData.peakBalance = formData.accountBalance || formData.accountSize;
        } else {
            // For existing accounts: update peakBalance if balance increased
            const oldAccount = accounts.find(acc => acc.id === currentAccount.id);
            const oldBalance = parseFloat(oldAccount.accountBalance);
            const newBalance = parseFloat(formData.accountBalance);
            const currentPeak = parseFloat(oldAccount.peakBalance || oldBalance);

            // Update peak if new balance is higher
            accountData.peakBalance = Math.max(newBalance, currentPeak).toString();

            const balanceChange = newBalance - oldBalance;

            // Auto-create trade entry if balance changed
            if (balanceChange !== 0 && !isNaN(balanceChange)) {
                const autoTrade = {
                    id: Date.now(),
                    date: new Date().toISOString().split('T')[0],
                    pnl: balanceChange,
                    mood: 'Balance Update',
                    result: balanceChange >= 0 ? 'Win' : 'Loss'
                };

                // Add auto-generated trade to journal
                setTradeJournals(prev => ({
                    ...prev,
                    [currentAccount.id]: [...(prev[currentAccount.id] || []), autoTrade]
                }));
            }
        }

        const newAccount = {
            id: currentAccount ? currentAccount.id : Date.now(),
            ...accountData,
            createdAt: currentAccount ? currentAccount.createdAt : new Date().toISOString()
        };

        if (currentAccount) {
            setAccounts(prev => prev.map(acc =>
                acc.id === currentAccount.id ? newAccount : acc
            ));
            setCurrentAccount(null);
            window.toast.success('Account updated successfully!');
        } else {
            setAccounts(prev => [...prev, newAccount]);
            window.toast.success('Account created successfully!');
        }

        setShowForm(false);
        resetForm();
    };

    const resetForm = () => {
        setFormData({
            accountName: '',
            propFirmName: '',
            accountSize: '',
            accountBalance: '',
            peakBalance: '',
            targetPercent: '',
            challengeStartDate: '',
            daysToPass: '',
            riskPerTrade: '',
            dailyDrawdownPercent: '',
            maxDrawdownType: 'static',
            maxDrawdownLevel: ''
        });
    };

    const editAccount = (account) => {
        setCurrentAccount(account);
        setFormData({
            accountName: account.accountName,
            propFirmName: account.propFirmName,
            accountSize: account.accountSize,
            accountBalance: account.accountBalance,
            peakBalance: account.peakBalance || account.accountBalance, // Fallback for existing accounts
            targetPercent: account.targetPercent,
            challengeStartDate: account.challengeStartDate,
            daysToPass: account.daysToPass,
            riskPerTrade: account.riskPerTrade,
            dailyDrawdownPercent: account.dailyDrawdownPercent,
            maxDrawdownType: account.maxDrawdownType,
            maxDrawdownLevel: account.maxDrawdownLevel
        });
        setShowForm(true);
        setViewingAccount(null);
        window.scrollTo({ top: 0, behavior: 'smooth' });
    };

    const deleteAccount = (id) => {
        setDeleteConfirm(id);
        setViewingAccount(null); // Exit detail view to show modal
    };

    const confirmDelete = () => {
        if (deleteConfirm) {
            const accountName = accounts.find(acc => acc.id === deleteConfirm)?.accountName || 'Account';
            setAccounts(prev => prev.filter(acc => acc.id !== deleteConfirm));
            setTradeJournals(prev => {
                const updated = { ...prev };
                delete updated[deleteConfirm];
                return updated;
            });
            setDeleteConfirm(null);
            setViewingAccount(null);
            window.toast.error(`${accountName} deleted`);
        }
    };

    const cancelDelete = () => {
        setDeleteConfirm(null);
    };

    const updateAccountBalance = (accountId, tradeAmount) => {
        setAccounts(prev => prev.map(acc => {
            if (acc.id === accountId) {
                const newBalance = parseFloat(acc.accountBalance) + tradeAmount;
                return {
                    ...acc,
                    accountBalance: newBalance.toFixed(2)
                };
            }
            return acc;
        }));
    };

    // Create demo accounts with sample data (one for each status)
    const createDemoAccount = () => {
        const now = Date.now();

        // Account 1: ACTIVE - In progress
        const activeAccountId = now;
        const activeAccount = {
            id: activeAccountId,
            accountName: "FTMO Challenge - Active",
            propFirmName: "FTMO",
            accountSize: "10000",
            accountBalance: "10250",
            peakBalance: "10250",
            targetPercent: "10",
            challengeStartDate: new Date(now - 7 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
            daysToPass: "30",
            riskPerTrade: "1",
            dailyDrawdownPercent: "5",
            maxDrawdownType: "static",
            maxDrawdownLevel: "10",
            createdAt: new Date().toISOString()
        };

        const activeTrades = [
            {
                id: now + 1,
                date: new Date(now - 6 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 150,
                mood: "Confident",
                result: "Win"
            },
            {
                id: now + 2,
                date: new Date(now - 5 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: -50,
                mood: "Frustrated",
                result: "Loss"
            },
            {
                id: now + 3,
                date: new Date(now - 3 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 100,
                mood: "Disciplined",
                result: "Win"
            },
            {
                id: now + 4,
                date: new Date(now - 1 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 50,
                mood: "Patient",
                result: "Win"
            }
        ];

        // Account 2: APPROVED - Reached target! (Millionaire Loading)
        const approvedAccountId = now + 1000;
        const approvedAccount = {
            id: approvedAccountId,
            accountName: "MyForexFunds - Passed!",
            propFirmName: "MyForexFunds",
            accountSize: "5000",
            accountBalance: "5500",
            peakBalance: "5500",
            targetPercent: "10",
            challengeStartDate: new Date(now - 20 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
            daysToPass: "30",
            riskPerTrade: "1",
            dailyDrawdownPercent: "5",
            maxDrawdownType: "trailing",
            maxDrawdownLevel: "10",
            createdAt: new Date().toISOString()
        };

        const approvedTrades = [
            {
                id: now + 5,
                date: new Date(now - 19 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 200,
                mood: "Confident",
                result: "Win"
            },
            {
                id: now + 6,
                date: new Date(now - 15 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 150,
                mood: "Disciplined",
                result: "Win"
            },
            {
                id: now + 7,
                date: new Date(now - 10 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: 150,
                mood: "Patient",
                result: "Win"
            }
        ];

        // Account 3: BREACHED - Hit max drawdown (Wall of Shame)
        const breachedAccountId = now + 2000;
        const breachedAccount = {
            id: breachedAccountId,
            accountName: "FundedNext - Failed",
            propFirmName: "FundedNext",
            accountSize: "15000",
            accountBalance: "13400",
            peakBalance: "15000",
            targetPercent: "10",
            challengeStartDate: new Date(now - 15 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
            daysToPass: "30",
            riskPerTrade: "2",
            dailyDrawdownPercent: "5",
            maxDrawdownType: "static",
            maxDrawdownLevel: "10",
            createdAt: new Date().toISOString()
        };

        const breachedTrades = [
            {
                id: now + 8,
                date: new Date(now - 14 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: -300,
                mood: "Overconfident",
                result: "Loss"
            },
            {
                id: now + 9,
                date: new Date(now - 13 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: -400,
                mood: "Revenge Trading",
                result: "Loss"
            },
            {
                id: now + 10,
                date: new Date(now - 12 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: -500,
                mood: "Emotional",
                result: "Loss"
            },
            {
                id: now + 11,
                date: new Date(now - 11 * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
                pnl: -400,
                mood: "Desperate",
                result: "Loss"
            }
        ];

        setAccounts(prev => [...prev, activeAccount, approvedAccount, breachedAccount]);
        setTradeJournals(prev => ({
            ...prev,
            [activeAccountId]: activeTrades,
            [approvedAccountId]: approvedTrades,
            [breachedAccountId]: breachedTrades
        }));

        localStorage.setItem('proptrack-welcome-seen', 'true');
        setShowWelcome(false);
        // Start tour after a short delay to let UI settle
        const hasSeenTour = localStorage.getItem('proptrack-tour-seen');
        if (!hasSeenTour) {
            setTimeout(() => setShowTour(true), 500);
        }
        window.toast.success('3 demo accounts created! Try filtering by Active, Millionaire Loading, and Wall of Shame.');
    };

    const skipOnboarding = () => {
        localStorage.setItem('proptrack-welcome-seen', 'true');
        setShowWelcome(false);
        // Start tour after a short delay to let UI settle
        const hasSeenTour = localStorage.getItem('proptrack-tour-seen');
        if (!hasSeenTour) {
            setTimeout(() => setShowTour(true), 500);
        }
    };

    if (viewingAccount) {
        return <AccountDetailView
            account={accounts.find(a => a.id === viewingAccount.id) || viewingAccount}
            trades={tradeJournals[viewingAccount.id] || []}
            onAddTrade={(trade) => {
                setTradeJournals(prev => ({
                    ...prev,
                    [viewingAccount.id]: [...(prev[viewingAccount.id] || []), trade]
                }));
                updateAccountBalance(viewingAccount.id, trade.pnl);
            }}
            onDeleteTrade={(tradeId) => {
                const trades = tradeJournals[viewingAccount.id] || [];
                const tradeToDelete = trades.find(t => t.id === tradeId);
                if (tradeToDelete) {
                    setTradeJournals(prev => ({
                        ...prev,
                        [viewingAccount.id]: prev[viewingAccount.id].filter(t => t.id !== tradeId)
                    }));
                    updateAccountBalance(viewingAccount.id, -tradeToDelete.pnl);
                    window.toast.error('Trade removed');
                }
            }}
            onBack={() => setViewingAccount(null)}
            onEdit={editAccount}
            onDelete={deleteAccount}
        />;
    }

    return (
        <div className="min-h-screen p-4 bg-slate-50 dark:bg-slate-900">
            {/* Welcome Modal for First-Time Users */}
            {showWelcome && (
                <div className="fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center p-4 z-50">
                    <div className="modern-card max-w-2xl w-full p-8 max-h-[90vh] overflow-y-auto">
                        <div className="text-center mb-6">
                            <div className="mb-4">
                                <Icons.LogoFull />
                            </div>
                            <h2 className="text-3xl font-bold text-slate-900 dark:text-slate-100 mb-2">
                                Welcome to PropTrack! 🎉
                            </h2>
                            <p className="text-slate-600 dark:text-slate-400">
                                Your journey to prop firm success starts here
                            </p>
                        </div>

                        <div className="space-y-6 mb-8">
                            {/* Feature 1 */}
                            <div className="flex gap-4">
                                <div className="flex-shrink-0 w-12 h-12 bg-emerald-100 dark:bg-emerald-900/30 rounded-full flex items-center justify-center">
                                    <span className="text-2xl">📊</span>
                                </div>
                                <div>
                                    <h3 className="font-bold text-slate-900 dark:text-slate-100 mb-1">
                                        Track Multiple Accounts
                                    </h3>
                                    <p className="text-sm text-slate-600 dark:text-slate-400">
                                        Manage all your prop firm challenges in one place. See real-time progress, risk metrics, and days remaining.
                                    </p>
                                </div>
                            </div>

                            {/* Feature 2 */}
                            <div className="flex gap-4">
                                <div className="flex-shrink-0 w-12 h-12 bg-blue-100 dark:bg-blue-900/30 rounded-full flex items-center justify-center">
                                    <span className="text-2xl">⚠️</span>
                                </div>
                                <div>
                                    <h3 className="font-bold text-slate-900 dark:text-slate-100 mb-1">
                                        Smart Risk Management
                                    </h3>
                                    <p className="text-sm text-slate-600 dark:text-slate-400">
                                        Know exactly how many trades you can lose before hitting max drawdown. Never blow another account.
                                    </p>
                                </div>
                            </div>

                            {/* Feature 3 */}
                            <div className="flex gap-4">
                                <div className="flex-shrink-0 w-12 h-12 bg-purple-100 dark:bg-purple-900/30 rounded-full flex items-center justify-center">
                                    <span className="text-2xl">📝</span>
                                </div>
                                <div>
                                    <h3 className="font-bold text-slate-900 dark:text-slate-100 mb-1">
                                        Trade Journal & Analytics
                                    </h3>
                                    <p className="text-sm text-slate-600 dark:text-slate-400">
                                        Log every trade with mood tracking. See your P&L graph and identify patterns in your trading psychology.
                                    </p>
                                </div>
                            </div>
                        </div>

                        <div className="bg-slate-100 dark:bg-slate-800 rounded-lg p-4 mb-6">
                            <p className="text-sm text-slate-700 dark:text-slate-300 text-center">
                                <strong>🎯 Pro Tip:</strong> Start with our demo account to explore features risk-free, or jump right in with your real challenge!
                            </p>
                        </div>

                        <div className="flex flex-col sm:flex-row gap-3">
                            <button
                                onClick={createDemoAccount}
                                className="flex-1 bg-emerald-600 hover:bg-emerald-700 text-white font-bold py-3 px-6 rounded-lg transition-colors"
                            >
                                Try Demo Account
                            </button>
                            <button
                                onClick={skipOnboarding}
                                className="flex-1 bg-slate-200 dark:bg-slate-700 hover:bg-slate-300 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-300 font-bold py-3 px-6 rounded-lg transition-colors"
                            >
                                Start from Scratch
                            </button>
                        </div>
                    </div>
                </div>
            )}

            {/* Onboarding Tour */}
            {showTour && (
                <OnboardingTour onComplete={() => setShowTour(false)} />
            )}

            {/* Header */}
            <div className="modern-card mb-6 p-6">
                <div className="flex justify-between items-center">
                    <div className="flex-1 min-w-0">
                        <div className="mb-3">
                            <Icons.LogoMinimal />
                        </div>
                        <p className="text-sm text-slate-600 dark:text-slate-400 truncate">{user.email}</p>
                    </div>

                    {/* Desktop Navigation */}
                    <div className="hidden md:flex items-center gap-3">
                        {saving && (
                            <div className="flex items-center gap-2 text-emerald-600">
                                <div className="loader w-4 h-4 border-2"></div>
                                <span className="text-sm">Saving...</span>
                            </div>
                        )}
                        {!showForm && (
                            <button
                                id="tour-add-account"
                                onClick={() => setShowForm(true)}
                                className="tooltip btn-primary p-3 rounded-lg font-medium flex items-center justify-center shadow-sm hover:scale-110 hover:bg-emerald-600 hover:shadow-lg transition-all"
                                data-tooltip="Add Account"
                            >
                                <Icons.Plus />
                            </button>
                        )}
                        <button
                            id="tour-profile"
                            onClick={() => setShowProfile(true)}
                            className="tooltip bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-200 p-3 rounded-lg font-medium transition-all hover:scale-110"
                            data-tooltip="Profile"
                        >
                            <Icons.User />
                        </button>
                        <button
                            onClick={toggleTheme}
                            className="tooltip bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-200 p-3 rounded-lg font-medium transition-all hover:scale-110"
                            data-tooltip={theme === 'light' ? 'Dark Mode' : 'Light Mode'}
                        >
                            {theme === 'light' ? <Icons.Moon /> : <Icons.Sun />}
                        </button>
                        <button
                            onClick={onLogout}
                            className="tooltip bg-slate-200 hover:bg-red-500 hover:text-white text-slate-700 p-3 rounded-lg font-medium transition-all hover:scale-110 hover:shadow-md"
                            data-tooltip="Logout"
                        >
                            <Icons.Power />
                        </button>
                    </div>

                    {/* Mobile Hamburger Menu */}
                    <div className="flex md:hidden items-center gap-3">
                        {saving && (
                            <div className="flex items-center gap-2 text-emerald-600">
                                <div className="loader w-4 h-4 border-2"></div>
                            </div>
                        )}
                        <button
                            onClick={() => setShowMobileMenu(!showMobileMenu)}
                            className="bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-200 p-2 rounded-lg transition-all"
                        >
                            {showMobileMenu ? <Icons.Close /> : <Icons.Menu />}
                        </button>
                    </div>
                </div>

                {/* Mobile Menu Dropdown */}
                {showMobileMenu && (
                    <div className="md:hidden mt-4 pt-4 border-t border-slate-200 dark:border-slate-700 space-y-2">
                        {!showForm && (
                            <button
                                onClick={() => {
                                    setShowForm(true);
                                    setShowMobileMenu(false);
                                }}
                                className="w-full btn-primary py-3 px-4 rounded-lg font-medium flex items-center justify-center gap-2"
                            >
                                <Icons.Plus />
                                <span>Add Account</span>
                            </button>
                        )}
                        <button
                            onClick={() => {
                                setShowProfile(true);
                                setShowMobileMenu(false);
                            }}
                            className="w-full bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-200 py-3 px-4 rounded-lg font-medium flex items-center justify-center gap-2 transition-all"
                        >
                            <Icons.User />
                            <span>Profile</span>
                        </button>
                        <button
                            onClick={() => {
                                toggleTheme();
                                setShowMobileMenu(false);
                            }}
                            className="w-full bg-slate-200 hover:bg-slate-300 dark:bg-slate-700 dark:hover:bg-slate-600 text-slate-700 dark:text-slate-200 py-3 px-4 rounded-lg font-medium flex items-center justify-center gap-2 transition-all"
                        >
                            {theme === 'light' ? <Icons.Moon /> : <Icons.Sun />}
                            <span>{theme === 'light' ? 'Dark Mode' : 'Light Mode'}</span>
                        </button>
                        <button
                            onClick={() => {
                                setShowMobileMenu(false);
                                onLogout();
                            }}
                            className="w-full bg-red-600 hover:bg-red-700 text-white py-3 px-4 rounded-lg font-medium flex items-center justify-center gap-2 transition-all"
                        >
                            <Icons.Power />
                            <span>Logout</span>
                        </button>
                    </div>
                )}
            </div>

            {/* Profile Modal */}
            {showProfile && userData && (
                <div className="fixed inset-0 bg-black bg-opacity-50 dark:bg-opacity-70 flex items-center justify-center p-4 z-50">
                    <div className="modern-card p-6 max-w-md w-full">
                        <div className="flex justify-between items-start mb-6">
                            <h2 className="text-2xl font-bold text-slate-900 dark:text-slate-100">Profile</h2>
                            <button
                                onClick={() => setShowProfile(false)}
                                className="text-slate-400 hover:text-slate-600 dark:hover:text-slate-200"
                            >
                                <svg className="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                                    <path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M6 18L18 6M6 6l12 12" />
                                </svg>
                            </button>
                        </div>

                        <div className="space-y-4">
                            {/* Profile Photo & Name */}
                            <div className="flex items-center gap-4 pb-4 border-b border-slate-200 dark:border-slate-700">
                                {user.photoURL ? (
                                    <img
                                        src={user.photoURL}
                                        alt="Profile"
                                        className="w-16 h-16 rounded-full border-2 border-slate-200 dark:border-slate-700"
                                    />
                                ) : (
                                    <div className="w-16 h-16 rounded-full bg-slate-200 dark:bg-slate-700 flex items-center justify-center">
                                        <Icons.User className="w-8 h-8 text-slate-400 dark:text-slate-500" />
                                    </div>
                                )}
                                <div className="flex-1">
                                    <h3 className="text-lg font-bold text-slate-900 dark:text-slate-100">
                                        {userData.name || user.displayName || 'PropTrack User'}
                                    </h3>
                                    <p className="text-sm text-slate-500 dark:text-slate-400">{user.email}</p>
                                </div>
                            </div>

                            {/* Auth Type */}
                            <div className="flex justify-between items-center py-2">
                                <span className="text-sm font-medium text-slate-600 dark:text-slate-400">Sign-in Method</span>
                                <span className="inline-flex items-center gap-1.5 px-3 py-1 bg-blue-50 dark:bg-blue-900/30 text-blue-700 dark:text-blue-400 rounded-full text-sm font-medium">
                                    {userData.name ? (
                                        <>
                                            <svg className="w-4 h-4" viewBox="0 0 24 24">
                                                <path fill="currentColor" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
                                                <path fill="currentColor" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
                                                <path fill="currentColor" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/>
                                                <path fill="currentColor" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/>
                                            </svg>
                                            Google
                                        </>
                                    ) : 'Email'}
                                </span>
                            </div>

                            {/* Account Info */}
                            <div className="space-y-2 py-2">
                                <div className="flex justify-between items-center">
                                    <span className="text-sm text-slate-600 dark:text-slate-400">Member Since</span>
                                    <span className="text-sm font-medium text-slate-900 dark:text-slate-100">
                                        {userData.createdAt && userData.createdAt.toDate
                                            ? new Date(userData.createdAt.toDate()).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
                                            : 'Unknown'}
                                    </span>
                                </div>
                                <div className="flex justify-between items-center">
                                    <span className="text-sm text-slate-600 dark:text-slate-400">Last Login</span>
                                    <span className="text-sm font-medium text-slate-900 dark:text-slate-100">
                                        {userData.lastLogin && userData.lastLogin.toDate
                                            ? new Date(userData.lastLogin.toDate()).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })
                                            : 'Just now'}
                                    </span>
                                </div>
                                <div className="flex justify-between items-center">
                                    <span className="text-sm text-slate-600 dark:text-slate-400">Total Accounts</span>
                                    <span className="text-sm font-medium text-slate-900 dark:text-slate-100">
                                        {accounts.length}
                                    </span>
                                </div>
                            </div>

                            {/* Trial Status */}
                            {userData.createdAt && userData.createdAt.toDate && !userData.isPaid && (
                                <div className="py-3 px-4 bg-emerald-50 dark:bg-emerald-900/20 border border-emerald-200 dark:border-emerald-800 rounded-lg">
                                    <div className="flex justify-between items-center">
                                        <span className="text-sm font-medium text-emerald-800 dark:text-emerald-300">Free Trial</span>
                                        <span className="text-sm font-bold text-emerald-900 dark:text-emerald-200">
                                            {(() => {
                                                const createdDate = userData.createdAt.toDate();
                                                const now = new Date();
                                                const diffDays = Math.floor((now - createdDate) / (1000 * 60 * 60 * 24));
                                                const daysRemaining = 30 - diffDays;
                                                return daysRemaining > 0
                                                    ? `${daysRemaining} days left`
                                                    : 'Expired';
                                            })()}
                                        </span>
                                    </div>
                                </div>
                            )}

                            {userData.isPaid && (
                                <div className="py-3 px-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
                                    <div className="flex items-center justify-center gap-2">
                                        <svg className="w-5 h-5 text-blue-600 dark:text-blue-400" fill="currentColor" viewBox="0 0 20 20">
                                            <path fillRule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clipRule="evenodd" />
                                        </svg>
                                        <span className="text-sm font-bold text-blue-900 dark:text-blue-200">Premium - Unlimited Access</span>
                                    </div>
                                </div>
                            )}

                            {/* Logout Button */}
                            <button
                                onClick={() => {
                                    setShowProfile(false);
                                    onLogout();
                                }}
                                className="w-full bg-red-600 hover:bg-red-700 text-white py-3 rounded-lg font-semibold transition-colors mt-4"
                            >
                                Logout
                            </button>
                        </div>
                    </div>
                </div>
            )}

            {/* Delete Confirmation Modal */}
            {deleteConfirm && (
                <div className="fixed inset-0 bg-black bg-opacity-50 dark:bg-opacity-70 flex items-center justify-center p-4 z-50">
                    <div className="modern-card p-6 max-w-md w-full">
                        <div className="flex items-center gap-3 mb-4">
                            <div className="p-3 bg-red-100 dark:bg-red-900/30 rounded-full">
                                <Icons.Warning className="text-red-600 dark:text-red-400" />
                            </div>
                            <h2 className="text-xl font-bold text-slate-900 dark:text-slate-100">Delete Account?</h2>
                        </div>
                        <p className="text-slate-600 dark:text-slate-400 mb-6">
                            Are you sure you want to delete this account? This action cannot be undone and will permanently remove all associated trade history.
                        </p>
                        <div className="flex gap-3">
                            <button
                                onClick={cancelDelete}
                                className="flex-1 bg-slate-200 dark:bg-slate-700 text-slate-700 dark:text-slate-200 py-3 rounded-lg font-semibold hover:bg-slate-300 dark:hover:bg-slate-600 transition-colors"
                            >
                                Cancel
                            </button>
                            <button
                                onClick={confirmDelete}
                                className="flex-1 bg-red-600 text-white py-3 rounded-lg font-semibold hover:bg-red-700 transition-colors"
                            >
                                Delete
                            </button>
                        </div>
                    </div>
                </div>
            )}

            {/* Form Modal */}
            {showForm && (
                <div className="fixed inset-0 bg-black bg-opacity-50 dark:bg-opacity-70 flex items-center justify-center p-4 z-50">
                    <div className="modern-card p-6 max-w-lg w-full max-h-[90vh] overflow-y-auto">
                        <h2 className="text-2xl font-bold mb-6 text-slate-900 dark:text-slate-100">
                            {currentAccount ? 'Edit Account' : 'Add New Account'}
                        </h2>
                        <form onSubmit={handleSubmit} className="space-y-4">
                            <div>
                                <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                    Account Name
                                </label>
                                <input
                                    type="text"
                                    name="accountName"
                                    value={formData.accountName}
                                    onChange={handleInputChange}
                                    required
                                    className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                    placeholder="My $200k Challenge"
                                />
                            </div>

                            <div>
                                <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                    Prop Firm Name
                                </label>
                                <input
                                    type="text"
                                    name="propFirmName"
                                    value={formData.propFirmName}
                                    onChange={handleInputChange}
                                    required
                                    className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                    placeholder="FTMO"
                                />
                            </div>

                            <div className="grid grid-cols-2 gap-4">
                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Account Size ($)
                                    </label>
                                    <input
                                        type="number"
                                        name="accountSize"
                                        value={formData.accountSize}
                                        onChange={handleInputChange}
                                        required
                                        step="0.01"
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="200000"
                                    />
                                </div>

                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Current Balance ($)
                                    </label>
                                    <input
                                        type="number"
                                        name="accountBalance"
                                        value={formData.accountBalance}
                                        onChange={handleInputChange}
                                        required
                                        step="0.01"
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="200000"
                                    />
                                </div>
                            </div>

                            <div className="grid grid-cols-2 gap-4">
                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Target (%)
                                    </label>
                                    <input
                                        type="number"
                                        name="targetPercent"
                                        value={formData.targetPercent}
                                        onChange={handleInputChange}
                                        required
                                        step="0.01"
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="10"
                                    />
                                </div>

                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Days to Pass
                                    </label>
                                    <input
                                        type="number"
                                        name="daysToPass"
                                        value={formData.daysToPass}
                                        onChange={handleInputChange}
                                        required
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="30"
                                    />
                                </div>
                            </div>

                            <div>
                                <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                    Challenge Start Date
                                </label>
                                <input
                                    type="date"
                                    name="challengeStartDate"
                                    value={formData.challengeStartDate}
                                    onChange={handleInputChange}
                                    required
                                    className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                />
                            </div>

                            <div className="grid grid-cols-2 gap-4">
                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Risk per Trade (%)
                                    </label>
                                    <input
                                        type="number"
                                        name="riskPerTrade"
                                        value={formData.riskPerTrade}
                                        onChange={handleInputChange}
                                        required
                                        step="0.01"
                                        min="0.1"
                                        max="2"
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="1"
                                    />
                                </div>

                                <div>
                                    <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                        Daily Drawdown (%)
                                    </label>
                                    <input
                                        type="number"
                                        name="dailyDrawdownPercent"
                                        value={formData.dailyDrawdownPercent}
                                        onChange={handleInputChange}
                                        required
                                        step="0.01"
                                        className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                        placeholder="5"
                                    />
                                </div>
                            </div>

                            <div>
                                <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                    Max Drawdown Type
                                </label>
                                <select
                                    name="maxDrawdownType"
                                    value={formData.maxDrawdownType}
                                    onChange={handleInputChange}
                                    className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                >
                                    <option value="static">Static</option>
                                    <option value="trailing">Trailing</option>
                                </select>
                            </div>

                            <div>
                                <label className="block text-sm font-medium text-slate-700 dark:text-slate-300 mb-2">
                                    Max Drawdown Level (%)
                                </label>
                                <input
                                    type="number"
                                    name="maxDrawdownLevel"
                                    value={formData.maxDrawdownLevel}
                                    onChange={handleInputChange}
                                    required
                                    step="0.01"
                                    className="w-full px-4 py-3 border border-slate-300 dark:border-slate-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-slate-900 dark:focus:ring-emerald-500 focus:border-transparent bg-white dark:bg-slate-800 text-slate-900 dark:text-slate-100"
                                    placeholder="8"
                                />
                            </div>

                            <div className="flex gap-3 pt-4">
                                <button
                                    type="submit"
                                    className="flex-1 btn-primary py-3 rounded-lg font-semibold shadow-sm"
                                >
                                    {currentAccount ? 'Update' : 'Add Account'}
                                </button>
                                <button
                                    type="button"
                                    onClick={() => {
                                        setShowForm(false);
                                        setCurrentAccount(null);
                                        resetForm();
                                    }}
                                    className="flex-1 bg-slate-200 dark:bg-slate-700 text-slate-700 dark:text-slate-200 py-3 rounded-lg font-semibold hover:bg-slate-300 dark:hover:bg-slate-600 transition-colors"
                                >
                                    Cancel
                                </button>
                            </div>
                        </form>
                    </div>
                </div>
            )}

            {/* Filter Tabs - Always show (needed for tour) */}
            <div className="mb-5">
                <div className="flex gap-4 border-b border-slate-100 dark:border-slate-700">
                    <button
                        id="tour-filter-active"
                        onClick={() => setFilterStatus('ALL')}
                        className={`py-1.5 px-1 text-xs font-medium transition-all ${
                            filterStatus === 'ALL'
                                ? 'text-slate-700 dark:text-slate-200 border-b border-slate-400 dark:border-slate-400'
                                : 'text-slate-400 dark:text-slate-500 hover:text-slate-600 dark:hover:text-slate-300'
                        }`}
                    >
                        Active
                    </button>
                    <button
                        id="tour-filter-approved"
                        onClick={() => setFilterStatus('APPROVED')}
                        className={`py-1.5 px-1 text-xs font-medium transition-all ${
                            filterStatus === 'APPROVED'
                                ? 'text-slate-700 dark:text-slate-200 border-b border-slate-400 dark:border-slate-400'
                                : 'text-slate-400 dark:text-slate-500 hover:text-slate-600 dark:hover:text-slate-300'
                        }`}
                    >
                        Millionaire Loading...
                    </button>
                    <button
                        id="tour-filter-breached"
                        onClick={() => setFilterStatus('BREACHED')}
                        className={`py-1.5 px-1 text-xs font-medium transition-all ${
                            filterStatus === 'BREACHED'
                                ? 'text-slate-700 dark:text-slate-200 border-b border-slate-400 dark:border-slate-400'
                                : 'text-slate-400 dark:text-slate-500 hover:text-slate-600 dark:hover:text-slate-300'
                        }`}
                    >
                        Wall of Shame
                    </button>
                </div>
            </div>

            {/* Accounts Grid */}
            <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
                {accounts.length === 0 && (
                    <div className="col-span-full modern-card p-16 text-center">
                        <Icons.ChartBar className="w-20 h-20 mx-auto text-slate-400 dark:text-slate-500 mb-4" />
                        <p className="text-xl text-slate-600 dark:text-slate-400 mb-2">No accounts yet</p>
                        <p className="text-slate-500 dark:text-slate-500">Add your first prop firm account to get started</p>
                    </div>
                )}

                {(() => {
                    const filteredAccounts = accounts.filter(account => {
                        // Calculate account status for filtering
                        const metrics = calculateMetrics(account);
                        const size = parseFloat(account.accountSize);
                        const balance = parseFloat(account.accountBalance);
                        const targetInDollars = parseFloat(metrics.targetInDollars);
                        const maxDrawdownAmount = parseFloat(metrics.maxDrawdownAmount);
                        const minBalance = size - maxDrawdownAmount;

                        let accountStatus = 'ACTIVE';
                        if (balance >= size + targetInDollars) {
                            accountStatus = 'APPROVED';
                        } else if (balance <= minBalance || metrics.totalTradesBeforeBlowout === 0 || metrics.dailyTradesLeft === 0) {
                            accountStatus = 'BREACHED';
                        }

                        // Filter logic
                        if (filterStatus === 'ALL') {
                            return accountStatus === 'ACTIVE';
                        }
                        return accountStatus === filterStatus;
                    });

                    // Show empty state if no accounts match filter
                    if (filteredAccounts.length === 0 && accounts.length > 0) {
                        return (
                            <div className="col-span-full modern-card p-16 text-center">
                                <p className="text-xl text-slate-600 dark:text-slate-400 mb-2">
                                    {filterStatus === 'APPROVED' && '🎯 No millionaires yet!'}
                                    {filterStatus === 'BREACHED' && '🎉 No blown accounts!'}
                                    {filterStatus === 'ALL' && 'No active accounts'}
                                </p>
                                <p className="text-slate-500 dark:text-slate-500">
                                    {filterStatus === 'APPROVED' && 'Keep grinding to reach your targets!'}
                                    {filterStatus === 'BREACHED' && 'Great job staying disciplined!'}
                                    {filterStatus === 'ALL' && 'All accounts have reached a final state'}
                                </p>
                            </div>
                        );
                    }

                    return filteredAccounts.map(account => {
                    const metrics = calculateMetrics(account);
                    const size = parseFloat(account.accountSize);
                    const balance = parseFloat(account.accountBalance);
                    const targetInDollars = parseFloat(metrics.targetInDollars);
                    const maxDrawdownAmount = parseFloat(metrics.maxDrawdownAmount);

                    // Calculate the progress bar scale
                    // 0% = Max Drawdown hit (size - maxDD)
                    // 50% = Break even (size)
                    // 100% = Target reached (size + target)
                    const minBalance = size - maxDrawdownAmount; // Max drawdown limit
                    const maxBalance = size + targetInDollars; // Target
                    const totalRange = maxDrawdownAmount + targetInDollars;

                    // Current position from the bottom of the range
                    let progress = ((balance - minBalance) / totalRange) * 100;
                    progress = Math.min(Math.max(progress, 0), 100);

                    const profitLoss = parseFloat(metrics.overallProfit);
                    const profitLossPercent = ((profitLoss / size) * 100).toFixed(1);
                    const buffer = parseFloat(metrics.remainingLossAllowed);
                    const riskPerTrade = parseFloat(account.riskPerTrade || 0);
                    const riskInDollars = (riskPerTrade / 100) * balance;

                    // Determine account status
                    let accountStatus = 'ACTIVE';
                    if (balance >= size + targetInDollars) {
                        accountStatus = 'APPROVED';
                    } else if (balance <= minBalance || metrics.totalTradesBeforeBlowout === 0 || metrics.dailyTradesLeft === 0) {
                        accountStatus = 'BREACHED';
                    }

                    return (
                        <div
                            key={account.id}
                            onClick={() => setViewingAccount(account)}
                            className="modern-card p-5 hover:shadow-lg transition-all cursor-pointer group relative overflow-hidden"
                        >
                            {/* Status Stamp */}
                            {accountStatus !== 'ACTIVE' && (
                                <div
                                    className={`absolute -top-1 -right-1 ${
                                        accountStatus === 'APPROVED' ? 'text-emerald-600 border-emerald-600' : 'text-red-600 border-red-600'
                                    } border-4 rounded-lg font-black text-xs tracking-widest px-3 py-1.5 rotate-12 opacity-80`}
                                    style={{
                                        background: accountStatus === 'APPROVED'
                                            ? 'linear-gradient(135deg, rgba(16, 185, 129, 0.15) 0%, rgba(16, 185, 129, 0.05) 100%)'
                                            : 'linear-gradient(135deg, rgba(239, 68, 68, 0.15) 0%, rgba(239, 68, 68, 0.05) 100%)',
                                        backdropFilter: 'blur(2px)',
                                        WebkitBackdropFilter: 'blur(2px)',
                                        boxShadow: accountStatus === 'APPROVED'
                                            ? '0 4px 12px rgba(16, 185, 129, 0.2)'
                                            : '0 4px 12px rgba(239, 68, 68, 0.2)'
                                    }}
                                >
                                    {accountStatus}
                                </div>
                            )}

                            <div className="flex justify-between items-start mb-4 gap-2">
                                <div className="flex-1 min-w-0">
                                    <h3 className="text-lg font-bold text-slate-900 dark:text-slate-100 mb-1 break-words line-clamp-2">
                                        {account.accountName || `$${(size/1000).toFixed(0)}k Challenge`}
                                    </h3>
                                    <p className="text-sm text-slate-500 dark:text-slate-400 truncate">{account.propFirmName}</p>
                                </div>
                                <button
                                    onClick={(e) => {
                                        e.stopPropagation();
                                        editAccount(account);
                                    }}
                                    className="flex-shrink-0 p-2 text-slate-400 dark:text-slate-500 hover:text-emerald-600 hover:bg-emerald-50 dark:hover:bg-emerald-900/20 rounded-lg transition-colors"
                                >
                                    <Icons.Pencil />
                                </button>
                            </div>

                            {/* P&L */}
                            <div className="mb-4">
                                <div className="flex justify-between items-baseline mb-2">
                                    <span className="text-sm text-slate-600 dark:text-slate-400">P&L</span>
                                    <div className="text-right">
                                        <span className={`text-2xl font-bold ${profitLoss >= 0 ? 'text-emerald-600' : 'text-red-600'}`}>
                                            {profitLoss >= 0 ? '+' : '-'}${Math.abs(profitLoss).toLocaleString()}
                                        </span>
                                        <span className={`text-sm ml-2 ${profitLoss >= 0 ? 'text-emerald-600' : 'text-red-600'}`}>
                                            ({profitLossPercent}%)
                                        </span>
                                    </div>
                                </div>
                                <div className="progress-bar">
                                    <div
                                        className={`progress-fill ${profitLoss >= 0 ? 'bg-emerald-500' : 'bg-red-500'}`}
                                        style={{width: `${progress}%`}}
                                    ></div>
                                </div>
                            </div>

                            {/* Balance */}
                            <div className="flex justify-between items-center mb-4 pb-4 border-b border-slate-100 dark:border-slate-700">
                                <span className="text-sm text-slate-600 dark:text-slate-400">Balance</span>
                                <span className="text-base font-semibold text-slate-900 dark:text-slate-100">
                                    ${balance.toLocaleString()} / ${size.toLocaleString()}
                                </span>
                            </div>

                            {/* Key Metrics */}
                            <div className="grid grid-cols-2 gap-3">
                                <div className="rounded-lg p-3 border border-slate-200 dark:border-slate-700">
                                    <div className="flex items-center gap-2 mb-1">
                                        <Icons.TrendUp className="w-4 h-4 text-slate-500 dark:text-slate-400" />
                                        <span className="text-xs font-medium text-slate-600 dark:text-slate-400">Daily Target</span>
                                    </div>
                                    <p className="text-lg font-bold text-slate-900 dark:text-slate-100">
                                        ${parseFloat(metrics.dailyProfitNeeded).toLocaleString()}
                                    </p>
                                    <p className="text-xs text-slate-500 dark:text-slate-400 mt-1">
                                        {metrics.daysRemaining} days left
                                    </p>
                                </div>

                                <div className="rounded-lg p-3 border border-slate-200 dark:border-slate-700">
                                    <div className="flex items-center gap-2 mb-1">
                                        <Icons.Shield className="w-4 h-4 text-slate-500 dark:text-slate-400" />
                                        <span className="text-xs font-medium text-slate-600 dark:text-slate-400">Trades Left</span>
                                    </div>
                                    <p className="text-lg font-bold">
                                        <span className={
                                            metrics.dailyTradesLeft <= 5 ? 'text-red-600' :
                                            metrics.dailyTradesLeft <= 10 ? 'text-amber-600' :
                                            'text-emerald-600'
                                        }>
                                            {metrics.dailyTradesLeft}
                                        </span>
                                        <span className="text-slate-400"> / </span>
                                        <span className={
                                            metrics.totalTradesBeforeBlowout <= 5 ? 'text-red-600' :
                                            metrics.totalTradesBeforeBlowout <= 10 ? 'text-amber-600' :
                                            'text-emerald-600'
                                        }>
                                            {metrics.totalTradesBeforeBlowout}
                                        </span>
                                    </p>
                                    <p className="text-xs text-slate-500 dark:text-slate-400 mt-1">
                                        Risk: ${riskInDollars.toFixed(2)} ({riskPerTrade}%)
                                    </p>
                                </div>
                            </div>
                        </div>
                    );
                    });
                })()}
            </div>
        </div>
    );
}

// NOTE: AccountDetailView component will be added in the next part due to character limit
// Continuing in index.html with remaining components...
