* { margin: 0; padding: 0; box-sizing: border-box; } :root { /* Enhanced color system */ --background: #ffffff; --background-light: #f8fafc; --background-lighter: #f1f5f9; --surface: rgba(255, 255, 255, 0.85); --surface-hover: rgba(255, 255, 255, 0.95); --text: #1f2937; --text-muted: #6b7280; --text-light: #94a3b8; --accent-dark: #1f2937; --accent-mid: #374151; --accent-light: #9ca3af; --border: rgba(55, 65, 81, 0.12); --border-hover: rgba(55, 65, 81, 0.2); --success: #059669; --error: #dc2626; --warning: #fbbf24; --whatsapp: #25D366; --html: #E34F26; --css: #1572B6; --js: #F7DF1E; --firebase: #FFCA28; /* Blur and effects */ --blur-strength: 10px; --blur-light: 8px; --blur-heavy: 13px; /* Transitions */ --transition-speed: 0.3s cubic-bezier(0.4, 0, 0.2, 1); --transition-bounce: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); /* Shadows */ --shadow: 0 8px 32px rgba(31, 41, 55, 0.06); --shadow-hover: 0 16px 48px rgba(31, 41, 55, 0.1); --shadow-intense: 0 24px 64px rgba(31, 41, 55, 0.15); /* Spacing */ --radius-sm: 0.75rem; --radius-md: 1rem; --radius-lg: 1.25rem; --radius-xl: 1.5rem; /* Z-index layers */ --z-sticky: 999; --z-nav: 1000; --z-modal: 2000; } body { font-family: 'Quicksand', sans-serif; background: var(--background); color: var(--text); min-height: 100vh; overflow-x: hidden; line-height: 1.6; position: relative; padding-bottom: 5rem; } body::before { content: ''; position: fixed; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle at 25% 75%, rgba(31, 41, 55, 0.01) 0%, transparent 40%), radial-gradient(circle at 75% 25%, rgba(31, 41, 55, 0.01) 0%, transparent 40%); animation: floatBackground 60s ease-in-out infinite; pointer-events: none; z-index: -1; } .container { max-width: 1200px; margin: 0 auto; padding: 0 1.25rem; } /* Top Header Navigation */ .top-header { position: fixed; top: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border-bottom: 1px solid var(--border); padding: 1rem 0; z-index: var(--z-nav); box-shadow: 0 4px 20px rgba(31, 41, 55, 0.05); } .header-container { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 1.25rem; } .logo { font-size: 1.5rem; font-weight: 700; color: var(--accent-dark); text-decoration: none; display: flex; align-items: center; gap: 0.5rem; } .logo img { width: 40px; height: 40px; border-radius: 50%; } .nav-items { display: flex; gap: 1.5rem; align-items: center; } .nav-item { font-size: 1rem; font-weight: 500; color: var(--text-muted); text-decoration: none; transition: all var(--transition-speed) ease; cursor: pointer; } .nav-item:hover { color: var(--accent-dark); transform: translateY(-2px); } .nav-item.active { color: var(--accent-dark); font-weight: 700; border-bottom: 2px solid var(--accent-light); } /* Mobile Bottom Navigation */ .mobile-bottom-nav { display: block; position: fixed; bottom: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border-top: 1px solid var(--border); padding: 0.75rem 0 max(0.75rem, env(safe-area-inset-bottom)); z-index: var(--z-nav); box-shadow: 0 -8px 40px rgba(31, 41, 55, 0.08); animation: slideUpIn 0.6s var(--transition-bounce); } @media (min-width: 900px) { .mobile-bottom-nav { display: block !important; /* Override any previous rules */ } } .mobile-bottom-nav::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(90deg, transparent, var(--border), transparent); animation: shimmerLine 3s ease-in-out infinite; } .mobile-nav-container { display: flex; justify-content: space-around; align-items: center; max-width: 500px; margin: 0 auto; padding: 0 0.5rem; /* Dikurangi padding untuk menampung 4 item */ position: relative; } .mobile-nav-item { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; padding: 0.5rem; border-radius: var(--radius-md); transition: all var(--transition-speed) ease; cursor: pointer; position: relative; overflow: hidden; min-width: 55px; /* Dikurangi sedikit untuk menampung 4 item */ backdrop-filter: blur(var(--blur-light)); -webkit-backdrop-filter: blur(var(--blur-light)); } .mobile-nav-item::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at center, rgba(31, 41, 55, 0.06) 0%, transparent 70%); opacity: 0; transition: all var(--transition-speed) ease; z-index: -1; border-radius: var(--radius-md); } .mobile-nav-item::after { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; background: rgba(31, 41, 55, 0.02); border-radius: 50%; transition: all var(--transition-speed) ease; transform: translate(-50%, -50%); z-index: -1; } .mobile-nav-item:hover::before, .mobile-nav-item.active::before { opacity: 1; } .mobile-nav-item:hover::after, .mobile-nav-item.active::after { width: 100px; height: 100px; } .mobile-nav-item:active { transform: scale(0.95); } .mobile-nav-icon { width: 22px; height: 22px; stroke: var(--text-muted); transition: all var(--transition-speed) ease; filter: drop-shadow(0 1px 2px rgba(31, 41, 55, 0.1)); stroke-width: 2; fill: none; } .mobile-nav-item:hover .mobile-nav-icon, .mobile-nav-item.active .mobile-nav-icon { stroke: var(--accent-dark); transform: translateY(-2px) scale(1.1); filter: drop-shadow(0 4px 12px rgba(31, 41, 55, 0.2)); stroke-width: 2.5; } .mobile-nav-text { font-size: 0.65rem; /* Dikurangi sedikit untuk menyesuaikan ruang */ font-weight: 600; color: var(--text-muted); transition: all var(--transition-speed) ease; text-align: center; letter-spacing: -0.01em; } .mobile-nav-item:hover .mobile-nav-text, .mobile-nav-item.active .mobile-nav-text { color: var(--accent-dark); font-weight: 700; transform: translateY(-1px); } /* Top Header Navigation - Hidden on Mobile */ .top-header { position: fixed; top: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border-bottom: 1px solid var(--border); padding: 1rem 0; z-index: var(--z-nav); box-shadow: 0 4px 20px rgba(31, 41, 55, 0.05); } .header-container { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 1.25rem; } .logo { font-size: 1.5rem; font-weight: 700; color: var(--accent-dark); text-decoration: none; display: flex; align-items: center; gap: 0.5rem; } .logo img { width: 40px; height: 40px; border-radius: 50%; } .nav-items { display: flex; gap: 1.5rem; align-items: center; } .nav-item { font-size: 1rem; font-weight: 500; color: var(--text-muted); text-decoration: none; transition: all var(--transition-speed) ease; cursor: pointer; } .nav-item:hover { color: var(--accent-dark); transform: translateY(-2px); } .nav-item.active { color: var(--accent-dark); font-weight: 700; border-bottom: 2px solid var(--accent-light); } /* Mobile Bottom Navigation - Hidden on Desktop */ .mobile-bottom-nav { display: block; position: fixed; bottom: 0; left: 0; right: 0; background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border-top: 1px solid var(--border); padding: 0.75rem 0 max(0.75rem, env(safe-area-inset-bottom)); z-index: var(--z-nav); box-shadow: 0 -8px 40px rgba(31, 41, 55, 0.08); animation: slideUpIn 0.6s var(--transition-bounce); } /* Media Queries for Responsive Visibility */ @media (max-width: 768px) { .top-header { display: none; /* Sembunyikan top header di mode mobile */ } } @media (min-width: 769px) { .mobile-bottom-nav { display: none; /* Sembunyikan bottom navigation di mode desktop */ } } .hero { text-align: center; padding: 6rem 0; background: rgba(55, 65, 81, 0.02); backdrop-filter: blur(var(--blur-light)); -webkit-backdrop-filter: blur(var(--blur-light)); border-radius: var(--radius-xl); margin: 2rem 0 3rem 0; position: relative; overflow: hidden; animation: slideInUp 0.8s ease; box-shadow: var(--shadow); } .hero h1 { font-size: clamp(2.4rem, 5vw, 3.5rem); font-weight: 800; margin-bottom: 1rem; margin-left:0.4rem; margin-right: 0.4rem; color: var(--accent-dark); position: relative; z-index: 1; letter-spacing: -0.02em; animation: textFadeIn 1s ease 0.3s both; } .hero p { font-size: clamp(1rem, 2.5vw, 1.2rem); font-weight: 500; color: var(--text-light); max-width: 600px; margin: 0 auto 2rem auto; position: relative; z-index: 1; animation: textFadeIn 1s ease 0.6s both; } .cta-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.8rem 1.5rem; background: var(--whatsapp); /* #25D366 */ border: none; border-radius: 20px 8px 20px 8px; color: white; font-family: 'Quicksand', sans-serif; font-weight: 700; font-size: 1rem; cursor: pointer; transition: all var(--transition-speed) ease; position: relative; overflow: hidden; text-decoration: none; min-height: 40px; backdrop-filter: blur(var(--blur-light)); box-shadow: 0 8px 20px rgba(37, 211, 102, 0.5); /* Efek hover dengan intensitas lebih tinggi */ margin-bottom: 2rem; z-index: 10; } .cta-button:hover { transform: translateY(-3px) scale(1.03); box-shadow: 0 18px 29px rgba(37, 211, 102, 0.5); /* Efek hover dengan intensitas lebih tinggi */ background: #20bd57; } .cta-button:active { transform: translateY(-1px) scale(0.98); } .cta-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.6s ease; } .cta-button:hover::before { left: 100%; } .tech-tags { display: flex; flex-wrap: wrap; gap: 0.75rem; margin: 0.5rem 0 0.5rem 0; align-items: center; } .tech-tag { padding: 0.4rem 1.25rem; border-radius: var(--radius-md); font-weight: 800; font-size: 0.85rem; color: white; display: flex; align-items: center; gap: 0.4rem; box-shadow: var(--shadow); transition: all var(--transition-speed) ease; } .tech-tag:hover { transform: translateY(-2px) scale(1.02); box-shadow: var(--shadow-hover);transition: all var(--transition-speed) ease; } .tech-tag:hover { transform: translateY(-2px) scale(1.02); } .tech-tag.html { background: var(--html); box-shadow: 0 8px 20px rgba(227, 79, 38, 0.5); } .tech-tag.html:hover { box-shadow: 0 15px 25px rgba(227, 79, 38, 0.5); /* Efek hover dengan intensitas lebih tinggi */ } .tech-tag.css { background: var(--css); /* #1572B6 */ box-shadow: 0 8px 20px rgba(21, 114, 182, 0.5); /* Bayangan dengan warna biru yang sesuai */ } .tech-tag.css:hover { box-shadow: 0 15px 25px rgba(21, 114, 182, 0.5); /* Efek hover dengan intensitas lebih tinggi */ } .tech-tag.js { background: var(--js); /* #F7DF1E */ color: var(--text); box-shadow: 0 8px 20px rgba(247, 223, 30, 0.5); /* Bayangan dengan warna kuning yang sesuai */ } .tech-tag.js:hover { box-shadow: 0 15px 25px rgba(247, 223, 30, 0.5); /* Efek hover dengan intensitas lebih tinggi */ } .tech-tag.firebase { background: var(--firebase); /* #FFCA28 */ color: var(--text); box-shadow: 0 8px 20px rgba(255, 202, 40, 0.5);/* Bayangan dengan warna kuning-oranye yang sesuai */ } .tech-tag.firebase:hover { box-shadow: 0 15px 25px rgba(255, 202, 40, 0.5); /* Efek hover dengan intensitas lebih tinggi */ } .card { background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 2rem; transition: all var(--transition-speed) ease; position: relative; overflow: hidden; box-shadow: var(--shadow); margin-bottom: 2rem; } .card:hover { transform: translateY(-3px); box-shadow: var(--shadow-hover); border-color: var(--border-hover); background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(var(--blur-heavy)); -webkit-backdrop-filter: blur(var(--blur-heavy)); } .card h2 { color: var(--accent-dark); margin-bottom: 1.5rem; font-size: 1.8rem; font-weight: 700; text-align: center; } .card ul { list-style-type: disc; margin-left: 1.5rem; margin-bottom: 1.5rem; } .card li { margin-bottom: 0.75rem; font-size: 1.1rem; line-height: 1.5; } .gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; padding: 2rem 0; } .gallery-item { background: rgba(255, 255, 255, 0.9); backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; transition: all var(--transition-speed) ease; cursor: pointer; position: relative; height: 100%; display: flex; flex-direction: column; box-shadow: var(--shadow); } .gallery-item:hover { transform: translateY(-6px) scale(1.02); box-shadow: var(--shadow-intense); border-color: var(--border-hover); background: rgba(255, 255, 255, 0.95); } .gallery-item img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: contain; background: #fff; transition: all var(--transition-speed) ease; } .gallery-item:hover img { transform: scale(1.05); filter: brightness(1.05) saturate(1.1); } .gallery-caption { padding: 1rem; text-align: center; } .gallery-caption h3 { font-size: 1.1rem; font-weight: 700; color: var(--accent-dark); margin-bottom: 0.5rem; } .gallery-caption p { font-size: 0.9rem; color: var(--text-muted); } .lightbox { display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(31, 41, 55, 0.9); backdrop-filter: blur(var(--blur-light)); -webkit-backdrop-filter: blur(var(--blur-light)); z-index: var(--z-modal); overflow: auto; padding: 2rem 1.25rem; animation: fadeIn 0.3s ease; justify-content: center; align-items: center; opacity: 0; } .lightbox.active { display: flex; opacity: 1; } .lightbox.closing { animation: fadeOut 0.3s ease forwards; opacity: 0; } .lightbox-content { background: transparent; border: none; border-radius: var(--radius-xl); max-width: 100vw; max-height: 100vh; margin: 2rem auto; position: relative; animation: scaleIn 0.3s ease; display: flex; justify-content: center; align-items: center; } .lightbox img { max-width: 100%; max-height: 85vh; width: auto; height: auto; object-fit: contain; border-radius: var(--radius-md); border: 2px solid rgba(255, 255, 255, 0.2); box-shadow: var(--shadow-intense); } .lightbox-nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(var(--blur-light)); border: 1px solid rgba(255, 255, 255, 0.3); color: white; font-size: 2rem; cursor: pointer; transition: all var(--transition-speed) ease; width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; z-index: calc(var(--z-modal) + 1); } .lightbox-nav:hover { background: rgba(0, 0, 0, 0.9); transform: translateY(-50%) scale(1.1); box-shadow: var(--shadow-hover); } .lightbox-prev { left: 1rem; } .lightbox-next { right: 1rem; } .close-lightbox { position: fixed; top: 1rem; right: 1rem; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(var(--blur-light)); border: 1px solid rgba(255, 255, 255, 0.3); color: white; font-size: 1.5rem; cursor: pointer; transition: all var(--transition-speed) ease; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow); z-index: calc(var(--z-modal) + 2); } .close-lightbox:hover { background: rgba(0, 0, 0, 0.9); transform: rotate(90deg) scale(1.1); box-shadow: var(--shadow-hover); } @media (max-width: 768px) { .gallery { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; } .lightbox-prev { left: 0.5rem; } .lightbox-next { right: 0.5rem; } } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(20px); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slideInUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } @keyframes scaleIn { from { transform: scale(0.95); opacity: 0; } to { transform: scale(1); opacity: 1; } } @keyframes floatBackground { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 33% { transform: translate(15px, -10px) rotate(1deg); } 66% { transform: translate(-10px, 15px) rotate(-1deg); } } @keyframes shimmerLine { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } @keyframes textFadeIn { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .fade-in { animation: fadeIn 0.6s ease-out; } /* SHAPES BACKGROUND - PASTIKAN ADA DI PALING BELAKANG */ .scattered-shapes { position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 0; /* PALING BELAKANG */ pointer-events: none; user-select: none; overflow: hidden; } .scattered-shape { position: absolute; opacity: 0.13; filter: blur(1px); pointer-events: none; z-index: 0; animation-iteration-count: infinite; animation-timing-function: ease-in-out; /* smooth start for all */ animation-fill-mode: both; } /* CIRCLE */ .scattered-shape.circle1 { width: 80px; height: 80px; border-radius: 50%; background: var(--accent-mid); top: 6%; left: 12%; animation-name: floatY1; animation-duration: 13s; } .scattered-shape.circle2 { width: 44px; height: 44px; border-radius: 50%; background: var(--success); top: 32%; left: 83%; animation-name: floatX2; animation-duration: 11s; } .scattered-shape.circle3 { width: 56px; height: 56px; border-radius: 50%; background: var(--warning); top: 78%; left: 25%; animation-name: floatXY3; animation-duration: 17s; } .scattered-shape.circle4 { width: 26px; height: 26px; border-radius: 50%; background: var(--accent-light); top: 60%; left: 65%; animation-name: floatY2; animation-duration: 12.2s; } /* SQUARE */ .scattered-shape.square1 { width: 38px; height: 38px; border-radius: var(--radius-md); background: var(--background-lighter); border: 2px solid var(--accent-light); top: 18%; left: 75%; animation-name: floatX2; animation-duration: 10.5s; } .scattered-shape.square2 { width: 62px; height: 62px; border-radius: var(--radius-xl); background: var(--accent-light); top: 68%; left: 77%; animation-name: floatXY3; animation-duration: 15s; } /* TRIANGLE */ .scattered-shape.triangle1 { width: 0; height: 0; border-left: 28px solid transparent; border-right: 28px solid transparent; border-bottom: 50px solid var(--warning); top: 54%; left: 15%; animation-name: floatY1; animation-duration: 16s; } .scattered-shape.triangle2 { width: 0; height: 0; border-left: 18px solid transparent; border-right: 18px solid transparent; border-bottom: 34px solid var(--accent-mid); top: 38%; left: 56%; animation-name: floatX2; animation-duration: 13.1s; } /* DIAMOND */ .scattered-shape.diamond1 { width: 44px; height: 44px; background: var(--success); transform: rotate(45deg); border-radius: var(--radius-sm); top: 85%; left: 41%; animation-name: floatXY3; animation-duration: 19s; } .scattered-shape.diamond2 { width: 28px; height: 28px; background: var(--accent-dark); transform: rotate(45deg); border-radius: var(--radius-sm); top: 37%; left: 17%; animation-name: floatY1; animation-duration: 11.3s; } /* KEYFRAMES ANIMASI */ @keyframes floatY1 { 0%,100% { transform: translateY(0) scale(1);} 50% { transform: translateY(-28px) scale(1.12);} } @keyframes floatY2 { 0%,100% { transform: translateY(0) scale(1);} 40% { transform: translateY(19px) scale(1.08);} 80% { transform: translateY(-12px) scale(0.98);} } @keyframes floatX2 { 0%,100% { transform: translateX(0) scale(1);} 50% { transform: translateX(-34px) scale(1.09);} } @keyframes floatXY3 { 0%,100% { transform: translate(0,0) scale(1);} 33% { transform: translate(-19px, -17px) scale(1.11);} 66% { transform: translate(14px, 11px) scale(0.97);} } /* Pricing Section Styling */ .pricing-section { text-align: center; margin-bottom: 3.5rem; padding: 2.5rem 1rem; /* Lebih banyak ruang di dalam kartu */ background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(var(--blur-light)); -webkit-backdrop-filter: blur(var(--blur-light)); } .pricing-section h2 { color: var(--accent-dark); margin-bottom: 1.25rem; font-size: clamp(2rem, 5vw, 2.5rem); /* Tipografi lebih berani */ font-weight: 800; /* Berat font lebih tebal untuk hierarchy */ letter-spacing: -0.02em; } .pricing-subtitle { font-size: clamp(1rem, 2.5vw, 1.2rem); font-weight: 500; color: var(--text-light); max-width: 700px; /* Lebih lebar untuk breathing room */ margin: 0 auto 2.5rem auto; /* Lebih banyak ruang di bawah */ } /* Pricing Cards Container */ .pricing-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); /* Lebar minimum disesuaikan untuk 3 kartu */ gap: 2.5rem; /* Lebih banyak ruang antar kartu */ padding: 1.5rem 0; } /* Individual Pricing Card */ .pricing-card { background: rgba(255, 255, 255, 0.75); /* Efek glass yang lebih transparan */ backdrop-filter: blur(var(--blur-strength)); -webkit-backdrop-filter: blur(var(--blur-strength)); border: 1px solid var(--border); border-radius: var(--radius-xl); /* Sudut lebih bulat */ padding: 2.5rem 2rem; /* Lebih banyak ruang internal */ transition: all var(--transition-speed) ease; position: relative; overflow: hidden; box-shadow: var(--shadow); text-align: center; transform: translateY(0); } .pricing-card:hover { transform: translateY(-5px); /* Efek hover lebih dramatis */ box-shadow: var(--shadow-intense); /* Bayangan lebih kuat saat hover */ border-color: var(--border-hover); background: rgba(255, 255, 255, 0.88); backdrop-filter: blur(var(--blur-heavy)); -webkit-backdrop-filter: blur(var(--blur-heavy)); } .pricing-card.highlighted { border: 2px solid var(--accent-light); /* Aksen untuk kartu yang disorot */ background: linear-gradient(145deg, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.7)); /* Gradien ringan */ transform: scale(1.02); /* Sedikit lebih besar untuk menonjol */ box-shadow: var(--shadow-hover); } .pricing-card.highlighted:hover { transform: scale(1.03) translateY(-5px); box-shadow: var(--shadow-intense); } .pricing-card-header { display: flex; align-items: center; justify-content: center; gap: 0.75rem; margin-bottom: 1.5rem; position: relative; } .pricing-icon { width: 28px; height: 28px; stroke: var(--accent-mid); stroke-width: 2; filter: drop-shadow(0 2px 5px rgba(55, 65, 81, 0.2)); transition: all var(--transition-speed) ease; } .pricing-card:hover .pricing-icon { transform: scale(1.1); stroke: var(--accent-dark); filter: drop-shadow(0 4px 10px rgba(55, 65, 81, 0.3)); } .pricing-card h3 { color: var(--accent-dark); font-size: 1.6rem; font-weight: 700; margin: 0; } .pricing-card .price { font-size: 2.2rem; /* Lebih besar untuk menonjol */ font-weight: 800; color: var(--accent-dark); /* Warna lebih gelap untuk kontras */ margin-bottom: 1.75rem; position: relative; display: inline-block; } .pricing-card .price::after { content: ''; position: absolute; bottom: -0.5rem; left: 50%; transform: translateX(-50%); width: 50px; height: 3px; background: linear-gradient(90deg, transparent, var(--accent-light), transparent); /* Aksen garis bawah */ opacity: 0.6; } .pricing-card ul { list-style-type: none; /* Menghapus bullet default */ margin: 0 0 2rem 0; padding: 0; text-align: left; } .pricing-card li { margin-bottom: 0.85rem; font-size: 1.1rem; line-height: 1.6; color: var(--text-muted); position: relative; padding-left: 1.5rem; } .pricing-card li::before { content: '✓'; /* Ikon centang sebagai pengganti bullet */ position: absolute; left: 0; color: var(--success); font-weight: 700; } .pricing-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; padding: 0.9rem 2rem; /* Lebih besar untuk tombol yang menonjol */ background: var(--whatsapp); border: none; border-radius: 24px 10px 24px 10px; /* Sudut asimetris yang lebih menarik */ color: white; font-family: 'Quicksand', sans-serif; font-weight: 700; font-size: 1.05rem; cursor: pointer; transition: all var(--transition-speed) ease; position: relative; overflow: hidden; text-decoration: none; min-height: 45px; backdrop-filter: blur(var(--blur-light)); box-shadow: 0 10px 25px rgba(37, 211, 102, 0.5); /* Bayangan lebih dramatis */ margin-bottom: 0.5rem; } .pricing-button:hover { transform: translateY(-4px) scale(1.04); /* Efek hover lebih dramatis */ box-shadow: 0 20px 35px rgba(37, 211, 102, 0.55); background: #20bd57; } .pricing-button:active { transform: translateY(-2px) scale(0.98); } .pricing-button::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.25), transparent); transition: left 0.6s ease; } .pricing-button:hover::before { left: 100%; } /* Responsive Design for Mobile */ @media (max-width: 900px) { .pricing-cards { grid-template-columns: 1fr; gap: 2rem; } .pricing-card { padding: 2rem 1.5rem; } .pricing-card.highlighted { transform: scale(1); } .pricing-card.highlighted:hover { transform: scale(1.02) translateY(-5px); } } .accordion { margin-top: 1rem; /* Jarak atas untuk accordion */ border-radius: var(--radius-md); /* Sudut bulat */ box-shadow: var(--shadow); /* Bayangan lembut */ overflow: hidden; /* Menghindari overflow saat dibuka */ } .accordion-header { background: var(--background-light); /* Warna latar belakang header */ padding: 1rem; /* Ruang dalam */ cursor: pointer; /* Kursor pointer untuk interaksi */ font-family: 'Quicksand', sans-serif; /* Font sesuai desain */ font-weight: 600; /* Berat font lebih tebal */ transition: background 1s ease, transform 1s ease; /* Transisi halus untuk background dan transform */ } .accordion-header:hover { background: var(--background-lighter); /* Warna saat hover */ transform: scale(1.02); /* Efek zoom saat hover */ } .accordion-content { padding: 1rem; /* Ruang dalam untuk konten */ background: var(--background); /* Warna latar belakang konten */ transition: max-height 1s ease, opacity 1s ease; /* Transisi halus untuk tinggi dan opacity */ max-height: 0; /* Tinggi maksimum saat ditutup */ opacity: 0; /* Opacity saat ditutup */ overflow: hidden; /* Menghindari overflow saat ditutup */ } .accordion[open] .accordion-content { max-height: 500px; /* Tinggi maksimum saat dibuka */ opacity: 1; /* Opacity saat dibuka */ overflow-y: auto; /* Scroll jika konten lebih panjang */ } .accordion-content ul { list-style-type: none; /* Menghapus bullet default */ padding: 0; /* Menghapus padding */ margin: 0; /* Menghapus margin */ }