/* 
Theme Name: Hello Elementor Child
Theme URI: https://www.inyourlife.info/francesco-borrelli-staff-iyl/
Description: Hello Elementor Child enhanced with InYourLife Framework CSS - Advanced child theme of Hello Elementor with automatic WordPress setup, plugin management, responsive utilities, and performance optimizations
Author: Francesco Borrelli - InYourLife Srl
Author URI: https://www.inyourlife.info/francesco-borrelli-staff-iyl/
Template: hello-elementor
Version: 2.2.0
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready, framework-css, responsive-utilities, elementor-optimized
*/

/*
 * Framework CSS InYourLife - gestione fluid e responsive
 *
 * INDICE:
 * 1. Variabili globali (root): padding, altezza hero, offset, larghezze narrow
 * 2. Classi section-xxs ... section-xxl: padding fluido per sezioni
 * 3. section-header: padding specifico per header
 * 4. section-hero: altezza minima e centratura contenuto
 * 5. section-full: sezioni full-width (senza padding laterale)
 * 6. section-narrow / section-narrow-xs: larghezza massima del contenuto
 * 7. section-offset: padding superiore offset per header overlay
 *
 * Breve descrizione:
 * Questo framework semplifica la costruzione di layout responsive
 * basati su classi utility. Usa variabili CSS per spaziature fluide,
 * gestisce hero full-screen, sezioni a larghezza limitata o piena,
 * e supporta facilmente overlay di header con offset.
 */

:root {
    /* Global Padding Variables - Editable */
    /* Left and Right Padding All /Sections/Containers*/
    --fluid-side-padding-min: 1.25rem; /* 20px */
    --fluid-side-padding-max: 5rem;   /* 80px */

    /* Top and Bottom Padding All Containers*/
    --section-xxl-padding-min: 9.375rem; /* 150px */
    --section-xxl-padding-max: 10rem; /* 160px */ 
  
    --section-xl-padding-min: 6.875rem; /* 110px */
    --section-xl-padding-max: 7.5rem; /* 120px */
  
    --section-l-padding-min: 5.625rem; /* 90px */
    --section-l-padding-max: 6.25rem; /* 100px */
  
    --section-m-padding-min: 5rem; /* 80px */
    --section-m-padding-max: 5rem; /* 80px */
  
    --section-s-padding-min: 3.75rem; /* 60px */
    --section-s-padding-max: 3.75rem; /* 60px */
  
    --section-xs-padding-min: 2.5rem; /* 40px */
    --section-xs-padding-max: 2.5rem; /* 40px */
  
    --section-xxs-padding-min: 1.5rem; /* 24px */
    --section-xxs-padding-max: 1.5rem; /* 24px */
    
    --section-header-padding-min: 1.25rem; /* 20px */
    --section-header-padding-max: 1.25rem; /* 20px */

  
    /* Hero Sections Height Variable */
    --section-hero-height: 100vh; /* 100% the screen height */
  
    /* Offset Padding for Overlay Headers */
    --section-offset-header: 80px; /* Adjust to the overlay header's negative margin */

    /* Width For Narrow Sections*/
    --section-narrow: 62.5rem; /* 1000px */
    --section-narrow-xs: 45rem; /* 720px */
  }


/* CSS Template (do not edit below) */
  
  
  /* Section/Container Padding - Fluid Variants */
  .section-xxl {
    padding-top: clamp(var(--section-xxl-padding-min), 1.087vw + 9.13rem, var(--section-xxl-padding-max));
    padding-bottom: clamp(var(--section-xxl-padding-min), 1.087vw + 9.13rem, var(--section-xxl-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-xl {
    padding-top: clamp(var(--section-xl-padding-min), 1.087vw + 6.63rem, var(--section-xl-padding-max));
    padding-bottom: clamp(var(--section-xl-padding-min), 1.087vw + 6.63rem, var(--section-xl-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-l {
    padding-top: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
    padding-bottom: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-m {
    padding-top: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
    padding-bottom: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-s {
    padding-top: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
    padding-bottom: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-xs {
    padding-top: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
    padding-bottom: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-xxs {
    padding-top: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
    padding-bottom: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  .section-header {
    padding-top: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
    padding-bottom: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
    padding-left: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
    padding-right: clamp(var(--fluid-side-padding-min), 6.522vw + -0.217rem, var(--fluid-side-padding-max))!important;
  }
  
  /* Hero Container/Sections Height */
  .section-hero {
    min-height: var(--section-hero-height)!important;
  }

  .section-hero .e-con-inner {
    justify-content: center!important;
}
  
  /* Full Width Sections - No Side Padding */

  .section-full div {
    max-width: 100%!important;
  }
  

  /* Narrow Sections */
  .section-narrow .e-con-inner {
    max-width: var(--section-narrow)!important;
  }

  .section-narrow-xs .e-con-inner {
    max-width: var(--section-narrow-xs)!important;
  }


  /* Offset Padding for Overlay Headers */
  .section-offset {
    padding-top: calc(var(--section-offset-header) + var(--section-xxl-padding-min));
  }

  /* ========================================== */
  /* RESPONSIVE MEDIA QUERIES */
  /* ========================================== */
  
  /* Tablet breakpoint (768px - 1024px) */
  @media (max-width: 1024px) {
    .section-xxl {
      padding-top: clamp(var(--section-xl-padding-min), 1.087vw + 6.63rem, var(--section-xl-padding-max));
      padding-bottom: clamp(var(--section-xl-padding-min), 1.087vw + 6.63rem, var(--section-xl-padding-max));
    }
    
    .section-xl {
      padding-top: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
      padding-bottom: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
    }
    
    .section-l {
      padding-top: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
      padding-bottom: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
    }
    
    .section-m {
      padding-top: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
      padding-bottom: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
    }
    
    .section-s {
      padding-top: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
      padding-bottom: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
    }
    
    .section-xs {
      padding-top: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
      padding-bottom: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
    }
    
    .section-xxs {
      padding-top: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
      padding-bottom: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
    }
  }

  /* Mobile breakpoint (max 767px) */
  @media (max-width: 767px) {
    .section-xxl {
      padding-top: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
      padding-bottom: clamp(var(--section-l-padding-min), 1.087vw + 5.38rem, var(--section-l-padding-max));
    }
    
    .section-xl {
      padding-top: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
      padding-bottom: clamp(var(--section-m-padding-min), 0vw + 5rem, var(--section-m-padding-max));
    }
    
    .section-l {
      padding-top: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
      padding-bottom: clamp(var(--section-s-padding-min), 0vw + 3.75rem, var(--section-s-padding-max));
    }
    
    .section-m {
      padding-top: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
      padding-bottom: clamp(var(--section-xs-padding-min), 0vw + 2.5rem, var(--section-xs-padding-max));
    }
    
    .section-s {
      padding-top: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
      padding-bottom: clamp(var(--section-xxs-padding-min), 0vw + 1.5rem, var(--section-xxs-padding-max));
    }
    
    .section-xs {
      padding-top: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
      padding-bottom: clamp(var(--section-header-padding-min), 0vw + 1.25rem, var(--section-header-padding-max));
    }
    
    /* xxs diventa xss su mobile */
    .section-xxs {
      padding-top: 0.75rem; /* 12px */
      padding-bottom: 0.75rem;
    }
  }

  /* ========================================== */
  /* UTILITY CLASSES - LAYOUT */
  /* ========================================== */
  
  /* Flexbox utilities */
  .flex { display: flex; }
  .flex-col { flex-direction: column; }
  .flex-row { flex-direction: row; }
  .flex-wrap { flex-wrap: wrap; }
  .flex-nowrap { flex-wrap: nowrap; }
  
  /* Justify content */
  .justify-start { justify-content: flex-start; }
  .justify-end { justify-content: flex-end; }
  .justify-center { justify-content: center; }
  .justify-between { justify-content: space-between; }
  .justify-around { justify-content: space-around; }
  .justify-evenly { justify-content: space-evenly; }
  
  /* Align items */
  .items-start { align-items: flex-start; }
  .items-end { align-items: flex-end; }
  .items-center { align-items: center; }
  .items-baseline { align-items: baseline; }
  .items-stretch { align-items: stretch; }
  
  /* Grid utilities */
  .grid { display: grid; }
  .grid-1 { grid-template-columns: repeat(1, 1fr); }
  .grid-2 { grid-template-columns: repeat(2, 1fr); }
  .grid-3 { grid-template-columns: repeat(3, 1fr); }
  .grid-4 { grid-template-columns: repeat(4, 1fr); }
  .grid-5 { grid-template-columns: repeat(5, 1fr); }
  .grid-6 { grid-template-columns: repeat(6, 1fr); }
  
  /* Gap utilities */
  .gap-0 { gap: 0; }
  .gap-1 { gap: 0.25rem; }
  .gap-2 { gap: 0.5rem; }
  .gap-3 { gap: 0.75rem; }
  .gap-4 { gap: 1rem; }
  .gap-5 { gap: 1.25rem; }
  .gap-6 { gap: 1.5rem; }
  .gap-8 { gap: 2rem; }
  .gap-10 { gap: 2.5rem; }
  .gap-12 { gap: 3rem; }
  
  /* ========================================== */
  /* UTILITY CLASSES - SPACING */
  /* ========================================== */
  
  /* Margin utilities */
  .m-0 { margin: 0; }
  .m-1 { margin: 0.25rem; }
  .m-2 { margin: 0.5rem; }
  .m-3 { margin: 0.75rem; }
  .m-4 { margin: 1rem; }
  .m-5 { margin: 1.25rem; }
  .m-6 { margin: 1.5rem; }
  .m-8 { margin: 2rem; }
  .m-10 { margin: 2.5rem; }
  .m-12 { margin: 3rem; }
  .m-auto { margin: auto; }
  
  /* Margin top */
  .mt-0 { margin-top: 0; }
  .mt-1 { margin-top: 0.25rem; }
  .mt-2 { margin-top: 0.5rem; }
  .mt-3 { margin-top: 0.75rem; }
  .mt-4 { margin-top: 1rem; }
  .mt-5 { margin-top: 1.25rem; }
  .mt-6 { margin-top: 1.5rem; }
  .mt-8 { margin-top: 2rem; }
  .mt-10 { margin-top: 2.5rem; }
  .mt-12 { margin-top: 3rem; }
  
  /* Margin bottom */
  .mb-0 { margin-bottom: 0; }
  .mb-1 { margin-bottom: 0.25rem; }
  .mb-2 { margin-bottom: 0.5rem; }
  .mb-3 { margin-bottom: 0.75rem; }
  .mb-4 { margin-bottom: 1rem; }
  .mb-5 { margin-bottom: 1.25rem; }
  .mb-6 { margin-bottom: 1.5rem; }
  .mb-8 { margin-bottom: 2rem; }
  .mb-10 { margin-bottom: 2.5rem; }
  .mb-12 { margin-bottom: 3rem; }
  
  /* Margin left */
  .ml-0 { margin-left: 0; }
  .ml-1 { margin-left: 0.25rem; }
  .ml-2 { margin-left: 0.5rem; }
  .ml-3 { margin-left: 0.75rem; }
  .ml-4 { margin-left: 1rem; }
  .ml-5 { margin-left: 1.25rem; }
  .ml-6 { margin-left: 1.5rem; }
  .ml-8 { margin-left: 2rem; }
  .ml-10 { margin-left: 2.5rem; }
  .ml-12 { margin-left: 3rem; }
  .ml-auto { margin-left: auto; }
  
  /* Margin right */
  .mr-0 { margin-right: 0; }
  .mr-1 { margin-right: 0.25rem; }
  .mr-2 { margin-right: 0.5rem; }
  .mr-3 { margin-right: 0.75rem; }
  .mr-4 { margin-right: 1rem; }
  .mr-5 { margin-right: 1.25rem; }
  .mr-6 { margin-right: 1.5rem; }
  .mr-8 { margin-right: 2rem; }
  .mr-10 { margin-right: 2.5rem; }
  .mr-12 { margin-right: 3rem; }
  .mr-auto { margin-right: auto; }
  
  /* Padding utilities */
  .p-0 { padding: 0; }
  .p-1 { padding: 0.25rem; }
  .p-2 { padding: 0.5rem; }
  .p-3 { padding: 0.75rem; }
  .p-4 { padding: 1rem; }
  .p-5 { padding: 1.25rem; }
  .p-6 { padding: 1.5rem; }
  .p-8 { padding: 2rem; }
  .p-10 { padding: 2.5rem; }
  .p-12 { padding: 3rem; }
  
  /* Padding top */
  .pt-0 { padding-top: 0; }
  .pt-1 { padding-top: 0.25rem; }
  .pt-2 { padding-top: 0.5rem; }
  .pt-3 { padding-top: 0.75rem; }
  .pt-4 { padding-top: 1rem; }
  .pt-5 { padding-top: 1.25rem; }
  .pt-6 { padding-top: 1.5rem; }
  .pt-8 { padding-top: 2rem; }
  .pt-10 { padding-top: 2.5rem; }
  .pt-12 { padding-top: 3rem; }
  
  /* Padding bottom */
  .pb-0 { padding-bottom: 0; }
  .pb-1 { padding-bottom: 0.25rem; }
  .pb-2 { padding-bottom: 0.5rem; }
  .pb-3 { padding-bottom: 0.75rem; }
  .pb-4 { padding-bottom: 1rem; }
  .pb-5 { padding-bottom: 1.25rem; }
  .pb-6 { padding-bottom: 1.5rem; }
  .pb-8 { padding-bottom: 2rem; }
  .pb-10 { padding-bottom: 2.5rem; }
  .pb-12 { padding-bottom: 3rem; }
  
  /* Padding left */
  .pl-0 { padding-left: 0; }
  .pl-1 { padding-left: 0.25rem; }
  .pl-2 { padding-left: 0.5rem; }
  .pl-3 { padding-left: 0.75rem; }
  .pl-4 { padding-left: 1rem; }
  .pl-5 { padding-left: 1.25rem; }
  .pl-6 { padding-left: 1.5rem; }
  .pl-8 { padding-left: 2rem; }
  .pl-10 { padding-left: 2.5rem; }
  .pl-12 { padding-left: 3rem; }
  
  /* Padding right */
  .pr-0 { padding-right: 0; }
  .pr-1 { padding-right: 0.25rem; }
  .pr-2 { padding-right: 0.5rem; }
  .pr-3 { padding-right: 0.75rem; }
  .pr-4 { padding-right: 1rem; }
  .pr-5 { padding-right: 1.25rem; }
  .pr-6 { padding-right: 1.5rem; }
  .pr-8 { padding-right: 2rem; }
  .pr-10 { padding-right: 2.5rem; }
  .pr-12 { padding-right: 3rem; }
  
  /* ========================================== */
  /* UTILITY CLASSES - TYPOGRAPHY */
  /* ========================================== */
  
  /* Text align */
  .text-left { text-align: left; }
  .text-center { text-align: center; }
  .text-right { text-align: right; }
  .text-justify { text-align: justify; }
  
  /* Text transform */
  .uppercase { text-transform: uppercase; }
  .lowercase { text-transform: lowercase; }
  .capitalize { text-transform: capitalize; }
  .normal-case { text-transform: none; }
  
  /* Font weight */
  .font-thin { font-weight: 100; }
  .font-light { font-weight: 300; }
  .font-normal { font-weight: 400; }
  .font-medium { font-weight: 500; }
  .font-semibold { font-weight: 600; }
  .font-bold { font-weight: 700; }
  .font-extrabold { font-weight: 800; }
  .font-black { font-weight: 900; }
  
  /* Font size */
  .text-xs { font-size: 0.75rem; line-height: 1rem; }
  .text-sm { font-size: 0.875rem; line-height: 1.25rem; }
  .text-base { font-size: 1rem; line-height: 1.5rem; }
  .text-lg { font-size: 1.125rem; line-height: 1.75rem; }
  .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
  .text-2xl { font-size: 1.5rem; line-height: 2rem; }
  .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
  .text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
  .text-5xl { font-size: 3rem; line-height: 1; }
  .text-6xl { font-size: 3.75rem; line-height: 1; }
  
  /* Line height */
  .leading-none { line-height: 1; }
  .leading-tight { line-height: 1.25; }
  .leading-snug { line-height: 1.375; }
  .leading-normal { line-height: 1.5; }
  .leading-relaxed { line-height: 1.625; }
  .leading-loose { line-height: 2; }
  
  /* ========================================== */
  /* UTILITY CLASSES - RESPONSIVE */
  /* ========================================== */
  
  /* Display utilities */
  .block { display: block; }
  .inline-block { display: inline-block; }
  .inline { display: inline; }
  .hidden { display: none; }
  
  /* Visibility utilities */
  .visible { visibility: visible; }
  .invisible { visibility: hidden; }
  
  /* Position utilities */
  .static { position: static; }
  .fixed { position: fixed; }
  .absolute { position: absolute; }
  .relative { position: relative; }
  .sticky { position: sticky; }
  
  /* Width utilities */
  .w-auto { width: auto; }
  .w-full { width: 100%; }
  .w-screen { width: 100vw; }
  .w-1\/2 { width: 50%; }
  .w-1\/3 { width: 33.333333%; }
  .w-2\/3 { width: 66.666667%; }
  .w-1\/4 { width: 25%; }
  .w-3\/4 { width: 75%; }
  
  /* Height utilities */
  .h-auto { height: auto; }
  .h-full { height: 100%; }
  .h-screen { height: 100vh; }
  
  /* Responsive visibility */
  @media (max-width: 767px) {
    .hidden-mobile { display: none !important; }
    .visible-mobile { display: block !important; }
    .grid-2, .grid-3, .grid-4, .grid-5, .grid-6 { 
      grid-template-columns: 1fr; 
    }
  }
  
  @media (min-width: 768px) {
    .hidden-desktop { display: none !important; }
    .visible-desktop { display: block !important; }
  }
  
  @media (min-width: 768px) and (max-width: 1024px) {
    .hidden-tablet { display: none !important; }
    .visible-tablet { display: block !important; }
  }

  /* ========================================== */
  /* ANIMATION FRAMEWORK */
  /* ========================================== */
  
  /* Animation variables */
  :root {
    --animation-duration-fast: 0.15s;
    --animation-duration-normal: 0.3s;
    --animation-duration-slow: 0.6s;
    --animation-easing: cubic-bezier(0.4, 0, 0.2, 1);
    --animation-easing-in: cubic-bezier(0.4, 0, 1, 1);
    --animation-easing-out: cubic-bezier(0, 0, 0.2, 1);
    --animation-easing-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  }
  
  /* Base animation classes */
  .animate {
    transition: all var(--animation-duration-normal) var(--animation-easing);
  }
  
  .animate-fast {
    transition: all var(--animation-duration-fast) var(--animation-easing);
  }
  
  .animate-slow {
    transition: all var(--animation-duration-slow) var(--animation-easing);
  }
  
  /* Keyframe animations */
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  
  @keyframes fadeInUp {
    from { 
      opacity: 0;
      transform: translateY(30px);
    }
    to { 
      opacity: 1;
      transform: translateY(0);
    }
  }
  
  @keyframes fadeInDown {
    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 zoomIn {
    from { 
      opacity: 0;
      transform: scale(0.8);
    }
    to { 
      opacity: 1;
      transform: scale(1);
    }
  }
  
  @keyframes slideUp {
    from { transform: translateY(100%); }
    to { transform: translateY(0); }
  }
  
  @keyframes slideDown {
    from { transform: translateY(-100%); }
    to { transform: translateY(0); }
  }
  
  @keyframes bounce {
    0%, 20%, 53%, 80%, 100% {
      transform: translate3d(0,0,0);
    }
    40%, 43% {
      transform: translate3d(0, -30px, 0);
    }
    70% {
      transform: translate3d(0, -15px, 0);
    }
    90% {
      transform: translate3d(0, -4px, 0);
    }
  }
  
  @keyframes pulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
  }
  
  @keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-10px); }
    20%, 40%, 60%, 80% { transform: translateX(10px); }
  }
  
  /* Animation utility classes */
  .fade-in {
    animation: fadeIn var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .fade-in-up {
    animation: fadeInUp var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .fade-in-down {
    animation: fadeInDown var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .fade-in-left {
    animation: fadeInLeft var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .fade-in-right {
    animation: fadeInRight var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .zoom-in {
    animation: zoomIn var(--animation-duration-slow) var(--animation-easing-out) forwards;
  }
  
  .slide-up {
    animation: slideUp var(--animation-duration-normal) var(--animation-easing-out) forwards;
  }
  
  .slide-down {
    animation: slideDown var(--animation-duration-normal) var(--animation-easing-out) forwards;
  }
  
  .bounce {
    animation: bounce 1s infinite;
  }
  
  .pulse {
    animation: pulse 2s infinite;
  }
  
  .shake {
    animation: shake 0.5s ease-in-out;
  }
  
  /* Hover animations */
  .hover-lift {
    transition: transform var(--animation-duration-normal) var(--animation-easing);
  }
  
  .hover-lift:hover {
    transform: translateY(-5px);
  }
  
  .hover-scale {
    transition: transform var(--animation-duration-normal) var(--animation-easing);
  }
  
  .hover-scale:hover {
    transform: scale(1.05);
  }
  
  .hover-fade {
    transition: opacity var(--animation-duration-normal) var(--animation-easing);
  }
  
  .hover-fade:hover {
    opacity: 0.8;
  }
  
  /* Scroll-triggered animations (require JavaScript) */
  .scroll-animate {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity var(--animation-duration-slow) var(--animation-easing),
                transform var(--animation-duration-slow) var(--animation-easing);
  }
  
  .scroll-animate.visible {
    opacity: 1;
    transform: translateY(0);
  }
  
  .scroll-animate-left {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity var(--animation-duration-slow) var(--animation-easing),
                transform var(--animation-duration-slow) var(--animation-easing);
  }
  
  .scroll-animate-left.visible {
    opacity: 1;
    transform: translateX(0);
  }
  
  .scroll-animate-right {
    opacity: 0;
    transform: translateX(30px);
    transition: opacity var(--animation-duration-slow) var(--animation-easing),
                transform var(--animation-duration-slow) var(--animation-easing);
  }
  
  .scroll-animate-right.visible {
    opacity: 1;
    transform: translateX(0);
  }
  
  .scroll-animate-scale {
    opacity: 0;
    transform: scale(0.8);
    transition: opacity var(--animation-duration-slow) var(--animation-easing),
                transform var(--animation-duration-slow) var(--animation-easing);
  }
  
  .scroll-animate-scale.visible {
    opacity: 1;
    transform: scale(1);
  }
  
  /* Delay utilities for staggered animations */
  .delay-1 { animation-delay: 0.1s; }
  .delay-2 { animation-delay: 0.2s; }
  .delay-3 { animation-delay: 0.3s; }
  .delay-4 { animation-delay: 0.4s; }
  .delay-5 { animation-delay: 0.5s; }
  
  /* Animation performance optimizations */
  .animate *,
  .fade-in,
  .fade-in-up,
  .fade-in-down,
  .fade-in-left,
  .fade-in-right,
  .zoom-in,
  .slide-up,
  .slide-down {
    will-change: transform, opacity;
  }
  
  /* Reduce motion for accessibility */
  @media (prefers-reduced-motion: reduce) {
    *,
    ::before,
    ::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
  }

  /* Add your custom styles here */
