* {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Fredoka', sans-serif;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100dvh; /* Gunakan dvh untuk mobile */
            display: flex;
            justify-content: center;
            align-items: center;
            
            /* * PERUBAHAN: 
             * Menambahkan padding untuk memberi ruang bagi panda di atas 
             * dan ruang bernapas di perangkat seluler.
             * '7em' di atas untuk memberi ruang bagi panda (yang 'top: -5em')
            */
            padding: 7em 1rem 2rem 1rem;
            position: relative;
            overflow-x: hidden;
        }

        .background-shapes {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            z-index: 0;
            pointer-events: none;
        }

        .shape {
            position: absolute;
            border-radius: 50%;
            opacity: 0.15;
            animation: float 20s infinite ease-in-out;
        }

        .shape-1 { width: 200px; height: 200px; background: #fff; top: 10%; left: 10%; animation-delay: 0s; }
        .shape-2 { width: 150px; height: 150px; background: #4A90E2; top: 60%; right: 15%; animation-delay: 2s; }
        .shape-3 { width: 100px; height: 100px; background: #fff; bottom: 20%; left: 20%; animation-delay: 4s; }
        .shape-4 { width: 120px; height: 120px; background: #4A90E2; top: 30%; right: 25%; animation-delay: 1s; }
        .shape-5 { width: 180px; height: 180px; background: #fff; bottom: 10%; right: 10%; animation-delay: 3s; }

        @keyframes float {
            0%, 100% { transform: translateY(0) rotate(0deg); }
            50% { transform: translateY(-30px) rotate(180deg); }
        }

        .container {
            /* * PERUBAHAN BESAR:
             * Hapus 'position: absolute', 'transform', 'top', 'left', 'height'.
             * Gunakan 'max-width' untuk batas di desktop.
             * Gunakan 'width: 90%' agar responsif di mobile.
             * Tambahkan 'position: relative' agar panda diposisikan relatif terhadap container ini.
            */
            width: 90%;
            max-width: 31.25em; /* 500px at 16px font-size */
            position: relative;
            z-index: 1;
            
            /* * Tetapkan font-size dasar untuk 'em' panda.
             * Ini akan diskalakan oleh media query di bawah.
            */
            font-size: 16px;
        }

        .login-box {
            background: white;
            border-radius: 30px;
            padding: 70px 35px 40px 35px; /* Padding atas 70px untuk memberi ruang bagi panda */
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
            animation: slideUp 0.5s ease-out;
            position: relative; /* Tambahkan ini agar z-index berfungsi */
            z-index: 5; /* Di bawah panda header */
        }

        @keyframes slideUp {
            from { opacity: 0; transform: translateY(30px); }
            to { opacity: 1; transform: translateY(0); }
        }

        .header {
            text-align: center;
            margin-bottom: 30px;
        }

        .logo {
            display: inline-block;
            margin-bottom: 20px;
            animation: bounce 2s infinite;
        }

        @keyframes bounce {
            0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
            40% { transform: translateY(-15px); }
            60% { transform: translateY(-25px); }
        }

        h1 {
            color: #4A90E2;
            font-size: 32px;
            font-weight: 700;
            margin-bottom: 10px;
        }

        .header p {
            color: #7B8794;
            font-size: 16px;
            font-weight: 500;
        }

        .form-group {
            margin-bottom: 10px;
        }

        label {
            display: flex;
            align-items: center;
            gap: 8px;
            color: #4A90E2;
            font-size: 16px;
            font-weight: 600;
            margin-bottom: 10px;
        }

        label .icon {
            font-size: 20px;
        }

        input {
            width: 100%;
            padding: 15px 20px;
            border: 3px solid #E1E8ED;
            border-radius: 15px;
            font-size: 16px;
            font-family: 'Fredoka', sans-serif;
            transition: all 0.3s ease;
            background: #F7F9FC;
        }

        input:focus {
            outline: none;
            border-color: #4A90E2;
            background: white;
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(74, 144, 226, 0.2);
        }

        input::placeholder {
            color: #B0BEC5;
        }

        .error-message {
            display: block;
            color: #FF6B6B;
            font-size: 13px;
            margin-top: 5px;
            min-height: 18px;
            font-weight: 500;
        }

        .btn-login {
            width: 100%;
            padding: 16px;
            background: linear-gradient(135deg, #4A90E2 0%, #357ABD 100%);
            border: none;
            border-radius: 15px;
            color: white;
            font-size: 18px;
            font-weight: 700;
            font-family: 'Fredoka', sans-serif;
            cursor: pointer;
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            transition: all 0.3s ease;
            box-shadow: 0 10px 25px rgba(74, 144, 226, 0.4);
            margin-top: 10px;
        }

        .btn-login:hover {
            transform: translateY(-3px);
            box-shadow: 0 15px 35px rgba(74, 144, 226, 0.5);
        }

        .btn-login:active {
            transform: translateY(-1px);
        }

        .btn-icon {
            font-size: 22px;
            animation: rocket 1.5s infinite;
        }

        @keyframes rocket {
            0%, 100% { transform: translateY(0); }
            50% { transform: translateY(-5px); }
        }

        .success-message,
        .error-box {
            margin-top: 20px;
            padding: 15px 20px;
            border-radius: 15px;
            display: none; /* Sembunyikan secara default */
            align-items: center;
            gap: 10px;
            font-weight: 600;
            animation: slideIn 0.4s ease-out;
        }

        @keyframes slideIn {
            from { opacity: 0; transform: translateX(-20px); }
            to { opacity: 1; transform: translateX(0); }
        }

        .success-message { background: #E8F5E9; color: #2E7D32; border: 3px solid #81C784; }
        .error-box { background: #FFEBEE; color: #C62828; border: 3px solid #EF5350; }

        .success-message .icon,
        .error-box .icon {
            font-size: 24px;
        }

        .footer {
            margin-top: 25px;
            text-align: center;
        }

        .footer p {
            color: #7B8794;
            font-size: 18px;
            font-weight: 500;
        }

        

        .announcement-box {
            font-family: Arial, sans-serif;
            font-size: 14px;
            background-color: #eaf8ff;
            border: 1px solid #bde0fe;
            color: #0353a4;
            padding: 15px;
            border-radius: 8px;
            margin-top: 25px;
            text-align: left;
            line-height: 1.5;
            position: relative;
            z-index: 2;
        }

        .announcement-box h4 {
            margin-top: 0;
            margin-bottom: 10px;
            color: #013a73;
            font-size: 16px;
            display: flex;
            align-items: center;
        }

        .announcement-box h4 .fas {
            margin-right: 10px;
        }

        .announcement-box ul {
            padding-left: 20px;
            margin-bottom: 0;
        }

        /* =================================================================
         * MEDIA QUERY RESPONSIVE
         * ================================================================= */
        
        @media screen and (max-width: 500px) {
            
            /* * PERUBAHAN:
             * 'font-size: 12px' pada .container akan mengecilkan 
             * SEMUA 'em' unit di dalamnya (panda, login-box, dll.)
             * secara proporsional. Ini adalah cara scaling yang benar.
            */
            .container {
                font-size: 12px;
                width: 95%; /* Gunakan sedikit lebih banyak ruang di layar kecil */
            }
            
            /* * PERUBAHAN:
             * Menghapus '.panda-header' yang tidak terpakai dari media query.
             * Menyesuaikan padding login-box agar lebih pas di mobile.
            */
            
            .login-box {
                padding: 70px 25px 30px 25px; /* Padding atas tetap 70px, samping dikurangi */
            }

            h1 {
                font-size: 26px;
            }

            .header p {
                font-size: 14px;
            }

            input {
                padding: 12px 16px;
                font-size: 15px;
            }

            .btn-login {
                font-size: 16px;
                padding: 14px;
            }
        }
        /*
 
/*
 * ==================================================
 * STYLE UNTUK MODAL (POP-UP) PERINGATAN PIN
 * ==================================================
*/

.pin-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 999;
    
    /* Sembunyikan dulu */
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.pin-modal-overlay.show {
    opacity: 1;
    visibility: visible;
}

.pin-modal-box {
    background: #ffffff;
    padding: 25px 30px;
    border-radius: 20px;
    width: 90%;
    max-width: 400px;
    text-align: center;
    box-shadow: 0 10px 30px rgba(0,0,0,0.2);
    
    /* Animasi muncul */
    transform: scale(0.9);
    transition: transform 0.3s ease;
}
.pin-modal-overlay.show .pin-modal-box {
    transform: scale(1);
}

.pin-modal-box h2 {
    color: #f0932b; /* Oranye */
    font-family: 'Fredoka', sans-serif;
    margin-top: 0;
    margin-bottom: 10px;
    font-size: 24px;
}

.pin-modal-box p {
    color: #555;
    font-size: 16px;
    line-height: 1.6;
    margin-bottom: 25px;
}

/* Style untuk tombol di modal */
.modal-button {
    display: inline-block;
    padding: 12px 20px;
    border-radius: 10px;
    text-decoration: none;
    font-weight: bold;
    font-family: 'Fredoka', sans-serif;
    font-size: 16px;
    cursor: pointer;
    border: none;
    transition: all 0.3s ease;
    margin: 5px;
}
/* Tombol "Lanjutkan" (abu-abu) */
.modal-button.secondary {
    background: #e0e0e0;
    color: #777;
}
.modal-button.secondary:hover {
    background: #d1d1d1;
}
/* Tombol "Buat PIN" (hijau) */
.modal-button.primary {
    background: linear-gradient(135deg, #2ecc71 0%, #28b463 100%);
    color: white;
    box-shadow: 0 5px 15px rgba(46, 204, 113, 0.3);
}
.modal-button.primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(46, 204, 113, 0.4);
}

/*
 * ==================================================
 * STYLE BARU UNTUK TOMBOL BANTUAN (VERSI TEKS)
 * ==================================================
*/
.fab-bantuan {
    position: fixed; /* Tetap di layar */
    bottom: 20px;
    right: 20px;
    
    /* PERBAIKAN: Ubah dari lingkaran ke pil */
    width: auto; /* Lebar otomatis */
    height: 55px; /* Tinggi tetap */
    padding: 0 20px; /* Jarak di dalam tombol */
    
    background-color: #25D366; /* Warna hijau WhatsApp */
    color: white;
    
    display: flex;
    justify-content: center;
    align-items: center;
    
    border-radius: 30px; /* Bentuk pil */
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
    
    font-size: 16px; /* Ukuran teks */
    font-weight: 600;
    font-family: 'Fredoka', sans-serif;
    text-decoration: none;
    
    z-index: 998;
    
    /* Animasi */
    transition: all 0.3s ease;
    animation: pulse 2s infinite;
}

.fab-bantuan .bi {
    /* Atur ikon di sebelah kiri teks */
    font-size: 24px;
    margin-right: 8px;
}

.fab-bantuan:hover {
    background-color: #20b056;
    color: white;
    transform: scale(1.05); /* Sedikit membesar */
    box-shadow: 0 8px 20px rgba(37, 211, 102, 0.5);
    animation-play-state: paused;
}

/* Animasi berdenyut (tetap sama) */
@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.7);
    }
    70% {
        box-shadow: 0 0 0 15px rgba(37, 211, 102, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(37, 211, 102, 0);
    }
}
/* Tombol WhatsApp (didasarkan pada .btn-login) */
.btn-whatsapp {
    background: linear-gradient(135deg, #25D366 0%, #20b056 100%);
    box-shadow: 0 10px 25px rgba(37, 211, 102, 0.4);
    
    /* Properti yang disalin dari .btn-login */
    width: 90%;
    padding: 12px;
    border: none;
    border-radius: 15px;
    color: white;
    font-size: 18px;
    font-weight: 700;
    font-family: 'Fredoka', sans-serif;
    cursor: pointer;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
    margin-top: 10px;
}
.btn-whatsapp:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 35px rgba(37, 211, 102, 0.5);
}
.btn-whatsapp .bi {
    font-size: 1.2em;
}
/*
 * ==================================================
 * STYLE UNTUK TOGGLE PASSWORD (MATA)
 * ==================================================
*/
.input-wrapper {
    position: relative;
    width: 100%;
}

.toggle-password {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    cursor: pointer;
    font-size: 20px;
    color: #7B8794;
    z-index: 10;
    user-select: none;
}

/* Memberi ruang di kanan input agar teks tidak menabrak ikon */
.input-wrapper input[type="password"],
.input-wrapper input[type="text"] {
    padding-right: 50px !important; 
}