| |
|
|
| |
| html { |
| scroll-behavior: smooth; |
| } |
|
|
| |
| .hero-title, |
| .hero-subtitle, |
| .hero-cta, |
| .scroll-indicator { |
| animation: fadeInUp 0.8s ease-out forwards; |
| } |
|
|
| .hero-title { |
| animation-delay: 0.2s; |
| } |
|
|
| .hero-subtitle { |
| animation-delay: 0.4s; |
| } |
|
|
| .hero-cta { |
| animation-delay: 0.6s; |
| } |
|
|
| .scroll-indicator { |
| animation-delay: 0.8s; |
| } |
|
|
| |
| .section-title, |
| .section-subtitle { |
| animation: fadeInUp 0.6s ease-out forwards; |
| } |
|
|
| .section-subtitle { |
| animation-delay: 0.2s; |
| } |
|
|
| |
| .project-card:nth-child(1) { |
| animation: fadeInUp 0.6s ease-out 0.2s forwards; |
| } |
|
|
| .project-card:nth-child(2) { |
| animation: fadeInUp 0.6s ease-out 0.4s forwards; |
| } |
|
|
| .project-card:nth-child(3) { |
| animation: fadeInUp 0.6s ease-out 0.6s forwards; |
| } |
|
|
| |
| .about-content { |
| animation: fadeInLeft 0.8s ease-out forwards; |
| } |
|
|
| .about-image { |
| animation: fadeInRight 0.8s ease-out forwards; |
| } |
|
|
| |
| .stat-item:nth-child(1) { |
| animation: fadeInUp 0.5s ease-out 0.1s forwards; |
| } |
|
|
| .stat-item:nth-child(2) { |
| animation: fadeInUp 0.5s ease-out 0.2s forwards; |
| } |
|
|
| .stat-item:nth-child(3) { |
| animation: fadeInUp 0.5s ease-out 0.3s forwards; |
| } |
|
|
| .stat-item:nth-child(4) { |
| animation: fadeInUp 0.5s ease-out 0.4s forwards; |
| } |
|
|
| |
| .cta-box { |
| animation: fadeInScale 0.6s ease-out forwards; |
| } |
|
|
| |
| @keyframes fadeInUp { |
| from { |
| opacity: 0; |
| transform: translateY(30px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| @keyframes fadeInLeft { |
| from { |
| opacity: 0; |
| transform: translateX(-30px); |
| } |
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| @keyframes fadeInRight { |
| from { |
| opacity: 0; |
| transform: translateX(30px); |
| } |
| to { |
| opacity: 1; |
| transform: translateX(0); |
| } |
| } |
|
|
| @keyframes fadeInScale { |
| from { |
| opacity: 0; |
| transform: scale(0.95); |
| } |
| to { |
| opacity: 1; |
| transform: scale(1); |
| } |
| } |
|
|
| |
| .nav-link { |
| position: relative; |
| transition: color 0.3s ease; |
| } |
|
|
| .nav-link::after { |
| content: ''; |
| position: absolute; |
| width: 0; |
| height: 1px; |
| bottom: -2px; |
| left: 0; |
| background-color: currentColor; |
| transition: width 0.3s ease; |
| } |
|
|
| .nav-link:hover::after { |
| width: 100%; |
| } |
|
|
| |
| .mobile-menu { |
| transform: translateY(-100%); |
| transition: transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); |
| } |
|
|
| .mobile-menu.active { |
| transform: translateY(0); |
| } |
|
|
| |
| .overlay { |
| opacity: 0; |
| pointer-events: none; |
| transition: opacity 0.3s ease; |
| } |
|
|
| .overlay.active { |
| opacity: 1; |
| pointer-events: auto; |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 8px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: #f1f1f1; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: #888; |
| border-radius: 4px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: #555; |
| } |
|
|
| |
| .btn-primary { |
| position: relative; |
| overflow: hidden; |
| z-index: 1; |
| } |
|
|
| .btn-primary::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 0; |
| height: 100%; |
| background: rgba(255, 255, 255, 0.1); |
| transition: width 0.3s ease; |
| z-index: -1; |
| } |
|
|
| .btn-primary:hover::before { |
| width: 100%; |
| } |
|
|
| |
| .transition-smooth { |
| transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); |
| } |
|
|
| |
| .loading-dots { |
| display: inline-block; |
| } |
|
|
| .loading-dots::after { |
| content: '...'; |
| animation: dots 1.5s steps(4, end) infinite; |
| } |
|
|
| @keyframes dots { |
| 0%, 20% { content: '.'; } |
| 40% { content: '..'; } |
| 60%, 100% { content: '...'; } |
| } |
|
|
| |
| .form-input { |
| transition: all 0.3s ease; |
| } |
|
|
| .form-input:focus { |
| transform: translateY(-2px); |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); |
| } |
|
|
| |
| .tab-content { |
| display: none; |
| opacity: 0; |
| transform: translateY(20px); |
| transition: all 0.3s ease; |
| } |
|
|
| .tab-content.active { |
| display: block; |
| opacity: 1; |
| transform: translateY(0); |
| } |
|
|
| |
| .modal-backdrop { |
| backdrop-filter: blur(8px); |
| -webkit-backdrop-filter: blur(8px); |
| } |
|
|
| |
| .parallax-bg { |
| will-change: transform; |
| transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94); |
| } |