EbrahemHesham's picture
https://www.toukoum.fr/
9f0cabe verified
Raw
History Blame Contribute Delete
4.76 kB
/* Custom CSS for animations and effects not covered by Tailwind */
/* Smooth scrolling behavior */
html {
scroll-behavior: smooth;
}
/* Hero section animations */
.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 animations on scroll */
.section-title,
.section-subtitle {
animation: fadeInUp 0.6s ease-out forwards;
}
.section-subtitle {
animation-delay: 0.2s;
}
/* Project card stagger animations */
.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 section animations */
.about-content {
animation: fadeInLeft 0.8s ease-out forwards;
}
.about-image {
animation: fadeInRight 0.8s ease-out forwards;
}
/* Stat counter animations */
.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 */
.cta-box {
animation: fadeInScale 0.6s ease-out forwards;
}
/* Keyframe animations */
@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);
}
}
/* Custom hover effects for navigation links */
.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 transitions */
.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 fade effect */
.overlay {
opacity: 0;
pointer-events: none;
transition: opacity 0.3s ease;
}
.overlay.active {
opacity: 1;
pointer-events: auto;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #888;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #555;
}
/* Button hover effects */
.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%;
}
/* Custom transition utilities */
.transition-smooth {
transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
/* Loading animation */
.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 focus styles */
.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);
}
/* Custom animations for work page tabs */
.tab-content {
display: none;
opacity: 0;
transform: translateY(20px);
transition: all 0.3s ease;
}
.tab-content.active {
display: block;
opacity: 1;
transform: translateY(0);
}
/* Project detail modal enhancements */
.modal-backdrop {
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
}
/* Smooth parallax effect */
.parallax-bg {
will-change: transform;
transition: transform 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}