Belajar Ai

 <!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mapel Informatika & AI - Lorensius Ndare, S.Kom</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <style>
        body {
            box-sizing: border-box;
        }
        .fade-in {
            animation: fadeIn 0.5s ease-in;
        }
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(20px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .quiz-option:hover {
            transform: translateX(5px);
            transition: all 0.3s ease;
        }
        .correct-answer {
            background: linear-gradient(135deg, #10b981, #059669);
            color: white;
        }
        .wrong-answer {
            background: linear-gradient(135deg, #ef4444, #dc2626);
            color: white;
        }
    </style>
</head>
<body class="bg-gradient-to-br from-blue-50 to-indigo-100 min-h-full">
    <!-- Header -->
    <header class="bg-gradient-to-r from-blue-600 to-indigo-700 text-white shadow-lg">
        <div class="container mx-auto px-6 py-4">
            <div class="flex items-center justify-between">
                <div>
                    <h1 class="text-2xl font-bold">🖥️ Informatika & AI</h1>
                    <p class="text-blue-100">Oleh: Lorensius Ndare, S.Kom</p>
                </div>
                <nav class="hidden md:flex space-x-6">
                    <button onclick="showSection('home')" class="hover:text-blue-200 transition-colors">Beranda</button>
                    <button onclick="showSection('guru')" class="hover:text-blue-200 transition-colors">Guru</button>
                    <button onclick="showSection('absen')" class="hover:text-blue-200 transition-colors">Absen</button>
                    <button onclick="showSection('materi')" class="hover:text-blue-200 transition-colors">Materi</button>
                    <button onclick="showSection('quiz')" class="hover:text-blue-200 transition-colors">Kuis</button>
                    <button onclick="showSection('latihan')" class="hover:text-blue-200 transition-colors">Latihan</button>
                </nav>
            </div>
        </div>
    </header>

    <!-- Main Content -->
    <main class="container mx-auto px-6 py-8">
        <!-- Home Section -->
        <section id="home" class="fade-in">
            <div class="text-center mb-12">
                <h2 class="text-4xl font-bold text-gray-800 mb-4">Selamat Datang di Pembelajaran Informatika & AI</h2>
                <p class="text-xl text-gray-600 max-w-3xl mx-auto">Platform pembelajaran interaktif untuk memahami konsep dasar informatika dan kecerdasan buatan</p>
            </div>

            <div class="grid md:grid-cols-2 lg:grid-cols-5 gap-6 mb-12">
                <div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
                    <div class="text-4xl mb-4">👨‍🏫</div>
                    <h3 class="text-xl font-semibold mb-3 text-gray-800">Info Guru</h3>
                    <p class="text-gray-600">Lihat profil dan informasi guru informatika</p>
                    <button onclick="showSection('guru')" class="mt-4 bg-indigo-600 text-white px-4 py-2 rounded-lg hover:bg-indigo-700 transition-colors">Lihat Guru</button>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
                    <div class="text-4xl mb-4">✅</div>
                    <h3 class="text-xl font-semibold mb-3 text-gray-800">Absen Siswa</h3>
                    <p class="text-gray-600">Input nama dan foto untuk absensi harian</p>
                    <button onclick="showSection('absen')" class="mt-4 bg-orange-600 text-white px-4 py-2 rounded-lg hover:bg-orange-700 transition-colors">Absen Sekarang</button>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
                    <div class="text-4xl mb-4">📚</div>
                    <h3 class="text-xl font-semibold mb-3 text-gray-800">Materi Lengkap</h3>
                    <p class="text-gray-600">Pelajari konsep dasar informatika dan AI dengan penjelasan yang mudah dipahami</p>
                    <button onclick="showSection('materi')" class="mt-4 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors">Mulai Belajar</button>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
                    <div class="text-4xl mb-4">🧠</div>
                    <h3 class="text-xl font-semibold mb-3 text-gray-800">Kuis Interaktif</h3>
                    <p class="text-gray-600">Uji pemahaman Anda dengan kuis yang menarik dan mendidik</p>
                    <button onclick="showSection('quiz')" class="mt-4 bg-green-600 text-white px-4 py-2 rounded-lg hover:bg-green-700 transition-colors">Ikuti Kuis</button>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6 hover:shadow-xl transition-shadow">
                    <div class="text-4xl mb-4">💪</div>
                    <h3 class="text-xl font-semibold mb-3 text-gray-800">Soal Latihan</h3>
                    <p class="text-gray-600">Asah kemampuan dengan berbagai soal latihan yang menantang</p>
                    <button onclick="showSection('latihan')" class="mt-4 bg-purple-600 text-white px-4 py-2 rounded-lg hover:bg-purple-700 transition-colors">Berlatih</button>
                </div>
            </div>

            <div class="bg-white rounded-xl shadow-lg p-8">
                <h3 class="text-2xl font-bold text-gray-800 mb-4">Tentang Pengajar</h3>
                <div class="flex items-center space-x-4">
                    <div class="w-16 h-16 bg-gradient-to-r from-blue-600 to-indigo-700 rounded-full flex items-center justify-center text-white text-2xl font-bold">LN</div>
                    <div>
                        <h4 class="text-xl font-semibold text-gray-800">Lorensius Ndare, S.Kom</h4>
                        <p class="text-gray-600">Dosen Informatika & Artificial Intelligence</p>
                        <p class="text-sm text-gray-500 mt-1">Berpengalaman dalam pengembangan sistem AI dan pembelajaran mesin</p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Guru Section -->
        <section id="guru" class="hidden fade-in">
            <h2 class="text-3xl font-bold text-gray-800 mb-8">👨‍🏫 Informasi Guru</h2>
            
            <div class="bg-white rounded-xl shadow-lg p-8 mb-8">
                <div class="flex flex-col md:flex-row items-center md:items-start space-y-6 md:space-y-0 md:space-x-8">
                    <div class="w-32 h-32 bg-gradient-to-br from-blue-600 to-indigo-700 rounded-full flex items-center justify-center text-white text-4xl font-bold shadow-lg">
                        LN
                    </div>
                    <div class="flex-1 text-center md:text-left">
                        <h3 class="text-3xl font-bold text-gray-800 mb-2">Lorensius Ndare, S.Kom</h3>
                        <p class="text-xl text-blue-600 mb-4">Guru Informatika & Artificial Intelligence</p>
                        
                        <div class="grid md:grid-cols-2 gap-4 mb-6">
                            <div class="bg-blue-50 p-4 rounded-lg">
                                <h4 class="font-semibold text-blue-800 mb-2">📚 Pendidikan</h4>
                                <p class="text-sm text-blue-700">S1 Teknik Informatika</p>
                                <p class="text-sm text-blue-700">Spesialisasi: AI & Machine Learning</p>
                            </div>
                            <div class="bg-green-50 p-4 rounded-lg">
                                <h4 class="font-semibold text-green-800 mb-2">🏆 Pengalaman</h4>
                                <p class="text-sm text-green-700">5+ tahun mengajar Informatika</p>
                                <p class="text-sm text-green-700">Expert dalam Python & AI</p>
                            </div>
                        </div>

                        <div class="bg-gray-50 p-4 rounded-lg">
                            <h4 class="font-semibold text-gray-800 mb-2">📋 Mata Pelajaran yang Diampu</h4>
                            <div class="flex flex-wrap gap-2">
                                <span class="bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm">Algoritma & Pemrograman</span>
                                <span class="bg-purple-100 text-purple-800 px-3 py-1 rounded-full text-sm">Artificial Intelligence</span>
                                <span class="bg-green-100 text-green-800 px-3 py-1 rounded-full text-sm">Basis Data</span>
                                <span class="bg-orange-100 text-orange-800 px-3 py-1 rounded-full text-sm">Jaringan Komputer</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="grid md:grid-cols-2 gap-6">
                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-gray-800">📞 Kontak</h3>
                    <div class="space-y-3">
                        <div class="flex items-center space-x-3">
                            <span class="text-blue-600">📧</span>
                            <span class="text-gray-700">lorensius.ndare@sekolah.edu</span>
                        </div>
                        <div class="flex items-center space-x-3">
                            <span class="text-green-600">📱</span>
                            <span class="text-gray-700">+62 812-3456-7890</span>
                        </div>
                        <div class="flex items-center space-x-3">
                            <span class="text-purple-600">🏢</span>
                            <span class="text-gray-700">Ruang Lab Komputer A.201</span>
                        </div>
                    </div>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-gray-800">⏰ Jadwal Mengajar</h3>
                    <div class="space-y-2 text-sm">
                        <div class="flex justify-between p-2 bg-blue-50 rounded">
                            <span class="font-medium">Senin</span>
                            <span>08:00 - 10:00 (Kelas XI)</span>
                        </div>
                        <div class="flex justify-between p-2 bg-green-50 rounded">
                            <span class="font-medium">Selasa</span>
                            <span>10:00 - 12:00 (Kelas XII)</span>
                        </div>
                        <div class="flex justify-between p-2 bg-purple-50 rounded">
                            <span class="font-medium">Rabu</span>
                            <span>13:00 - 15:00 (Kelas X)</span>
                        </div>
                        <div class="flex justify-between p-2 bg-orange-50 rounded">
                            <span class="font-medium">Kamis</span>
                            <span>08:00 - 10:00 (Lab AI)</span>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Absen Section -->
        <section id="absen" class="hidden fade-in">
            <h2 class="text-3xl font-bold text-gray-800 mb-8">✅ Absensi Siswa</h2>
            
            <div class="bg-white rounded-xl shadow-lg p-6 mb-6">
                <h3 class="text-xl font-semibold mb-4 text-gray-800">📝 Form Absensi</h3>
                <form id="absenForm" class="space-y-4">
                    <div class="grid md:grid-cols-2 gap-4">
                        <div>
                            <label class="block text-sm font-medium text-gray-700 mb-2">Nama Lengkap</label>
                            <input type="text" id="studentName" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" placeholder="Masukkan nama lengkap" required>
                        </div>
                        <div>
                            <label class="block text-sm font-medium text-gray-700 mb-2">Kelas</label>
                            <select id="studentClass" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" required>
                                <option value="">Pilih Kelas</option>
                                <option value="X-1">X-1</option>
                                <option value="X-2">X-2</option>
                                <option value="XI-1">XI-1</option>
                                <option value="XI-2">XI-2</option>
                                <option value="XII-1">XII-1</option>
                                <option value="XII-2">XII-2</option>
                            </select>
                        </div>
                    </div>

                    <div>
                        <label class="block text-sm font-medium text-gray-700 mb-2">Foto Selfie</label>
                        <div class="border-2 border-dashed border-gray-300 rounded-lg p-6 text-center">
                            <input type="file" id="studentPhoto" accept="image/*" capture="user" class="hidden">
                            <div id="photoPreview" class="hidden mb-4">
                                <img id="previewImage" class="w-32 h-32 object-cover rounded-full mx-auto border-4 border-blue-500">
                            </div>
                            <button type="button" onclick="document.getElementById('studentPhoto').click()" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors">
                                📷 Ambil Foto Selfie
                            </button>
                            <p class="text-sm text-gray-500 mt-2">Klik untuk mengambil foto selfie</p>
                        </div>
                    </div>

                    <div>
                        <label class="block text-sm font-medium text-gray-700 mb-2">Status Kehadiran</label>
                        <div class="flex space-x-4">
                            <label class="flex items-center">
                                <input type="radio" name="attendance" value="hadir" class="mr-2" required>
                                <span class="text-green-700">✅ Hadir</span>
                            </label>
                            <label class="flex items-center">
                                <input type="radio" name="attendance" value="terlambat" class="mr-2">
                                <span class="text-yellow-700">⏰ Terlambat</span>
                            </label>
                            <label class="flex items-center">
                                <input type="radio" name="attendance" value="sakit" class="mr-2">
                                <span class="text-red-700">🤒 Sakit</span>
                            </label>
                            <label class="flex items-center">
                                <input type="radio" name="attendance" value="izin" class="mr-2">
                                <span class="text-blue-700">📝 Izin</span>
                            </label>
                        </div>
                    </div>

                    <div>
                        <label class="block text-sm font-medium text-gray-700 mb-2">Komentar (Opsional)</label>
                        <textarea id="studentComment" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" rows="3" placeholder="Tambahkan komentar atau keterangan tambahan..."></textarea>
                        <p class="text-xs text-gray-500 mt-1">Contoh: "Terlambat karena macet", "Merasa kurang sehat", dll.</p>
                    </div>

                    <button type="submit" class="w-full bg-green-600 text-white py-3 rounded-lg hover:bg-green-700 transition-colors font-semibold">
                        ✅ Submit Absensi
                    </button>
                </form>
            </div>

            <div class="bg-white rounded-xl shadow-lg p-6">
                <h3 class="text-xl font-semibold mb-4 text-gray-800">📊 Daftar Absensi Hari Ini</h3>
                <div class="text-sm text-gray-600 mb-4">
                    Tanggal: <span id="currentDate" class="font-semibold"></span>
                </div>
                <div id="attendanceList" class="space-y-3">
                    <!-- Attendance records will be displayed here -->
                </div>
                <div id="emptyAttendance" class="text-center text-gray-500 py-8">
                    <div class="text-4xl mb-2">📝</div>
                    <p>Belum ada siswa yang absen hari ini</p>
                </div>
            </div>
        </section>

        <!-- Materi Section -->
        <section id="materi" class="hidden fade-in">
            <h2 class="text-3xl font-bold text-gray-800 mb-8">📚 Materi Pembelajaran</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-blue-700">🖥️ Dasar-Dasar Informatika</h3>
                    <ul class="space-y-3 text-gray-700">
                        <li class="flex items-start space-x-2">
                            <span class="text-blue-500">•</span>
                            <span>Algoritma dan Struktur Data</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-blue-500">•</span>
                            <span>Pemrograman Dasar</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-blue-500">•</span>
                            <span>Basis Data dan SQL</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-blue-500">•</span>
                            <span>Jaringan Komputer</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-blue-500">•</span>
                            <span>Sistem Operasi</span>
                        </li>
                    </ul>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-purple-700">🤖 Artificial Intelligence</h3>
                    <ul class="space-y-3 text-gray-700">
                        <li class="flex items-start space-x-2">
                            <span class="text-purple-500">•</span>
                            <span>Pengenalan AI dan Machine Learning</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-purple-500">•</span>
                            <span>Neural Networks</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-purple-500">•</span>
                            <span>Deep Learning</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-purple-500">•</span>
                            <span>Natural Language Processing</span>
                        </li>
                        <li class="flex items-start space-x-2">
                            <span class="text-purple-500">•</span>
                            <span>Computer Vision</span>
                        </li>
                    </ul>
                </div>
            </div>

            <div class="mt-8 bg-white rounded-xl shadow-lg p-6">
                <h3 class="text-xl font-semibold mb-4 text-gray-800">📖 Materi Detail</h3>
                <div class="prose max-w-none text-gray-700">
                    <h4 class="text-lg font-semibold text-blue-700 mb-2">Algoritma dan Struktur Data</h4>
                    <p class="mb-4">Algoritma adalah langkah-langkah sistematis untuk menyelesaikan masalah. Struktur data adalah cara mengorganisir dan menyimpan data agar dapat diakses dan dimodifikasi secara efisien.</p>
                    
                    <h4 class="text-lg font-semibold text-purple-700 mb-2">Machine Learning</h4>
                    <p class="mb-4">Machine Learning adalah cabang AI yang memungkinkan komputer belajar dan membuat keputusan dari data tanpa diprogram secara eksplisit untuk setiap tugas spesifik.</p>
                    
                    <div class="bg-blue-50 p-4 rounded-lg mt-4">
                        <h5 class="font-semibold text-blue-800 mb-2">💡 Tips Belajar:</h5>
                        <ul class="text-sm text-blue-700 space-y-1">
                            <li>• Praktikkan coding setiap hari</li>
                            <li>• Pahami konsep sebelum menghafal syntax</li>
                            <li>• Buat project kecil untuk mengaplikasikan teori</li>
                        </ul>
                    </div>
                </div>
            </div>
        </section>

        <!-- Quiz Section -->
        <section id="quiz" class="hidden fade-in">
            <h2 class="text-3xl font-bold text-gray-800 mb-8">🧠 Kuis Interaktif</h2>
            
            <div class="bg-white rounded-xl shadow-lg p-6 mb-6">
                <div class="flex justify-between items-center mb-4">
                    <h3 class="text-xl font-semibold text-gray-800">Pertanyaan <span id="questionNumber">1</span> dari <span id="totalQuestions">5</span></h3>
                    <div class="text-sm text-gray-600">Skor: <span id="score" class="font-semibold text-blue-600">0</span></div>
                </div>
                
                <div id="quizContainer">
                    <div class="mb-6">
                        <h4 id="questionText" class="text-lg font-medium text-gray-800 mb-4"></h4>
                        <div id="optionsContainer" class="space-y-3"></div>
                    </div>
                    
                    <div class="flex justify-between">
                        <button id="prevBtn" onclick="previousQuestion()" class="bg-gray-500 text-white px-4 py-2 rounded-lg hover:bg-gray-600 transition-colors disabled:opacity-50" disabled>Sebelumnya</button>
                        <button id="nextBtn" onclick="nextQuestion()" class="bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700 transition-colors">Selanjutnya</button>
                    </div>
                </div>

                <div id="quizResults" class="hidden text-center">
                    <h3 class="text-2xl font-bold text-gray-800 mb-4">🎉 Kuis Selesai!</h3>
                    <div class="text-6xl mb-4">🏆</div>
                    <p class="text-xl mb-4">Skor Anda: <span id="finalScore" class="font-bold text-blue-600"></span></p>
                    <p id="scoreMessage" class="text-gray-600 mb-6"></p>
                    <button onclick="restartQuiz()" class="bg-green-600 text-white px-6 py-3 rounded-lg hover:bg-green-700 transition-colors">Ulangi Kuis</button>
                </div>
            </div>
        </section>

        <!-- Latihan Section -->
        <section id="latihan" class="hidden fade-in">
            <h2 class="text-3xl font-bold text-gray-800 mb-8">💪 Soal Latihan</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-blue-700">🔢 Latihan Algoritma</h3>
                    <div class="space-y-4">
                        <div class="border-l-4 border-blue-500 pl-4">
                            <h4 class="font-semibold text-gray-800">Soal 1: Sorting Algorithm</h4>
                            <p class="text-gray-600 text-sm mt-1">Buatlah algoritma untuk mengurutkan array [64, 34, 25, 12, 22, 11, 90] menggunakan bubble sort.</p>
                            <button onclick="showSolution(1)" class="mt-2 text-blue-600 hover:text-blue-800 text-sm font-medium">Lihat Solusi</button>
                        </div>
                        
                        <div class="border-l-4 border-blue-500 pl-4">
                            <h4 class="font-semibold text-gray-800">Soal 2: Binary Search</h4>
                            <p class="text-gray-600 text-sm mt-1">Implementasikan binary search untuk mencari angka 22 dalam array terurut [11, 12, 22, 25, 34, 64, 90].</p>
                            <button onclick="showSolution(2)" class="mt-2 text-blue-600 hover:text-blue-800 text-sm font-medium">Lihat Solusi</button>
                        </div>
                    </div>
                </div>

                <div class="bg-white rounded-xl shadow-lg p-6">
                    <h3 class="text-xl font-semibold mb-4 text-purple-700">🤖 Latihan AI</h3>
                    <div class="space-y-4">
                        <div class="border-l-4 border-purple-500 pl-4">
                            <h4 class="font-semibold text-gray-800">Soal 1: Linear Regression</h4>
                            <p class="text-gray-600 text-sm mt-1">Jelaskan konsep linear regression dan berikan contoh implementasinya dalam prediksi harga rumah.</p>
                            <button onclick="showSolution(3)" class="mt-2 text-purple-600 hover:text-purple-800 text-sm font-medium">Lihat Solusi</button>
                        </div>
                        
                        <div class="border-l-4 border-purple-500 pl-4">
                            <h4 class="font-semibold text-gray-800">Soal 2: Neural Network</h4>
                            <p class="text-gray-600 text-sm mt-1">Gambarkan arsitektur neural network sederhana dengan 3 input, 2 hidden layer, dan 1 output.</p>
                            <button onclick="showSolution(4)" class="mt-2 text-purple-600 hover:text-purple-800 text-sm font-medium">Lihat Solusi</button>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Solution Modal -->
            <div id="solutionModal" class="hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
                <div class="bg-white rounded-xl shadow-xl p-6 max-w-2xl w-full mx-4 max-h-96 overflow-y-auto">
                    <div class="flex justify-between items-center mb-4">
                        <h3 class="text-xl font-semibold text-gray-800">💡 Solusi</h3>
                        <button onclick="closeSolution()" class="text-gray-500 hover:text-gray-700 text-2xl">&times;</button>
                    </div>
                    <div id="solutionContent" class="text-gray-700"></div>
                </div>
            </div>

            <div class="mt-8 bg-white rounded-xl shadow-lg p-6">
                <h3 class="text-xl font-semibold mb-4 text-gray-800">📝 Kalkulator Sederhana</h3>
                <p class="text-gray-600 mb-4">Latihan praktis: Gunakan kalkulator di bawah untuk menghitung kompleksitas algoritma</p>
                
                <div class="bg-gray-50 rounded-lg p-4 max-w-xs">
                    <div class="mb-4">
                        <input type="text" id="calcDisplay" class="w-full p-2 text-right text-xl border rounded" readonly value="0">
                    </div>
                    <div class="grid grid-cols-4 gap-2">
                        <button onclick="clearCalc()" class="bg-red-500 text-white p-2 rounded hover:bg-red-600">C</button>
                        <button onclick="appendToCalc('/')" class="bg-gray-300 p-2 rounded hover:bg-gray-400">÷</button>
                        <button onclick="appendToCalc('*')" class="bg-gray-300 p-2 rounded hover:bg-gray-400">×</button>
                        <button onclick="deleteLast()" class="bg-gray-300 p-2 rounded hover:bg-gray-400">⌫</button>
                        
                        <button onclick="appendToCalc('7')" class="bg-white p-2 rounded hover:bg-gray-100">7</button>
                        <button onclick="appendToCalc('8')" class="bg-white p-2 rounded hover:bg-gray-100">8</button>
                        <button onclick="appendToCalc('9')" class="bg-white p-2 rounded hover:bg-gray-100">9</button>
                        <button onclick="appendToCalc('-')" class="bg-gray-300 p-2 rounded hover:bg-gray-400">-</button>
                        
                        <button onclick="appendToCalc('4')" class="bg-white p-2 rounded hover:bg-gray-100">4</button>
                        <button onclick="appendToCalc('5')" class="bg-white p-2 rounded hover:bg-gray-100">5</button>
                        <button onclick="appendToCalc('6')" class="bg-white p-2 rounded hover:bg-gray-100">6</button>
                        <button onclick="appendToCalc('+')" class="bg-gray-300 p-2 rounded hover:bg-gray-400">+</button>
                        
                        <button onclick="appendToCalc('1')" class="bg-white p-2 rounded hover:bg-gray-100">1</button>
                        <button onclick="appendToCalc('2')" class="bg-white p-2 rounded hover:bg-gray-100">2</button>
                        <button onclick="appendToCalc('3')" class="bg-white p-2 rounded hover:bg-gray-100">3</button>
                        <button onclick="calculateResult()" class="bg-blue-600 text-white p-2 rounded hover:bg-blue-700 row-span-2">=</button>
                        
                        <button onclick="appendToCalc('0')" class="bg-white p-2 rounded hover:bg-gray-100 col-span-2">0</button>
                        <button onclick="appendToCalc('.')" class="bg-white p-2 rounded hover:bg-gray-100">.</button>
                    </div>
                </div>
            </div>
        </section>
    </main>

    <!-- Footer -->
    <footer class="bg-gray-800 text-white py-8 mt-12">
        <div class="container mx-auto px-6 text-center">
            <p class="mb-2">© 2024 Mapel Informatika & AI - Lorensius Ndare, S.Kom</p>
            <p class="text-gray-400 text-sm">Platform Pembelajaran Interaktif untuk Informatika dan Kecerdasan Buatan</p>
        </div>
    </footer>

    <script>
        // Quiz Data
        const quizData = [
            {
                question: "Apa yang dimaksud dengan algoritma?",
                options: [
                    "Bahasa pemrograman",
                    "Langkah-langkah sistematis untuk menyelesaikan masalah",
                    "Perangkat keras komputer",
                    "Sistem operasi"
                ],
                correct: 1
            },
            {
                question: "Manakah yang bukan termasuk jenis machine learning?",
                options: [
                    "Supervised Learning",
                    "Unsupervised Learning",
                    "Reinforcement Learning",
                    "Database Learning"
                ],
                correct: 3
            },
            {
                question: "Apa kepanjangan dari AI?",
                options: [
                    "Automatic Intelligence",
                    "Artificial Intelligence",
                    "Advanced Intelligence",
                    "Algorithmic Intelligence"
                ],
                correct: 1
            },
            {
                question: "Struktur data yang menggunakan prinsip LIFO adalah?",
                options: [
                    "Queue",
                    "Array",
                    "Stack",
                    "Linked List"
                ],
                correct: 2
            },
            {
                question: "Neural Network terinspirasi dari?",
                options: [
                    "Sistem komputer",
                    "Jaringan internet",
                    "Otak manusia",
                    "Algoritma matematika"
                ],
                correct: 2
            }
        ];

        let currentQuestion = 0;
        let score = 0;
        let userAnswers = [];

        // Navigation
        function showSection(sectionName) {
            const sections = ['home', 'guru', 'absen', 'materi', 'quiz', 'latihan'];
            sections.forEach(section => {
                const element = document.getElementById(section);
                if (section === sectionName) {
                    element.classList.remove('hidden');
                    element.classList.add('fade-in');
                } else {
                    element.classList.add('hidden');
                }
            });

            if (sectionName === 'quiz') {
                initQuiz();
            } else if (sectionName === 'absen') {
                initAttendance();
            }
        }

        // Quiz Functions
        function initQuiz() {
            currentQuestion = 0;
            score = 0;
            userAnswers = [];
            document.getElementById('quizContainer').classList.remove('hidden');
            document.getElementById('quizResults').classList.add('hidden');
            document.getElementById('totalQuestions').textContent = quizData.length;
            showQuestion();
        }

        function showQuestion() {
            const question = quizData[currentQuestion];
            document.getElementById('questionNumber').textContent = currentQuestion + 1;
            document.getElementById('questionText').textContent = question.question;
            document.getElementById('score').textContent = score;

            const optionsContainer = document.getElementById('optionsContainer');
            optionsContainer.innerHTML = '';

            question.options.forEach((option, index) => {
                const optionDiv = document.createElement('div');
                optionDiv.className = 'quiz-option p-3 border rounded-lg cursor-pointer hover:bg-blue-50 transition-all';
                optionDiv.innerHTML = `
                    <label class="flex items-center cursor-pointer">
                        <input type="radio" name="answer" value="${index}" class="mr-3">
                        <span>${option}</span>
                    </label>
                `;
                optionDiv.onclick = () => selectAnswer(index);
                optionsContainer.appendChild(optionDiv);
            });

            // Update navigation buttons
            document.getElementById('prevBtn').disabled = currentQuestion === 0;
            document.getElementById('nextBtn').textContent = currentQuestion === quizData.length - 1 ? 'Selesai' : 'Selanjutnya';
        }

        function selectAnswer(answerIndex) {
            const options = document.querySelectorAll('input[name="answer"]');
            options[answerIndex].checked = true;
            userAnswers[currentQuestion] = answerIndex;
        }

        function nextQuestion() {
            const selectedAnswer = document.querySelector('input[name="answer"]:checked');
            if (selectedAnswer) {
                const answerIndex = parseInt(selectedAnswer.value);
                userAnswers[currentQuestion] = answerIndex;

                if (answerIndex === quizData[currentQuestion].correct) {
                    score += 20;
                }
            }

            if (currentQuestion < quizData.length - 1) {
                currentQuestion++;
                showQuestion();
            } else {
                showResults();
            }
        }

        function previousQuestion() {
            if (currentQuestion > 0) {
                currentQuestion--;
                showQuestion();
                
                // Restore previous answer if exists
                if (userAnswers[currentQuestion] !== undefined) {
                    const options = document.querySelectorAll('input[name="answer"]');
                    options[userAnswers[currentQuestion]].checked = true;
                }
            }
        }

        function showResults() {
            document.getElementById('quizContainer').classList.add('hidden');
            document.getElementById('quizResults').classList.remove('hidden');
            document.getElementById('finalScore').textContent = `${score}/100`;

            let message = '';
            if (score >= 80) {
                message = 'Excellent! Anda menguasai materi dengan sangat baik! 🌟';
            } else if (score >= 60) {
                message = 'Good job! Pemahaman Anda cukup baik, terus belajar! 👍';
            } else {
                message = 'Keep learning! Pelajari kembali materi untuk hasil yang lebih baik! 📚';
            }
            document.getElementById('scoreMessage').textContent = message;
        }

        function restartQuiz() {
            initQuiz();
        }

        // Exercise Solutions
        const solutions = {
            1: `
                <h4 class="font-semibold mb-2">Bubble Sort Algorithm:</h4>
                <pre class="bg-gray-100 p-3 rounded text-sm overflow-x-auto">
function bubbleSort(arr) {
    let n = arr.length;
    for (let i = 0; i < n-1; i++) {
        for (let j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // Swap elements
                let temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
}

// Input: [64, 34, 25, 12, 22, 11, 90]
// Output: [11, 12, 22, 25, 34, 64, 90]</pre>
                <p class="mt-2 text-sm text-gray-600">Kompleksitas waktu: O(n²), Kompleksitas ruang: O(1)</p>
            `,
            2: `
                <h4 class="font-semibold mb-2">Binary Search Algorithm:</h4>
                <pre class="bg-gray-100 p-3 rounded text-sm overflow-x-auto">
function binarySearch(arr, target) {
    let left = 0;
    let right = arr.length - 1;
    
    while (left <= right) {
        let mid = Math.floor((left + right) / 2);
        
        if (arr[mid] === target) {
            return mid; // Found at index mid
        } else if (arr[mid] < target) {
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }
    return -1; // Not found
}

// Input: [11, 12, 22, 25, 34, 64, 90], target: 22
// Output: 2 (index of 22)</pre>
                <p class="mt-2 text-sm text-gray-600">Kompleksitas waktu: O(log n), Kompleksitas ruang: O(1)</p>
            `,
            3: `
                <h4 class="font-semibold mb-2">Linear Regression Concept:</h4>
                <p class="mb-3">Linear regression adalah algoritma supervised learning yang memprediksi nilai kontinu berdasarkan hubungan linear antara variabel input dan output.</p>
                <h5 class="font-medium mb-2">Contoh Prediksi Harga Rumah:</h5>
                <ul class="list-disc list-inside text-sm space-y-1 mb-3">
                    <li>Input: Luas rumah, jumlah kamar, lokasi</li>
                    <li>Output: Harga rumah</li>
                    <li>Formula: y = mx + b</li>
                </ul>
                <pre class="bg-gray-100 p-3 rounded text-sm">
# Contoh implementasi sederhana
import numpy as np
from sklearn.linear_model import LinearRegression

# Data training
X = [[100], [150], [200], [250]]  # Luas rumah
y = [300000, 450000, 600000, 750000]  # Harga

model = LinearRegression()
model.fit(X, y)

# Prediksi harga rumah 180m²
predicted_price = model.predict([[180]])
print(f"Prediksi harga: {predicted_price[0]}")</pre>
            `,
            4: `
                <h4 class="font-semibold mb-2">Neural Network Architecture:</h4>
                <div class="mb-3">
                    <svg viewBox="0 0 400 200" class="w-full max-w-md border rounded">
                        <!-- Input Layer -->
                        <circle cx="50" cy="50" r="15" fill="#3b82f6" />
                        <circle cx="50" cy="100" r="15" fill="#3b82f6" />
                        <circle cx="50" cy="150" r="15" fill="#3b82f6" />
                        <text x="20" y="55" class="text-xs">X1</text>
                        <text x="20" y="105" class="text-xs">X2</text>
                        <text x="20" y="155" class="text-xs">X3</text>
                        
                        <!-- Hidden Layer 1 -->
                        <circle cx="150" cy="40" r="12" fill="#10b981" />
                        <circle cx="150" cy="80" r="12" fill="#10b981" />
                        <circle cx="150" cy="120" r="12" fill="#10b981" />
                        <circle cx="150" cy="160" r="12" fill="#10b981" />
                        
                        <!-- Hidden Layer 2 -->
                        <circle cx="250" cy="60" r="12" fill="#f59e0b" />
                        <circle cx="250" cy="100" r="12" fill="#f59e0b" />
                        <circle cx="250" cy="140" r="12" fill="#f59e0b" />
                        
                        <!-- Output Layer -->
                        <circle cx="350" cy="100" r="15" fill="#ef4444" />
                        <text x="365" y="105" class="text-xs">Y</text>
                        
                        <!-- Connections (simplified) -->
                        <line x1="65" y1="50" x2="135" y2="40" stroke="#666" stroke-width="1" />
                        <line x1="65" y1="100" x2="135" y2="80" stroke="#666" stroke-width="1" />
                        <line x1="162" y1="40" x2="235" y2="60" stroke="#666" stroke-width="1" />
                        <line x1="265" y1="100" x2="335" y2="100" stroke="#666" stroke-width="1" />
                        
                        <!-- Labels -->
                        <text x="35" y="20" class="text-xs font-semibold">Input</text>
                        <text x="125" y="20" class="text-xs font-semibold">Hidden 1</text>
                        <text x="225" y="20" class="text-xs font-semibold">Hidden 2</text>
                        <text x="335" y="20" class="text-xs font-semibold">Output</text>
                    </svg>
                </div>
                <p class="text-sm text-gray-600 mb-2">Arsitektur: 3 input → 4 neurons → 3 neurons → 1 output</p>
                <ul class="list-disc list-inside text-sm space-y-1">
                    <li>Input layer: 3 neurons (fitur input)</li>
                    <li>Hidden layer 1: 4 neurons dengan aktivasi ReLU</li>
                    <li>Hidden layer 2: 3 neurons dengan aktivasi ReLU</li>
                    <li>Output layer: 1 neuron dengan aktivasi sigmoid/linear</li>
                </ul>
            `
        };

        function showSolution(solutionId) {
            document.getElementById('solutionContent').innerHTML = solutions[solutionId];
            document.getElementById('solutionModal').classList.remove('hidden');
        }

        function closeSolution() {
            document.getElementById('solutionModal').classList.add('hidden');
        }

        // Calculator Functions
        let calcDisplay = document.getElementById('calcDisplay');
        let currentInput = '0';
        let shouldResetDisplay = false;

        function updateDisplay() {
            calcDisplay.value = currentInput;
        }

        function appendToCalc(value) {
            if (shouldResetDisplay) {
                currentInput = '';
                shouldResetDisplay = false;
            }
            
            if (currentInput === '0' && value !== '.') {
                currentInput = value;
            } else {
                currentInput += value;
            }
            updateDisplay();
        }

        function clearCalc() {
            currentInput = '0';
            updateDisplay();
        }

        function deleteLast() {
            if (currentInput.length > 1) {
                currentInput = currentInput.slice(0, -1);
            } else {
                currentInput = '0';
            }
            updateDisplay();
        }

        function calculateResult() {
            try {
                // Replace display symbols with actual operators
                let expression = currentInput.replace(/×/g, '*').replace(/÷/g, '/');
                let result = eval(expression);
                currentInput = result.toString();
                shouldResetDisplay = true;
                updateDisplay();
            } catch (error) {
                currentInput = 'Error';
                shouldResetDisplay = true;
                updateDisplay();
            }
        }

        // Attendance Functions
        let attendanceData = [];

        function initAttendance() {
            // Set current date
            const today = new Date();
            const dateString = today.toLocaleDateString('id-ID', {
                weekday: 'long',
                year: 'numeric',
                month: 'long',
                day: 'numeric'
            });
            document.getElementById('currentDate').textContent = dateString;
            
            // Load existing attendance data
            displayAttendanceList();
        }

        // Handle photo upload
        document.getElementById('studentPhoto').addEventListener('change', function(e) {
            const file = e.target.files[0];
            if (file) {
                const reader = new FileReader();
                reader.onload = function(e) {
                    document.getElementById('previewImage').src = e.target.result;
                    document.getElementById('photoPreview').classList.remove('hidden');
                };
                reader.readAsDataURL(file);
            }
        });

        // Handle form submission
        document.getElementById('absenForm').addEventListener('submit', function(e) {
            e.preventDefault();
            
            const name = document.getElementById('studentName').value;
            const studentClass = document.getElementById('studentClass').value;
            const photo = document.getElementById('previewImage').src;
            const attendance = document.querySelector('input[name="attendance"]:checked')?.value;
            const comment = document.getElementById('studentComment').value;
            
            if (!name || !studentClass || !attendance) {
                alert('Mohon lengkapi semua data!');
                return;
            }

            if (!photo || photo === '') {
                alert('Mohon ambil foto selfie terlebih dahulu!');
                return;
            }

            // Show loading state
            const submitBtn = document.querySelector('#absenForm button[type="submit"]');
            const originalText = submitBtn.innerHTML;
            submitBtn.innerHTML = '⏳ Mengirim ke Database...';
            submitBtn.disabled = true;

            // Prepare data for database submission
            const attendanceRecord = {
                id: Date.now(),
                name: name,
                class: studentClass,
                photo: photo,
                status: attendance,
                comment: comment || '',
                timestamp: new Date().toISOString(),
                time: new Date().toLocaleTimeString('id-ID'),
                date: new Date().toLocaleDateString('id-ID')
            };

            // Simulate database submission (replace with actual API call)
            submitToDatabase(attendanceRecord)
                .then(response => {
                    // Add to local attendance data
                    attendanceData.push(attendanceRecord);
                    
                    // Reset form
                    document.getElementById('absenForm').reset();
                    document.getElementById('photoPreview').classList.add('hidden');
                    document.getElementById('previewImage').src = '';
                    
                    // Update display
                    displayAttendanceList();
                    
                    // Show success message
                    showAttendanceSuccess(name, attendance, true);
                })
                .catch(error => {
                    console.error('Database submission error:', error);
                    // Still save locally as backup
                    attendanceData.push(attendanceRecord);
                    displayAttendanceList();
                    showAttendanceSuccess(name, attendance, false);
                })
                .finally(() => {
                    // Reset button state
                    submitBtn.innerHTML = originalText;
                    submitBtn.disabled = false;
                });
        });

        function displayAttendanceList() {
            const listContainer = document.getElementById('attendanceList');
            const emptyMessage = document.getElementById('emptyAttendance');
            
            if (attendanceData.length === 0) {
                listContainer.innerHTML = '';
                emptyMessage.classList.remove('hidden');
                return;
            }
            
            emptyMessage.classList.add('hidden');
            
            listContainer.innerHTML = attendanceData.map(record => {
                const statusColors = {
                    'hadir': 'bg-green-100 text-green-800',
                    'terlambat': 'bg-yellow-100 text-yellow-800',
                    'sakit': 'bg-red-100 text-red-800',
                    'izin': 'bg-blue-100 text-blue-800'
                };
                
                const statusIcons = {
                    'hadir': '✅',
                    'terlambat': '⏰',
                    'sakit': '🤒',
                    'izin': '📝'
                };
                
                return `
                    <div class="flex items-start space-x-4 p-4 border rounded-lg hover:bg-gray-50">
                        <img src="${record.photo}" alt="${record.name}" class="w-12 h-12 object-cover rounded-full border-2 border-gray-300">
                        <div class="flex-1">
                            <h4 class="font-semibold text-gray-800">${record.name}</h4>
                            <p class="text-sm text-gray-600">Kelas: ${record.class}</p>
                            ${record.comment ? `<p class="text-sm text-gray-500 mt-1 italic">"${record.comment}"</p>` : ''}
                        </div>
                        <div class="text-center">
                            <span class="inline-flex items-center px-3 py-1 rounded-full text-sm font-medium ${statusColors[record.status]}">
                                ${statusIcons[record.status]} ${record.status.charAt(0).toUpperCase() + record.status.slice(1)}
                            </span>
                            <p class="text-xs text-gray-500 mt-1">${record.time}</p>
                            <div class="text-xs text-blue-600 mt-1">📊 Database</div>
                        </div>
                    </div>
                `;
            }).join('');
        }

        // Database submission function
        async function submitToDatabase(attendanceData) {
            // Simulate API call to your database
            // Replace this with your actual database endpoint
            const API_ENDPOINT = 'https://your-api-endpoint.com/attendance';
            
            try {
                // Simulate network delay
                await new Promise(resolve => setTimeout(resolve, 1500));
                
                // In real implementation, use fetch to send data to your server:
                /*
                const response = await fetch(API_ENDPOINT, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'Authorization': 'Bearer your-token-here'
                    },
                    body: JSON.stringify(attendanceData)
                });
                
                if (!response.ok) {
                    throw new Error(`HTTP error! status: ${response.status}`);
                }
                
                return await response.json();
                */
                
                // For demo purposes, simulate successful response
                console.log('Data yang akan dikirim ke database:', attendanceData);
                return {
                    success: true,
                    message: 'Attendance recorded successfully',
                    id: attendanceData.id
                };
                
            } catch (error) {
                console.error('Error submitting to database:', error);
                throw error;
            }
        }

        function showAttendanceSuccess(name, status, databaseSuccess = true) {
            // Create success notification
            const notification = document.createElement('div');
            const bgColor = databaseSuccess ? 'bg-green-500' : 'bg-yellow-500';
            const icon = databaseSuccess ? '✅' : '⚠️';
            const message = databaseSuccess 
                ? `Absensi ${name} berhasil disimpan ke database!`
                : `Absensi ${name} disimpan lokal (database tidak tersedia)`;
            
            notification.className = `fixed top-4 right-4 ${bgColor} text-white px-6 py-3 rounded-lg shadow-lg z-50 fade-in`;
            notification.innerHTML = `
                <div class="flex items-center space-x-2">
                    <span class="text-xl">${icon}</span>
                    <div>
                        <div class="font-semibold">${message}</div>
                        ${databaseSuccess ? '<div class="text-xs opacity-90">Data tersimpan di server</div>' : '<div class="text-xs opacity-90">Akan dikirim ulang saat koneksi tersedia</div>'}
                    </div>
                </div>
            `;
            
            document.body.appendChild(notification);
            
            // Remove notification after 4 seconds
            setTimeout(() => {
                notification.remove();
            }, 4000);
        }

        // Initialize the page
        document.addEventListener('DOMContentLoaded', function() {
            showSection('home');
        });
    </script>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'98bdf3c4a45d7550',t:'MTc2MDAxMzY4Ni4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>

Komentar