templates/Base/_sidebar_admin.html.twig line 1601

Open in your IDE?
  1. <div class="d-flex flex-column flex-root">
  2.     <div class="page d-flex flex-row flex-column-fluid">
  3. <div id="kt_aside" class="aside aside-modern" data-kt-drawer="true" data-kt-drawer-name="aside" data-kt-drawer-activate="{default: true, lg: false}" data-kt-drawer-overlay="true" data-kt-drawer-width="{default:'280px', '300px': '300px'}" data-kt-drawer-direction="start" data-kt-drawer-toggle="#kt_aside_mobile_toggle">
  4.     <!-- Logo Section Modernisée -->
  5.     <div class="aside-logo-modern" id="kt_aside_logo">
  6.         <a href="/dashboard" class="logo-container-modern">
  7.             <span class="brand-text">MAZEGO</span>
  8.         </a>
  9.         <div id="kt_aside_toggle" class="btn-toggle-modern" data-kt-toggle="true" data-kt-toggle-state="active" data-kt-toggle-target="body" data-kt-toggle-name="aside-minimize">
  10.             <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  11.                 <path d="m15 18-6-6 6-6"/>
  12.             </svg>
  13.         </div>
  14.     </div>
  15.     <!-- Menu Navigation Moderne -->
  16.     <div class="aside-menu-modern">
  17.         <div class="menu-scroll-modern" id="kt_aside_menu_wrapper" data-kt-scroll="true" data-kt-scroll-activate="{default: false, lg: true}" data-kt-scroll-height="auto" data-kt-scroll-dependencies="#kt_aside_logo, #kt_aside_footer" data-kt-scroll-wrappers="#kt_aside_menu" data-kt-scroll-offset="0">
  18.             <div class="menu-modern" id="kt_aside_menu" data-kt-menu="true">
  19. <!-- 📄 FACTURE ÉLECTRONIQUE -->
  20. {# <div class="menu-section-modern">
  21.     <div class="menu-section-header-modern" data-section="facture-electronique">
  22.         <div class="menu-section-title-modern">
  23.             <span class="section-title-text">FACTURE ÉLECTRONIQUE</span>
  24.                        
  25.                                             <div class="menu-badge-modern">
  26.                         <span class="badge-new-modern">NEW</span>
  27.                     </div>
  28.         </div>
  29.         <div class="menu-section-arrow">
  30.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  31.                 <path d="m6 9 6 6 6-6"/>
  32.             </svg>
  33.         </div>
  34.     </div>
  35.     <div class="menu-section-content" id="section-facture-electronique">
  36.         
  37.        
  38.         {% set hasCertificate = user_certificate is defined and user_certificate != null %}
  39.         {% set hasTTNConfig = user_ttn_config is defined and user_ttn_config|length > 0 %}
  40.         {% set isActivated = user_activation is defined and user_activation != null %}
  41.         
  42.       
  43.         {% if not isActivated %}
  44.             <!-- Activer la facture électronique -->
  45.             <div class="menu-item-modern">
  46.                 <a class="menu-link-modern" href="{{ path('facture_electronique_step1') }}">
  47.                     <div class="menu-icon-modern">
  48.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  49.                             <rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
  50.                             <line x1="8" y1="21" x2="16" y2="21"/>
  51.                             <line x1="12" y1="17" x2="12" y2="21"/>
  52.                             <path d="M12 7v6"/>
  53.                             <path d="M9 10h6"/>
  54.                             <circle cx="12" cy="10" r="2"/>
  55.                         </svg>
  56.                     </div>
  57.                     <span class="menu-title-modern">Activer la facture électronique</span>
  58.                     <div class="menu-badge-modern">
  59.                         <span class="badge-new-modern">NEW</span>
  60.                     </div>
  61.                 </a>
  62.             </div>
  63.         {% else %}
  64.             <!-- Dashboard Facture Électronique -->
  65.             <div class="menu-item-modern">
  66.                 <a class="menu-link-modern" href="{{ path('dashboard_facture_electronique') }}">
  67.                     <div class="menu-icon-modern">
  68.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  69.                             <rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
  70.                             <line x1="8" y1="21" x2="16" y2="21"/>
  71.                             <line x1="12" y1="17" x2="12" y2="21"/>
  72.                             <path d="M12 11v-4"/>
  73.                             <circle cx="12" cy="9" r="1" fill="currentColor"/>
  74.                         </svg>
  75.                     </div>
  76.                     <span class="menu-title-modern">Tableau de bord</span>
  77.                      
  78.                 </a>
  79.             </div>
  80.         {% endif %}
  81.   
  82.         {% if isActivated or (hasCertificate and not hasTTNConfig) %}
  83.             <div class="menu-item-modern">
  84.                 <a class="menu-link-modern" href="{{ path('facture_electronique_step2') }}">
  85.                     <div class="menu-icon-modern">
  86.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  87.                             <circle cx="12" cy="12" r="10"/>
  88.                             <path d="M12 16v-4"/>
  89.                             <circle cx="12" cy="8" r="1" fill="currentColor"/>
  90.                         </svg>
  91.                     </div>
  92.                     <span class="menu-title-modern">Configuration TTN</span>
  93.                     {% if not hasTTNConfig %}
  94.                         <div class="menu-badge-modern">
  95.                             <span class="badge-dot-modern"></span>
  96.                         </div>
  97.                     {% endif %}
  98.                 </a>
  99.             </div>
  100.         {% endif %}
  101.         
  102.       
  103.         <div class="menu-item-modern">
  104.             <a class="menu-link-modern" href="{{ path('facture_electronique_certificate') }}">
  105.                 <div class="menu-icon-modern">
  106.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  107.                         <rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
  108.                         <circle cx="12" cy="12" r="2"/>
  109.                         <path d="M12 6v2"/>
  110.                         <path d="M12 16v2"/>
  111.                         <path d="M6 12h2"/>
  112.                         <path d="M16 12h2"/>
  113.                     </svg>
  114.                 </div>
  115.                 <span class="menu-title-modern">Certificat de signature</span>
  116.                    <span class="badge-new-modern">NEW</span>
  117.                 {% if hasCertificate %}
  118.                     <div class="menu-badge-modern">
  119.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">ACTIF</span>
  120.                     </div>
  121.                 {% endif %}
  122.             </a>
  123.         </div>
  124.         
  125.      
  126.         {% if isActivated %}
  127.             <div class="menu-item-modern">
  128.                 <div class="menu-link-modern" style="cursor: default;">
  129.                     <div class="menu-icon-modern">
  130.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  131.                             <path d="M4 7h16"/>
  132.                             <path d="M7 7v10"/>
  133.                             <path d="M17 7v10"/>
  134.                             <rect x="4" y="4" width="16" height="16" rx="2"/>
  135.                             <path d="M9 11h6"/>
  136.                             <path d="M12 14v-3"/>
  137.                         </svg>
  138.                     </div>
  139.                     <span class="menu-title-modern">Signatures restantes</span>
  140.                     <div class="menu-badge-modern">
  141.                         <span class="badge bg-info rounded-pill px-2 py-1" style="font-size: 0.75rem; font-weight: 600;">
  142.                             {{ user_signatures_remaining ?? 300 }} / {{ user_signatures_total ?? 300 }}
  143.                         </span>
  144.                     </div>
  145.                 </div>
  146.             </div>
  147.         {% endif %}
  148.         
  149.          
  150.         {% if isActivated %}
  151.             <div class="menu-accordion-modern" data-kt-menu-trigger="click">
  152.                 <div class="menu-link-modern menu-accordion-trigger">
  153.                     <div class="menu-icon-modern">
  154.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  155.                             <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  156.                             <polyline points="14,2 14,8 20,8"/>
  157.                             <line x1="16" y1="13" x2="8" y2="13"/>
  158.                             <line x1="16" y1="17" x2="8" y2="17"/>
  159.                             <path d="M10 9h4"/>
  160.                             <path d="M8 9h.01"/>
  161.                             <path d="M16 21v-4"/>
  162.                         </svg>
  163.                     </div>
  164.                     <span class="menu-title-modern">Historique</span>
  165.                     <div class="menu-arrow-modern">
  166.                         <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  167.                             <path d="m9 18 6-6-6-6"/>
  168.                         </svg>
  169.                     </div>
  170.                 </div>
  171.                 <div class="menu-sub-modern">
  172.                     <div class="menu-sub-item-modern">
  173.                         <a href="{{ path('facture_electronique_historique_factures') }}" class="menu-sub-link-modern">
  174.                             <span class="menu-bullet-modern"></span>
  175.                             <span>Factures émises</span>
  176.                         </a>
  177.                     </div>
  178.                     <div class="menu-sub-item-modern">
  179.                         <a href="{{ path('facture_electronique_historique_paiements') }}" class="menu-sub-link-modern">
  180.                             <span class="menu-bullet-modern"></span>
  181.                             <span>Paiements</span>
  182.                         </a>
  183.                     </div>
  184.                     <div class="menu-sub-item-modern">
  185.                         <a href="{{ path('facture_electronique_rapports') }}" class="menu-sub-link-modern">
  186.                             <span class="menu-bullet-modern"></span>
  187.                             <span>Rapports</span>
  188.                         </a>
  189.                     </div>
  190.                 </div>
  191.             </div>
  192.         {% endif %}
  193.         
  194.     </div>
  195. </div> #}
  196. <!-- 📄 FACTURE ÉLECTRONIQUE -->
  197. <div class="menu-section-modern">
  198.     <div class="menu-section-header-modern" data-section="facture-electronique">
  199.         <div class="menu-section-title-modern">
  200.             <span class="section-title-text">FACTURE ÉLECTRONIQUE</span>
  201.             <div class="menu-badge-modern">
  202.                 <span class="badge-new-modern">NEW</span>
  203.             </div>
  204.         </div>
  205.         <div class="menu-section-arrow">
  206.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  207.                 <path d="m6 9 6 6 6-6"/>
  208.             </svg>
  209.         </div>
  210.     </div>
  211.     <div class="menu-section-content" id="section-facture-electronique">
  212.         
  213.         {# État du service - À définir dans votre contrôleur #}
  214.         {% set hasCertificate = user_certificate is defined and user_certificate != null %}
  215.         {% set hasDigiGoEmail = digigo_email is defined and digigo_email is not empty %}
  216.         {% set hasTTNConfig = user_ttn_config is defined and user_ttn_config|length > 0 %}
  217.         {% set isActivated = user_activation is defined and user_activation != null %}
  218.         {% set signatures_remaining = user_signatures_remaining is defined ? user_signatures_remaining : 300 %}
  219.         {% set signatures_total = user_signatures_total is defined ? user_signatures_total : 300 %}
  220.         {% set has_factures = donnees_electroniques is defined and donnees_electroniques|length > 0 %}
  221.         
  222.         {# ===== ÉTAPE 1 : CONFIGURATION DIGIGO ===== #}
  223.         <!-- Configuration DigiGo / Email -->
  224.         <div class="menu-item-modern">
  225.             <a class="menu-link-modern" href="{{ path('facture_electronique_setup') }}">
  226.                 <div class="menu-icon-modern">
  227.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  228.                         <rect x="2" y="4" width="20" height="16" rx="2"/>
  229.                         <path d="m22 7-10 7L2 7"/>
  230.                         <circle cx="12" cy="15" r="2"/>
  231.                         <path d="M12 15v-4"/>
  232.                         <path d="M9 11h6"/>
  233.                     </svg>
  234.                 </div>
  235.                 <span class="menu-title-modern">1. Configuration DigiGo</span>
  236.                 {% if hasDigiGoEmail %}
  237.                     <div class="menu-badge-modern">
  238.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">✓ 
  239.                         {# {{ digigo_email }} #}
  240.                         </span>
  241.                     </div>
  242.                 {% else %}
  243.                     {# <div class="menu-badge-modern">
  244.                         <span class="badge-dot-modern"></span>
  245.                     </div> #}
  246.                     {# <div class="menu-badge-modern">
  247.                         <span class="badge-new-modern">*</span>
  248.                     </div> #}
  249.                 {% endif %}
  250.             </a>
  251.         </div>
  252.         
  253.         {# ===== ÉTAPE 2 : CERTIFICAT DE SIGNATURE ===== #}
  254.         <!-- Certificat de signature -->
  255.         <div class="menu-item-modern">
  256.             <a class="menu-link-modern" href="{{ path('facture_electronique_step1') }}">
  257.                 <div class="menu-icon-modern">
  258.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  259.                         <rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
  260.                         <circle cx="12" cy="12" r="2"/>
  261.                         <path d="M12 6v2"/>
  262.                         <path d="M12 16v2"/>
  263.                         <path d="M6 12h2"/>
  264.                         <path d="M16 12h2"/>
  265.                     </svg>
  266.                 </div>
  267.                 <span class="menu-title-modern">2. Certificat de signature</span>
  268.                 {% if hasCertificate %}
  269.                     <div class="menu-badge-modern">
  270.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">ACTIF</span>
  271.                     </div>
  272.                 {% else %}
  273.                     <div class="menu-badge-modern">
  274.                         <span class="badge-dot-modern"></span>
  275.                     </div>
  276.                 {% endif %}
  277.             </a>
  278.         </div>
  279.         
  280.         {# ===== ÉTAPE 3 : CONFIGURATION TTN ===== #}
  281.         <!-- Configuration TTN -->
  282.         <div class="menu-item-modern">
  283.             <a class="menu-link-modern" href="{{ path('facture_electronique_step2') }}">
  284.                 <div class="menu-icon-modern">
  285.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  286.                         <circle cx="12" cy="12" r="10"/>
  287.                         <path d="M12 16v-4"/>
  288.                         <circle cx="12" cy="8" r="1" fill="currentColor"/>
  289.                         <path d="M8 12h8"/>
  290.                     </svg>
  291.                 </div>
  292.                 <span class="menu-title-modern">3. Configuration TTN</span>
  293.                 {% if hasTTNConfig %}
  294.                     <div class="menu-badge-modern">
  295.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">ACTIF</span>
  296.                     </div>
  297.                 {% else %}
  298.                     <div class="menu-badge-modern">
  299.                         <span class="badge-dot-modern"></span>
  300.                     </div>
  301.                 {% endif %}
  302.             </a>
  303.         </div>
  304.         
  305.         {# ===== ÉTAPE 4 : ACTIVATION & PAIEMENT ===== #}
  306.         <!-- Activation et paiement -->
  307.         <div class="menu-item-modern">
  308.             <a class="menu-link-modern" href="{{ path('facture_electronique_step3') }}">
  309.                 <div class="menu-icon-modern">
  310.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  311.                         <rect x="2" y="5" width="20" height="14" rx="2"/>
  312.                         <line x1="2" y1="10" x2="22" y2="10"/>
  313.                         <circle cx="12" cy="15" r="2"/>
  314.                         <path d="M12 15v-3"/>
  315.                         <path d="M9 12h6"/>
  316.                     </svg>
  317.                 </div>
  318.                 <span class="menu-title-modern">4. Activation & paiement</span>
  319.                 {% if isActivated %}
  320.                     <div class="menu-badge-modern">
  321.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">ACTIVÉ</span>
  322.                     </div>
  323.                 {% endif %}
  324.             </a>
  325.         </div>
  326.         
  327.         {# ===== SÉPARATEUR ===== #}
  328.         <div style="height: 1px; background: linear-gradient(90deg, transparent, #e2e8f0, transparent); margin: 0.5rem 1rem;"></div>
  329.         
  330.         {# ===== LIEN RAPIDE VERS LE CERTIFICAT ===== #}
  331.         <!-- Gestion des certificats -->
  332.         <div class="menu-item-modern">
  333.             <a class="menu-link-modern" href="{{ path('facture_electronique_certificate') }}">
  334.                 <div class="menu-icon-modern">
  335.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  336.                         <path d="M4 7h16"/>
  337.                         <path d="M7 7v10"/>
  338.                         <path d="M17 7v10"/>
  339.                         <rect x="4" y="4" width="16" height="16" rx="2"/>
  340.                     </svg>
  341.                 </div>
  342.                 <span class="menu-title-modern">Gestion des certificats</span>
  343.                 {% if hasCertificate %}
  344.                     <div class="menu-badge-modern">
  345.                         <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.7rem;">ACTIF</span>
  346.                     </div>
  347.                 {% endif %}
  348.             </a>
  349.         </div>
  350.         
  351.         {# ===== NOUVEAU : LISTE DES FACTURES ÉLECTRONIQUES ===== #}
  352.         <!-- Liste des factures électroniques (accessible à tous) -->
  353.         <div class="menu-item-modern">
  354.             <a class="menu-link-modern" href="{{ path('facture_electronique_liste') }}">
  355.                 <div class="menu-icon-modern">
  356.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  357.                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  358.                         <polyline points="14 2 14 8 20 8"/>
  359.                         <line x1="16" y1="13" x2="8" y2="13"/>
  360.                         <line x1="16" y1="17" x2="8" y2="17"/>
  361.                         <path d="M10 9h4"/>
  362.                         <path d="M8 9h.01"/>
  363.                     </svg>
  364.                 </div>
  365.                 <span class="menu-title-modern">factures électroniques</span>
  366.                 {% if has_factures %}
  367.                     <div class="menu-badge-modern">
  368.                         <span class="badge bg-primary rounded-pill px-2 py-1" style="font-size: 0.7rem;">
  369.                             {{ donnees_electroniques|length }}
  370.                         </span>
  371.                     </div>
  372.                 {% endif %}
  373.             </a>
  374.         </div>
  375.         
  376.         {# ===== SI SERVICE ACTIVÉ ===== #}
  377.         {% if isActivated %}
  378.             <!-- Dashboard Facture Électronique -->
  379.             <div class="menu-item-modern">
  380.                 <a class="menu-link-modern" href="{{ path('dashboard_facture_electronique') }}">
  381.                     <div class="menu-icon-modern">
  382.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  383.                             <rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
  384.                             <line x1="8" y1="21" x2="16" y2="21"/>
  385.                             <line x1="12" y1="17" x2="12" y2="21"/>
  386.                             <path d="M12 11v-4"/>
  387.                             <circle cx="12" cy="9" r="1" fill="currentColor"/>
  388.                         </svg>
  389.                     </div>
  390.                     <span class="menu-title-modern">Tableau de bord</span>
  391.                 </a>
  392.             </div>
  393.             
  394.             <!-- Compteur de signatures -->
  395.             <div class="menu-item-modern">
  396.                 <div class="menu-link-modern" style="cursor: default;">
  397.                     <div class="menu-icon-modern">
  398.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  399.                             <path d="M4 7h16"/>
  400.                             <path d="M7 7v10"/>
  401.                             <path d="M17 7v10"/>
  402.                             <rect x="4" y="4" width="16" height="16" rx="2"/>
  403.                             <path d="M9 11h6"/>
  404.                             <path d="M12 14v-3"/>
  405.                         </svg>
  406.                     </div>
  407.                     <span class="menu-title-modern">Signatures restantes</span>
  408.                     <div class="menu-badge-modern">
  409.                         <span class="badge bg-info rounded-pill px-2 py-1" style="font-size: 0.75rem; font-weight: 600;">
  410.                             {{ signatures_remaining }} / {{ signatures_total }}
  411.                         </span>
  412.                     </div>
  413.                 </div>
  414.             </div>
  415.             
  416.             <!-- Historique et rapports (accordéon) -->
  417.             <div class="menu-accordion-modern" data-kt-menu-trigger="click">
  418.                 <div class="menu-link-modern menu-accordion-trigger">
  419.                     <div class="menu-icon-modern">
  420.                         <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  421.                             <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  422.                             <polyline points="14 2 14 8 20 8"/>
  423.                             <line x1="16" y1="13" x2="8" y2="13"/>
  424.                             <line x1="16" y1="17" x2="8" y2="17"/>
  425.                             <path d="M10 9h4"/>
  426.                             <path d="M16 21v-4"/>
  427.                         </svg>
  428.                     </div>
  429.                     <span class="menu-title-modern">Historique & rapports</span>
  430.                     <div class="menu-arrow-modern">
  431.                         <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  432.                             <path d="m9 18 6-6-6-6"/>
  433.                         </svg>
  434.                     </div>
  435.                 </div>
  436.                 <div class="menu-sub-modern">
  437.                     <div class="menu-sub-item-modern">
  438.                         <a href="{{ path('facture_electronique_historique_factures') }}" class="menu-sub-link-modern">
  439.                             <span class="menu-bullet-modern"></span>
  440.                             <span>Factures émises</span>
  441.                         </a>
  442.                     </div>
  443.                     <div class="menu-sub-item-modern">
  444.                         <a href="{{ path('facture_electronique_historique_paiements') }}" class="menu-sub-link-modern">
  445.                             <span class="menu-bullet-modern"></span>
  446.                             <span>Paiements</span>
  447.                         </a>
  448.                     </div>
  449.                     <div class="menu-sub-item-modern">
  450.                         <a href="{{ path('facture_electronique_rapports') }}" class="menu-sub-link-modern">
  451.                             <span class="menu-bullet-modern"></span>
  452.                             <span>Rapports mensuels</span>
  453.                         </a>
  454.                     </div>
  455.                 </div>
  456.             </div>
  457.         {% endif %}
  458.         
  459.         {# ===== LIEN D'AIDE ===== #}
  460.         <div class="menu-item-modern">
  461.             <a class="menu-link-modern" href="#" onclick="openSupportModal(); return false;">
  462.                 <div class="menu-icon-modern">
  463.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  464.                         <circle cx="12" cy="12" r="10"/>
  465.                         <path d="M12 16v-4"/>
  466.                         <circle cx="12" cy="8" r="1" fill="currentColor"/>
  467.                     </svg>
  468.                 </div>
  469.                 <span class="menu-title-modern">Aide & support</span>
  470.             </a>
  471.         </div>
  472.         
  473.     </div>
  474. </div>
  475.                 <!-- 📊 TABLEAU DE BORD -->
  476.                 <div class="menu-section-modern">
  477.                     <div class="menu-section-header-modern" data-section="dashboard">
  478.                         <div class="menu-section-title-modern">
  479.                             <span class="section-title-text">TABLEAU DE BORD</span>
  480.                         </div>
  481.                         <div class="menu-section-arrow">
  482.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  483.                                 <path d="m6 9 6 6 6-6"/>
  484.                             </svg>
  485.                         </div>
  486.                     </div>
  487.                     <div class="menu-section-content" id="section-dashboard">
  488.                         <div class="menu-item-modern">
  489.                             <a class="menu-link-modern active" href="/dashboard">
  490.                                 <div class="menu-icon-modern">
  491.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  492.                                         <rect x="3" y="3" width="7" height="7"/>
  493.                                         <rect x="14" y="3" width="7" height="7"/>
  494.                                         <rect x="14" y="14" width="7" height="7"/>
  495.                                         <rect x="3" y="14" width="7" height="7"/>
  496.                                     </svg>
  497.                                 </div>
  498.                                 <span class="menu-title-modern">Tableau de Bord</span>
  499.                             </a>
  500.                         </div>
  501.                     </div>
  502.                 </div>
  503.                 {# <!-- 💼 VENTES (CLIENTS) -->
  504.                 <div class="menu-section-modern">
  505.                     <div class="menu-section-header-modern" data-section="ventes">
  506.                         <div class="menu-section-title-modern">
  507.                             <span class="section-title-text">VENTES (CLIENTS)</span>
  508.                         </div>
  509.                         <div class="menu-section-arrow">
  510.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  511.                                 <path d="m6 9 6 6 6-6"/>
  512.                             </svg>
  513.                         </div>
  514.                     </div>
  515.                     <div class="menu-section-content" id="section-ventes">
  516.                         <!-- Devis & Propositions -->
  517.                         <div class="menu-item-modern">
  518.                             <a class="menu-link-modern" href="/devis/">
  519.                                 <div class="menu-icon-modern">
  520.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  521.                                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  522.                                         <polyline points="14,2 14,8 20,8"/>
  523.                                         <line x1="16" y1="13" x2="8" y2="13"/>
  524.                                         <line x1="16" y1="17" x2="8" y2="17"/>
  525.                                         <path d="M10 9h4"/>
  526.                                     </svg>
  527.                                 </div>
  528.                                 <span class="menu-title-modern">Devis & Propositions</span>
  529.                             </a>
  530.                         </div>
  531.                         
  532.                         
  533.                         <!-- Bons de Livraison -->
  534.                         <div class="menu-item-modern">
  535.                             <a class="menu-link-modern" href="{{ path('devis_index_bon_livraison') }}">
  536.                                 <div class="menu-icon-modern">
  537.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  538.                                         <path d="M12 2v8l4-4"/>
  539.                                         <path d="M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0z"/>
  540.                                         <path d="M16 12l-4 4-4-4"/>
  541.                                         <path d="M12 16V8"/>
  542.                                     </svg>
  543.                                 </div>
  544.                                 <span class="menu-title-modern">Bons de Livraison</span>
  545.                             </a>
  546.                         </div>
  547.         <!-- Bons de Réparation -->
  548.         <div class="menu-item-modern">
  549.             <a class="menu-link-modern" href="{{ path('reparation_index') }}">
  550.                 <div class="menu-icon-modern">
  551.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  552.                         <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/>
  553.                     </svg>
  554.                 </div>
  555.                 <span class="menu-title-modern">Bons de Réparation</span>
  556.             </a>
  557.         </div>
  558.                         
  559.                         <!-- Factures Clients -->
  560.                         <div class="menu-item-modern">
  561.                             <a class="menu-link-modern" href="/facture/">
  562.                                 <div class="menu-icon-modern">
  563.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  564.                                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  565.                                         <polyline points="14,2 14,8 20,8"/>
  566.                                         <line x1="16" y1="13" x2="8" y2="13"/>
  567.                                         <line x1="16" y1="17" x2="8" y2="17"/>
  568.                                         <path d="M10 9h4"/>
  569.                                         <path d="M12 21v-4"/>
  570.                                     </svg>
  571.                                 </div>
  572.                                 <span class="menu-title-modern">Factures Clients</span>
  573.                             </a>
  574.                         </div>
  575.                         
  576.                         <!-- Point de Vente PRO -->
  577.                         <div class="menu-item-modern">
  578.                             <a class="menu-link-modern" href="/caisse/">
  579.                                 <div class="menu-icon-modern">
  580.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  581.                                         <rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
  582.                                         <line x1="8" y1="21" x2="16" y2="21"/>
  583.                                         <line x1="12" y1="17" x2="12" y2="21"/>
  584.                                         <circle cx="12" cy="10" r="2"/>
  585.                                         <path d="M12 14v-4"/>
  586.                                         <path d="M16 10h4"/>
  587.                                     </svg>
  588.                                 </div>
  589.                                 <span class="menu-title-modern">Point de Vente PRO</span>
  590.                                 <div class="menu-badge-modern">
  591.                                     <span class="badge-new-modern">PRO</span>
  592.                                 </div>
  593.                             </a>
  594.                         </div>
  595.                     </div>
  596.                 </div> #}
  597.  <!-- 💼 VENTES (CLIENTS) -->
  598. <div class="menu-section-modern">
  599.     <div class="menu-section-header-modern" data-section="ventes">
  600.         <div class="menu-section-title-modern">
  601.             <span class="section-title-text">VENTES (CLIENTS)</span>
  602.         </div>
  603.         <div class="menu-section-arrow">
  604.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  605.                 <path d="m6 9 6 6 6-6"/>
  606.             </svg>
  607.         </div>
  608.     </div>
  609.     <div class="menu-section-content" id="section-ventes">
  610.         <!-- Devis & Propositions -->
  611.         <div class="menu-item-modern">
  612.             <a class="menu-link-modern" href="/devis/">
  613.                 <div class="menu-icon-modern">
  614.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  615.                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  616.                         <polyline points="14,2 14,8 20,8"/>
  617.                         <line x1="16" y1="13" x2="8" y2="13"/>
  618.                         <line x1="16" y1="17" x2="8" y2="17"/>
  619.                         <path d="M10 9h4"/>
  620.                     </svg>
  621.                 </div>
  622.                 <span class="menu-title-modern">Devis & Propositions</span>
  623.             </a>
  624.         </div>
  625.         
  626.         <!-- Bons de Livraison -->
  627.         <div class="menu-item-modern">
  628.             <a class="menu-link-modern" href="{{ path('devis_index_bon_livraison') }}">
  629.                 <div class="menu-icon-modern">
  630.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  631.                         <path d="M12 2v8l4-4"/>
  632.                         <path d="M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0z"/>
  633.                         <path d="M16 12l-4 4-4-4"/>
  634.                         <path d="M12 16V8"/>
  635.                     </svg>
  636.                 </div>
  637.                 <span class="menu-title-modern">Bons de Livraison</span>
  638.             </a>
  639.         </div>
  640.         <!-- Bons de Réparation -->
  641.         <div class="menu-item-modern">
  642.             <a class="menu-link-modern" href="{{ path('reparation_index') }}">
  643.                 <div class="menu-icon-modern">
  644.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  645.                         <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/>
  646.                     </svg>
  647.                 </div>
  648.                 <span class="menu-title-modern">Bons de Réparation</span>
  649.             </a>
  650.         </div>
  651.         
  652.         <!-- Factures Clients -->
  653.         <div class="menu-item-modern">
  654.             <a class="menu-link-modern" href="/facture/">
  655.                 <div class="menu-icon-modern">
  656.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  657.                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  658.                         <polyline points="14,2 14,8 20,8"/>
  659.                         <line x1="16" y1="13" x2="8" y2="13"/>
  660.                         <line x1="16" y1="17" x2="8" y2="17"/>
  661.                         <path d="M10 9h4"/>
  662.                         <path d="M12 21v-4"/>
  663.                     </svg>
  664.                 </div>
  665.                 <span class="menu-title-modern">Factures Clients</span>
  666.             </a>
  667.         </div>
  668.         
  669.         <!-- Retours Clients -->
  670.         <div class="menu-item-modern">
  671.             <a class="menu-link-modern" href="{{ path('retour_client_index') }}">
  672.                 <div class="menu-icon-modern">
  673.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  674.                         <path d="m3 3 3 9h12l3-9H3z"/>
  675.                         <path d="M6 12h12"/>
  676.                         <path d="M12 3v18"/>
  677.                         <path d="M15 6l-3 3 3 3"/>
  678.                         <path d="M9 6l3-3-3-3"/>
  679.                     </svg>
  680.                 </div>
  681.                 <span class="menu-title-modern">Retours Clients</span>
  682.             </a>
  683.         </div>
  684.         
  685.         <!-- Point de Vente PRO -->
  686.         <div class="menu-item-modern">
  687.             <a class="menu-link-modern" href="/caisse/">
  688.                 <div class="menu-icon-modern">
  689.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  690.                         <rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
  691.                         <line x1="8" y1="21" x2="16" y2="21"/>
  692.                         <line x1="12" y1="17" x2="12" y2="21"/>
  693.                         <circle cx="12" cy="10" r="2"/>
  694.                         <path d="M12 14v-4"/>
  695.                         <path d="M16 10h4"/>
  696.                     </svg>
  697.                 </div>
  698.                 <span class="menu-title-modern">Point de Vente PRO</span>
  699.                 <div class="menu-badge-modern">
  700.                     <span class="badge-new-modern">PRO</span>
  701.                 </div>
  702.             </a>
  703.         </div>
  704.         <!-- Rapports de vente (par salarié) -->
  705.         <div class="menu-item-modern">
  706.             <a class="menu-link-modern" href="{{ path('caisse_rapports_vendeurs') }}">
  707.                 <div class="menu-icon-modern">
  708.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  709.                         <path d="M3 3v18h18"/>
  710.                         <path d="M18 17V9"/>
  711.                         <path d="M13 17V5"/>
  712.                         <path d="M8 17v-3"/>
  713.                     </svg>
  714.                 </div>
  715.                 <span class="menu-title-modern">Rapports de vente</span>
  716.             </a>
  717.         </div>
  718.         <!-- Clôtures de caisse -->
  719.         <div class="menu-item-modern">
  720.             <a class="menu-link-modern" href="{{ path('caisse_cloture_index') }}">
  721.                 <div class="menu-icon-modern">
  722.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  723.                         <rect x="3" y="11" width="18" height="10" rx="2"/>
  724.                         <path d="M7 11V7a5 5 0 0 1 10 0v4"/>
  725.                     </svg>
  726.                 </div>
  727.                 <span class="menu-title-modern">Clôtures de caisse</span>
  728.             </a>
  729.         </div>
  730.     </div>
  731. </div>
  732. {#
  733.                 <!-- 🏪 ACHATS (FOURNISSEURS) -->
  734.                 <div class="menu-section-modern">
  735.                     <div class="menu-section-header-modern" data-section="achats">
  736.                         <div class="menu-section-title-modern">
  737.                             <span class="section-title-text">ACHATS (FOURNISSEURS)</span>
  738.                         </div>
  739.                         <div class="menu-section-arrow">
  740.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  741.                                 <path d="m6 9 6 6 6-6"/>
  742.                             </svg>
  743.                         </div>
  744.                     </div>
  745.                     <div class="menu-section-content" id="section-achats">
  746.                         <!-- Fournisseurs -->
  747.                         <div class="menu-item-modern">
  748.                             <a class="menu-link-modern" href="/fournisseur/">
  749.                                 <div class="menu-icon-modern">
  750.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  751.                                         <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
  752.                                         <circle cx="9" cy="7" r="4"/>
  753.                                         <path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
  754.                                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  755.                                     </svg>
  756.                                 </div>
  757.                                 <span class="menu-title-modern">Fournisseurs</span>
  758.                             </a>
  759.                         </div>
  760.                          <!-- Bons de Commande -->
  761.               
  762.                  <!-- Bons de Commande Achat - À DÉVELOPPER -->
  763.                         <div class="menu-item-modern">
  764.                             <a class="menu-link-modern" href="{{ path('devis_index_bon_commande') }}">
  765.                                 <div class="menu-icon-modern">
  766.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  767.                                         <rect x="2" y="7" width="20" height="14" rx="2"/>
  768.                                         <path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/>
  769.                                         <path d="M8 11h8"/>
  770.                                         <path d="M8 15h8"/>
  771.                                         <circle cx="12" cy="4" r="1"/>
  772.                                     </svg>
  773.                                 </div>
  774.                                 <span class="menu-title-modern">Bons de Commande Achat</span>
  775.                                  
  776.                             </a>
  777.                         </div>
  778.                         <!-- Réceptions (Entrées Stock) -->
  779.                         <div class="menu-item-modern">
  780.                             <a class="menu-link-modern" href="/entrees/">
  781.                                 <div class="menu-icon-modern">
  782.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  783.                                         <path d="M5 12h14"/>
  784.                                         <path d="M12 5v14"/>
  785.                                         <rect x="3" y="3" width="18" height="18" rx="2"/>
  786.                                         <path d="M8 8h8v8H8z"/>
  787.                                     </svg>
  788.                                 </div>
  789.                                 <span class="menu-title-modern">Réceptions (Entrées Stock)</span>
  790.                             </a>
  791.                         </div>
  792.                         
  793.                         <!-- Retours Fournisseurs -->
  794.                         <div class="menu-item-modern">
  795.                             <a class="menu-link-modern" href="">
  796.                                 <div class="menu-icon-modern">
  797.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  798.                                         <path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
  799.                                         <polyline points="9 22 9 12 15 12 15 22"/>
  800.                                         <path d="m9 12 3-3 3 3"/>
  801.                                         <path d="M12 16v-4"/>
  802.                                     </svg>
  803.                                 </div>
  804.                                 <span class="menu-title-modern">Retours Fournisseurs</span>
  805.                             </a>
  806.                         </div>
  807.                         
  808.  
  809.                         
  810.                         <!-- Factures Fournisseurs - À DÉVELOPPER -->
  811.                         <div class="menu-item-modern">
  812.                             <a class="menu-link-modern" href="">
  813.                                 <div class="menu-icon-modern">
  814.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  815.                                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  816.                                         <polyline points="14,2 14,8 20,8"/>
  817.                                         <line x1="16" y1="13" x2="8" y2="13"/>
  818.                                         <line x1="16" y1="17" x2="8" y2="17"/>
  819.                                         <path d="M8 9h8"/>
  820.                                         <path d="M12 21v-4"/>
  821.                                     </svg>
  822.                                 </div>
  823.                                 <span class="menu-title-modern">Factures Fournisseurs</span>
  824.                                 <div class="menu-badge-modern">
  825.                                     <span class="badge-dev-modern">À DÉV</span>
  826.                                 </div>
  827.                             </a>
  828.                         </div>
  829.                     </div>
  830.                 </div> #}
  831. <!-- 🏪 ACHATS (FOURNISSEURS) -->
  832. <div class="menu-section-modern">
  833.     <div class="menu-section-header-modern" data-section="achats">
  834.         <div class="menu-section-title-modern">
  835.             <span class="section-title-text">ACHATS (FOURNISSEURS)</span>
  836.         </div>
  837.         <div class="menu-section-arrow">
  838.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  839.                 <path d="m6 9 6 6 6-6"/>
  840.             </svg>
  841.         </div>
  842.     </div>
  843.     <div class="menu-section-content" id="section-achats">
  844.         <!-- Fournisseurs -->
  845.         <div class="menu-item-modern">
  846.             <a class="menu-link-modern" href="/fournisseur/">
  847.                 <div class="menu-icon-modern">
  848.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  849.                         <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
  850.                         <circle cx="9" cy="7" r="4"/>
  851.                         <path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
  852.                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  853.                     </svg>
  854.                 </div>
  855.                 <span class="menu-title-modern">Fournisseurs</span>
  856.             </a>
  857.         </div>
  858.         
  859.         <!-- Bons de Commande Achat -->
  860.         <div class="menu-item-modern">
  861.             <a class="menu-link-modern" href="{{ path('devis_index_bon_commande') }}">
  862.                 <div class="menu-icon-modern">
  863.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  864.                         <rect x="2" y="7" width="20" height="14" rx="2"/>
  865.                         <path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/>
  866.                         <path d="M8 11h8"/>
  867.                         <path d="M8 15h8"/>
  868.                         <circle cx="12" cy="4" r="1"/>
  869.                     </svg>
  870.                 </div>
  871.                 <span class="menu-title-modern">Bons de Commande Achat</span>
  872.             </a>
  873.         </div>
  874.         
  875.         <!-- Réceptions (Entrées Stock) -->
  876.         <div class="menu-item-modern">
  877.             <a class="menu-link-modern" href="/entrees/">
  878.                 <div class="menu-icon-modern">
  879.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  880.                         <path d="M5 12h14"/>
  881.                         <path d="M12 5v14"/>
  882.                         <rect x="3" y="3" width="18" height="18" rx="2"/>
  883.                         <path d="M8 8h8v8H8z"/>
  884.                     </svg>
  885.                 </div>
  886.                 <span class="menu-title-modern">Réceptions (Entrées Stock)</span>
  887.             </a>
  888.         </div>
  889.         
  890.         <!-- Retours Fournisseurs -->
  891.         <div class="menu-item-modern">
  892.             <a class="menu-link-modern" href="{{ path('retour_fournisseur_index') }}">
  893.                 <div class="menu-icon-modern">
  894.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  895.                         <path d="m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
  896.                         <polyline points="9 22 9 12 15 12 15 22"/>
  897.                         <path d="m9 12 3-3 3 3"/>
  898.                         <path d="M12 16v-4"/>
  899.                     </svg>
  900.                 </div>
  901.                 <span class="menu-title-modern">Retours Fournisseurs</span>
  902.             </a>
  903.         </div>
  904.         
  905.         <!-- Factures Fournisseurs -->
  906.         <div class="menu-item-modern">
  907.             <a class="menu-link-modern" href="{{ path('facture_fournisseur_index') }}">
  908.                 <div class="menu-icon-modern">
  909.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  910.                         <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
  911.                         <polyline points="14,2 14,8 20,8"/>
  912.                         <line x1="16" y1="13" x2="8" y2="13"/>
  913.                         <line x1="16" y1="17" x2="8" y2="17"/>
  914.                         <path d="M8 9h8"/>
  915.                         <path d="M12 21v-4"/>
  916.                     </svg>
  917.                 </div>
  918.                 <span class="menu-title-modern">Factures Fournisseurs</span>
  919.             </a>
  920.         </div>
  921.     </div>
  922. </div>
  923.                 <!-- 📦 STOCK & LOGISTIQUE -->
  924.                 <div class="menu-section-modern">
  925.                     <div class="menu-section-header-modern" data-section="stock">
  926.                         <div class="menu-section-title-modern">
  927.                             <span class="section-title-text">STOCK & LOGISTIQUE</span>
  928.                         </div>
  929.                         <div class="menu-section-arrow">
  930.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  931.                                 <path d="m6 9 6 6 6-6"/>
  932.                             </svg>
  933.                         </div>
  934.                     </div>
  935.                     <div class="menu-section-content" id="section-stock">
  936.                         <!-- Stock Global -->
  937.                         <div class="menu-item-modern">
  938.                             <a class="menu-link-modern" href="/stock/">
  939.                                 <div class="menu-icon-modern">
  940.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  941.                                         <path d="M3 9h18v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V9Z"/>
  942.                                         <path d="m3 9 2.45-4.9A2 2 0 0 1 7.24 3h9.52a2 2 0 0 1 1.8 1.1L21 9"/>
  943.                                         <path d="M12 3v6"/>
  944.                                         <path d="M9 12l3 3 3-3"/>
  945.                                         <path d="M12 15v6"/>
  946.                                     </svg>
  947.                                 </div>
  948.                                 <span class="menu-title-modern">Stock Global</span>
  949.                             </a>
  950.                         </div>
  951.                         
  952.                         <!-- Expéditions (Sorties) -->
  953.                         <div class="menu-item-modern">
  954.                             <a class="menu-link-modern" href="/sorties/">
  955.                                 <div class="menu-icon-modern">
  956.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  957.                                         <path d="M5 12h14"/>
  958.                                         <path d="M12 5l7 7-7 7"/>
  959.                                         <rect x="3" y="3" width="18" height="18" rx="2"/>
  960.                                         <path d="M8 8h8v8H8z"/>
  961.                                     </svg>
  962.                                 </div>
  963.                                 <span class="menu-title-modern">Expéditions (Sorties)</span>
  964.                             </a>
  965.                         </div>
  966.                         
  967.                         <!-- Réceptions (Entrées) -->
  968.                         <div class="menu-item-modern">
  969.                             <a class="menu-link-modern" href="/entrees/">
  970.                                 <div class="menu-icon-modern">
  971.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  972.                                         <path d="M5 12h14"/>
  973.                                         <path d="M12 5v14"/>
  974.                                         <rect x="3" y="3" width="18" height="18" rx="2"/>
  975.                                         <path d="M8 8h8v8H8z"/>
  976.                                     </svg>
  977.                                 </div>
  978.                                 <span class="menu-title-modern">Réceptions (Entrées)</span>
  979.                             </a>
  980.                         </div>
  981.                         
  982.                         <!-- Inventaire -->
  983.                         <div class="menu-item-modern">
  984.                             <a class="menu-link-modern" href="{{ path('inventaire_index') }}">
  985.                                 <div class="menu-icon-modern">
  986.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  987.                                         <rect x="3" y="3" width="18" height="18" rx="2"/>
  988.                                         <path d="M3 9h18"/>
  989.                                         <path d="M9 21V9"/>
  990.                                         <path d="M15 21V9"/>
  991.                                         <path d="M12 9v12"/>
  992.                                     </svg>
  993.                                 </div>
  994.                                 <span class="menu-title-modern">Inventaire</span>
  995.                             </a>
  996.                         </div>
  997.                     </div>
  998.                 </div>
  999.                 <!-- 👥 CONTACTS & DONNÉES -->
  1000.                 <div class="menu-section-modern">
  1001.                     <div class="menu-section-header-modern" data-section="contacts">
  1002.                         <div class="menu-section-title-modern">
  1003.                             <span class="section-title-text">CONTACTS & DONNÉES</span>
  1004.                         </div>
  1005.                         <div class="menu-section-arrow">
  1006.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1007.                                 <path d="m6 9 6 6 6-6"/>
  1008.                             </svg>
  1009.                         </div>
  1010.                     </div>
  1011.                     <div class="menu-section-content" id="section-contacts">
  1012.                         <!-- Clients -->
  1013.                         <div class="menu-item-modern">
  1014.                             <a class="menu-link-modern" href="/client/">
  1015.                                 <div class="menu-icon-modern">
  1016.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1017.                                         <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
  1018.                                         <circle cx="12" cy="7" r="4"/>
  1019.                                         <path d="M16 21v-2a4 4 0 0 0-4-4H8"/>
  1020.                                     </svg>
  1021.                                 </div>
  1022.                                 <span class="menu-title-modern">Clients</span>
  1023.                             </a>
  1024.                         </div>
  1025.                         
  1026.                         <!-- Fournisseurs -->
  1027.                         <div class="menu-item-modern">
  1028.                             <a class="menu-link-modern" href="/fournisseur/">
  1029.                                 <div class="menu-icon-modern">
  1030.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1031.                                         <path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/>
  1032.                                         <circle cx="9" cy="7" r="4"/>
  1033.                                         <path d="M23 21v-2a4 4 0 0 0-3-3.87"/>
  1034.                                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  1035.                                     </svg>
  1036.                                 </div>
  1037.                                 <span class="menu-title-modern">Fournisseurs</span>
  1038.                             </a>
  1039.                         </div>
  1040.                         
  1041.                         <!-- Produits & Services -->
  1042.                         <div class="menu-item-modern">
  1043.                             <a class="menu-link-modern" href="/produit/">
  1044.                                 <div class="menu-icon-modern">
  1045.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1046.                                         <path d="m7.5 4.27 9 5.15"/>
  1047.                                         <path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/>
  1048.                                         <path d="m3.3 7 8.7 5 8.7-5"/>
  1049.                                         <path d="M12 22V12"/>
  1050.                                         <circle cx="12" cy="12" r="2"/>
  1051.                                     </svg>
  1052.                                 </div>
  1053.                                 <span class="menu-title-modern">Produits & Services</span>
  1054.                             </a>
  1055.                         </div>
  1056.                     </div>
  1057.                 </div>
  1058.                 <!-- 📈 MARKETING (PRO) -->
  1059.                 <div class="menu-section-modern">
  1060.                     <div class="menu-section-header-modern" data-section="marketing">
  1061.                         <div class="menu-section-title-modern">
  1062.                             <span class="section-title-text">MARKETING (PRO)</span>
  1063.                         </div>
  1064.                         <div class="menu-section-arrow">
  1065.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1066.                                 <path d="m6 9 6 6 6-6"/>
  1067.                             </svg>
  1068.                         </div>
  1069.                     </div>
  1070.                     <div class="menu-section-content" id="section-marketing">
  1071.                         <!-- Prospection Email PRO -->
  1072.                         <div class="menu-item-modern">
  1073.                             <a class="menu-link-modern" href="/prospect/email">
  1074.                                 <div class="menu-icon-modern">
  1075.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1076.                                         <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/>
  1077.                                         <polyline points="22,6 12,13 2,6"/>
  1078.                                         <path d="M12 13l10-7"/>
  1079.                                         <path d="M2 6l10 7 10-7"/>
  1080.                                     </svg>
  1081.                                 </div>
  1082.                                 <span class="menu-title-modern">Prospection Email PRO</span>
  1083.                                 <div class="menu-badge-modern">
  1084.                                     <span class="badge-new-modern">PRO</span>
  1085.                                 </div>
  1086.                             </a>
  1087.                         </div>
  1088.                         
  1089.                         <!-- Prospection IA PRO -->
  1090.                         <div class="menu-item-modern">
  1091.                             <a class="menu-link-modern" href="/prospect/centres">
  1092.                                 <div class="menu-icon-modern">
  1093.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1094.                                         <path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/>
  1095.                                         <path d="M12 2.5v19"/>
  1096.                                         <path d="M2 8l10 6 10-6"/>
  1097.                                         <path d="M12 22V12"/>
  1098.                                         <circle cx="12" cy="12" r="2"/>
  1099.                                     </svg>
  1100.                                 </div>
  1101.                                 <span class="menu-title-modern">Prospection IA PRO</span>
  1102.                                 <div class="menu-badge-modern">
  1103.                                     <span class="badge-new-modern">PRO</span>
  1104.                                 </div>
  1105.                             </a>
  1106.                         </div>
  1107.                         
  1108.                         <!-- Dashboard Prospect PRO -->
  1109.                         <div class="menu-item-modern">
  1110.                             <a class="menu-link-modern" href="/dashboard-prospect">
  1111.                                 <div class="menu-icon-modern">
  1112.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1113.                                         <line x1="12" y1="20" x2="12" y2="10"/>
  1114.                                         <line x1="18" y1="20" x2="18" y2="4"/>
  1115.                                         <line x1="6" y1="20" x2="6" y2="16"/>
  1116.                                         <circle cx="12" cy="10" r="2"/>
  1117.                                         <circle cx="18" cy="4" r="2"/>
  1118.                                         <circle cx="6" cy="16" r="2"/>
  1119.                                         <path d="M12 10v10"/>
  1120.                                         <path d="M18 4v16"/>
  1121.                                         <path d="M6 16v4"/>
  1122.                                     </svg>
  1123.                                 </div>
  1124.                                 <span class="menu-title-modern">Dashboard Prospect PRO</span>
  1125.                                 <div class="menu-badge-modern">
  1126.                                     <span class="badge-new-modern">PRO</span>
  1127.                                 </div>
  1128.                             </a>
  1129.                         </div>
  1130.                         
  1131.                         <!-- Site Web Pro -->
  1132.                         <div class="menu-accordion-modern" data-kt-menu-trigger="click">
  1133.                             <div class="menu-link-modern menu-accordion-trigger">
  1134.                                 <div class="menu-icon-modern">
  1135.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1136.                                         <circle cx="12" cy="12" r="10"/>
  1137.                                         <path d="m4.93 4.93 4.24 4.24"/>
  1138.                                         <path d="m14.83 9.17 4.24-4.24"/>
  1139.                                         <path d="m14.83 14.83 4.24 4.24"/>
  1140.                                         <path d="m9.17 14.83-4.24 4.24"/>
  1141.                                         <path d="M12 2v20"/>
  1142.                                         <path d="M2 12h20"/>
  1143.                                     </svg>
  1144.                                 </div>
  1145.                                 <span class="menu-title-modern">Site Web Pro</span>
  1146.                                 <div class="menu-arrow-modern">
  1147.                                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1148.                                         <path d="m9 18 6-6-6-6"/>
  1149.                                     </svg>
  1150.                                 </div>
  1151.                             </div>
  1152.                             <div class="menu-sub-modern">
  1153.                                 <div class="menu-sub-item-modern">
  1154.                                     <a href="/frontend" class="menu-sub-link-modern">
  1155.                                         <span class="menu-bullet-modern"></span>
  1156.                                         <span>Créer Mon Site</span>
  1157.                                     </a>
  1158.                                 </div>
  1159.                                 <div class="menu-sub-item-modern">
  1160.                                     <a href="/voir-mon-site" class="menu-sub-link-modern">
  1161.                                         <span class="menu-bullet-modern"></span>
  1162.                                         <span>Voir Mon Site</span>
  1163.                                     </a>
  1164.                                 </div>
  1165.                             </div>
  1166.                         </div>
  1167.                     </div>
  1168.                 </div>
  1169.                 <!-- ⚙️ PARAMÈTRES -->
  1170.                 <div class="menu-section-modern">
  1171.                     <div class="menu-section-header-modern" data-section="parametres">
  1172.                         <div class="menu-section-title-modern">
  1173.                             <span class="section-title-text">PARAMÈTRES</span>
  1174.                         </div>
  1175.                         <div class="menu-section-arrow">
  1176.                             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1177.                                 <path d="m6 9 6 6 6-6"/>
  1178.                             </svg>
  1179.                         </div>
  1180.                     </div>
  1181.                     <div class="menu-section-content" id="section-parametres">
  1182.                         <!-- Mon Entreprise -->
  1183.                         <div class="menu-item-modern">
  1184.                             <a class="menu-link-modern" href="/entreprise/">
  1185.                                 <div class="menu-icon-modern">
  1186.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1187.                                         <path d="M3 21h18"/>
  1188.                                         <path d="M5 21V7l8-4v18"/>
  1189.                                         <path d="M19 21V11l-6-4"/>
  1190.                                         <path d="M9 9h6"/>
  1191.                                         <path d="M9 13h6"/>
  1192.                                         <path d="M9 17h6"/>
  1193.                                     </svg>
  1194.                                 </div>
  1195.                                 <span class="menu-title-modern">Mon Entreprise</span>
  1196.                             </a>
  1197.                         </div>
  1198.                         <!-- Salariés -->
  1199.                         <div class="menu-item-modern">
  1200.                             <a class="menu-link-modern" href="{{ path('salarie_index') }}">
  1201.                                 <div class="menu-icon-modern">
  1202.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1203.                                         <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
  1204.                                         <circle cx="9" cy="7" r="4"/>
  1205.                                         <path d="M22 21v-2a4 4 0 0 0-3-3.87"/>
  1206.                                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  1207.                                     </svg>
  1208.                                 </div>
  1209.                                 <span class="menu-title-modern">Salariés</span>
  1210.                             </a>
  1211.                         </div>
  1212.                         <!-- Mon Compte -->
  1213.                         <div class="menu-item-modern">
  1214.                             <a class="menu-link-modern" href="">
  1215.                                 <div class="menu-icon-modern">
  1216.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1217.                                         <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
  1218.                                         <circle cx="12" cy="7" r="4"/>
  1219.                                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  1220.                                         <path d="M12 12v4"/>
  1221.                                     </svg>
  1222.                                 </div>
  1223.                                 <span class="menu-title-modern">Mon Compte</span>
  1224.                             </a>
  1225.                         </div>
  1226.                         
  1227.                         <!-- Intégrations -->
  1228.                         <div class="menu-item-modern">
  1229.                             <a class="menu-link-modern" href="">
  1230.                                 <div class="menu-icon-modern">
  1231.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1232.                                         <path d="M12 2v8l4-4"/>
  1233.                                         <path d="M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0z"/>
  1234.                                         <path d="M8 12h8"/>
  1235.                                         <path d="m12 16 4-4-4-4"/>
  1236.                                         <circle cx="12" cy="12" r="2"/>
  1237.                                     </svg>
  1238.                                 </div>
  1239.                                 <span class="menu-title-modern">Intégrations</span>
  1240.                             </a>
  1241.                         </div>
  1242.                         
  1243.                         <!-- Équipe & Utilisateurs (Admin seulement) -->
  1244.                         {% if is_granted('ROLE_ADMIN') %}
  1245.                         <div class="menu-item-modern">
  1246.                             <a class="menu-link-modern" href="/utilisateurs/">
  1247.                                 <div class="menu-icon-modern">
  1248.                                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1249.                                         <path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/>
  1250.                                         <circle cx="9" cy="7" r="4"/>
  1251.                                         <path d="m22 21-3-3m0 0a5.5 5.5 0 1 0-7.78-7.78 5.5 5.5 0 0 0 7.78 7.78Z"/>
  1252.                                         <path d="M16 3.13a4 4 0 0 1 0 7.75"/>
  1253.                                     </svg>
  1254.                                 </div>
  1255.                                 <span class="menu-title-modern">Équipe & Utilisateurs</span>
  1256.                                 <div class="menu-badge-modern">
  1257.                                     <span class="badge-admin-modern">ADMIN</span>
  1258.                                 </div>
  1259.                             </a>
  1260.                         </div>
  1261.                         {% endif %}
  1262.                     </div>
  1263.                 </div>
  1264. <!-- 🎫 TICKETS & SUPPORT -->
  1265. <div class="menu-section-modern">
  1266.     <div class="menu-section-header-modern" data-section="tickets">
  1267.         <div class="menu-section-title-modern">
  1268.             <span class="section-title-text">TICKETS & SUPPORT</span>
  1269.                                                 <div class="menu-badge-modern">
  1270.                         <span class="badge-new-modern">NEW</span>
  1271.                     </div>
  1272.         </div>
  1273.         <div class="menu-section-arrow">
  1274.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1275.                 <path d="m6 9 6 6 6-6"/>
  1276.             </svg>
  1277.         </div>
  1278.     </div>
  1279.     <div class="menu-section-content" id="section-tickets">
  1280.         
  1281.         <!-- ✅ LIEN PRINCIPAL - DYNAMIQUE SELON LE RÔLE -->
  1282.         <div class="menu-item-modern">
  1283.             <a class="menu-link-modern" href="{{ path('ticket_index') }}">
  1284.                 <div class="menu-icon-modern">
  1285.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1286.                         <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
  1287.                         <path d="M8 10h.01"/>
  1288.                         <path d="M12 10h.01"/>
  1289.                         <path d="M16 10h.01"/>
  1290.                     </svg>
  1291.                 </div>
  1292.                 <span class="menu-title-modern">
  1293.                     {% if is_granted('ROLE_ADMIN') %}
  1294.                         Gestion des tickets
  1295.                     {% else %}
  1296.                         Mes tickets
  1297.                     {% endif %}
  1298.                 </span>
  1299.                 
  1300.                 <!-- BADGE AVEC NOMBRE DE TICKETS -->
  1301.                 <div class="menu-badge-modern">
  1302.                     {% set ticket_count = tickets_count ?? 0 %}
  1303.                     {% if ticket_count > 0 %}
  1304.                         <span class="badge bg-{% if is_granted('ROLE_ADMIN') %}primary{% else %}info{% endif %} rounded-pill px-2 py-1" 
  1305.                               style="font-size: 0.7rem; background: {% if is_granted('ROLE_ADMIN') %}#3b82f6{% else %}#0ea5e9{% endif %}; color: white;">
  1306.                             {{ ticket_count }}
  1307.                         </span>
  1308.                     {% else %}
  1309.                         <span class="badge-dot-modern"></span>
  1310.                     {% endif %}
  1311.                 </div>
  1312.             </a>
  1313.         </div>
  1314.         
  1315.         <!-- LIEN RAPIDE: CRÉER UN TICKET (OPTIONNEL) -->
  1316.         <div class="menu-item-modern">
  1317.             <a class="menu-link-modern" href="#" onclick="openTicketModal(); return false;">
  1318.                 <div class="menu-icon-modern">
  1319.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1320.                         <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
  1321.                         <line x1="9" y1="10" x2="15" y2="10"/>
  1322.                         <line x1="12" y1="7" x2="12" y2="13"/>
  1323.                     </svg>
  1324.                 </div>
  1325.                 <span class="menu-title-modern">Nouveau ticket</span>
  1326.                 <div class="menu-badge-modern">
  1327.                     <span class="badge-new-modern" style="background: #10b981;">+</span>
  1328.                 </div>
  1329.             </a>
  1330.         </div>
  1331.         
  1332.     </div>
  1333. </div>
  1334. <!-- 🎓 FORMATION & TUTORIELS -->
  1335. <div class="menu-section-modern">
  1336.     <div class="menu-section-header-modern" data-section="formation">
  1337.         <div class="menu-section-title-modern">
  1338.             <span class="section-title-text">FORMATION & TUTORIELS</span>
  1339.             <div class="menu-badge-modern">
  1340.                 <span class="badge-new-modern">NEW</span>
  1341.             </div>
  1342.         </div>
  1343.         <div class="menu-section-arrow">
  1344.             <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1345.                 <path d="m6 9 6 6 6-6"/>
  1346.             </svg>
  1347.         </div>
  1348.     </div>
  1349.     <div class="menu-section-content" id="section-formation">
  1350.         
  1351.         <!-- Centre de formation -->
  1352.         <div class="menu-item-modern">
  1353.             <a class="menu-link-modern" href="{{ path('formation_index') }}">
  1354.                 <div class="menu-icon-modern">
  1355.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1356.                         <path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/>
  1357.                         <polyline points="3.27 6.96 12 12.01 20.73 6.96"/>
  1358.                         <line x1="12" y1="22.08" x2="12" y2="12"/>
  1359.                         <circle cx="12" cy="12" r="2"/>
  1360.                     </svg>
  1361.                 </div>
  1362.                 <span class="menu-title-modern">Centre de formation</span>
  1363.                 <div class="menu-badge-modern">
  1364.                     <span class="badge bg-primary rounded-pill px-2 py-1" style="font-size: 0.7rem;">
  1365.                         6
  1366.                     </span>
  1367.                 </div>
  1368.             </a>
  1369.         </div>
  1370.         <!-- Séparateur -->
  1371.         <div style="height: 1px; background: linear-gradient(90deg, transparent, #e2e8f0, transparent); margin: 0.5rem 1rem;"></div>
  1372.         <!-- Démo générale -->
  1373.         <div class="menu-item-modern">
  1374.             <a class="menu-link-modern" href="{{ path('formation_video', {id: 1}) }}">
  1375.                 <div class="menu-icon-modern">
  1376.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1377.                         <polygon points="5 3 19 12 5 21 5 3"/>
  1378.                         <circle cx="12" cy="12" r="10"/>
  1379.                     </svg>
  1380.                 </div>
  1381.                 <span class="menu-title-modern">Démo Mazego complète</span>
  1382.                 <div class="menu-badge-modern">
  1383.                     <span class="badge bg-success rounded-pill px-2 py-1" style="font-size: 0.65rem;">15 min</span>
  1384.                 </div>
  1385.             </a>
  1386.         </div>
  1387.         <!-- Tutoriels par catégorie (accordéon) -->
  1388.         <div class="menu-accordion-modern" data-kt-menu-trigger="click">
  1389.             <div class="menu-link-modern menu-accordion-trigger">
  1390.                 <div class="menu-icon-modern">
  1391.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1392.                         <rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
  1393.                         <line x1="9" y1="9" x2="15" y2="9"/>
  1394.                         <line x1="9" y1="13" x2="15" y2="13"/>
  1395.                         <line x1="9" y1="17" x2="15" y2="17"/>
  1396.                         <circle cx="6" cy="9" r="1"/>
  1397.                         <circle cx="6" cy="13" r="1"/>
  1398.                         <circle cx="6" cy="17" r="1"/>
  1399.                     </svg>
  1400.                 </div>
  1401.                 <span class="menu-title-modern">Tutoriels par module</span>
  1402.                 <div class="menu-arrow-modern">
  1403.                     <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1404.                         <path d="m9 18 6-6-6-6"/>
  1405.                     </svg>
  1406.                 </div>
  1407.             </div>
  1408.             <div class="menu-sub-modern">
  1409.                 <div class="menu-sub-item-modern">
  1410.                     <a href="{{ path('formation_video', {id: 2}) }}" class="menu-sub-link-modern">
  1411.                         <span class="menu-bullet-modern"></span>
  1412.                         <span>Créer un devis</span>
  1413.                     </a>
  1414.                 </div>
  1415.                 <div class="menu-sub-item-modern">
  1416.                     <a href="{{ path('formation_video', {id: 3}) }}" class="menu-sub-link-modern">
  1417.                         <span class="menu-bullet-modern"></span>
  1418.                         <span>Créer une facture</span>
  1419.                     </a>
  1420.                 </div>
  1421.                 <div class="menu-sub-item-modern">
  1422.                     <a href="{{ path('formation_video', {id: 4}) }}" class="menu-sub-link-modern">
  1423.                         <span class="menu-bullet-modern"></span>
  1424.                         <span>Bon de commande</span>
  1425.                     </a>
  1426.                 </div>
  1427.                 <div class="menu-sub-item-modern">
  1428.                     <a href="{{ path('formation_video', {id: 5}) }}" class="menu-sub-link-modern">
  1429.                         <span class="menu-bullet-modern"></span>
  1430.                         <span>Bon de livraison</span>
  1431.                     </a>
  1432.                 </div>
  1433.                 <div class="menu-sub-item-modern">
  1434.                     <a href="{{ path('formation_video', {id: 6}) }}" class="menu-sub-link-modern">
  1435.                         <span class="menu-bullet-modern"></span>
  1436.                         <span>Prospection BtoB</span>
  1437.                     </a>
  1438.                 </div>
  1439.             </div>
  1440.         </div>
  1441.         <!-- Documentation -->
  1442.         <div class="menu-item-modern">
  1443.             <a class="menu-link-modern" href="https://www.canva.com/design/DAGsM4IzHX4/-xVezdK8KNcDQowJgMm6Xw/view?utm_content=DAGsM4IzHX4&utm_campaign=designshare&utm_medium=link2&utm_source=uniquelinks&utlId=hab518c912f"  >
  1444.                 <div class="menu-icon-modern">
  1445.                     <svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1446.                         <path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/>
  1447.                         <path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/>
  1448.                         <path d="M8 7h8"/>
  1449.                         <path d="M8 11h8"/>
  1450.                         <path d="M8 15h6"/>
  1451.                     </svg>
  1452.                 </div>
  1453.                 <span class="menu-title-modern">Documentation</span>
  1454.                 <div class="menu-badge-modern">
  1455.                     <span class="badge-dev-modern">SOON</span>
  1456.                 </div>
  1457.             </a>
  1458.         </div>
  1459.     </div>
  1460. </div>
  1461.             </div>
  1462.         </div>
  1463.     </div>
  1464.  
  1465.     <!-- Footer moderne avec nouveaux boutons -->
  1466. <div class="aside-footer-modern" id="kt_aside_footer">
  1467.     <!-- Support & Ticket Buttons -->
  1468.     <div class="support-actions-modern">
  1469.         <!-- Bouton Créer un ticket -->
  1470.         <button class="support-btn-modern ticket-btn" onclick="openTicketModal()">
  1471.             <div class="support-icon">
  1472.                 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1473.                     <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
  1474.                     <path d="M8 10h.01"/>
  1475.                     <path d="M12 10h.01"/>
  1476.                     <path d="M16 10h.01"/>
  1477.                 </svg>
  1478.             </div>
  1479.             <span class="support-text">Créer un ticket</span>
  1480.             <span class="badge-new-ticket">NEW</span>
  1481.         </button>
  1482.         
  1483.         <!-- Bouton Support -->
  1484.         <button class="support-btn-modern" onclick="openSupportModal()">
  1485.             <div class="support-icon">
  1486.                 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1487.                     <circle cx="12" cy="12" r="10"/>
  1488.                     <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/>
  1489.                     <line x1="12" y1="17" x2="12.01" y2="17"/>
  1490.                 </svg>
  1491.             </div>
  1492.             <span class="support-text">Support</span>
  1493.         </button>
  1494.                 <!-- Dans le aside-footer-modern, après les boutons support -->
  1495.         {# <div class="facture-electronique-status-modern mt-3" id="facture-electronique-status">
  1496.             {% set hasCertificate = user_certificate is defined and user_certificate != null %}
  1497.             {% set hasTTNConfig = user_ttn_config is defined and user_ttn_config|length > 0 %}
  1498.             {% set isActivated = user_activation is defined and user_activation != null %}
  1499.             
  1500.             {% if not isActivated %}
  1501.                 <div class="alert alert-warning mb-0 p-2" style="border-radius: 10px; background: #fffbeb; border: 1px solid #fcd34d;">
  1502.                     <div class="d-flex align-items-center gap-2">
  1503.                         <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#d97706" stroke-width="2">
  1504.                             <circle cx="12" cy="12" r="10"/>
  1505.                             <line x1="12" y1="8" x2="12" y2="12"/>
  1506.                             <line x1="12" y1="16" x2="12.01" y2="16"/>
  1507.                         </svg>
  1508.                         <span style="font-size: 0.75rem; color: #92400e;">
  1509.                             <strong>Facture électronique</strong><br>
  1510.                             <a href="{{ path('facture_electronique_step1') }}" style="color: #b45309; text-decoration: underline;">
  1511.                                 Activer maintenant
  1512.                             </a>
  1513.                         </span>
  1514.                     </div>
  1515.                 </div>
  1516.             {% elseif not hasTTNConfig %}
  1517.                 <div class="alert alert-info mb-0 p-2" style="border-radius: 10px; background: #e0f2fe; border: 1px solid #7dd3fc;">
  1518.                     <div class="d-flex align-items-center gap-2">
  1519.                         <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#0284c7" stroke-width="2">
  1520.                             <circle cx="12" cy="12" r="10"/>
  1521.                             <path d="M12 16v-4"/>
  1522.                             <circle cx="12" cy="8" r="1" fill="#0284c7"/>
  1523.                         </svg>
  1524.                         <span style="font-size: 0.75rem; color: #075985;">
  1525.                             <strong>Configuration TTN requise</strong><br>
  1526.                             <a href="{{ path('facture_electronique_step2') }}" style="color: #0369a1; text-decoration: underline;">
  1527.                                 Configurer maintenant
  1528.                             </a>
  1529.                         </span>
  1530.                     </div>
  1531.                 </div>
  1532.             {% endif %}
  1533.         </div> #}
  1534.     </div>
  1535.     
  1536.     <!-- User panel existant -->
  1537.     <div class="user-panel-modern">
  1538.         <div class="user-avatar-modern">
  1539.             <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1540.                 <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
  1541.                 <circle cx="12" cy="7" r="4"/>
  1542.             </svg>
  1543.         </div>
  1544.         <div class="user-info-modern">
  1545.             <div class="user-name-modern">
  1546.                 {% if app.user and app.user.firstname is defined %}
  1547.                     {{ app.user.firstname ~ ' ' ~ app.user.lastname }}
  1548.                 {% elseif app.user and app.user.nomComplet is defined %}
  1549.                     {{ app.user.nomComplet }}
  1550.                 {% else %}
  1551.                     Utilisateur
  1552.                 {% endif %}
  1553.             </div>
  1554.             <div class="user-role-modern">{{ is_granted('ROLE_ADMIN') ? 'Administrateur' : (is_granted('ROLE_SALARIE') ? 'Salarié' : 'Utilisateur') }}</div>
  1555.         </div>
  1556.         <a href="/deconnexion" class="logout-btn-modern" title="Déconnexion">
  1557.             <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  1558.                 <path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/>
  1559.                 <polyline points="16,17 21,12 16,7"/>
  1560.                 <line x1="21" y1="12" x2="9" y2="12"/>
  1561.             </svg>
  1562.         </a>
  1563.     </div>
  1564.     
  1565.     {% if is_granted('ROLE_PREVIOUS_ADMIN') %}
  1566.     <div class="alert alert-warning text-center mt-2">
  1567.         Vous êtes connecté en tant que {{ app.user.email }}
  1568.         <a href="{{ path('user_index', {'_switch_user': '_exit'}) }}" class="btn btn-sm btn-danger ms-3">
  1569.             <i class="fas fa-sign-out-alt"></i> Revenir
  1570.         </a>
  1571.     </div>
  1572.     {% endif %}
  1573. </div>
  1574. </div>
  1575. <!-- MODAL CRÉER UN TICKET -->
  1576. <div id="ticketModal" class="modal-modern" style="display: none;">
  1577.     <div class="modal-overlay" onclick="closeTicketModal()"></div>
  1578.     <div class="modal-container">
  1579.         <div class="modal-header">
  1580.             <div class="modal-title">
  1581.                 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2">
  1582.                     <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
  1583.                 </svg>
  1584.                 <span>Créer un nouveau ticket</span>
  1585.             </div>
  1586.             <button class="modal-close" onclick="closeTicketModal()">×</button>
  1587.         </div>
  1588.         
  1589.         <div class="modal-body">
  1590.             <form id="ticketForm" action="{{ path('ticket_create') }}" method="POST" enctype="multipart/form-data">
  1591.                 <div class="form-group">
  1592.                     <label class="form-label">Sujet</label>
  1593.                     <input type="text" name="subject" class="form-control" placeholder="Ex: Problème d'impression de facture" required>
  1594.                 </div>
  1595.                 
  1596.                 <div class="form-group">
  1597.                     <label class="form-label">Message</label>
  1598.                     <textarea name="message" class="form-control" rows="5" placeholder="Décrivez votre problème en détail..." required></textarea>
  1599.                 </div>
  1600.                 
  1601.                 <div class="form-group">
  1602.                     <label class="form-label">Pièces jointes</label>
  1603.                     <div class="file-upload-area">
  1604.                         <input type="file" name="attachments[]" id="fileInput" multiple style="display: none;">
  1605.                         <button type="button" class="file-upload-btn" onclick="document.getElementById('fileInput').click()">
  1606.                             <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1607.                                 <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"/>
  1608.                             </svg>
  1609.                             Ajouter des fichiers
  1610.                         </button>
  1611.                         <span class="file-hint">PNG, JPG, PDF (max 10MB)</span>
  1612.                     </div>
  1613.                     <div id="fileList" class="file-list"></div>
  1614.                 </div>
  1615.             </form>
  1616.         </div>
  1617.         
  1618.         <div class="modal-footer">
  1619.             <button class="btn-secondary" onclick="closeTicketModal()">Annuler</button>
  1620.             <button type="submit" form="ticketForm" class="btn-primary">
  1621.                 <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1622.                     <path d="M20 6L9 17l-5-5"/>
  1623.                 </svg>
  1624.                 Valider
  1625.             </button>
  1626.         </div>
  1627.     </div>
  1628. </div>
  1629. <!-- MODAL SUPPORT -->
  1630. <div id="supportModal" class="modal-modern" style="display: none;">
  1631.     <div class="modal-overlay" onclick="closeSupportModal()"></div>
  1632.     <div class="modal-container support-modal">
  1633.         <div class="modal-header">
  1634.             <div class="modal-title">
  1635.                 <div class="support-logo">
  1636.                     <span class="brand-text-modal">MAZEGO</span>
  1637.                 </div>
  1638.             </div>
  1639.             <button class="modal-close" onclick="closeSupportModal()">×</button>
  1640.         </div>
  1641.         
  1642.         <div class="modal-body text-center">
  1643.             <div class="support-avatar">
  1644.                 <svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="1.5">
  1645.                     <circle cx="12" cy="12" r="10"/>
  1646.                     <path d="M12 16v-4"/>
  1647.                     <circle cx="12" cy="8" r="1" fill="#3b82f6"/>
  1648.                 </svg>
  1649.             </div>
  1650.             
  1651.             <h3 class="support-title">Équipe de support</h3>
  1652.             
  1653.             <div class="support-info-list">
  1654.                 <div class="support-info-item">
  1655.                     <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#64748b">
  1656.                         <rect x="2" y="4" width="20" height="16" rx="2"/>
  1657.                         <path d="m22 7-10 7L2 7"/>
  1658.                     </svg>
  1659.                     <span>support@mazego.fr</span>
  1660.                 </div>
  1661.                 
  1662.                 <div class="support-info-item">
  1663.                     <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#64748b">
  1664.                         <rect x="5" y="2" width="14" height="20" rx="2"/>
  1665.                         <line x1="12" y1="18" x2="12.01" y2="18"/>
  1666.                     </svg>
  1667.                     {# <span>+216 51 950 201  / +33605669926</span> #}
  1668.                           <span>+33605669926</span>
  1669.                 </div>
  1670.                 
  1671.                 <div class="support-info-item">
  1672.                     <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#64748b">
  1673.                         <circle cx="12" cy="12" r="10"/>
  1674.                         <polyline points="12 6 12 12 16 14"/>
  1675.                     </svg>
  1676.                     <span>Lun-Ven: 8h30 - 18h00</span>
  1677.                 </div>
  1678.                 
  1679.                 <div class="support-info-item summer-schedule">
  1680.                     <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#f59e0b">
  1681.                         <circle cx="12" cy="12" r="5"/>
  1682.                         <line x1="12" y1="1" x2="12" y2="3"/>
  1683.                         <line x1="12" y1="21" x2="12" y2="23"/>
  1684.                         <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
  1685.                         <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
  1686.                         <line x1="1" y1="12" x2="3" y2="12"/>
  1687.                         <line x1="21" y1="12" x2="23" y2="12"/>
  1688.                         <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
  1689.                         <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
  1690.                     </svg>
  1691.                     <span>Horaires été: 8h00 - 17h00</span>
  1692.                 </div>
  1693.             </div>
  1694.             
  1695.             <div class="support-response-time">
  1696.                 <div class="response-badge">
  1697.                     ⚡ Temps de réponse moyen: 2h
  1698.                 </div>
  1699.             </div>
  1700.         </div>
  1701.         
  1702.         <div class="modal-footer">
  1703.             <button class="btn-primary" onclick="closeSupportModal()">Fermer</button>
  1704.         </div>
  1705.     </div>
  1706. </div>
  1707. <!-- BOUTON FLOATING DEMANDER UNE DÉMO -->
  1708. <button id="demoButton" class="demo-floating-btn" onclick="openDemoScheduler()">
  1709.     <div class="demo-icon">
  1710.         <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="2">
  1711.             <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/>
  1712.             <line x1="16" y1="2" x2="16" y2="6"/>
  1713.             <line x1="8" y1="2" x2="8" y2="6"/>
  1714.             <line x1="3" y1="10" x2="21" y2="10"/>
  1715.             <path d="M8 14h.01"/>
  1716.             <path d="M12 14h.01"/>
  1717.             <path d="M16 14h.01"/>
  1718.             <path d="M8 18h.01"/>
  1719.             <path d="M12 18h.01"/>
  1720.             <path d="M16 18h.01"/>
  1721.         </svg>
  1722.     </div>
  1723.     <span class="demo-text">Demander une démo</span>
  1724.     <span class="demo-pulse"></span>
  1725. </button>
  1726. <!-- MODAL DÉMO KOALENDAR -->
  1727. <div id="demoModal" class="modal-modern" style="display: none; ">
  1728.     <div class="modal-overlay" onclick="closeDemoModal()"></div>
  1729.     <div class="modal-container demo-modal-container">
  1730.         <div class="modal-header">
  1731.             <div class="modal-title">
  1732.                 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2">
  1733.                     <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
  1734.                     <circle cx="12" cy="7" r="4"/>
  1735.                 </svg>
  1736.                 <span>Programmer une démo personnalisée</span>
  1737.             </div>
  1738.             <button class="modal-close" onclick="closeDemoModal()">×</button>
  1739.         </div>
  1740.         
  1741.         <div class="modal-body p-0">
  1742.             <!-- ICI : IFRAME KOALENDAR / CALENDLY -->
  1743.             <!-- Remplacez par votre lien Koalendar ou Calendly -->
  1744.             <iframe 
  1745.                 id="koalendarIframe"
  1746.                 src="https://koalendar.com/e/demo-mazego" 
  1747.                 width="100%" 
  1748.                 height="600px" 
  1749.                 frameborder="0" 
  1750.                 allowfullscreen>
  1751.             </iframe>
  1752.             
  1753.             <!-- Message d'info -->
  1754.             <div class="demo-info-bar">
  1755.                 <span class="demo-duration">⏱️ 45 minutes</span>
  1756.                 <span class="demo-spots">🎯 3 places restantes aujourd'hui</span>
  1757.             </div>
  1758.         </div>
  1759.     </div>
  1760. </div>
  1761. <script>
  1762.  
  1763. document.addEventListener('DOMContentLoaded', function() {
  1764.     const demoButton = document.getElementById('demoButton');
  1765.     
  1766.     demoButton.addEventListener('click', function() {
  1767.         // Attendre que la modal soit chargée
  1768.         setTimeout(function() {
  1769.             const modal = document.getElementById('demoModal');
  1770.             if (modal && !document.getElementById('koalendar-overlay')) {
  1771.                 // Créer un div overlay pour masquer le branding
  1772.                 const overlay = document.createElement('div');
  1773.                 overlay.id = 'koalendar-overlay';
  1774.                 overlay.style.cssText = `
  1775.                     position: absolute;
  1776.                     bottom: 0;
  1777.                     left: 0;
  1778.                     right: 0;
  1779.                     height: 50px;
  1780.                     background: white;
  1781.                     z-index: 10000;
  1782.                     pointer-events: none;
  1783.                 `;
  1784.                 modal.querySelector('.modal-body').style.position = 'relative';
  1785.                 modal.querySelector('.modal-body').appendChild(overlay);
  1786.             }
  1787.         }, 500);
  1788.     });
  1789. });
  1790. </script>
  1791. <style>
  1792. #demoModal .modal-body {
  1793.     max-height: 680px;
  1794.     overflow: hidden !important;
  1795. }
  1796. #koalendarIframe {
  1797.     height: 700px !important;
  1798. }
  1799. /* ========== SUPPORT & TICKET BUTTONS ========== */
  1800. .support-actions-modern {
  1801.     display: flex;
  1802.     gap: 8px;
  1803.     margin-bottom: 16px;
  1804.     padding: 0 8px;
  1805. }
  1806. .support-btn-modern {
  1807.     flex: 1;
  1808.     display: flex;
  1809.     align-items: center;
  1810.     justify-content: center;
  1811.     gap: 8px;
  1812.     padding: 10px 12px;
  1813.     background: white;
  1814.     border: 1px solid #e2e8f0;
  1815.     border-radius: 12px;
  1816.     color: #475569;
  1817.     font-size: 0.85rem;
  1818.     font-weight: 500;
  1819.     transition: all 0.2s ease;
  1820.     cursor: pointer;
  1821.     position: relative;
  1822. }
  1823. .support-btn-modern:hover {
  1824.     background: #f1f5f9;
  1825.     border-color: #3b82f6;
  1826.     color: #1e40af;
  1827.     transform: translateY(-1px);
  1828. }
  1829. .support-btn-modern .support-icon {
  1830.     display: flex;
  1831.     align-items: center;
  1832.     color: #64748b;
  1833. }
  1834. .support-btn-modern:hover .support-icon {
  1835.     color: #3b82f6;
  1836. }
  1837. .ticket-btn {
  1838.     background: linear-gradient(135deg, #3b82f6, #1d4ed8);
  1839.     border-color: transparent;
  1840.     color: white;
  1841. }
  1842. .ticket-btn .support-icon {
  1843.     color: white;
  1844. }
  1845. .ticket-btn:hover {
  1846.     background: linear-gradient(135deg, #2563eb, #1e40af);
  1847.     color: white;
  1848. }
  1849. .ticket-btn:hover .support-icon {
  1850.     color: white;
  1851. }
  1852. .badge-new-ticket {
  1853.     position: absolute;
  1854.     top: -6px;
  1855.     right: -6px;
  1856.     background: #ef4444;
  1857.     color: white;
  1858.     font-size: 0.65rem;
  1859.     font-weight: 700;
  1860.     padding: 2px 6px;
  1861.     border-radius: 12px;
  1862.     letter-spacing: 0.05em;
  1863.     box-shadow: 0 2px 6px rgba(239, 68, 68, 0.3);
  1864.     animation: pulse-badge 2s infinite;
  1865. }
  1866. @keyframes pulse-badge {
  1867.     0%, 100% { transform: scale(1); }
  1868.     50% { transform: scale(1.1); }
  1869. }
  1870. /* ========== MODALS MODERNES ========== */
  1871. .modal-modern {
  1872.     position: fixed;
  1873.     top: 0;
  1874.     left: 0;
  1875.     right: 0;
  1876.     bottom: 0;
  1877.     z-index: 9999;
  1878.     display: flex;
  1879.     align-items: center;
  1880.     justify-content: center;
  1881.     font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  1882. }
  1883. .modal-overlay {
  1884.     position: absolute;
  1885.     top: 0;
  1886.     left: 0;
  1887.     right: 0;
  1888.     bottom: 0;
  1889.     background: rgba(0, 0, 0, 0.5);
  1890.     backdrop-filter: blur(4px);
  1891. }
  1892. .modal-container {
  1893.     position: relative;
  1894.     width: 90%;
  1895.     max-width: 500px;
  1896.     background: white;
  1897.     border-radius: 20px;
  1898.     box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
  1899.     z-index: 10000;
  1900.     animation: modalSlideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  1901. }
  1902. .support-modal {
  1903.     max-width: 450px;
  1904. }
  1905. .demo-modal-container {
  1906.     max-width: 900px;
  1907. }
  1908. @keyframes modalSlideIn {
  1909.     from {
  1910.         opacity: 0;
  1911.         transform: translateY(30px) scale(0.95);
  1912.     }
  1913.     to {
  1914.         opacity: 1;
  1915.         transform: translateY(0) scale(1);
  1916.     }
  1917. }
  1918. .modal-header {
  1919.     display: flex;
  1920.     align-items: center;
  1921.     justify-content: space-between;
  1922.     padding: 20px 24px;
  1923.     border-bottom: 1px solid #e2e8f0;
  1924. }
  1925. .modal-title {
  1926.     display: flex;
  1927.     align-items: center;
  1928.     gap: 12px;
  1929.     font-size: 1.1rem;
  1930.     font-weight: 600;
  1931.     color: #1e293b;
  1932. }
  1933. .modal-close {
  1934.     background: none;
  1935.     border: none;
  1936.     font-size: 28px;
  1937.     line-height: 1;
  1938.     color: #94a3b8;
  1939.     cursor: pointer;
  1940.     transition: all 0.2s ease;
  1941.     padding: 4px 12px;
  1942.     border-radius: 8px;
  1943. }
  1944. .modal-close:hover {
  1945.     background: #f1f5f9;
  1946.     color: #475569;
  1947. }
  1948. .modal-body {
  1949.     padding: 24px;
  1950. }
  1951. .modal-footer {
  1952.     display: flex;
  1953.     justify-content: flex-end;
  1954.     gap: 12px;
  1955.     padding: 20px 24px;
  1956.     border-top: 1px solid #e2e8f0;
  1957. }
  1958. /* ========== FORMULAIRES ========== */
  1959. .form-group {
  1960.     margin-bottom: 20px;
  1961. }
  1962. .form-label {
  1963.     display: block;
  1964.     margin-bottom: 8px;
  1965.     font-weight: 500;
  1966.     font-size: 0.9rem;
  1967.     color: #475569;
  1968. }
  1969. .form-control {
  1970.     width: 100%;
  1971.     padding: 12px 16px;
  1972.     border: 1px solid #e2e8f0;
  1973.     border-radius: 12px;
  1974.     font-size: 0.95rem;
  1975.     transition: all 0.2s ease;
  1976.     background: #f8fafc;
  1977. }
  1978. .form-control:focus {
  1979.     outline: none;
  1980.     border-color: #3b82f6;
  1981.     box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  1982.     background: white;
  1983. }
  1984. textarea.form-control {
  1985.     resize: vertical;
  1986.     min-height: 120px;
  1987. }
  1988. .file-upload-area {
  1989.     display: flex;
  1990.     align-items: center;
  1991.     gap: 12px;
  1992.     flex-wrap: wrap;
  1993. }
  1994. .file-upload-btn {
  1995.     display: flex;
  1996.     align-items: center;
  1997.     gap: 8px;
  1998.     padding: 10px 16px;
  1999.     background: #f1f5f9;
  2000.     border: 1px dashed #94a3b8;
  2001.     border-radius: 10px;
  2002.     color: #475569;
  2003.     font-size: 0.9rem;
  2004.     cursor: pointer;
  2005.     transition: all 0.2s ease;
  2006. }
  2007. .file-upload-btn:hover {
  2008.     background: #e2e8f0;
  2009.     border-color: #3b82f6;
  2010.     color: #1e40af;
  2011. }
  2012. .file-hint {
  2013.     font-size: 0.8rem;
  2014.     color: #94a3b8;
  2015. }
  2016. .file-list {
  2017.     margin-top: 12px;
  2018.     display: flex;
  2019.     flex-direction: column;
  2020.     gap: 8px;
  2021. }
  2022. /* ========== BOUTONS ========== */
  2023. .btn-primary {
  2024.     display: inline-flex;
  2025.     align-items: center;
  2026.     justify-content: center;
  2027.     gap: 8px;
  2028.     padding: 12px 24px;
  2029.     background: linear-gradient(135deg, #3b82f6, #2563eb);
  2030.     border: none;
  2031.     border-radius: 12px;
  2032.     color: white;
  2033.     font-weight: 600;
  2034.     font-size: 0.95rem;
  2035.     cursor: pointer;
  2036.     transition: all 0.2s ease;
  2037. }
  2038. .btn-primary:hover {
  2039.     background: linear-gradient(135deg, #2563eb, #1d4ed8);
  2040.     transform: translateY(-1px);
  2041.     box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
  2042. }
  2043. .btn-secondary {
  2044.     display: inline-flex;
  2045.     align-items: center;
  2046.     justify-content: center;
  2047.     gap: 8px;
  2048.     padding: 12px 24px;
  2049.     background: #f1f5f9;
  2050.     border: 1px solid #e2e8f0;
  2051.     border-radius: 12px;
  2052.     color: #475569;
  2053.     font-weight: 600;
  2054.     font-size: 0.95rem;
  2055.     cursor: pointer;
  2056.     transition: all 0.2s ease;
  2057. }
  2058. .btn-secondary:hover {
  2059.     background: #e2e8f0;
  2060.     color: #1e293b;
  2061. }
  2062. /* ========== MODAL SUPPORT ========== */
  2063. .support-logo {
  2064.     display: flex;
  2065.     align-items: center;
  2066.     gap: 8px;
  2067. }
  2068. .brand-text-modal {
  2069.     font-size: 1.4rem;
  2070.     font-weight: 700;
  2071.     color: #1e293b;
  2072.     letter-spacing: -0.02em;
  2073. }
  2074. .support-avatar {
  2075.     display: flex;
  2076.     justify-content: center;
  2077.     margin-bottom: 16px;
  2078. }
  2079. .support-title {
  2080.     font-size: 1.5rem;
  2081.     font-weight: 700;
  2082.     color: #1e293b;
  2083.     margin-bottom: 24px;
  2084. }
  2085. .support-info-list {
  2086.     display: flex;
  2087.     flex-direction: column;
  2088.     gap: 16px;
  2089.     margin-bottom: 24px;
  2090. }
  2091. .support-info-item {
  2092.     display: flex;
  2093.     align-items: center;
  2094.     justify-content: center;
  2095.     gap: 12px;
  2096.     color: #475569;
  2097.     font-size: 1rem;
  2098. }
  2099. .summer-schedule {
  2100.     color: #f59e0b;
  2101.     font-weight: 500;
  2102. }
  2103. .support-response-time {
  2104.     margin-top: 16px;
  2105.     padding-top: 16px;
  2106.     border-top: 1px solid #e2e8f0;
  2107. }
  2108. .response-badge {
  2109.     display: inline-flex;
  2110.     align-items: center;
  2111.     padding: 8px 16px;
  2112.     background: #e0f2fe;
  2113.     color: #0284c7;
  2114.     border-radius: 30px;
  2115.     font-size: 0.9rem;
  2116.     font-weight: 500;
  2117. }
  2118. /* ========== BOUTON FLOATING DÉMO ========== */
  2119. .demo-floating-btn {
  2120.     position: fixed;
  2121.    /* bottom: 30px; */
  2122.    top: 12px;
  2123.     right: 30px;
  2124.     display: flex;
  2125.     align-items: center;
  2126.     gap: 12px;
  2127.     padding: 16px 28px;
  2128.     background: linear-gradient(135deg, #8b5cf6, #6d28d9);
  2129.     border: none;
  2130.     border-radius: 50px;
  2131.     color: white;
  2132.     font-weight: 600;
  2133.     font-size: 1rem;
  2134.     cursor: pointer;
  2135.     box-shadow: 0 10px 25px rgba(109, 40, 217, 0.4);
  2136.     transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2137.     z-index: 9998;
  2138.     border: 1px solid rgba(255, 255, 255, 0.2);
  2139. }
  2140. .demo-floating-btn:hover {
  2141.     transform: scale(1.05);
  2142.     box-shadow: 0 20px 35px rgba(109, 40, 217, 0.5);
  2143.     background: linear-gradient(135deg, #7c3aed, #5b21b6);
  2144. }
  2145. .demo-icon {
  2146.     display: flex;
  2147.     align-items: center;
  2148. }
  2149. .demo-pulse {
  2150.     position: absolute;
  2151.     top: 0;
  2152.     left: 0;
  2153.     right: 0;
  2154.     bottom: 0;
  2155.     border-radius: 50px;
  2156.     box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.5);
  2157.     animation: pulse-demo 2s infinite;
  2158. }
  2159. @keyframes pulse-demo {
  2160.     0% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.5); }
  2161.     70% { box-shadow: 0 0 0 15px rgba(139, 92, 246, 0); }
  2162.     100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0); }
  2163. }
  2164. /* Mode réduit - adaptations */
  2165. body[data-kt-aside-minimize="on"] .support-actions-modern {
  2166.     flex-direction: column;
  2167.     padding: 0 4px;
  2168. }
  2169. body[data-kt-aside-minimize="on"] .support-text {
  2170.     display: none;
  2171. }
  2172. body[data-kt-aside-minimize="on"] .support-btn-modern {
  2173.     padding: 12px;
  2174. }
  2175. body[data-kt-aside-minimize="on"] .support-icon {
  2176.     margin: 0;
  2177. }
  2178. body[data-kt-aside-minimize="on"] .badge-new-ticket {
  2179.     top: -3px;
  2180.     right: -3px;
  2181. }
  2182. /* ========== DEMO INFO BAR ========== */
  2183. .demo-info-bar {
  2184.     display: flex;
  2185.     align-items: center;
  2186.     justify-content: space-between;
  2187.     padding: 16px 24px;
  2188.     background: #f8fafc;
  2189.     border-top: 1px solid #e2e8f0;
  2190.     font-size: 0.9rem;
  2191.     color: #475569;
  2192. }
  2193. .demo-duration {
  2194.     display: flex;
  2195.     align-items: center;
  2196.     gap: 6px;
  2197. }
  2198. .demo-spots {
  2199.     display: flex;
  2200.     align-items: center;
  2201.     gap: 6px;
  2202.     color: #10b981;
  2203.     font-weight: 500;
  2204. }
  2205. /* ========== RESPONSIVE ========== */
  2206. @media (max-width: 768px) {
  2207.     .demo-floating-btn {
  2208.         bottom: 20px;
  2209.         right: 20px;
  2210.         padding: 14px 20px;
  2211.         font-size: 0.9rem;
  2212.     }
  2213.     
  2214.     .demo-floating-btn .demo-text {
  2215.         display: none;
  2216.     }
  2217.     
  2218.     .demo-floating-btn {
  2219.         padding: 16px;
  2220.         border-radius: 50%;
  2221.     }
  2222.     
  2223.     .demo-floating-btn:hover {
  2224.         transform: scale(1.1);
  2225.     }
  2226.     
  2227.     .modal-container {
  2228.         width: 95%;
  2229.         max-height: 90vh;
  2230.         overflow-y: auto;
  2231.     }
  2232.     
  2233.     .demo-info-bar {
  2234.         flex-direction: column;
  2235.         gap: 8px;
  2236.         align-items: flex-start;
  2237.     }
  2238. }
  2239. /* Sidebar Moderne - Design épuré et contemporain */
  2240. .aside-modern {
  2241.     background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  2242.     border-right: 1px solid #e2e8f0;
  2243.     box-shadow: 0 4px 25px rgba(0, 0, 0, 0.08);
  2244.     width: 280px;
  2245.     transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2246. }
  2247. /* Logo Section */
  2248. .aside-logo-modern {
  2249.     padding: 2rem 1.5rem 1.5rem;
  2250.     border-bottom: 1px solid #f1f5f9;
  2251.     display: flex;
  2252.     align-items: center;
  2253.     justify-content: space-between;
  2254.     background: rgba(255, 255, 255, 0.8);
  2255.     backdrop-filter: blur(10px);
  2256. }
  2257. .logo-container-modern {
  2258.     display: flex;
  2259.     align-items: center;
  2260.     text-decoration: none;
  2261.     transition: all 0.2s ease;
  2262. }
  2263. .logo-container-modern:hover {
  2264.     transform: scale(1.02);
  2265. }
  2266. .brand-text {
  2267.     font-size: 1.25rem;
  2268.     font-weight: 700;
  2269.     color: #1e293b;
  2270.     letter-spacing: -0.02em;
  2271. }
  2272. .btn-toggle-modern {
  2273.     background: #f8fafc;
  2274.     border: 1px solid #e2e8f0;
  2275.     border-radius: 8px;
  2276.     padding: 8px;
  2277.     color: #64748b;
  2278.     transition: all 0.2s ease;
  2279.     cursor: pointer;
  2280. }
  2281. .btn-toggle-modern:hover {
  2282.     background: #e2e8f0;
  2283.     color: #475569;
  2284.     transform: scale(1.05);
  2285. }
  2286. /* Menu Principal */
  2287. .aside-menu-modern {
  2288.     padding: 1rem 0;
  2289.     height: calc(100vh - 200px);
  2290.     overflow: hidden;
  2291. }
  2292. .menu-scroll-modern {
  2293.     height: 100%;
  2294.     overflow-y: auto;
  2295.     padding: 0 1rem;
  2296.     scrollbar-width: thin;
  2297.     scrollbar-color: #cbd5e1 transparent;
  2298. }
  2299. .menu-scroll-modern::-webkit-scrollbar {
  2300.     width: 4px;
  2301. }
  2302. .menu-scroll-modern::-webkit-scrollbar-track {
  2303.     background: transparent;
  2304. }
  2305. .menu-scroll-modern::-webkit-scrollbar-thumb {
  2306.     background: #cbd5e1;
  2307.     border-radius: 2px;
  2308. }
  2309. .menu-scroll-modern::-webkit-scrollbar-thumb:hover {
  2310.     background: #94a3b8;
  2311. }
  2312. /* Sections du Menu - STYLE ORIGINAL AMÉLIORÉ */
  2313. .menu-section-modern {
  2314.     margin-bottom: 2rem;
  2315. }
  2316. /* En-tête de section cliquable */
  2317. .menu-section-header-modern {
  2318.     display: flex;
  2319.     align-items: center;
  2320.     justify-content: space-between;
  2321.     padding: 0.75rem 1rem;
  2322.     margin: 0 0.25rem 0.5rem;
  2323.     border-radius: 12px;
  2324.     cursor: pointer;
  2325.     transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  2326.     border: 1px solid transparent;
  2327.     background: #f8fafc;
  2328. }
  2329. .menu-section-header-modern:hover {
  2330.     background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
  2331.     border-color: #e2e8f0;
  2332. }
  2333. .menu-section-header-modern.active {
  2334.     /*background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); */
  2335.     color: white;
  2336.     box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3);
  2337. }
  2338. .menu-section-title-modern {
  2339.     display: flex;
  2340.     align-items: center;
  2341.     gap: 0.75rem;
  2342.     font-weight: 600;
  2343.     font-size: 0.85rem;
  2344.     text-transform: uppercase;
  2345.     letter-spacing: 0.05em;
  2346. }
  2347. .section-title-text {
  2348.     color: #475569;
  2349.     font-size: 0.75rem;
  2350.     font-weight: 600;
  2351.     text-transform: uppercase;
  2352.     letter-spacing: 0.1em;
  2353. }
  2354. {# .menu-section-header-modern.active .section-title-text {
  2355.     color: white;
  2356. } #}
  2357. .menu-section-arrow {
  2358.     color: #94a3b8;
  2359.     transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2360. }
  2361. {# .menu-section-header-modern.active .menu-section-arrow {
  2362.     color: white;
  2363.     transform: rotate(180deg);
  2364. } #}
  2365. /* Contenu des sections */
  2366. .menu-section-content {
  2367.     max-height: 1000px;
  2368.     overflow: hidden;
  2369.     transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2370. }
  2371. .menu-section-modern.collapsed .menu-section-content {
  2372.     max-height: 0;
  2373. }
  2374. /* Items du Menu - STYLE ORIGINAL */
  2375. .menu-item-modern {
  2376.     margin-bottom: 0.25rem;
  2377. }
  2378. .menu-link-modern {
  2379.     display: flex;
  2380.     align-items: center;
  2381.     padding: 0.875rem 1rem;
  2382.     border-radius: 12px;
  2383.     text-decoration: none;
  2384.     color: #475569;
  2385.     font-weight: 500;
  2386.     font-size: 0.95rem;
  2387.     transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  2388.     position: relative;
  2389.     margin: 0 0.25rem;
  2390. }
  2391. .menu-link-modern:hover {
  2392.     background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
  2393.     color: #334155;
  2394.     text-decoration: none;
  2395.     transform: translateX(4px);
  2396. }
  2397. .menu-link-modern.active {
  2398.  
  2399.     /* background: linear-gradient(135deg, #e4e4f7 0%, #e4e5f7 100%); */
  2400.     color: #6b7787;
  2401.     /* box-shadow: 0 4px 15px rgba(59, 130, 246, 0.3); */ 
  2402.     font-weight: 600;
  2403. }
  2404. .menu-link-modern.active:hover {
  2405.     transform: translateX(0);
  2406. }
  2407. /* Icônes */
  2408. .menu-icon-modern {
  2409.     width: 22px;
  2410.     height: 22px;
  2411.     margin-right: 0.875rem;
  2412.     display: flex;
  2413.     align-items: center;
  2414.     justify-content: center;
  2415.     flex-shrink: 0;
  2416.     color: #64748b;
  2417.     transition: all 0.2s ease;
  2418. }
  2419. .menu-link-modern:hover .menu-icon-modern {
  2420.     color: #475569;
  2421.     transform: scale(1.1);
  2422. }
  2423. .menu-link-modern.active .menu-icon-modern {
  2424.     color: white;
  2425. }
  2426. /* Titres */
  2427. .menu-title-modern {
  2428.     flex: 1;
  2429.     font-size: 0.95rem;
  2430.     line-height: 1.4;
  2431. }
  2432. /* Badges - STYLE ORIGINAL AMÉLIORÉ */
  2433. .menu-badge-modern {
  2434.     margin-left: auto;
  2435.     display: flex;
  2436.     align-items: center;
  2437. }
  2438. .badge-dot-modern {
  2439.     width: 6px;
  2440.     height: 6px;
  2441.     background: #10b981;
  2442.     border-radius: 50%;
  2443.     animation: pulse 2s infinite;
  2444. }
  2445. .badge-new-modern {
  2446.     background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
  2447.     color: white;
  2448.     font-size: 0.7rem;
  2449.     font-weight: 600;
  2450.     padding: 2px 6px;
  2451.     border-radius: 8px;
  2452.     text-transform: uppercase;
  2453.     letter-spacing: 0.05em;
  2454. }
  2455. .badge-dev-modern {
  2456.     background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
  2457.     color: white;
  2458.     font-size: 0.65rem;
  2459.     font-weight: 600;
  2460.     padding: 2px 6px;
  2461.     border-radius: 8px;
  2462.     text-transform: uppercase;
  2463.     letter-spacing: 0.05em;
  2464. }
  2465. .badge-admin-modern {
  2466.     background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
  2467.     color: white;
  2468.     font-size: 0.65rem;
  2469.     font-weight: 600;
  2470.     padding: 2px 6px;
  2471.     border-radius: 8px;
  2472.     text-transform: uppercase;
  2473.     letter-spacing: 0.05em;
  2474. }
  2475. @keyframes pulse {
  2476.     0%, 100% { opacity: 1; }
  2477.     50% { opacity: 0.5; }
  2478. }
  2479. /* Accordéons */
  2480. .menu-accordion-modern {
  2481.     margin-bottom: 0.25rem;
  2482. }
  2483. .menu-accordion-trigger {
  2484.     cursor: pointer;
  2485. }
  2486. .menu-arrow-modern {
  2487.     margin-left: auto;
  2488.     color: #94a3b8;
  2489.     transition: transform 0.2s ease;
  2490. }
  2491. .menu-accordion-modern.show .menu-arrow-modern {
  2492.     transform: rotate(90deg);
  2493. }
  2494. /* Sous-menus */
  2495. .menu-sub-modern {
  2496.     max-height: 0;
  2497.     overflow: hidden;
  2498.     transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2499.     margin: 0.5rem 0 0 0;
  2500.     background: rgba(248, 250, 252, 0.5);
  2501.     border-radius: 8px;
  2502.     margin-left: 0.25rem;
  2503.     margin-right: 0.25rem;
  2504. }
  2505. .menu-accordion-modern.show .menu-sub-modern {
  2506.     max-height: 300px;
  2507.     padding: 0.5rem 0;
  2508. }
  2509. .menu-sub-item-modern {
  2510.     margin-bottom: 0.125rem;
  2511. }
  2512. .menu-sub-link-modern {
  2513.     display: flex;
  2514.     align-items: center;
  2515.     padding: 0.625rem 1rem 0.625rem 2.5rem;
  2516.     color: #64748b;
  2517.     text-decoration: none;
  2518.     font-size: 0.9rem;
  2519.     font-weight: 500;
  2520.     border-radius: 8px;
  2521.     transition: all 0.2s ease;
  2522.     margin: 0 0.5rem;
  2523. }
  2524. .menu-sub-link-modern:hover {
  2525.     background: rgba(59, 130, 246, 0.1);
  2526.     color: #3b82f6;
  2527.     text-decoration: none;
  2528.     transform: translateX(4px);
  2529. }
  2530. .menu-bullet-modern {
  2531.     width: 6px;
  2532.     height: 6px;
  2533.     background: #cbd5e1;
  2534.     border-radius: 50%;
  2535.     margin-right: 0.75rem;
  2536.     transition: all 0.2s ease;
  2537. }
  2538. .menu-sub-link-modern:hover .menu-bullet-modern {
  2539.     background: #3b82f6;
  2540.     transform: scale(1.2);
  2541. }
  2542. /* Footer */
  2543. .aside-footer-modern {
  2544.     padding: 1.5rem;
  2545.     border-top: 1px solid #f1f5f9;
  2546.     background: rgba(255, 255, 255, 0.8);
  2547.     backdrop-filter: blur(10px);
  2548. }
  2549. .user-panel-modern {
  2550.     display: flex;
  2551.     align-items: center;
  2552.     background: #f8fafc;
  2553.     padding: 1rem;
  2554.     border-radius: 12px;
  2555.     border: 1px solid #e2e8f0;
  2556.     transition: all 0.2s ease;
  2557. }
  2558. .user-panel-modern:hover {
  2559.     background: #f1f5f9;
  2560.     border-color: #cbd5e1;
  2561. }
  2562. .user-avatar-modern {
  2563.     width: 40px;
  2564.     height: 40px;
  2565.     background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);
  2566.     border-radius: 10px;
  2567.     display: flex;
  2568.     align-items: center;
  2569.     justify-content: center;
  2570.     margin-right: 0.75rem;
  2571.     color: white;
  2572. }
  2573. .user-info-modern {
  2574.     flex: 1;
  2575. }
  2576. .user-name-modern {
  2577.     font-weight: 600;
  2578.     font-size: 0.9rem;
  2579.     color: #1e293b;
  2580.     line-height: 1.2;
  2581. }
  2582. .user-role-modern {
  2583.     font-size: 0.8rem;
  2584.     color: #64748b;
  2585.     margin-top: 0.125rem;
  2586. }
  2587. .logout-btn-modern {
  2588.     background: #fee2e2;
  2589.     color: #dc2626;
  2590.     padding: 8px;
  2591.     border-radius: 8px;
  2592.     text-decoration: none;
  2593.     transition: all 0.2s ease;
  2594.     display: flex;
  2595.     align-items: center;
  2596.     justify-content: center;
  2597. }
  2598. .logout-btn-modern:hover {
  2599.     background: #fecaca;
  2600.     color: #b91c1c;
  2601.     text-decoration: none;
  2602.     transform: scale(1.05);
  2603. }
  2604. /* Responsive */
  2605. @media (max-width: 1024px) {
  2606.     .aside-modern {
  2607.         transform: translateX(-100%);
  2608.     }
  2609.     .aside-modern.drawer-on {
  2610.         transform: translateX(0);
  2611.     }
  2612. }
  2613. /* États actifs pour les liens */
  2614. .menu-link-modern.active::before {
  2615.     content: '';
  2616.     position: absolute;
  2617.     left: -0.25rem;
  2618.     top: 50%;
  2619.     transform: translateY(-50%);
  2620.     width: 3px;
  2621.     height: 20px;
  2622.     background: #3b82f6;
  2623.     border-radius: 0 2px 2px 0;
  2624. }
  2625. /* Animation d'entrée */
  2626. .menu-item-modern {
  2627.     animation: slideInLeft 0.3s ease-out;
  2628. }
  2629. @keyframes slideInLeft {
  2630.     from {
  2631.         opacity: 0;
  2632.         transform: translateX(-20px);
  2633.     }
  2634.     to {
  2635.         opacity: 1;
  2636.         transform: translateX(0);
  2637.     }
  2638. }
  2639. /* Amélioration des focus pour l'accessibilité */
  2640. .menu-link-modern:focus,
  2641. .menu-sub-link-modern:focus {
  2642.     outline: 2px solid #3b82f6;
  2643.     outline-offset: 2px;
  2644. }
  2645. /* Mode réduit */
  2646. body[data-kt-aside-minimize="on"] .aside-modern {
  2647.     width: 80px;
  2648.     transition: all 0.3s ease;
  2649. }
  2650. body[data-kt-aside-minimize="on"] .brand-text,
  2651. body[data-kt-aside-minimize="on"] .menu-title-modern,
  2652. body[data-kt-aside-minimize="on"] .menu-arrow-modern,
  2653. body[data-kt-aside-minimize="on"] .menu-section-title-modern,
  2654. body[data-kt-aside-minimize="on"] .section-title-text,
  2655. body[data-kt-aside-minimize="on"] .user-name-modern,
  2656. body[data-kt-aside-minimize="on"] .user-role-modern {
  2657.     display: none;
  2658. }
  2659. body[data-kt-aside-minimize="on"] .aside-logo-modern {
  2660.     justify-content: center;
  2661.     padding: 1.5rem 0.5rem;
  2662. }
  2663. body[data-kt-aside-minimize="on"] .btn-toggle-modern {
  2664.     transform: rotate(180deg);
  2665.     margin: 0 auto;
  2666. }
  2667. body[data-kt-aside-minimize="on"] .menu-link-modern {
  2668.     justify-content: center;
  2669.     padding: 0.875rem 0.5rem;
  2670.     margin: 0 0.25rem;
  2671. }
  2672. body[data-kt-aside-minimize="on"] .menu-icon-modern {
  2673.     margin-right: 0;
  2674.     transform: scale(1.2);
  2675. }
  2676. body[data-kt-aside-minimize="on"] .menu-section-header-modern {
  2677.     padding: 0.5rem;
  2678.     justify-content: center;
  2679. }
  2680. body[data-kt-aside-minimize="on"] .menu-section-arrow {
  2681.     display: none;
  2682. }
  2683. body[data-kt-aside-minimize="on"] .user-panel-modern {
  2684.     justify-content: center;
  2685.     padding: 0.75rem 0.5rem;
  2686. }
  2687. body[data-kt-aside-minimize="on"] .user-avatar-modern {
  2688.     margin-right: 0;
  2689. }
  2690. body[data-kt-aside-minimize="on"] .logout-btn-modern {
  2691.     position: absolute;
  2692.     bottom: 1rem;
  2693.     right: 1rem;
  2694. }
  2695. /* Responsive mobile */
  2696. @media (max-width: 1024px) {
  2697.     .aside-modern {
  2698.         position: fixed;
  2699.         left: -280px;
  2700.         top: 0;
  2701.         bottom: 0;
  2702.         z-index: 103;
  2703.         transition: all 0.3s ease;
  2704.     }
  2705.     .aside-modern.mobile-show {
  2706.         left: 0;
  2707.         box-shadow: 10px 0 30px rgba(0,0,0,0.1);
  2708.     }
  2709.     /* Overlay pour mobile */
  2710.     .aside-overlay {
  2711.         position: fixed;
  2712.         top: 0;
  2713.         left: 0;
  2714.         right: 0;
  2715.         bottom: 0;
  2716.         background: rgba(0,0,0,0.3);
  2717.         z-index: 102;
  2718.         opacity: 0;
  2719.         visibility: hidden;
  2720.         transition: all 0.3s ease;
  2721.     }
  2722.     .aside-overlay.active {
  2723.         opacity: 1;
  2724.         visibility: visible;
  2725.     }
  2726. }
  2727. /* ========== AMÉLIORATIONS DU MENU ========== */
  2728. /* 1. Style moderne pour les liens actifs */
  2729. .menu-link-modern.active {
  2730.     background: linear-gradient(135deg, rgba(37, 99, 235, 0.15) 0%, rgba(59, 130, 246, 0.1) 100%);
  2731.     color: #1e40af;
  2732.     border-left: 3px solid #3b82f6;
  2733.     font-weight: 600;
  2734.     box-shadow: 0 2px 8px rgba(59, 130, 246, 0.12);
  2735. }
  2736. .menu-link-modern.active .menu-icon-modern {
  2737.     color: #3b82f6;
  2738. }
  2739. .menu-link-modern.active:hover {
  2740.     background: linear-gradient(135deg, rgba(37, 99, 235, 0.18) 0%, rgba(59, 130, 246, 0.12) 100%);
  2741.     transform: translateX(2px);
  2742. }
  2743. /* 2. Menu fermé par défaut */
  2744. .menu-section-modern {
  2745.     margin-bottom: 1.5rem;
  2746. }
  2747. .menu-section-content {
  2748.     max-height: 0;
  2749.     overflow: hidden;
  2750.     transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2751. }
  2752. .menu-section-modern.expanded .menu-section-content {
  2753.     max-height: 1000px;
  2754. }
  2755. /* 3. Flèche de section */
  2756. .menu-section-arrow {
  2757.     transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  2758.     transform: rotate(0deg);
  2759. }
  2760. .menu-section-modern.expanded .menu-section-arrow {
  2761.     transform: rotate(180deg);
  2762. }
  2763. /* 4. Style d'en-tête de section */
  2764. .menu-section-header-modern {
  2765.     background: #f8fafc;
  2766.     border: 1px solid #e2e8f0;
  2767.     border-radius: 10px;
  2768.     padding: 0.75rem 1rem;
  2769.     margin-bottom: 0.5rem;
  2770.     cursor: pointer;
  2771.     transition: all 0.2s ease;
  2772. }
  2773. .menu-section-header-modern:hover {
  2774.     background: #f1f5f9;
  2775.     border-color: #cbd5e1;
  2776. }
  2777. .menu-section-modern.expanded .menu-section-header-modern {
  2778.     background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
  2779.     border-color: #cbd5e1;
  2780. }
  2781. /* 5. Maintien de la position de défilement */
  2782. .menu-scroll-modern {
  2783.     scroll-behavior: auto; /* Désactiver le scroll automatique */
  2784. }
  2785. /* 6. Indicateur pour sections avec contenu actif */
  2786. .menu-section-header-modern.has-active-child {
  2787.     border-left: 3px solid #3b82f6;
  2788.     background: rgba(59, 130, 246, 0.05);
  2789. }
  2790. /* 7. Style pour sous-menus actifs */
  2791. .menu-sub-link-modern.active {
  2792.     background: rgba(59, 130, 246, 0.1);
  2793.     color: #1e40af;
  2794.     font-weight: 500;
  2795.     border-left: 2px solid #3b82f6;
  2796. }
  2797. .menu-sub-link-modern.active .menu-bullet-modern {
  2798.     background: #3b82f6;
  2799.     transform: scale(1.1);
  2800. }
  2801. /* 8. Animation subtile */
  2802. .menu-item-modern {
  2803.     animation: fadeIn 0.2s ease-out;
  2804. }
  2805. @keyframes fadeIn {
  2806.     from { opacity: 0; transform: translateX(-5px); }
  2807.     to { opacity: 1; transform: translateX(0); }
  2808. }
  2809. /* 9. Indicateur visuel pour liens actifs */
  2810. .menu-link-modern.active::after {
  2811.     content: '';
  2812.     position: absolute;
  2813.     right: 12px;
  2814.     top: 50%;
  2815.     transform: translateY(-50%);
  2816.     width: 6px;
  2817.     height: 6px;
  2818.     background: #10b981;
  2819.     border-radius: 50%;
  2820.     animation: pulse-active 2s infinite;
  2821. }
  2822. @keyframes pulse-active {
  2823.     0%, 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); }
  2824.     70% { box-shadow: 0 0 0 4px rgba(16, 185, 129, 0); }
  2825. }
  2826. </style>
  2827. <script>
  2828.  
  2829. document.addEventListener('DOMContentLoaded', function() {
  2830.     // ========== CONFIGURATION ==========
  2831.     const CONFIG = {
  2832.         localStorageKey: 'menuState_v1',
  2833.         autoExpandActive: true,
  2834.         defaultCollapsed: true,
  2835.         saveScrollPosition: true
  2836.     };
  2837.     // ========== FONCTIONS UTILITAIRES ==========
  2838.     
  2839.     // Sauvegarder l'état du menu
  2840.     function saveMenuState() {
  2841.         const menuState = {
  2842.             sections: {},
  2843.             scrollPosition: CONFIG.saveScrollPosition ? getScrollPosition() : 0,
  2844.             timestamp: Date.now()
  2845.         };
  2846.         
  2847.         document.querySelectorAll('.menu-section-modern').forEach(section => {
  2848.             const sectionId = section.querySelector('.menu-section-header-modern')?.dataset?.section;
  2849.             if (sectionId) {
  2850.                 menuState.sections[sectionId] = section.classList.contains('expanded') ? 'expanded' : 'collapsed';
  2851.             }
  2852.         });
  2853.         
  2854.         localStorage.setItem(CONFIG.localStorageKey, JSON.stringify(menuState));
  2855.     }
  2856.     // Restaurer l'état du menu
  2857.     function loadMenuState() {
  2858.         try {
  2859.             const saved = localStorage.getItem(CONFIG.localStorageKey);
  2860.             if (!saved) return null;
  2861.             
  2862.             return JSON.parse(saved);
  2863.         } catch (e) {
  2864.             console.warn('Impossible de charger l\'état du menu:', e);
  2865.             return null;
  2866.         }
  2867.     }
  2868.     // Obtenir la position de défilement
  2869.     function getScrollPosition() {
  2870.         const scrollElement = document.querySelector('.menu-scroll-modern');
  2871.         return scrollElement ? scrollElement.scrollTop : 0;
  2872.     }
  2873.     // Restaurer la position de défilement
  2874.     function restoreScrollPosition(position) {
  2875.         if (!CONFIG.saveScrollPosition) return;
  2876.         
  2877.         const scrollElement = document.querySelector('.menu-scroll-modern');
  2878.         if (scrollElement) {
  2879.             // Attendre que le DOM soit complètement chargé
  2880.             setTimeout(() => {
  2881.                 scrollElement.scrollTop = position;
  2882.             }, 100);
  2883.         }
  2884.     }
  2885.     // Trouver la section active
  2886.     function findActiveSection() {
  2887.         const currentPath = window.location.pathname;
  2888.         const allLinks = document.querySelectorAll('.menu-link-modern[href], .menu-sub-link-modern[href]');
  2889.         
  2890.         let activeSectionId = null;
  2891.         
  2892.         allLinks.forEach(link => {
  2893.             const href = link.getAttribute('href');
  2894.             if (!href) return;
  2895.             
  2896.             // Vérifier si ce lien correspond à la page actuelle
  2897.             if (href === currentPath || 
  2898.                 (href !== '/' && currentPath.startsWith(href))) {
  2899.                 link.classList.add('active');
  2900.                 
  2901.                 // Trouver la section parente
  2902.                 const section = link.closest('.menu-section-modern');
  2903.                 if (section) {
  2904.                     const sectionId = section.querySelector('.menu-section-header-modern')?.dataset?.section;
  2905.                     if (sectionId) {
  2906.                         activeSectionId = sectionId;
  2907.                     }
  2908.                 }
  2909.                 
  2910.                 // Gérer les sous-menus d'accordéon
  2911.                 const accordion = link.closest('.menu-accordion-modern');
  2912.                 if (accordion) {
  2913.                     accordion.classList.add('show');
  2914.                 }
  2915.             }
  2916.         });
  2917.         
  2918.         return activeSectionId;
  2919.     }
  2920.     // Initialiser les sections
  2921.     function initializeSections() {
  2922.         const savedState = loadMenuState();
  2923.         const activeSectionId = findActiveSection();
  2924.         
  2925.         document.querySelectorAll('.menu-section-modern').forEach(section => {
  2926.             const header = section.querySelector('.menu-section-header-modern');
  2927.             const sectionId = header.dataset.section;
  2928.             
  2929.             // Vérifier si cette section a un enfant actif
  2930.             const hasActiveChild = section.querySelector('.menu-link-modern.active, .menu-sub-link-modern.active');
  2931.             if (hasActiveChild) {
  2932.                 header.classList.add('has-active-child');
  2933.             }
  2934.             
  2935.             // Déterminer l'état initial
  2936.             let shouldExpand = false;
  2937.             
  2938.             if (savedState?.sections?.[sectionId]) {
  2939.                 // Restaurer l'état sauvegardé
  2940.                 shouldExpand = savedState.sections[sectionId] === 'expanded';
  2941.             } else if (CONFIG.defaultCollapsed) {
  2942.                 // Par défaut, toutes les sections sont fermées
  2943.                 shouldExpand = false;
  2944.             } else {
  2945.                 // Sinon, ouvrir uniquement la section active
  2946.                 shouldExpand = sectionId === activeSectionId && CONFIG.autoExpandActive;
  2947.             }
  2948.             
  2949.             // Appliquer l'état
  2950.             if (shouldExpand) {
  2951.                 section.classList.add('expanded');
  2952.                 header.classList.add('active');
  2953.             } else {
  2954.                 section.classList.remove('expanded');
  2955.                 header.classList.remove('active');
  2956.             }
  2957.             
  2958.             // Gestionnaire de clic pour l'en-tête de section
  2959.             header.addEventListener('click', function(e) {
  2960.                 e.preventDefault();
  2961.                 e.stopPropagation();
  2962.                 
  2963.                 const isExpanded = section.classList.contains('expanded');
  2964.                 const newState = !isExpanded;
  2965.                 
  2966.                 // Mettre à jour l'état
  2967.                 section.classList.toggle('expanded', newState);
  2968.                 header.classList.toggle('active', newState);
  2969.                 
  2970.                 // Sauvegarder l'état
  2971.                 saveMenuState();
  2972.             });
  2973.         });
  2974.         
  2975.         // Restaurer la position de défilement
  2976.         if (savedState?.scrollPosition) {
  2977.             restoreScrollPosition(savedState.scrollPosition);
  2978.         }
  2979.         
  2980.         // Sauvegarder l'état initial
  2981.         setTimeout(() => saveMenuState(), 500);
  2982.     }
  2983.     // Gestion des accordéons
  2984.     function initializeAccordions() {
  2985.         const accordions = document.querySelectorAll('.menu-accordion-modern');
  2986.         
  2987.         accordions.forEach(accordion => {
  2988.             const trigger = accordion.querySelector('.menu-accordion-trigger');
  2989.             const arrow = accordion.querySelector('.menu-arrow-modern');
  2990.             
  2991.             if (trigger) {
  2992.                 trigger.addEventListener('click', function(e) {
  2993.                     e.preventDefault();
  2994.                     e.stopPropagation();
  2995.                     
  2996.                     const isActive = accordion.classList.contains('show');
  2997.                     
  2998.                     // Fermer tous les autres accordéons (optionnel)
  2999.                     // document.querySelectorAll('.menu-accordion-modern.show').forEach(acc => {
  3000.                     //     if (acc !== accordion) {
  3001.                     //         acc.classList.remove('show');
  3002.                     //     }
  3003.                     // });
  3004.                     
  3005.                     // Basculer l'état
  3006.                     accordion.classList.toggle('show', !isActive);
  3007.                     
  3008.                     // Animer la flèche
  3009.                     if (arrow) {
  3010.                         arrow.style.transform = !isActive ? 'rotate(90deg)' : 'rotate(0deg)';
  3011.                     }
  3012.                 });
  3013.             }
  3014.         });
  3015.     }
  3016.     // Prévenir la perte de position lors des clics
  3017.     function preventScrollReset() {
  3018.         const menuLinks = document.querySelectorAll('.menu-link-modern[href]:not([href^="#"]):not([href^="http"])');
  3019.         
  3020.         menuLinks.forEach(link => {
  3021.             link.addEventListener('click', function() {
  3022.                 // Sauvegarder la position actuelle avant navigation
  3023.                 if (CONFIG.saveScrollPosition) {
  3024.                     const scrollPos = getScrollPosition();
  3025.                     const currentState = loadMenuState() || {};
  3026.                     currentState.scrollPosition = scrollPos;
  3027.                     localStorage.setItem(CONFIG.localStorageKey, JSON.stringify(currentState));
  3028.                 }
  3029.                 
  3030.                 // Marquer ce lien comme actif immédiatement
  3031.                 document.querySelectorAll('.menu-link-modern.active, .menu-sub-link-modern.active').forEach(el => {
  3032.                     el.classList.remove('active');
  3033.                 });
  3034.                 this.classList.add('active');
  3035.                 
  3036.                 // Mettre à jour l'état de la section parente
  3037.                 const parentSection = this.closest('.menu-section-modern');
  3038.                 if (parentSection) {
  3039.                     const header = parentSection.querySelector('.menu-section-header-modern');
  3040.                     if (header && !parentSection.classList.contains('expanded')) {
  3041.                         parentSection.classList.add('expanded');
  3042.                         header.classList.add('active');
  3043.                         header.classList.add('has-active-child');
  3044.                     }
  3045.                 }
  3046.                 
  3047.                 // Sauvegarder l'état du menu
  3048.                 saveMenuState();
  3049.             });
  3050.         });
  3051.     }
  3052.     // Initialiser les effets de survol
  3053.     function initializeHoverEffects() {
  3054.         const menuItems = document.querySelectorAll('.menu-link-modern');
  3055.         
  3056.         menuItems.forEach(item => {
  3057.             item.addEventListener('mouseenter', function() {
  3058.                 if (!this.classList.contains('active')) {
  3059.                     this.style.transform = 'translateX(3px)';
  3060.                 }
  3061.             });
  3062.             
  3063.             item.addEventListener('mouseleave', function() {
  3064.                 this.style.transform = 'translateX(0)';
  3065.             });
  3066.         });
  3067.     }
  3068.     // ========== INITIALISATION ==========
  3069.     function initializeMenu() {
  3070.         initializeSections();
  3071.         initializeAccordions();
  3072.         preventScrollReset();
  3073.         initializeHoverEffects();
  3074.         
  3075.         // Sauvegarder l'état quand l'utilisateur quitte la page
  3076.         window.addEventListener('beforeunload', saveMenuState);
  3077.         
  3078.         // Sauvegarder périodiquement (au cas où)
  3079.         setInterval(saveMenuState, 30000); // Toutes les 30 secondes
  3080.     }
  3081.     // Démarrer l'initialisation
  3082.     initializeMenu();
  3083. });
  3084. </script>
  3085. <script>
  3086. // ========== GESTION DES MODALS ==========
  3087. document.addEventListener('DOMContentLoaded', function() {
  3088.     // Initialisation des gestionnaires de fichiers
  3089.     initFileUpload();
  3090. });
  3091. // MODAL TICKET
  3092. function openTicketModal() {
  3093.     document.getElementById('ticketModal').style.display = 'flex';
  3094.     document.body.style.overflow = 'hidden';
  3095. }
  3096. function closeTicketModal() {
  3097.     document.getElementById('ticketModal').style.display = 'none';
  3098.     document.body.style.overflow = '';
  3099.     
  3100.     // Réinitialiser le formulaire
  3101.     const form = document.getElementById('ticketForm');
  3102.     if (form) form.reset();
  3103.     document.getElementById('fileList').innerHTML = '';
  3104. }
  3105. // MODAL SUPPORT
  3106. function openSupportModal() {
  3107.     document.getElementById('supportModal').style.display = 'flex';
  3108.     document.body.style.overflow = 'hidden';
  3109. }
  3110. function closeSupportModal() {
  3111.     document.getElementById('supportModal').style.display = 'none';
  3112.     document.body.style.overflow = '';
  3113. }
  3114. // MODAL DÉMO
  3115. function openDemoScheduler() {
  3116.     document.getElementById('demoModal').style.display = 'flex';
  3117.     document.body.style.overflow = 'hidden';
  3118. }
  3119. function closeDemoModal() {
  3120.     document.getElementById('demoModal').style.display = 'none';
  3121.     document.body.style.overflow = '';
  3122. }
  3123. // Upload de fichiers
  3124. function initFileUpload() {
  3125.     const fileInput = document.getElementById('fileInput');
  3126.     if (!fileInput) return;
  3127.     
  3128.     fileInput.addEventListener('change', function(e) {
  3129.         const fileList = document.getElementById('fileList');
  3130.         fileList.innerHTML = '';
  3131.         
  3132.         Array.from(this.files).forEach((file, index) => {
  3133.             const fileItem = document.createElement('div');
  3134.             fileItem.className = 'file-item';
  3135.             fileItem.style.cssText = `
  3136.                 display: flex;
  3137.                 align-items: center;
  3138.                 justify-content: space-between;
  3139.                 padding: 8px 12px;
  3140.                 background: #f8fafc;
  3141.                 border-radius: 8px;
  3142.                 font-size: 0.85rem;
  3143.             `;
  3144.             
  3145.             fileItem.innerHTML = `
  3146.                 <div style="display: flex; align-items: center; gap: 8px;">
  3147.                     <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#64748b">
  3148.                         <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"/>
  3149.                         <polyline points="13 2 13 9 20 9"/>
  3150.                     </svg>
  3151.                     <span style="color: #1e293b;">${file.name}</span>
  3152.                     <span style="color: #94a3b8; font-size: 0.75rem;">(${(file.size / 1024).toFixed(1)} KB)</span>
  3153.                 </div>
  3154.                 <button type="button" onclick="this.parentElement.remove()" style="background: none; border: none; color: #ef4444; cursor: pointer;">
  3155.                     <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
  3156.                         <line x1="18" y1="6" x2="6" y2="18"/>
  3157.                         <line x1="6" y1="6" x2="18" y2="18"/>
  3158.                     </svg>
  3159.                 </button>
  3160.             `;
  3161.             
  3162.             fileList.appendChild(fileItem);
  3163.         });
  3164.     });
  3165. }
  3166. // Fermeture avec touche Echap
  3167. document.addEventListener('keydown', function(e) {
  3168.     if (e.key === 'Escape') {
  3169.         closeTicketModal();
  3170.         closeSupportModal();
  3171.         closeDemoModal();
  3172.     }
  3173. });
  3174. // Empêcher la propagation des clics dans les modals
  3175. document.querySelectorAll('.modal-container').forEach(modal => {
  3176.     modal.addEventListener('click', function(e) {
  3177.         e.stopPropagation();
  3178.     });
  3179. });
  3180. </script>
  3181.         <div class="wrapper d-flex flex-column flex-row-fluid" id="kt_wrapper">
  3182.             <div id="kt_header" style="" class="header align-items-stretch">
  3183.                 <div class="container d-flex align-items-stretch justify-content-between">
  3184.                     <div class="d-flex align-items-center d-lg-none ms-n3 me-1" title="Show aside menu">
  3185.                         <div class="btn btn-icon btn-active-light-primary" id="kt_aside_mobile_toggle">
  3186.                             <span class="svg-icon svg-icon-2x mt-1">
  3187.                                 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
  3188.                                     width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
  3189.                                     <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
  3190.                                         <rect x="0" y="0" width="24" height="24" />
  3191.                                         <rect fill="#000000" x="4" y="5" width="16" height="3" rx="1.5" />
  3192.                                         <path
  3193.                                             d="M5.5,15 L18.5,15 C19.3284271,15 20,15.6715729 20,16.5 C20,17.3284271 19.3284271,18 18.5,18 L5.5,18 C4.67157288,18 4,17.3284271 4,16.5 C4,15.6715729 4.67157288,15 5.5,15 Z M5.5,10 L18.5,10 C19.3284271,10 20,10.6715729 20,11.5 C20,12.3284271 19.3284271,13 18.5,13 L5.5,13 C4.67157288,13 4,12.3284271 4,11.5 C4,10.6715729 4.67157288,10 5.5,10 Z"
  3194.                                             fill="#000000" opacity="0.3" />
  3195.                                     </g>
  3196.                                 </svg>
  3197.                             </span>
  3198.                         </div>
  3199.                     </div>
  3200.                 </div>
  3201.             </div>