<!-- ========================================================================= Bob! Desk — Hero „Starten Sie Ihren CMMS-Software-Test“ In EIN Divi-Code-Modul einfügen (volle Breite, Abschnitt ohne Padding). Autark: keine externen Assets, keine JS-Abhängigkeit. ========================================================================= -->
stroke-linecap="round" stroke-linejoin="round">

Kostenlose Kontoerstellung

Testen Sie sofort unverbindlich

  • Sofortiger Zugriff auf alle Funktionen
  • 100 % kostenloser Test, ohne Kreditkarte
  • Reaktionsschneller Kundensupport während des Tests inklusive
5,0★★★★★ Google-Bewertungen
4,7★★★★★ Capterra-Bewertungen
4,7★★★★★ GetApp-Bewertungen
4,8★★★★★ Appvizer-Bewertungen
1/8
Testkonto — Konfiguration

Wir richten Ihren Testbereich mit passenden Daten ein. Starten wir mit dem Wesentlichen.

Bitte geben Sie den Kontotyp an.
In welcher Branche sind Sie tätig?

Wir passen Ihren Bereich und Ihre Module entsprechend an.

Bitte geben Sie Ihre Tätigkeit an.
Bitte treffen Sie eine Auswahl.
Wie viele Standorte verwalten Sie?

Filialen, Gebäude, Niederlassungen, Lager … Wir dimensionieren Ihren Bereich entsprechend.

Bitte geben Sie eine Anzahl an Standorten an.
Welche Module möchten Sie aktivieren?

Wählen Sie aus, was Sie interessiert. Wir aktivieren diese Module in Ihrem Testbereich. Sie können später alles ändern.

💡 Kein Stress
Sie können diese Funktionen jederzeit später aktivieren.
Bitte wählen Sie mindestens ein Modul aus.
Möchten Sie Ihr Team einladen?

Eine CMMS-Software entfaltet ihren vollen Nutzen im Team. Laden Sie Ihre Techniker oder Verantwortlichen ein (optional).

Wie möchten Sie starten?

Wählen Sie das Begleitniveau, das zu Ihnen passt, um gut zu starten.

Frist auswählen … So schnell wie möglich Innerhalb von 1 Woche Innerhalb von 2 Wochen Innerhalb von 1 Monat Später festlegen
Bitte wählen Sie eine Frist.
Bitte wählen Sie eine Option.
Letzte Prüfung vor dem Start

Ein letzter Blick, bevor Sie Ihren Bereich erstellen.

Nur noch ein Schritt — erstellen wir Ihr Konto 🚀

Fast geschafft! Geben Sie Ihre Kontaktdaten an, um Ihre Zugangsdaten zu erhalten.

Bitte geben Sie den Namen Ihres Unternehmens an.
Bitte geben Sie Ihren Vornamen an.
Bitte geben Sie Ihren Nachnamen an.
Bitte geben Sie eine gültige E-Mail-Adresse an.
Bitte aktivieren Sie dieses Kästchen, um fortzufahren.

Los geht’s, Sie sind dran! 🎉

Ihr Bob! Desk-Testbereich wird gerade mit Ihren Daten vorbereitet. Sie erhalten Ihre Zugangsdaten in wenigen Minuten per E-Mail.

🔒 Unverbindlich · Ohne Kreditkarte · in 2 Min. startklar
/* ============================ 1. TOKENS ============================ */ #bd-trial{ --bd-ink:#0B0E24; --bd-ink-2:#0D1230; /* fond carte */ --bd-field:#141A3A; /* fond champ */ --bd-line:rgba(255,255,255,.12); --bd-accent:#F5842C; --bd-accent-hi:#F8A366; --bd-text:#FFFFFF; --bd-text-2:#E7E9EF; --bd-text-3:#8890AC; --bd-placeholder:#7C86A8; --bd-error:#EF4444; --bd-radius:10px; --bd-radius-lg:20px; /* Police du site. Pour retrouver la maquette : remplacer par 'Geist','Inter' */ --bd-font:'Plus Jakarta Sans','Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; } /* ============ 2. NEUTRALISATION DES CONTENEURS DIVI ============ */ /* Le bloc doit aller bord à bord : on annule les paddings/largeurs parents. */ .et_pb_section:has(#bd-trial), .et_pb_row:has(#bd-trial), .et_pb_column:has(#bd-trial), .et_pb_module:has(#bd-trial), .et_pb_code_inner:has(#bd-trial){ padding:0 !important; margin:0 !important; width:100% !important; max-width:100% !important; } .et_pb_row:has(#bd-trial){ display:block !important; } /* ============================ 3. SECTION ============================ */ #bd-trial{ position:relative; isolation:isolate; overflow:hidden; box-sizing:border-box; margin:clamp(6px,1.5vw,14px) auto clamp(20px,4vw,48px); max-width:1400px; border-radius:28px; border:1px solid rgba(255,255,255,.08); box-shadow:0 40px 90px -30px rgba(0,0,0,.65); padding:clamp(18px,2.5vw,28px) clamp(20px,5vw,72px) clamp(40px,6vw,64px); font-family:var(--bd-font); color:var(--bd-text-2); background: radial-gradient(800px 600px at 95% 100%, rgba(245,132,44,.16), transparent 65%), radial-gradient(1200px 600px at 15% 10%,#2A3670 0%,#161D42 55%,#0F1430 100%); } #bd-trial .bd-trial__copy{ align-self:start; } /* grille de fond */ #bd-trial *,#bd-trial *::before,#bd-trial *::after{ box-sizing:border-box; } #bd-trial p{ margin:0; } #bd-trial a{ color:var(--bd-accent); } #bd-trial a:hover{ color:var(--bd-accent-hi); } #bd-trial .bd-trial__grid{ position:relative; display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(32px,4vw,56px); align-items:center; max-width:1440px; margin-inline:auto; } /* ========================= 4. COLONNE GAUCHE ========================= */ #bd-trial .bd-trial__copy{ display:flex; flex-direction:column; gap:clamp(18px,2.2vw,28px); } #bd-trial .bd-trial__badge{ display:inline-flex; align-items:center; gap:7px; width:fit-content; white-space:nowrap; border:1px solid var(--bd-accent); border-radius:999px; padding:5px 12px; font-weight:700; font-size:14px; letter-spacing:.05em; text-transform:uppercase; color:var(--bd-accent); } #bd-trial .bd-trial__dot{ flex:none; width:8px; height:8px; border-radius:999px; background:var(--bd-accent); box-shadow:0 0 0 5px rgba(245,132,44,.14); } #bd-trial .bd-trial__h1{ margin:0; font-family:var(--bd-font); font-weight:800; font-size:clamp(30px,4.6vw,52px); line-height:1.1; letter-spacing:-.01em; color:var(--bd-text); } #bd-trial .bd-trial__lead{ font-size:clamp(17px,1.7vw,20px); line-height:1.4; color:var(--bd-text); } #bd-trial .bd-trial__lead strong{ font-weight:700; color:var(--bd-text); } #bd-trial .bd-trial__intro{ max-width:520px; font-size:clamp(15px,1.4vw,18px); line-height:1.6; color:var(--bd-text); } #bd-trial .bd-trial__list{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:16px; } #bd-trial .bd-trial__list li{ display:flex; align-items:center; gap:14px; margin:0; font-size:15px; line-height:1.45; color:var(--bd-text-2); } #bd-trial .bd-trial__tick{ flex:none; width:24px; height:24px; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; background:var(--bd-accent); color:var(--bd-ink); } #bd-trial .bd-trial__tick svg{ width:13px; height:10px; display:block; } #bd-trial .bd-trial__proof{ display:flex; align-items:center; flex-wrap:wrap; gap:clamp(10px,3vw,18px); margin-top:4px; } #bd-trial .bd-review-badge{ display:inline-flex; align-items:center; gap:9px; padding:8px 14px; border-radius:999px; background:rgba(255,255,255,0.04); border:1px solid rgba(255,255,255,0.1); } #bd-trial .bd-review-badge-logo{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; flex:0 0 20px; overflow:hidden; } #bd-trial .bd-review-badge-logo svg{ width:20px; height:20px; display:block; } #bd-trial .bd-review-badge-text{ display:flex; flex-direction:column; line-height:1.25; } #bd-trial .bd-review-badge-score{ display:flex; align-items:baseline; gap:5px; } #bd-trial .bd-review-badge-score strong{ color:var(--bd-text); font-size:14px; font-weight:700; } #bd-trial .bd-review-badge-stars{ color:var(--bd-accent); font-size:11px; letter-spacing:1px; } #bd-trial .bd-review-badge-count{ color:var(--bd-text-3); font-size:12px; } @media (max-width:600px){ #bd-trial .bd-review-badge{ padding:7px 12px; } } /* ========================= 5. CARTE FORMULAIRE ========================= */ #bd-trial .bd-trial__card{ background:#0a0d24; border:1px solid rgba(255,255,255,.18); border-radius:var(--bd-radius-lg); box-shadow:0 24px 60px rgba(0,0,0,.5); padding:clamp(24px,3vw,40px); } /* ---------- 5b. Habillage du formulaire HubSpot ---------- Couvre le rendu « nouvel éditeur » (.hsfc-*) ET l'ancien (.hs-*). `!important` nécessaire : HubSpot injecte ses styles après le CSS de la page. */ /* conteneurs */ #bd-trial .bd-trial__form, #bd-trial .hs-form-frame, #bd-trial .hsfc-Form, #bd-trial .hsfc-Step, #bd-trial .hsfc-Step__Content{ background:transparent !important; border:0 !important; padding:0 !important; margin:0 !important; max-width:none !important; font-family:var(--bd-font) !important; } #bd-trial .hsfc-Step__Content > *:not(:last-child), #bd-trial .hsfc-FieldGroup{ margin-bottom:0 !important; } #bd-trial .hsfc-Step__Content{ display:flex !important; flex-direction:column !important; gap:18px !important; } #bd-trial .hs-form fieldset{ max-width:none !important; } /* libellés */ #bd-trial .hsfc-FieldLabel, #bd-trial .hsfc-Label, #bd-trial .hsfc-Form label, #bd-trial .hs-form-field > label{ display:block !important; margin:0 0 8px !important; font-family:var(--bd-font) !important; font-size:14px !important; font-weight:500 !important; color:var(--bd-text-2) !important; } #bd-trial .hsfc-FieldLabel__Required, #bd-trial .hs-form-required{ color:var(--bd-error) !important; } /* champs de saisie */ #bd-trial .hsfc-TextInput, #bd-trial .hsfc-TextareaInput, #bd-trial .hsfc-DropdownInput, #bd-trial .hsfc-PhoneInput, #bd-trial .hsfc-PhoneInput__PhoneNumber, #bd-trial .hsfc-DropdownOptions, #bd-trial .hs-input, #bd-trial input[type=text], #bd-trial input[type=email], #bd-trial input[type=tel], #bd-trial select, #bd-trial textarea{ width:100% !important; background:var(--bd-field) !important; border:1px solid var(--bd-line) !important; border-radius:var(--bd-radius) !important; padding:14px 16px !important; color:var(--bd-text) !important; font-family:var(--bd-font) !important; font-size:15px !important; line-height:1.35 !important; box-shadow:none !important; -webkit-appearance:none; appearance:none; transition:border-color .18s ease, box-shadow .18s ease; } #bd-trial textarea,#bd-trial .hsfc-TextareaInput{ min-height:110px !important; resize:vertical !important; } /* le sélecteur d'indicatif du champ téléphone est imbriqué : on l'aplatit */ #bd-trial .hsfc-PhoneInput{ display:flex !important; align-items:center !important; gap:10px !important; padding:8px 12px !important; } #bd-trial .hsfc-PhoneInput input, #bd-trial .hsfc-PhoneInput__PhoneNumber{ background:transparent !important; border:0 !important; padding:6px 4px !important; flex:1 1 auto !important; } #bd-trial .hsfc-PhoneInput select, #bd-trial .hsfc-PhoneInput__CountryCode{ background:transparent !important; border:0 !important; width:auto !important; padding:6px 4px !important; color:var(--bd-text-3) !important; flex:0 0 auto !important; } /* placeholders + focus */ #bd-trial ::placeholder{ color:var(--bd-placeholder) !important; opacity:1; } #bd-trial .hsfc-TextInput:focus, #bd-trial .hsfc-DropdownInput:focus, #bd-trial .hsfc-PhoneInput:focus-within, #bd-trial .hs-input:focus, #bd-trial input:focus,#bd-trial select:focus,#bd-trial textarea:focus{ outline:none !important; border-color:var(--bd-accent) !important; box-shadow:0 0 0 3px rgba(245,132,44,.22) !important; } /* option list du select natif : le fond système reste sombre lisible */ #bd-trial select option{ background:var(--bd-field); color:var(--bd-text); } /* cases à cocher / consentement */ #bd-trial .hsfc-CheckboxFieldGroup__Label, #bd-trial .hsfc-BooleanCheckbox, #bd-trial .legal-consent-container, #bd-trial .hs-richtext, #bd-trial .hsfc-RichText{ font-size:13px !important; line-height:1.5 !important; color:var(--bd-text-3) !important; } #bd-trial input[type=checkbox],#bd-trial input[type=radio]{ width:auto !important; accent-color:var(--bd-accent); margin-right:8px !important; } #bd-trial .form-columns-2, #bd-trial .hsfc-Row{ display:flex !important; flex-direction:column !important; gap:18px !important; } #bd-trial .form-columns-2 .hs-form-field, #bd-trial .hsfc-Row .hsfc-FieldGroup{ width:100% !important; } /* bouton */ #bd-trial .hsfc-Button, #bd-trial .hs-button, #bd-trial input[type=submit]{ width:100% !important; margin-top:4px !important; background:var(--bd-text) !important; color:var(--bd-ink) !important; border:none !important; border-radius:var(--bd-radius) !important; padding:16px 20px !important; font-family:var(--bd-font) !important; font-size:15px !important; font-weight:700 !important; letter-spacing:0; text-transform:none !important; cursor:pointer; transition:transform .16s ease, background .16s ease, box-shadow .16s ease; } #bd-trial .hsfc-Button:hover, #bd-trial .hs-button:hover, #bd-trial input[type=submit]:hover{ background:var(--bd-accent) !important; color:var(--bd-ink) !important; box-shadow:0 10px 24px -10px rgba(245,132,44,.65) !important; } #bd-trial .hsfc-Button:active{ transform:translateY(1px); } #bd-trial .hsfc-NavigationRow{ padding:0 !important; margin:0 !important; } /* erreurs + message de confirmation */ #bd-trial .hsfc-ErrorAlert, #bd-trial .hs-error-msg, #bd-trial .hs-error-msgs label{ color:#FCA5A5 !important; font-size:13px !important; margin-top:6px !important; } #bd-trial .submitted-message, #bd-trial .hsfc-DoneMessage, #bd-trial .hsfc-ConfirmationMessage{ color:var(--bd-text) !important; font-size:16px !important; line-height:1.6 !important; } /* ========================= 6. RESPONSIVE ========================= */ @media (max-width:1100px){ #bd-trial .bd-trial__grid{ grid-template-columns:1fr; align-items:stretch; } #bd-trial .bd-trial__intro{ max-width:none; } } @media (max-width:980px){ /* le formulaire remonte au-dessus des preuves sociales sur tablette/mobile */ #bd-trial .bd-trial__copy{ order:1; } #bd-trial .bd-trial__card{ order:2; } } @media (max-width:600px){ #bd-trial{ padding:32px 18px 40px; } #bd-trial .bd-trial__badge{ font-size:11px; padding:8px 16px; } #bd-trial .bd-trial__list li{ align-items:flex-start; font-size:14.5px; } #bd-trial .bd-trial__tick{ margin-top:1px; } #bd-trial .bd-trial__proof{ gap:18px; } #bd-trial .bd-trial__plat{ font-size:16px; } #bd-trial .bd-trial__plat--it{ font-size:17px; } #bd-trial .bd-trial__card{ border-radius:16px; } /* évite le zoom auto iOS sur focus */ #bd-trial .hsfc-TextInput,#bd-trial .hs-input, #bd-trial input[type=text],#bd-trial input[type=email], #bd-trial input[type=tel],#bd-trial select,#bd-trial textarea{ font-size:16px !important; } } /* ========================= 7. QUALITÉ ========================= */ #bd-trial :focus-visible{ outline:2px solid var(--bd-accent); outline-offset:2px; } #bd-trial .bd-trial__copy, #bd-trial .bd-trial__card{ animation:bd-reveal .6s cubic-bezier(.22,.61,.36,1) both; } #bd-trial .bd-trial__card{ animation-delay:.12s; } @keyframes bd-reveal{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } } @media (prefers-reduced-motion:reduce){ #bd-trial .bd-trial__copy,#bd-trial .bd-trial__card{ animation:none !important; } #bd-trial *{ transition:none !important; } } #bdForm{ /* >>> COULEUR DE MARQUE : remplacez par votre hex exact si besoin <<< */ --brand:#1466F0; --brand-dark:#0F4FBE; --brand-soft:#E9F1FE; --ink:#0A0F26; --muted:#5B6B7F; --line:#E2E8F0; --bg:#F5F8FC; --card:#FFFFFF; --accent:#F5A623; --ok:#16A34A; --danger:#DC2626; --radius:18px; --shadow:0 10px 40px rgba(15,40,80,.10); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; }#bdForm *{box-sizing:border-box}@property --angle{syntax:'';inherits:false;initial-value:0deg} #bdForm /* Fond transparent : la carte "flotte" par-dessus le bandeau sombre de la page. Le formulaire prend 100% de la largeur du bloc dans lequel vous le collez. */ .bd-wrap{ position:relative; background:transparent; color:var(--ink); padding:18px; min-height:0; display:flex; justify-content:center; align-items:center; line-height:1.5; } #bdForm .bd-frame{position:relative;width:100%;max-width:560px;padding:2px;border-radius:var(--radius);overflow:visible;background:var(--line)} #bdForm .bd-card{ position:relative; z-index:1; width:100%; background:var(--card); border-radius:calc(var(--radius) - 2px); box-shadow:0 20px 50px rgba(15,40,80,.16); overflow:hidden; } #bdForm /* ---------- Header / progress ---------- */ .bd-head{padding:22px 28px 0} #bdForm .bd-headrow{display:flex;align-items:center;gap:18px} #bdForm .bd-progwrap{flex:1 1 auto;max-width:190px;margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0} #bdForm .bd-stepmini{font-size:11px;font-weight:600;color:var(--muted);opacity:.7;white-space:nowrap} #bdForm .bd-lang{position:relative;flex:0 0 auto} #bdForm .bd-lang-trigger{display:flex;align-items:center;gap:6px;border:1.5px solid var(--line);background:#fff;color:var(--ink);font:inherit;font-size:12px;font-weight:700;padding:5px 9px;border-radius:9px;cursor:pointer;transition:.15s;line-height:1} #bdForm .bd-lang-trigger:hover{border-color:var(--brand);background:var(--brand-soft)} #bdForm .bd-flag{font-size:15px;line-height:1} #bdForm .bd-lang-car{transition:transform .18s;color:var(--muted)} #bdForm .bd-lang.open .bd-lang-car{transform:rotate(180deg)} #bdForm .bd-lang-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:150px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(2,25,47,.16);padding:5px;display:none;flex-direction:column;gap:1px} #bdForm .bd-lang.open .bd-lang-menu{display:flex} #bdForm .bd-lang-menu button{display:flex;align-items:center;gap:9px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:13px;font-weight:600;padding:8px 10px;border-radius:8px;cursor:pointer;text-align:left;transition:.12s;white-space:nowrap} #bdForm .bd-lang-menu button:hover{background:var(--brand-soft)} #bdForm .bd-lang-menu button.on{color:var(--brand);font-weight:800} #bdForm .bd-progress{flex:1;height:4px;background:var(--brand-soft);border-radius:999px;overflow:hidden} #bdForm .bd-progress span{position:relative;display:block;height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand-dark));border-radius:999px;transition:width .45s cubic-bezier(.4,0,.2,1);overflow:hidden} #bdForm .bd-progress span::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-100%);animation:shimmer 2s infinite} #bdForm /* ---------- Body ---------- */ .bd-body{padding:24px 28px 28px} #bdForm .bd-step{display:none;animation:fade .4s ease} #bdForm .bd-step.active{display:block} @keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}} #bdForm .bd-h{font-size:23px;font-weight:800;letter-spacing:-.02em;margin:4px 0 6px} #bdForm .bd-sub{color:var(--muted);font-size:15px;margin:0 0 20px} #bdForm /* ---------- Option grid (cards) ---------- */ .bd-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px} #bdForm .bd-grid.three{grid-template-columns:repeat(3,1fr)} @media(max-width:520px){#bdForm .bd-grid,#bdForm .bd-grid.three{grid-template-columns:1fr 1fr} } #bdForm .bd-opt{ position:relative;border:1.5px solid var(--line);border-radius:12px; padding:16px 14px;cursor:pointer;background:#fff;text-align:left; display:flex;flex-direction:column;gap:8px;transition:.18s;font:inherit;color:inherit; } #bdForm .bd-opt:hover{border-color:var(--brand);transform:translateY(-2px)} #bdForm .bd-opt .ic{width:30px;height:30px;color:var(--brand)} #bdForm .bd-opt .t{font-weight:700;font-size:14.5px} #bdForm .bd-opt .d{font-size:12.5px;color:var(--muted);line-height:1.35} #bdForm .bd-opt.sel{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px rgba(20,102,240,.12)} #bdForm .bd-opt .check{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;transform:scale(0);transition:transform .22s cubic-bezier(.34,1.56,.64,1)} #bdForm .bd-opt.sel .check{transform:scale(1)} #bdForm /* type de compte (grandes cartes) */ .bd-type.bd-toggle .bd-opt{flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:14px;padding:18px 16px} #bdForm .bd-type .bd-opt .ic{flex:0 0 auto;width:34px;height:34px} #bdForm .bd-type .txt{display:flex;flex-direction:column;gap:3px} #bdForm .bd-type .txt .t{font-size:15.5px} #bdForm .bd-type .txt .d{line-height:1.3} @media(max-width:520px){#bdForm .bd-type.bd-toggle{flex-direction:column} } #bdForm /* Étape modules : cartes compactes — petite icône à gauche,#bdForm titre + description à droite (gagne en hauteur) */ #bdModules .bd-opt{flex-direction:row;align-items:center;gap:11px;padding:11px 32px 11px 13px} #bdForm #bdModules .bd-opt .ic{width:22px;height:22px;flex:0 0 auto} #bdForm #bdModules .bd-opt .txt{display:flex;flex-direction:column;gap:1px;min-width:0} #bdForm #bdModules .bd-opt .t{font-size:14px} #bdForm #bdModules .bd-opt .d{font-size:11.5px;line-height:1.25} #bdForm #bdModules .bd-opt .check{top:50%;right:10px;transform:translateY(-50%) scale(0)} #bdForm #bdModules .bd-opt.sel .check{transform:translateY(-50%) scale(1)} #bdForm /* ---------- Fields ---------- */ .bd-field{margin-bottom:16px} #bdForm .bd-field label{display:block;font-weight:600;font-size:14px;margin-bottom:6px} #bdForm .bd-field .hint{font-weight:400;color:var(--muted);font-size:12.5px} #bdForm .bd-input{ width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:11px; font-size:15px;font-family:inherit;color:var(--ink);background:#fff;transition:.15s; } #bdForm .bd-input::placeholder{color:var(--muted)} #bdForm .bd-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(20,102,240,.14)} #bdForm .bd-input.err{border-color:var(--danger)} #bdForm .bd-errmsg{color:var(--danger);font-size:12.5px;margin-top:5px;display:none} #bdForm .bd-errmsg.show{display:block} #bdForm .bd-row{display:flex;gap:12px} #bdForm .bd-row .bd-field{flex:1} @media(max-width:520px){#bdForm .bd-row{flex-direction:column;gap:0} } #bdForm /* toggle choice (oui/non) */ .bd-toggle{display:flex;gap:12px} #bdForm .bd-toggle .bd-opt{flex:1;flex-direction:row;align-items:center;justify-content:center;text-align:center} #bdForm /* boutons oui/non : on laisse de la place au tick pour qu'il ne chevauche pas le texte */ .bd-toggle:not(.bd-type) .bd-opt{padding:15px 38px;min-height:54px} #bdForm .bd-toggle:not(.bd-type) .bd-opt .check{top:50%;right:12px;transform:translateY(-50%) scale(0)} #bdForm .bd-toggle:not(.bd-type) .bd-opt.sel .check{transform:translateY(-50%) scale(1)} #bdForm /* team emails */ .bd-team{display:none;margin-top:6px} #bdForm .bd-team.show{display:block} #bdForm .bd-teamrow{display:flex;gap:8px;margin-bottom:8px} #bdForm .bd-teamrow .bd-input{flex:1} #bdForm .bd-rm{border:1.5px solid var(--line);background:#fff;border-radius:11px;width:46px;cursor:pointer;color:var(--muted);font-size:18px} #bdForm .bd-rm:hover{border-color:var(--danger);color:var(--danger)} #bdForm .bd-add{background:none;border:none;color:var(--brand);font-weight:700;font-size:14px;cursor:pointer;padding:4px 0} #bdForm /* precision activité "autre" */ .bd-precise{display:none;margin-top:14px} #bdForm .bd-precise.show{display:block} #bdForm /* ---------- Recap ---------- */ .bd-recap{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:16px 18px} #bdForm .bd-recap .r{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:14px} #bdForm .bd-recap .r:last-child{border-bottom:none} #bdForm .bd-recap .r .k{color:var(--muted)} #bdForm .bd-recap .r .v{font-weight:600;text-align:right} #bdForm .bd-consent{display:flex;gap:10px;align-items:flex-start;margin-top:16px;font-size:12.5px;color:var(--muted)} #bdForm .bd-consent input{margin-top:2px} #bdForm /* ---------- Nav ---------- */ .bd-nav{display:flex;justify-content:space-between;gap:12px;margin-top:24px} #bdForm .bd-btn{ padding:13px 22px;border-radius:11px;font-weight:700;font-size:15px;cursor:pointer; border:1.5px solid var(--line);background:#fff;color:var(--ink);transition:.15s;font-family:inherit; } #bdForm .bd-btn:hover{background:var(--bg)} #bdForm .bd-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;margin-left:auto} #bdForm .bd-btn.primary:hover{background:var(--brand-dark);transform:translateY(-1px)} #bdForm .bd-btn:disabled{opacity:.5;cursor:not-allowed} #bdForm /* ---------- Success ---------- */ .bd-done{text-align:center;padding:20px 6px} #bdForm .bd-done .circle{width:78px;height:78px;border-radius:50%;background:var(--brand-soft);display:flex;align-items:center;justify-content:center;margin:0 auto 18px} #bdForm .bd-done .circle svg{width:40px;height:40px;color:var(--ok)} #bdForm .bd-done h2{font-size:24px;margin:0 0 8px;letter-spacing:-.02em} #bdForm .bd-done p{color:var(--muted);font-size:15px;max-width:420px;margin:0 auto} #bdForm .bd-note{margin-top:14px;background:var(--brand-soft);border-radius:11px;padding:12px 14px;font-size:13px;line-height:1.4;color:var(--muted);text-align:left} #bdForm .bd-note-h{display:flex;align-items:center;gap:7px;font-weight:700;color:var(--ink);margin-bottom:3px} #bdForm .bd-note-b{color:var(--muted)} #bdForm .bd-grid.one{grid-template-columns:1fr} #bdForm .bd-modsec-h{font-weight:800;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--brand);margin:20px 0 10px} #bdForm .bd-modsec-h:first-child{margin-top:2px} #bdForm .bd-badge{position:absolute;top:12px;right:42px;background:var(--accent);color:#0C1626;font-size:10px;font-weight:800;padding:3px 8px;border-radius:999px;letter-spacing:.03em;text-transform:uppercase} #bdForm .bd-delai{display:none;margin-top:12px} #bdForm .bd-delai.show{display:block} #bdForm .bd-delai-l{display:block;font-weight:600;font-size:14px;margin-bottom:6px;text-align:left} #bdForm .bd-foot{text-align:center;font-size:12px;color:var(--muted);padding:0 28px 20px} #bdForm .bd-foot a{color:var(--brand);text-decoration:none} #bdForm .bd-trust{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 14px;margin-bottom:9px} #bdForm .bd-trust span{color:var(--ink);font-size:12px;white-space:nowrap} #bdForm .bd-trust b{color:var(--ink)} #bdForm .bd-trust .stars{color:#F59E0B;letter-spacing:1px} #bdForm .bd-ticker{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:9px;min-height:18px} #bdForm .bd-ticker::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok);flex:0 0 auto;animation:pulseDot 1.8s infinite} #bdForm .bd-ticker-body{text-align:left;line-height:1.35} #bdForm .bd-ticker-h{font-weight:700;font-size:12.5px;color:var(--ink)} #bdForm .bd-ticker-d{font-size:12px;font-weight:700;color:var(--muted);transition:opacity .25s} @keyframes pulseDot{0%{box-shadow:0 0 0 0 rgba(22,163,74,.5)}70%{box-shadow:0 0 0 6px rgba(22,163,74,0)}100%{box-shadow:0 0 0 0 rgba(22,163,74,0)}} #bdForm .bd-confetti{position:absolute;top:-14px;width:8px;height:13px;border-radius:2px;opacity:.95;z-index:9;pointer-events:none;animation:confetti-fall 2.8s linear forwards} @keyframes confetti-fall{to{transform:translateY(580px) rotate(720deg);opacity:0}} @keyframes shimmer{to{transform:translateX(100%)}} #bdForm /* --- Animation de bordure : point lumineux (tête blanche + traînée #E63E52) sur canvas --- */ .bd-runner{position:absolute;inset:-12px;z-index:2;pointer-events:none} @media (prefers-reduced-motion: reduce){#bdForm .bd-progress span::after{animation:none} } /* ==== Carte blanche du parcours qui ressort sur le hero sombre ==== */ #bd-trial .bd-trial__card{ background:transparent !important; border:0 !important; box-shadow:none !important; padding:0 !important; overflow:visible !important; } #bd-trial .bd-trial__form{ padding:0 !important; } /* Champs du parcours : thème blanc (contre les styles sombres HubSpot du hero) */ #bd-trial #bdForm .bd-input, #bd-trial #bdForm input[type=text], #bd-trial #bdForm input[type=email], #bd-trial #bdForm input[type=tel], #bd-trial #bdForm select{ background:#ffffff !important; color:#0A0F26 !important; border:1.5px solid #E2E8F0 !important; border-radius:11px !important; padding:13px 14px !important; font-size:15px !important; font-family:inherit !important; box-shadow:none !important; line-height:1.35 !important; } #bd-trial #bdForm .bd-input::placeholder{ color:#5B6B7F !important; } #bd-trial #bdForm .bd-input:focus,#bd-trial #bdForm input:focus,#bd-trial #bdForm select:focus{ border-color:#1466F0 !important; box-shadow:0 0 0 3px rgba(20,102,240,.14) !important; } #bd-trial #bdForm select option{ background:#ffffff; color:#0A0F26; } #bd-trial #bdForm input[type=checkbox]{ accent-color:#1466F0 !important; width:auto !important; } /* Couleurs de texte forcées (le thème Divi recolore sinon les titres en bleu clair) */ #bd-trial #bdForm .bd-h{ color:#0A0F26 !important; } #bd-trial #bdForm .bd-sub{ color:#5B6B7F !important; } #bd-trial #bdForm .bd-field label{ color:#0A0F26 !important; } #bd-trial #bdForm .bd-opt .t{ color:#0A0F26 !important; } #bd-trial #bdForm .bd-modsec-h{ color:#1466F0 !important; } /* Sélecteur de langue (drapeau + menu) : reste lisible sur le hero sombre */ #bd-trial #bdForm .bd-lang-trigger{ background:#ffffff !important; color:#0A0F26 !important; } #bd-trial #bdForm .bd-lang-menu{ background:#ffffff !important; } #bd-trial #bdForm .bd-lang-menu button{ background:transparent !important; color:#0A0F26 !important; } #bd-trial #bdForm .bd-lang-menu button.on{ color:#1466F0 !important; } (function(){ /* ═══════════════════════════════════════════════════════════════════ 1) OÙ ARRIVENT LES EMAILS Endpoint Formspree DÉJÀ configuré (l'équipe reçoit chaque demande). Pour changer d'adresse : remplacez la valeur ci-dessous par votre propre endpoint Formspree (voir la notice fournie, étape 1). Astuce : une valeur commençant par "REMPLACEZ" repasse en mode démo (aucun envoi réel, données affichées dans la console). ═══════════════════════════════════════════════════════════════════ */ const FORMSPREE_ENDPOINT = "https://formspree.io/f/mjybyblr"; // email parallèle vers l'équipe /* ---- Données affichées dans le formulaire (modifiables librement) ---- */ // Secteurs proposés aux CLIENTS const SECTORS = [ {id:"commerce", t:"Commerce / Retail", ic:''}, {id:"restauration",t:"Restauration", ic:''}, {id:"hotellerie", t:"Hôtellerie", ic:''}, {id:"immobilier", t:"Immobilier", ic:''}, {id:"sante", t:"Santé", ic:''}, {id:"tertiaire", t:"Bureaux / Tertiaire",ic:''}, {id:"logistique", t:"Logistique", ic:''}, {id:"industrie", t:"Industrie", ic:''}, {id:"autre", t:"Autre secteur", ic:''} ]; // Activités principales proposées aux PRESTATAIRES const ACTIVITES = [ {id:"plomberie", t:"Plomberie / Sanitaire", ic:''}, {id:"electricite",t:"Électricité", ic:''}, {id:"cvc", t:"CVC / Chauffage-Clim", ic:''}, {id:"froid", t:"Froid commercial", ic:''}, {id:"multitech", t:"Multi-technique", ic:''}, {id:"nettoyage", t:"Nettoyage / Propreté", ic:''}, {id:"espaces_verts",t:"Espaces verts", ic:''}, {id:"securite", t:"Sécurité incendie", ic:''}, {id:"ascenseurs",t:"Ascenseurs", ic:''}, {id:"autre_presta",t:"Autre activité", ic:''} ]; const SITES = [ {id:"1-5", t:"1 à 5 sites"}, {id:"5-50", t:"Entre 5 et 50"}, {id:"50-250", t:"50 à 250"}, {id:"250+", t:"Plus de 250 sites"} ]; // Modules proposés aux CLIENTS, regroupés en sections (default:true = pré-coché "DC") const MODULES_CLIENT = [ { group:"Modules", items:[ {id:"dashboard", t:"Tableau de bord", d:"Vue d'ensemble et indicateurs clés", default:true, ic:''}, {id:"curatif", t:"Curatif", d:"Interventions & tickets en temps réel", default:true, ic:''}, {id:"preventif", t:"Préventif", d:"Maintenance planifiée et récurrente", default:false, ic:''}, {id:"reserves", t:"Réserves", d:"Réserves et niveaux de criticité", default:false, ic:''}, {id:"sinistres", t:"Sinistres", d:"Déclaration et suivi des sinistres", default:false, ic:''}, {id:"travaux", t:"Travaux", d:"Suivi des travaux et rénovations", default:false, ic:''}, {id:"projet", t:"Projet", d:"Gestion de projets", default:false, ic:''}, {id:"audits", t:"Audits", d:"Planification d'audits et conformité", default:false, ic:''} ]}, { group:"Actifs", items:[ {id:"sites", t:"Sites", d:"Vos sites et bâtiments", default:true, ic:''}, {id:"equipements", t:"Équipements", d:"Inventaire du parc et historique", default:true, ic:''}, {id:"stock", t:"Stock", d:"Pièces détachées et stocks", default:false, ic:''} ]}, { group:"Intervenants", items:[ {id:"techniciens", t:"Techniciens", d:"Vos techniciens internes", default:true, ic:''}, {id:"prestataires",t:"Prestataires",d:"Sous-traitants et sous-traitance", default:true, ic:''} ]}, { group:"Pour aller plus loin", items:[ {id:"ia", t:"Agents IA", d:"Qualification & optimisation par l'IA", default:false, ic:''}, {id:"marketplace", t:"Market-place",d:"Réseau de prestataires connectés", default:false, ic:''} ]} ]; // Modules proposés aux PRESTATAIRES (default:true = pré-coché à l'ouverture) const MODULES_PRESTA = [ {id:"statistiques", t:"Statistiques", d:"Tableau de bord et indicateurs d'activité", default:true, ic:''}, {id:"curatif", t:"Curatif", d:"Interventions & tickets, suivi en temps réel", default:true, ic:''}, {id:"preventif", t:"Préventif", d:"Maintenance planifiée et récurrente", default:false, ic:''}, {id:"techniciens", t:"Techniciens", d:"Gestion et affectation de vos techniciens", default:true, ic:''}, {id:"prestataires", t:"Prestataires", d:"Sous-traitants et réseau partenaire", default:false, ic:''}, {id:"rapports_int", t:"Rapport d'interventions", d:"Comptes rendus et exports d'interventions", default:true, ic:''} ]; // Options d'accompagnement (choix unique ; "accompagnement" affiche un sélecteur de délai ; "expertise" recommandé) const ACCOMP = [ {id:"expertise", t:"Votre expertise dès le départ", d:"Je souhaite bénéficier de votre expertise dès la création du compte.", reco:true}, {id:"accompagnement", t:"Je veux être accompagné", d:"Preneur d'un accompagnement par vos équipes.", delai:true}, {id:"seul", t:"Je découvre en autonomie", d:"Je souhaite explorer la solution seul, à mon rythme."} ]; /* ---- État ---- */ const state = { lang:"fr", company:"", type:"", sector:null, activite:null, precise:"", sites:null, modules:[], team:"", members:[], accompagnement:null, delai:"", first:"", last:"", email:"", phone:"", consent:false }; let _autoT=null; // minuteur d'auto-avancement /* Séquence d'étapes selon le profil : - Client : société → secteur → nb de sites → modules → équipe → coordonnées → récap - Prestataire : société → activité → modules → équipe → coordonnées → récap (PAS de "nombre de sites") */ const KEY_STEP = {societe:1, profil:2, sites:3, modules:4, equipe:5, accompagnement:8, coordonnees:6, recap:7}; function computeFlow(){ return state.type==='prestataire' ? ['societe','profil','modules','equipe','accompagnement','recap','coordonnees'] : ['societe','profil','sites','modules','equipe','accompagnement','recap','coordonnees']; } let flow = computeFlow(); let idx = 0; // position courante dans "flow" /* ---- Rendu des cartes ---- */ function iconSvg(paths){return ''+paths+'';} // Type de compte (client / prestataire) const typeBtns=document.querySelectorAll('#bdType [data-type]'); typeBtns.forEach(b=>b.onclick=()=>{ typeBtns.forEach(x=>x.classList.remove('sel'));b.classList.add('sel'); state.type=b.dataset.type;hideErr('errType');bdAuto(); }); // Secteurs (client) const secWrap=document.getElementById('bdSectors'); SECTORS.forEach(s=>{ const b=document.createElement('button'); b.type='button';b.className='bd-opt';b.dataset.id=s.id; b.innerHTML=''+iconSvg(s.ic)+''+s.t+''; b.onclick=()=>{state.sector=s.id;[...secWrap.children].forEach(c=>c.classList.remove('sel'));b.classList.add('sel');hideErr('errS2');bdAuto();}; secWrap.appendChild(b); }); // Activités (prestataire) const actWrap=document.getElementById('bdActivites'); const preciseBox=document.getElementById('bdPrecise'); ACTIVITES.forEach(a=>{ const b=document.createElement('button'); b.type='button';b.className='bd-opt';b.dataset.id=a.id; b.innerHTML=''+iconSvg(a.ic)+''+a.t+''; b.onclick=()=>{ state.activite=a.id;[...actWrap.children].forEach(c=>c.classList.remove('sel'));b.classList.add('sel');hideErr('errS2'); preciseBox.classList.toggle('show',a.id==='autre_presta'); updateNav(); // "Autre activité" → saisie requise → on réaffiche "Continuer" if(a.id!=='autre_presta') bdAuto(); }; actWrap.appendChild(b); }); // Sites const siteWrap=document.getElementById('bdSites'); SITES.forEach(s=>{ const b=document.createElement('button'); b.type='button';b.className='bd-opt';b.dataset.id=s.id; b.innerHTML=''+s.t+''; b.onclick=()=>{state.sites=s.id;[...siteWrap.children].forEach(c=>c.classList.remove('sel'));b.classList.add('sel');hideErr('errSites');bdAuto();}; siteWrap.appendChild(b); }); // Modules — rendu adapté au profil : CLIENT = sections, PRESTATAIRE = liste avec tri const modWrap=document.getElementById('bdModules'); let modulesLoadedFor=null; function activeModuleList(){ return state.type==='prestataire' ? MODULES_PRESTA : MODULES_CLIENT.flatMap(s=>s.items); } function moduleLabel(id){ const f=activeModuleList().find(x=>x.id===id); return f?f.t:id; } function makeModCard(m,i,reorder){ const b=document.createElement('button'); b.type='button';b.className='bd-opt'+(m.default?' sel':'');b.dataset.id=m.id;b.dataset.idx=i; b.innerHTML=''+iconSvg(m.ic)+''+m.t+''+m.d+''; b.onclick=()=>{ b.classList.toggle('sel'); state.modules=[...modWrap.querySelectorAll('.bd-opt.sel')].map(x=>x.dataset.id); hideErr('errModules'); if(reorder) reorderModules(); }; return b; } // Prestataire : les modules activés remontent en haut de la liste function reorderModules(){ const grid=document.getElementById('bdModGrid'); if(!grid) return; [...grid.children].forEach(el=>{ const i=+el.dataset.idx; el.style.order = el.classList.contains('sel') ? i : i+100; }); } function renderModules(){ const key = state.type==='prestataire' ? 'presta' : 'client'; if(modulesLoadedFor===key){ if(key==='presta') reorderModules(); return; } modulesLoadedFor=key; modWrap.innerHTML=''; state.modules=[]; if(key==='presta'){ const grid=document.createElement('div'); grid.className='bd-grid'; grid.id='bdModGrid'; MODULES_PRESTA.forEach((m,i)=>{ if(m.default) state.modules.push(m.id); grid.appendChild(makeModCard(m,i,true)); }); modWrap.appendChild(grid); reorderModules(); } else { MODULES_CLIENT.forEach(sec=>{ const h=document.createElement('div'); h.className='bd-modsec-h'; h.textContent=sec.group; modWrap.appendChild(h); const grid=document.createElement('div'); grid.className='bd-grid'; sec.items.forEach(m=>{ if(m.default) state.modules.push(m.id); grid.appendChild(makeModCard(m,0,false)); }); modWrap.appendChild(grid); }); } document.getElementById('s4Sub').textContent="Les modules essentiels sont déjà activés — ajustez selon vos besoins."; } /* ---- Équipe (oui/non + emails dynamiques) ---- */ const teamBtns=document.querySelectorAll('[data-team]'); const teamBox=document.getElementById('bdTeam'); teamBtns.forEach(b=>b.onclick=()=>{ teamBtns.forEach(x=>x.classList.remove('sel'));b.classList.add('sel'); state.team=b.dataset.team; teamBox.classList.toggle('show',state.team==='yes'); updateNav(); // "Oui" → saisie des emails → on réaffiche "Continuer" if(state.team!=='yes') bdAuto(); // "Non" → on avance directement }); document.getElementById('bdAddMember').onclick=()=>{ const list=document.getElementById('bdTeamList'); const row=document.createElement('div');row.className='bd-teamrow'; row.innerHTML=''; row.querySelector('.bd-rm').onclick=()=>row.remove(); list.appendChild(row); }; /* Options d'accompagnement */ const accWrap=document.getElementById('bdAccomp'); const delaiBox=document.getElementById('bdDelai'); ACCOMP.forEach(a=>{ const b=document.createElement('button'); b.type='button';b.className='bd-opt';b.dataset.id=a.id; // pas de présélection (pas de bouton "Continuer" ici : un clic avance) b.innerHTML=''+(a.reco?'Recommandé':'')+''+a.t+''+a.d+''; b.onclick=()=>{ state.accompagnement=a.id; [...accWrap.children].forEach(c=>c.classList.remove('sel'));b.classList.add('sel'); delaiBox.classList.toggle('show', a.id==='accompagnement'); hideErr('errAccomp'); updateNav(); // "Accompagnement" → choix d'un délai requis → on réaffiche "Continuer" if(a.id!=='accompagnement') bdAuto(); // les autres options avancent directement }; accWrap.appendChild(b); if(a.id==='accompagnement') accWrap.appendChild(delaiBox); // délai juste sous cette carte }); document.getElementById('fDelai').addEventListener('change',()=>hideErr('errDelai')); /* ---- Étape 2 dynamique selon le type de compte ---- */ function renderStep2(){ const isClient = state.type!=='prestataire'; document.getElementById('bdSectors').style.display = isClient ? 'grid':'none'; document.getElementById('bdActivites').style.display = isClient ? 'none':'grid'; preciseBox.classList.toggle('show', !isClient && state.activite==='autre_presta'); if(isClient){ document.getElementById('s2Title').textContent='Dans quel secteur évoluez-vous ?'; document.getElementById('s2Sub').textContent='On adaptera votre espace et vos modules en fonction.'; }else{ document.getElementById('s2Title').textContent='Quelle est votre activité principale ?'; document.getElementById('s2Sub').textContent='Votre métier d’intervention. On adaptera vos modules en fonction.'; } } // Adapte aussi le libellé "sites" pour un prestataire function renderStep3(){ if(state.type==='prestataire'){ document.getElementById('s3Title').textContent='Combien de sites couvrez-vous ?'; document.getElementById('s3Sub').textContent='Le nombre de sites clients sur lesquels vous intervenez.'; }else{ document.getElementById('s3Title').textContent='Combien de sites gérez-vous ?'; document.getElementById('s3Sub').textContent='Magasins, bâtiments, agences, entrepôts… On dimensionne votre espace en conséquence.'; } } /* ---- Navigation ---- */ const stepsEls=[...document.querySelectorAll('.bd-step')]; const bar=document.getElementById('bdBar'); const backBtn=document.getElementById('bdBack'); const nextBtn=document.getElementById('bdNext'); function showKey(key){ stepsEls.forEach(el=>el.classList.remove('active')); if(key==='done'){ document.querySelector('[data-step="done"]').classList.add('active'); document.getElementById('bdNav').style.display='none'; document.getElementById('bdStepLabel').style.display='none'; bar.style.width='100%'; confetti(); return; } document.querySelector('[data-step="'+KEY_STEP[key]+'"]').classList.add('active'); if(key==='profil') renderStep2(); if(key==='sites') renderStep3(); if(key==='modules') renderModules(); if(key==='recap') buildRecap(); const total=flow.length; const pct=Math.round(((idx+1)/total)*100); bar.style.width=pct+'%'; const prog=document.getElementById('bdProgress'); if(prog) prog.setAttribute('aria-valuenow', pct); document.getElementById('bdStepMini').textContent=(idx+1)+'/'+total; backBtn.style.visibility = idx===0 ? 'hidden':'visible'; nextBtn.textContent = idx===total-1 ? 'Créer mon compte' : 'Continuer →'; updateNav(); // masque "Continuer" sur les étapes à choix unique (le clic sur une carte avance tout seul) translate(); // applique la langue courante à tous les textes de l'étape // Recentre la carte uniquement si elle est sortie de l'écran par le haut (n'affecte pas le reste de la page) const _c=document.querySelector('.bd-trial__card')||document.querySelector('.bd-card'); if(_c){ const r=_c.getBoundingClientRect(); if(r.top{ clearTimeout(_autoT); if(idx>0){ idx--; showKey(flow[idx]); } }; nextBtn.onclick=()=>{ clearTimeout(_autoT); const key=flow[idx]; if(!validate(KEY_STEP[key])) return; if(key==='societe') flow=computeFlow(); // le profil vient d'être choisi → (re)calcule la séquence if(idx===flow.length-1){ submit(); return; } idx++; showKey(flow[idx]); }; // Auto-avancement (étapes à choix unique) : petit délai pour voir la sélection, puis on avance function bdAuto(){ clearTimeout(_autoT); _autoT=setTimeout(()=>nextBtn.click(), 320); } // Étapes à choix unique (le clic avance seul) → on masque "Continuer". On garde "Continuer" là où // il faut une saisie ou un multi-choix : modules, équipe (Oui), accompagnement (avec délai), autre activité, récap, coordonnées. function navShouldHideNext(key){ if(key==='sites') return true; if(key==='profil') return !(state.type==='prestataire' && state.activite==='autre_presta'); if(key==='equipe') return state.team!=='yes'; if(key==='accompagnement') return state.accompagnement!=='accompagnement'; return false; } function updateNav(){ const key=flow[idx]; const nav=document.getElementById('bdNav'); if(nav) nav.style.display = (key==='societe') ? 'none' : 'flex'; // 1re étape : barre entièrement masquée (pas de retour possible) nextBtn.style.display = navShouldHideNext(key) ? 'none' : ''; } /* ---- Validation par étape ---- */ function showErr(id){const e=document.getElementById(id);if(e)e.classList.add('show');} function hideErr(id){const e=document.getElementById(id);if(e)e.classList.remove('show');} function markField(inputId,errId,ok){ const i=document.getElementById(inputId); i.classList.toggle('err',!ok); document.getElementById(errId).classList.toggle('show',!ok); } const emailRe=/^[^\s@]+@[^\s@]+\.[^\s@]+$/; function validate(n){ if(n===1){ if(!state.type){showErr('errType');return false;} } if(n===2){ if(state.type==='prestataire'){ if(!state.activite){showErr('errS2');return false;} if(state.activite==='autre_presta'){ state.precise=document.getElementById('fPrecise').value.trim(); const ok=state.precise!=='';markField('fPrecise','errPrecise',ok);return ok; } }else{ if(!state.sector){showErr('errS2');return false;} } } if(n===3){ if(!state.sites){showErr('errSites');return false;} } if(n===4){ if(state.modules.length===0){showErr('errModules');return false;} } if(n===5){ if(state.team==='yes'){ state.members=[...document.querySelectorAll('.bd-teammail')].map(i=>i.value.trim()).filter(v=>v); } else { state.members=[]; } } if(n===8){ if(!state.accompagnement){showErr('errAccomp');return false;} if(state.accompagnement==='accompagnement'){ state.delai=document.getElementById('fDelai').value; if(!state.delai){showErr('errDelai');return false;} else hideErr('errDelai'); } else { state.delai=''; } } if(n===6){ state.company=document.getElementById('fCompany').value.trim(); state.first=document.getElementById('fFirst').value.trim(); state.last=document.getElementById('fLast').value.trim(); state.email=document.getElementById('fEmail').value.trim(); state.phone=document.getElementById('fPhone').value.trim(); state.consent=document.getElementById('fConsent').checked; let ok=true; markField('fCompany','errCompany',state.company!=='');ok=ok&&state.company!==''; markField('fFirst','errFirst',state.first!=='');ok=ok&&state.first!==''; markField('fLast','errLast',state.last!=='');ok=ok&&state.last!==''; const emOk=emailRe.test(state.email);markField('fEmail','errEmail',emOk);ok=ok&&emOk; if(!state.consent){showErr('errConsent');ok=false;}else{hideErr('errConsent');} return ok; } if(n===7){ return true; } // récap : simple relecture return true; } /* ---- Récapitulatif ---- */ function label(list,id){const f=list.find(x=>x.id===id);return f?f.t:id;} function activiteLabel(){ if(state.activite==='autre_presta') return state.precise || 'Autre activité'; return label(ACTIVITES,state.activite); } function buildRecap(){ const isPresta=state.type==='prestataire'; const mods=state.modules.map(id=>tr(moduleLabel(id))).join(', ')||'—'; const accMap={seul:tr('Découverte en autonomie'),accompagnement:tr('Accompagnement')+(state.delai?' — '+tr(state.delai):''),expertise:tr('Expertise dès la création')}; // NB : le nom de la société est saisi à l'étape suivante (coordonnées) → pas encore connu ici, donc pas de ligne "Société". const rows=[ [tr('Type de compte'),isPresta?tr('Prestataire'):tr('Client')], [isPresta?tr('Activité principale'):tr('Secteur'), isPresta?tr(activiteLabel()):tr(label(SECTORS,state.sector))] ]; if(!isPresta) rows.push([tr('Nombre de sites'),tr(label(SITES,state.sites))]); rows.push([tr('Modules'),mods]); rows.push([tr('Équipe'),state.team==='yes'?(state.members.length+' '+tr('membre(s) invité(s)')):tr('Compte individuel')]); rows.push([tr('Accompagnement'), accMap[state.accompagnement]||'—']); document.getElementById('bdRecap').innerHTML=rows.map(r=>'
'+r[0]+''+(r[1]||'—')+'
').join(''); } /* ---- Envoi ---- */ function submit(){ const isPresta=state.type==='prestataire'; const payload={ _subject:'Nouvel essai Bob! Desk — '+state.company+' ('+(isPresta?'Prestataire':'Client')+')', Societe:state.company, Type:isPresta?'Prestataire':'Client', SecteurOuActivite:isPresta?activiteLabel():label(SECTORS,state.sector), Sites:isPresta?'— (prestataire)':label(SITES,state.sites), Modules:state.modules.map(moduleLabel).join(', '), Equipe:state.team==='yes'?state.members.join(', '):'Compte individuel', Accompagnement:{seul:'Découverte en autonomie',accompagnement:'Accompagnement'+(state.delai?' ('+state.delai+')':''),expertise:'Expertise dès la création'}[state.accompagnement]||'', Prenom:state.first, Nom:state.last, Email:state.email, Telephone:state.phone||'—' }; document.getElementById('doneName').textContent=state.first||'à vous'; // Mode démo si l'endpoint n'a pas été configuré if(FORMSPREE_ENDPOINT.indexOf('REMPLACEZ')===0){ console.log('[Bob! Desk – MODE DÉMO] Données du prospect :',payload); showKey('done'); return; } nextBtn.disabled=true;nextBtn.textContent='Envoi…'; fetch(FORMSPREE_ENDPOINT,{ method:'POST', headers:{'Content-Type':'application/json','Accept':'application/json'}, body:JSON.stringify(payload) }).then(r=>{ if(r.ok){showKey('done');} else{alert("Une erreur est survenue lors de l'envoi. Merci de réessayer.");nextBtn.disabled=false;nextBtn.textContent='Créer mon compte';} }).catch(()=>{alert("Impossible d'envoyer le formulaire. Vérifiez votre connexion.");nextBtn.disabled=false;nextBtn.textContent='Créer mon compte';}); } /* Petite pluie de confettis sur l'écran de succès */ function confetti(){ const card=document.querySelector('.bd-card'); const cols=['#F5A623','#FFFFFF','#1466F0','#F5A623','#FFFFFF','#1466F0']; for(let i=0;ip.remove(),4200); } } /* Animation de bordure : comète (tête blanche + traînée #E63E52) qui parcourt le contour arrondi de la carte */ (function(){ const frame=document.querySelector('.bd-frame'); const cv=document.getElementById('bdRunner'); if(!frame||!cv) return; const ctx=cv.getContext('2d'); const reduce = window.matchMedia && matchMedia('(prefers-reduced-motion: reduce)').matches; const M=12, dpr=Math.min(window.devicePixelRatio||1,2); let W=0,H=0,R=16,perim=0,t=0; function resize(){ const r=frame.getBoundingClientRect(); W=r.width; H=r.height; R=parseFloat(getComputedStyle(frame).borderTopLeftRadius)||16; if(R>Math.min(W,H)/2) R=Math.min(W,H)/2; cv.style.width=(W+2*M)+'px'; cv.style.height=(H+2*M)+'px'; cv.width=(W+2*M)*dpr; cv.height=(H+2*M)*dpr; ctx.setTransform(dpr,0,0,dpr,0,0); perim=2*(W-2*R)+2*(H-2*R)+2*Math.PI*R; } function pt(d){ d=((d%perim)+perim)%perim; const sx=W-2*R, sy=H-2*R, arc=Math.PI*R/2; if(d<sx) return [M+R+d, M]; d-=sx; if(d<arc){const a=d/R; return [M+W-R+R*Math.sin(a), M+R-R*Math.cos(a)];} d-=arc; if(d<sy) return [M+W, M+R+d]; d-=sy; if(d<arc){const a=d/R; return [M+W-R+R*Math.cos(a), M+H-R+R*Math.sin(a)];} d-=arc; if(d<sx) return [M+W-R-d, M+H]; d-=sx; if(d<arc){const a=d/R; return [M+R-R*Math.sin(a), M+H-R+R*Math.cos(a)];} d-=arc; if(d<sy) return [M, M+H-R-d]; d-=sy; const a=d/R; return [M+R-R*Math.cos(a), M+R-R*Math.sin(a)]; } function draw(){ ctx.clearRect(0,0,cv.width,cv.height); const head=t*perim, L=perim*0.22, STEPS=70; ctx.lineCap='round'; ctx.lineJoin='round'; ctx.shadowBlur=0; ctx.strokeStyle='#E63E52'; // traînée : dégradé rouge continu qui s'intensifie et s'épaissit vers la tête let prev=pt(head-L); for(let i=1;i1)t-=1; draw(); raf=requestAnimationFrame(loop); } function start(){ if(raf==null) raf=requestAnimationFrame(loop); } if(window.IntersectionObserver){ new IntersectionObserver(function(e){ visible=e[0].isIntersecting; if(visible) start(); }).observe(frame); } start(); })(); /* Ticker "dernière création" : 144 créneaux de 10 min, un texte fixe par créneau */ const TICKER=[ "Espaces verts - 5 techniciens, France, il y a 23 minutes", "Santé - 8 sites, France, il y a 3 minutes", "Plomberie - 5 techniciens, LATAM, il y a 44 minutes", "Immobilier - 60 sites, Portugal, il y a 57 minutes", "Plomberie - 10 techniciens, France, il y a 14 minutes", "Électricité - 10 techniciens, France, il y a 19 minutes", "Retail - 180 sites, Allemagne, il y a 33 minutes", "Retail - 250 sites, France, il y a 22 minutes", "Sécurité incendie - 10 techniciens, France, il y a 46 minutes", "Nettoyage - 5 techniciens, Angleterre, il y a 54 minutes", "Santé - 50 sites, Italie, il y a 5 minutes", "Hôtellerie - 5 sites, LATAM, il y a 48 minutes", "Multi-technique - 5 techniciens, Italie, il y a 41 minutes", "Retail - 4 sites, Pologne, il y a 30 minutes", "Électricité - 15 techniciens, France, il y a 21 minutes", "Hôtellerie - 80 sites, Portugal, il y a 6 minutes", "Ascenseurs - 5 techniciens, Angleterre, il y a 25 minutes", "Multi-technique - 50 techniciens, Angleterre, il y a 24 minutes", "Froid commercial - 5 techniciens, Angleterre, il y a 43 minutes", "Nettoyage - 50 techniciens, LATAM, il y a 44 minutes", "Hôtellerie - 10 sites, Portugal, il y a 32 minutes", "Tertiaire - 4 sites, France, il y a 27 minutes", "Restauration - 10 sites, France, il y a 39 minutes", "Immobilier - 120 sites, US, il y a 39 minutes", "Hôtellerie - 60 sites, Pologne, il y a 49 minutes", "Froid commercial - 5 techniciens, France, il y a 25 minutes", "Restauration - 250 sites, Italie, il y a 34 minutes", "Retail - 20 sites, Espagne, il y a 52 minutes", "Retail - 50 sites, France, il y a 39 minutes", "Logistique - 60 sites, Espagne, il y a 8 minutes", "CVC - 10 techniciens, France, il y a 11 minutes", "Immobilier - 4 sites, Angleterre, il y a 12 minutes", "Espaces verts - 15 techniciens, France, il y a 30 minutes", "Tertiaire - 3 sites, France, il y a 38 minutes", "Retail - 12 sites, France, il y a 27 minutes", "Nettoyage - 50 techniciens, France, il y a 39 minutes", "Restauration - 250 sites, France, il y a 24 minutes", "CVC - 50 techniciens, France, il y a 14 minutes", "Retail - 5 sites, Portugal, il y a 29 minutes", "Tertiaire - 60 sites, LATAM, il y a 48 minutes", "Ascenseurs - 15 techniciens, Italie, il y a 10 minutes", "Restauration - 15 sites, France, il y a 27 minutes", "Hôtellerie - 40 sites, France, il y a 18 minutes", "Espaces verts - 15 techniciens, France, il y a 7 minutes", "Sécurité incendie - 15 techniciens, France, il y a 12 minutes", "Espaces verts - 10 techniciens, Pologne, il y a 21 minutes", "Immobilier - 10 sites, France, il y a 45 minutes", "Tertiaire - 15 sites, France, il y a 4 minutes", "Restauration - 60 sites, France, il y a 19 minutes", "Tertiaire - 3 sites, US, il y a 37 minutes", "Ascenseurs - 10 techniciens, France, il y a 51 minutes", "Ascenseurs - 15 techniciens, France, il y a 23 minutes", "Multi-technique - 5 techniciens, France, il y a 50 minutes", "Ascenseurs - 5 techniciens, France, il y a 16 minutes", "CVC - 10 techniciens, Portugal, il y a 32 minutes", "Retail - 20 sites, France, il y a 41 minutes", "Froid commercial - 15 techniciens, Allemagne, il y a 43 minutes", "Industrie - 15 sites, France, il y a 28 minutes", "Hôtellerie - 15 sites, Espagne, il y a 28 minutes", "Plomberie - 15 techniciens, France, il y a 10 minutes", "Santé - 4 sites, Allemagne, il y a 14 minutes", "Tertiaire - 5 sites, France, il y a 37 minutes", "Hôtellerie - 50 sites, LATAM, il y a 26 minutes", "Restauration - 8 sites, France, il y a 8 minutes", "Multi-technique - 5 techniciens, Portugal, il y a 36 minutes", "Espaces verts - 10 techniciens, US, il y a 29 minutes", "Multi-technique - 10 techniciens, Italie, il y a 9 minutes", "Immobilier - 180 sites, Pologne, il y a 24 minutes", "Espaces verts - 15 techniciens, Italie, il y a 52 minutes", "Multi-technique - 15 techniciens, Espagne, il y a 3 minutes", "Sécurité incendie - 10 techniciens, Angleterre, il y a 30 minutes", "Électricité - 50 techniciens, Pologne, il y a 15 minutes", "Restauration - 250 sites, France, il y a 32 minutes", "Multi-technique - 15 techniciens, France, il y a 43 minutes", "Hôtellerie - 250 sites, Angleterre, il y a 5 minutes", "Restauration - 80 sites, France, il y a 56 minutes", "Plomberie - 5 techniciens, Pologne, il y a 55 minutes", "Espaces verts - 50 techniciens, France, il y a 30 minutes", "Espaces verts - 50 techniciens, France, il y a 8 minutes", "Industrie - 28 sites, France, il y a 36 minutes", "Sécurité incendie - 15 techniciens, France, il y a 48 minutes", "Hôtellerie - 250 sites, Portugal, il y a 52 minutes", "Ascenseurs - 5 techniciens, France, il y a 17 minutes", "Multi-technique - 50 techniciens, France, il y a 21 minutes", "Retail - 28 sites, France, il y a 41 minutes", "Nettoyage - 10 techniciens, LATAM, il y a 9 minutes", "Restauration - 120 sites, France, il y a 23 minutes", "Électricité - 15 techniciens, France, il y a 27 minutes", "Retail - 120 sites, France, il y a 23 minutes", "Santé - 120 sites, US, il y a 49 minutes", "Santé - 50 sites, France, il y a 15 minutes", "Ascenseurs - 5 techniciens, France, il y a 52 minutes", "Multi-technique - 10 techniciens, Portugal, il y a 37 minutes", "Nettoyage - 50 techniciens, LATAM, il y a 23 minutes", "Plomberie - 50 techniciens, France, il y a 56 minutes", "Électricité - 10 techniciens, Italie, il y a 47 minutes", "Logistique - 10 sites, France, il y a 25 minutes", "Ascenseurs - 10 techniciens, LATAM, il y a 18 minutes", "Retail - 3 sites, France, il y a 52 minutes", "Industrie - 60 sites, Angleterre, il y a 7 minutes", "Logistique - 5 sites, Italie, il y a 8 minutes", "Multi-technique - 10 techniciens, LATAM, il y a 56 minutes", "Sécurité incendie - 50 techniciens, France, il y a 26 minutes", "Retail - 250 sites, France, il y a 5 minutes", "Ascenseurs - 5 techniciens, France, il y a 46 minutes", "Restauration - 80 sites, France, il y a 16 minutes", "Industrie - 5 sites, Pologne, il y a 45 minutes", "Hôtellerie - 4 sites, France, il y a 9 minutes", "Électricité - 5 techniciens, France, il y a 24 minutes", "Restauration - 10 sites, Italie, il y a 48 minutes", "Électricité - 10 techniciens, France, il y a 44 minutes", "Santé - 28 sites, France, il y a 10 minutes", "Multi-technique - 15 techniciens, France, il y a 24 minutes", "Froid commercial - 5 techniciens, France, il y a 47 minutes", "Froid commercial - 50 techniciens, US, il y a 32 minutes", "Restauration - 5 sites, Portugal, il y a 15 minutes", "Retail - 28 sites, France, il y a 37 minutes", "Restauration - 50 sites, Angleterre, il y a 26 minutes", "Multi-technique - 5 techniciens, Italie, il y a 50 minutes", "Tertiaire - 8 sites, Portugal, il y a 27 minutes", "Électricité - 10 techniciens, Portugal, il y a 24 minutes", "Santé - 5 sites, France, il y a 34 minutes", "Immobilier - 8 sites, Portugal, il y a 56 minutes", "Hôtellerie - 250 sites, France, il y a 38 minutes", "Tertiaire - 120 sites, France, il y a 53 minutes", "Espaces verts - 10 techniciens, Italie, il y a 39 minutes", "Immobilier - 60 sites, Italie, il y a 31 minutes", "Restauration - 8 sites, US, il y a 49 minutes", "Retail - 120 sites, France, il y a 22 minutes", "Tertiaire - 28 sites, Allemagne, il y a 26 minutes", "Multi-technique - 10 techniciens, LATAM, il y a 37 minutes", "CVC - 50 techniciens, France, il y a 57 minutes", "Froid commercial - 15 techniciens, Portugal, il y a 19 minutes", "Retail - 20 sites, France, il y a 51 minutes", "Retail - 20 sites, France, il y a 45 minutes", "Industrie - 80 sites, US, il y a 43 minutes", "Sécurité incendie - 50 techniciens, Italie, il y a 6 minutes", "Immobilier - 180 sites, France, il y a 29 minutes", "Logistique - 50 sites, Portugal, il y a 28 minutes", "Industrie - 3 sites, Angleterre, il y a 57 minutes", "Santé - 250 sites, Angleterre, il y a 33 minutes", "Logistique - 10 sites, US, il y a 24 minutes", "Immobilier - 250 sites, France, il y a 3 minutes", "Logistique - 40 sites, France, il y a 25 minutes" ]; (function(){ const el=document.getElementById('bdTicker'); if(!el || typeof TICKER==='undefined' || !TICKER.length) return; const slot=()=>{ const d=new Date(); return (d.getHours()*6 + Math.floor(d.getMinutes()/10)) % TICKER.length; }; let cur=slot(); el.textContent=TICKER[cur]; setInterval(()=>{ const s=slot(); if(s===cur) return; cur=s; el.style.opacity='0'; setTimeout(()=>{ el.textContent=TICKER[s]; el.style.opacity='1'; },250); },20000); })(); /* ============================ MULTILINGUE ============================ */ const DICT = { en:{ "Compte essai — Configuration":"Free trial — Setup", "On prépare votre espace d'essai avec des données adaptées. Commençons par l'essentiel.":"We'll set up your trial space with relevant data. Let's start with the essentials.", "Vous êtes plutôt…":"You are rather…", "Client":"Client","Je gère la maintenance de mes propres sites":"I manage maintenance on my own sites", "Prestataire":"Service provider","J'interviens pour le compte de clients":"I work on behalf of clients", "Merci d'indiquer le type de compte.":"Please select the account type.", "Dans quel secteur évoluez-vous ?":"What is your industry?","Quelle est votre activité principale ?":"What is your main activity?", "On adaptera votre espace et vos modules en fonction.":"We'll tailor your space and modules accordingly.", "Votre métier d'intervention. On adaptera vos modules en fonction.":"Your field of work. We'll tailor your modules accordingly.", "Précisez votre activité principale":"Specify your main activity","Merci de préciser votre activité.":"Please specify your activity.","Merci de faire un choix.":"Please make a choice.", "Commerce / Retail":"Retail","Restauration":"Food service","Hôtellerie":"Hospitality","Immobilier":"Real estate","Santé":"Healthcare","Bureaux / Tertiaire":"Offices","Logistique":"Logistics","Industrie":"Industry","Autre secteur":"Other industry", "Plomberie / Sanitaire":"Plumbing","Électricité":"Electrical","CVC / Chauffage-Clim":"HVAC","Froid commercial":"Commercial refrigeration","Multi-technique":"Multi-technical","Nettoyage / Propreté":"Cleaning","Espaces verts":"Landscaping","Sécurité incendie":"Fire safety","Ascenseurs":"Elevators","Autre activité":"Other activity", "Combien de sites gérez-vous ?":"How many sites do you manage?","Combien de sites couvrez-vous ?":"How many sites do you cover?", "Magasins, bâtiments, agences, entrepôts… On dimensionne votre espace en conséquence.":"Stores, buildings, branches, warehouses… We'll size your space accordingly.", "Le nombre de sites clients sur lesquels vous intervenez.":"The number of client sites you work on.", "1 à 5 sites":"1 to 5 sites","Entre 5 et 50":"5 to 50","50 à 250":"50 to 250","Plus de 250 sites":"Over 250 sites","Merci d'indiquer un nombre de sites.":"Please select a number of sites.", "Quels modules souhaitez-vous activer ?":"Which modules do you want to enable?", "Les modules essentiels sont déjà activés — ajustez selon vos besoins.":"Essential modules are already enabled — adjust as needed.", "Modules":"Modules","Actifs":"Assets","Intervenants":"People","Pour aller plus loin":"Going further", "Tableau de bord":"Dashboard","Vue d'ensemble et indicateurs clés":"Overview and key metrics", "Curatif":"Corrective","Interventions & tickets en temps réel":"Work orders & tickets in real time", "Préventif":"Preventive","Maintenance planifiée et récurrente":"Planned, recurring maintenance", "Réserves":"Reserves","Réserves et niveaux de criticité":"Reserves and criticality levels", "Sinistres":"Claims","Déclaration et suivi des sinistres":"Report and track claims", "Travaux":"Works","Suivi des travaux et rénovations":"Track works and renovations", "Projet":"Projects","Gestion de projets":"Project management", "Audits":"Audits","Planification d'audits et conformité":"Audit planning and compliance", "Sites":"Sites","Vos sites et bâtiments":"Your sites and buildings", "Équipements":"Equipment","Inventaire du parc et historique":"Asset inventory and history", "Stock":"Inventory","Pièces détachées et stocks":"Spare parts and stock", "Techniciens":"Technicians","Vos techniciens internes":"Your in-house technicians","Gestion et affectation de vos techniciens":"Manage and assign your technicians", "Prestataires":"Contractors","Sous-traitants et sous-traitance":"Subcontractors and outsourcing","Sous-traitants et réseau partenaire":"Subcontractors and partner network", "Agents IA":"AI agents","Qualification & optimisation par l'IA":"AI qualification & optimization", "Market-place":"Marketplace","Réseau de prestataires connectés":"Network of connected contractors", "Statistiques":"Statistics","Tableau de bord et indicateurs d'activité":"Dashboard and activity metrics", "Rapport d'interventions":"Work reports","Comptes rendus et exports d'interventions":"Reports and exports of work orders", "💡 Pas de stress":"💡 No pressure","Vous pourrez activer ces fonctionnalités à tout moment plus tard.":"You can enable these features anytime later.","Sélectionnez au moins un module.":"Select at least one module.", "Souhaitez-vous inviter votre équipe ?":"Want to invite your team?","Une GMAO prend toute sa valeur en équipe. Invitez vos techniciens ou responsables (facultatif).":"A CMMS shines with a team. Invite your technicians or managers (optional).", "Oui, inviter mon équipe":"Yes, invite my team","Non, juste moi pour l'instant":"No, just me for now","Emails des membres à inviter":"Emails of members to invite","+ Ajouter un autre membre":"+ Add another member", "Comment souhaitez-vous démarrer ?":"How would you like to start?","Choisissez le niveau d'accompagnement qui vous convient pour bien débuter.":"Choose the level of support that suits you to get started.", "Votre expertise dès le départ":"Your expertise from day one","Je souhaite bénéficier de votre expertise dès la création du compte.":"I want your expertise right from account creation.", "Je veux être accompagné":"I want guidance","Preneur d'un accompagnement par vos équipes.":"Open to support from your teams.", "Je découvre en autonomie":"I'll explore on my own","Je souhaite explorer la solution seul, à mon rythme.":"I want to explore the solution on my own, at my pace.", "Sous quel délai souhaitez-vous être accompagné ?":"Within what timeframe would you like support?", "Choisir un délai…":"Choose a timeframe…","Dès que possible":"As soon as possible","Sous 1 semaine":"Within 1 week","Sous 2 semaines":"Within 2 weeks","Sous 1 mois":"Within 1 month","À définir plus tard":"To be decided later", "Merci de choisir un délai.":"Please choose a timeframe.","Merci de choisir une option.":"Please choose an option.","Recommandé":"Recommended", "Dernière vérification avant le départ":"One last check before you go","Un dernier coup d'œil avant de créer votre espace.":"One last look before creating your space.", "Société":"Company","Type de compte":"Account type","Secteur":"Industry","Activité principale":"Main activity","Nombre de sites":"Number of sites","Équipe":"Team","Accompagnement":"Support", "Compte individuel":"Individual account","membre(s) invité(s)":"member(s) invited","Découverte en autonomie":"Self-guided exploration","Expertise dès la création":"Expertise from creation", "Plus qu'un pas — créons votre compte 🚀":"One more step — let's create your account 🚀","Vous y êtes ! Indiquez vos coordonnées pour recevoir vos accès.":"Almost there! Enter your details to receive your access.", "Nom de votre société":"Your company name","Prénom":"First name","Nom":"Last name","Email professionnel":"Work email","Téléphone":"Phone","— facultatif":"— optional", "J'accepte d'être recontacté(e) par l'équipe Bob! Desk au sujet de mon essai et j'ai lu la politique de confidentialité.":"I agree to be contacted by the Bob! Desk team about my trial and I have read the privacy policy.", "Merci d'indiquer le nom de votre société.":"Please enter your company name.","Merci d'indiquer votre prénom.":"Please enter your first name.","Merci d'indiquer votre nom.":"Please enter your last name.","Merci d'indiquer un email valide.":"Please enter a valid email.","Merci de cocher cette case pour continuer.":"Please check this box to continue.", "C'est parti,":"You're all set,","Votre espace d'essai Bob! Desk est en cours de préparation avec vos données. Vous allez recevoir vos accès par email d'ici quelques minutes.":"Your Bob! Desk trial space is being prepared with your data. You'll receive your access by email within a few minutes.", "🔒 Sans engagement · Sans carte bancaire · prêt en 2 min":"🔒 No commitment · No credit card · ready in 2 min", "Continuer →":"Continue →","← Retour":"← Back","Créer mon compte":"Create my account", "Ex. Boulangerie Dupont":"e.g. Dupont Bakery","Ex. maintenance CVC industrielle":"e.g. industrial HVAC maintenance","collegue@entreprise.com":"colleague@company.com" }, es:{ "Compte essai — Configuration":"Cuenta de prueba — Configuración", "On prépare votre espace d'essai avec des données adaptées. Commençons par l'essentiel.":"Preparamos tu espacio de prueba con datos adaptados. Empecemos por lo esencial.", "Vous êtes plutôt…":"¿Usted es más bien…?", "Client":"Cliente","Je gère la maintenance de mes propres sites":"Gestiono el mantenimiento de mis propios sitios", "Prestataire":"Proveedor","J'interviens pour le compte de clients":"Intervengo por cuenta de clientes", "Merci d'indiquer le type de compte.":"Indique el tipo de cuenta.", "Dans quel secteur évoluez-vous ?":"¿En qué sector trabaja?","Quelle est votre activité principale ?":"¿Cuál es su actividad principal?", "On adaptera votre espace et vos modules en fonction.":"Adaptaremos su espacio y módulos en consecuencia.", "Votre métier d'intervention. On adaptera vos modules en fonction.":"Su oficio de intervención. Adaptaremos sus módulos.", "Précisez votre activité principale":"Especifique su actividad principal","Merci de préciser votre activité.":"Especifique su actividad.","Merci de faire un choix.":"Elija una opción.", "Commerce / Retail":"Comercio / Retail","Restauration":"Restauración","Hôtellerie":"Hostelería","Immobilier":"Inmobiliario","Santé":"Salud","Bureaux / Tertiaire":"Oficinas","Logistique":"Logística","Industrie":"Industria","Autre secteur":"Otro sector", "Plomberie / Sanitaire":"Fontanería","Électricité":"Electricidad","CVC / Chauffage-Clim":"Climatización (HVAC)","Froid commercial":"Refrigeración comercial","Multi-technique":"Multitécnica","Nettoyage / Propreté":"Limpieza","Espaces verts":"Espacios verdes","Sécurité incendie":"Seguridad contra incendios","Ascenseurs":"Ascensores","Autre activité":"Otra actividad", "Combien de sites gérez-vous ?":"¿Cuántos sitios gestiona?","Combien de sites couvrez-vous ?":"¿Cuántos sitios cubre?", "Magasins, bâtiments, agences, entrepôts… On dimensionne votre espace en conséquence.":"Tiendas, edificios, agencias, almacenes… Dimensionaremos su espacio.", "Le nombre de sites clients sur lesquels vous intervenez.":"El número de sitios de clientes en los que interviene.", "1 à 5 sites":"1 a 5 sitios","Entre 5 et 50":"Entre 5 y 50","50 à 250":"50 a 250","Plus de 250 sites":"Más de 250 sitios","Merci d'indiquer un nombre de sites.":"Indique un número de sitios.", "Quels modules souhaitez-vous activer ?":"¿Qué módulos desea activar?", "Les modules essentiels sont déjà activés — ajustez selon vos besoins.":"Los módulos esenciales ya están activados — ajústelos según sus necesidades.", "Modules":"Módulos","Actifs":"Activos","Intervenants":"Personal","Pour aller plus loin":"Para ir más allá", "Tableau de bord":"Panel","Vue d'ensemble et indicateurs clés":"Visión general e indicadores clave", "Curatif":"Correctivo","Interventions & tickets en temps réel":"Intervenciones y tickets en tiempo real", "Préventif":"Preventivo","Maintenance planifiée et récurrente":"Mantenimiento planificado y recurrente", "Réserves":"Reservas","Réserves et niveaux de criticité":"Reservas y niveles de criticidad", "Sinistres":"Siniestros","Déclaration et suivi des sinistres":"Declaración y seguimiento de siniestros", "Travaux":"Obras","Suivi des travaux et rénovations":"Seguimiento de obras y renovaciones", "Projet":"Proyectos","Gestion de projets":"Gestión de proyectos", "Audits":"Auditorías","Planification d'audits et conformité":"Planificación de auditorías y cumplimiento", "Sites":"Sitios","Vos sites et bâtiments":"Sus sitios y edificios", "Équipements":"Equipos","Inventaire du parc et historique":"Inventario del parque e historial", "Stock":"Existencias","Pièces détachées et stocks":"Repuestos y existencias", "Techniciens":"Técnicos","Vos techniciens internes":"Sus técnicos internos","Gestion et affectation de vos techniciens":"Gestione y asigne sus técnicos", "Prestataires":"Proveedores","Sous-traitants et sous-traitance":"Subcontratistas y subcontratación","Sous-traitants et réseau partenaire":"Subcontratistas y red de socios", "Agents IA":"Agentes de IA","Qualification & optimisation par l'IA":"Cualificación y optimización con IA", "Market-place":"Marketplace","Réseau de prestataires connectés":"Red de proveedores conectados", "Statistiques":"Estadísticas","Tableau de bord et indicateurs d'activité":"Panel e indicadores de actividad", "Rapport d'interventions":"Informes de intervención","Comptes rendus et exports d'interventions":"Informes y exportaciones de intervenciones", "💡 Pas de stress":"💡 Sin estrés","Vous pourrez activer ces fonctionnalités à tout moment plus tard.":"Podrá activar estas funciones en cualquier momento.","Sélectionnez au moins un module.":"Seleccione al menos un módulo.", "Souhaitez-vous inviter votre équipe ?":"¿Desea invitar a su equipo?","Une GMAO prend toute sa valeur en équipe. Invitez vos techniciens ou responsables (facultatif).":"Un GMAO brilla en equipo. Invite a sus técnicos o responsables (opcional).", "Oui, inviter mon équipe":"Sí, invitar a mi equipo","Non, juste moi pour l'instant":"No, solo yo por ahora","Emails des membres à inviter":"Correos de los miembros a invitar","+ Ajouter un autre membre":"+ Añadir otro miembro", "Comment souhaitez-vous démarrer ?":"¿Cómo desea empezar?","Choisissez le niveau d'accompagnement qui vous convient pour bien débuter.":"Elija el nivel de acompañamiento que le convenga para empezar bien.", "Votre expertise dès le départ":"Su experiencia desde el inicio","Je souhaite bénéficier de votre expertise dès la création du compte.":"Quiero contar con su experiencia desde la creación de la cuenta.", "Je veux être accompagné":"Quiero acompañamiento","Preneur d'un accompagnement par vos équipes.":"Dispuesto a recibir acompañamiento de sus equipos.", "Je découvre en autonomie":"Exploro por mi cuenta","Je souhaite explorer la solution seul, à mon rythme.":"Quiero explorar la solución solo, a mi ritmo.", "Sous quel délai souhaitez-vous être accompagné ?":"¿En qué plazo desea el acompañamiento?", "Choisir un délai…":"Elegir un plazo…","Dès que possible":"Lo antes posible","Sous 1 semaine":"En 1 semana","Sous 2 semaines":"En 2 semanas","Sous 1 mois":"En 1 mes","À définir plus tard":"Por definir", "Merci de choisir un délai.":"Elija un plazo.","Merci de choisir une option.":"Elija una opción.","Recommandé":"Recomendado", "Dernière vérification avant le départ":"Última verificación antes de empezar","Un dernier coup d'œil avant de créer votre espace.":"Un último vistazo antes de crear su espacio.", "Société":"Empresa","Type de compte":"Tipo de cuenta","Secteur":"Sector","Activité principale":"Actividad principal","Nombre de sites":"Número de sitios","Équipe":"Equipo","Accompagnement":"Acompañamiento", "Compte individuel":"Cuenta individual","membre(s) invité(s)":"miembro(s) invitado(s)","Découverte en autonomie":"Exploración autónoma","Expertise dès la création":"Experiencia desde la creación", "Plus qu'un pas — créons votre compte 🚀":"Un paso más — creemos su cuenta 🚀","Vous y êtes ! Indiquez vos coordonnées pour recevoir vos accès.":"¡Ya casi! Introduzca sus datos para recibir su acceso.", "Nom de votre société":"Nombre de su empresa","Prénom":"Nombre","Nom":"Apellidos","Email professionnel":"Correo profesional","Téléphone":"Teléfono","— facultatif":"— opcional", "J'accepte d'être recontacté(e) par l'équipe Bob! Desk au sujet de mon essai et j'ai lu la politique de confidentialité.":"Acepto que el equipo de Bob! Desk me contacte sobre mi prueba y he leído la política de privacidad.", "Merci d'indiquer le nom de votre société.":"Indique el nombre de su empresa.","Merci d'indiquer votre prénom.":"Indique su nombre.","Merci d'indiquer votre nom.":"Indique sus apellidos.","Merci d'indiquer un email valide.":"Introduzca un correo válido.","Merci de cocher cette case pour continuer.":"Marque esta casilla para continuar.", "C'est parti,":"¡Listo,","Votre espace d'essai Bob! Desk est en cours de préparation avec vos données. Vous allez recevoir vos accès par email d'ici quelques minutes.":"Su espacio de prueba Bob! Desk se está preparando con sus datos. Recibirá su acceso por correo en unos minutos.", "🔒 Sans engagement · Sans carte bancaire · prêt en 2 min":"🔒 Sin compromiso · Sin tarjeta · listo en 2 min", "Continuer →":"Continuar →","← Retour":"← Atrás","Créer mon compte":"Crear mi cuenta", "Ex. Boulangerie Dupont":"Ej. Panadería Dupont","Ex. maintenance CVC industrielle":"Ej. climatización industrial","collegue@entreprise.com":"colega@empresa.com" }, pt:{ "Compte essai — Configuration":"Conta de teste — Configuração", "On prépare votre espace d'essai avec des données adaptées. Commençons par l'essentiel.":"Preparamos o seu espaço de teste com dados adaptados. Vamos começar pelo essencial.", "Vous êtes plutôt…":"Você é sobretudo…", "Client":"Cliente","Je gère la maintenance de mes propres sites":"Faço a manutenção dos meus próprios sites", "Prestataire":"Prestador","J'interviens pour le compte de clients":"Intervenho em nome de clientes", "Merci d'indiquer le type de compte.":"Indique o tipo de conta.", "Dans quel secteur évoluez-vous ?":"Em que setor atua?","Quelle est votre activité principale ?":"Qual é a sua atividade principal?", "On adaptera votre espace et vos modules en fonction.":"Vamos adaptar o seu espaço e módulos em conformidade.", "Votre métier d'intervention. On adaptera vos modules en fonction.":"A sua área de intervenção. Vamos adaptar os seus módulos.", "Précisez votre activité principale":"Especifique a sua atividade principal","Merci de préciser votre activité.":"Especifique a sua atividade.","Merci de faire un choix.":"Faça uma escolha.", "Commerce / Retail":"Comércio / Retalho","Restauration":"Restauração","Hôtellerie":"Hotelaria","Immobilier":"Imobiliário","Santé":"Saúde","Bureaux / Tertiaire":"Escritórios","Logistique":"Logística","Industrie":"Indústria","Autre secteur":"Outro setor", "Plomberie / Sanitaire":"Canalização","Électricité":"Eletricidade","CVC / Chauffage-Clim":"AVAC / Climatização","Froid commercial":"Refrigeração comercial","Multi-technique":"Multitécnica","Nettoyage / Propreté":"Limpeza","Espaces verts":"Espaços verdes","Sécurité incendie":"Segurança contra incêndios","Ascenseurs":"Elevadores","Autre activité":"Outra atividade", "Combien de sites gérez-vous ?":"Quantos sites gere?","Combien de sites couvrez-vous ?":"Quantos sites cobre?", "Magasins, bâtiments, agences, entrepôts… On dimensionne votre espace en conséquence.":"Lojas, edifícios, agências, armazéns… Vamos dimensionar o seu espaço.", "Le nombre de sites clients sur lesquels vous intervenez.":"O número de sites de clientes onde intervém.", "1 à 5 sites":"1 a 5 sites","Entre 5 et 50":"Entre 5 e 50","50 à 250":"50 a 250","Plus de 250 sites":"Mais de 250 sites","Merci d'indiquer un nombre de sites.":"Indique um número de sites.", "Quels modules souhaitez-vous activer ?":"Que módulos deseja ativar?", "Les modules essentiels sont déjà activés — ajustez selon vos besoins.":"Os módulos essenciais já estão ativados — ajuste conforme necessário.", "Modules":"Módulos","Actifs":"Ativos","Intervenants":"Intervenientes","Pour aller plus loin":"Para ir mais longe", "Tableau de bord":"Painel","Vue d'ensemble et indicateurs clés":"Visão geral e indicadores-chave", "Curatif":"Corretivo","Interventions & tickets en temps réel":"Intervenções e tickets em tempo real", "Préventif":"Preventivo","Maintenance planifiée et récurrente":"Manutenção planeada e recorrente", "Réserves":"Reservas","Réserves et niveaux de criticité":"Reservas e níveis de criticidade", "Sinistres":"Sinistros","Déclaration et suivi des sinistres":"Declaração e acompanhamento de sinistros", "Travaux":"Obras","Suivi des travaux et rénovations":"Acompanhamento de obras e renovações", "Projet":"Projetos","Gestion de projets":"Gestão de projetos", "Audits":"Auditorias","Planification d'audits et conformité":"Planeamento de auditorias e conformidade", "Sites":"Sites","Vos sites et bâtiments":"Os seus sites e edifícios", "Équipements":"Equipamentos","Inventaire du parc et historique":"Inventário do parque e histórico", "Stock":"Stock","Pièces détachées et stocks":"Peças e stock", "Techniciens":"Técnicos","Vos techniciens internes":"Os seus técnicos internos","Gestion et affectation de vos techniciens":"Faça a gestão e atribuição dos seus técnicos", "Prestataires":"Prestadores","Sous-traitants et sous-traitance":"Subcontratados e subcontratação","Sous-traitants et réseau partenaire":"Subcontratados e rede de parceiros", "Agents IA":"Agentes de IA","Qualification & optimisation par l'IA":"Qualificação e otimização por IA", "Market-place":"Marketplace","Réseau de prestataires connectés":"Rede de prestadores ligados", "Statistiques":"Estatísticas","Tableau de bord et indicateurs d'activité":"Painel e indicadores de atividade", "Rapport d'interventions":"Relatórios de intervenção","Comptes rendus et exports d'interventions":"Relatórios e exportações de intervenções", "💡 Pas de stress":"💡 Sem stress","Vous pourrez activer ces fonctionnalités à tout moment plus tard.":"Poderá ativar estas funcionalidades a qualquer momento.","Sélectionnez au moins un module.":"Selecione pelo menos um módulo.", "Souhaitez-vous inviter votre équipe ?":"Deseja convidar a sua equipa?","Une GMAO prend toute sa valeur en équipe. Invitez vos techniciens ou responsables (facultatif).":"Um sistema de manutenção brilha em equipa. Convide os seus técnicos ou responsáveis (opcional).", "Oui, inviter mon équipe":"Sim, convidar a minha equipa","Non, juste moi pour l'instant":"Não, só eu por agora","Emails des membres à inviter":"Emails dos membros a convidar","+ Ajouter un autre membre":"+ Adicionar outro membro", "Comment souhaitez-vous démarrer ?":"Como deseja começar?","Choisissez le niveau d'accompagnement qui vous convient pour bien débuter.":"Escolha o nível de acompanhamento ideal para começar bem.", "Votre expertise dès le départ":"A vossa expertise desde o início","Je souhaite bénéficier de votre expertise dès la création du compte.":"Quero beneficiar da vossa expertise desde a criação da conta.", "Je veux être accompagné":"Quero ser acompanhado","Preneur d'un accompagnement par vos équipes.":"Aberto a acompanhamento pelas vossas equipas.", "Je découvre en autonomie":"Exploro de forma autónoma","Je souhaite explorer la solution seul, à mon rythme.":"Quero explorar a solução sozinho, ao meu ritmo.", "Sous quel délai souhaitez-vous être accompagné ?":"Em que prazo deseja acompanhamento?", "Choisir un délai…":"Escolher um prazo…","Dès que possible":"O mais rápido possível","Sous 1 semaine":"Em 1 semana","Sous 2 semaines":"Em 2 semanas","Sous 1 mois":"Em 1 mês","À définir plus tard":"A definir mais tarde", "Merci de choisir un délai.":"Escolha um prazo.","Merci de choisir une option.":"Escolha uma opção.","Recommandé":"Recomendado", "Dernière vérification avant le départ":"Última verificação antes de começar","Un dernier coup d'œil avant de créer votre espace.":"Um último olhar antes de criar o seu espaço.", "Société":"Empresa","Type de compte":"Tipo de conta","Secteur":"Setor","Activité principale":"Atividade principal","Nombre de sites":"Número de sites","Équipe":"Equipa","Accompagnement":"Acompanhamento", "Compte individuel":"Conta individual","membre(s) invité(s)":"membro(s) convidado(s)","Découverte en autonomie":"Exploração autónoma","Expertise dès la création":"Expertise desde a criação", "Plus qu'un pas — créons votre compte 🚀":"Só mais um passo — vamos criar a sua conta 🚀","Vous y êtes ! Indiquez vos coordonnées pour recevoir vos accès.":"Quase lá! Insira os seus dados para receber o acesso.", "Nom de votre société":"Nome da sua empresa","Prénom":"Nome","Nom":"Apelido","Email professionnel":"Email profissional","Téléphone":"Telefone","— facultatif":"— opcional", "J'accepte d'être recontacté(e) par l'équipe Bob! Desk au sujet de mon essai et j'ai lu la politique de confidentialité.":"Aceito ser contactado pela equipa Bob! Desk sobre o meu teste e li a política de privacidade.", "Merci d'indiquer le nom de votre société.":"Indique o nome da sua empresa.","Merci d'indiquer votre prénom.":"Indique o seu nome.","Merci d'indiquer votre nom.":"Indique o seu apelido.","Merci d'indiquer un email valide.":"Insira um email válido.","Merci de cocher cette case pour continuer.":"Assinale esta caixa para continuar.", "C'est parti,":"Tudo pronto,","Votre espace d'essai Bob! Desk est en cours de préparation avec vos données. Vous allez recevoir vos accès par email d'ici quelques minutes.":"O seu espaço de teste Bob! Desk está a ser preparado com os seus dados. Vai receber o acesso por email dentro de alguns minutos.", "🔒 Sans engagement · Sans carte bancaire · prêt en 2 min":"🔒 Sem compromisso · Sem cartão · pronto em 2 min", "Continuer →":"Continuar →","← Retour":"← Voltar","Créer mon compte":"Criar a minha conta", "Ex. Boulangerie Dupont":"Ex. Padaria Dupont","Ex. maintenance CVC industrielle":"Ex. climatização industrial","collegue@entreprise.com":"colega@empresa.com" }, de:{ "Compte essai — Configuration":"Testkonto — Einrichtung", "On prépare votre espace d'essai avec des données adaptées. Commençons par l'essentiel.":"Wir richten Ihren Testbereich mit passenden Daten ein. Beginnen wir mit dem Wesentlichen.", "Vous êtes plutôt…":"Sie sind eher…", "Client":"Kunde","Je gère la maintenance de mes propres sites":"Ich verwalte die Wartung meiner eigenen Standorte", "Prestataire":"Dienstleister","J'interviens pour le compte de clients":"Ich arbeite im Auftrag von Kunden", "Merci d'indiquer le type de compte.":"Bitte wählen Sie den Kontotyp.", "Dans quel secteur évoluez-vous ?":"In welcher Branche sind Sie tätig?","Quelle est votre activité principale ?":"Was ist Ihre Haupttätigkeit?", "On adaptera votre espace et vos modules en fonction.":"Wir passen Ihren Bereich und Ihre Module entsprechend an.", "Votre métier d'intervention. On adaptera vos modules en fonction.":"Ihr Tätigkeitsbereich. Wir passen Ihre Module entsprechend an.", "Précisez votre activité principale":"Geben Sie Ihre Haupttätigkeit an","Merci de préciser votre activité.":"Bitte geben Sie Ihre Tätigkeit an.","Merci de faire un choix.":"Bitte treffen Sie eine Auswahl.", "Commerce / Retail":"Handel / Retail","Restauration":"Gastronomie","Hôtellerie":"Hotellerie","Immobilier":"Immobilien","Santé":"Gesundheit","Bureaux / Tertiaire":"Büros","Logistique":"Logistik","Industrie":"Industrie","Autre secteur":"Andere Branche", "Plomberie / Sanitaire":"Sanitär","Électricité":"Elektrik","CVC / Chauffage-Clim":"HLK / Klima","Froid commercial":"Gewerbekälte","Multi-technique":"Multitechnik","Nettoyage / Propreté":"Reinigung","Espaces verts":"Grünflächen","Sécurité incendie":"Brandschutz","Ascenseurs":"Aufzüge","Autre activité":"Andere Tätigkeit", "Combien de sites gérez-vous ?":"Wie viele Standorte verwalten Sie?","Combien de sites couvrez-vous ?":"Wie viele Standorte betreuen Sie?", "Magasins, bâtiments, agences, entrepôts… On dimensionne votre espace en conséquence.":"Geschäfte, Gebäude, Filialen, Lager… Wir dimensionieren Ihren Bereich entsprechend.", "Le nombre de sites clients sur lesquels vous intervenez.":"Die Anzahl der Kundenstandorte, an denen Sie tätig sind.", "1 à 5 sites":"1 bis 5 Standorte","Entre 5 et 50":"5 bis 50","50 à 250":"50 bis 250","Plus de 250 sites":"Über 250 Standorte","Merci d'indiquer un nombre de sites.":"Bitte wählen Sie eine Anzahl.", "Quels modules souhaitez-vous activer ?":"Welche Module möchten Sie aktivieren?", "Les modules essentiels sont déjà activés — ajustez selon vos besoins.":"Die wichtigsten Module sind bereits aktiviert — passen Sie sie an.", "Modules":"Module","Actifs":"Anlagen","Intervenants":"Beteiligte","Pour aller plus loin":"Mehr möglich", "Tableau de bord":"Dashboard","Vue d'ensemble et indicateurs clés":"Überblick und Kennzahlen", "Curatif":"Instandsetzung","Interventions & tickets en temps réel":"Aufträge & Tickets in Echtzeit", "Préventif":"Wartung","Maintenance planifiée et récurrente":"Geplante, wiederkehrende Wartung", "Réserves":"Vorbehalte","Réserves et niveaux de criticité":"Vorbehalte und Kritikalitätsstufen", "Sinistres":"Schadensfälle","Déclaration et suivi des sinistres":"Meldung und Verfolgung von Schäden", "Travaux":"Bauarbeiten","Suivi des travaux et rénovations":"Verfolgung von Arbeiten und Renovierungen", "Projet":"Projekte","Gestion de projets":"Projektmanagement", "Audits":"Audits","Planification d'audits et conformité":"Auditplanung und Compliance", "Sites":"Standorte","Vos sites et bâtiments":"Ihre Standorte und Gebäude", "Équipements":"Anlagen","Inventaire du parc et historique":"Bestandsverzeichnis und Historie", "Stock":"Lager","Pièces détachées et stocks":"Ersatzteile und Lager", "Techniciens":"Techniker","Vos techniciens internes":"Ihre internen Techniker","Gestion et affectation de vos techniciens":"Techniker verwalten und zuweisen", "Prestataires":"Dienstleister","Sous-traitants et sous-traitance":"Subunternehmer und Fremdvergabe","Sous-traitants et réseau partenaire":"Subunternehmer und Partnernetzwerk", "Agents IA":"KI-Agenten","Qualification & optimisation par l'IA":"KI-Qualifizierung & -Optimierung", "Market-place":"Marktplatz","Réseau de prestataires connectés":"Netzwerk verbundener Dienstleister", "Statistiques":"Statistiken","Tableau de bord et indicateurs d'activité":"Dashboard und Aktivitätskennzahlen", "Rapport d'interventions":"Einsatzberichte","Comptes rendus et exports d'interventions":"Berichte und Exporte von Einsätzen", "💡 Pas de stress":"💡 Kein Stress","Vous pourrez activer ces fonctionnalités à tout moment plus tard.":"Sie können diese Funktionen jederzeit später aktivieren.","Sélectionnez au moins un module.":"Wählen Sie mindestens ein Modul.", "Souhaitez-vous inviter votre équipe ?":"Möchten Sie Ihr Team einladen?","Une GMAO prend toute sa valeur en équipe. Invitez vos techniciens ou responsables (facultatif).":"Eine Wartungssoftware entfaltet sich im Team. Laden Sie Techniker oder Verantwortliche ein (optional).", "Oui, inviter mon équipe":"Ja, mein Team einladen","Non, juste moi pour l'instant":"Nein, vorerst nur ich","Emails des membres à inviter":"E-Mails der einzuladenden Mitglieder","+ Ajouter un autre membre":"+ Weiteres Mitglied hinzufügen", "Comment souhaitez-vous démarrer ?":"Wie möchten Sie starten?","Choisissez le niveau d'accompagnement qui vous convient pour bien débuter.":"Wählen Sie die passende Unterstützung für einen guten Start.", "Votre expertise dès le départ":"Ihre Expertise von Anfang an","Je souhaite bénéficier de votre expertise dès la création du compte.":"Ich möchte Ihre Expertise direkt bei der Kontoerstellung.", "Je veux être accompagné":"Ich möchte begleitet werden","Preneur d'un accompagnement par vos équipes.":"Offen für Unterstützung durch Ihre Teams.", "Je découvre en autonomie":"Ich erkunde selbstständig","Je souhaite explorer la solution seul, à mon rythme.":"Ich möchte die Lösung allein, in meinem Tempo erkunden.", "Sous quel délai souhaitez-vous être accompagné ?":"In welchem Zeitrahmen wünschen Sie Unterstützung?", "Choisir un délai…":"Zeitrahmen wählen…","Dès que possible":"So bald wie möglich","Sous 1 semaine":"Innerhalb 1 Woche","Sous 2 semaines":"Innerhalb 2 Wochen","Sous 1 mois":"Innerhalb 1 Monat","À définir plus tard":"Später festzulegen", "Merci de choisir un délai.":"Bitte wählen Sie einen Zeitrahmen.","Merci de choisir une option.":"Bitte wählen Sie eine Option.","Recommandé":"Empfohlen", "Dernière vérification avant le départ":"Letzte Prüfung vor dem Start","Un dernier coup d'œil avant de créer votre espace.":"Ein letzter Blick vor dem Erstellen Ihres Bereichs.", "Société":"Unternehmen","Type de compte":"Kontotyp","Secteur":"Branche","Activité principale":"Haupttätigkeit","Nombre de sites":"Anzahl Standorte","Équipe":"Team","Accompagnement":"Unterstützung", "Compte individuel":"Einzelkonto","membre(s) invité(s)":"eingeladene(s) Mitglied(er)","Découverte en autonomie":"Eigenständige Erkundung","Expertise dès la création":"Expertise ab Erstellung", "Plus qu'un pas — créons votre compte 🚀":"Nur noch ein Schritt — erstellen wir Ihr Konto 🚀","Vous y êtes ! Indiquez vos coordonnées pour recevoir vos accès.":"Fast geschafft! Geben Sie Ihre Daten ein, um Ihren Zugang zu erhalten.", "Nom de votre société":"Name Ihres Unternehmens","Prénom":"Vorname","Nom":"Nachname","Email professionnel":"Geschäftliche E-Mail","Téléphone":"Telefon","— facultatif":"— optional", "J'accepte d'être recontacté(e) par l'équipe Bob! Desk au sujet de mon essai et j'ai lu la politique de confidentialité.":"Ich stimme zu, vom Bob! Desk-Team zu meiner Testphase kontaktiert zu werden, und habe die Datenschutzerklärung gelesen.", "Merci d'indiquer le nom de votre société.":"Bitte geben Sie Ihren Firmennamen ein.","Merci d'indiquer votre prénom.":"Bitte geben Sie Ihren Vornamen ein.","Merci d'indiquer votre nom.":"Bitte geben Sie Ihren Nachnamen ein.","Merci d'indiquer un email valide.":"Bitte geben Sie eine gültige E-Mail ein.","Merci de cocher cette case pour continuer.":"Bitte aktivieren Sie dieses Kästchen, um fortzufahren.", "C'est parti,":"Los geht's,","Votre espace d'essai Bob! Desk est en cours de préparation avec vos données. Vous allez recevoir vos accès par email d'ici quelques minutes.":"Ihr Bob! Desk-Testbereich wird mit Ihren Daten vorbereitet. Sie erhalten Ihren Zugang in wenigen Minuten per E-Mail.", "🔒 Sans engagement · Sans carte bancaire · prêt en 2 min":"🔒 Unverbindlich · Ohne Kreditkarte · in 2 Min. bereit", "Continuer →":"Weiter →","← Retour":"← Zurück","Créer mon compte":"Konto erstellen", "Ex. Boulangerie Dupont":"z. B. Bäckerei Dupont","Ex. maintenance CVC industrielle":"z. B. industrielle HLK-Wartung","collegue@entreprise.com":"kollege@firma.com" } }; function norm(s){ return s.replace(/’/g,"'").replace(/\s+/g,' ').trim(); } function tr(s){ const l=state.lang; if(l==='fr'||!DICT[l]) return s; const v=DICT[l][norm(s)]; return v!==undefined?v:s; } function translate(){ const root=document.querySelector('.bd-wrap'); if(!root) return; const w=document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null); const nodes=[]; while(w.nextNode()) nodes.push(w.currentNode); nodes.forEach(n=>{ if(n.parentElement && n.parentElement.closest('#bdLang')) return; if(n.__fr===undefined) n.__fr=n.nodeValue; const orig=n.__fr, key=norm(orig); if(!key) return; const t=tr(key); if(t===key){ n.nodeValue=orig; return; } const lead=(orig.match(/^\s*/)||[''])[0], trail=(orig.match(/\s*$/)||[''])[0]; n.nodeValue=lead+t+trail; }); root.querySelectorAll('[placeholder]').forEach(el=>{ if(el.__frph===undefined) el.__frph=el.getAttribute('placeholder'); el.setAttribute('placeholder', tr(el.__frph)); }); } function setLang(l){ state.lang=l; const menu=document.getElementById('bdLangMenu'); let flag='🇫🇷'; menu.querySelectorAll('button').forEach(b=>{ const on=b.dataset.lang===l; b.classList.toggle('on', on); b.setAttribute('aria-selected', on?'true':'false'); if(on) flag=b.dataset.flag; }); const fEl=document.getElementById('bdLangFlag'); if(fEl) fEl.textContent=flag; const cEl=document.getElementById('bdLangCode'); if(cEl) cEl.textContent=l.toUpperCase(); if(flow[idx]==='recap') buildRecap(); translate(); } (function(){ const box=document.getElementById('bdLang'); const trig=document.getElementById('bdLangTrigger'); if(!box||!trig) return; function close(){ box.classList.remove('open'); trig.setAttribute('aria-expanded','false'); } trig.onclick=function(e){ e.stopPropagation(); const open=box.classList.toggle('open'); trig.setAttribute('aria-expanded', open?'true':'false'); }; box.querySelectorAll('#bdLangMenu button').forEach(b=>b.onclick=function(e){ e.stopPropagation(); setLang(b.dataset.lang); close(); }); document.addEventListener('click', function(e){ if(!box.contains(e.target)) close(); }); document.addEventListener('keydown', function(e){ if(e.key==='Escape') close(); }); })(); /* init */ showKey('societe'); /* ======================= ENVOI ======================= */ /* (A) HubSpot : soumission via l'API publique de formulaires -> contact + workflow -> Slack. NB : n'envoie QUE des champs présents sur ton formulaire HubSpot (sinon HubSpot refuse). Ajuste HS_FIELDS si besoin (ex. retirer 'company' si le champ n'existe pas). */ const HS_PORTAL='27059777'; const HS_FORM='dd2f4d48-d1d4-4edd-add2-b2247b4afc17'; function bdCookie(n){ const m=document.cookie.match('(^|;)\\s*'+n+'\\s*=\\s*([^;]+)'); return m?m.pop():''; } function bdSubmitHubSpot(){ const base=[ {name:'email', value:state.email}, {name:'firstname', value:state.first}, {name:'lastname', value:state.last}, {name:'phone', value:state.phone}, {name:'company', value:state.company}, /* Champ obligatoire du formulaire : mappé sur le choix Client/Prestataire du parcours */ {name:'essai_gratuit__souhait', value:(state.type==='prestataire' ? 'Un compte prestataire (vous intervenez chez vos clients)' : 'Un compte client (vous gérez des interventions en interne)')} ].filter(f=>f.value); const url='https://api.hsforms.com/submissions/v3/integration/submit/'+HS_PORTAL+'/'+HS_FORM; const hutk=bdCookie('hubspotutk'); function missingReq(j){ const out=[]; ((j&&j.errors)||[]).forEach(e=>{ if(e.errorType!=='REQUIRED_FIELD') return; const k="Required field '"; const i=(e.message||'').indexOf(k); if(i>=0){ const rest=e.message.slice(i+k.length); const nm=rest.slice(0,rest.indexOf("'")); if(nm) out.push(nm); } }); return out; } function post(fields, attempt){ const body={ fields:fields.map(f=>({objectTypeId:'0-1',name:f.name,value:f.value})), context:{pageUri:location.href,pageName:document.title} }; if(hutk) body.context.hutk=hutk; return fetch(url,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body)}) .then(r=>r.json().then(j=>({ok:r.ok,j}))) .then(res=>{ if(res.ok){ console.log('[Bob!Desk] Soumission HubSpot OK'); return true; } const miss=missingReq(res.j); if(attemptf.name)); miss.forEach(nm=>{ if(!have.has(nm)) fields.push({name:nm, value:'Non communiqué'}); }); console.warn('[Bob!Desk] Champs requis complétés avec valeur de secours :', miss); return post(fields, attempt+1); } console.warn('[Bob!Desk] HubSpot a refusé la soumission :', res.j); return false; }).catch(e=>{ console.warn('[Bob!Desk] Erreur réseau HubSpot :', e); return false; }); } return post(base, 1); // renvoie une Promise (true = accepté) } /* (B) Email parallèle (Formspree) avec TOUTE la qualification (absente de HubSpot) */ function bdEmailPayload(){ const isPresta=state.type==='prestataire'; const acc={seul:'Découverte en autonomie',accompagnement:'Accompagnement'+(state.delai?' ('+state.delai+')':''),expertise:'Expertise dès la création'}; return { _subject:'Nouvel essai Bob! Desk — '+state.company+' ('+(isPresta?'Prestataire':'Client')+')', Societe:state.company, Type:isPresta?'Prestataire':'Client', SecteurOuActivite:isPresta?activiteLabel():label(SECTORS,state.sector), Sites:isPresta?'—':label(SITES,state.sites), Modules:state.modules.map(moduleLabel).join(', '), Accompagnement:acc[state.accompagnement]||'', Equipe:state.team==='yes'?state.members.join(', '):'Compte individuel', Prenom:state.first, Nom:state.last, Email:state.email, Telephone:state.phone||'—' }; } function bdSendEmail(){ // renvoie une Promise (true = accepté) if(typeof FORMSPREE_ENDPOINT==='undefined' || FORMSPREE_ENDPOINT.indexOf('REMPLACEZ')===0){ console.log('[Bob!Desk] Email non configuré (mode démo). Données :', bdEmailPayload()); return Promise.resolve(true); } return fetch(FORMSPREE_ENDPOINT,{method:'POST',headers:{'Content-Type':'application/json','Accept':'application/json'},body:JSON.stringify(bdEmailPayload())}) .then(r=>r.ok).catch(()=>false); } /* Relance automatique : réessaie tant que ce n'est pas accepté (jusqu'à "tries" fois, délai croissant) */ function bdRetry(fn, tries, delay){ return Promise.resolve().then(fn).then(function(ok){ if(ok || tries<=1) return ok; return new Promise(function(r){ setTimeout(r, delay); }).then(function(){ return bdRetry(fn, tries-1, delay*2); }); }).catch(function(){ if(tries<=1) return false; return new Promise(function(r){ setTimeout(r, delay); }).then(function(){ return bdRetry(fn, tries-1, delay*2); }); });}/* Filet de sécurité : si l'email n'a pas été confirmé quand l'utilisateur quitte/masque la page, on le renvoie via sendBeacon (survit à la fermeture de l'onglet). */var bdEmailSaved=false, bdLeadPayload=null;function bdBeacon(){ if(bdEmailSaved || !bdLeadPayload) return; if(typeof FORMSPREE_ENDPOINT==='undefined' || FORMSPREE_ENDPOINT.indexOf('REMPLACEZ')===0) return; if(navigator.sendBeacon){ try{ navigator.sendBeacon(FORMSPREE_ENDPOINT, new Blob([JSON.stringify(bdLeadPayload)], {type:'application/json'})); bdEmailSaved=true; console.warn('[Bob!Desk] Email renvoye via sendBeacon (filet de securite).'); }catch(e){} }}document.addEventListener('visibilitychange', function(){ if(document.visibilityState==='hidden') bdBeacon(); });window.addEventListener('pagehide', bdBeacon);function submit(){ document.getElementById('doneName').textContent=state.first||'à vous'; bdLeadPayload=bdEmailPayload(); // mémorisé pour le filet sendBeacon showKey('done'); // succès immédiat : on ne fait pas attendre le prospect // Envois en arrière-plan avec relances automatiques (HubSpot + Slack, et email de qualification) var hs=bdRetry(bdSubmitHubSpot, 3, 800); var em=bdRetry(bdSendEmail, 3, 800); Promise.all([hs, em]).then(function(res){ var hsOk=res[0], emOk=res[1]; if(emOk) bdEmailSaved=true; console.log('[Bob!Desk] Envoi termine — HubSpot:'+!!hsOk+', Email:'+!!emOk+(emOk?'':' (filet sendBeacon arme si la page se ferme)')); });}})();
Diese Website ist auf wpml.org als Entwicklungsseite registriert. Wechseln Sie zu einem Produktions-Website-Schlüssel, um remove this banner.