/* Reset dan Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } body { background-color: #f8f9fa; color: #333; line-height: 1.6; } /* Navigation Styles */ .mobile-nav { position: fixed; bottom: 0; left: 0; right: 0; background: white; box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); z-index: 1000; padding: 12px 0 8px; display: flex; justify-content: space-around; align-items: center; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .nav-item { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; text-decoration: none; color: #666; font-size: 10px; padding: 8px 8px 6px; border-radius: 12px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); flex: 1; max-width: 25%; overflow: hidden; } .nav-item.active { color: #e84393; } .nav-item.active::before { content: ''; position: absolute; top: -8px; width: 40px; height: 3px; background-color: #e84393; border-radius: 3px; animation: navIndicator 0.3s ease-out forwards; } @keyframes navIndicator { from { transform: scaleX(0); opacity: 0; } to { transform: scaleX(1); opacity: 1; } } .nav-item:hover { background-color: rgba(67, 97, 238, 0.08); } .nav-icon { font-size: 22px; margin-bottom: 4px; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .nav-item.active .nav-icon { transform: translateY(-4px); } .nav-label { font-weight: 500; font-size: 10px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); opacity: 0.9; } .nav-item.active .nav-label { font-weight: 600; opacity: 1; transform: translateY(1px); } /* Floating Action Button */ .fab { position: absolute; top: -28px; left: 50%; transform: translateX(-50%); width: 56px; height: 56px; background: linear-gradient(135deg, #e84393, #ff6b81); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; box-shadow: 0 4px 12px rgba(67, 97, 238, 0.3); font-size: 24px; z-index: 1001; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); cursor: pointer; } .fab:hover { transform: translateX(-50%) translateY(-2px); box-shadow: 0 6px 16px rgba(67, 97, 238, 0.4); } .fab:active { transform: translateX(-50%) translateY(0); box-shadow: 0 4px 8px rgba(67, 97, 238, 0.4); } /* Ripple Effect */ .ripple { position: absolute; border-radius: 50%; background-color: rgba(255, 255, 255, 0.7); transform: scale(0); animation: ripple 0.6s linear; pointer-events: none; } @keyframes ripple { to { transform: scale(4); opacity: 0; } } /* Content Area */ .content { padding: 20px; padding-bottom: 80px; /* Untuk memberi ruang bagi bottom nav */ min-height: 100vh; } /* Responsive Adjustments */ @media (min-width: 768px) { .mobile-nav { max-width: 400px; left: 50%; transform: translateX(-50%); border-radius: 24px 24px 0 0; bottom: 20px; padding: 16px 0 12px; } .fab { top: -32px; width: 64px; height: 64px; font-size: 28px; } } /* Micro-interactions for better UX */ .nav-item:active { transform: scale(0.95); } .nav-item:active .nav-icon { transform: scale(0.9); } /* Bounce animation for FAB when page loads */ @keyframes bounceIn { 0% { transform: translateX(-50%) scale(0.8); opacity: 0; } 50% { transform: translateX(-50%) scale(1.1); } 100% { transform: translateX(-50%) scale(1); opacity: 1; } } .fab { animation: bounceIn 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards; }