Lighthouse Desktop
· 0 checks — Desktop Lighthouse audit -- Performance, Accessibility, Best Practices, and SEO category breakdown.Detailed Report
Audit breakdown by category with detailed findings.
Performance
Insights
Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity.
Performance issues directly impact user engagement and conversion rates.
Polyfills and transforms enable older browsers to use new JavaScript features. However, many aren't necessary for modern browsers. Consider modifying your JavaScript build process to not transpile Baseline features, unless you know you must support older browsers. Learn why most sites can deploy ES6+ code without transpiling
Performance issues directly impact user engagement and conversion rates.
3rd party code can significantly impact load performance. Reduce and defer loading of 3rd party code to prioritize your page's content.
Performance issues directly impact user engagement and conversion rates.
Avoid chaining critical requests by reducing the length of chains, reducing the download size of resources, or deferring the download of unnecessary resources to improve page load.
Performance issues directly impact user engagement and conversion rates.
Requests are blocking the page's initial render, which may delay LCP. Deferring or inlining can move these network requests out of the critical path.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Duration |
|---|---|---|
| app.exonore.fr/style.css?v=11 | 20.5 KiB | 83 ms |
A long cache lifetime can speed up repeat visits to your page. Learn more about caching.
Performance issues directly impact user engagement and conversion rates.
| Request | Cache TTL | Transfer Size |
|---|---|---|
| /cdn-cgi/challenge-platform/h/g/ci/a494c8a58f6e9e54/17917... | 0.0 ms | 4.3 KiB |
These insights are also available in the Chrome DevTools Performance Panel - record a trace to view more detailed information.
Diagnostics
Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity. Learn how to reduce unused JavaScript.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Est Savings |
|---|---|---|
| cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js | 195.3 KiB | 114.6 KiB |
| app.exonore.fr/script.js?v=14 | 136.2 KiB | 90.7 KiB |
| cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js | 93.2 KiB | 77.3 KiB |
| cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js | 69.2 KiB | 61.5 KiB |
Minifying CSS files can reduce network payload sizes. Learn how to minify CSS.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Est Savings |
|---|---|---|
| app.exonore.fr/style.css?v=11 | 20.5 KiB | 2.7 KiB |
Minifying JavaScript files can reduce payload sizes and script parse time. Learn how to minify JavaScript.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Est Savings |
|---|---|---|
| app.exonore.fr/script.js?v=14 | 138.3 KiB | 15.1 KiB |
Reduce unused rules from stylesheets and defer CSS not used for above-the-fold content to decrease bytes consumed by network activity. Learn how to reduce unused CSS.
Performance issues directly impact user engagement and conversion rates.
| URL | Transfer Size | Est Savings |
|---|---|---|
| app.exonore.fr/style.css?v=11 | 19.5 KiB | 18.2 KiB |
More information about the performance of your application. These numbers don't directly affect the Performance score.
Accessibility
These checks highlight opportunities to improve the accessibility of your web app. Automatic detection can only detect a subset of issues and does not guarantee the accessibility of your web app, so manual testing is also encouraged.
Best Practices
SEO
These checks ensure that your page is following basic search engine optimization advice. There are many additional factors Lighthouse does not score here that may affect your search ranking, including performance on Core Web Vitals. Learn more about Google Search Essentials.
Crawling and Indexing
Search engines are unable to include your pages in search results if they don't have permission to crawl them. Learn more about crawler directives.
Performance issues directly impact user engagement and conversion rates.
| Blocking Directive Source |
|---|
head > meta |
If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed. Learn more about robots.txt.
Performance issues directly impact user engagement and conversion rates.
| Line # | Content | Error |
|---|---|---|
| 1 | <!DOCTYPE html> | Syntax not understood |
| 2 | <html lang="fr"> | Syntax not understood |
| 3 | <head> | Syntax not understood |
| 4 | <meta charset="UTF-8"> | Syntax not understood |
| 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> | Syntax not understood |
| 6 | <meta name="theme-color" content="#385D8D"> | Syntax not understood |
| 7 | <meta name="description" content="Exonore — Le CRM IA plug & play pour les PME françaises. Zéro consultant, zéro configuration, opérationnel en 10 minutes."> | Syntax not understood |
| 8 | <meta name="mobile-web-app-capable" content="yes"> | Syntax not understood |
| 9 | <meta name="apple-mobile-web-app-capable" content="yes"> | Syntax not understood |
| 10 | <meta name="apple-mobile-web-app-status-bar-style" content="default"> | Syntax not understood |
| 11 | <meta name="apple-mobile-web-app-title" content="Exonore"> | Syntax not understood |
| 12 | <meta name="robots" content="noindex, nofollow"> | Syntax not understood |
| 13 | <title>Exonore — CRM IA pour PME</title> | Syntax not understood |
| 14 | <link rel="manifest" href="manifest.json"> | Syntax not understood |
| 15 | <link rel="apple-touch-icon" href="apple-touch-icon.png"> | Syntax not understood |
| 16 | <link rel="icon" type="image/png" href="logo.png"> | Syntax not understood |
| 17 | <link rel="stylesheet" href="style.css?v=11"> | Syntax not understood |
| 18 | </head> | Syntax not understood |
| 19 | <body> | Syntax not understood |
| 20 | <div id="authOverlay" class="auth-overlay" role="main" aria-label="Connexion Exonore"> | Syntax not understood |
| 21 | <div class="auth-card"> | Syntax not understood |
| 22 | <div class="auth-logo">Exonore</div> | Syntax not understood |
| 23 | <div class="auth-tagline">Le CRM IA pour PME françaises — Zéro formation, opérationnel en 10 minutes</div> | Syntax not understood |
| 24 | <div id="loginForm"> | Syntax not understood |
| 25 | <h2>Connexion</h2> | Syntax not understood |
| 26 | <input type="email" id="loginEmail" placeholder="Votre email" autocomplete="email" aria-label="Email"> | Syntax not understood |
| 27 | <div class="password-wrapper"> | Syntax not understood |
| 28 | <input type="password" id="loginPassword" placeholder="Mot de passe" autocomplete="current-password" aria-label="Mot de passe"> | Syntax not understood |
| 29 | <button type="button" class="password-toggle" id="toggleLoginPassword" aria-label="Afficher le mot de passe"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg></button> | Syntax not understood |
| 30 | </div> | Syntax not understood |
| 31 | <div id="loginTurnstile" class="turnstile-box" data-sitekey="0x4AAAAAADsaL2xAd4s1sM20"></div> | Syntax not understood |
| 32 | <button class="btn-primary" id="loginBtn" type="button">Se connecter</button> | Syntax not understood |
| 33 | <div class="auth-switch">Pas encore de compte ? <a id="showSignupLink" role="button" tabindex="0">Créer un compte gratuit</a></div> | Syntax not understood |
| 34 | <div class="auth-switch"><a id="resetPasswordLink" class="auth-forgot" role="button" tabindex="0">Mot de passe oublié ?</a></div> | Syntax not understood |
| 35 | </div> | Syntax not understood |
| 36 | <div id="signupForm" class="hidden"> | Syntax not understood |
| 37 | <h2>Créer votre compte</h2> | Syntax not understood |
| 38 | <input type="email" id="signupEmail" placeholder="Votre email professionnel" autocomplete="email" aria-label="Email"> | Syntax not understood |
| 39 | <div class="password-wrapper"> | Syntax not understood |
| 40 | <input type="password" id="signupPassword" placeholder="Mot de passe (min. 10 caractères)" autocomplete="new-password" aria-label="Mot de passe"> | Syntax not understood |
| 41 | <button type="button" class="password-toggle" id="toggleSignupPassword" aria-label="Afficher le mot de passe"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg></button> | Syntax not understood |
| 42 | </div> | Syntax not understood |
| 43 | <div id="signupTurnstile" class="turnstile-box" data-sitekey="0x4AAAAAADsaL2xAd4s1sM20"></div> | Syntax not understood |
| 44 | <button class="btn-primary" id="signupBtn" type="button">Créer mon compte gratuit</button> | Syntax not understood |
| 45 | <div class="auth-switch">Déjà un compte ? <a id="showLoginLink" role="button" tabindex="0">Se connecter</a></div> | Syntax not understood |
| 46 | </div> | Syntax not understood |
| 47 | </div> | Syntax not understood |
| 48 | </div> | Syntax not understood |
| 49 | <div id="resetPasswordScreen" class="auth-overlay hidden" role="main" aria-label="Réinitialiser le mot de passe"> | Syntax not understood |
| 50 | <div class="auth-card"> | Syntax not understood |
| 51 | <div class="auth-logo">Exonore</div> | Syntax not understood |
| 52 | <div class="auth-tagline">Choisissez votre nouveau mot de passe</div> | Syntax not understood |
| 53 | <h2>Nouveau mot de passe</h2> | Syntax not understood |
| 54 | <input type="hidden" id="resetTokenInput"> | Syntax not understood |
| 55 | <div class="password-wrapper"> | Syntax not understood |
| 56 | <input type="password" id="newPasswordInput" placeholder="Nouveau mot de passe (min. 10 caractères)" autocomplete="new-password" aria-label="Nouveau mot de passe"> | Syntax not understood |
| 57 | <button type="button" class="password-toggle" id="toggleNewPassword" aria-label="Afficher le mot de passe"></button> | Syntax not understood |
| 58 | </div> | Syntax not understood |
| 59 | <div class="password-wrapper"> | Syntax not understood |
| 60 | <input type="password" id="newPasswordConfirm" placeholder="Confirmer le mot de passe" autocomplete="new-password" aria-label="Confirmer le mot de passe"> | Syntax not understood |
| 61 | </div> | Syntax not understood |
| 62 | <button class="btn-primary" type="button" data-action="submitNewPassword">Valider le nouveau mot de passe</button> | Syntax not understood |
| 63 | </div> | Syntax not understood |
| 64 | </div> | Syntax not understood |
| 65 | <div id="crmContent" class="hidden"> | Syntax not understood |
| 66 | <div class="crm-container"> | Syntax not understood |
| 67 | <aside class="crm-sidebar" role="navigation" aria-label="Menu principal"> | Syntax not understood |
| 68 | <div class="crm-logo"><img src="logo.png" alt="Exonore" class="crm-logo-img"></div> | Syntax not understood |
| 69 | <nav class="crm-nav"> | Syntax not understood |
| 70 | <div class="crm-nav-item active" data-view="dashboard" role="button" tabindex="0" aria-label="Tableau de bord"> | Syntax not understood |
| 71 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg></span> | Unknown directive |
| 72 | <span class="nav-label">Tableau de bord</span> | Syntax not understood |
| 73 | </div> | Syntax not understood |
| 74 | <div class="nav-separator" role="separator"></div> | Syntax not understood |
| 75 | <div class="crm-nav-item" data-view="prospects" role="button" tabindex="0" aria-label="Prospects"> | Syntax not understood |
| 76 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg></span> | Unknown directive |
| 77 | <span class="nav-label">Prospects</span> | Syntax not understood |
| 78 | </div> | Syntax not understood |
| 79 | <div class="crm-nav-item" data-view="clients" role="button" tabindex="0" aria-label="Clients"> | Syntax not understood |
| 80 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg></span> | Unknown directive |
| 81 | <span class="nav-label">Clients</span> | Syntax not understood |
| 82 | </div> | Syntax not understood |
| 83 | <div class="crm-nav-item" data-view="kanban" role="button" tabindex="0" aria-label="Pipeline Kanban"> | Syntax not understood |
| 84 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="5" height="18" rx="1"/><rect x="10" y="3" width="5" height="12" rx="1"/><rect x="17" y="3" width="5" height="8" rx="1"/></svg></span> | Unknown directive |
| 85 | <span class="nav-label">Pipeline</span> | Syntax not understood |
| 86 | </div> | Syntax not understood |
| 87 | <div class="nav-separator" role="separator"></div> | Syntax not understood |
| 88 | <div class="crm-nav-item" data-view="invoices" role="button" tabindex="0" aria-label="Devis et factures"> | Syntax not understood |
| 89 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg></span> | Unknown directive |
| 90 | <span class="nav-label">Devis</span> | Syntax not understood |
| 91 | </div> | Syntax not understood |
| 92 | <div class="crm-nav-item" data-view="facturesRecues" role="button" tabindex="0" aria-label="Factures reçues"> | Syntax not understood |
| 93 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/></svg></span> | Unknown directive |
| 94 | <span class="nav-label">Reçues</span> | Syntax not understood |
| 95 | </div> | Syntax not understood |
| 96 | <div class="crm-nav-item" data-view="products" role="button" tabindex="0" aria-label="Catalogue produits"> | Syntax not understood |
| 97 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></svg></span> | Unknown directive |
| 98 | <span class="nav-label">Catalogue</span> | Syntax not understood |
| 99 | </div> | Syntax not understood |
| 100 | <div class="nav-separator" role="separator"></div> | Syntax not understood |
| 101 | <div class="crm-nav-item" data-view="appointments" role="button" tabindex="0" aria-label="Rendez-vous"> | Syntax not understood |
| 102 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg></span> | Unknown directive |
| 103 | <span class="nav-label">Agenda</span> | Syntax not understood |
| 104 | </div> | Syntax not understood |
| 105 | <div class="crm-nav-item" data-view="reminders" role="button" tabindex="0" aria-label="Rappels"> | Syntax not understood |
| 106 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/></svg></span> | Unknown directive |
| 107 | <span class="nav-label">Rappels</span> | Syntax not understood |
| 108 | </div> | Syntax not understood |
| 109 | <div class="crm-nav-item" data-view="templates" role="button" tabindex="0" aria-label="Templates email"> | Syntax not understood |
| 110 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg></span> | Unknown directive |
| 111 | <span class="nav-label">Emails</span> | Syntax not understood |
| 112 | </div> | Syntax not understood |
| 113 | <div class="nav-separator" role="separator"></div> | Syntax not understood |
| 114 | <div class="crm-nav-item" data-view="assistant" role="button" tabindex="0" aria-label="Assistant IA"> | Syntax not understood |
| 115 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h1a7 7 0 0 1 7 7h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v1a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1a7 7 0 0 1 7-7h1V5.73c-.6-.34-1-.99-1-1.73a2 2 0 0 1 2-2z"/><circle cx="7.5" cy="14.5" r="1.5"/><circle cx="16.5" cy="14.5" r="1.5"/></svg></span> | Unknown directive |
| 116 | <span class="nav-label">Assistant IA</span> | Syntax not understood |
| 117 | </div> | Syntax not understood |
| 118 | <div class="crm-nav-item" data-view="workflows" role="button" tabindex="0" aria-label="Automatisations"> | Syntax not understood |
| 119 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg></span> | Unknown directive |
| 120 | <span class="nav-label">Automatisations</span> | Syntax not understood |
| 121 | </div> | Syntax not understood |
| 122 | <div class="nav-separator" role="separator"></div> | Syntax not understood |
| 123 | <div class="crm-nav-item" data-view="analytics" role="button" tabindex="0" aria-label="Rapports"> | Syntax not understood |
| 124 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg></span> | Unknown directive |
| 125 | <span class="nav-label">Rapports</span> | Syntax not understood |
| 126 | </div> | Syntax not understood |
| 127 | <div class="crm-nav-item" data-view="settings" role="button" tabindex="0" aria-label="Paramètres"> | Syntax not understood |
| 128 | <span class="nav-icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg></span> | Unknown directive |
| 129 | <span class="nav-label">Paramètres</span> | Syntax not understood |
| 130 | </div> | Syntax not understood |
| 131 | </nav> | Syntax not understood |
| 132 | </aside> | Syntax not understood |
| 133 | <main class="crm-main" id="mainContent" role="main"> | Syntax not understood |
| 134 | <header class="crm-header"> | Syntax not understood |
| 135 | <h1 id="pageTitle">Tableau de bord</h1> | Syntax not understood |
| 136 | <span id="bgLoadIndicator" class="bg-load-indicator hidden" role="status" aria-live="polite"></span> | Syntax not understood |
| 137 | <div class="global-search-wrap"> | Syntax not understood |
| 138 | <input type="search" id="globalSearch" placeholder="Rechercher contacts, devis..." aria-label="Recherche globale" autocomplete="off"> | Syntax not understood |
| 139 | <div id="globalSearchResults" class="global-search-results hidden" role="listbox" aria-label="Résultats de la recherche"></div> | Syntax not understood |
| 140 | </div> | Syntax not understood |
| 141 | <div class="crm-user" role="toolbar" aria-label="Barre utilisateur"> | Syntax not understood |
| 142 | <button id="darkModeToggle" type="button" class="btn-icon" title="Mode sombre / clair" aria-label="Basculer mode sombre"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg></button> | Syntax not understood |
| 143 | <span id="userEmail" aria-label="Email utilisateur connecté"></span> | Syntax not understood |
| 144 | <span id="onlineStatus" class="online-status online" title="En ligne" aria-label="Statut de connexion"></span> | Syntax not understood |
| 145 | <span id="offlineQueueBadge" class="offline-queue-badge hidden" role="status" aria-live="polite"></span> | Syntax not understood |
| 146 | <div class="active-sessions-widget"> | Syntax not understood |
| 147 | <button id="activeSessionsBtn" type="button" class="btn-icon" title="Voir qui est en ligne (dernières 24h)" aria-label="Appareils actifs récemment" aria-haspopup="true" aria-expanded="false"> | Syntax not understood |
| 148 | <svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg><span id="activeSessionsCount" class="active-sessions-count hidden">0</span> | Syntax not understood |
| 149 | </button> | Syntax not understood |
| 150 | <div id="activeSessionsPanel" class="active-sessions-panel hidden" role="dialog" aria-label="Appareils actifs récemment"> | Syntax not understood |
| 151 | <div class="active-sessions-panel-header"> | Syntax not understood |
| 152 | <strong>Appareils actifs (24h)</strong> | Syntax not understood |
| 153 | <span class="text-muted text-sm">Lecture seule — aucune action de déconnexion possible</span> | Syntax not understood |
| 154 | </div> | Syntax not understood |
| 155 | <div id="activeSessionsPanelList" class="active-sessions-panel-list"></div> | Syntax not understood |
| 156 | </div> | Syntax not understood |
| 157 | </div> | Syntax not understood |
| 158 | <button id="headerChangePasswordBtn" type="button" class="btn-icon" title="Changer mon mot de passe" aria-label="Changer mon mot de passe"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg></button> | Syntax not understood |
| 159 | <button class="logout-btn" id="logoutBtn" type="button">Déconnexion</button> | Syntax not understood |
| 160 | <div id="headerPasswordModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="headerPasswordModalTitle"> | Syntax not understood |
| 161 | <div class="modal-content"> | Syntax not understood |
| 162 | <h3 id="headerPasswordModalTitle"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg>Changer mon mot de passe</h3> | Syntax not understood |
| 163 | <div class="form-group"> | Syntax not understood |
| 164 | <label for="headerCurrentPasswordInput">Mot de passe actuel</label> | Syntax not understood |
| 165 | <input type="password" id="headerCurrentPasswordInput" autocomplete="current-password"> | Syntax not understood |
| 166 | </div> | Syntax not understood |
| 167 | <div class="form-group"> | Syntax not understood |
| 168 | <label for="headerNewPasswordInput">Nouveau mot de passe</label> | Syntax not understood |
| 169 | <input type="password" id="headerNewPasswordInput" autocomplete="new-password"> | Syntax not understood |
| 170 | </div> | Syntax not understood |
| 171 | <div class="modal-actions"> | Syntax not understood |
| 172 | <button class="btn-secondary" data-action="closeHeaderPasswordModal" type="button">Annuler</button> | Syntax not understood |
| 173 | <button class="btn-success" id="headerChangePasswordSubmitBtn" type="button">Changer mon mot de passe</button> | Syntax not understood |
| 174 | </div> | Syntax not understood |
| 175 | </div> | Syntax not understood |
| 176 | </div> | Syntax not understood |
| 177 | </div> | Syntax not understood |
| 178 | </header> | Syntax not understood |
| 179 | <section id="dashboardView" aria-label="Tableau de bord"> | Syntax not understood |
| 180 | <div id="tvaAlert" class="tva-alert hidden" role="alert"><span class="tva-alert-icon"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg></span><span id="tvaAlertText"></span></div> | Syntax not understood |
| 181 | <div id="welcomeBanner" class="welcome-banner" role="status" aria-live="polite"></div> | Syntax not understood |
| 182 | <div id="aiWeeklyComment" class="ai-weekly-comment hidden" aria-live="polite"></div> | Syntax not understood |
| 183 | <div class="view-header"> | Syntax not understood |
| 184 | <div class="view-header-col"><p class="text-muted text-sm">Votre activité en un coup d'œil</p></div> | Syntax not understood |
| 185 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="dashboard"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Comment ça marche ?</button> | Syntax not understood |
| 186 | </div> | Syntax not understood |
| 187 | <div id="featureHelp_dashboard" class="feature-help-panel hidden"></div> | Syntax not understood |
| 188 | <div class="crm-stats" role="region" aria-label="Indicateurs clés"> | Syntax not understood |
| 189 | <div class="stat-card" id="kpiCAMois" role="button" tabindex="0" aria-label="Chiffre d'affaires HT du mois"><h3>CA HT ce mois</h3><div class="stat-number" id="statCAMois">0 €</div><div class="stat-trend up" id="statCATrend"></div></div> | Syntax not understood |
| 190 | <div class="stat-card" id="kpiDevisEnCours" role="button" tabindex="0" aria-label="Devis en cours"><h3>Devis en cours</h3><div class="stat-number" id="statDevisEnCours">0</div><div class="stat-trend" id="statDevisTrend"></div></div> | Syntax not understood |
| 191 | <div class="stat-card" id="kpiConversion" role="button" tabindex="0" aria-label="Taux de conversion"><h3>Taux conversion</h3><div class="stat-number" id="conversionRate">0%</div><div class="stat-trend" id="statConvTrend"></div></div> | Syntax not understood |
| 192 | </div> | Syntax not understood |
| 193 | <div class="stats-mini" role="region" aria-label="Statistiques secondaires"> | Syntax not understood |
| 194 | <div class="stat-mini-card"><div class="value" id="statTotal">0</div><div class="label">Total contacts</div></div> | Syntax not understood |
| 195 | <div class="stat-mini-card"><div class="value" id="statProspects">0</div><div class="label">Prospects</div></div> | Syntax not understood |
| 196 | <div class="stat-mini-card"><div class="value" id="statClients">0</div><div class="label">Clients</div></div> | Syntax not understood |
| 197 | <div class="stat-mini-card"><div class="value" id="avgDealValue" title="CA HT encaissé depuis le 1er janvier, divisé par le nombre de factures payées">0 €</div><div class="label">Panier moyen HT</div></div> | Syntax not understood |
| 198 | </div> | Syntax not understood |
| 199 | <div class="contacts-table"> | Syntax not understood |
| 200 | <div class="contacts-table-header"> | Syntax not understood |
| 201 | <h2>Derniers contacts</h2> | Syntax not understood |
| 202 | <div class="flex gap-8"> | Syntax not understood |
| 203 | <button class="btn-secondary btn-icon" id="toggleColumnsDashboard" type="button" title="Configurer colonnes" aria-label="Configurer colonnes"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg></button> | Syntax not understood |
| 204 | <button class="btn-add" id="newContactBtnDashboard" type="button">+ Nouveau contact</button> | Syntax not understood |
| 205 | </div> | Syntax not understood |
| 206 | </div> | Syntax not understood |
| 207 | <div class="table-responsive" role="region" aria-label="Liste contacts récents"> | Syntax not understood |
| 208 | <table aria-label="Contacts récents"><thead id="dashboardTableHeader"></thead><tbody id="recentContactsList"></tbody></table> | Syntax not understood |
| 209 | </div> | Syntax not understood |
| 210 | </div> | Syntax not understood |
| 211 | <div class="contacts-table-card hidden" id="shippingCard"> | Syntax not understood |
| 212 | <div class="contacts-table-header"> | Syntax not understood |
| 213 | <h2><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Commandes à expédier <span id="shippingCount" class="text-muted"></span></h2> | Syntax not understood |
| 214 | </div> | Syntax not understood |
| 215 | <p class="text-muted text-sm help-tight-p">Factures payées contenant au moins un produit physique. Cliquez sur « Expédié » une fois la commande envoyée.</p> | Syntax not understood |
| 216 | <div class="table-responsive" role="region" aria-label="Commandes à expédier"> | Syntax not understood |
| 217 | <table aria-label="Commandes à expédier"><thead><tr><th>Client</th><th>Adresse</th><th>Facture</th><th>Montant</th><th>Payée le</th><th></th></tr></thead><tbody id="shippingList"></tbody></table> | Syntax not understood |
| 218 | </div> | Syntax not understood |
| 219 | <div class="mt-8"><button class="btn-secondary hidden" type="button" id="shippingMore" data-action="showMoreShipping"></button></div> | Syntax not understood |
| 220 | </div> | Syntax not understood |
| 221 | </section> | Syntax not understood |
| 222 | <section id="prospectsView" class="hidden" aria-label="Prospects"> | Syntax not understood |
| 223 | <div class="view-header"> | Syntax not understood |
| 224 | <div class="flex gap-8"> | Syntax not understood |
| 225 | <button class="btn-add" id="newContactBtnProspects" type="button">+ Nouveau prospect</button> | Syntax not understood |
| 226 | </div> | Syntax not understood |
| 227 | <div class="flex gap-8"> | Syntax not understood |
| 228 | <button class="btn-secondary btn-icon" id="toggleColumnsProspects" type="button" title="Configurer colonnes" aria-label="Configurer colonnes"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg></button> | Syntax not understood |
| 229 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="prospects"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 230 | </div> | Syntax not understood |
| 231 | </div> | Syntax not understood |
| 232 | <div id="featureHelp_prospects" class="feature-help-panel hidden"></div> | Syntax not understood |
| 233 | <div class="filter-group" role="search" aria-label="Filtres prospects"> | Syntax not understood |
| 234 | <select class="filter-select" id="filterProspectStatus" aria-label="Filtrer par statut"> | Syntax not understood |
| 235 | <option value="">Tous les statuts</option> | Syntax not understood |
| 236 | <option value="prospect">Prospect</option> | Syntax not understood |
| 237 | <option value="contact">Contact établi</option> | Syntax not understood |
| 238 | </select> | Syntax not understood |
| 239 | <select class="filter-select" id="filterProspectScore" aria-label="Filtrer par priorité"> | Syntax not understood |
| 240 | <option value="">Toutes les priorités</option> | Syntax not understood |
| 241 | <option value="chaud">🔴 Chaud</option> | Syntax not understood |
| 242 | <option value="tiede">🟠 Tiède</option> | Syntax not understood |
| 243 | <option value="froid">🔵 Froid</option> | Syntax not understood |
| 244 | </select> | Syntax not understood |
| 245 | <select class="filter-select" id="filterProspectSource" aria-label="Filtrer par source"> | Syntax not understood |
| 246 | <option value="">Toutes les sources</option> | Syntax not understood |
| 247 | <option value="chatbot">Chatbot</option> | Syntax not understood |
| 248 | <option value="manuel">Manuel</option> | Syntax not understood |
| 249 | <option value="import">Import</option> | Syntax not understood |
| 250 | <option value="referral">Recommandation</option> | Syntax not understood |
| 251 | </select> | Syntax not understood |
| 252 | <span class="filter-date-label"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>Créé après le</span> | Syntax not understood |
| 253 | <input type="date" class="filter-select filter-select-half" id="filterProspectDate" aria-label="Filtrer par date de création"> | Syntax not understood |
| 254 | <button class="btn-secondary" id="resetProspectFilters" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>Réinitialiser</button> | Syntax not understood |
| 255 | </div> | Syntax not understood |
| 256 | <div class="contacts-table" role="region" aria-label="Liste des prospects"> | Syntax not understood |
| 257 | <div class="table-responsive"><table id="prospectsTable" aria-label="Prospects"></table></div> | Syntax not understood |
| 258 | </div> | Syntax not understood |
| 259 | </section> | Syntax not understood |
| 260 | <section id="clientsView" class="hidden" aria-label="Clients"> | Syntax not understood |
| 261 | <div class="view-header"> | Syntax not understood |
| 262 | <button class="btn-add" id="newContactBtnClients" type="button">+ Nouveau client</button> | Syntax not understood |
| 263 | <div class="flex gap-8"> | Syntax not understood |
| 264 | <button class="btn-secondary btn-icon" id="toggleColumnsClients" type="button" title="Configurer colonnes" aria-label="Configurer colonnes"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg></button> | Syntax not understood |
| 265 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="clients"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 266 | </div> | Syntax not understood |
| 267 | </div> | Syntax not understood |
| 268 | <div id="featureHelp_clients" class="feature-help-panel hidden"></div> | Syntax not understood |
| 269 | <div class="filter-group" role="search" aria-label="Filtres clients"> | Syntax not understood |
| 270 | <select class="filter-select" id="filterClientScore" aria-label="Filtrer par priorité"> | Syntax not understood |
| 271 | <option value="">Toutes les priorités</option> | Syntax not understood |
| 272 | <option value="chaud">🔴 Chaud</option> | Syntax not understood |
| 273 | <option value="tiede">🟠 Tiède</option> | Syntax not understood |
| 274 | <option value="froid">🔵 Froid</option> | Syntax not understood |
| 275 | </select> | Syntax not understood |
| 276 | <select class="filter-select" id="filterClientSource" aria-label="Filtrer par source"> | Syntax not understood |
| 277 | <option value="">Toutes les sources</option> | Syntax not understood |
| 278 | <option value="chatbot">Chatbot</option> | Syntax not understood |
| 279 | <option value="manuel">Manuel</option> | Syntax not understood |
| 280 | <option value="import">Import</option> | Syntax not understood |
| 281 | </select> | Syntax not understood |
| 282 | <button class="btn-secondary" id="resetClientFilters" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>Réinitialiser</button> | Syntax not understood |
| 283 | </div> | Syntax not understood |
| 284 | <div class="contacts-table" role="region" aria-label="Liste des clients"> | Syntax not understood |
| 285 | <div class="table-responsive"><table id="clientsTable" aria-label="Clients"></table></div> | Syntax not understood |
| 286 | </div> | Syntax not understood |
| 287 | </section> | Syntax not understood |
| 288 | <section id="kanbanView" class="hidden" aria-label="Pipeline de vente Kanban"> | Syntax not understood |
| 289 | <div class="view-header"> | Syntax not understood |
| 290 | <h2>Pipeline de vente</h2> | Syntax not understood |
| 291 | <div class="flex gap-8"> | Syntax not understood |
| 292 | <button class="btn-add" id="newContactBtnKanban" type="button">+ Ajouter un prospect</button> | Syntax not understood |
| 293 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="kanban"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 294 | </div> | Syntax not understood |
| 295 | </div> | Syntax not understood |
| 296 | <div id="featureHelp_kanban" class="feature-help-panel hidden"></div> | Syntax not understood |
| 297 | <div class="kanban-columns" role="region" aria-label="Colonnes pipeline"> | Syntax not understood |
| 298 | <div class="kanban-column" data-status="prospect" id="kanbanColProspect" aria-label="Colonne Prospects"> | Syntax not understood |
| 299 | <div class="kanban-column-header"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>Prospects</h3><div class="flex gap-8"><span class="kanban-count" id="kanbanCountProspect">0</span><span class="kanban-total" id="kanbanTotalProspect"></span></div></div> | Syntax not understood |
| 300 | <div id="kanbanProspect"></div> | Syntax not understood |
| 301 | </div> | Syntax not understood |
| 302 | <div class="kanban-column" data-status="contact" id="kanbanColContact" aria-label="Colonne Contacts établis"> | Syntax not understood |
| 303 | <div class="kanban-column-header"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><polyline points="17 11 19 13 23 9"/></svg>Contacts</h3><div class="flex gap-8"><span class="kanban-count" id="kanbanCountContact">0</span><span class="kanban-total" id="kanbanTotalContact"></span></div></div> | Syntax not understood |
| 304 | <div id="kanbanContact"></div> | Syntax not understood |
| 305 | </div> | Syntax not understood |
| 306 | <div class="kanban-column" data-status="client" id="kanbanColClient" aria-label="Colonne Clients"> | Syntax not understood |
| 307 | <div class="kanban-column-header"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>Clients</h3><div class="flex gap-8"><span class="kanban-count" id="kanbanCountClient">0</span><span class="kanban-total" id="kanbanTotalClient"></span></div></div> | Syntax not understood |
| 308 | <div id="kanbanClient"></div> | Syntax not understood |
| 309 | </div> | Syntax not understood |
| 310 | </div> | Syntax not understood |
| 311 | </section> | Syntax not understood |
| 312 | <section id="invoicesView" class="hidden" aria-label="Devis et factures"> | Syntax not understood |
| 313 | <div class="view-header"> | Syntax not understood |
| 314 | <div class="flex gap-8 items-center"> | Syntax not understood |
| 315 | <button class="btn-add" id="newInvoiceBtn" type="button">+ Nouveau devis</button> | Syntax not understood |
| 316 | <span class="tooltip-icon" data-tip="Crée un devis brouillon pour un client. Ajoutez vos lignes, la TVA est calculée automatiquement. Une fois accepté par le client, convertissez-le en facture en un clic." tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 317 | </div> | Syntax not understood |
| 318 | <div class="flex gap-8 flex-wrap items-center"> | Syntax not understood |
| 319 | <select class="filter-select filter-select-lg" id="invoiceFilterStatus" aria-label="Filtrer par statut"> | Syntax not understood |
| 320 | <option value="">Tous les statuts</option> | Syntax not understood |
| 321 | <option value="devis">Devis</option> | Syntax not understood |
| 322 | <option value="envoye">Envoyé</option> | Syntax not understood |
| 323 | <option value="accepte">Accepté</option> | Syntax not understood |
| 324 | <option value="facture">Facturé</option> | Syntax not understood |
| 325 | <option value="paye">Payé</option> | Syntax not understood |
| 326 | <option value="echu">Échu</option> | Syntax not understood |
| 327 | <option value="avoir">Avoir</option> | Syntax not understood |
| 328 | </select> | Syntax not understood |
| 329 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="invoices"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 330 | </div> | Syntax not understood |
| 331 | </div> | Syntax not understood |
| 332 | <div id="featureHelp_invoices" class="feature-help-panel hidden"></div> | Syntax not understood |
| 333 | <div id="invoicesList" role="list" aria-label="Liste des devis et factures"></div> | Syntax not understood |
| 334 | </section> | Syntax not understood |
| 335 | <section id="facturesRecuesView" class="hidden" aria-label="Factures reçues"> | Syntax not understood |
| 336 | <div class="view-header"> | Syntax not understood |
| 337 | <h2>Factures reçues</h2> | Syntax not understood |
| 338 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="facturesRecues"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 339 | </div> | Syntax not understood |
| 340 | <div id="featureHelp_facturesRecues" class="feature-help-panel hidden"></div> | Syntax not understood |
| 341 | <div class="settings-section" id="frUploadBox"> | Syntax not understood |
| 342 | <h3>Déposer une facture fournisseur</h3> | Syntax not understood |
| 343 | <p class="text-muted text-sm">Factur-X (PDF) ou XML : lue automatiquement. PDF simple, photo ou scan : complétez la saisie manuelle.</p> | Unknown directive |
| 344 | <div class="form-group"><label for="frFile">Fichier (5 Mo maximum)</label><input type="file" id="frFile" accept=".pdf,.xml,.jpg,.jpeg,.png,application/pdf,application/xml,text/xml,image/jpeg,image/png"></div> | Syntax not understood |
| 345 | <details id="frManual" class="fr-manual"><summary>Saisie manuelle (facture papier, PDF simple…)</summary> | Syntax not understood |
| 346 | <div class="fr-grid"> | Syntax not understood |
| 347 | <div class="form-group"><label for="frFournisseur">Fournisseur</label><input type="text" id="frFournisseur" maxlength="200"></div> | Syntax not understood |
| 348 | <div class="form-group"><label for="frSiren">SIREN ou SIRET (optionnel)</label><input type="text" id="frSiren" maxlength="17" inputmode="numeric"></div> | Syntax not understood |
| 349 | <div class="form-group"><label for="frNumero">N° de facture</label><input type="text" id="frNumero" maxlength="100"></div> | Syntax not understood |
| 350 | <div class="form-group"><label for="frDate">Date de facture</label><input type="date" id="frDate"></div> | Syntax not understood |
| 351 | <div class="form-group"><label for="frEcheance">Échéance (optionnel)</label><input type="date" id="frEcheance"></div> | Syntax not understood |
| 352 | <div class="form-group"><label for="frType">Type</label><select id="frType"><option value="facture">Facture</option><option value="avoir">Avoir</option></select></div> | Syntax not understood |
| 353 | <div class="form-group"><label for="frHT">Montant HT (optionnel)</label><input type="number" id="frHT" step="0.01" min="0"></div> | Syntax not understood |
| 354 | <div class="form-group"><label for="frTTC">Montant TTC</label><input type="number" id="frTTC" step="0.01" min="0"></div> | Syntax not understood |
| 355 | </div> | Syntax not understood |
| 356 | </details> | Syntax not understood |
| 357 | <div class="form-group"><label for="frCategorie">Catégorie (optionnel)</label><input type="text" id="frCategorie" maxlength="80" placeholder="Ex : Matériaux, Carburant, Logiciels"></div> | Unknown directive |
| 358 | <button class="btn-success" type="button" data-action="uploadFactureRecue">📥 Déposer la facture</button> | Syntax not understood |
| 359 | </div> | Syntax not understood |
| 360 | <div class="fr-toolbar"><label for="frFiltre" class="text-sm">Afficher</label><select id="frFiltre"><option value="">Toutes</option><option value="a_valider">À valider</option><option value="validee">Validées</option><option value="payee">Payées</option><option value="refusee">Refusées</option></select><span id="frResume" class="text-muted text-sm"></span></div> | Syntax not understood |
| 361 | <div id="facturesRecuesList" role="list" aria-label="Liste des factures reçues"></div> | Syntax not understood |
| 362 | </section> | Syntax not understood |
| 363 | <section id="productsView" class="hidden" aria-label="Catalogue produits"> | Syntax not understood |
| 364 | <div class="view-header"> | Syntax not understood |
| 365 | <h2>Catalogue produits</h2> | Syntax not understood |
| 366 | <div class="flex gap-8"> | Syntax not understood |
| 367 | <button class="btn-add" id="newProductBtn" type="button">+ Nouveau produit</button> | Syntax not understood |
| 368 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="products"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 369 | </div> | Syntax not understood |
| 370 | </div> | Syntax not understood |
| 371 | <div id="featureHelp_products" class="feature-help-panel hidden"></div> | Syntax not understood |
| 372 | <p id="productsCount" class="text-muted text-sm products-count" aria-live="polite"></p> | Syntax not understood |
| 373 | <div id="productsList" role="list" aria-label="Liste des produits"></div> | Syntax not understood |
| 374 | </section> | Syntax not understood |
| 375 | <section id="appointmentsView" class="hidden" aria-label="Agenda et rendez-vous"> | Syntax not understood |
| 376 | <div class="view-header"> | Syntax not understood |
| 377 | <h2>Agenda</h2> | Syntax not understood |
| 378 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="appointments"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 379 | </div> | Syntax not understood |
| 380 | <div id="featureHelp_appointments" class="feature-help-panel hidden"></div> | Syntax not understood |
| 381 | <div class="appointment-container"> | Syntax not understood |
| 382 | <div class="appointment-grid"> | Syntax not understood |
| 383 | <div class="appointment-calendar"> | Syntax not understood |
| 384 | <div class="calendar-header"> | Syntax not understood |
| 385 | <button id="prevMonthBtn" class="btn-secondary" type="button" aria-label="Mois précédent">◀</button> | Syntax not understood |
| 386 | <h3 id="currentMonthYear" aria-live="polite"></h3> | Syntax not understood |
| 387 | <button id="nextMonthBtn" class="btn-secondary" type="button" aria-label="Mois suivant">▶</button> | Syntax not understood |
| 388 | </div> | Syntax not understood |
| 389 | <div class="calendar-weekdays" role="row" aria-label="Jours de la semaine"> | Syntax not understood |
| 390 | <div>Lun</div><div>Mar</div><div>Mer</div><div>Jeu</div><div>Ven</div><div>Sam</div><div>Dim</div> | Syntax not understood |
| 391 | </div> | Syntax not understood |
| 392 | <div id="calendarDays" class="calendar-days" role="grid" aria-label="Calendrier"></div> | Syntax not understood |
| 393 | </div> | Syntax not understood |
| 394 | <div class="appointment-form"> | Syntax not understood |
| 395 | <h3>Nouveau rendez-vous</h3> | Syntax not understood |
| 396 | <div class="form-group"> | Syntax not understood |
| 397 | <label for="appointmentContactId">Client</label> | Syntax not understood |
| 398 | <select id="appointmentContactId" aria-required="true"><option value="">-- Sélectionner un client --</option></select> | Syntax not understood |
| 399 | </div> | Syntax not understood |
| 400 | <div class="form-group"> | Syntax not understood |
| 401 | <label for="appointmentDate">Date sélectionnée</label> | Syntax not understood |
| 402 | <input type="date" id="appointmentDate" readonly aria-readonly="true"> | Syntax not understood |
| 403 | </div> | Syntax not understood |
| 404 | <div class="form-group"> | Syntax not understood |
| 405 | <label for="appointmentTime">Heure</label> | Syntax not understood |
| 406 | <select id="appointmentTime" aria-required="true"> | Syntax not understood |
| 407 | <option value="">Sélectionner un horaire</option> | Syntax not understood |
| 408 | <option>08:00</option><option>08:30</option><option>09:00</option><option>09:30</option> | Unknown directive |
| 409 | <option>10:00</option><option>10:30</option><option>11:00</option><option>11:30</option> | Unknown directive |
| 410 | <option>13:00</option><option>13:30</option><option>14:00</option><option>14:30</option> | Unknown directive |
| 411 | <option>15:00</option><option>15:30</option><option>16:00</option><option>16:30</option> | Unknown directive |
| 412 | <option>17:00</option><option>17:30</option><option>18:00</option> | Unknown directive |
| 413 | </select> | Syntax not understood |
| 414 | </div> | Syntax not understood |
| 415 | <div class="form-group"> | Syntax not understood |
| 416 | <label for="appointmentDuration">Durée</label> | Syntax not understood |
| 417 | <select id="appointmentDuration"> | Syntax not understood |
| 418 | <option value="15">15 min</option><option value="30">30 min</option> | Syntax not understood |
| 419 | <option value="60" selected>1 heure</option><option value="90">1h30</option><option value="120">2 heures</option> | Syntax not understood |
| 420 | </select> | Syntax not understood |
| 421 | </div> | Syntax not understood |
| 422 | <div class="form-group"> | Syntax not understood |
| 423 | <label for="appointmentNotes">Objet / Notes</label> | Syntax not understood |
| 424 | <textarea id="appointmentNotes" rows="3" placeholder="Objet du rendez-vous..."></textarea> | Syntax not understood |
| 425 | </div> | Syntax not understood |
| 426 | <div class="flex gap-8"> | Syntax not understood |
| 427 | <button class="btn-success" id="saveAppointmentBtn" type="button">Enregistrer le RDV</button> | Syntax not understood |
| 428 | </div> | Syntax not understood |
| 429 | </div> | Syntax not understood |
| 430 | </div> | Syntax not understood |
| 431 | <div class="appointments-upcoming"> | Syntax not understood |
| 432 | <h3>Prochains rendez-vous</h3> | Syntax not understood |
| 433 | <div class="contacts-table"> | Syntax not understood |
| 434 | <div class="table-responsive"> | Syntax not understood |
| 435 | <table aria-label="Prochains rendez-vous"> | Syntax not understood |
| 436 | <thead><tr><th scope="col">Date</th><th scope="col">Heure</th><th scope="col">Client</th><th scope="col">Objet</th><th scope="col">Durée</th><th scope="col">Actions</th></tr></thead> | Syntax not understood |
| 437 | <tbody id="appointmentsList"></tbody> | Syntax not understood |
| 438 | </table> | Syntax not understood |
| 439 | </div> | Syntax not understood |
| 440 | </div> | Syntax not understood |
| 441 | </div> | Syntax not understood |
| 442 | </div> | Syntax not understood |
| 443 | </section> | Syntax not understood |
| 444 | <section id="remindersView" class="hidden" aria-label="Rappels et tâches"> | Syntax not understood |
| 445 | <div class="view-header"> | Syntax not understood |
| 446 | <h2>Rappels & tâches</h2> | Syntax not understood |
| 447 | <div class="flex gap-8"> | Syntax not understood |
| 448 | <button class="btn-add" id="newReminderBtn" type="button">+ Nouveau rappel</button> | Syntax not understood |
| 449 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="reminders"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 450 | </div> | Syntax not understood |
| 451 | </div> | Syntax not understood |
| 452 | <div id="featureHelp_reminders" class="feature-help-panel hidden"></div> | Syntax not understood |
| 453 | <div class="contacts-table"> | Syntax not understood |
| 454 | <div class="table-responsive"> | Syntax not understood |
| 455 | <table aria-label="Liste des rappels"> | Syntax not understood |
| 456 | <thead><tr><th scope="col">Date</th><th scope="col">Titre</th><th scope="col">Description</th><th scope="col">Contact lié</th><th scope="col">Statut</th><th scope="col">Actions</th></tr></thead> | Syntax not understood |
| 457 | <tbody id="remindersList"></tbody> | Syntax not understood |
| 458 | </table> | Syntax not understood |
| 459 | </div> | Syntax not understood |
| 460 | </div> | Syntax not understood |
| 461 | </section> | Syntax not understood |
| 462 | <section id="templatesView" class="hidden" aria-label="Templates email"> | Syntax not understood |
| 463 | <div class="view-header"> | Syntax not understood |
| 464 | <h2>Templates email</h2> | Syntax not understood |
| 465 | <div class="flex gap-8"> | Syntax not understood |
| 466 | <button class="btn-add" id="newTemplateBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>Nouveau template</button> | Syntax not understood |
| 467 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="templates"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 468 | </div> | Syntax not understood |
| 469 | </div> | Syntax not understood |
| 470 | <div id="featureHelp_templates" class="feature-help-panel hidden"></div> | Syntax not understood |
| 471 | <div id="templatesList" role="list" aria-label="Liste des templates"></div> | Syntax not understood |
| 472 | </section> | Syntax not understood |
| 473 | <section id="assistantView" class="hidden" aria-label="Assistant IA"> | Syntax not understood |
| 474 | <div class="view-header-col"> | Syntax not understood |
| 475 | <h2>Assistant IA</h2> | Syntax not understood |
| 476 | <p class="text-muted text-sm">Posez n'importe quelle question sur vos contacts, devis et performances</p> | Syntax not understood |
| 477 | </div> | Syntax not understood |
| 478 | <button class="feature-help-trigger mb-16" type="button" data-action="toggleFeatureHelp" data-help="assistant"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>Que puis-je demander ?</button> | Syntax not understood |
| 479 | <div id="featureHelp_assistant" class="feature-help-panel hidden"></div> | Syntax not understood |
| 480 | <div class="ai-suggestions mb-16" role="group" aria-label="Questions suggérées"> | Syntax not understood |
| 481 | <button class="ai-suggestion-chip" data-question="Qui relancer cette semaine ?" type="button">Qui relancer cette semaine ?</button> | Syntax not understood |
| 482 | <button class="ai-suggestion-chip" data-question="Quel est mon CA du mois ?" type="button">Quel est mon CA du mois ?</button> | Syntax not understood |
| 483 | <button class="ai-suggestion-chip" data-question="Quels devis sont en attente depuis plus de 7 jours ?" type="button">Devis en attente +7 jours</button> | Syntax not understood |
| 484 | <button class="ai-suggestion-chip" data-question="Qui sont mes 5 meilleurs clients ?" type="button">Top 5 clients</button> | Syntax not understood |
| 485 | <button class="ai-suggestion-chip" data-question="Résume mon activité commerciale de ce mois" type="button">Résumé du mois</button> | Syntax not understood |
| 486 | </div> | Syntax not understood |
| 487 | <div class="ai-assistant" role="region" aria-label="Chat avec l'assistant IA"> | Syntax not understood |
| 488 | <div class="ai-assistant-header"><span><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg></span><span>Assistant exonore</span><span class="ai-badge">IA</span></div> | Syntax not understood |
| 489 | <div class="ai-messages" id="aiMessages" aria-live="polite" aria-label="Conversation avec l'assistant"> | Syntax not understood |
| 490 | <div class="ai-message assistant">Bonjour ! Je suis votre assistant IA. J'ai accès à toutes vos données CRM en temps réel. Posez-moi n'importe quelle question sur vos contacts, devis, performances ou demandez-moi de rédiger un email.</div> | Syntax not understood |
| 491 | </div> | Syntax not understood |
| 492 | <div class="ai-input-row"> | Syntax not understood |
| 493 | <input type="text" id="aiInput" placeholder="Posez votre question..." aria-label="Poser une question à l'assistant IA" autocomplete="off"> | Syntax not understood |
| 494 | <button class="ai-send-btn" id="aiSendBtn" type="button" aria-label="Envoyer"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg></button> | Syntax not understood |
| 495 | </div> | Syntax not understood |
| 496 | </div> | Syntax not understood |
| 497 | </section> | Syntax not understood |
| 498 | <section id="workflowsView" class="hidden" aria-label="Automatisations"> | Syntax not understood |
| 499 | <div class="view-header"> | Syntax not understood |
| 500 | <div class="view-header-col"> | Syntax not understood |
| 501 | <h2>Automatisations</h2> | Syntax not understood |
| 502 | <p class="text-muted text-sm">Créez des règles QUAND / SI / ALORS sans aucune compétence technique</p> | Syntax not understood |
| 503 | </div> | Syntax not understood |
| 504 | <div class="flex gap-8 items-center"> | Syntax not understood |
| 505 | <button class="btn-add" id="newWorkflowBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>Nouvelle règle</button> | Syntax not understood |
| 506 | <span class="tooltip-icon" data-tip="Construit une règle QUAND / SI / ALORS en trois étapes : choisissez ce qui déclenche la règle (ex: un devis est accepté), une condition optionnelle (ex: uniquement pour les prospects chauds), puis l'action (ex: envoyer un email). Aucun code requis." tabindex="0" role="button" aria-label="Aide">?</span> | Unknown directive |
| 507 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="workflows"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 508 | </div> | Syntax not understood |
| 509 | </div> | Syntax not understood |
| 510 | <div id="featureHelp_workflows" class="feature-help-panel hidden"></div> | Syntax not understood |
| 511 | <p class="text-muted text-sm workflow-chatbot-note">ℹ️ Les commandes passées dans le chatbot envoient elles-mêmes leur devis et leur facture au client : vos règles « Envoyer un email » ne les renvoient pas et « Créer un devis » n’en crée pas un second (réglage dans Chatbot → Envoi automatique des devis et factures).</p> | Unknown directive |
| 512 | <div id="workflowsList" role="list" aria-label="Liste des automatisations"></div> | Syntax not understood |
| 513 | </section> | Syntax not understood |
| 514 | <section id="analyticsView" class="hidden" aria-label="Graphiques et rapports"> | Syntax not understood |
| 515 | <div class="view-header"> | Syntax not understood |
| 516 | <h2>Rapports</h2> | Syntax not understood |
| 517 | <div class="flex gap-8"> | Syntax not understood |
| 518 | <button class="btn-secondary" id="exportReportBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>Exporter PDF</button> | Syntax not understood |
| 519 | <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="analytics"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button> | Syntax not understood |
| 520 | </div> | Syntax not understood |
| 521 | </div> | Syntax not understood |
| 522 | <div id="featureHelp_analytics" class="feature-help-panel hidden"></div> | Syntax not understood |
| 523 | <div class="charts-grid" role="region" aria-label="Graphiques de performance"> | Syntax not understood |
| 524 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"/><polyline points="17 6 23 6 23 12"/></svg>Évolution du CA</h3><canvas id="revenueChart" role="img" aria-label="Graphique évolution chiffre d'affaires"></canvas></div> | Syntax not understood |
| 525 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Répartition par statut</h3><canvas id="statusChart" role="img" aria-label="Graphique répartition par statut"></canvas></div> | Syntax not understood |
| 526 | <div class="chart-card funnel-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>Entonnoir de conversion</h3><div class="funnel-steps" id="funnelSteps" role="region" aria-label="Étapes de conversion"></div><canvas id="funnelChart" role="img" aria-label="Graphique entonnoir de vente"></canvas></div> | Syntax not understood |
| 527 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="7"/><polyline points="8.21 13.89 7 23 12 20 17 23 15.79 13.88"/></svg>Top 5 clients</h3><canvas id="topClientsChart" role="img" aria-label="Graphique top 5 clients par CA"></canvas></div> | Syntax not understood |
| 528 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/><line x1="4" y1="22" x2="4" y2="15"/></svg>Objectif vs Réalisé</h3><canvas id="monthlyPerformanceChart" role="img" aria-label="Graphique objectifs vs réalisé mensuel"></canvas></div> | Syntax not understood |
| 529 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 10h12"/><path d="M4 14h9"/><path d="M19 6a7.7 7.7 0 0 0-5.2-2A7.9 7.9 0 0 0 6 12c0 4.4 3.5 8 7.8 8 2 0 3.8-.8 5.2-2"/></svg>Valeur moyenne par statut</h3><canvas id="avgValueByStatusChart" role="img" aria-label="Graphique valeur moyenne par statut contact"></canvas></div> | Syntax not understood |
| 530 | <div class="chart-card"><h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1z"/><line x1="8" y1="8" x2="16" y2="8"/><line x1="8" y1="12" x2="16" y2="12"/><line x1="8" y1="16" x2="13" y2="16"/></svg>Répartition des devis/factures par statut</h3><canvas id="invoiceStatusChart" role="img" aria-label="Graphique répartition des devis et factures par statut"></canvas></div> | Syntax not understood |
| 531 | </div> | Syntax not understood |
| 532 | </section> | Syntax not understood |
| 533 | <section id="settingsView" class="hidden" aria-label="Paramètres"> | Syntax not understood |
| 534 | <div class="settings-tab-btns" role="tablist" aria-label="Sections des paramètres"> | Syntax not understood |
| 535 | <button class="settings-tab-btn active" data-tab="general" role="tab" aria-selected="true" type="button">Général</button> | Syntax not understood |
| 536 | <button class="settings-tab-btn" data-tab="plans" role="tab" aria-selected="false" type="button">Plans</button> | Syntax not understood |
| 537 | <button class="settings-tab-btn" data-tab="company" role="tab" aria-selected="false" type="button">Entreprise</button> | Syntax not understood |
| 538 | <button class="settings-tab-btn" data-tab="integrations" role="tab" aria-selected="false" type="button">Intégrations</button> | Syntax not understood |
| 539 | <button class="settings-tab-btn" data-tab="pa" role="tab" aria-selected="false" type="button">Plateforme Agréée</button> | Syntax not understood |
| 540 | <button class="settings-tab-btn" data-tab="help" role="tab" aria-selected="false" type="button">Aide</button> | Syntax not understood |
| 541 | <button class="settings-tab-btn" data-tab="team" role="tab" aria-selected="false" type="button">Équipe</button> | Syntax not understood |
| 542 | <button class="settings-tab-btn" data-tab="chatbot" role="tab" aria-selected="false" type="button">Chatbot</button> | Syntax not understood |
| 543 | <button class="settings-tab-btn" data-tab="export" role="tab" aria-selected="false" type="button">Import & Export</button> | Syntax not understood |
| 544 | <button class="settings-tab-btn" data-tab="rgpd" role="tab" aria-selected="false" type="button">RGPD</button> | Syntax not understood |
| 545 | <button class="settings-tab-btn" data-tab="sousTraitants" role="tab" aria-selected="false" type="button">Sous-traitant</button> | Syntax not understood |
| 546 | </div> | Syntax not understood |
| 547 | <div id="settingsTabGeneral" role="tabpanel"> | Syntax not understood |
| 548 | <div class="settings-section"> | Syntax not understood |
| 549 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>Mon profil</h3> | Syntax not understood |
| 550 | <p class="text-muted text-sm mb-16">Ce prénom est utilisé uniquement pour l'affichage (message d'accueil) — il n'est pas lié à votre email de connexion.</p> | Syntax not understood |
| 551 | <div class="form-group"> | Syntax not understood |
| 552 | <label for="userFirstName">Prénom affiché</label> | Syntax not understood |
| 553 | <input type="text" id="userFirstName" maxlength="60" placeholder="Votre prénom"> | Syntax not understood |
| 554 | </div> | Syntax not understood |
| 555 | <button class="btn-success" id="saveFirstNameBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer mon prénom</button> | Syntax not understood |
| 556 | </div> | Syntax not understood |
| 557 | <div class="settings-section"> | Syntax not understood |
| 558 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/></svg>Objectifs mensuels en € HT</h3> | Syntax not understood |
| 559 | <p class="text-muted text-sm mb-16">Ces objectifs s'affichent dans le graphique "Performance mensuelle".</p> | Syntax not understood |
| 560 | <div class="monthly-targets-grid" id="monthlyTargetsGrid" role="group" aria-label="Objectifs par mois"></div> | Syntax not understood |
| 561 | <button class="btn-success" id="saveMonthlyTargetsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer les objectifs</button> | Syntax not understood |
| 562 | </div> | Syntax not understood |
| 563 | <div class="settings-section"> | Syntax not understood |
| 564 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"/><path d="M13.73 21a2 2 0 0 1-3.46 0"/></svg>Alertes automatiques</h3> | Syntax not understood |
| 565 | <div class="form-group"> | Syntax not understood |
| 566 | <label for="alertEmail">Email pour les alertes et le résumé quotidien</label> | Syntax not understood |
| 567 | <input type="email" id="alertEmail" placeholder="votre@email.fr"> | Syntax not understood |
| 568 | </div> | Syntax not understood |
| 569 | <div class="form-group"> | Syntax not understood |
| 570 | <label class="toggle-label"> | Syntax not understood |
| 571 | <input type="checkbox" id="dailySummary" checked> | Syntax not understood |
| 572 | <span class="toggle-slider"></span> | Syntax not understood |
| 573 | Résumé quotidien d'activité, chaque matin | Syntax not understood |
| 574 | </label> | Syntax not understood |
| 575 | <p class="form-hint">Leads captés, devis, ventes et paiements, factures reçues, automatisations de la veille, et votre agenda du jour, dans le même email que vos alertes. Envoyé seulement s'il s'est passé quelque chose. Décoché : vous ne recevez que les alertes.</p> | Unknown directive |
| 576 | </div> | Syntax not understood |
| 577 | <div class="form-group"> | Syntax not understood |
| 578 | <label for="relanceDelay">Délai de relance factures impayées (jours)</label> | Syntax not understood |
| 579 | <input type="number" id="relanceDelay" min="1" max="90" value="7" placeholder="7"> | Syntax not understood |
| 580 | </div> | Syntax not understood |
| 581 | <div class="form-group"> | Syntax not understood |
| 582 | <label for="tauxPenaliteRetard">Taux des pénalités de retard (% par an)</label> | Syntax not understood |
| 583 | <input type="number" id="tauxPenaliteRetard" min="8.25" max="50" step="0.01" value="8.25" placeholder="8.25"> | Syntax not understood |
| 584 | <p class="form-hint">Minimum légal entre professionnels : 3 fois le taux d'intérêt légal en vigueur (8,25 % au 2nd semestre 2026, révisé par arrêté chaque semestre — Code de commerce art. L.441-10). Vous pouvez fixer un taux plus élevé, jamais inférieur à ce plancher.</p> | Unknown directive |
| 585 | </div> | Syntax not understood |
| 586 | <button class="btn-success" id="saveAlertsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 587 | </div> | Syntax not understood |
| 588 | <div class="settings-section"> | Syntax not understood |
| 589 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>Sécurité du compte</h3> | Syntax not understood |
| 590 | <div class="form-group"> | Syntax not understood |
| 591 | <label for="currentPasswordInput">Mot de passe actuel</label> | Syntax not understood |
| 592 | <input type="password" id="currentPasswordInput" autocomplete="current-password"> | Syntax not understood |
| 593 | </div> | Syntax not understood |
| 594 | <div class="form-group"> | Syntax not understood |
| 595 | <label for="newPasswordInputSettings">Nouveau mot de passe</label> | Syntax not understood |
| 596 | <input type="password" id="newPasswordInputSettings" autocomplete="new-password" placeholder="10 caractères minimum"> | Syntax not understood |
| 597 | </div> | Syntax not understood |
| 598 | <p class="form-hint">Changer votre mot de passe déconnecte automatiquement toutes vos autres sessions ouvertes ailleurs, par sécurité.</p> | Syntax not understood |
| 599 | <button class="btn-success" id="changePasswordBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>Changer mon mot de passe</button> | Syntax not understood |
| 600 | </div> | Syntax not understood |
| 601 | <div class="settings-section"> | Syntax not understood |
| 602 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>Connexions récentes</h3> | Syntax not understood |
| 603 | <p class="form-hint">Liste des 50 dernières connexions à votre compte (vous et vos collègues, si vous utilisez la gestion d'équipe). Purement informatif : si une connexion ne vous semble pas familière, changez votre mot de passe — cela déconnecte immédiatement toutes les sessions ouvertes.</p> | Unknown directive |
| 604 | <div id="recentSessionsList" class="recent-sessions-list"></div> | Syntax not understood |
| 605 | <button class="btn-secondary" id="refreshSessionsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>Actualiser</button> | Syntax not understood |
| 606 | </div> | Syntax not understood |
| 607 | </div> | Syntax not understood |
| 608 | <div id="settingsTabPlans" class="hidden" role="tabpanel"> | Syntax not understood |
| 609 | <div class="settings-section"> | Syntax not understood |
| 610 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>Plans & Abonnement</h3> | Syntax not understood |
| 611 | <p class="text-muted mb-16">Comparez les plans et changez d'abonnement à tout moment. Le paiement se fait directement via Stripe, sans engagement.</p> | Syntax not understood |
| 612 | <div id="plansGrid" class="plans-grid"></div> | Syntax not understood |
| 613 | <button class="btn-secondary mt-16" id="manageSubscriptionBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>Gérer mon abonnement</button> | Syntax not understood |
| 614 | </div> | Syntax not understood |
| 615 | </div> | Syntax not understood |
| 616 | <div id="settingsTabCompany" class="hidden" role="tabpanel"> | Syntax not understood |
| 617 | <div class="settings-section"> | Syntax not understood |
| 618 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg>Informations légales</h3> | Syntax not understood |
| 619 | <p class="text-muted text-sm mb-16">Ces informations apparaissent sur tous vos devis et factures.</p> | Syntax not understood |
| 620 | <div class="form-row"> | Syntax not understood |
| 621 | <div class="form-group"> | Syntax not understood |
| 622 | <label for="companyName">Nom de l'entreprise *</label> | Syntax not understood |
| 623 | <input type="text" id="companyName" placeholder="Dupont Conseil SARL"> | Syntax not understood |
| 624 | </div> | Syntax not understood |
| 625 | <div class="form-group"> | Syntax not understood |
| 626 | <label for="companyLegal">Forme juridique</label> | Syntax not understood |
| 627 | <select id="companyLegal"> | Syntax not understood |
| 628 | <option value="">-- Choisir --</option> | Syntax not understood |
| 629 | <option>Auto-entrepreneur</option><option>EI</option><option>EURL</option> | Syntax not understood |
| 630 | <option>SARL</option><option>SAS</option><option>SASU</option><option>SA</option> | Syntax not understood |
| 631 | </select> | Syntax not understood |
| 632 | </div> | Syntax not understood |
| 633 | </div> | Syntax not understood |
| 634 | <div class="form-group"> | Syntax not understood |
| 635 | <label for="companyAddress">Adresse complète</label> | Syntax not understood |
| 636 | <input type="text" id="companyAddress" placeholder="12 rue de la Paix, 75001 Paris"> | Syntax not understood |
| 637 | </div> | Syntax not understood |
| 638 | <div class="form-row"> | Syntax not understood |
| 639 | <div class="form-group"> | Syntax not understood |
| 640 | <label for="companySiret">Numéro SIRET *</label> | Syntax not understood |
| 641 | <input type="text" id="companySiret" placeholder="123 456 789 00012" maxlength="20"> | Syntax not understood |
| 642 | <span id="companySiretStatus" class="siren-status"></span> | Syntax not understood |
| 643 | </div> | Syntax not understood |
| 644 | <div class="form-group"> | Syntax not understood |
| 645 | <label for="companyTvaNum">N° TVA intracommunautaire</label> | Syntax not understood |
| 646 | <input type="text" id="companyTvaNum" placeholder="FR 12 345678900"> | Syntax not understood |
| 647 | </div> | Syntax not understood |
| 648 | </div> | Syntax not understood |
| 649 | <div class="form-row"> | Syntax not understood |
| 650 | <div class="form-group" id="companyCapitalGroup"> | Syntax not understood |
| 651 | <label for="companyCapital">Capital social (€)</label> | Syntax not understood |
| 652 | <input type="number" id="companyCapital" placeholder="1000" min="0"> | Syntax not understood |
| 653 | <p class="text-muted text-sm" id="companyCapitalHint">Laissez vide si non applicable (auto-entrepreneur, EI).</p> | Syntax not understood |
| 654 | </div> | Syntax not understood |
| 655 | <div class="form-group"> | Syntax not understood |
| 656 | <label for="companyTvaRate">Taux TVA par défaut (%)</label> | Syntax not understood |
| 657 | <select id="companyTvaRate"> | Syntax not understood |
| 658 | <option value="0">0% (exonéré)</option><option value="2.1">2,1%</option><option value="5.5">5,5%</option> | Syntax not understood |
| 659 | <option value="10">10%</option><option value="20" selected>20%</option> | Syntax not understood |
| 660 | </select> | Syntax not understood |
| 661 | </div> | Syntax not understood |
| 662 | <div class="form-group"> | Syntax not understood |
| 663 | <label for="tvaRegime">Régime de TVA</label> | Syntax not understood |
| 664 | <select id="tvaRegime"> | Syntax not understood |
| 665 | <option value="">Non renseigné</option> | Syntax not understood |
| 666 | <option value="franchise">Franchise en base (pas de TVA)</option> | Syntax not understood |
| 667 | <option value="encaissements">TVA sur les encaissements</option> | Syntax not understood |
| 668 | <option value="debits">TVA sur les débits</option> | Syntax not understood |
| 669 | </select> | Syntax not understood |
| 670 | <p class="text-muted text-sm">Détermine la date d'exigibilité de la TVA dans l'export comptable. Sur les débits, la case correspondante est cochée d'office sur vos nouvelles factures.</p> | Syntax not understood |
| 671 | </div> | Syntax not understood |
| 672 | <div class="form-group"> | Syntax not understood |
| 673 | <label for="urssafPeriodicity">Rappel de déclaration URSSAF</label> | Syntax not understood |
| 674 | <select id="urssafPeriodicity"> | Syntax not understood |
| 675 | <option value="none" selected>Désactivé</option> | Syntax not understood |
| 676 | <option value="mensuelle">Mensuelle</option> | Syntax not understood |
| 677 | <option value="trimestrielle">Trimestrielle</option> | Syntax not understood |
| 678 | </select> | Syntax not understood |
| 679 | <p class="text-muted text-sm">Un rappel automatique apparaît une semaine avant chaque échéance, avec le chiffre d'affaires encaissé sur la période déjà calculé — à recopier vous-même sur autoentrepreneur.urssaf.fr (aucun import de fichier n'existe sur leur site).</p> | Syntax not understood |
| 680 | </div> | Syntax not understood |
| 681 | </div> | Syntax not understood |
| 682 | <div class="form-row"> | Syntax not understood |
| 683 | <div class="form-group"> | Syntax not understood |
| 684 | <label for="companyIban">IBAN</label> | Syntax not understood |
| 685 | <input type="text" id="companyIban" placeholder="FR76 1234 5678 9012 3456 7890 123"> | Syntax not understood |
| 686 | </div> | Syntax not understood |
| 687 | <div class="form-group"> | Syntax not understood |
| 688 | <label for="companyBic">BIC / SWIFT</label> | Syntax not understood |
| 689 | <input type="text" id="companyBic" placeholder="BNPAFRPP"> | Syntax not understood |
| 690 | </div> | Syntax not understood |
| 691 | </div> | Syntax not understood |
| 692 | <div class="form-row"> | Syntax not understood |
| 693 | <div class="form-group"> | Syntax not understood |
| 694 | <label for="seuilFranchiseTva"> | Syntax not understood |
| 695 | Seuil de franchise en base de TVA (€) | Syntax not understood |
| 696 | <span class="tooltip-icon" data-tip="Utilisé pour l'alerte du tableau de bord (auto-entrepreneur). Ce seuil évolue par décret : à vérifier sur impots.gouv.fr." tabindex="0" role="button" aria-label="Aide">?</span> | Unknown directive |
| 697 | </label> | Syntax not understood |
| 698 | <input type="number" id="seuilFranchiseTva" min="0" step="100" value="37500" placeholder="37500"> | Syntax not understood |
| 699 | </div> | Syntax not understood |
| 700 | </div> | Syntax not understood |
| 701 | <button class="btn-success" id="saveCompanyBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer les informations</button> | Syntax not understood |
| 702 | <div class="form-group mt-16"> | Syntax not understood |
| 703 | <label for="mentionsLegales"> | Syntax not understood |
| 704 | Mentions légales personnalisées (pied de facture) | Syntax not understood |
| 705 | <span class="tooltip-icon" data-tip="Si ce champ reste vide, la mention légale standard à jour (pénalités de retard, indemnité de recouvrement) s'applique automatiquement sur vos factures — mise à jour par Exonore si la loi change. Ne remplissez ce champ que si vous voulez ajouter ou remplacer ce texte par le vôtre." tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 706 | </label> | Syntax not understood |
| 707 | <textarea id="mentionsLegales" class="mentions-textarea" rows="3" placeholder="Laissez vide pour utiliser la mention légale standard, à jour automatiquement. Exemple si vous voulez la personnaliser : Pénalités de retard au taux légal en vigueur. Indemnité forfaitaire de recouvrement : 40 € (C. com. art. L.441-10)."></textarea> | Unknown directive |
| 708 | <p class="text-muted text-xs"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>Si vous personnalisez ce texte, il restera figé tel quel sur vos factures même si la loi évolue — pensez à le revérifier de temps en temps sur service-public.fr.</p> | Syntax not understood |
| 709 | </div> | Syntax not understood |
| 710 | <div class="form-group mt-16"> | Syntax not understood |
| 711 | <label for="cgvUrl"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>Conditions générales de vente (CGV)</label> | Syntax not understood |
| 712 | <input type="text" id="cgvUrl" placeholder="https://monsite.fr/cgv (ou laissez vide)"> | Unknown directive |
| 713 | <p class="text-muted text-sm">Lien vers vos CGV (page de votre site, ou PDF hébergé ailleurs). S'il est renseigné, un lien y apparaît automatiquement sur vos devis, factures et emails envoyés aux clients.</p> | Syntax not understood |
| 714 | </div> | Syntax not understood |
| 715 | </div> | Syntax not understood |
| 716 | </div> | Syntax not understood |
| 717 | <div id="settingsTabIntegrations" class="hidden" role="tabpanel"> | Syntax not understood |
| 718 | <!-- ADDED (automatisation complète) — tâches administratives automatiques, | Syntax not understood |
| 719 | toutes désactivées par défaut. --> | Syntax not understood |
| 720 | <div class="settings-section" id="adminAutomationsSection"> | Syntax not understood |
| 721 | <h3>🤖 Automatisations administratives</h3> | Syntax not understood |
| 722 | <p class="text-muted text-sm mb-16">Exonore peut faire seul ces tâches chaque jour. Chacune est désactivée par défaut : activez seulement ce qui vous convient. Tout ce qui est fait (ou n'a pas pu l'être) apparaît dans votre résumé quotidien.</p> | Unknown directive |
| 723 | <div class="form-group"> | Syntax not understood |
| 724 | <label class="toggle-label"><input type="checkbox" id="bankAutoMatch"><span class="toggle-slider"></span>🏦 Rapprochement bancaire automatique</label> | Syntax not understood |
| 725 | <p class="text-muted text-sm mt-8">Un virement reçu sur votre compte connecté marque la facture payée s'il a le bon montant <strong>et</strong> que son libellé contient le n° de facture ou le nom du client. Dans le doute, il vous est proposé ci-dessous pour confirmation. Nécessite la synchronisation bancaire (plan Solo et plus).</p> | Syntax not understood |
| 726 | </div> | Syntax not understood |
| 727 | <div class="form-group"> | Syntax not understood |
| 728 | <label class="toggle-label"><input type="checkbox" id="paAutoSend"><span class="toggle-slider"></span>📤 Envoi automatique à la Plateforme Agréée</label> | Syntax not understood |
| 729 | <p class="text-muted text-sm mt-8">Chaque facture ou avoir émis <strong>après l'activation</strong> est transmis à votre PA (onglet Plateforme Agréée). En cas d'échec : nouvel essai chaque jour, 5 fois au maximum.</p> | Unknown directive |
| 730 | </div> | Syntax not understood |
| 731 | <div class="form-group"> | Syntax not understood |
| 732 | <label class="toggle-label"><input type="checkbox" id="pennylaneAutoExport"><span class="toggle-slider"></span>📊 Export automatique vers Pennylane</label> | Syntax not understood |
| 733 | <p class="text-muted text-sm mt-8">Chaque facture ou avoir émis après l'activation est envoyé à Pennylane, dans la limite mensuelle de votre plan (plan Pro et plus).</p> | Syntax not understood |
| 734 | </div> | Syntax not understood |
| 735 | <div class="form-group"> | Syntax not understood |
| 736 | <label class="toggle-label"><input type="checkbox" id="monthlyExportEnabled"><span class="toggle-slider"></span>📧 Export comptable envoyé chaque mois à mon comptable</label> | Syntax not understood |
| 737 | <p class="text-muted text-sm mt-8">Au début de chaque mois, votre comptable reçoit un email avec un lien de téléchargement de l'export comptable complet et à jour (valable 30 jours).</p> | Syntax not understood |
| 738 | </div> | Syntax not understood |
| 739 | <div class="form-group"> | Syntax not understood |
| 740 | <label for="accountantEmail">Email de votre comptable</label> | Syntax not understood |
| 741 | <input type="email" id="accountantEmail" placeholder="cabinet@expert-comptable.fr" autocomplete="off"> | Syntax not understood |
| 742 | </div> | Syntax not understood |
| 743 | <div class="form-group"> | Syntax not understood |
| 744 | <label>📥 Réception automatique des factures fournisseurs</label> | Syntax not understood |
| 745 | <p class="text-muted text-sm">Générez une adresse privée et donnez-la à votre Plateforme Agréée (ou à un connecteur n8n/Make) : chaque facture reçue (Factur-X ou XML CII) arrive toute seule dans « Factures reçues », à valider.</p> | Unknown directive |
| 746 | <div id="paInboundStatus" class="text-sm mb-8"></div> | Syntax not understood |
| 747 | <button class="btn-secondary" type="button" data-action="paInboundGenerate">Générer l'adresse</button> | Syntax not understood |
| 748 | <button class="btn-secondary hidden" type="button" id="paInboundDisableBtn" data-action="paInboundDisable">Désactiver</button> | Syntax not understood |
| 749 | </div> | Syntax not understood |
| 750 | <button class="btn-primary" type="button" data-action="saveAdminAutomations">Enregistrer</button> | Syntax not understood |
| 751 | <div id="bankSuggestionsBlock" class="mt-16 hidden"> | Syntax not understood |
| 752 | <h4>🏦 Virements à confirmer</h4> | Syntax not understood |
| 753 | <p class="text-muted text-sm">Ces virements ont le montant d'une ou plusieurs factures impayées, mais Exonore n'a pas pu les attribuer avec certitude. Choisissez la bonne facture, ou ignorez le virement.</p> | Syntax not understood |
| 754 | <div id="bankSuggestionsList"></div> | Syntax not understood |
| 755 | </div> | Syntax not understood |
| 756 | </div> | Syntax not understood |
| 757 | <div class="settings-section"> | Syntax not understood |
| 758 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>Stripe — Paiements en ligne</h3> | Syntax not understood |
| 759 | <div class="form-group"> | Syntax not understood |
| 760 | <label for="stripeApiKey">Clé secrète Stripe</label> | Syntax not understood |
| 761 | <input type="password" id="stripeApiKey" placeholder="sk_live_xxxxxxxxxxxx" autocomplete="off"> | Syntax not understood |
| 762 | <p class="form-hint">Les paiements de vos clients arrivent directement sur votre propre compte Stripe.</p> | Syntax not understood |
| 763 | </div> | Syntax not understood |
| 764 | <div class="form-group"> | Syntax not understood |
| 765 | <label for="stripeWebhookSecret">Secret de signature du webhook Stripe</label> | Syntax not understood |
| 766 | <input type="password" id="stripeWebhookSecret" placeholder="whsec_xxxxxxxxxxxx" autocomplete="off"> | Syntax not understood |
| 767 | <p class="form-hint">Créez un webhook dans votre tableau de bord Stripe pointant vers <code>https://api.exonore.fr/api/webhooks/stripe/<span id="stripeWebhookUrlId"></span></code>, écoutant l'événement <code>checkout.session.completed</code>, puis collez ici le secret de signature généré.</p> | Unknown directive |
| 768 | </div> | Syntax not understood |
| 769 | <div class="form-group"> | Syntax not understood |
| 770 | <label for="stripePublicKey">Clé publique Stripe</label> | Syntax not understood |
| 771 | <input type="text" id="stripePublicKey" placeholder="pk_live_xxxxxxxxxxxx"> | Syntax not understood |
| 772 | </div> | Syntax not understood |
| 773 | <div class="form-group"> | Syntax not understood |
| 774 | <label class="toggle-label"> | Syntax not understood |
| 775 | <input type="checkbox" id="stripeAutoSend"> | Syntax not understood |
| 776 | <span class="toggle-slider"></span> | Syntax not understood |
| 777 | Envoyer automatiquement le lien de paiement à l'acceptation du devis | Syntax not understood |
| 778 | </label> | Syntax not understood |
| 779 | </div> | Syntax not understood |
| 780 | <button class="btn-success" id="saveStripeBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 781 | </div> | Syntax not understood |
| 782 | <div class="settings-section"> | Syntax not understood |
| 783 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="22" x2="21" y2="22"/><line x1="6" y1="18" x2="6" y2="11"/><line x1="10" y1="18" x2="10" y2="11"/><line x1="14" y1="18" x2="14" y2="11"/><line x1="18" y1="18" x2="18" y2="11"/><polygon points="12 2 20 7 4 7"/></svg>Synchronisation bancaire</h3> | Syntax not understood |
| 784 | <p class="text-muted mb-16">Connectez votre compte bancaire professionnel pour suivre vos encaissements automatiquement, sans ressaisie.</p> | Syntax not understood |
| 785 | <div id="bankConnectionStatus"></div> | Syntax not understood |
| 786 | <button class="btn-secondary" type="button" id="connectBankBtn" data-action="connectBank"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="22" x2="21" y2="22"/><line x1="6" y1="18" x2="6" y2="11"/><line x1="10" y1="18" x2="10" y2="11"/><line x1="14" y1="18" x2="14" y2="11"/><line x1="18" y1="18" x2="18" y2="11"/><polygon points="12 2 20 7 4 7"/></svg>Connecter mon compte bancaire</button> | Syntax not understood |
| 787 | <button class="btn-secondary hidden" type="button" id="exportBankBtn" data-action="exportBankTransactions"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Exporter mes transactions</button> | Syntax not understood |
| 788 | <button class="btn-danger hidden" type="button" id="disconnectBankBtn" data-action="disconnectBank">Déconnecter</button> | Syntax not understood |
| 789 | <div id="bankTransactionsList"></div> | Syntax not understood |
| 790 | </div> | Syntax not understood |
| 791 | <div class="settings-section"> | Syntax not understood |
| 792 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Gmail — Envoi d'emails depuis votre adresse <span id="emailBadge-gmail" class="channel-badge hidden"></span></h3> | Syntax not understood |
| 793 | <p class="text-muted mb-16">Connectez votre compte Gmail pour que vos devis, factures et relances partent visiblement de votre propre adresse — meilleure délivrabilité, vos clients reconnaissent l'expéditeur. Sans connexion, les emails partent via notre service d'envoi générique (Resend, configuré ci-dessous).</p> | Syntax not understood |
| 794 | <div id="gmailConnectionStatus"></div> | Syntax not understood |
| 795 | </div> | Syntax not understood |
| 796 | <div class="settings-section"> | Syntax not understood |
| 797 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Outlook — Envoi d'emails depuis votre adresse <span id="emailBadge-outlook" class="channel-badge hidden"></span></h3> | Syntax not understood |
| 798 | <p class="text-muted mb-16">Connectez votre compte Outlook / Microsoft 365 pour que vos devis, factures et relances partent visiblement de votre propre adresse — meilleure délivrabilité, vos clients reconnaissent l'expéditeur. Alternative à Gmail ci-dessus : une seule connexion active à la fois suffit.</p> | Unknown directive |
| 799 | <div id="outlookConnectionStatus"></div> | Syntax not understood |
| 800 | </div> | Syntax not understood |
| 801 | <div class="settings-section"> | Syntax not understood |
| 802 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Resend — Envoi d'emails <span id="emailBadge-resend" class="channel-badge hidden"></span></h3> | Syntax not understood |
| 803 | <div class="form-group"> | Syntax not understood |
| 804 | <label for="resendApiKey">Clé API Resend</label> | Syntax not understood |
| 805 | <input type="password" id="resendApiKey" placeholder="re_xxxxxxxxxxxx" autocomplete="off"> | Syntax not understood |
| 806 | </div> | Syntax not understood |
| 807 | <div class="form-group"> | Syntax not understood |
| 808 | <label for="resendFromEmail">Email expéditeur</label> | Syntax not understood |
| 809 | <input type="email" id="resendFromEmail" placeholder="noreply@votredomaine.fr"> | Syntax not understood |
| 810 | </div> | Syntax not understood |
| 811 | <button class="btn-success" id="saveResendBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 812 | </div> | Syntax not understood |
| 813 | <div class="settings-section"> | Syntax not understood |
| 814 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Email professionnel (SMTP) <span class="badge-beta">Bêta</span> <span id="emailBadge-smtp" class="channel-badge hidden"></span></h3> | Syntax not understood |
| 815 | <p class="text-muted mb-16">Alternative à Gmail/Outlook pour les autres hébergeurs (OVH, Ionos, Infomaniak...) : vos devis, factures et relances partent depuis votre propre adresse, avec les identifiants de votre boîte mail. Reste en bêta car certains hébergeurs bloquent ou limitent les envois applicatifs (au-delà d'un certain volume, ou depuis une IP inhabituelle) — un vrai test de connexion est fait à l'enregistrement, mais un blocage peut apparaître plus tard côté hébergeur, hors de notre contrôle.</p> | Unknown directive |
| 816 | <div class="form-group"> | Syntax not understood |
| 817 | <label for="smtpEmail">Adresse email professionnelle</label> | Syntax not understood |
| 818 | <input type="email" id="smtpEmail" placeholder="contact@monentreprise.fr" autocomplete="off"> | Syntax not understood |
| 819 | </div> | Syntax not understood |
| 820 | <div class="form-group"> | Syntax not understood |
| 821 | <label for="smtpPassword">Mot de passe de cette boîte mail</label> | Syntax not understood |
| 822 | <input type="password" id="smtpPassword" placeholder="••••••••" autocomplete="off"> | Syntax not understood |
| 823 | <p class="form-hint">Stocké chiffré, jamais affiché en clair — comme vos autres clés (Stripe, YouSign...).</p> | Syntax not understood |
| 824 | </div> | Syntax not understood |
| 825 | <div class="form-group"> | Syntax not understood |
| 826 | <label for="smtpHost">Serveur SMTP sortant</label> | Syntax not understood |
| 827 | <input type="text" id="smtpHost" placeholder="smtp.exemple.fr"> | Syntax not understood |
| 828 | </div> | Syntax not understood |
| 829 | <div class="form-group flex gap-12"> | Syntax not understood |
| 830 | <div class="flex-1"> | Syntax not understood |
| 831 | <label for="smtpPort">Port</label> | Syntax not understood |
| 832 | <input type="text" id="smtpPort" placeholder="587"> | Syntax not understood |
| 833 | </div> | Syntax not understood |
| 834 | <div class="flex-1"> | Syntax not understood |
| 835 | <label for="smtpSecure">Chiffrement</label> | Syntax not understood |
| 836 | <select id="smtpSecure"> | Syntax not understood |
| 837 | <option value="starttls">STARTTLS (port 587, recommandé)</option> | Syntax not understood |
| 838 | <option value="ssl">SSL/TLS (port 465)</option> | Syntax not understood |
| 839 | </select> | Syntax not understood |
| 840 | </div> | Syntax not understood |
| 841 | </div> | Syntax not understood |
| 842 | <p class="form-hint" id="smtpSuggestHint"></p> | Syntax not understood |
| 843 | <button class="btn-success" id="saveSmtpBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Tester et enregistrer</button> | Syntax not understood |
| 844 | </div> | Syntax not understood |
| 845 | <div class="settings-section"> | Syntax not understood |
| 846 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>Signature électronique — YouSign</h3> | Syntax not understood |
| 847 | <div class="form-group"> | Syntax not understood |
| 848 | <label for="yousignApiKey">Clé API YouSign</label> | Syntax not understood |
| 849 | <input type="password" id="yousignApiKey" placeholder="ys_xxxxxxxxxxxx" autocomplete="off"> | Syntax not understood |
| 850 | </div> | Syntax not understood |
| 851 | <p class="form-hint">La signature YouSign est conforme eIDAS — valeur légale garantie. Disponible dès le plan Solo.</p> | Syntax not understood |
| 852 | <button class="btn-success" id="saveYousignBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 853 | </div> | Syntax not understood |
| 854 | <div class="settings-section"> | Syntax not understood |
| 855 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Pennylane — Export comptable</h3> | Syntax not understood |
| 856 | <p class="form-hint"> | Syntax not understood |
| 857 | <svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>Exonore peut se connecter au dossier Pennylane de votre comptable, pour lui | Syntax not understood |
| 858 | transmettre automatiquement vos factures sans ressaisie de votre part. Contactez | Syntax not understood |
| 859 | votre comptable pour qu'il autorise cette connexion et vous transmette la clé | Syntax not understood |
| 860 | correspondante. | Syntax not understood |
| 861 | </p> | Syntax not understood |
| 862 | <div class="form-group"> | Syntax not understood |
| 863 | <label for="pennylaneApiKey"> | Syntax not understood |
| 864 | Clé API Pennylane | Syntax not understood |
| 865 | <span class="tooltip-icon" data-tip="Contactez votre comptable pour qu'il vous transmette cette clé, ou récupérez la vôtre dans Pennylane → Paramètres → Intégrations → API" tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 866 | </label> | Syntax not understood |
| 867 | <input type="password" id="pennylaneApiKey" placeholder="pl_xxxxxxxxxxxx" autocomplete="off"> | Syntax not understood |
| 868 | </div> | Syntax not understood |
| 869 | <p class="form-hint">Disponible dès le plan Pro+. Exporte vos factures directement vers Pennylane avec toutes les lignes et la TVA.</p> | Syntax not understood |
| 870 | <button class="btn-success" id="savePennylaneBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 871 | </div> | Syntax not understood |
| 872 | <div class="settings-section"> | Syntax not understood |
| 873 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22v-5"/><path d="M9 8V2"/><path d="M15 8V2"/><path d="M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8z"/></svg>API, Zapier, Make & n8n</h3> | Syntax not understood |
| 874 | <p class="text-muted mb-16">Générez une clé pour connecter Exonore à Zapier, Make, n8n ou votre propre intégration — une clé par outil, révocable individuellement sans toucher aux autres ni changer votre mot de passe. Documentation de l'API : <code>https://api.exonore.fr/api/openapi.json</code></p> | Unknown directive |
| 875 | <div id="apiKeyRevealBox" class="api-key-reveal hidden"> | Syntax not understood |
| 876 | <p><strong><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Copiez cette clé maintenant — elle ne sera plus jamais affichée :</strong></p> | Unknown directive |
| 877 | <div class="api-key-reveal-row"> | Syntax not understood |
| 878 | <code id="apiKeyRevealValue"></code> | Syntax not understood |
| 879 | <button class="btn-secondary" type="button" data-action="copyApiKeyReveal"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>Copier</button> | Syntax not understood |
| 880 | </div> | Syntax not understood |
| 881 | <button class="btn-link" type="button" data-action="dismissApiKeyReveal">J'ai copié la clé, fermer</button> | Syntax not understood |
| 882 | </div> | Syntax not understood |
| 883 | <div id="apiKeysList"><p class="text-muted">Chargement des clés...</p></div> | Syntax not understood |
| 884 | <div class="form-group flex gap-12"> | Syntax not understood |
| 885 | <div class="flex-1"> | Syntax not understood |
| 886 | <label for="apiKeyNameInput">Nom de la clé (pour vous y retrouver)</label> | Syntax not understood |
| 887 | <input type="text" id="apiKeyNameInput" placeholder="Ex : Zapier, Make, n8n" maxlength="80"> | Unknown directive |
| 888 | </div> | Syntax not understood |
| 889 | </div> | Syntax not understood |
| 890 | <button class="btn-success" type="button" data-action="generateApiKey"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg>Générer une nouvelle clé</button> | Syntax not understood |
| 891 | </div> | Syntax not understood |
| 892 | <div class="settings-section"> | Syntax not understood |
| 893 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Webhook entrant</h3> | Syntax not understood |
| 894 | <p class="text-muted mb-16">Une URL unique pour recevoir des données depuis un formulaire, Zapier, Make, n8n ou un autre outil — sans clé API. Selon ce qu'elle reçoit, elle crée un contact/lead ou déclenche directement une de vos automatisations (30 requêtes par minute au maximum).</p> | Syntax not understood |
| 895 | <div id="webhookInRevealBox" class="api-key-reveal hidden"> | Syntax not understood |
| 896 | <p><strong><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Copiez cette URL maintenant — elle ne sera plus jamais affichée :</strong></p> | Unknown directive |
| 897 | <div class="api-key-reveal-row"> | Syntax not understood |
| 898 | <code id="webhookInRevealValue"></code> | Syntax not understood |
| 899 | <button class="btn-secondary" type="button" data-action="copyWebhookInReveal"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>Copier</button> | Syntax not understood |
| 900 | </div> | Syntax not understood |
| 901 | <button class="btn-link" type="button" data-action="dismissWebhookInReveal">J'ai copié l'URL, fermer</button> | Syntax not understood |
| 902 | </div> | Syntax not understood |
| 903 | <div id="webhookInStatus"><p class="text-muted">Chargement...</p></div> | Syntax not understood |
| 904 | <button class="btn-success" type="button" data-action="generateWebhookIn"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>(Re)générer l'URL du webhook entrant</button> | Syntax not understood |
| 905 | <p class="help-note mt-10"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>Envoyez <code>{"event":"contact.created","data":{...}}</code> pour déclencher une automatisation existante, ou simplement <code>{"name":"...","email":"..."}</code> pour créer un contact/lead directement.</p> | Unknown directive |
| 906 | </div> | Syntax not understood |
| 907 | </div> | Syntax not understood |
| 908 | <div id="settingsTabPa" class="hidden" role="tabpanel"> | Syntax not understood |
| 909 | <div class="settings-section"> | Syntax not understood |
| 910 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="3" y1="22" x2="21" y2="22"/><line x1="6" y1="18" x2="6" y2="11"/><line x1="10" y1="18" x2="10" y2="11"/><line x1="14" y1="18" x2="14" y2="11"/><line x1="18" y1="18" x2="18" y2="11"/><polygon points="12 2 20 7 4 7"/></svg>Plateforme Agréée (PA)</h3> | Syntax not understood |
| 911 | <p class="text-muted text-sm mb-16"> | Syntax not understood |
| 912 | Connectez votre CRM à votre Plateforme Agréée pour transmettre vos factures électroniques. | Syntax not understood |
| 913 | Obligatoire en France pour la réception dès 2026 et l'émission dès 2027. | Syntax not understood |
| 914 | </p> | Syntax not understood |
| 915 | <div class="settings-info-block"> | Syntax not understood |
| 916 | <p><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg><strong>Comment ça marche ?</strong> Une fois configuré, un bouton <strong><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>Envoyer à ma PA</strong> apparaît sur chaque facture. Votre CRM génère le XML Factur-X EN 16931 et le transmet à votre PA via leur API. <button class="btn-link" type="button" data-action="showHelpPA">En savoir plus ❓</button></p> | Syntax not understood |
| 917 | </div> | Syntax not understood |
| 918 | <div class="form-group"> | Syntax not understood |
| 919 | <label for="paName">Nom de votre PA</label> | Syntax not understood |
| 920 | <input type="text" id="paName" placeholder="Ex : Chorus Pro, Billit, Yooz"> | Unknown directive |
| 921 | </div> | Syntax not understood |
| 922 | <div class="form-group"> | Syntax not understood |
| 923 | <label for="paEndpoint"> | Syntax not understood |
| 924 | Endpoint API de la PA | Syntax not understood |
| 925 | <span class="tooltip-icon" data-tip="URL de l'API fournie par votre PA pour recevoir les factures XML EN 16931" tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 926 | </label> | Syntax not understood |
| 927 | <input type="url" id="paEndpoint" placeholder="https://api.votre-pa.fr/invoices"> | Unknown directive |
| 928 | </div> | Syntax not understood |
| 929 | <div class="form-group"> | Syntax not understood |
| 930 | <label for="paApiKey">Clé API / Token de la PA</label> | Syntax not understood |
| 931 | <input type="password" id="paApiKey" placeholder="Clé fournie par votre PA" autocomplete="off"> | Syntax not understood |
| 932 | </div> | Syntax not understood |
| 933 | <button class="btn-success" id="savePaBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 934 | </div> | Syntax not understood |
| 935 | </div> | Syntax not understood |
| 936 | <div id="settingsTabTeam" class="hidden" role="tabpanel"> | Syntax not understood |
| 937 | <div class="settings-section"> | Syntax not understood |
| 938 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>Gestion de l'équipe</h3> | Syntax not understood |
| 939 | <div id="teamManagementPanel" class="hidden"> | Syntax not understood |
| 940 | <p class="text-muted mb-16">Invitez vos collaborateurs. Ils recevront un email pour créer leur accès.</p> | Syntax not understood |
| 941 | <div class="team-invite-row"> | Syntax not understood |
| 942 | <input type="email" id="inviteEmail" placeholder="Email du collaborateur" class="team-invite-input" aria-label="Email à inviter"> | Syntax not understood |
| 943 | <select id="inviteRole" aria-label="Rôle du collaborateur"> | Syntax not understood |
| 944 | <option value="commercial">Commercial</option> | Syntax not understood |
| 945 | <option value="admin">Admin</option> | Syntax not understood |
| 946 | <option value="viewer">Lecteur seul</option> | Syntax not understood |
| 947 | </select> | Syntax not understood |
| 948 | <label class="team-invite-until">Accès jusqu'au (facultatif) <input type="date" id="inviteAccessUntil" aria-label="Date de fin d'accès (facultatif)"></label> | Syntax not understood |
| 949 | <button class="btn-add" id="inviteUserBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>Inviter</button> | Syntax not understood |
| 950 | <span class="tooltip-icon" data-tip="Envoie une invitation par email à cette adresse. Le collaborateur définira son propre mot de passe à l'acceptation. Admin a accès à tout ; Commercial gère contacts et devis ; Lecteur seul consulte sans modifier." tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 951 | </div> | Syntax not understood |
| 952 | <h3>Membres actuels</h3> | Syntax not understood |
| 953 | <div id="teamMembersList" class="team-members-list" role="list" aria-label="Membres de l'équipe"></div> | Syntax not understood |
| 954 | <div id="seatAddonBox" class="settings-section mt-16 hidden"> | Syntax not understood |
| 955 | <h4 class="settings-subheading"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg>Sièges supplémentaires</h4> | Syntax not understood |
| 956 | <p id="seatAddonStatus" class="text-muted text-sm mb-8"></p> | Syntax not understood |
| 957 | <div class="team-invite-row"> | Syntax not understood |
| 958 | <input type="number" id="seatQuantityInput" min="0" max="50" value="0" class="w-80" aria-label="Nombre de sièges supplémentaires"> | Syntax not understood |
| 959 | <button class="btn-add" id="saveSeatsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg>Mettre à jour les sièges</button> | Syntax not understood |
| 960 | <span class="tooltip-icon" data-tip="20€/mois par siège supplémentaire, en plus des membres inclus dans votre plan. Première fois : redirection vers Stripe. Ensuite, modifie directement votre abonnement existant, avec facturation au prorata." tabindex="0" role="button" aria-label="Aide">?</span> | Unknown directive |
| 961 | </div> | Syntax not understood |
| 962 | </div> | Syntax not understood |
| 963 | </div> | Syntax not understood |
| 964 | <div id="teamUpgradeMessage" class="team-upgrade-box hidden"> | Syntax not understood |
| 965 | <p class="team-upgrade-icon"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg></p> | Syntax not understood |
| 966 | <h3>Fonctionnalité Équipe</h3> | Syntax not understood |
| 967 | <p class="text-muted mb-16">La gestion d'équipe est disponible dès le plan <strong>Pro (49€/mois)</strong>, avec des sièges supplémentaires à 20€/mois chacun à partir de ce plan.</p> | Syntax not understood |
| 968 | <button class="btn-add" id="subscribePlanBtn" type="button" data-action="subscribeToPlan" data-value="pro">Passer au plan Pro</button> | Syntax not understood |
| 969 | </div> | Syntax not understood |
| 970 | </div> | Syntax not understood |
| 971 | </div> | Syntax not understood |
| 972 | <div id="settingsTabChatbot" class="hidden" role="tabpanel"> | Syntax not understood |
| 973 | <div class="settings-section"> | Syntax not understood |
| 974 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>Chatbot — Intégration <button class="feature-help-trigger" type="button" data-action="toggleFeatureHelp" data-help="chatbot"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aide</button></h3> | Syntax not understood |
| 975 | <div id="featureHelp_chatbot" class="feature-help-panel hidden"></div> | Syntax not understood |
| 976 | <div id="chatbotPlanWarning"></div> | Syntax not understood |
| 977 | <div class="chatbot-integration-block"> | Syntax not understood |
| 978 | <h4>Code d'intégration</h4> | Syntax not understood |
| 979 | <p class="text-muted text-sm">Ajoutez ce code sur votre site pour activer le chatbot :</p> | Unknown directive |
| 980 | <pre id="chatbotSnippet" class="chatbot-snippet"><script src="https://chat.exonore.fr/embed.js" | Unknown directive |
| 981 | data-company-id="<span id="chatbotCompanyId">chargement...</span>" async></script></pre> | Syntax not understood |
| 982 | <button class="btn-secondary" type="button" id="copySnippetBtn" data-action="copyChatbotSnippet"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>Copier le snippet</button> | Syntax not understood |
| 983 | <p class="text-muted text-sm mt-8">À coller juste avant la balise </body> de votre site. Une bulle de discussion apparaîtra automatiquement en bas de la page.</p> | Syntax not understood |
| 984 | <p class="text-muted text-sm mt-16">Pas de site web ? Partagez simplement ce lien par SMS, WhatsApp ou sur vos réseaux :</p> | Unknown directive |
| 985 | <div class="chatbot-share-link"> | Syntax not understood |
| 986 | <input type="text" id="chatbotShareLink" readonly value="https://chat.exonore.fr/?companyId=chargement..."> | Unknown directive |
| 987 | <button class="btn-secondary" type="button" id="copyChatbotLinkBtn" data-action="copyChatbotLink"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>Copier le lien</button> | Syntax not understood |
| 988 | </div> | Syntax not understood |
| 989 | </div> | Syntax not understood |
| 990 | <div class="form-group mt-16"> | Syntax not understood |
| 991 | <label for="chatbotAllowedDomains"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>Domaines autorisés à intégrer le chatbot (recommandé)</label> | Syntax not understood |
| 992 | <input type="text" id="chatbotAllowedDomains" placeholder="https://votresite.fr, https://www.votresite.fr"> | Unknown directive |
| 993 | <p id="chatbotDomainsWarning" class="text-muted text-sm mt-8 hidden text-warning-amber"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Aucun domaine configuré — votre chatbot fonctionne actuellement depuis n'importe quel site.</p> | Syntax not understood |
| 994 | <p class="text-muted text-sm mt-8">Empêche que votre chatbot (et votre quota de leads) soit utilisé si quelqu'un copie votre code d'intégration sur un autre site. Séparez plusieurs domaines par une virgule. Laissez vide pour autoriser tous les domaines (par défaut).</p> | Syntax not understood |
| 995 | </div> | Syntax not understood |
| 996 | <div class="form-group mt-16"> | Syntax not understood |
| 997 | <label class="toggle-label"><input type="checkbox" id="chatbotAutoSendDocs" checked><span class="toggle-slider"></span>📄 Envoi automatique des devis et factures</label> | Syntax not understood |
| 998 | <p class="text-muted text-sm mt-8">Le visiteur choisit ses articles et leurs quantités dans le chatbot. Avec Stripe connecté, il paie en ligne et reçoit sa facture par email. Sans Stripe, il reçoit son devis par email dès qu’il confirme son adresse, puis sa facture dès qu’il l’a signé. Vos automatisations ne renvoient pas ces documents et ne créent pas de second devis. Désactivez pour revenir à l’ancien fonctionnement.</p> | Syntax not understood |
| 999 | </div> | Syntax not understood |
| 1000 | <div class="form-group mt-16"> | Syntax not understood |
| 1001 | <label class="toggle-label"><input type="checkbox" id="chatbotAskCountry"><span class="toggle-slider"></span>🌍 Ventes à l'international</label> | Syntax not understood |
| 1002 | <p class="text-muted text-sm mt-8">Pour un achat, le chatbot demande le pays du client, s'il achète en tant que particulier ou entreprise, et son n° de TVA intracommunautaire (entreprise de l'UE). La commande applique alors le bon régime : export hors UE ou livraison intra-UE exonérés, autoliquidation… Laissez décoché si vous vendez uniquement en France.</p> | Unknown directive |
| 1003 | </div> | Syntax not understood |
| 1004 | <div class="form-group mt-16"> | Syntax not understood |
| 1005 | <label for="chatbotWelcomeMessage">Message d'accueil personnalisé (laisser vide pour le texte par défaut)</label> | Syntax not understood |
| 1006 | <input type="text" id="chatbotWelcomeMessage" placeholder="Bienvenue chez Dupont Conseil ! Comment puis-je vous aider ?"> | Syntax not understood |
| 1007 | </div> | Syntax not understood |
| 1008 | <div class="form-group mt-16"> | Syntax not understood |
| 1009 | <label class="toggle-label"> | Syntax not understood |
| 1010 | <input type="checkbox" id="chatbotActive" checked> | Syntax not understood |
| 1011 | <span class="toggle-slider"></span> | Syntax not understood |
| 1012 | Chatbot actif | Syntax not understood |
| 1013 | </label> | Syntax not understood |
| 1014 | </div> | Syntax not understood |
| 1015 | <div class="mt-16"> | Syntax not understood |
| 1016 | <h4><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="13.5" cy="6.5" r="1"/><circle cx="17.5" cy="10.5" r="1"/><circle cx="8.5" cy="7.5" r="1"/><circle cx="6.5" cy="12.5" r="1"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.93 0 1.65-.75 1.65-1.69 0-.44-.18-.84-.44-1.13-.29-.29-.44-.65-.44-1.13a1.64 1.64 0 0 1 1.67-1.67h2c3.05 0 5.56-2.5 5.56-5.55C21.97 6.01 17.46 2 12 2z"/></svg>Apparence</h4> | Syntax not understood |
| 1017 | <p class="text-muted text-sm">Laissez vide pour garder l'apparence par défaut.</p> | Syntax not understood |
| 1018 | <div class="form-group"> | Syntax not understood |
| 1019 | <label for="chatbotLogoUrl">URL du logo (affiché dans l'en-tête du chatbot)</label> | Syntax not understood |
| 1020 | <input type="url" id="chatbotLogoUrl" placeholder="https://monsite.fr/logo.png"> | Unknown directive |
| 1021 | </div> | Syntax not understood |
| 1022 | <div class="form-group"> | Syntax not understood |
| 1023 | <label for="chatbotBrandColor">Couleur principale</label> | Syntax not understood |
| 1024 | <input type="color" id="chatbotBrandColor" value="#385D8D"> | Syntax not understood |
| 1025 | </div> | Syntax not understood |
| 1026 | </div> | Syntax not understood |
| 1027 | <div class="mt-16"> | Syntax not understood |
| 1028 | <h4><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/></svg>Questions posées par le chatbot</h4> | Syntax not understood |
| 1029 | <p class="text-muted text-sm">Laissez un champ vide pour garder la question par défaut — rien à faire si vous n'avez pas besoin de les modifier.</p> | Syntax not understood |
| 1030 | <div class="form-group"><label for="chatbotAskIntent">Accueil (par défaut : « Bonjour, comment pourrais-je vous aider ? »)</label><input type="text" id="chatbotAskIntent" placeholder="Bonjour, comment pourrais-je vous aider ?"></div> | Unknown directive |
| 1031 | <div class="form-group"><label for="chatbotAskProduct">Choix du produit (par défaut : « De quoi avez-vous besoin ? »)</label><input type="text" id="chatbotAskProduct" placeholder="De quoi avez-vous besoin ?"></div> | Unknown directive |
| 1032 | <div class="form-group"><label for="chatbotAskEmail">Email (par défaut : « Votre email ? »)</label><input type="text" id="chatbotAskEmail" placeholder="Votre email ?"></div> | Unknown directive |
| 1033 | <div class="form-group"><label for="chatbotAskPhone">Téléphone (par défaut : « Votre téléphone ? »)</label><input type="text" id="chatbotAskPhone" placeholder="Votre téléphone ?"></div> | Unknown directive |
| 1034 | <div class="form-group"><label for="chatbotAskName">Nom (par défaut : « Votre nom ? (optionnel) »)</label><input type="text" id="chatbotAskName" placeholder="Votre nom ? (optionnel)"></div> | Unknown directive |
| 1035 | <div class="form-group"><label for="chatbotAskCompany">Entreprise (par défaut : « Votre entreprise ? (optionnel) »)</label><input type="text" id="chatbotAskCompany" placeholder="Votre entreprise ? (optionnel)"></div> | Unknown directive |
| 1036 | <div class="form-group"><label for="chatbotAskQuestion">Question libre (par défaut : « Posez votre question »)</label><input type="text" id="chatbotAskQuestion" placeholder="Posez votre question, je transmets à l’équipe."></div> | Unknown directive |
| 1037 | <button class="btn-success" type="button" id="saveChatbotCustomTextsBtn"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer les changements.</button> | Syntax not understood |
| 1038 | </div> | Syntax not understood |
| 1039 | <div class="mt-16"> | Syntax not understood |
| 1040 | <h4><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Email de confirmation au visiteur</h4> | Syntax not understood |
| 1041 | <p class="text-muted text-sm">Envoyé automatiquement à l'adresse email saisie par le visiteur, avec un lien à cliquer pour confirmer sa demande. <strong>Cette étape est obligatoire (mesure de sécurité)</strong> : la demande n'est transmise à votre équipe et ne compte dans votre quota qu'une fois ce lien cliqué. Vous pouvez personnaliser son texte ci-dessous, mais pas la désactiver.</p> | Unknown directive |
| 1042 | <div id="chatbotConfirmEmailFields"> | Syntax not understood |
| 1043 | <div class="form-group"> | Syntax not understood |
| 1044 | <label for="chatbotConfirmEmailSubject">Objet (laisser vide pour le texte par défaut)</label> | Syntax not understood |
| 1045 | <input type="text" id="chatbotConfirmEmailSubject" placeholder="Votre demande a bien été reçue"> | Syntax not understood |
| 1046 | </div> | Syntax not understood |
| 1047 | <div class="form-group"> | Syntax not understood |
| 1048 | <label for="chatbotConfirmEmailBody">Message (laisser vide pour le texte par défaut) — {{nom}} et {{entreprise}} sont remplacés automatiquement</label> | Syntax not understood |
| 1049 | <textarea id="chatbotConfirmEmailBody" rows="4" placeholder="Bonjour {{nom}}, nous avons bien reçu votre demande..."></textarea> | Syntax not understood |
| 1050 | </div> | Syntax not understood |
| 1051 | </div> | Syntax not understood |
| 1052 | </div> | Syntax not understood |
| 1053 | <div class="mt-16"> | Syntax not understood |
| 1054 | <h4>Questions personnalisées <span class="plan-badge plan-badge-pro">Dès Pro</span></h4> | Syntax not understood |
| 1055 | <p class="text-muted text-sm">Ajoutez des questions spécifiques à votre activité (max 3 en Pro, 10 en Pro+, 500 en Équipe, 999 en Équipe+).</p> | Syntax not understood |
| 1056 | <div id="chatbotQuestionsList"></div> | Syntax not understood |
| 1057 | <button class="btn-secondary mt-8" type="button" id="addChatbotQuestionBtn" data-action="addChatbotQuestion">+ Ajouter une question</button> | Syntax not understood |
| 1058 | </div> | Syntax not understood |
| 1059 | <button class="btn-success mt-16" type="button" id="saveChatbotBtn" data-action="saveChatbotSettings"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 1060 | </div> | Syntax not understood |
| 1061 | <div class="settings-section mt-16"> | Syntax not understood |
| 1062 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 16 12 14 15 10 15 8 12 2 12"/><path d="M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"/></svg>Demandes reçues via le chatbot</h3> | Syntax not understood |
| 1063 | <div id="chatbotLeadsList"></div> | Syntax not understood |
| 1064 | </div> | Syntax not understood |
| 1065 | </div> | Syntax not understood |
| 1066 | <div id="settingsTabExport" class="hidden" role="tabpanel"> | Syntax not understood |
| 1067 | <div class="settings-section"> | Syntax not understood |
| 1068 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Import & Export</h3> | Syntax not understood |
| 1069 | <p class="text-muted text-sm mb-16">Exportez toutes vos données à tout moment. Conformité RGPD garantie.</p> | Syntax not understood |
| 1070 | <h4 class="settings-subheading"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Import</h4> | Syntax not understood |
| 1071 | <div class="flex gap-8 flex-wrap mb-16"> | Syntax not understood |
| 1072 | <button class="btn-secondary" id="importCSVBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Importer des contacts (CSV)</button> | Syntax not understood |
| 1073 | <button class="btn-secondary" id="importInvoicesCSVBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Importer des devis (CSV)</button> | Syntax not understood |
| 1074 | <button class="btn-secondary" id="importProductsCSVBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Importer un catalogue (CSV)</button> | Syntax not understood |
| 1075 | <input type="file" id="productsCsvFileInput" accept=".csv" class="hidden"> | Syntax not understood |
| 1076 | </div> | Syntax not understood |
| 1077 | <h4 class="settings-subheading"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>Export</h4> | Syntax not understood |
| 1078 | <div class="flex gap-8 flex-wrap"> | Syntax not understood |
| 1079 | <button class="btn-success" id="exportAllDataBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>JSON complet (toutes mes données)</button> | Syntax not understood |
| 1080 | <button class="btn-secondary" id="exportExcelBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Excel — Contacts</button> | Syntax not understood |
| 1081 | <button class="btn-secondary" id="exportCsvBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>CSV — Contacts</button> | Syntax not understood |
| 1082 | <button class="btn-secondary" id="exportProspectsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Excel — Prospects seulement</button> | Syntax not understood |
| 1083 | <button class="btn-secondary" id="exportClientsBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Excel — Clients seulement</button> | Syntax not understood |
| 1084 | <button class="btn-secondary" id="exportInvoicesExcelBtn" type="button" data-action="exportInvoicesExcel"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>Excel — Devis & Factures</button> | Syntax not understood |
| 1085 | <button class="btn-secondary" id="exportComptableBtn" type="button" data-action="exportComptable"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1z"/><line x1="8" y1="8" x2="16" y2="8"/><line x1="8" y1="12" x2="16" y2="12"/><line x1="8" y1="16" x2="13" y2="16"/></svg>Export comptable (factures + dépenses)</button> | Syntax not understood |
| 1086 | <button class="btn-secondary" id="exportProductsCSVBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>Exporter le catalogue (CSV)</button> | Syntax not understood |
| 1087 | </div> | Syntax not understood |
| 1088 | <p class="text-muted text-xs mt-8"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>L'export comptable réunit dans un seul fichier vos factures et avoirs (entrées) et vos paiements sous-traitants (sorties, en négatif), triés par date. Il inclut un code client unique par contact et des colonnes prêtes pour l'import — utilisable avec le logiciel de n'importe quel expert-comptable (Pennylane, Cegid, Sage...), pas seulement Pennylane. Ce n'est pas un fichier FEC officiel : votre expert-comptable génère toujours le FEC réglementaire depuis son propre logiciel.</p> | Unknown directive |
| 1089 | </div> | Syntax not understood |
| 1090 | </div> | Syntax not understood |
| 1091 | <div id="settingsTabRgpd" class="hidden" role="tabpanel"> | Syntax not understood |
| 1092 | <div class="settings-section"> | Syntax not understood |
| 1093 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>Registre des traitements (Art. 30 RGPD)</h3> | Syntax not understood |
| 1094 | <p class="text-muted text-sm mb-16"> | Syntax not understood |
| 1095 | Depuis l'entrée en vigueur du RGPD, l'ancienne déclaration préalable à la CNIL n'existe plus : elle est remplacée par un registre interne que vous devez tenir à jour et présenter à la CNIL sur demande en cas de contrôle. | Unknown directive |
| 1096 | </p> | Syntax not understood |
| 1097 | <div class="settings-info-block"> | Syntax not understood |
| 1098 | <p><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg><strong>Qui est concerné ?</strong> En pratique, toute entreprise qui gère des données de prospects, clients ou salariés doit tenir ce registre — l'exception pour les structures de moins de 250 salariés ne s'applique que si vos traitements sont occasionnels, sans données sensibles et sans risque pour les personnes, ce qui est rarement le cas d'un usage CRM courant.</p> | Syntax not understood |
| 1099 | </div> | Syntax not understood |
| 1100 | <div class="form-group"> | Syntax not understood |
| 1101 | <label for="rgpdResponsable">Responsable du traitement</label> | Syntax not understood |
| 1102 | <input type="text" id="rgpdResponsable" placeholder="Nom de l'entreprise ou du dirigeant"> | Syntax not understood |
| 1103 | </div> | Syntax not understood |
| 1104 | <div class="form-group"> | Syntax not understood |
| 1105 | <label for="rgpdDpoNom"> | Syntax not understood |
| 1106 | Délégué à la protection des données (DPO) | Syntax not understood |
| 1107 | <span class="tooltip-icon" data-tip="Obligatoire uniquement pour les organismes publics ou les traitements à grande échelle/données sensibles (Art. 37 RGPD). Laissez vide si vous n'en avez pas désigné." tabindex="0" role="button" aria-label="Aide">?</span> | Syntax not understood |
| 1108 | </label> | Syntax not understood |
| 1109 | <input type="text" id="rgpdDpoNom" placeholder="Nom et email du DPO (si désigné)"> | Syntax not understood |
| 1110 | </div> | Syntax not understood |
| 1111 | <div class="form-group"> | Syntax not understood |
| 1112 | <label for="rgpdConservation">Durée de conservation des données clients/prospects (mois)</label> | Syntax not understood |
| 1113 | <input type="number" id="rgpdConservation" min="1" max="120" value="36" placeholder="36"> | Syntax not understood |
| 1114 | </div> | Syntax not understood |
| 1115 | <div class="form-group"> | Syntax not understood |
| 1116 | <label class="toggle-label"> | Syntax not understood |
| 1117 | <input type="checkbox" id="rgpdAutoPurge"> | Syntax not understood |
| 1118 | <span class="toggle-slider"></span> | Syntax not understood |
| 1119 | Purger automatiquement les prospects/contacts inactifs après cette durée | Syntax not understood |
| 1120 | </label> | Syntax not understood |
| 1121 | <p class="text-muted text-sm">Désactivé par défaut — comme chez la plupart des CRM, rien n'est supprimé tant que vous ne l'activez pas explicitement. Une fois activé : un avertissement (email + rappel interne) vous prévient d'abord, la suppression n'a lieu que 30 jours après si le contact reste inactif — jamais immédiate, jamais silencieuse. Ne concerne jamais vos clients.</p> | Unknown directive |
| 1122 | </div> | Syntax not understood |
| 1123 | <button class="btn-success" id="saveRgpdBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 1124 | <button class="btn-secondary" id="downloadRgpdPdfBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1" ry="1"/></svg>Télécharger le registre (PDF)</button> | Syntax not understood |
| 1125 | </div> | Syntax not understood |
| 1126 | <div class="settings-section mt-16"> | Syntax not understood |
| 1127 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>Registre — finalités de traitement de ce CRM</h3> | Syntax not understood |
| 1128 | <p class="text-muted text-sm mb-16">Récapitulatif des traitements de données personnelles effectués par ce CRM, à inclure dans votre registre des traitements.</p> | Syntax not understood |
| 1129 | <div class="contacts-table"> | Syntax not understood |
| 1130 | <div class="table-responsive"> | Syntax not understood |
| 1131 | <table aria-label="Registre des traitements"> | Syntax not understood |
| 1132 | <thead><tr><th scope="col">Finalité</th><th scope="col">Catégories de données</th><th scope="col">Base légale</th><th scope="col">Durée de conservation</th><th scope="col">Destinataires</th></tr></thead> | Syntax not understood |
| 1133 | <tbody> | Syntax not understood |
| 1134 | <tr><td>Gestion des prospects et clients</td><td>Identité, coordonnées, historique commercial</td><td>Intérêt légitime (prospection) / Exécution du contrat (clients)</td><td>3 ans après le dernier contact (prospects), durée de la relation + 3 ans (clients)</td><td>Vous, votre équipe</td></tr> | Syntax not understood |
| 1135 | <tr><td>Facturation</td><td>Identité, coordonnées, données de paiement</td><td>Obligation légale (Code de commerce) et exécution du contrat</td><td>10 ans (obligation légale de conservation des documents comptables)</td><td>Vous, votre comptable, votre Plateforme Agréée, Stripe (paiement), YouSign (signature électronique)</td></tr> | Syntax not understood |
| 1136 | <tr><td>Capture de leads via chatbot</td><td>Identité, coordonnées, besoin exprimé</td><td>Consentement (le visiteur soumet volontairement le formulaire)</td><td>3 ans à compter du dernier contact, sauf conversion en client (voir ligne ci-dessus)</td><td>Vous, votre équipe</td></tr> | Syntax not understood |
| 1137 | <tr><td>Envoi d'emails transactionnels</td><td>Email, contenu du message</td><td>Exécution du contrat</td><td>Durée nécessaire à l'envoi, non conservé au-delà par ce traitement</td><td>Vous, Resend (prestataire d'envoi d'emails), ou Gmail/Outlook/votre propre serveur SMTP si connecté</td></tr> | Syntax not understood |
| 1138 | </tbody> | Syntax not understood |
| 1139 | </table> | Syntax not understood |
| 1140 | </div> | Syntax not understood |
| 1141 | </div> | Syntax not understood |
| 1142 | <p class="text-muted text-xs mt-8"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14"/></svg>Ces bases légales et durées sont indicatives, à titre de point de départ — vérifiez qu'elles correspondent à votre pratique réelle avant de les inclure dans votre registre officiel.</p> | Syntax not understood |
| 1143 | </div> | Syntax not understood |
| 1144 | <div class="settings-section mt-16"> | Syntax not understood |
| 1145 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" y1="3" x2="12" y2="15"/></svg>Récupérer mes données (droit à la portabilité, Art. 20 RGPD)</h3> | Syntax not understood |
| 1146 | <p class="text-muted text-sm mb-16">Vous pouvez à tout moment récupérer l'intégralité de vos données dans un format exploitable, pour vous-même ou pour les transmettre à un autre service.</p> | Syntax not understood |
| 1147 | <button class="btn-secondary" type="button" data-action="goToExportTab"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Aller à Import & Export → Export JSON complet</button> | Syntax not understood |
| 1148 | </div> | Syntax not understood |
| 1149 | <div class="settings-section danger-zone mt-16"> | Syntax not understood |
| 1150 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Zone de suppression</h3> | Syntax not understood |
| 1151 | <p class="text-muted text-sm mb-16">Ces actions sont <strong>immédiates et définitives</strong>. Une fois confirmées, vos données ne pourront pas être récupérées — vérifiez bien avant de confirmer. « Supprimer mes données » conserve vos factures et avoirs déjà émis. « Supprimer mon compte » efface tout, factures et avoirs compris : la loi vous oblige à les conserver 10 ans (Code de commerce, art. L123-22), exportez-les avant.</p> | Unknown directive |
| 1152 | <div class="danger-zone-actions"> | Syntax not understood |
| 1153 | <div class="danger-zone-item"> | Syntax not understood |
| 1154 | <div> | Syntax not understood |
| 1155 | <strong>Supprimer mes données</strong> | Syntax not understood |
| 1156 | <p class="text-muted text-sm">Efface définitivement vos contacts, devis, rendez-vous et modèles. Vos factures et avoirs déjà émis restent visibles (obligation légale de conservation, 10 ans). Votre compte reste actif — vous repartez de zéro.</p> | Syntax not understood |
| 1157 | </div> | Syntax not understood |
| 1158 | <button class="btn-danger" id="deleteDataBtn" type="button">Supprimer mes données</button> | Syntax not understood |
| 1159 | </div> | Syntax not understood |
| 1160 | <div class="danger-zone-item"> | Syntax not understood |
| 1161 | <div> | Syntax not understood |
| 1162 | <strong>Supprimer mon compte</strong> | Syntax not understood |
| 1163 | <p class="text-muted text-sm">Ferme définitivement votre compte et efface <strong>toutes</strong> vos données, <strong>y compris vos factures et avoirs</strong>. La loi vous oblige à les conserver 10 ans : téléchargez d'abord l'export complet et l'export comptable (Import & Export), et le PDF ou Factur-X de vos factures.</p> | Unknown directive |
| 1164 | </div> | Syntax not understood |
| 1165 | <button class="btn-danger" id="deleteAccountBtn" type="button">Supprimer mon compte</button> | Syntax not understood |
| 1166 | </div> | Syntax not understood |
| 1167 | </div> | Syntax not understood |
| 1168 | </div> | Syntax not understood |
| 1169 | </div> | Syntax not understood |
| 1170 | <div id="settingsTabSousTraitants" class="hidden" role="tabpanel"> | Syntax not understood |
| 1171 | <div class="settings-section alert-danger-box"> | Syntax not understood |
| 1172 | <h3 class="text-danger-lg"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>ALERTE CONFIANCE SOUS-TRAITANT</h3> | Syntax not understood |
| 1173 | <p class="font-bold"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>Sans vérification de l'attestation de vigilance, vous risquez d'être solidairement responsable des cotisations impayées de votre sous-traitant, en plus d'une amende pouvant atteindre 45 000€ (225 000€ pour une société).</p> | Syntax not understood |
| 1174 | <p class="text-muted text-sm">Obligatoire dès 5000€ HT cumulés de contrat avec un même sous-traitant (art. D243-15 du Code de la sécurité sociale). L'attestation doit être vérifiée à la signature du contrat, puis renouvelée tous les 6 mois tant que la prestation continue.</p> | Syntax not understood |
| 1175 | <p class="text-muted text-sm font-italic">Ce statut reflète les informations que vous avez saisies (date de l'attestation, case "vérifié" cochée par vous) — ce n'est pas une vérification automatique auprès de l'URSSAF. La vérification du code de sécurité à 16 caractères reste à effectuer vous-même sur urssaf.fr.</p> | Syntax not understood |
| 1176 | </div> | Syntax not understood |
| 1177 | <div class="settings-section" id="stAddFormSection"> | Syntax not understood |
| 1178 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v2z"/><path d="M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5"/><path d="M4 15v-3a6 6 0 0 1 6-6"/><path d="M14 6a6 6 0 0 1 6 6v3"/></svg>Ajouter un sous-traitant</h3> | Syntax not understood |
| 1179 | <div class="form-group"><label for="stNom">Nom *</label><input type="text" id="stNom" placeholder="Jean Dupont"></div> | Syntax not understood |
| 1180 | <div class="form-group"><label for="stEntreprise">Entreprise</label><input type="text" id="stEntreprise" placeholder="Dupont Maçonnerie"></div> | Syntax not understood |
| 1181 | <div class="form-group"><label for="stSiret">SIRET</label><input type="text" id="stSiret" placeholder="123 456 789 00012"><span id="stSiretStatus" class="siren-status"></span></div> | Syntax not understood |
| 1182 | <div class="form-group"><label for="stEmail">Email</label><input type="email" id="stEmail" placeholder="jean@exemple.fr"></div> | Syntax not understood |
| 1183 | <div class="form-group"><label for="stTelephone">Téléphone</label><input type="tel" id="stTelephone" placeholder="06 12 34 56 78"></div> | Syntax not understood |
| 1184 | <div class="form-group"><label for="stRib">RIB / IBAN</label><input type="text" id="stRib" placeholder="FR76..."></div> | Syntax not understood |
| 1185 | <div class="form-group"><label for="stTarifType">Type de tarif</label><select id="stTarifType"><option value="jour">Journalier</option><option value="heure">Horaire</option><option value="forfait">Forfait</option></select></div> | Syntax not understood |
| 1186 | <div class="form-group"><label for="stTarifMontant">Montant du tarif (€ HT)</label><input type="number" id="stTarifMontant" min="0" step="0.01" placeholder="350"></div> | Syntax not understood |
| 1187 | <div class="form-group"><label for="stDateAttestation">Date de l'attestation de vigilance</label><input type="date" id="stDateAttestation"><p class="text-muted text-sm">L'échéance à 6 mois est calculée automatiquement. Vous ne pouvez pas télécharger l'attestation vous-même (seul votre sous-traitant le peut, depuis son espace URSSAF) — <a href="https://www.urssaf.fr/accueil/outils-documentation/outils/verification-attestation.html" target="_blank" rel="noopener"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>vérifier l'authenticité de celle qu'il vous a fournie sur urssaf.fr</a> avec le code de sécurité inscrit dessus.</p></div> | Unknown directive |
| 1188 | <label class="toggle-label"><input type="checkbox" id="stCodeVerifie"><span class="toggle-slider"></span>J'ai vérifié le code de sécurité à 16 caractères sur le site de l'URSSAF</label> | Syntax not understood |
| 1189 | <div class="form-group"><label for="stKbisDate">Date de vérification du Kbis</label><input type="date" id="stKbisDate"></div> | Syntax not understood |
| 1190 | <label class="toggle-label"><input type="checkbox" id="stListeSalariesEtrangers"><span class="toggle-slider"></span>Liste nominative des salariés étrangers vérifiée (si applicable)</label> | Syntax not understood |
| 1191 | <div class="form-group"><label for="stListeSalariesEtrangersDate">Date de cette vérification</label><input type="date" id="stListeSalariesEtrangersDate"></div> | Syntax not understood |
| 1192 | <div class="form-group"><label for="stNotes">Notes</label><textarea id="stNotes" placeholder="Notes internes..."></textarea></div> | Syntax not understood |
| 1193 | <button class="btn-add" id="saveSousTraitantBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>Ajouter le sous-traitant</button> | Syntax not understood |
| 1194 | </div> | Syntax not understood |
| 1195 | <div class="settings-section team-upgrade-box hidden" id="stUpgradeMessage"> | Syntax not understood |
| 1196 | <p class="team-upgrade-icon"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 18a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v2z"/><path d="M10 10V5a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v5"/><path d="M4 15v-3a6 6 0 0 1 6-6"/><path d="M14 6a6 6 0 0 1 6 6v3"/></svg></p> | Syntax not understood |
| 1197 | <h3>Gestion des sous-traitants</h3> | Syntax not understood |
| 1198 | <p class="text-muted mb-16">Disponible à partir du plan <strong>Pro (49€/mois)</strong>. Vos sous-traitants déjà enregistrés restent visibles ci-dessous, mais l'ajout d'un nouveau nécessite une mise à niveau.</p> | Syntax not understood |
| 1199 | <button class="btn-add" type="button" data-action="subscribeToPlan" data-value="pro">Passer au plan Pro</button> | Syntax not understood |
| 1200 | </div> | Syntax not understood |
| 1201 | <div class="settings-section"> | Syntax not understood |
| 1202 | <h3>Sous-traitants enregistrés</h3> | Syntax not understood |
| 1203 | <div id="sousTraitantsList" class="team-members-list" role="list" aria-label="Sous-traitants"></div> | Syntax not understood |
| 1204 | </div> | Syntax not understood |
| 1205 | <div class="settings-section"> | Syntax not understood |
| 1206 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="6" width="20" height="12" rx="2"/><circle cx="12" cy="12" r="2"/><line x1="6" y1="12" x2="6.01" y2="12"/><line x1="18" y1="12" x2="18.01" y2="12"/></svg>Dépenses sous-traitance</h3> | Syntax not understood |
| 1207 | <p class="text-muted text-sm">Chaque paiement marqué "payé" génère automatiquement une ligne ici, reprise dans l'export comptable avec vos factures. Une dépense annulée (paiement corrigé ou mission supprimée) reste visible, marquée comme telle, jamais effacée.</p> | Syntax not understood |
| 1208 | <div id="depensesTotal" class="text-muted text-sm mb-8"></div> | Syntax not understood |
| 1209 | <button class="btn-secondary" type="button" data-action="exportComptable"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 2v20l2-1 2 1 2-1 2 1 2-1 2 1 2-1 2 1V2l-2 1-2-1-2 1-2-1-2 1-2-1-2 1z"/><line x1="8" y1="8" x2="16" y2="8"/><line x1="8" y1="12" x2="16" y2="12"/><line x1="8" y1="16" x2="13" y2="16"/></svg>Export comptable (factures + dépenses)</button> | Syntax not understood |
| 1210 | <div id="depensesList" class="team-members-list" role="list" aria-label="Dépenses sous-traitance"></div> | Syntax not understood |
| 1211 | </div> | Syntax not understood |
| 1212 | </div> | Syntax not understood |
| 1213 | <div id="settingsTabHelp" class="hidden" role="tabpanel"> | Syntax not understood |
| 1214 | <div class="settings-section"> | Syntax not understood |
| 1215 | <div class="help-download-block"> | Syntax not understood |
| 1216 | <div class="help-download-text"> | Syntax not understood |
| 1217 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>Guide complet</h3> | Syntax not understood |
| 1218 | <p>Partager avec votre comptable.</p> | Syntax not understood |
| 1219 | </div> | Syntax not understood |
| 1220 | <button type="button" class="btn-success btn-link-block" id="downloadFullGuideBtn" data-action="downloadFullGuide"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>Télécharger le guide (PDF)</button> | Syntax not understood |
| 1221 | </div> | Syntax not understood |
| 1222 | <h3><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>Documentation & Aide</h3> | Syntax not understood |
| 1223 | <p class="text-muted text-sm mb-16">Retrouvez ici les explications de toutes les fonctionnalités de votre CRM.</p> | Syntax not understood |
| 1224 | <div id="helpContent"></div> | Syntax not understood |
| 1225 | </div> | Syntax not understood |
| 1226 | </div> | Syntax not understood |
| 1227 | </section> | Syntax not understood |
| 1228 | </main> | Syntax not understood |
| 1229 | </div> | Syntax not understood |
| 1230 | </div> | Syntax not understood |
| 1231 | <div id="missionModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="missionModalTitle"> | Syntax not understood |
| 1232 | <div class="modal-content"> | Syntax not understood |
| 1233 | <h3 id="missionModalTitle">Assigner une mission</h3> | Syntax not understood |
| 1234 | <input type="hidden" id="missionSousTraitantId"> | Syntax not understood |
| 1235 | <div class="form-group"><label for="missionDescription">Description *</label><textarea id="missionDescription" placeholder="Réfection de la toiture..."></textarea></div> | Syntax not understood |
| 1236 | <div class="form-row"> | Syntax not understood |
| 1237 | <div class="form-group"><label for="missionLieu">Lieu</label><input type="text" id="missionLieu" placeholder="12 rue de la Paix, 75002 Paris"></div> | Syntax not understood |
| 1238 | <div class="form-group"><label for="missionMontant">Montant convenu (€ HT)</label><input type="number" id="missionMontant" min="0" step="0.01" placeholder="850"></div> | Syntax not understood |
| 1239 | </div> | Syntax not understood |
| 1240 | <div class="form-row"> | Syntax not understood |
| 1241 | <div class="form-group"><label for="missionDateDebut">Date de début</label><input type="date" id="missionDateDebut"></div> | Syntax not understood |
| 1242 | <div class="form-group"><label for="missionDateFin">Date de fin (optionnel)</label><input type="date" id="missionDateFin"></div> | Syntax not understood |
| 1243 | </div> | Syntax not understood |
| 1244 | <div class="form-group"><label for="missionTva">TVA facturée par le sous-traitant</label><select id="missionTva"><option value="20">20%</option><option value="10">10%</option><option value="5.5">5,5%</option><option value="2.1">2,1%</option><option value="0">0% (franchise en base)</option><option value="autoliq">Autoliquidation (sous-traitance BTP)</option><option value="">Non renseigné</option></select></div> | Syntax not understood |
| 1245 | <div class="form-group"><label for="missionStatut">Statut</label><select id="missionStatut"><option value="assignee">Assignée</option><option value="en_cours">En cours</option><option value="termine">Terminée</option></select></div> | Syntax not understood |
| 1246 | <button class="btn-add" id="saveMissionBtn" type="button">Assigner la mission</button> | Syntax not understood |
| 1247 | <button class="btn-secondary" data-action="closeModal" data-id="missionModal" type="button">Annuler</button> | Syntax not understood |
| 1248 | </div> | Syntax not understood |
| 1249 | </div> | Syntax not understood |
| 1250 | <div id="upgradeModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="upgradeModalTitle"> | Syntax not understood |
| 1251 | <div class="modal-content modal-content-upgrade"> | Syntax not understood |
| 1252 | <div class="upgrade-rocket"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="M12 15l-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg></div> | Syntax not understood |
| 1253 | <h3 id="upgradeModalTitle">Fonctionnalité premium</h3> | Syntax not understood |
| 1254 | <div id="upgradeModalBody"></div> | Syntax not understood |
| 1255 | <div class="upgrade-modal-buttons"> | Syntax not understood |
| 1256 | <button class="btn-success" type="button" id="upgradeSeePlansBtn" data-action="openTarifs">Voir les offres</button> | Syntax not understood |
| 1257 | <button class="btn-secondary" type="button" data-action="closeUpgradeModal">Plus tard</button> | Syntax not understood |
| 1258 | </div> | Syntax not understood |
| 1259 | </div> | Syntax not understood |
| 1260 | </div> | Syntax not understood |
| 1261 | <div id="toast" role="status" aria-live="polite" aria-atomic="true"></div> | Syntax not understood |
| 1262 | <div id="loadingOverlay" class="loading-overlay" role="dialog" aria-label="Chargement en cours" aria-busy="true"> | Syntax not understood |
| 1263 | <div class="loading-spinner" aria-hidden="true"></div> | Syntax not understood |
| 1264 | <div class="loading-text">Chargement de vos données...</div> | Syntax not understood |
| 1265 | </div> | Syntax not understood |
| 1266 | <input type="file" id="csvFileInput" accept=".csv" class="hidden" aria-hidden="true"> | Syntax not understood |
| 1267 | <input type="file" id="invoicesCsvFileInput" accept=".csv" class="hidden" aria-hidden="true"> | Syntax not understood |
| 1268 | <input type="file" id="fileUploadInput" accept=".pdf,.jpg,.jpeg,.png" class="hidden" aria-hidden="true"> | Syntax not understood |
| 1269 | <div id="contactModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="contactModalTitle"> | Syntax not understood |
| 1270 | <div class="modal-content"> | Syntax not understood |
| 1271 | <h3 id="contactModalTitle">Nouveau contact</h3> | Syntax not understood |
| 1272 | <div class="form-row"> | Syntax not understood |
| 1273 | <div class="form-group"><label for="contactName">Nom complet *</label><input type="text" id="contactName" placeholder="Jean Dupont" aria-required="true"></div> | Syntax not understood |
| 1274 | <div class="form-group"><label for="contactCompany">Entreprise</label><input type="text" id="contactCompany" placeholder="Dupont SARL"></div> | Syntax not understood |
| 1275 | <div class="form-group"><label for="contactSiret">SIRET (optionnel)</label><input type="text" id="contactSiret" placeholder="123 456 789 00012" maxlength="20"><span id="contactSiretStatus" class="siren-status"></span></div> | Syntax not understood |
| 1276 | </div> | Syntax not understood |
| 1277 | <div class="form-row"> | Syntax not understood |
| 1278 | <div class="form-group"><label for="contactEmail">Email</label><input type="email" id="contactEmail" placeholder="jean@dupont.fr"></div> | Syntax not understood |
| 1279 | <div class="form-group"><label for="contactPhone">Téléphone</label><input type="tel" id="contactPhone" placeholder="06 12 34 56 78"></div> | Syntax not understood |
| 1280 | </div> | Syntax not understood |
| 1281 | <div class="form-row"> | Syntax not understood |
| 1282 | <div class="form-group"><label for="contactActivity">Activité / Secteur</label><input type="text" id="contactActivity" placeholder="BTP, Restauration..."></div> | Syntax not understood |
| 1283 | <div class="form-group"><label for="contactCity">Ville</label><input type="text" id="contactCity" placeholder="Paris"></div> | Syntax not understood |
| 1284 | </div> | Syntax not understood |
| 1285 | <div class="form-row"> | Syntax not understood |
| 1286 | <div class="form-group"> | Syntax not understood |
| 1287 | <label for="contactSource">Source</label> | Syntax not understood |
| 1288 | <select id="contactSource"> | Syntax not understood |
| 1289 | <option value="manuel">Manuel</option><option value="site web">Site web</option> | Syntax not understood |
| 1290 | <option value="referral">Recommandation</option><option value="reseaux">Réseaux sociaux</option> | Syntax not understood |
| 1291 | <option value="salon">Salon / Événement</option><option value="import">Import CSV</option> | Syntax not understood |
| 1292 | </select> | Syntax not understood |
| 1293 | </div> | Syntax not understood |
| 1294 | <div class="form-group"> | Syntax not understood |
| 1295 | <label for="contactRelationshipType">Type</label> | Syntax not understood |
| 1296 | <select id="contactRelationshipType"> | Syntax not understood |
| 1297 | <option value="B2B">B2B</option><option value="B2C">B2C</option> | Syntax not understood |
| 1298 | <option value="Association">Association</option><option value="Collectivité">Collectivité</option> | Syntax not understood |
| 1299 | </select> | Syntax not understood |
| 1300 | </div> | Syntax not understood |
| 1301 | </div> | Syntax not understood |
| 1302 | <div class="form-row"> | Syntax not understood |
| 1303 | <div class="form-group"> | Syntax not understood |
| 1304 | <label for="contactScore">Priorité</label> | Syntax not understood |
| 1305 | <select id="contactScore"> | Syntax not understood |
| 1306 | <option value="chaud">🔴 Chaud</option><option value="tiede" selected>🟠 Tiède</option><option value="froid">🔵 Froid</option> | Syntax not understood |
| 1307 | </select> | Syntax not understood |
| 1308 | </div> | Syntax not understood |
| 1309 | <div class="form-group"> | Syntax not understood |
| 1310 | <label for="contactStatus">Statut</label> | Syntax not understood |
| 1311 | <select id="contactStatus"> | Syntax not understood |
| 1312 | <option value="prospect" selected>Prospect</option><option value="contact">Contact établi</option><option value="client">Client</option> | Syntax not understood |
| 1313 | </select> | Syntax not understood |
| 1314 | </div> | Syntax not understood |
| 1315 | </div> | Syntax not understood |
| 1316 | <div class="form-row"> | Syntax not understood |
| 1317 | <div class="form-group"><label for="contactValue">Valeur estimée (€ HT)</label><input type="number" id="contactValue" placeholder="0" min="0"></div> | Syntax not understood |
| 1318 | <div class="form-group"><label for="contactLinkedin">Profil LinkedIn</label><input type="url" id="contactLinkedin" placeholder="https://linkedin.com/in/..."></div> | Unknown directive |
| 1319 | </div> | Syntax not understood |
| 1320 | <div class="form-group"><label for="contactAddress">Adresse</label><input type="text" id="contactAddress" placeholder="12 rue de la Paix, 75001 Paris"></div> | Syntax not understood |
| 1321 | <div class="form-row"> | Syntax not understood |
| 1322 | <div class="form-group"><label for="contactCountry">Pays</label><select id="contactCountry"><option value="">— Non renseigné —</option></select></div> | Syntax not understood |
| 1323 | <div class="form-group"><label for="contactCustomerType">Type de client</label><select id="contactCustomerType"><option value="">— Non renseigné —</option><option value="particulier">Particulier</option><option value="professionnel">Professionnel</option></select></div> | Syntax not understood |
| 1324 | </div> | Syntax not understood |
| 1325 | <div class="form-group"><label for="contactVat">N° de TVA intracommunautaire (clients professionnels de l'UE)</label><input type="text" id="contactVat" placeholder="Ex : BE0123456789" maxlength="20" autocomplete="off"></div> | Unknown directive |
| 1326 | <div class="form-group"><label for="contactNotes">Notes</label><textarea id="contactNotes" rows="3" placeholder="Informations complémentaires..."></textarea></div> | Syntax not understood |
| 1327 | <div class="modal-buttons"> | Syntax not understood |
| 1328 | <button class="btn-add" id="saveContactBtn" type="button">Enregistrer</button> | Syntax not understood |
| 1329 | <button class="btn-secondary" id="cancelContactBtn" type="button">Annuler</button> | Syntax not understood |
| 1330 | </div> | Syntax not understood |
| 1331 | </div> | Syntax not understood |
| 1332 | </div> | Syntax not understood |
| 1333 | <div id="detailModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="detailModalTitle"> | Syntax not understood |
| 1334 | <div class="modal-content modal-content-wide"> | Syntax not understood |
| 1335 | <h3 id="detailModalTitle">Fiche contact</h3> | Syntax not understood |
| 1336 | <div id="contactAiSummary" class="ai-summary hidden"> | Syntax not understood |
| 1337 | <div class="ai-summary-label"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>Résumé IA</div> | Syntax not understood |
| 1338 | <div id="contactAiSummaryText"></div> | Syntax not understood |
| 1339 | </div> | Syntax not understood |
| 1340 | <div class="form-row"> | Syntax not understood |
| 1341 | <div class="form-group"><label for="detailName">Nom complet</label><input type="text" id="detailName"></div> | Syntax not understood |
| 1342 | <div class="form-group"><label for="detailCompany">Entreprise</label><input type="text" id="detailCompany"></div> | Syntax not understood |
| 1343 | </div> | Syntax not understood |
| 1344 | <div class="form-row"> | Syntax not understood |
| 1345 | <div class="form-group"><label for="detailEmail">Email</label><input type="email" id="detailEmail"></div> | Syntax not understood |
| 1346 | <div class="form-group"><label for="detailPhone">Téléphone</label><input type="tel" id="detailPhone"></div> | Syntax not understood |
| 1347 | </div> | Syntax not understood |
| 1348 | <div class="form-row"> | Syntax not understood |
| 1349 | <div class="form-group"><label for="detailActivity">Activité</label><input type="text" id="detailActivity"></div> | Syntax not understood |
| 1350 | <div class="form-group"><label for="detailCity">Ville</label><input type="text" id="detailCity"></div> | Syntax not understood |
| 1351 | </div> | Syntax not understood |
| 1352 | <div class="form-row"> | Syntax not understood |
| 1353 | <div class="form-group"><label for="detailCountry">Pays</label><select id="detailCountry"><option value="">— Non renseigné —</option></select></div> | Syntax not understood |
| 1354 | <div class="form-group"><label for="detailCustomerType">Type de client</label><select id="detailCustomerType"><option value="">— Non renseigné —</option><option value="particulier">Particulier</option><option value="professionnel">Professionnel</option></select></div> | Syntax not understood |
| 1355 | </div> | Syntax not understood |
| 1356 | <div class="form-group"><label for="detailVat">N° de TVA intracommunautaire <span id="detailVatBadge"></span></label><input type="text" id="detailVat" placeholder="Ex : BE0123456789" maxlength="20" autocomplete="off"></div> | Unknown directive |
| 1357 | <div class="form-row"> | Syntax not understood |
| 1358 | <div class="form-group"> | Syntax not understood |
| 1359 | <label for="detailScore">Priorité</label> | Syntax not understood |
| 1360 | <select id="detailScore"><option value="chaud">🔴 Chaud</option><option value="tiede">🟠 Tiède</option><option value="froid">🔵 Froid</option></select> | Syntax not understood |
| 1361 | </div> | Syntax not understood |
| 1362 | <div class="form-group"> | Syntax not understood |
| 1363 | <label for="detailStatus">Statut</label> | Syntax not understood |
| 1364 | <select id="detailStatus"><option value="prospect">Prospect</option><option value="contact">Contact établi</option><option value="client">Client</option></select> | Syntax not understood |
| 1365 | </div> | Syntax not understood |
| 1366 | </div> | Syntax not understood |
| 1367 | <div class="form-row"> | Syntax not understood |
| 1368 | <div class="form-group"><label for="detailValue">Valeur (€ HT)</label><input type="number" id="detailValue" min="0"></div> | Syntax not understood |
| 1369 | <div class="form-group"><label for="detailAssignedTo">Assigné à</label><input type="text" id="detailAssignedTo" placeholder="email@collaborateur.fr"></div> | Syntax not understood |
| 1370 | </div> | Syntax not understood |
| 1371 | <div class="form-row"> | Syntax not understood |
| 1372 | <div class="form-group"><label for="detailSource">Source</label><input type="text" id="detailSource" class="input-readonly" readonly aria-readonly="true"></div> | Syntax not understood |
| 1373 | <div class="form-group"><label for="detailLinkedin">Profil LinkedIn</label><input type="url" id="detailLinkedin" placeholder="https://linkedin.com/in/..."></div> | Unknown directive |
| 1374 | </div> | Syntax not understood |
| 1375 | <div class="form-row"> | Syntax not understood |
| 1376 | <div class="form-group"><label for="detailCreatedAt">Date de création</label><input type="text" id="detailCreatedAt" class="input-readonly" readonly aria-readonly="true"></div> | Syntax not understood |
| 1377 | <div class="form-group"><label for="detailLastInteraction">Dernière interaction</label><input type="text" id="detailLastInteraction" class="input-readonly" readonly aria-readonly="true"></div> | Syntax not understood |
| 1378 | </div> | Syntax not understood |
| 1379 | <div id="detailHealthScore" class="mb-16"></div> | Syntax not understood |
| 1380 | <div class="flex gap-8 mb-16 flex-wrap"> | Syntax not understood |
| 1381 | <button class="btn-add" id="detailNewDevisBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>Nouveau devis</button> | Syntax not understood |
| 1382 | <button class="btn-secondary" id="detailSendEmailBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/><polyline points="22,6 12,13 2,6"/></svg>Envoyer email</button> | Syntax not understood |
| 1383 | <button class="btn-secondary" id="detailWhatsappBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z"/></svg>WhatsApp</button> | Syntax not understood |
| 1384 | <button class="btn-secondary hidden" id="detailLinkedinBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg>LinkedIn</button> | Syntax not understood |
| 1385 | <button class="btn-secondary" id="detailCallBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg>Journal appel</button> | Syntax not understood |
| 1386 | <button class="btn-secondary" id="detailAiAnalyzeBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>Analyse IA</button> | Syntax not understood |
| 1387 | <button class="btn-secondary" id="detailExportDataBtn" type="button" data-action="exportContactData" title="Droit d'accès et de portabilité (RGPD) : toutes les données de cette personne, en JSON"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Données RGPD</button> | Unknown directive |
| 1388 | </div> | Syntax not understood |
| 1389 | <h4 class="timeline-title">Historique des interactions</h4> | Syntax not understood |
| 1390 | <div id="contactTimeline" class="timeline" role="list" aria-label="Historique des interactions"></div> | Syntax not understood |
| 1391 | <div class="form-group mt-16"> | Syntax not understood |
| 1392 | <label for="newNote">Ajouter une note</label> | Syntax not understood |
| 1393 | <textarea id="newNote" rows="2" placeholder="Résumé d'appel, note de réunion..."></textarea> | Syntax not understood |
| 1394 | </div> | Syntax not understood |
| 1395 | <div class="flex gap-8 mb-16"> | Syntax not understood |
| 1396 | <button class="btn-add" id="addNoteBtn" type="button">Ajouter la note</button> | Syntax not understood |
| 1397 | <button class="btn-secondary" id="addCallNoteBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg>Ajouter un appel</button> | Syntax not understood |
| 1398 | </div> | Syntax not understood |
| 1399 | <h4 class="files-title">Fichiers joints</h4> | Syntax not understood |
| 1400 | <div class="flex gap-8 mb-8"> | Syntax not understood |
| 1401 | <button class="btn-secondary" id="uploadFileBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/></svg>Ajouter un fichier</button> | Syntax not understood |
| 1402 | </div> | Syntax not understood |
| 1403 | <div id="filesList" role="list" aria-label="Fichiers joints"></div> | Syntax not understood |
| 1404 | <div class="modal-buttons"> | Syntax not understood |
| 1405 | <button class="btn-add" id="saveDetailContactBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 1406 | <button class="btn-secondary" id="closeDetailModalBtn" type="button">Fermer</button> | Syntax not understood |
| 1407 | </div> | Syntax not understood |
| 1408 | </div> | Syntax not understood |
| 1409 | </div> | Syntax not understood |
| 1410 | <div id="invoiceModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="invoiceModalTitle"> | Syntax not understood |
| 1411 | <div class="modal-content modal-content-wide"> | Syntax not understood |
| 1412 | <h3 id="invoiceModalTitle">Nouveau devis</h3> | Syntax not understood |
| 1413 | <input type="hidden" id="invoiceContactId"> | Syntax not understood |
| 1414 | <div class="form-row"> | Syntax not understood |
| 1415 | <div class="form-group"> | Syntax not understood |
| 1416 | <label for="invoiceContactName">Client</label> | Syntax not understood |
| 1417 | <input type="text" id="invoiceContactName" class="input-readonly hidden" readonly placeholder="Sélectionner depuis la fiche contact"> | Syntax not understood |
| 1418 | <select id="invoiceContactSelect"><option value="">-- Choisir un client --</option></select> | Syntax not understood |
| 1419 | </div> | Syntax not understood |
| 1420 | <div class="form-group"> | Syntax not understood |
| 1421 | <label for="invoiceDueDate">Date d'échéance</label> | Syntax not understood |
| 1422 | <input type="date" id="invoiceDueDate"> | Syntax not understood |
| 1423 | </div> | Syntax not understood |
| 1424 | </div> | Syntax not understood |
| 1425 | <div class="form-group"> | Syntax not understood |
| 1426 | <label for="invoiceDescription">Description générale</label> | Syntax not understood |
| 1427 | <input type="text" id="invoiceDescription" placeholder="Prestation de conseil, développement web..."> | Syntax not understood |
| 1428 | </div> | Syntax not understood |
| 1429 | <div class="form-group"> | Syntax not understood |
| 1430 | <label>Lignes du devis</label> | Syntax not understood |
| 1431 | <div class="devis-table-wrap"> | Syntax not understood |
| 1432 | <table class="devis-lines-table" id="devisLinesTable" aria-label="Lignes du devis"> | Syntax not understood |
| 1433 | <thead> | Syntax not understood |
| 1434 | <tr> | Syntax not understood |
| 1435 | <th class="col-desc">Description</th> | Syntax not understood |
| 1436 | <th class="col-qty">Qté</th> | Syntax not understood |
| 1437 | <th class="col-price">Prix HT</th> | Syntax not understood |
| 1438 | <th class="col-tva">TVA %</th> | Syntax not understood |
| 1439 | <th class="col-remise">Remise %</th> | Syntax not understood |
| 1440 | <th class="col-total">Total HT</th> | Syntax not understood |
| 1441 | <th class="col-del"></th> | Syntax not understood |
| 1442 | </tr> | Syntax not understood |
| 1443 | </thead> | Syntax not understood |
| 1444 | <tbody id="devisLinesBody"></tbody> | Syntax not understood |
| 1445 | </table> | Syntax not understood |
| 1446 | </div> | Syntax not understood |
| 1447 | <div class="flex gap-8 mt-8"> | Syntax not understood |
| 1448 | <button class="btn-secondary" id="addDevisLineBtn" type="button">+ Ajouter une ligne</button> | Syntax not understood |
| 1449 | <button class="btn-secondary" id="addFromCatalogBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Depuis le catalogue</button> | Syntax not understood |
| 1450 | </div> | Syntax not understood |
| 1451 | </div> | Syntax not understood |
| 1452 | <div class="devis-totals"> | Syntax not understood |
| 1453 | <div class="devis-total-row"><span>Total HT</span><span id="devisTotalHT">0,00 €</span></div> | Syntax not understood |
| 1454 | <div class="devis-total-row"><span>TVA</span><span id="devisTotalTVA">0,00 €</span></div> | Syntax not understood |
| 1455 | <div class="devis-total-row hidden" id="devisTotalMarginRow"><span>Total régime particulier (TTC)</span><span id="devisTotalMargin">0,00 €</span></div> | Syntax not understood |
| 1456 | <div class="devis-total-row"><span>Total TTC</span><span id="devisTotalTTC">0,00 €</span></div> | Syntax not understood |
| 1457 | </div> | Syntax not understood |
| 1458 | <!-- ADDED (import-export) — pays et n° de TVA du client : la catégorie de TVA | Unknown directive |
| 1459 | (export, livraison intra-UE, autoliquidation…) est choisie automatiquement. --> | Syntax not understood |
| 1460 | <div class="form-row"> | Syntax not understood |
| 1461 | <div class="form-group"> | Syntax not understood |
| 1462 | <label for="invoiceBuyerCountry">Pays du client (BT-55)</label> | Syntax not understood |
| 1463 | <select id="invoiceBuyerCountry"><option value="FR">France (FR)</option></select> | Syntax not understood |
| 1464 | </div> | Syntax not understood |
| 1465 | <div class="form-group"> | Syntax not understood |
| 1466 | <label for="invoiceBuyerVat">N° de TVA intracommunautaire du client (BT-48) <span class="tooltip-icon" data-tip="Obligatoire pour facturer hors TVA française un professionnel d'un autre pays de l'UE (ex : DE123456789)" tabindex="0" role="button" aria-label="Aide">?</span></label> | Unknown directive |
| 1467 | <input type="text" id="invoiceBuyerVat" placeholder="Ex : DE123456789" maxlength="20" autocomplete="off"> | Unknown directive |
| 1468 | </div> | Syntax not understood |
| 1469 | </div> | Syntax not understood |
| 1470 | <p id="invoiceVatAutoHint" class="text-muted text-sm mb-8" aria-live="polite"></p> | Syntax not understood |
| 1471 | <div class="form-group"> | Syntax not understood |
| 1472 | <label for="invoiceStatus">Statut initial</label> | Syntax not understood |
| 1473 | <select id="invoiceStatus"> | Syntax not understood |
| 1474 | <option value="devis">Brouillon</option> | Syntax not understood |
| 1475 | <option value="envoye">Envoyé</option> | Syntax not understood |
| 1476 | </select> | Syntax not understood |
| 1477 | </div> | Syntax not understood |
| 1478 | <div class="form-group b2c-toggle-group"> | Syntax not understood |
| 1479 | <label class="toggle-label"><input type="checkbox" id="invoiceB2cConsumer"><span class="toggle-slider"></span>Client particulier (B2C) — vente à distance</label> | Syntax not understood |
| 1480 | <p class="text-muted text-sm mt-8">Ajoute la mention légale du droit de rétractation (14 jours) sur ce devis/facture. Ne cochez pas si la prestation a déjà été intégralement exécutée avec l'accord exprès du client, s'il s'agit d'un bien confectionné sur mesure, ou d'une vente entre professionnels (B2B) — ces cas sont exemptés.</p> | Syntax not understood |
| 1481 | </div> | Syntax not understood |
| 1482 | <div class="form-group b2c-toggle-group"> | Syntax not understood |
| 1483 | <label class="toggle-label"><input type="checkbox" id="invoiceBtpAutoliquidation"><span class="toggle-slider"></span>Sous-traitance BTP — autoliquidation de la TVA</label> | Syntax not understood |
| 1484 | <p class="text-muted text-sm mt-8">Vous facturez en tant que sous-traitant pour un donneur d'ordre du bâtiment assujetti à la TVA : la facture passe automatiquement hors taxe (0 € de TVA facturée), avec la mention légale "Autoliquidation — art. 283-2 nonies du CGI". Ne cochez pas si vous êtes en franchise en base de TVA (vous ne facturez déjà pas de TVA) ou si ce n'est pas une opération de sous-traitance BTP.</p> | Unknown directive |
| 1485 | </div> | Syntax not understood |
| 1486 | <div class="form-group b2c-toggle-group"> | Syntax not understood |
| 1487 | <h4 class="settings-subheading"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1" ry="1"/></svg>Mentions facturation électronique 2026</h4> | Syntax not understood |
| 1488 | <p class="text-muted text-sm">Nouvelles mentions obligatoires depuis le 1er septembre 2026 (art. 242 nonies A de l'annexe II du CGI) — sans effet sur ce devis tant qu'il n'est pas transmis via une Plateforme Agréée, mais à renseigner dès maintenant pour être prêt.</p> | Syntax not understood |
| 1489 | <div class="form-row"> | Syntax not understood |
| 1490 | <div class="form-group"><label for="invoiceClientSiren">SIREN du client (9 chiffres)</label><input type="text" id="invoiceClientSiren" placeholder="912345678" maxlength="9"></div> | Syntax not understood |
| 1491 | <div class="form-group"><label for="invoiceCategorieOperation">Catégorie de l'opération</label><select id="invoiceCategorieOperation"><option value="services">Prestation de services</option><option value="biens">Livraison de biens</option><option value="mixte">Opération mixte</option></select></div> | Syntax not understood |
| 1492 | </div> | Syntax not understood |
| 1493 | <div class="form-group"><label for="invoiceAdresseLivraison">Adresse de livraison (si différente de l'adresse du client)</label><input type="text" id="invoiceAdresseLivraison" placeholder="Laisser vide si identique à l'adresse de facturation"></div> | Syntax not understood |
| 1494 | <label class="toggle-label"><input type="checkbox" id="invoiceTvaSurDebits"><span class="toggle-slider"></span>TVA acquittée d'après les débits (prestataires de services uniquement)</label> | Syntax not understood |
| 1495 | </div> | Syntax not understood |
| 1496 | <details class="facturx-details"> | Syntax not understood |
| 1497 | <summary class="facturx-summary"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>Paramètres Factur-X / Facturation électronique <span class="facturx-badge">EN 16931</span></summary> | Syntax not understood |
| 1498 | <div class="facturx-fields"> | Syntax not understood |
| 1499 | <div class="form-row"> | Syntax not understood |
| 1500 | <div class="form-group"> | Syntax not understood |
| 1501 | <label for="invoiceType">Type de document (BT-3) <span class="tooltip-icon" data-tip="380 = Facture commerciale, 381 = Avoir / note de crédit" tabindex="0" role="button" aria-label="Aide">?</span></label> | Syntax not understood |
| 1502 | <select id="invoiceType"> | Syntax not understood |
| 1503 | <option value="380">380 — Facture commerciale</option> | Syntax not understood |
| 1504 | <option value="389">389 — Autofacturation</option> | Syntax not understood |
| 1505 | </select> | Syntax not understood |
| 1506 | </div> | Syntax not understood |
| 1507 | <div class="form-group"> | Syntax not understood |
| 1508 | <label for="invoiceFacturxProfile">Profil Factur-X <span class="tooltip-icon" data-tip="EN 16931 est le profil standard recommandé pour la plupart des PME françaises" tabindex="0" role="button" aria-label="Aide">?</span></label> | Syntax not understood |
| 1509 | <select id="invoiceFacturxProfile"> | Syntax not understood |
| 1510 | <option value="EN 16931">EN 16931 (standard)</option> | Syntax not understood |
| 1511 | <option value="EXTENDED">EXTENDED (avancé)</option> | Syntax not understood |
| 1512 | <option value="BASIC">BASIC (simplifié)</option> | Syntax not understood |
| 1513 | <option value="MINIMUM">MINIMUM (minimum)</option> | Syntax not understood |
| 1514 | </select> | Syntax not understood |
| 1515 | </div> | Syntax not understood |
| 1516 | </div> | Syntax not understood |
| 1517 | <div class="form-row"> | Syntax not understood |
| 1518 | <div class="form-group"> | Syntax not understood |
| 1519 | <label for="invoiceVatCategory">Catégorie TVA (BT-118) <span class="tooltip-icon" data-tip="S=Standard, AE=Autoliquidation, E=Exonéré, K=Intra-UE, G=Export, Z=Taux 0%" tabindex="0" role="button" aria-label="Aide">?</span></label> | Syntax not understood |
| 1520 | <select id="invoiceVatCategory"> | Syntax not understood |
| 1521 | <option value="S">S — Taux standard</option> | Syntax not understood |
| 1522 | <option value="AE">AE — Autoliquidation</option> | Syntax not understood |
| 1523 | <option value="E">E — Exonéré</option> | Syntax not understood |
| 1524 | <option value="K">K — Livraison intra-UE</option> | Syntax not understood |
| 1525 | <option value="G">G — Export hors UE</option> | Syntax not understood |
| 1526 | <option value="Z">Z — Taux zéro</option> | Syntax not understood |
| 1527 | <option value="O">O — Hors champ TVA</option> | Syntax not understood |
| 1528 | </select> | Syntax not understood |
| 1529 | </div> | Syntax not understood |
| 1530 | <div class="form-group"> | Syntax not understood |
| 1531 | <label for="invoicePaymentMeans">Moyen de paiement (BT-81) <span class="tooltip-icon" data-tip="30=Virement, 48=Carte, 49=Prélèvement, 58=SEPA virement, 59=SEPA prélèvement" tabindex="0" role="button" aria-label="Aide">?</span></label> | Syntax not understood |
| 1532 | <select id="invoicePaymentMeans"> | Syntax not understood |
| 1533 | <option value="30">30 — Virement bancaire</option> | Syntax not understood |
| 1534 | <option value="58">58 — Virement SEPA</option> | Syntax not understood |
| 1535 | <option value="48">48 — Carte de paiement</option> | Syntax not understood |
| 1536 | <option value="49">49 — Prélèvement</option> | Syntax not understood |
| 1537 | <option value="59">59 — Prélèvement SEPA</option> | Syntax not understood |
| 1538 | <option value="42">42 — Paiement compte bancaire</option> | Syntax not understood |
| 1539 | </select> | Syntax not understood |
| 1540 | </div> | Syntax not understood |
| 1541 | </div> | Syntax not understood |
| 1542 | <div class="form-row"> | Syntax not understood |
| 1543 | <div class="form-group"> | Syntax not understood |
| 1544 | <label for="invoiceBuyerSiret">SIRET acheteur (BT-46) <span class="tooltip-icon" data-tip="SIRET à 14 chiffres de votre client — obligatoire pour les factures B2B" tabindex="0" role="button" aria-label="Aide">?</span></label> | Syntax not understood |
| 1545 | <input type="text" id="invoiceBuyerSiret" placeholder="14 chiffres" maxlength="14"> | Syntax not understood |
| 1546 | </div> | Syntax not understood |
| 1547 | </div> | Syntax not understood |
| 1548 | </div> | Syntax not understood |
| 1549 | </details> | Syntax not understood |
| 1550 | <div class="modal-buttons"> | Syntax not understood |
| 1551 | <button class="btn-add" id="saveInvoiceBtn" type="button">Créer le devis</button> | Syntax not understood |
| 1552 | <button class="btn-secondary" id="cancelInvoiceBtn" type="button">Annuler</button> | Syntax not understood |
| 1553 | </div> | Syntax not understood |
| 1554 | </div> | Syntax not understood |
| 1555 | </div> | Syntax not understood |
| 1556 | <div id="mergeContactsModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="mergeContactsModalTitle"> | Syntax not understood |
| 1557 | <div class="modal-content"> | Syntax not understood |
| 1558 | <h3 id="mergeContactsModalTitle"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><path d="M6 21V9a9 9 0 0 0 9 9"/></svg>Fusionner ces 2 fiches</h3> | Syntax not understood |
| 1559 | <p class="text-muted text-sm mb-16">Choisissez la fiche à conserver. Les notes et l'historique de l'autre fiche seront ajoutés à celle-ci, puis la fiche en trop sera supprimée. Cette action est irréversible.</p> | Syntax not understood |
| 1560 | <div class="merge-options-row"> | Syntax not understood |
| 1561 | <button class="merge-option-card" id="mergeOptionA" data-action="confirmMergeA" type="button"></button> | Syntax not understood |
| 1562 | <button class="merge-option-card" id="mergeOptionB" data-action="confirmMergeB" type="button"></button> | Syntax not understood |
| 1563 | </div> | Syntax not understood |
| 1564 | <div class="modal-actions"> | Syntax not understood |
| 1565 | <button class="btn-secondary" data-action="closeMergeModal" type="button">Annuler</button> | Syntax not understood |
| 1566 | </div> | Syntax not understood |
| 1567 | </div> | Syntax not understood |
| 1568 | </div> | Syntax not understood |
| 1569 | <div id="productModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="productModalTitle"> | Syntax not understood |
| 1570 | <div class="modal-content"> | Syntax not understood |
| 1571 | <h3 id="productModalTitle">Nouveau produit</h3> | Syntax not understood |
| 1572 | <div class="form-group"><label for="productName">Nom du produit / service *</label><input type="text" id="productName" placeholder="Consultation stratégique" aria-required="true"></div> | Syntax not understood |
| 1573 | <div class="form-group"><label>Type d’article *</label> | Syntax not understood |
| 1574 | <div class="product-type-row"> | Syntax not understood |
| 1575 | <label class="product-type-opt" id="productTypeOptProduit"><input type="radio" name="productTypeRadio" id="productTypeRadioProduit" value="physique" checked> <svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Produit</label> | Syntax not understood |
| 1576 | <label class="product-type-opt" id="productTypeOptService"><input type="radio" name="productTypeRadio" id="productTypeRadioService" value="prestation"> <svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/></svg>Service</label> | Syntax not understood |
| 1577 | </div> | Syntax not understood |
| 1578 | <div class="product-ship-row" id="productShipRow"> | Syntax not understood |
| 1579 | <input type="checkbox" id="productNeedsShipping" checked> | Syntax not understood |
| 1580 | <label for="productNeedsShipping">À expédier</label> | Syntax not understood |
| 1581 | </div> | Syntax not understood |
| 1582 | <p class="text-muted text-sm">Les produits cochés « À expédier » apparaissent dans « Commandes à expédier » une fois payés, et sous le bouton « Produits » du chatbot. Les services sous « Prestations ». Décochez « À expédier » pour un produit numérique (formation, licence...).</p></div> | Syntax not understood |
| 1583 | <div class="form-group"><label for="productDescription">Description</label><textarea id="productDescription" rows="2" placeholder="Description courte..."></textarea></div> | Syntax not understood |
| 1584 | <div class="form-row"> | Syntax not understood |
| 1585 | <div class="form-group"><label for="productPrice">Prix HT (€) *</label><input type="number" id="productPrice" placeholder="150" min="0" step="0.01" aria-required="true"></div> | Syntax not understood |
| 1586 | <div class="form-group"> | Syntax not understood |
| 1587 | <label for="productTva">TVA (%)</label> | Syntax not understood |
| 1588 | <select id="productTva"><option value="0">0%</option><option value="2.1">2,1%</option><option value="5.5">5,5%</option><option value="10">10%</option><option value="20" selected>20%</option></select> | Syntax not understood |
| 1589 | </div> | Syntax not understood |
| 1590 | </div> | Syntax not understood |
| 1591 | <div class="form-group"><label for="productRef">Référence (optionnel)</label><input type="text" id="productRef" placeholder="REF-001"></div> | Syntax not understood |
| 1592 | <div class="form-group"><label for="productEcoTax"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 4 23 10 17 10"/><polyline points="1 20 1 14 7 14"/><path d="M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"/></svg>Éco-participation / éco-contribution DEEE (€ HT, optionnel)</label><input type="number" id="productEcoTax" placeholder="0" min="0" step="0.01"><p class="text-muted text-sm">Montant à répercuter à l'identique, sans marge, sur chaque devis/facture contenant ce produit — obligatoire pour l'électroménager, le mobilier et le matériel électronique concernés. Soumis à la TVA comme le reste du prix.</p></div> | Syntax not understood |
| 1593 | <div class="form-group" id="productStockGroup"> | Syntax not understood |
| 1594 | <label class="toggle-label"><input type="checkbox" id="productTrackStock"><span class="toggle-slider"></span><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="16.5" y1="9.4" x2="7.5" y2="4.21"/><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"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/></svg>Suivre le stock de ce produit</label> | Syntax not understood |
| 1595 | <div id="productStockQuantityRow" class="hidden mt-8"> | Syntax not understood |
| 1596 | <label for="productStockQuantity">Quantité en stock</label> | Syntax not understood |
| 1597 | <input type="number" id="productStockQuantity" placeholder="0" step="1"> | Syntax not understood |
| 1598 | <p class="text-muted text-sm">Décompté automatiquement à chaque facture (pas à chaque devis).</p> | Syntax not understood |
| 1599 | </div> | Syntax not understood |
| 1600 | </div> | Syntax not understood |
| 1601 | <div class="form-group"><label for="productPaymentLink">Lien de paiement Stripe (optionnel)</label><input type="url" id="productPaymentLink" placeholder="https://buy.stripe.com/..."><p class="text-muted text-sm">Si renseigné, un bouton « 💳 Payer maintenant » apparaît dans le chatbot dès que ce produit est choisi. Laissez vide pour ne proposer aucun paiement en ligne sur cet article. Utilisez un lien de paiement Stripe permanent (créé une fois dans votre tableau de bord Stripe), pas une session de paiement ponctuelle.</p></div> | Unknown directive |
| 1602 | <div class="form-group"> | Syntax not understood |
| 1603 | <div class="product-ship-row"> | Syntax not understood |
| 1604 | <input type="checkbox" id="productChatbotFeatured"> | Syntax not understood |
| 1605 | <label for="productChatbotFeatured">Mettre en avant dans le chatbot</label> | Syntax not understood |
| 1606 | </div> | Syntax not understood |
| 1607 | <p class="text-muted text-sm">Jusqu’à 8 produits s’affichent en boutons dans le chatbot. Les autres restent trouvables quand le visiteur écrit leur nom.</p> | Syntax not understood |
| 1608 | </div> | Syntax not understood |
| 1609 | <div class="modal-buttons"> | Syntax not understood |
| 1610 | <button class="btn-add" id="saveProductBtn" type="button">Enregistrer</button> | Syntax not understood |
| 1611 | <button class="btn-secondary" id="cancelProductBtn" type="button">Annuler</button> | Syntax not understood |
| 1612 | </div> | Syntax not understood |
| 1613 | </div> | Syntax not understood |
| 1614 | </div> | Syntax not understood |
| 1615 | <div id="catalogSelectModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="catalogSelectTitle"> | Syntax not understood |
| 1616 | <div class="modal-content"> | Syntax not understood |
| 1617 | <h3 id="catalogSelectTitle">Choisir depuis le catalogue</h3> | Syntax not understood |
| 1618 | <input type="search" id="catalogSearch" placeholder="Rechercher un produit..." class="search-bar mb-16" aria-label="Rechercher un produit"> | Syntax not understood |
| 1619 | <div id="catalogSelectList" class="catalog-list" role="list" aria-label="Produits disponibles"></div> | Syntax not understood |
| 1620 | <div class="modal-buttons"> | Syntax not understood |
| 1621 | <button class="btn-secondary" id="closeCatalogSelectBtn" type="button">Fermer</button> | Syntax not understood |
| 1622 | </div> | Syntax not understood |
| 1623 | </div> | Syntax not understood |
| 1624 | </div> | Syntax not understood |
| 1625 | <div id="reminderModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="reminderModalTitle"> | Syntax not understood |
| 1626 | <div class="modal-content"> | Syntax not understood |
| 1627 | <h3 id="reminderModalTitle">Nouveau rappel</h3> | Syntax not understood |
| 1628 | <div class="form-group"><label for="reminderTitle">Titre *</label><input type="text" id="reminderTitle" placeholder="Rappeler M. Dupont" aria-required="true"></div> | Syntax not understood |
| 1629 | <div class="form-group"><label for="reminderDesc">Description</label><textarea id="reminderDesc" rows="2" placeholder="Détails du rappel..."></textarea></div> | Syntax not understood |
| 1630 | <div class="form-group"><label for="reminderDate">Date et heure *</label><input type="datetime-local" id="reminderDate" aria-required="true"></div> | Syntax not understood |
| 1631 | <div class="form-group"> | Syntax not understood |
| 1632 | <label for="reminderContactId">Contact lié (optionnel)</label> | Syntax not understood |
| 1633 | <select id="reminderContactId"><option value="">Sans contact lié</option></select> | Syntax not understood |
| 1634 | </div> | Syntax not understood |
| 1635 | <div class="modal-buttons"> | Syntax not understood |
| 1636 | <button class="btn-add" id="saveReminderBtn" type="button">Créer le rappel</button> | Syntax not understood |
| 1637 | <button class="btn-secondary" id="cancelReminderBtn" type="button">Annuler</button> | Syntax not understood |
| 1638 | </div> | Syntax not understood |
| 1639 | </div> | Syntax not understood |
| 1640 | </div> | Syntax not understood |
| 1641 | <div id="emailTemplateModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="templateModalTitle"> | Syntax not understood |
| 1642 | <div class="modal-content"> | Syntax not understood |
| 1643 | <h3 id="templateModalTitle">Nouveau template email</h3> | Syntax not understood |
| 1644 | <div class="form-group"><label for="templateName">Nom du template *</label><input type="text" id="templateName" placeholder="Relance devis" aria-required="true"></div> | Syntax not understood |
| 1645 | <div class="form-group"><label for="templateSubject">Sujet *</label><input type="text" id="templateSubject" placeholder="Sujet de l'email" aria-required="true"></div> | Syntax not understood |
| 1646 | <div class="form-group"> | Syntax not understood |
| 1647 | <label for="templateBody">Corps du message</label> | Syntax not understood |
| 1648 | <textarea id="templateBody" rows="6" placeholder="Bonjour {{nom}}, ... Cordialement"></textarea> | Syntax not understood |
| 1649 | <p class="form-hint">Variables disponibles : {{nom}}, {{entreprise}}, {{date}}</p> | Unknown directive |
| 1650 | </div> | Syntax not understood |
| 1651 | <div class="flex gap-8 mb-16"> | Syntax not understood |
| 1652 | <button class="btn-secondary" id="templateAiDraftBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>Brouillon IA</button> | Syntax not understood |
| 1653 | </div> | Syntax not understood |
| 1654 | <div class="modal-buttons"> | Syntax not understood |
| 1655 | <button class="btn-add" id="saveEmailTemplateBtn" type="button">Enregistrer</button> | Syntax not understood |
| 1656 | <button class="btn-secondary" id="cancelEmailTemplateBtn" type="button">Annuler</button> | Syntax not understood |
| 1657 | </div> | Syntax not understood |
| 1658 | </div> | Syntax not understood |
| 1659 | </div> | Syntax not understood |
| 1660 | <div id="sendEmailModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="sendEmailModalTitle"> | Syntax not understood |
| 1661 | <div class="modal-content"> | Syntax not understood |
| 1662 | <h3 id="sendEmailModalTitle">Envoyer un email</h3> | Syntax not understood |
| 1663 | <div class="form-group"><label for="emailTo">Destinataire</label><input type="email" id="emailTo" class="input-readonly" readonly></div> | Syntax not understood |
| 1664 | <div class="form-group"> | Syntax not understood |
| 1665 | <label for="emailTemplateSelect">Utiliser un template</label> | Syntax not understood |
| 1666 | <select id="emailTemplateSelect"><option value="">-- Sélectionner un template (optionnel) --</option></select> | Syntax not understood |
| 1667 | </div> | Syntax not understood |
| 1668 | <div class="form-group"><label for="emailSubject">Sujet *</label><input type="text" id="emailSubject" placeholder="Objet de l'email" aria-required="true"></div> | Syntax not understood |
| 1669 | <div class="form-group"><label for="emailBody">Message *</label><textarea id="emailBody" rows="8" placeholder="Corps du message..." aria-required="true"></textarea></div> | Syntax not understood |
| 1670 | <div class="flex gap-8 mb-16"> | Syntax not understood |
| 1671 | <button class="btn-secondary" id="emailAiDraftBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 8V4H8"/><rect x="4" y="8" width="16" height="12" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/></svg>Rédiger avec l'IA</button> | Syntax not understood |
| 1672 | </div> | Syntax not understood |
| 1673 | <div class="modal-buttons"> | Syntax not understood |
| 1674 | <button class="btn-add" id="sendEmailBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>Envoyer</button> | Syntax not understood |
| 1675 | <button class="btn-secondary" id="cancelSendEmailBtn" type="button">Annuler</button> | Syntax not understood |
| 1676 | </div> | Syntax not understood |
| 1677 | </div> | Syntax not understood |
| 1678 | </div> | Syntax not understood |
| 1679 | <div id="workflowModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="workflowModalTitle"> | Syntax not understood |
| 1680 | <div class="modal-content"> | Syntax not understood |
| 1681 | <h3 id="workflowModalTitle">Nouvelle règle automatique</h3> | Syntax not understood |
| 1682 | <div class="wf-stepper" role="group" aria-label="Étapes de création"> | Syntax not understood |
| 1683 | <div class="wf-dot active" id="wfDot1" aria-label="Étape 1 : Déclencheur">1</div> | Unknown directive |
| 1684 | <div class="wf-step-line"></div> | Syntax not understood |
| 1685 | <div class="wf-dot" id="wfDot2" aria-label="Étape 2 : Condition">2</div> | Unknown directive |
| 1686 | <div class="wf-step-line"></div> | Syntax not understood |
| 1687 | <div class="wf-dot" id="wfDot3" aria-label="Étape 3 : Action">3</div> | Unknown directive |
| 1688 | </div> | Syntax not understood |
| 1689 | <div class="wf-step-labels" aria-hidden="true"> | Syntax not understood |
| 1690 | <span class="wf-step-lbl active" id="wfStepLabel1">QUAND</span> | Syntax not understood |
| 1691 | <span class="wf-step-lbl" id="wfStepLabel2">SI</span> | Syntax not understood |
| 1692 | <span class="wf-step-lbl" id="wfStepLabel3">ALORS</span> | Syntax not understood |
| 1693 | </div> | Syntax not understood |
| 1694 | <div id="wfPanel1"> | Syntax not understood |
| 1695 | <p class="text-muted mb-16 text-sm">Choisissez ce qui déclenche la règle :</p> | Unknown directive |
| 1696 | <div class="wf-choices" id="wfTriggerList" role="group" aria-label="Choix du déclencheur"></div> | Syntax not understood |
| 1697 | <details class="mt-16" id="wfTemplatesBlock"><summary>✨ Ou partir d'un modèle prêt à l'emploi</summary><div id="wfTemplatesList" class="mt-8"></div></details> | Syntax not understood |
| 1698 | </div> | Syntax not understood |
| 1699 | <div id="wfPanel2" class="hidden"> | Syntax not understood |
| 1700 | <p class="text-muted mb-16 text-sm">Ajoutez une condition (optionnel) :</p> | Unknown directive |
| 1701 | <div id="wfPreview2" class="mb-16" aria-live="polite"></div> | Syntax not understood |
| 1702 | <div class="form-group"> | Syntax not understood |
| 1703 | <label for="wfConditionSelect">Condition</label> | Syntax not understood |
| 1704 | <select id="wfConditionSelect" class="filter-select" aria-label="Condition de déclenchement"></select> | Syntax not understood |
| 1705 | </div> | Syntax not understood |
| 1706 | <details id="wfAdvCond" class="mt-8"><summary>➕ Conditions supplémentaires (facultatif)</summary> | Syntax not understood |
| 1707 | <p class="text-muted text-sm mt-8">Toutes les conditions doivent être vraies pour que la règle se déclenche.</p> | Syntax not understood |
| 1708 | <div id="wfCondList"></div> | Syntax not understood |
| 1709 | <button class="btn-secondary" type="button" data-action="wfAddCond">+ Ajouter une condition</button> | Syntax not understood |
| 1710 | </details> | Syntax not understood |
| 1711 | </div> | Syntax not understood |
| 1712 | <div id="wfPanel3" class="hidden"> | Syntax not understood |
| 1713 | <p class="text-muted mb-16 text-sm">Que doit-il se passer ?</p> | Syntax not understood |
| 1714 | <div id="wfPreview3" class="mb-16" aria-live="polite"></div> | Syntax not understood |
| 1715 | <div class="wf-choices" id="wfActionList" role="group" aria-label="Choix de l'action"></div> | Syntax not understood |
| 1716 | <div id="wfActionParams"></div> | Syntax not understood |
| 1717 | <details id="wfAdvActions" class="mt-8"><summary>➕ Actions supplémentaires (facultatif)</summary> | Syntax not understood |
| 1718 | <p class="text-muted text-sm mt-8">Exécutées juste après l'action principale, dans l'ordre (3 au maximum).</p> | Syntax not understood |
| 1719 | <div id="wfExtraList"></div> | Syntax not understood |
| 1720 | <button class="btn-secondary" type="button" data-action="wfAddExtra">+ Ajouter une action</button> | Syntax not understood |
| 1721 | </details> | Syntax not understood |
| 1722 | </div> | Syntax not understood |
| 1723 | <div class="modal-buttons"> | Syntax not understood |
| 1724 | <button class="btn-secondary wf-cancel-btn" id="wfBtnCancel" type="button">Annuler</button> | Syntax not understood |
| 1725 | <button class="btn-secondary wf-back-btn" id="wfBtnBack" type="button">◀ Retour</button> | Syntax not understood |
| 1726 | <div class="flex-1"></div> | Syntax not understood |
| 1727 | <button class="btn-add" id="wfBtnNext" type="button">Continuer ▶</button> | Syntax not understood |
| 1728 | <button class="btn-add wf-save-btn" id="wfBtnSave" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>Activer la règle</button> | Syntax not understood |
| 1729 | </div> | Syntax not understood |
| 1730 | </div> | Syntax not understood |
| 1731 | </div> | Syntax not understood |
| 1732 | <div id="wfJournalModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="wfJournalModalTitle"> | Syntax not understood |
| 1733 | <div class="modal-content"> | Syntax not understood |
| 1734 | <h3 id="wfJournalModalTitle"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1" ry="1"/></svg>Journal de la règle</h3> | Syntax not understood |
| 1735 | <p class="text-muted mb-16 text-sm">Les 100 derniers déclenchements de cette règle, les plus récents en premier.</p> | Syntax not understood |
| 1736 | <div id="wfJournalBody"></div> | Syntax not understood |
| 1737 | <div class="modal-buttons"> | Syntax not understood |
| 1738 | <button class="btn-secondary" type="button" data-action="closeModal" data-id="wfJournalModal">Fermer</button> | Syntax not understood |
| 1739 | </div> | Syntax not understood |
| 1740 | </div> | Syntax not understood |
| 1741 | </div> | Syntax not understood |
| 1742 | <div id="branchModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="branchModalTitle"> | Syntax not understood |
| 1743 | <div class="modal-content"> | Syntax not understood |
| 1744 | <h3 id="branchModalTitle"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="18" r="3"/><circle cx="6" cy="6" r="3"/><path d="M6 21V9a9 9 0 0 0 9 9"/></svg>Branchement conditionnel</h3> | Syntax not understood |
| 1745 | <p class="text-muted mb-16 text-sm" id="branchModalSubtitle"></p> | Syntax not understood |
| 1746 | <div id="branchRulesList" class="mb-16"></div> | Syntax not understood |
| 1747 | <button class="btn-secondary mb-16" type="button" data-action="branchAddRule">+ Ajouter une règle</button> | Syntax not understood |
| 1748 | <div class="modal-buttons"> | Syntax not understood |
| 1749 | <button class="btn-secondary" type="button" data-action="closeBranchModal">Annuler</button> | Syntax not understood |
| 1750 | <div class="flex-1"></div> | Syntax not understood |
| 1751 | <button class="btn-add" type="button" data-action="saveBranchRules"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z"/><polyline points="17 21 17 13 7 13 7 21"/><polyline points="7 3 7 8 15 8"/></svg>Enregistrer</button> | Syntax not understood |
| 1752 | </div> | Syntax not understood |
| 1753 | </div> | Syntax not understood |
| 1754 | </div> | Syntax not understood |
| 1755 | <div id="columnsConfigModal" class="crm-modal" role="dialog" aria-modal="true" aria-labelledby="columnsConfigTitle"> | Syntax not understood |
| 1756 | <div class="modal-content"> | Syntax not understood |
| 1757 | <h3 id="columnsConfigTitle">Configurer les colonnes</h3> | Syntax not understood |
| 1758 | <p class="text-muted mb-16 text-sm">Cochez les colonnes à afficher. Nom et Entreprise sont toujours visibles.</p> | Syntax not understood |
| 1759 | <div id="columnsConfigList" role="group" aria-label="Colonnes disponibles"></div> | Syntax not understood |
| 1760 | <div class="modal-buttons"> | Syntax not understood |
| 1761 | <button class="btn-add" id="applyColumnsConfigBtn" type="button"><svg class="ui-icon" aria-hidden="true" focusable="false" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>Appliquer</button> | Syntax not understood |
| 1762 | <button class="btn-secondary" id="closeColumnsConfigBtn" type="button">Fermer</button> | Syntax not understood |
| 1763 | </div> | Syntax not understood |
| 1764 | </div> | Syntax not understood |
| 1765 | </div> | Syntax not understood |
| 1766 | <script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js" integrity="sha384-e6nUZLBkQ86NJ6TVVKAeSaK8jWa3NhkYWZFomE39AvDbQWeie9PlQqM3pmYW5d1g" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | Unknown directive |
| 1767 | <script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js" integrity="sha384-vtjasyidUo0kW94K5MXDXntzOJpQgBKXmE7e2Ga4LG0skTTLeBi97eFAXsqewJjw" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | Unknown directive |
| 1768 | <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js" integrity="sha384-JcnsjUPPylna1s1fvi1u12X5qjY5OL56iySh75FdtrwhO/SWXgMjoVqcKyIIWOLk" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | Unknown directive |
| 1769 | <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.8.2/jspdf.plugin.autotable.min.js" integrity="sha384-fCAW/rDWORTbQXSiB7mOg0QtQ5c+r0f544y6XoKjuVva0nMBlCpNUjiFeG5iMdS3" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | Unknown directive |
| 1770 | <script src="script.js?v=14"></script> | Syntax not understood |
| 1771 | <script src="events.js"></script> | Syntax not understood |
| 1772 | <div id="otpOverlay" class="hidden otp-overlay"> | Syntax not understood |
| 1773 | <div class="otp-box"> | Syntax not understood |
| 1774 | <h2 class="otp-title">🔐 Vérification requise</h2> | Syntax not understood |
| 1775 | <p class="otp-subtitle">Entrez le code à 6 chiffres envoyé à votre adresse email.</p> | Syntax not understood |
| 1776 | <input type="text" id="otpCode" maxlength="6" placeholder="000000" class="otp-input"> | Syntax not understood |
| 1777 | <button data-action="submitOTP" class="btn-add otp-btn-full">Vérifier</button> | Syntax not understood |
| 1778 | <button data-action="closeOtpOverlay" class="btn-secondary otp-btn-full">Annuler</button> | Syntax not understood |
| 1779 | </div> | Syntax not understood |
| 1780 | </div> | Syntax not understood |
| 1781 | </body> | Syntax not understood |
| 1782 | </html> | Syntax not understood |
To appear in search results, crawlers need access to your app.