/* Font Face Declarations */
@font-face {
    font-family: 'FiraCode';
    src: url('https://files.basicsites.ddns.net/generalAssets/fonts/FiraCode/FiraCodeNerdFontMono-Regular.ttf') format('truetype');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'FiraCode';
    src: url('https://files.basicsites.ddns.net/generalAssets/fonts/FiraCode/FiraCodeNerdFontMono-Bold.ttf') format('truetype');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* Keyframe Animations */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.9);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes scaleX {
    from {
        transform: scaleX(0);
    }
    to {
        transform: scaleX(1);
    }
}

@keyframes beamPulse {
    0% {
        left: -35%;
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    55% {
        left: 110%;
        opacity: 0.4;
    }
    100% {
        opacity: 0;
    }
}

/* Animation Classes */
.animate-fade-in-down {
    animation: fadeInDown 0.6s ease-out;
}

.animate-fade-in-up {
    animation: fadeInUp 0.6s ease-out;
}

.animate-scale-in {
    animation: scaleIn 0.8s ease-out;
}

.animate-scale-x {
    animation: scaleX 0.8s ease-out;
}

.animate-beam-pulse {
    animation: beamPulse 4.5s ease-out infinite;
}

/* Animation Delays */
.delay-200 {
    animation-delay: 0.2s;
    opacity: 0;
    animation-fill-mode: forwards;
}

.delay-400 {
    animation-delay: 0.4s;
    opacity: 0;
    animation-fill-mode: forwards;
}

.delay-600 {
    animation-delay: 0.6s;
    opacity: 0;
    animation-fill-mode: forwards;
}

.delay-800 {
    animation-delay: 0.8s;
    opacity: 0;
    animation-fill-mode: forwards;
}

.delay-1000 {
    animation-delay: 1s;
    opacity: 0;
    animation-fill-mode: forwards;
}

/* Interactive Elements */
.nav-link {
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.nav-link:hover {
    transform: translateX(5px) scale(1.05);
}

.error-title:hover {
    transform: scale(1.02);
}
