body { margin: 0; padding: 0; } @keyframes shake { 0% { transform: translate(0); } 25% { transform: translate(-5px, 0); } 50% { transform: translate(5px, 0); } 75% { transform: translate(-5px, 0); } 100% { transform: translate(0); } } .shake { animation: shake 0.5s; } .kategori-aktif { background-color: #1d4ed8; color: white; transform: scale(1.05); transition: all 0.3s ease; } .produk-card { transition: all 0.3s ease; display: block; } .produk-card.hidden { display: none; } /* Gaya untuk Mode Terang */ #judul-produk-utama { color: #111827; } /* Gaya untuk Mode Gelap */ html.dark #judul-produk-utama { color: white; } html.dark .bg-gray-100 { background-color: #2c2c2c; } html.dark h1, html.dark p { color: #fffafa; } /* Contoh untuk Navbar (sesuaikan jika perlu) */ html.dark .navbar { background: rgba(30, 30, 30, 0.5); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border-color: rgba(100, 100, 100, 0.2); } html.dark .nav-link { color: #e5e7eb; /* Warna teks navbar di mode gelap */ } html.dark .nav-link:hover { color: #ffffff; } html.dark .nav-link:after { background-color: #ffffff; } /* Tombol Kategori Aktif (Contoh) */ html.dark .kategori-aktif { background-color: #3b82f6; /* Biru yang berbeda mungkin? */ color: white; } /* Pastikan section dengan bg-white juga di-handle */ html.dark section.bg-white { background-color: #1f2937; } /* Anda mungkin perlu menambahkan lebih banyak aturan untuk elemen spesifik lainnya agar terlihat bagus */ /* Splash screen */ #splash-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(120deg, #6dd5fa, #ffffff); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 1000; transition: opacity 1s ease; } #splash-logo { width: 120px; height: 120px; margin-bottom: 20px; } @keyframes dayNight { 0%, 100% { background: linear-gradient(120deg, #ffffff, #ffffff); } 50% { background: linear-gradient(120deg, #a9abac, #e7ecee); } } .animate-day-night { animation: dayNight 3s infinite alternate; } /* New Navbar Styles */ .navbar { background: rgba(0, 0, 0, 0.3); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .navbar-brand { display: flex; align-items: center; font-weight: 700; font-size: 1.25rem; } .navbar-brand img { margin-right: 10px; } .nav-link { position: relative; padding: 0.5rem 1rem; transition: all 0.3s ease; } .nav-link:hover { color: #ffffff; } .nav-link:after { content: ''; position: absolute; width: 0; height: 2px; bottom: 0; left: 0; background-color: #ffffff; transition: width 0.3s ease; } .nav-link:hover:after { width: 100%; } .navbar-container { max-width: 1200px; margin: 0 auto; } .mobile-menu-button { display: none; } @media (max-width: 768px) { .mobile-menu-button { display: block; } .navbar-menu { display: none; } .navbar-menu.active { display: flex; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0; background-color: rgba(0, 0, 0, 0.5); padding: 1rem; z-index: 1000; } } /* Custom scrollbar for categories */ .scrollbar-hide::-webkit-scrollbar { display: none; } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } .scroll-button { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255, 255, 255, 0.7); border-radius: 50%; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 10; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } .scroll-button.left { left: 0; } .scroll-button.right { right: 0; } .scroll-button:hover { background: rgba(255, 255, 255, 0.9); } /* Enhanced Contact Section */ #contact { background-attachment: fixed; } #contact-form input, #contact-form textarea { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } #contact-form button { background-size: 200% auto; transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); } #contact-form button:hover { background-position: right center; transform: translateY(-2px); } .contact-info-item { transition: all 0.3s ease; } .contact-info-item:hover { transform: translateY(-3px); } /* =========================== */ /* == Gaya Menu Mobile (HP) == */ /* =========================== */ #mobile-menu:not(.hidden) { display: flex !important; flex-direction: column; position: absolute; top: 100%; left: 0; right: 0; padding: 0.5rem 0; /* Ubah padding atas/bawah, hapus kiri/kanan */ z-index: 45; text-align: left; /* <-- UBAH: Rata Kiri */ /* Gaya Mode Terang (Light Mode) */ background-color: rgba(255, 255, 255, 0.85); /* <-- UBAH: Latar lebih transparan */ backdrop-filter: blur(10px); /* <-- Efek blur */ -webkit-backdrop-filter: blur(10px); /* border-top: 1px solid #e5e7eb; */ /* <-- HAPUS: Garis atas */ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); transition: background-color 0.3s ease; } /* Gaya untuk link di dalam menu mobile */ #mobile-menu .nav-link { padding: 12px 20px; /* <-- UBAH: Jarak atas/bawah & Jarak Kiri */ width: 100%; /* border-bottom: 1px solid #f3f4f6; */ /* <-- HAPUS: Garis pemisah */ /* Gaya Teks Mode Terang */ color: #1f2937; font-weight: 500; transition: color 0.3s ease, background-color 0.3s ease; box-sizing: border-box; /* Pastikan padding tidak menambah lebar */ } /* Hapus garis bawah untuk link terakhir (Sudah tidak ada, tapi biarkan) */ #mobile-menu .nav-link:last-child { border-bottom: none; } /* Efek hover pada link menu mobile */ #mobile-menu .nav-link:hover { background-color: rgba(240, 240, 240, 0.7); /* Latar lebih transparan saat hover */ color: #3b82f6; } /* Hapus garis bawah animasi dari desktop */ #mobile-menu .nav-link::after { display: none; } /* ==================================== */ /* == Gaya Menu Mobile - MODE GELAP == */ /* ==================================== */ html.dark #mobile-menu:not(.hidden) { background-color: rgba(30, 41, 59, 0.85) !important; /* Latar gelap lebih transparan */ border-top: none !important; /* Pastikan tidak ada border atas */ } html.dark #mobile-menu .nav-link { color: #e5e7eb !important; border-bottom: none !important; /* Pastikan tidak ada border bawah */ } html.dark #mobile-menu .nav-link:hover { background-color: rgba(55, 65, 81, 0.7) !important; /* Latar abu-abu gelap transparan (gray-700) */ color: #60a5fa !important; } /* Untuk produk VPS */ .produk-card[data-kategori="bot"]:nth-child(2) { position: relative; overflow: hidden; opacity: 0.7; pointer-events: none; filter: grayscale(50%); } .produk-card[data-kategori="bot"]:nth-child(2)::after { content: "CLOSE"; position: absolute; top: 0; right: 0; background-color: #ef4444; /* Warna merah */ color: white; font-size: 10px; font-weight: bold; padding: 3px 8px; border-radius: 0 8px 0 8px; transform: rotate(15deg); transform-origin: bottom right; box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } /* === Animasi & Peningkatan Tambahan === */ /* Animasi Float untuk Gambar Hero */ @keyframes float { 0% { transform: translateY(0px); } 50% { transform: translateY(-8px); } 100% { transform: translateY(0px); } } /* Target gambar hero spesifik (sesuaikan jika perlu) */ section.flex > div:last-child > img { animation: float 4s ease-in-out infinite; transition: transform 0.3s ease; } section.flex > div:last-child > img:hover { transform: scale(1.05); } /* Animasi Pulse untuk Tombol WhatsApp */ @keyframes pulse { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.6); } 70% { transform: scale(1.05); box-shadow: 0 0 0 12px rgba(59, 130, 246, 0); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } } #whatsapp-button { animation: pulse 2.5s infinite cubic-bezier(0.66, 0, 0, 1); transition: background-color 0.3s ease, transform 0.3s ease; } #whatsapp-button:hover { transform: scale(1.1); } /* Efek Hover Ikon Sosial di Footer */ footer .flex a i { transition: transform 0.3s ease, color 0.3s ease; } footer .flex a:hover i { transform: scale(1.3) rotate(5deg); } /* Efek Fokus & Ikon Input pada Form Kontak */ #contact-form input:focus, #contact-form textarea:focus { transform: scale(1.01); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.4); transition: all 0.2s ease-in-out; } #contact-form .relative:focus-within i { color: #3b82f6; /* Blue-600 */ transition: color 0.2s ease-in-out; } /* Efek Hover & Pop-in Kartu Produk */ .produk-card { transition: all 0.3s ease, transform 0.3s ease, opacity 0.4s ease; display: block; opacity: 1; transform: scale(1); } .produk-card:hover { transform: translateY(-6px) scale(1.02); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } @keyframes pop-in { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } } @keyframes fade-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.9); } } .produk-card.animate-pop-in { animation: pop-in 0.4s ease-out forwards; } .produk-card.animate-fade-out { animation: fade-out 0.3s ease-out forwards; } .produk-card.is-hiding { /* Kelas pembantu untuk JS */ /* Tidak perlu gaya khusus, hanya untuk penanda */ } /* Efek Hover Checklist Keunggulan */ ul li span.text-green-500 { transition: transform 0.3s ease, color 0.3s ease; display: inline-block; /* Diperlukan untuk transform */ } ul li:hover span.text-green-500 { transform: scale(1.5) rotate(-10deg); color: #10b981; /* Hijau lebih cerah */ } /* Efek Hover Tombol Kategori */ .kategori-btn { transition: all 0.3s ease; } .kategori-btn:not(.kategori-aktif):hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); } /* Peningkatan Efek Hover Nav Link */ .nav-link { transition: all 0.3s ease; } .nav-link:hover { transform: translateY(-2px); } .nav-link:hover:after { width: 100%; transition: width 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } /* Animasi Splash Screen Logo */ @keyframes splash-pop { 0% { transform: scale(0.8); opacity: 0.5; } 50% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(1); opacity: 1; } } #splash-logo { animation: splash-pop 1s ease-out forwards; } /* Transisi Scroll Navbar */ .navbar { transition: background-color 0.4s ease, backdrop-filter 0.4s ease, box-shadow 0.4s ease; } .navbar-scrolled { background: rgba(255, 255, 255, 0.6); /* Latar terang dengan blur */ backdrop-filter: blur(15px) !important; -webkit-backdrop-filter: blur(15px) !important; box-shadow: 0 6px 10px rgba(0, 0, 0, 0.1) !important; } html.dark .navbar-scrolled { background: rgba(20, 20, 20, 0.6) !important; /* Latar gelap dengan blur */ } /* Animasi untuk Fitur */ #features-text { transition: max-height 0.5s ease-in-out, opacity 0.5s ease-in-out; } /* === Animasi Transisi Tema === */ /* Terapkan transisi dasar ke elemen utama. Ini akan membuat perubahan warna latar dan teks menjadi mulus. Gunakan durasi dan timing function yang konsisten. */ body, section, div, /* Terapkan ke div, tapi hati-hati jika ada div dengan transisi lain */ .navbar, .navbar-scrolled, #mobile-menu, .produk-card, .kategori-btn, #contact-form input, #contact-form textarea, .bg-white, .bg-gray-100, .bg-gray-50, .bg-gray-50 ul li, footer, h1, h2, h3, p, a, li, span, button { transition: background-color 0.35s ease-in-out, color 0.35s ease-in-out, border-color 0.35s ease-in-out; } /* --- Jaga & Gabungkan Transisi Spesifik --- */ /* Pastikan elemen yang sudah punya transisi (seperti hover, animasi) tetap berfungsi baik DAN mendapatkan transisi tema. */ .produk-card { /* Gabungkan transisi hover/animasi dengan transisi tema */ transition: transform 0.3s ease, opacity 0.4s ease, box-shadow 0.3s ease, background-color 0.35s ease-in-out, color 0.35s ease-in-out, border-color 0.35s ease-in-out; } .nav-link { /* Gabungkan transisi hover dengan transisi tema */ transition: color 0.3s ease, transform 0.3s ease, background-color 0.35s ease-in-out; } .nav-link:after { /* Jaga transisi garis bawah, JANGAN tambahkan transisi tema */ transition: width 0.3s ease; } #features-text { /* Gabungkan transisi expand/collapse dengan transisi tema */ transition: max-height 0.5s ease-in-out, opacity 0.5s ease-in-out, background-color 0.35s ease-in-out, color 0.35s ease-in-out; } #contact-form input, #contact-form textarea { /* Gabungkan transisi fokus dengan transisi tema */ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.35s ease-in-out, color 0.35s ease-in-out, border-color 0.35s ease-in-out; } #contact-form button { /* Gabungkan transisi hover tombol dengan transisi tema */ transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.35s ease-in-out, color 0.35s ease-in-out; } .kategori-btn { /* Gabungkan transisi hover/aktif dengan transisi tema */ transition: all 0.3s ease, background-color 0.35s ease-in-out, color 0.35s ease-in-out; } /* --- Kecualikan / Atasi Konflik --- */ /* Jangan terapkan transisi tema pada splash screen, hanya opacity/visibility */ #splash-screen { transition: opacity 0.5s ease-out, visibility 0.5s ease-out !important; } #splash-logo, #splash-screen i { transition: none !important; /* Hapus semua transisi */ } /* Saat kartu produk sedang beranimasi (pop-in/fade-out), nonaktifkan transisi tema untuk menghindari konflik. */ .produk-card.animate-pop-in, .produk-card.animate-fade-out { transition: none !important; } /* Jaga agar animasi float tidak terganggu */ section.flex > div:last-child > img { animation: float 4s ease-in-out infinite; transition: transform 0.3s ease; /* Hanya transform */ } /* Jaga agar animasi pulse tidak terganggu */ #whatsapp-button { animation: pulse 2.5s infinite cubic-bezier(0.66, 0, 0, 1); transition: background-color 0.3s ease, transform 0.3s ease; /* Jaga transisi hover */ } /* Untuk produk Nokos */ /* .produk-card[data-kategori="sosmed"]:nth-child(5) { position: relative; overflow: hidden; opacity: 0.7; pointer-events: none; filter: grayscale(50%); } .produk-card[data-kategori="sosmed"]:nth-child(5)::after { content: "CLOSE"; position: absolute; top: 0; right: 0; background-color: #ef4444; // Warna merah color: white; font-size: 10px; font-weight: bold; padding: 3px 8px; border-radius: 0 8px 0 8px; transform: rotate(15deg); transform-origin: bottom right; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } */