/* ==========================================================
   RESET & GLOBAL STYLES
   ========================================================== */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Plus Jakarta Sans', sans-serif;
    background-color: #f8fafc; /* Latar belakang cerah netral menggantikan hitam pekat */
    color: #0f172a;
    min-height: 100vh;
    width: 100vw;
    /* MENGAKTIFKAN SCROLLING: Mengizinkan halaman digulir ke bawah di semua perangkat */
    overflow-x: hidden;
    overflow-y: auto; 
}

/* Container Utama Flexbox Layout */
.grid-container {
    display: flex;
    flex-wrap: wrap; 
    width: 100vw;
    height: auto; /* Tinggi dinamis melar ke bawah mengikuti baris gambar */
    gap: 0; /* Mengunci agar sama sekali tidak ada jarak/celah antar gambar */
}

/* ==========================================================
   STRATEGI TATA LETAK ADAPTIF & RESPONSIF (BISA SCROLLING)
   ========================================================== */

/* 1. Mode Desktop & Tablet (Formasi Dasar 5 Kolom, Mendukung Scroll) */
@media (min-width: 768px) {
    .grid-item {
        position: relative;
        overflow: hidden;
        cursor: pointer;
        background-color: #f1f5f9; /* Fallback warna pengisi saat transisi fade */
        
        /* Mengunci jatah lebar tepat 5 kolom per baris (100% / 5 = 20%) */
        width: 20%; 
        
        /* Tinggi baris ideal untuk desktop agar proporsional saat di-scroll */
        height: 50vh; 
    }
}

/* 2. Mode Smartphone (Formasi 2 Kolom, Tampilan Awal 2x3, Sisa Di-scroll Ke Bawah) */
@media (max-width: 767px) {
    .grid-item {
        position: relative;
        overflow: hidden;
        cursor: pointer;
        background-color: #f1f5f9;
        
        /* Mengunci jatah lebar tepat 2 kolom per baris (100% / 2 = 50%) */
        width: 50%; 
        
        /* Tinggi baris diatur 33.333vh agar pas menampilkan formasi 2x3 di layar utama HP */
        height: 33.333vh; 
    }
}

/* ==========================================================
   ASET GAMBAR & ANIMASI TRANSISI
   ========================================================== */
.img-wrapper {
    width: 100%;
    height: 100%;
}

.grid-item img {
    height: 100%;
    width: 100%;  
    object-fit: cover; /* Mengisi penuh ruang flex secara proporsional tanpa merusak aspek rasio */
    display: block; /* SANGAT PENTING: Menghilangkan sisa celah inline mikro bawaan browser */
    transition: transform 0.5s ease, opacity 0.4s ease-in-out;
}

/* Efek Hover Memperbesar Gambar (Hanya Aktif di Desktop) */
@media (min-width: 1024px) {
    .grid-item:hover img {
        transform: scale(1.05);
    }
    .grid-item:hover .overlay {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ==========================================================
   OVERLAY INFORMASI GRADASI
   ========================================================== */
.overlay {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 80%;
    background: linear-gradient(to top, rgba(15, 23, 42, 0.95) 0%, rgba(15, 23, 42, 0.4) 70%, rgba(15, 23, 42, 0) 100%);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 0.75rem;
    transition: all 0.3s ease-in-out;
    opacity: 0.95; /* Selalu terlihat sedikit di HP & Tablet untuk kemudahan informasi */
}

/* Di desktop, overlay baru akan muncul bergeser naik saat di-hover */
@media (min-width: 1024px) {
    .overlay {
        opacity: 0;
        transform: translateY(10px);
    }
}

/* Kelas Pembantu JavaScript untuk Efek Memudar Modulasi */
.fade-out {
    opacity: 0 !important;
}

/* Custom Scrollbar Mini untuk Komponen di Dalam Modal Pop-up */
.custom-scrollbar::-webkit-scrollbar { width: 4px; }
.custom-scrollbar::-webkit-scrollbar-track { background: #1e293b; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: #475569; border-radius: 2px; }