/* Custom CSS Variables for Theme Management */ :root { --primary-500: #8b5cf6; --secondary-500: #14b8a6; --bg-primary: #111827; --bg-secondary: #1f2937; --text-primary: #ffffff; --text-secondary: #9ca3af; } :root.light-mode { --bg-primary: #f9fafb; --bg-secondary: #ffffff; --text-primary: #111827; --text-secondary: #6b7280; } /* Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background-color: var(--bg-primary); color: var(--text-primary); transition: background-color 0.3s ease, color 0.3s ease; overflow-x: hidden; } /* Custom Scrollbar */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: var(--bg-secondary); } ::-webkit-scrollbar-thumb { background: var(--primary-500); border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: var(--secondary-500); } /* Keyframe Animations */ @keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(180deg); } } @keyframes glow { 0% { filter: drop-shadow(0 0 10px var(--primary-500)); } 100% { filter: drop-shadow(0 0 20px var(--secondary-500)); } } @keyframes slideUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } /* Animation Classes */ .animate-float { animation: float 6s ease-in-out infinite; } .animate-glow { animation: glow 2s ease-in-out infinite alternate; } .animate-pulse-custom { animation: pulse 0.5s ease-in-out; } /* Glassmorphism Effect */ .glass { background: rgba(31, 41, 55, 0.4); backdrop-filter: blur(10px); border: 1px solid rgba(139, 92, 246, 0.2); } .light-mode .glass { background: rgba(255, 255, 255, 0.6); border: 1px solid rgba(139, 92, 246, 0.1); } /* Gradient Overlay */ .gradient-overlay { position: absolute; inset: 0; background: linear-gradient(135deg, rgba(139, 92, 246, 0.1) 0%, rgba(20, 184, 166, 0.1) 100%); } /* Hover Effects */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-10px) rotateX(5deg); box-shadow: 0 20px 40px rgba(139, 92, 246, 0.2); } /* Custom Cursor */ .custom-cursor { width: 20px; height: 20px; border: 2px solid var(--primary-500); border-radius: 50%; position: fixed; pointer-events: none; z-index: 9999; transition: transform 0.1s ease; mix-blend-mode: difference; } /* Section Animations */ .section-hidden { opacity: 0; transform: translateY(50px); transition: opacity 0.8s ease, transform 0.8s ease; } .section-visible { opacity: 1; transform: translateY(0); } /* Form Styles */ input, textarea { transition: border-color 0.3s ease, box-shadow 0.3s ease; } input:focus, textarea:focus { box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.1); } /* Button Styles */ .btn-primary { background: linear-gradient(135deg, var(--primary-500), var(--secondary-500)); border: none; color: white; padding: 12px 32px; border-radius: 50px; font-weight: 600; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(139, 92, 246, 0.3); } /* Responsive Typography */ @media (max-width: 768px) { h1 { font-size: 2.5rem !important; } h2 { font-size: 2rem !important; } } /* Light Mode Specific Styles */ .light-mode { background-color: #f9fafb; color: #111827; } .light-mode .bg-gray-800 { background-color: #ffffff !important; } .light-mode .bg-gray-900 { background-color: #f3f4f6 !important; } .light-mode .text-gray-400 { color: #4b5563 !important; } .light-mode .border-gray-700 { border-color: #e5e7eb !important; } /* Contact Form Success Message */ .success-message { background: linear-gradient(135deg, #10b981, #14b8a6); color: white; padding: 12px 24px; border-radius: 8px; margin-top: 16px; opacity: 0; transform: translateY(-10px); transition: opacity 0.3s ease, transform 0.3s ease; } .success-message.show { opacity: 1; transform: translateY(0); } /* Portfolio Grid Animation */ .portfolio-item-enter { opacity: 0; transform: scale(0.9) rotateY(10deg); } .portfolio-item-enter-active { opacity: 1; transform: scale(1) rotateY(0); transition: opacity 0.6s ease, transform 0.6s ease; }