/* ========================================
   PERFORMANCE OPTIMIZATIONS
   Optimisations de performance
   ======================================== */

/* ==================== 
   CRITICAL CSS
   Styles critiques pour le chargement initial
   ==================== */

/* Éviter le FOUC (Flash of Unstyled Content) */
html {
  visibility: visible;
  opacity: 1;
}

/* ==================== 
   FONT OPTIMIZATION
   ==================== */

/* Optimisation du chargement des polices */
body {
  font-display: swap;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* ==================== 
   IMAGE OPTIMIZATION
   ==================== */

/* Images responsives natives */
img {
  max-width: 100%;
  height: auto;
  display: block;
}

/* Lazy loading skeleton */
img.lazy {
  opacity: 0;
  transition: opacity 0.3s;
}

img.lazy.loaded {
  opacity: 1;
}

/* Placeholder pour images en chargement */
.image-placeholder {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: loading 1.5s infinite;
}

@keyframes loading {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ==================== 
   REDUCE REPAINTS
   Réduire les repaints/reflows
   ==================== */

/* Utiliser transform au lieu de position pour animations */
.animated-element {
  will-change: transform;
  transform: translateZ(0);
  backface-visibility: hidden;
}

/* Éviter les animations sur scroll sur mobile */
@media (max-width: 767px) {
  * {
    animation-duration: 0s !important;
    transition-duration: 0s !important;
  }
  
  /* Sauf pour les éléments essentiels */
  .menu,
  .slider,
  .modal,
  .alert {
    animation-duration: 0.3s !important;
    transition-duration: 0.3s !important;
  }
}

/* ==================== 
   GPU ACCELERATION
   Accélération matérielle
   ==================== */

.slider,
.product-carousel,
.service .slider,
.navbar {
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

/* ==================== 
   REDUCE LAYOUT SHIFTS
   Éviter les CLS (Cumulative Layout Shift)
   ==================== */

/* Réserver l'espace pour les images */
.product-image,
.slider-image {
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Hauteur minimale pour conteneurs */
.product-item {
  min-height: 300px;
}

.slider-container {
  min-height: 400px;
}

@media (max-width: 767px) {
  .slider-container {
    min-height: 250px;
  }
  
  .product-item {
    min-height: 250px;
  }
}

/* ==================== 
   REDUCE JAVASCRIPT BLOCKING
   ==================== */

/* Afficher le contenu avant le JS */
.no-js .menu > ul {
  display: block !important;
}

.no-js .menu-mobile {
  display: none !important;
}

/* ==================== 
   REDUCE CSS COMPLEXITY
   Simplifier les sélecteurs CSS
   ==================== */

/* Utiliser des classes au lieu de sélecteurs complexes */
.btn-primary { /* Au lieu de .header .nav ul li a.btn */ }
.product-title { /* Au lieu de .product .item .content .text h3 */ }

/* ==================== 
   CACHE OPTIMIZATION
   Optimisation du cache
   ==================== */

/* Headers de cache pour assets statiques (à configurer côté serveur) */
/*
Cache-Control: public, max-age=31536000 pour CSS, JS, images
Cache-Control: no-cache pour HTML
*/

/* ==================== 
   PRELOAD CRITICAL RESOURCES
   Précharger les ressources critiques
   ==================== */

/* À ajouter dans <head> :
<link rel="preload" href="assets/css/main.css" as="style">
<link rel="preload" href="assets/js/jquery.min.js" as="script">
<link rel="preconnect" href="https://fonts.googleapis.com">
*/

/* ==================== 
   REDUCE THIRD-PARTY IMPACT
   Réduire l'impact des scripts tiers
   ==================== */

/* Charger les scripts tiers de manière asynchrone */
/* <script async src="analytics.js"></script> */
/* <script defer src="non-critical.js"></script> */

/* ==================== 
   OPTIMIZE WEB FONTS
   ==================== */

/* Utiliser font-display: swap */
@font-face {
  font-family: 'CustomFont';
  src: url('font.woff2') format('woff2');
  font-display: swap;
  font-weight: normal;
  font-style: normal;
}

/* ==================== 
   REDUCE UNUSED CSS
   Supprimer le CSS inutilisé
   ==================== */

/* À faire avec un outil comme PurgeCSS */

/* ==================== 
   MINIFICATION
   ==================== */

/* Minifier CSS et JS en production */
/* Utiliser des outils comme : */
/* - cssnano pour CSS */
/* - uglify-js ou terser pour JavaScript */

/* ==================== 
   COMPRESSION
   ==================== */

/* Activer gzip/brotli côté serveur */
/* Dans .htaccess (Apache) : */
/*
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
</IfModule>
*/

/* ==================== 
   RESOURCE HINTS
   ==================== */

/* Préconnexion aux domaines externes */
/* <link rel="preconnect" href="https://fonts.googleapis.com"> */
/* <link rel="dns-prefetch" href="https://cdn.example.com"> */

/* ==================== 
   INTERSECTION OBSERVER
   Pour lazy loading avancé
   ==================== */

/* Utilisé dans mobile-enhancements.js */

/* ==================== 
   REDUCE COOKIE SIZE
   Réduire la taille des cookies
   ==================== */

/* Éviter les cookies > 4KB */
/* Utiliser sessionStorage/localStorage quand possible */

/* ==================== 
   OPTIMIZE CRITICAL RENDERING PATH
   ==================== */

/* Inline les CSS critiques dans <head> */
/* Charger les CSS non-critiques de manière asynchrone */
/*
<link rel="preload" href="style.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="style.css"></noscript>
*/

/* ==================== 
   REDUCE MAIN THREAD WORK
   ==================== */

/* Éviter les calculs JavaScript lourds */
/* Utiliser Web Workers pour tâches lourdes */
/* Debounce/throttle les événements scroll/resize */

/* ==================== 
   LIGHTHOUSE OPTIMIZATIONS
   Optimisations Lighthouse
   ==================== */

/* Accessibilité */
a, button {
  min-width: 44px;
  min-height: 44px;
}

/* Contraste des couleurs */
.text-muted {
  color: #6c757d !important; /* Ratio 4.5:1 */
}

/* Alt text pour images */
/* <img src="..." alt="Description"> */

/* Labels pour formulaires */
/* <label for="input-id">Label</label> */
/* <input id="input-id" name="..."> */

/* ==================== 
   PROGRESSIVE WEB APP (PWA)
   ==================== */

/* À ajouter : manifest.json */
/*
{
  "name": "MG Consulting",
  "short_name": "MG",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#8c844f",
  "icons": [...]
}
*/

/* Service Worker pour cache offline */
/* À implémenter pour PWA complet */

/* ==================== 
   PRINT OPTIMIZATION
   ==================== */

@media print {
  /* Masquer éléments non nécessaires */
  .no-print,
  .header,
  .footer,
  .sidebar,
  nav,
  .btn {
    display: none !important;
  }
  
  /* Optimiser pour impression */
  * {
    background: white !important;
    color: black !important;
  }
  
  a[href]:after {
    content: " (" attr(href) ")";
  }
}

/* ==================== 
   REDUCED MOTION
   Respecter les préférences utilisateur
   ==================== */

@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;
  }
}

/* ==================== 
   DARK MODE SUPPORT
   Support du mode sombre
   ==================== */

@media (prefers-color-scheme: dark) {
  /* À implémenter si souhaité */
  /*
  body {
    background-color: #1a1a1a;
    color: #ffffff;
  }
  */
}

/* ==================== 
   FOCUS VISIBLE
   Améliorer la visibilité du focus
   ==================== */

*:focus-visible {
  outline: 2px solid #8c844f;
  outline-offset: 2px;
}

/* ==================== 
   CONTAINER QUERIES
   Future: Requêtes de conteneur
   ==================== */

/* Quand supporté par les navigateurs */
/*
@container (min-width: 700px) {
  .card {
    display: grid;
    grid-template-columns: 2fr 1fr;
  }
}
*/
