Skip to content
https://app.exonore.fr

Lighthouse Desktop

· 0 checks — Desktop Lighthouse audit -- Performance, Accessibility, Best Practices, and SEO category breakdown.
SCORE
0
GRADE
FIX
0
REVIEW
0
PASS
0
INFO
0

Detailed Report

Audit breakdown by category with detailed findings.

99

Performance

Insights

Remove large, duplicate JavaScript modules from bundles to reduce unnecessary bytes consumed by network activity.

Why this matters

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

Why this matters

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.

Why this matters

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.

Why this matters

Performance issues directly impact user engagement and conversion rates.

description: [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints help the browser establish a connection earlier in the page load, saving time when the first request for that origin is made. The following are the origins that the page preconnected to.
title: Preconnected origins
value: no origins were preconnected
description: Add [preconnect](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/) hints to your most important origins, but try to use no more than 4.
title: Preconnect candidates
value: No additional origins are good candidates for preconnecting

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.

Why this matters

Performance issues directly impact user engagement and conversion rates.

URLTransfer SizeDuration
app.exonore.fr/style.css?v=1120.5 KiB83 ms

A long cache lifetime can speed up repeat visits to your page. Learn more about caching.

Why this matters

Performance issues directly impact user engagement and conversion rates.

RequestCache TTLTransfer Size
/cdn-cgi/challenge-platform/h/g/ci/a494c8a58f6e9e54/17917...0.0 ms4.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.

Why this matters

Performance issues directly impact user engagement and conversion rates.

Minifying CSS files can reduce network payload sizes. Learn how to minify CSS.

Why this matters

Performance issues directly impact user engagement and conversion rates.

Estimated savings: 0.0 ms 2.7 KiB
URLTransfer SizeEst Savings
app.exonore.fr/style.css?v=1120.5 KiB2.7 KiB

Minifying JavaScript files can reduce payload sizes and script parse time. Learn how to minify JavaScript.

Why this matters

Performance issues directly impact user engagement and conversion rates.

Estimated savings: 0.0 ms 15.1 KiB
URLTransfer SizeEst Savings
app.exonore.fr/script.js?v=14138.3 KiB15.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.

Why this matters

Performance issues directly impact user engagement and conversion rates.

Estimated savings: 0.0 ms 18.2 KiB
URLTransfer SizeEst Savings
app.exonore.fr/style.css?v=1119.5 KiB18.2 KiB

More information about the performance of your application. These numbers don't directly affect the Performance score.

●Time to Interactive 1.6 s
●Layout shift culprits
●Document request latency
●Optimize DOM size
●Font display
●Forced reflow
●Improve image delivery
●LCP breakdown
●Modern HTTP
●Optimize viewport for mobile
●Max Potential First Input Delay 60 ms
●Avoids enormous network payloads Total size was 2,468 KiB
●JavaScript execution time 0.1 s
●Minimizes main-thread work 0.3 s
●Avoid long main-thread tasks 1 long task found
●Avoid non-composited animations 2 animated elements found
●Image elements have explicit `width` and `height`
●Page didn't prevent back/forward cache restoration
●Network Requests
●Network Round Trip Times 20 ms
●Server Backend Latencies 20 ms
●Tasks
●Diagnostics
●Metrics
●Screenshot Thumbnails
●Final Screenshot
●Script Treemap Data
●Resources Summary
●Avoid multiple page redirects
●Initial server response time was short Root document took 140 ms
●Avoid large layout shifts 2 layout shifts found
○INP breakdown
○LCP request discovery
○User Timing marks and measures
100

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.

○Interactive controls are keyboard focusable
○Interactive elements indicate their purpose and state
○The page has a logical tab order
○Visual order on the page follows DOM order
○User focus is not accidentally trapped in a region
○The user's focus is directed to new content added to the page
○HTML5 landmark elements are used to improve navigation
○Offscreen content is hidden from assistive technology
○Custom controls have associated labels
○Custom controls have ARIA roles
●`[aria-*]` attributes match their roles
●`[aria-hidden="true"]` is not present on the document `<body>`
●`[role]`s have all required `[aria-*]` attributes
●`[role]` values are valid
●`[aria-*]` attributes have valid values
●`[aria-*]` attributes are valid and not misspelled
●Buttons have an accessible name
●Form elements have associated labels
●`[user-scalable="no"]` is not used in the `<meta name="viewport">` element and the `[maximum-scale]` attribute is not less than 5.
●`button`, `link`, and `menuitem` elements have accessible names
●ARIA attributes are used as specified for the element's role
●`[aria-hidden="true"]` elements do not contain focusable descendents
●Elements use only permitted ARIA attributes
●Background and foreground colors have a sufficient contrast ratio
●Document has a `<title>` element
●`<html>` element has a `[lang]` attribute
●`<html>` element has a valid value for its `[lang]` attribute
●No element has a `[tabindex]` value greater than 0
●Touch targets have sufficient size and spacing.
●Heading elements appear in a sequentially-descending order
●Document has a main landmark.
●Deprecated ARIA roles were not used
●Uses ARIA roles only on compatible elements
○`[accesskey]` values are unique
○Elements with `role="dialog"` or `role="alertdialog"` have accessible names.
○ARIA input fields have accessible names
○ARIA `meter` elements have accessible names
○ARIA `progressbar` elements have accessible names
○Elements with an ARIA `[role]` that require children to contain a specific `[role]` have all required children.
○`[role]`s are contained by their required parent element
○Elements with the `role=text` attribute do not have focusable descendents.
○ARIA toggle fields have accessible names
○ARIA `tooltip` elements have accessible names
○ARIA `treeitem` elements have accessible names
○The page contains a heading, skip link, or landmark region
○`<dl>`'s contain only properly-ordered `<dt>` and `<dd>` groups, `<script>`, `<template>` or `<div>` elements.
○Definition list items are wrapped in `<dl>` elements
○ARIA IDs are unique
○No form fields have multiple labels
○`<frame>` or `<iframe>` elements have a title
○`<html>` element has an `[xml:lang]` attribute with the same base language as the `[lang]` attribute.
○Image elements have `[alt]` attributes
○Input buttons have discernible text.
○`<input type="image">` elements have `[alt]` text
○Links are distinguishable without relying on color.
○Links have a discernible name
○Lists contain only `<li>` elements and script supporting elements (`<script>` and `<template>`).
○List items (`<li>`) are contained within `<ul>`, `<ol>` or `<menu>` parent elements
○The document does not use `<meta http-equiv="refresh">`
○`<object>` elements have alternate text
○Select elements have associated label elements.
○Skip links are focusable.
○Cells in a `<table>` element that use the `[headers]` attribute refer to table cells within the same table.
○`<th>` elements and elements with `[role="columnheader"/"rowheader"]` have data cells they describe.
○`[lang]` attributes have a valid value
○`<video>` elements contain a `<track>` element with `[kind="captions"]`
○Tables have different content in the summary attribute and `<caption>`.
○All heading elements contain content.
○Image elements do not have `[alt]` attributes that are redundant text.
○Identical links have the same purpose.
○Elements with visible text labels have matching accessible names.
○Tables use `<caption>` instead of cells with the `[colspan]` attribute to indicate a caption.
○`<td>` elements in a large `<table>` have one or more table headers.
100

Best Practices

●Uses HTTPS
●Avoids deprecated APIs
●Avoids third-party cookies
●Allows users to paste into input fields
●Avoids requesting the geolocation permission on page load
●Avoids requesting the notification permission on page load
●Displays images with correct aspect ratio
●Serves images with appropriate resolution
●Page has the HTML doctype
●Properly defines charset
●No browser errors logged to the console
●No issues in the `Issues` panel in Chrome Devtools
●Ensure CSP is effective against XSS attacks
●Mitigate DOM-based XSS with Trusted Types
●Page has valid source maps
○Redirects HTTP traffic to HTTPS
○Use a strong HSTS policy
○Ensure proper origin isolation with COOP
○Mitigate clickjacking with XFO or CSP
○Detected JavaScript libraries
54

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.

Why this matters

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.

Why this matters

Performance issues directly impact user engagement and conversion rates.

Line #ContentError
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 &amp; 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 &mdash; 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 &mdash; 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 &euro;</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 &euro;</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 &amp; 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
573Résumé quotidien d'activité, chaque matinSyntax 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&nbsp;% 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
695Seuil 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
704Mentions 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 &mdash; 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
777Envoyer automatiquement le lien de paiement à l'acceptation du devisSyntax 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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; 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 luiSyntax not understood
858transmettre automatiquement vos factures sans ressaisie de votre part. ContactezSyntax not understood
859votre comptable pour qu'il autorise cette connexion et vous transmette la cléSyntax not understood
860correspondante.Syntax not understood
861</p>Syntax not understood
862<div class="form-group">Syntax not understood
863<label for="pennylaneApiKey">Syntax not understood
864Clé API PennylaneSyntax 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 &amp; 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
912Connectez votre CRM à votre Plateforme Agréée pour transmettre vos factures électroniques.Syntax not understood
913Obligatoire 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
924Endpoint API de la PASyntax 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 &mdash; 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">&lt;script src="https://chat.exonore.fr/embed.js"Unknown directive
981data-company-id="<span id="chatbotCompanyId">chargement...</span>" async&gt;&lt;/script&gt;</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 &lt;/body&gt; 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
1012Chatbot actifSyntax 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 &amp; 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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; 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 &mdash; Devis &amp; 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
1095Depuis 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
1106Dé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
1119Purger automatiquement les prospects/contacts inactifs après cette duréeSyntax 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 &amp; 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 &amp; 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 &amp; 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 &euro;</span></div>Syntax not understood
1454<div class="devis-total-row"><span>TVA</span><span id="devisTotalTVA">0,00 &euro;</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 &euro;</span></div>Syntax not understood
1456<div class="devis-total-row"><span>Total TTC</span><span id="devisTotalTTC">0,00 &euro;</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 TVAUnknown 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}},&#10;&#10;...&#10;&#10;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">&#128272; 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.

○Structured data is valid
●Document has a `<title>` element
●Document has a meta description
●Page has successful HTTP status code
●Links have descriptive text
●Links are crawlable
●Document has a valid `hreflang`
○Image elements have `[alt]` attributes
○Document has a valid `rel=canonical`

Send Feedback