{"id":3661,"date":"2026-09-15T09:43:25","date_gmt":"2026-09-15T09:43:25","guid":{"rendered":"https:\/\/ceweb-agency.com\/?page_id=3661"},"modified":"2026-10-22T10:31:10","modified_gmt":"2026-10-22T10:31:10","slug":"hand-made","status":"publish","type":"page","link":"https:\/\/ceweb-agency.com\/en\/hand-made\/","title":{"rendered":"Hand Made"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3661\" class=\"elementor elementor-3661\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-05facb2 e-con-full e-flex e-con e-parent\" data-id=\"05facb2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-2e96feb e-flex e-con-boxed e-con e-child\" data-id=\"2e96feb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac91324 elementor-widget elementor-widget-html\" data-id=\"ac91324\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CEWeb Agency \u2014 Badge \u00ab Pr\u00e9sence AI \u00bb\r\n     \u00c0 coller dans un widget Elementor \u00ab HTML \u00bb.\r\n     Couleurs : variables de palette du th\u00e8me utilis\u00e9es directement.\r\n     Police : Inter \u2014 charg\u00e9e par le th\u00e8me.\r\n     ============================================================ -->\r\n<style>\r\n.cw-badge{\r\n  display: inline-flex; align-items: center; gap: 11px;\r\n  margin: 0; padding: 13px 26px;\r\n  border: 0; border-radius: 50px;\r\n  background: color-mix(in srgb, var(--theme-palette-color-1) 8%, var(--theme-palette-color-11));\r\n  font-family: Inter, system-ui, -apple-system, \"Segoe UI\", sans-serif;\r\n  font-size: 16px; font-weight: 700; line-height: 1.3;\r\n  color: color-mix(in srgb, var(--theme-palette-color-1) 85%, var(--theme-palette-color-6));\r\n  text-decoration: none;\r\n  transition: background-color .2s ease;\r\n}\r\n.cw-badge:hover,\r\n.cw-badge:focus{\r\n  color: color-mix(in srgb, var(--theme-palette-color-1) 85%, var(--theme-palette-color-6));\r\n  background: color-mix(in srgb, var(--theme-palette-color-1) 14%, var(--theme-palette-color-11));\r\n}\r\n.cw-badge:focus-visible{\r\n  outline: 2px solid var(--theme-palette-color-1); outline-offset: 3px;\r\n}\r\n.cw-badge .cw-badge-arrow{\r\n  flex-shrink: 0; display: block; width: 17px; height: 17px;\r\n  color: var(--theme-palette-color-3);\r\n  transition: transform .2s ease;\r\n}\r\n.cw-badge:hover .cw-badge-arrow{ transform: translateX(3px); }\r\n\r\n@media (max-width: 480px){\r\n  .cw-badge{ padding: 11px 18px; font-size: 14px; gap: 9px; }\r\n  .cw-badge .cw-badge-arrow{ width: 15px; height: 15px; }\r\n}\r\n@media (prefers-reduced-motion: reduce){\r\n  .cw-badge,\r\n  .cw-badge .cw-badge-arrow{ transition: none; }\r\n  .cw-badge:hover .cw-badge-arrow{ transform: none; }\r\n}\r\n<\/style>\r\n\r\n<h1>\r\n    <a class=\"cw-badge\" href=\"#\">\r\n      <svg class=\"cw-badge-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\">\r\n        <path d=\"M4 12h15M13 6l6 6-6 6\"\/>\r\n      <\/svg>\r\n      <span>Hand Made : d\u00e9veloppement sur mesure<\/span>\r\n    <\/a>\r\n<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9da21b9 elementor-widget elementor-widget-heading\" data-id=\"9da21b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Votre produit. Votre vision. Notre code.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60bfe20 elementor-widget elementor-widget-text-editor\" data-id=\"60bfe20\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Les solutions toutes faites ne vous ressemblent pas\u00a0? Nous non plus. Chez CEWeb, nous d\u00e9veloppons des produits 100\u00a0% sur-mesure, con\u00e7us ligne par ligne pour coller \u00e0 votre r\u00e9alit\u00e9 m\u00e9tier. Pas de template. Pas de compromis. Du vrai craft.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-864d76e e-con-full e-flex e-con e-child\" data-id=\"864d76e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-275256a ct-button-icon btn-shadow elementor-widget elementor-widget-button\" data-id=\"275256a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/contact-us#form\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M24 0v22.78h-2.87V4.9L2.03 24 0 21.97l19.1-19.1H1.26V0z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">D\u00e9marrer mon projet<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2315b05 ct-button-icon btn-shadow elementor-widget elementor-widget-button\" data-id=\"2315b05\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/nos-realisations#project\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Voir nos r\u00e9alisations<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b3da7d5 e-con-full e-flex e-con e-child\" data-id=\"b3da7d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6306380 elementor-widget elementor-widget-html\" data-id=\"6306380\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CEWeb Agency \u2014 Cartes \u00ab D\u00e9veloppement sur-mesure \u00bb\r\n     \u00c0 coller dans un widget Elementor \u00ab HTML \u00bb.\r\n     Couleurs : variables de palette du th\u00e8me utilis\u00e9es directement.\r\n     Polices : Fraunces (titres) + Inter (texte) \u2014 charg\u00e9es par le th\u00e8me.\r\n     Animations : apparition au d\u00e9filement, comptage des chiffres,\r\n     remplissage des barres, survol des cartes.\r\n     ============================================================ -->\r\n<style>\r\n.cw-dev{\r\n  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));\r\n  gap: clamp(16px, 1.8vw, 24px);\r\n  margin: 0; padding: 0;\r\n  list-style: none;\r\n  font-family: Inter, system-ui, -apple-system, \"Segoe UI\", sans-serif;\r\n}\r\n.cw-dev *{ box-sizing: border-box; }\r\n\r\n\/* --- Carte --- *\/\r\n.cw-dev .cw-dev-card{\r\n  display: flex; flex-direction: column; gap: 12px;\r\n  margin: 0; padding: clamp(22px, 2.2vw, 30px);\r\n  min-height: 420px;\r\n  border-radius: 20px;\r\n  color: var(--theme-palette-color-6);\r\n  box-shadow: 0 2px 10px rgba(12,26,60,.05);\r\n  \/* \u00c9tat de d\u00e9part de l'animation *\/\r\n  opacity: 0; transform: translateY(30px);\r\n  transition: opacity .65s cubic-bezier(.22,.61,.36,1),\r\n              transform .65s cubic-bezier(.22,.61,.36,1),\r\n              box-shadow .25s ease;\r\n}\r\n.cw-dev .cw-dev-card.is-in{ opacity: 1; transform: translateY(0); }\r\n.cw-dev .cw-dev-card.is-in:hover{\r\n  transform: translateY(-6px);\r\n  box-shadow: 0 22px 50px rgba(12,26,60,.16);\r\n}\r\n\r\n.cw-dev .cw-dev-title{\r\n  margin: 0 !important;\r\n  font-family: Fraunces, Georgia, serif !important;\r\n  font-size: clamp(20px, 1.8vw, 25px) !important;\r\n  font-weight: 600 !important; line-height: 1.15 !important; letter-spacing: -.02em;\r\n  color: inherit !important;\r\n  overflow-wrap: break-word;\r\n}\r\n.cw-dev .cw-dev-text{\r\n  margin: 0; max-width: 32ch;\r\n  font-size: clamp(14px, 1.05vw, 15px); line-height: 1.6;\r\n  color: inherit; opacity: .84;\r\n}\r\n\r\n\/* --- Encart bas --- *\/\r\n.cw-dev .cw-dev-stat{\r\n  margin-top: auto; padding: 16px 18px;\r\n  background: var(--theme-palette-color-11); border-radius: 14px;\r\n  box-shadow: 0 10px 30px rgba(12,26,60,.08);\r\n  color: var(--theme-palette-color-6);\r\n  opacity: 0; transform: translateY(16px);\r\n  transition: opacity .55s ease .22s, transform .55s ease .22s, box-shadow .25s ease;\r\n}\r\n.cw-dev .cw-dev-card.is-in .cw-dev-stat{ opacity: 1; transform: translateY(0); }\r\n.cw-dev .cw-dev-card.is-in:hover .cw-dev-stat{ box-shadow: 0 14px 34px rgba(12,26,60,.14); }\r\n\r\n\/* Libell\u00e9 au-dessus de la valeur : \u00e9vite les coupures dans une carte \u00e9troite *\/\r\n.cw-dev .cw-dev-head{\r\n  display: flex; flex-direction: column; gap: 6px;\r\n}\r\n.cw-dev .cw-dev-label{\r\n  font-size: 11px; font-weight: 700; line-height: 1.25;\r\n  letter-spacing: .07em; text-transform: uppercase;\r\n  color: var(--theme-palette-color-7);\r\n  overflow-wrap: break-word;\r\n}\r\n.cw-dev .cw-dev-value{\r\n  font-family: Fraunces, Georgia, serif; font-weight: 700;\r\n  font-size: clamp(22px, 2vw, 28px); line-height: 1.05; letter-spacing: -.02em;\r\n  font-variant-numeric: tabular-nums; white-space: nowrap;\r\n  transition: transform .25s ease; transform-origin: left center;\r\n}\r\n.cw-dev .cw-dev-card.is-in:hover .cw-dev-value{ transform: scale(1.05); }\r\n\r\n.cw-dev .cw-dev-note{\r\n  margin: 9px 0 0; font-size: 13px; line-height: 1.4;\r\n  color: var(--theme-palette-color-7);\r\n}\r\n\r\n\/* Barre de progression *\/\r\n.cw-dev .cw-dev-bar{\r\n  margin-top: 11px; height: 6px; border-radius: 50px; overflow: hidden;\r\n  background: var(--theme-palette-color-9);\r\n}\r\n.cw-dev .cw-dev-bar i{\r\n  display: block; height: 100%; width: 0; border-radius: 50px;\r\n  font-style: normal;\r\n  transition: width 1.2s cubic-bezier(.22,.61,.36,1) .45s, filter .25s ease;\r\n}\r\n.cw-dev .cw-dev-card.is-in:hover .cw-dev-bar i{ filter: saturate(1.25); }\r\n\r\n\/* \u00c9tiquettes *\/\r\n.cw-dev .cw-dev-chips{\r\n  display: flex; flex-wrap: wrap; gap: 7px;\r\n  margin: 0 0 11px; padding: 0; list-style: none;\r\n}\r\n.cw-dev .cw-dev-chips.is-below{ margin: 11px 0 0; }\r\n.cw-dev .cw-dev-chips li{\r\n  margin: 0; padding: 5px 10px; border-radius: 7px;\r\n  font-size: 12px; font-weight: 700; line-height: 1.3;\r\n  overflow-wrap: anywhere;\r\n  opacity: 0; transform: translateY(10px);\r\n  transition: opacity .45s ease, transform .45s ease;\r\n}\r\n.cw-dev .cw-dev-card.is-in .cw-dev-chips li{ opacity: 1; transform: translateY(0); }\r\n.cw-dev .cw-dev-card.is-in .cw-dev-chips li:nth-child(1){ transition-delay: .40s; }\r\n.cw-dev .cw-dev-card.is-in .cw-dev-chips li:nth-child(2){ transition-delay: .50s; }\r\n.cw-dev .cw-dev-card.is-in .cw-dev-chips li:nth-child(3){ transition-delay: .60s; }\r\n\r\n\/* --- D\u00e9clinaisons par carte --- *\/\r\n.cw-dev .cw-d-a{\r\n  background: linear-gradient(\r\n    160deg,\r\n    color-mix(in srgb, var(--theme-palette-color-1) 45%, var(--theme-palette-color-6)) 0%,\r\n    var(--theme-palette-color-1) 55%,\r\n    var(--theme-palette-color-2) 100%\r\n  );\r\n  color: var(--theme-palette-color-11);\r\n}\r\n.cw-dev .cw-d-a .cw-dev-value{ color: var(--theme-palette-color-1); }\r\n.cw-dev .cw-d-a .cw-dev-bar i{ background: var(--theme-palette-color-1); }\r\n.cw-dev .cw-d-a .cw-dev-chips li{\r\n  background: color-mix(in srgb, var(--theme-palette-color-1) 10%, var(--theme-palette-color-11));\r\n  color: color-mix(in srgb, var(--theme-palette-color-1) 85%, var(--theme-palette-color-6));\r\n}\r\n\r\n.cw-dev .cw-d-b{\r\n  background: linear-gradient(\r\n    160deg,\r\n    color-mix(in srgb, var(--theme-palette-color-3) 22%, var(--theme-palette-color-11)) 0%,\r\n    color-mix(in srgb, var(--theme-palette-color-3) 55%, var(--theme-palette-color-11)) 100%\r\n  );\r\n}\r\n.cw-dev .cw-d-b .cw-dev-value{ color: color-mix(in srgb, var(--theme-palette-color-3) 80%, var(--theme-palette-color-6)); }\r\n.cw-dev .cw-d-b .cw-dev-bar i{ background: color-mix(in srgb, var(--theme-palette-color-3) 80%, var(--theme-palette-color-6)); }\r\n\r\n.cw-dev .cw-d-c{\r\n  background: linear-gradient(\r\n    160deg,\r\n    color-mix(in srgb, var(--theme-palette-color-1) 10%, var(--theme-palette-color-11)) 0%,\r\n    color-mix(in srgb, var(--theme-palette-color-1) 22%, var(--theme-palette-color-11)) 100%\r\n  );\r\n}\r\n.cw-dev .cw-d-c .cw-dev-value{ color: var(--theme-palette-color-1); }\r\n.cw-dev .cw-d-c .cw-dev-chips li{\r\n  background: color-mix(in srgb, var(--theme-palette-color-1) 10%, var(--theme-palette-color-11));\r\n  color: color-mix(in srgb, var(--theme-palette-color-1) 85%, var(--theme-palette-color-6));\r\n}\r\n\r\n.cw-dev .cw-d-d{\r\n  background: linear-gradient(\r\n    160deg,\r\n    color-mix(in srgb, var(--theme-palette-color-5) 28%, var(--theme-palette-color-11)) 0%,\r\n    var(--theme-palette-color-5) 100%\r\n  );\r\n}\r\n.cw-dev .cw-d-d .cw-dev-value{ color: color-mix(in srgb, var(--theme-palette-color-5) 62%, var(--theme-palette-color-6)); }\r\n.cw-dev .cw-d-d .cw-dev-bar i{ background: var(--theme-palette-color-5); }\r\n\r\n\/* --- Responsive --- *\/\r\n@media (max-width: 1280px){\r\n  .cw-dev{ grid-template-columns: repeat(2, minmax(0, 1fr)); }\r\n  .cw-dev .cw-dev-card{ min-height: 380px; }\r\n  .cw-dev .cw-dev-title{ font-size: clamp(21px, 2.4vw, 25px) !important; }\r\n  .cw-dev .cw-dev-text{ font-size: 15px; }\r\n}\r\n@media (max-width: 680px){\r\n  .cw-dev{ grid-template-columns: 1fr; }\r\n  .cw-dev .cw-dev-card{ min-height: 0; }\r\n  .cw-dev .cw-dev-text{ max-width: none; }\r\n  .cw-dev .cw-dev-stat{ margin-top: 22px; }\r\n}\r\n\r\n@media (hover: none){\r\n  .cw-dev .cw-dev-card.is-in:hover{ transform: translateY(0); box-shadow: 0 2px 10px rgba(12,26,60,.05); }\r\n  .cw-dev .cw-dev-card.is-in:hover .cw-dev-stat{ box-shadow: 0 10px 30px rgba(12,26,60,.08); }\r\n  .cw-dev .cw-dev-card.is-in:hover .cw-dev-value{ transform: none; }\r\n}\r\n@media (prefers-reduced-motion: reduce){\r\n  .cw-dev .cw-dev-card,\r\n  .cw-dev .cw-dev-stat,\r\n  .cw-dev .cw-dev-chips li,\r\n  .cw-dev .cw-dev-value,\r\n  .cw-dev .cw-dev-bar i{ transition: none !important; }\r\n  .cw-dev .cw-dev-card.is-in:hover{ transform: translateY(0); }\r\n  .cw-dev .cw-dev-card.is-in:hover .cw-dev-value{ transform: none; }\r\n}\r\n<\/style>\r\n\r\n<!-- Sans JavaScript, tout reste visible -->\r\n<noscript>\r\n<style>\r\n.cw-dev .cw-dev-card,\r\n.cw-dev .cw-dev-stat,\r\n.cw-dev .cw-dev-chips li{ opacity: 1 !important; transform: none !important; }\r\n.cw-dev .cw-dev-bar i{ width: var(--cw-w, 50%) !important; }\r\n<\/style>\r\n<\/noscript>\r\n\r\n<ul class=\"cw-dev\" role=\"list\">\r\n\r\n  <li class=\"cw-dev-card cw-d-a\">\r\n    <h3 class=\"cw-dev-title\">Apps mobiles iOS &amp; Android<\/h3>\r\n    <p class=\"cw-dev-text\">Votre business dans la poche de vos clients. Natif, performant, addictif.<\/p>\r\n    <div class=\"cw-dev-stat\">\r\n      <ul class=\"cw-dev-chips\" role=\"list\">\r\n        <li>React Native<\/li>\r\n        <li>Swift<\/li>\r\n        <li>Flutter<\/li>\r\n      <\/ul>\r\n      <div class=\"cw-dev-head\">\r\n        <span class=\"cw-dev-label\">Note store<\/span>\r\n        <span class=\"cw-dev-value\" data-cw-to=\"4.8\" data-cw-decimals=\"1\">4,8<\/span>\r\n      <\/div>\r\n    <\/div>\r\n  <\/li>\r\n\r\n  <li class=\"cw-dev-card cw-d-b\">\r\n    <h3 class=\"cw-dev-title\">Logiciels m\u00e9tier<\/h3>\r\n    <p class=\"cw-dev-text\">ERP, SaaS, CRM accessibles depuis n\u2019importe quel navigateur. Vos process, optimis\u00e9s.<\/p>\r\n    <div class=\"cw-dev-stat\">\r\n      <div class=\"cw-dev-head\">\r\n        <span class=\"cw-dev-label\">Temps gagn\u00e9<\/span>\r\n        <span class=\"cw-dev-value\" data-cw-to=\"12\" data-cw-suffix=\"&nbsp;h\/sem\">12 h\/sem<\/span>\r\n      <\/div>\r\n      <div class=\"cw-dev-bar\" role=\"img\" aria-label=\"Rep\u00e8re visuel : 12 heures gagn\u00e9es par semaine\">\r\n        <i data-cw-width=\"68%\" style=\"--cw-w:68%\"><\/i>\r\n      <\/div>\r\n    <\/div>\r\n  <\/li>\r\n\r\n  <li class=\"cw-dev-card cw-d-c\">\r\n    <h3 class=\"cw-dev-title\">APIs sur-mesure<\/h3>\r\n    <p class=\"cw-dev-text\">Le moteur invisible de votre \u00e9cosyst\u00e8me. Robuste, scalable, s\u00e9curis\u00e9.<\/p>\r\n    <div class=\"cw-dev-stat\">\r\n      <div class=\"cw-dev-head\">\r\n        <span class=\"cw-dev-label\">Disponibilit\u00e9<\/span>\r\n        <span class=\"cw-dev-value\" data-cw-to=\"99.9\" data-cw-decimals=\"1\" data-cw-suffix=\"%\">99,9%<\/span>\r\n      <\/div>\r\n      <ul class=\"cw-dev-chips is-below\" role=\"list\">\r\n        <li>REST<\/li>\r\n        <li>GraphQL<\/li>\r\n        <li>Webhooks<\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/li>\r\n\r\n  <li class=\"cw-dev-card cw-d-d\">\r\n    <h3 class=\"cw-dev-title\">Plateformes web custom<\/h3>\r\n    <p class=\"cw-dev-text\">Du MVP au produit mature, nous codons ce que les autres n\u2019osent pas imaginer.<\/p>\r\n    <div class=\"cw-dev-stat\">\r\n      <div class=\"cw-dev-head\">\r\n        <span class=\"cw-dev-label\">Du brief au MVP<\/span>\r\n        <span class=\"cw-dev-value\" data-cw-to=\"8\" data-cw-suffix=\"&nbsp;sem.\">8 sem.<\/span>\r\n      <\/div>\r\n      <div class=\"cw-dev-bar\" role=\"img\" aria-label=\"Rep\u00e8re visuel : 8 semaines du brief au MVP\">\r\n        <i data-cw-width=\"62%\" style=\"--cw-w:62%\"><\/i>\r\n      <\/div>\r\n    <\/div>\r\n  <\/li>\r\n\r\n<\/ul>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  var STEP = 140;        \/\/ D\u00e9calage entre deux cartes (ms)\r\n  var COUNT_MS = 1400;   \/\/ Dur\u00e9e du comptage\r\n\r\n  var reduced = window.matchMedia\r\n    && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  function easeOutCubic(t){ return 1 - Math.pow(1 - t, 3); }\r\n\r\n  function countUp(el) {\r\n    if (el.dataset.cwDone) return;\r\n    el.dataset.cwDone = '1';\r\n\r\n    var target = parseFloat(el.dataset.cwTo);\r\n    if (isNaN(target)) return;\r\n\r\n    var dec = parseInt(el.dataset.cwDecimals, 10) || 0;\r\n    var prefix = el.dataset.cwPrefix || '';\r\n    var suffix = el.dataset.cwSuffix || '';\r\n    var start = null;\r\n\r\n    \/\/ Espace ins\u00e9cable pour les milliers, virgule d\u00e9cimale.\r\n    var fmt = new Intl.NumberFormat('fr-FR', {\r\n      minimumFractionDigits: dec,\r\n      maximumFractionDigits: dec\r\n    });\r\n\r\n    function render(v){ el.textContent = prefix + fmt.format(v) + suffix; }\r\n\r\n    function frame(now) {\r\n      if (start === null) start = now;\r\n      var p = Math.min((now - start) \/ COUNT_MS, 1);\r\n      render(easeOutCubic(p) * target);\r\n      if (p < 1) requestAnimationFrame(frame);\r\n      else render(target);\r\n    }\r\n\r\n    render(0);\r\n    requestAnimationFrame(frame);\r\n  }\r\n\r\n  function reveal(card, animate) {\r\n    if (card.dataset.cwShown) return;\r\n    card.dataset.cwShown = '1';\r\n    card.classList.add('is-in');\r\n\r\n    card.querySelectorAll('.cw-dev-bar i').forEach(function (bar) {\r\n      bar.style.width = bar.dataset.cwWidth || '0%';\r\n    });\r\n\r\n    card.querySelectorAll('[data-cw-to]').forEach(function (val) {\r\n      if (!animate) { val.dataset.cwDone = '1'; return; }\r\n      setTimeout(function () { countUp(val); }, 300);\r\n    });\r\n  }\r\n\r\n  function setup(root) {\r\n    if (root.dataset.cwAnim) return;\r\n    root.dataset.cwAnim = '1';\r\n\r\n    var cards = Array.prototype.slice.call(root.querySelectorAll('.cw-dev-card'));\r\n    if (!cards.length) return;\r\n\r\n    if (reduced || !('IntersectionObserver' in window)) {\r\n      cards.forEach(function (card) { reveal(card, false); });\r\n      return;\r\n    }\r\n\r\n    var io = new IntersectionObserver(function (entries) {\r\n      entries.forEach(function (entry) {\r\n        if (!entry.isIntersecting) return;\r\n        var card = entry.target;\r\n        io.unobserve(card);\r\n        setTimeout(function () { reveal(card, true); }, cards.indexOf(card) * STEP);\r\n      });\r\n    }, { threshold: 0.15, rootMargin: '0px 0px -5% 0px' });\r\n\r\n    cards.forEach(function (card) { io.observe(card); });\r\n\r\n    \/\/ Filet de s\u00e9curit\u00e9 : si rien ne s'est d\u00e9clench\u00e9 au bout de 3 s.\r\n    setTimeout(function () {\r\n      cards.forEach(function (card) { reveal(card, true); });\r\n    }, 3000);\r\n  }\r\n\r\n  function boot() {\r\n    document.querySelectorAll('.cw-dev').forEach(setup);\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', boot);\r\n  } else {\r\n    boot();\r\n  }\r\n\r\n  window.addEventListener('load', boot);\r\n\r\n  \/\/ \u00c9diteur Elementor : le widget est rendu en AJAX.\r\n  if (window.jQuery) {\r\n    jQuery(window).on('elementor\/frontend\/init', boot);\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b20384d e-flex e-con-boxed e-con e-parent\" data-id=\"b20384d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dac3fdb elementor-widget elementor-widget-heading\" data-id=\"dac3fdb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Une id\u00e9e brute. <span class=\"title-blue\">Un produit qui claque.<\/span><\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9eca594 e-con-full e-flex e-con e-child\" data-id=\"9eca594\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-fee9ba8 e-con-full e-flex e-con e-child\" data-id=\"fee9ba8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4024f22 elementor-widget elementor-widget-text-editor\" data-id=\"4024f22\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Nous ne croyons pas aux solutions g\u00e9n\u00e9riques. Votre entreprise est unique, votre outil doit l\u2019\u00eatre aussi. Notre \u00e9quipe transforme vos besoins m\u00e9tier en applications taill\u00e9es au millim\u00e8tre, pens\u00e9es pour \u00e9voluer avec vous.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0923874 elementor-widget elementor-widget-html\" data-id=\"0923874\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CEWeb Agency \u2014 Liste \u00ab Maintenance \u00bb \u00e0 fl\u00e8ches\r\n     \u00c0 coller dans un widget Elementor \u00ab HTML \u00bb.\r\n     Le texte h\u00e9rite de la couleur globale du th\u00e8me.\r\n     Les accents utilisent les variables de palette du th\u00e8me.\r\n     Animations : apparition au d\u00e9filement + survol des lignes.\r\n     ============================================================ -->\r\n<style>\r\n.cw-arrows{\r\n  list-style: none; margin: 0; padding: 0;\r\n  font-family: inherit;\r\n}\r\n.cw-arrows *{ box-sizing: border-box; }\r\n\r\n.cw-arrows li{\r\n  display: grid;\r\n  grid-template-columns: 30px minmax(0, 1fr);\r\n  column-gap: 14px;\r\n  margin: 0; padding: clamp(18px, 2vw, 22px) 0;\r\n  font-size: clamp(15px, 1.15vw, 17px); line-height: 1.65;\r\n  border-top: 1px solid var(--theme-palette-color-9);\r\n  \/* \u00c9tat de d\u00e9part de l'animation *\/\r\n  opacity: 0; transform: translateY(18px);\r\n  transition: opacity .55s cubic-bezier(.22,.61,.36,1),\r\n              transform .55s cubic-bezier(.22,.61,.36,1);\r\n}\r\n.cw-arrows li:first-child{ border-top: 0; padding-top: 0; }\r\n.cw-arrows li.is-in{ opacity: 1; transform: translateY(0); }\r\n\r\n.cw-arrows strong{\r\n  font-weight: 700;\r\n  color: var(--theme-palette-color-6);\r\n}\r\n.cw-arrows .cw-dash{ opacity: .5; }\r\n\r\n\/* --- Fl\u00e8che --- *\/\r\n.cw-arrows .cw-arrow{\r\n  display: inline-flex; align-items: center; justify-content: flex-start;\r\n  width: 30px; height: 1.65em;\r\n  color: var(--theme-palette-color-1);\r\n  transition: transform .25s cubic-bezier(.34,1.4,.64,1), color .25s ease;\r\n}\r\n.cw-arrows .cw-arrow svg{ display: block; width: 20px; height: 20px; }\r\n\r\n\/* --- Survol de la ligne --- *\/\r\n.cw-arrows li:hover .cw-arrow{ transform: translateX(6px); }\r\n.cw-arrows li:hover strong{ color: var(--theme-palette-color-1); }\r\n.cw-arrows li.is-in:hover{ transform: translateY(0); }\r\n\r\n\/* --- Responsive --- *\/\r\n@media (max-width: 520px){\r\n  .cw-arrows li{ grid-template-columns: 24px minmax(0, 1fr); column-gap: 10px; }\r\n  .cw-arrows .cw-arrow{ width: 24px; }\r\n  .cw-arrows .cw-arrow svg{ width: 17px; height: 17px; }\r\n}\r\n\r\n@media (hover: none){\r\n  .cw-arrows li:hover .cw-arrow{ transform: none; }\r\n  .cw-arrows li:hover strong{ color: var(--theme-palette-color-6); }\r\n}\r\n@media (prefers-reduced-motion: reduce){\r\n  .cw-arrows li,\r\n  .cw-arrows .cw-arrow{ transition: none !important; }\r\n  .cw-arrows li:hover .cw-arrow{ transform: none; }\r\n}\r\n<\/style>\r\n\r\n<!-- Sans JavaScript, tout reste visible -->\r\n<noscript>\r\n<style>.cw-arrows li{ opacity: 1 !important; transform: none !important; }<\/style>\r\n<\/noscript>\r\n\r\n<ul class=\"cw-arrows\" role=\"list\">\r\n\r\n  <li>\r\n    <span class=\"cw-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 12h15M13 6l6 6-6 6\"\/><\/svg><\/span>\r\n    <span><strong>Sur-mesure int\u00e9gral<\/strong> <span class=\"cw-dash\">:<\/span> chaque ligne de code r\u00e9pond \u00e0 votre besoin. Vous gardez le contr\u00f4le, nous gardons le cap.<\/span>\r\n  <\/li>\r\n\r\n  <li>\r\n    <span class=\"cw-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 12h15M13 6l6 6-6 6\"\/><\/svg><\/span>\r\n    <span><strong>Agile & rapide<\/strong> <span class=\"cw-dash\">:<\/span> sprints courts, livraisons fr\u00e9quentes, ajustements en temps r\u00e9el. Nous avan\u00e7ons avec vous.<\/span>\r\n  <\/li>\r\n\r\n  <li>\r\n    <span class=\"cw-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 12h15M13 6l6 6-6 6\"\/><\/svg><\/span>\r\n    <span><strong>Expertise technique<\/strong> <span class=\"cw-dash\">:<\/span> stack moderne, outils \u00e0 jour, bonnes pratiques. Pas de dette technique \u00e0 l\u2019horizon.<\/span>\r\n  <\/li>\r\n\r\n  <li>\r\n    <span class=\"cw-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 12h15M13 6l6 6-6 6\"\/><\/svg><\/span>\r\n    <span><strong>Partenaire long terme<\/strong> <span class=\"cw-dash\">:<\/span> le code livr\u00e9 n\u2019est qu\u2019un d\u00e9but. Nous vous accompagnons, nous faisons \u00e9voluer, nous optimisons.<\/span>\r\n  <\/li>\r\n\r\n<\/ul>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  var STEP = 120; \/\/ D\u00e9calage entre deux lignes (ms)\r\n\r\n  var reduced = window.matchMedia\r\n    && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  function setup(root) {\r\n    if (root.dataset.cwAnim) return;\r\n    root.dataset.cwAnim = '1';\r\n\r\n    var items = Array.prototype.slice.call(root.querySelectorAll('li'));\r\n    if (!items.length) return;\r\n\r\n    function show(el) {\r\n      if (el.dataset.cwShown) return;\r\n      el.dataset.cwShown = '1';\r\n      el.classList.add('is-in');\r\n    }\r\n\r\n    if (reduced || !('IntersectionObserver' in window)) {\r\n      items.forEach(show);\r\n      return;\r\n    }\r\n\r\n    var io = new IntersectionObserver(function (entries) {\r\n      entries.forEach(function (entry) {\r\n        if (!entry.isIntersecting) return;\r\n        var el = entry.target;\r\n        io.unobserve(el);\r\n        setTimeout(function () { show(el); }, items.indexOf(el) * STEP);\r\n      });\r\n    }, { threshold: 0.25, rootMargin: '0px 0px -5% 0px' });\r\n\r\n    items.forEach(function (el) { io.observe(el); });\r\n\r\n    \/\/ Filet de s\u00e9curit\u00e9 : si rien ne s'est d\u00e9clench\u00e9 au bout de 3 s.\r\n    setTimeout(function () { items.forEach(show); }, 3000);\r\n  }\r\n\r\n  function boot() {\r\n    document.querySelectorAll('.cw-arrows').forEach(setup);\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', boot);\r\n  } else {\r\n    boot();\r\n  }\r\n\r\n  window.addEventListener('load', boot);\r\n\r\n  \/\/ \u00c9diteur Elementor : le widget est rendu en AJAX.\r\n  if (window.jQuery) {\r\n    jQuery(window).on('elementor\/frontend\/init', boot);\r\n  }\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a574e9 elementor-align-left elementor-mobile-align-center elementor-widget elementor-widget-button\" data-id=\"0a574e9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/myceweb.app\/estimate?offer=hand_made_logiciel&#038;lang=en\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" role=\"img\" aria-label=\"Fl&#xE8;che\"><path d=\"M3.5 10h13M11.5 5l5 5-5 5\" stroke=\"#FFFFFF\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Demander mon devis personnalis\u00e9<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3301bf0 e-con-full e-flex e-con e-child\" data-id=\"3301bf0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ebdbfdd elementor-widget elementor-widget-html\" data-id=\"ebdbfdd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     CEWeb Agency \u2014 \u00ab Le rythme d\u2019un projet hand made \u00bb\r\n     Version claire\r\n     \u00c0 coller dans un widget Elementor HTML\r\n     ============================================================ -->\r\n\r\n<style>\r\n\r\n\/* ============================================================\r\n   CONTENEUR\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm {\r\n  margin: 0;\r\n  padding: clamp(26px, 3.2vw, 44px);\r\n\r\n  border-radius: 24px;\r\n\r\n  background: var(--theme-palette-color-10);\r\n  color: var(--theme-palette-color-6);\r\n\r\n  font-family: Inter, system-ui, -apple-system, \"Segoe UI\", sans-serif;\r\n}\r\n\r\n.cw-rhythm * {\r\n  box-sizing: border-box;\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   SURTITRE\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm .cw-rhythm-eyebrow {\r\n  margin: 0 0 clamp(20px, 2.4vw, 30px);\r\n\r\n  font-size: 13px;\r\n  font-weight: 700;\r\n  line-height: 1.3;\r\n\r\n  letter-spacing: .16em;\r\n  text-transform: uppercase;\r\n\r\n  color: var(--theme-palette-color-3);\r\n\r\n  opacity: 0;\r\n  transform: translateY(14px);\r\n\r\n  transition:\r\n    opacity .5s ease,\r\n    transform .5s ease;\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-eyebrow.is-in {\r\n  opacity: 1;\r\n  transform: translateY(0);\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   LISTE\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm .cw-rhythm-list {\r\n  display: flex;\r\n  flex-direction: column;\r\n\r\n  gap: clamp(14px, 1.6vw, 20px);\r\n\r\n  list-style: none;\r\n\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   ITEMS\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm .cw-rhythm-row {\r\n  margin: 0;\r\n\r\n  padding:\r\n    clamp(20px, 2.2vw, 28px)\r\n    clamp(20px, 2.2vw, 30px);\r\n\r\n  border-radius: 16px;\r\n\r\n  background: rgba(255, 255, 255, .58);\r\n\r\n  border:\r\n    1px solid\r\n    color-mix(\r\n      in srgb,\r\n      var(--theme-palette-color-6) 9%,\r\n      transparent\r\n    );\r\n\r\n  opacity: 0;\r\n  transform: translateY(22px);\r\n\r\n  transition:\r\n    opacity .6s cubic-bezier(.22,.61,.36,1),\r\n    transform .6s cubic-bezier(.22,.61,.36,1),\r\n    background-color .25s ease,\r\n    border-color .25s ease,\r\n    box-shadow .25s ease;\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-row.is-in {\r\n  opacity: 1;\r\n  transform: translateY(0);\r\n}\r\n\r\n\r\n\/* --- Survol des items --- *\/\r\n\r\n.cw-rhythm .cw-rhythm-row.is-in:hover {\r\n  background: rgba(255, 255, 255, .90);\r\n\r\n  border-color:\r\n    color-mix(\r\n      in srgb,\r\n      var(--theme-palette-color-1) 30%,\r\n      transparent\r\n    );\r\n\r\n  box-shadow:\r\n    0 12px 30px\r\n    color-mix(\r\n      in srgb,\r\n      var(--theme-palette-color-6) 8%,\r\n      transparent\r\n    );\r\n\r\n  transform: translateY(-3px);\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   TITRE + VALEUR\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm .cw-rhythm-head {\r\n  display: flex;\r\n\r\n  align-items: baseline;\r\n  justify-content: space-between;\r\n\r\n  flex-wrap: wrap;\r\n\r\n  gap: 6px 18px;\r\n\r\n  margin-bottom: 16px;\r\n}\r\n\r\n\r\n\/* --- Texte --- *\/\r\n\r\n.cw-rhythm .cw-rhythm-label {\r\n  flex: 1 1 auto;\r\n  min-width: 0;\r\n\r\n  font-size: clamp(15px, 1.2vw, 17px);\r\n  line-height: 1.4;\r\n\r\n  color: var(--theme-palette-color-6);\r\n\r\n  opacity: .88;\r\n}\r\n\r\n\r\n\/* --- Chiffres --- *\/\r\n\r\n.cw-rhythm .cw-rhythm-value {\r\n  flex: 0 0 auto;\r\n\r\n  font-family: Fraunces, Georgia, serif;\r\n  font-weight: 700;\r\n\r\n  font-size: clamp(26px, 2.8vw, 36px);\r\n  line-height: 1;\r\n\r\n  letter-spacing: -.02em;\r\n\r\n  font-variant-numeric: tabular-nums;\r\n\r\n  white-space: nowrap;\r\n\r\n  transition: transform .25s ease;\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-row.is-in:hover .cw-rhythm-value {\r\n  transform: scale(1.05);\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   BARRES\r\n   ============================================================ *\/\r\n\r\n.cw-rhythm .cw-rhythm-bar {\r\n  height: 8px;\r\n\r\n  border-radius: 50px;\r\n  overflow: hidden;\r\n\r\n  background:\r\n    color-mix(\r\n      in srgb,\r\n      var(--theme-palette-color-6) 10%,\r\n      transparent\r\n    );\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-bar i {\r\n  display: block;\r\n\r\n  height: 100%;\r\n  width: 0;\r\n\r\n  border-radius: 50px;\r\n\r\n  font-style: normal;\r\n\r\n  transition:\r\n    width 1.2s cubic-bezier(.22,.61,.36,1) .35s,\r\n    filter .25s ease;\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-row.is-in:hover .cw-rhythm-bar i {\r\n  filter: brightness(1.08);\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   COULEURS DES 3 ITEMS\r\n   ============================================================ *\/\r\n\r\n\/* --- Item 1 --- *\/\r\n\r\n.cw-rhythm .cw-r1 .cw-rhythm-value {\r\n  color: var(--theme-palette-color-3);\r\n}\r\n\r\n.cw-rhythm .cw-r1 .cw-rhythm-bar i {\r\n  background: var(--theme-palette-color-3);\r\n}\r\n\r\n\r\n\/* --- Item 2 --- *\/\r\n\r\n.cw-rhythm .cw-r2 .cw-rhythm-value {\r\n  color: var(--theme-palette-color-2);\r\n}\r\n\r\n.cw-rhythm .cw-r2 .cw-rhythm-bar i {\r\n  background: var(--theme-palette-color-2);\r\n}\r\n\r\n\r\n\/* --- Item 3 --- *\/\r\n\r\n.cw-rhythm .cw-r3 .cw-rhythm-value {\r\n  color: var(--theme-palette-color-5);\r\n}\r\n\r\n.cw-rhythm .cw-r3 .cw-rhythm-bar i {\r\n  background: var(--theme-palette-color-5);\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   RESPONSIVE\r\n   ============================================================ *\/\r\n\r\n@media (max-width: 520px) {\r\n\r\n  .cw-rhythm .cw-rhythm-head {\r\n    margin-bottom: 14px;\r\n  }\r\n\r\n  .cw-rhythm .cw-rhythm-value {\r\n    font-size: 28px;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   TACTILE\r\n   ============================================================ *\/\r\n\r\n@media (hover: none) {\r\n\r\n  .cw-rhythm .cw-rhythm-row.is-in:hover {\r\n    background: rgba(255, 255, 255, .58);\r\n\r\n    border-color:\r\n      color-mix(\r\n        in srgb,\r\n        var(--theme-palette-color-6) 9%,\r\n        transparent\r\n      );\r\n\r\n    box-shadow: none;\r\n\r\n    transform: translateY(0);\r\n  }\r\n\r\n  .cw-rhythm .cw-rhythm-row.is-in:hover .cw-rhythm-value {\r\n    transform: none;\r\n  }\r\n\r\n}\r\n\r\n\r\n\/* ============================================================\r\n   ACCESSIBILIT\u00c9 \u2014 R\u00c9DUCTION DES ANIMATIONS\r\n   ============================================================ *\/\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n\r\n  .cw-rhythm .cw-rhythm-eyebrow,\r\n  .cw-rhythm .cw-rhythm-row,\r\n  .cw-rhythm .cw-rhythm-value,\r\n  .cw-rhythm .cw-rhythm-bar i {\r\n    transition: none !important;\r\n  }\r\n\r\n  .cw-rhythm .cw-rhythm-row.is-in:hover {\r\n    transform: translateY(0);\r\n  }\r\n\r\n}\r\n\r\n<\/style>\r\n\r\n\r\n<!-- ============================================================\r\n     FALLBACK SANS JAVASCRIPT\r\n     ============================================================ -->\r\n\r\n<noscript>\r\n\r\n<style>\r\n\r\n.cw-rhythm .cw-rhythm-eyebrow,\r\n.cw-rhythm .cw-rhythm-row {\r\n  opacity: 1 !important;\r\n  transform: none !important;\r\n}\r\n\r\n.cw-rhythm .cw-rhythm-bar i {\r\n  width: var(--cw-w, 50%) !important;\r\n}\r\n\r\n<\/style>\r\n\r\n<\/noscript>\r\n\r\n\r\n<!-- ============================================================\r\n     HTML\r\n     ============================================================ -->\r\n\r\n<section class=\"cw-rhythm\">\r\n\r\n  <p class=\"cw-rhythm-eyebrow\">\r\n    Le rythme d\u2019un projet hand made\r\n  <\/p>\r\n\r\n  <ul class=\"cw-rhythm-list\" role=\"list\">\r\n\r\n\r\n    <!-- ITEM 1 -->\r\n\r\n    <li class=\"cw-rhythm-row cw-r1\">\r\n\r\n      <div class=\"cw-rhythm-head\">\r\n\r\n        <span class=\"cw-rhythm-label\">\r\n          Retour sur votre brief\r\n        <\/span>\r\n\r\n        <span\r\n          class=\"cw-rhythm-value\"\r\n          data-cw-to=\"48\"\r\n          data-cw-suffix=\"&nbsp;h\">\r\n          48 h\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n      <div\r\n        class=\"cw-rhythm-bar\"\r\n        role=\"img\"\r\n        aria-label=\"Rep\u00e8re visuel : retour sur votre brief sous 48 heures\">\r\n\r\n        <i\r\n          data-cw-width=\"88%\"\r\n          style=\"--cw-w:88%\">\r\n        <\/i>\r\n\r\n      <\/div>\r\n\r\n    <\/li>\r\n\r\n\r\n    <!-- ITEM 2 -->\r\n\r\n    <li class=\"cw-rhythm-row cw-r2\">\r\n\r\n      <div class=\"cw-rhythm-head\">\r\n\r\n        <span class=\"cw-rhythm-label\">\r\n          Dur\u00e9e d\u2019un sprint\r\n        <\/span>\r\n\r\n        <span\r\n          class=\"cw-rhythm-value\"\r\n          data-cw-from=\"2\"\r\n          data-cw-to=\"4\"\r\n          data-cw-prefix=\"2 \u00e0&nbsp;\"\r\n          data-cw-suffix=\"&nbsp;sem.\">\r\n          2 \u00e0 4 sem.\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n      <div\r\n        class=\"cw-rhythm-bar\"\r\n        role=\"img\"\r\n        aria-label=\"Rep\u00e8re visuel : sprint de 2 \u00e0 4 semaines\">\r\n\r\n        <i\r\n          data-cw-width=\"60%\"\r\n          style=\"--cw-w:60%\">\r\n        <\/i>\r\n\r\n      <\/div>\r\n\r\n    <\/li>\r\n\r\n\r\n    <!-- ITEM 3 -->\r\n\r\n    <li class=\"cw-rhythm-row cw-r3\">\r\n\r\n      <div class=\"cw-rhythm-head\">\r\n\r\n        <span class=\"cw-rhythm-label\">\r\n          Code livr\u00e9 et document\u00e9\r\n        <\/span>\r\n\r\n        <span\r\n          class=\"cw-rhythm-value\"\r\n          data-cw-to=\"100\"\r\n          data-cw-suffix=\"%\">\r\n          100%\r\n        <\/span>\r\n\r\n      <\/div>\r\n\r\n      <div\r\n        class=\"cw-rhythm-bar\"\r\n        role=\"img\"\r\n        aria-label=\"Rep\u00e8re visuel : 100 % du code livr\u00e9 et document\u00e9\">\r\n\r\n        <i\r\n          data-cw-width=\"100%\"\r\n          style=\"--cw-w:100%\">\r\n        <\/i>\r\n\r\n      <\/div>\r\n\r\n    <\/li>\r\n\r\n\r\n  <\/ul>\r\n\r\n<\/section>\r\n\r\n\r\n<!-- ============================================================\r\n     JAVASCRIPT\r\n     ============================================================ -->\r\n\r\n<script>\r\n\r\n(function () {\r\n\r\n  'use strict';\r\n\r\n  var STEP = 150;\r\n  var COUNT_MS = 1500;\r\n\r\n  var reduced =\r\n    window.matchMedia &&\r\n    window.matchMedia(\r\n      '(prefers-reduced-motion: reduce)'\r\n    ).matches;\r\n\r\n\r\n  function easeOutCubic(t) {\r\n    return 1 - Math.pow(1 - t, 3);\r\n  }\r\n\r\n\r\n  function countUp(el) {\r\n\r\n    if (el.dataset.cwDone) return;\r\n\r\n    el.dataset.cwDone = '1';\r\n\r\n    var target =\r\n      parseFloat(el.dataset.cwTo);\r\n\r\n    if (isNaN(target)) return;\r\n\r\n    var dec =\r\n      parseInt(\r\n        el.dataset.cwDecimals,\r\n        10\r\n      ) || 0;\r\n\r\n    var prefix =\r\n      el.dataset.cwPrefix || '';\r\n\r\n    var suffix =\r\n      el.dataset.cwSuffix || '';\r\n\r\n    var from =\r\n      parseFloat(el.dataset.cwFrom);\r\n\r\n    if (isNaN(from)) {\r\n      from = 0;\r\n    }\r\n\r\n    var start = null;\r\n\r\n    var fmt =\r\n      new Intl.NumberFormat(\r\n        'fr-FR',\r\n        {\r\n          minimumFractionDigits: dec,\r\n          maximumFractionDigits: dec\r\n        }\r\n      );\r\n\r\n\r\n    function render(v) {\r\n\r\n      el.textContent =\r\n        prefix +\r\n        fmt.format(v) +\r\n        suffix;\r\n\r\n    }\r\n\r\n\r\n    function frame(now) {\r\n\r\n      if (start === null) {\r\n        start = now;\r\n      }\r\n\r\n      var p =\r\n        Math.min(\r\n          (now - start) \/ COUNT_MS,\r\n          1\r\n        );\r\n\r\n      render(\r\n        from +\r\n        easeOutCubic(p) *\r\n        (target - from)\r\n      );\r\n\r\n      if (p < 1) {\r\n\r\n        requestAnimationFrame(frame);\r\n\r\n      } else {\r\n\r\n        render(target);\r\n\r\n      }\r\n\r\n    }\r\n\r\n    render(from);\r\n\r\n    requestAnimationFrame(frame);\r\n\r\n  }\r\n\r\n\r\n  function reveal(el, animate) {\r\n\r\n    if (el.dataset.cwShown) return;\r\n\r\n    el.dataset.cwShown = '1';\r\n\r\n    el.classList.add('is-in');\r\n\r\n\r\n    el\r\n      .querySelectorAll('.cw-rhythm-bar i')\r\n      .forEach(function (bar) {\r\n\r\n        bar.style.width =\r\n          bar.dataset.cwWidth || '0%';\r\n\r\n      });\r\n\r\n\r\n    el\r\n      .querySelectorAll('[data-cw-to]')\r\n      .forEach(function (val) {\r\n\r\n        if (!animate) {\r\n\r\n          val.dataset.cwDone = '1';\r\n\r\n          return;\r\n\r\n        }\r\n\r\n        setTimeout(\r\n          function () {\r\n\r\n            countUp(val);\r\n\r\n          },\r\n          260\r\n        );\r\n\r\n      });\r\n\r\n  }\r\n\r\n\r\n  function setup(root) {\r\n\r\n    if (root.dataset.cwAnim) return;\r\n\r\n    root.dataset.cwAnim = '1';\r\n\r\n\r\n    var items =\r\n      Array.prototype.slice.call(\r\n        root.querySelectorAll(\r\n          '.cw-rhythm-eyebrow, .cw-rhythm-row'\r\n        )\r\n      );\r\n\r\n    if (!items.length) return;\r\n\r\n\r\n    if (\r\n      reduced ||\r\n      !('IntersectionObserver' in window)\r\n    ) {\r\n\r\n      items.forEach(\r\n        function (el) {\r\n\r\n          reveal(el, false);\r\n\r\n        }\r\n      );\r\n\r\n      return;\r\n    }\r\n\r\n\r\n    var io =\r\n      new IntersectionObserver(\r\n\r\n        function (entries) {\r\n\r\n          entries.forEach(\r\n\r\n            function (entry) {\r\n\r\n              if (!entry.isIntersecting) {\r\n                return;\r\n              }\r\n\r\n              var el =\r\n                entry.target;\r\n\r\n              io.unobserve(el);\r\n\r\n              setTimeout(\r\n\r\n                function () {\r\n\r\n                  reveal(el, true);\r\n\r\n                },\r\n\r\n                items.indexOf(el) * STEP\r\n\r\n              );\r\n\r\n            }\r\n\r\n          );\r\n\r\n        },\r\n\r\n        {\r\n          threshold: 0.25,\r\n          rootMargin: '0px 0px -5% 0px'\r\n        }\r\n\r\n      );\r\n\r\n\r\n    items.forEach(\r\n      function (el) {\r\n\r\n        io.observe(el);\r\n\r\n      }\r\n    );\r\n\r\n\r\n    setTimeout(\r\n\r\n      function () {\r\n\r\n        items.forEach(\r\n          function (el) {\r\n\r\n            reveal(el, true);\r\n\r\n          }\r\n        );\r\n\r\n      },\r\n\r\n      3000\r\n\r\n    );\r\n\r\n  }\r\n\r\n\r\n  function boot() {\r\n\r\n    document\r\n      .querySelectorAll('.cw-rhythm')\r\n      .forEach(setup);\r\n\r\n  }\r\n\r\n\r\n  if (\r\n    document.readyState === 'loading'\r\n  ) {\r\n\r\n    document.addEventListener(\r\n      'DOMContentLoaded',\r\n      boot\r\n    );\r\n\r\n  } else {\r\n\r\n    boot();\r\n\r\n  }\r\n\r\n\r\n  window.addEventListener(\r\n    'load',\r\n    boot\r\n  );\r\n\r\n\r\n  if (window.jQuery) {\r\n\r\n    jQuery(window).on(\r\n      'elementor\/frontend\/init',\r\n      boot\r\n    );\r\n\r\n  }\r\n\r\n})();\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d0ee9b1 e-flex e-con-boxed e-con e-parent\" data-id=\"d0ee9b1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b022bef e-con-full e-flex e-con e-child\" data-id=\"b022bef\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-564b05d e-con-full e-flex e-con e-child\" data-id=\"564b05d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fed1e23 elementor-widget elementor-widget-text-editor\" data-id=\"fed1e23\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Notre stack<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c121784 elementor-widget elementor-widget-heading\" data-id=\"c121784\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Nos armes de pr\u00e9dilection<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39d9ff0 elementor-widget elementor-widget-text-editor\" data-id=\"39d9ff0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Frontend, backend, mobile, cloud\u00a0: nous choisissons la techno qui sert votre projet, pas l\u2019inverse.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6b0c8f1 e-con-full e-flex e-con e-child\" data-id=\"6b0c8f1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69dad06 elementor-widget elementor-widget-ceweb_cartes\" data-id=\"69dad06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"ceweb_cartes.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"ceweb-cartes ceweb-cartes--link-card ceweb-cartes--accent-badge ceweb-cartes--badge-tint ceweb-cartes--hover ceweb-cartes--badge-hover-fill ceweb-cartes--reveal\">\r\n            <div class=\"ceweb-cartes__grid\">\r\n                                            <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 0\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-233910a\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><path d=\"M9.5 8.5 6 12l3.5 3.5\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><path d=\"M14.5 8.5 18 12l-3.5 3.5\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><rect x=\"2.5\" y=\"4\" width=\"19\" height=\"16\" rx=\"3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/rect><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">Frontend<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>React, Next.js, Vue. Des interfaces rapides, accessibles et maintenables.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                                    <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 1\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-e891afc\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><ellipse cx=\"12\" cy=\"6\" rx=\"8\" ry=\"3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/ellipse><path d=\"M4 6v12c0 1.7 3.6 3 8 3s8-1.3 8-3V6\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><path d=\"M4 12c0 1.7 3.6 3 8 3s8-1.3 8-3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">Backend<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>Node.js, Laravel, Asp.NET. Des APIs robustes, test\u00e9es et document\u00e9es.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                                    <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 2\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-499c2c2\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><rect x=\"6\" y=\"2.5\" width=\"12\" height=\"19\" rx=\"3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/rect><path d=\"M10.5 18.5h3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">Mobile<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>React Native, Flutter, Swift. Natif quand il faut, cross-platform quand c\u2019est pertinent.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                                    <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 3\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-32a636b\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><rect x=\"3\" y=\"3.5\" width=\"18\" height=\"17\" rx=\"3\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/rect><path d=\"M3 9.5h18M3 14.5h18M9 9.5v11\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">Donn\u00e9es<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>MySQL, PostgreSQL, MongoDB. Mod\u00e9lisation propre, migrations versionn\u00e9es, sauvegardes.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                                    <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 4\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-e075565\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><path d=\"M7.5 18.5A4 4 0 0 1 7 10.6a5 5 0 0 1 9.6-.6A3.8 3.8 0 0 1 17 18.5H7.5Z\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><path d=\"M12 8.5v-4M9.5 6 12 4.5 14.5 6\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">Cloud &amp; DevOps<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>AWS, Azure, Docker. D\u00e9ploiements reproductibles, environnements isol\u00e9s, CI\/CD.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                                    <div class=\"ceweb-cartes__item\" style=\"--ceweb-cartes-i: 5\">\r\n        <article class=\"ceweb-cartes__card elementor-repeater-item-8e0beb3\">\r\n\r\n                            <span class=\"ceweb-cartes__badge\">\r\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:c2pa=\"http:\/\/c2pa.org\/manifest\" width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"fill:none !important\"><metadata><\/metadata><rect x=\"5\" y=\"7\" width=\"14\" height=\"12\" rx=\"3.5\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/rect><path d=\"M12 7V3.5M9.5 13h.01M14.5 13h.01M9.5 16.5h5\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><path d=\"M2.5 12.5h2.5M19 12.5h2.5\" style=\"fill:none !important;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round\" fill=\"none\" stroke=\"currentColor\"><\/path><\/svg>                <\/span>\r\n            \r\n                            <h3 class=\"ceweb-cartes__title\">IA &amp; automatisation<\/h3>\r\n            \r\n                            <div class=\"ceweb-cartes__text\"><p>Int\u00e9grations LLM, agents m\u00e9tier, automatisations internes. L\u2019IA au service du process.<\/p>\n<\/div>\r\n            \r\n            \r\n        <\/article>\r\n        <\/div>\r\n                                    <\/div>\r\n        <\/div>\r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e8e2efc e-flex e-con-boxed e-con e-parent\" data-id=\"e8e2efc\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0fc6d4f elementor-widget elementor-widget-ceweb_methode\" data-id=\"0fc6d4f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"ceweb_methode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <div class=\"ceweb-methode ceweb-methode--fill-solid ceweb-methode--badge-solid ceweb-methode--box-none ceweb-methode--hover ceweb-methode--reveal\">\n\n                            <div class=\"ceweb-methode__header\">\n\n                                            <p class=\"ceweb-methode__eyebrow\" style=\"--ceweb-methode-i: 0\">Notre m\u00e9thode<\/p>\n                    \n                                            <h2 class=\"ceweb-methode__title\" style=\"--ceweb-methode-i: 1\">Comment \u00e7a se passe ?<\/h2>\n                    \n                                            <p class=\"ceweb-methode__subtitle\" style=\"--ceweb-methode-i: 2\">Du brief au build, sans zone d\u2019ombre. Vous validez \u00e0 chaque \u00e9tape, et vous voyez le produit grandir en direct.<\/p>\n                    \n                <\/div>\n            \n                            <ol class=\"ceweb-methode__steps\">\n                                                    <li class=\"ceweb-methode__step elementor-repeater-item-086273e\" style=\"--ceweb-methode-i: 3\">\n            <div class=\"ceweb-methode__card\">\n\n                        <div class=\"ceweb-methode__badge-row\">\n            <span class=\"ceweb-methode__connector\" aria-hidden=\"true\"><\/span>\n            <span class=\"ceweb-methode__badge\">\n                                    <span class=\"ceweb-methode__number\">01<\/span>\n                            <\/span>\n        <\/div>\n        \n                                    <div class=\"ceweb-methode__body\">\n\n                                                    <h3 class=\"ceweb-methode__step-title\">Cadrage produit<\/h3>\n                        \n                                                    <div class=\"ceweb-methode__text\"><p>Ateliers avec vos \u00e9quipes pour <strong>traduire les besoins m\u00e9tier<\/strong> en p\u00e9rim\u00e8tre fonctionnel prioris\u00e9. Vous repartez avec un backlog, un chiffrage clair et un <strong>cahier des charges<\/strong> pr\u00e9cis.<\/p><\/div>\n                        \n                        \n                    <\/div>\n                \n            <\/div>\n        <\/li>\n                                                            <li class=\"ceweb-methode__step elementor-repeater-item-88f136d\" style=\"--ceweb-methode-i: 4\">\n            <div class=\"ceweb-methode__card\">\n\n                        <div class=\"ceweb-methode__badge-row\">\n            <span class=\"ceweb-methode__connector\" aria-hidden=\"true\"><\/span>\n            <span class=\"ceweb-methode__badge\">\n                                    <span class=\"ceweb-methode__number\">02<\/span>\n                            <\/span>\n        <\/div>\n        \n                                    <div class=\"ceweb-methode__body\">\n\n                                                    <h3 class=\"ceweb-methode__step-title\">D\u00e9veloppement<\/h3>\n                        \n                                                    <div class=\"ceweb-methode__text\"><p>Deux \u00e0 quatre semaines par sprint, une d\u00e9mo \u00e0 la fin de chacun. <strong>Vous testez<\/strong> sur un environnement d\u00e9di\u00e9 et vous <strong>ajustez les priorit\u00e9s<\/strong>.<\/p><\/div>\n                        \n                        \n                    <\/div>\n                \n            <\/div>\n        <\/li>\n                                                            <li class=\"ceweb-methode__step elementor-repeater-item-7872f28\" style=\"--ceweb-methode-i: 5\">\n            <div class=\"ceweb-methode__card\">\n\n                        <div class=\"ceweb-methode__badge-row\">\n            <span class=\"ceweb-methode__connector\" aria-hidden=\"true\"><\/span>\n            <span class=\"ceweb-methode__badge\">\n                                    <span class=\"ceweb-methode__number\">03<\/span>\n                            <\/span>\n        <\/div>\n        \n                                    <div class=\"ceweb-methode__body\">\n\n                                                    <h3 class=\"ceweb-methode__step-title\">Livraison<\/h3>\n                        \n                                                    <div class=\"ceweb-methode__text\"><p>Mise en production, documentation, formation de vos \u00e9quipes. <strong>Le code est \u00e0 vous<\/strong>, et nous restons disponibles pour la suite.<\/p><\/div>\n                        \n                        \n                    <\/div>\n                \n            <\/div>\n        <\/li>\n                                            <\/ol>\n            \n            \n        <\/div>\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3993bdb e-flex e-con-boxed e-con e-parent\" data-id=\"3993bdb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-c719457 e-con-full e-flex e-con e-child\" data-id=\"c719457\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34f63c7 elementor-widget elementor-widget-heading\" data-id=\"34f63c7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Des questions sur Hand-Made ?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-785c54f elementor-widget elementor-widget-ceweb-faq\" data-id=\"785c54f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"ceweb-faq.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t<div class=\"cw-faq\" style=\"--cw-faq-width:1000px\">\n\n\t\t\n\t\t\n\t\t<ul class=\"cw-faq-list\" role=\"list\">\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-0\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-0\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Combien de temps prend un projet sur-mesure ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-0\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-0\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>Tout d\u00e9pend du scope. Un MVP simple d\u00e9marre autour de 6-8 semaines, un produit plus complet entre 3 et 6 mois. On vous donne une estimation pr\u00e9cise d\u00e8s le cadrage initial, sans mauvaise surprise.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-1\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-1\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Comment se passe la collaboration ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-1\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-1\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>On travaille en sprints de 2 \u00e0 4 semaines avec d\u00e9mos r\u00e9guli\u00e8res. Vous avez acc\u00e8s \u00e0 un canal Teams ou WhatsApp d\u00e9di\u00e9, un board Jira partag\u00e9 et un point hebdo. Vous voyez le produit grandir en temps r\u00e9el et vous validez \u00e0 chaque \u00e9tape.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-2\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-2\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Que se passe-t-il apr\u00e8s le lancement ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-2\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-2\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>On ne dispara\u00eet pas apr\u00e8s le go-live. On propose des forfaits de maintenance, d'\u00e9volution et de support adapt\u00e9s \u00e0 vos besoins. Votre produit continue d'\u00e9voluer avec vous.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-3\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-3\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Sommes-nous propri\u00e9taire du code livr\u00e9 ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-3\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-3\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>Oui, \u00e0 100 %. Le code, le design, les actifs : tout vous appartient. On vous remet le repo Git sur votre demande, la documentation et tous les acc\u00e8s d\u00e8s le go-live.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-4\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-4\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Quelles technologies utilisez-vous ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-4\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-4\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>On adapte la stack au projet : React\/Next.js et Vue c\u00f4t\u00e9 frontend, Node.js, Laravel ou Asp.NET c\u00f4t\u00e9 backend, React Native, Swift ou Flutter en mobile, MySQL, PostgreSQL et MongoDB pour les bases de donn\u00e9es, AWS, Azure et Docker pour le d\u00e9ploiement.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t\t\t<li class=\"cw-faq-item\">\n\n\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\tclass=\"cw-faq-q\"\n\t\t\t\t\t\tid=\"cw-faq-q-1-5\"\n\t\t\t\t\t\taria-expanded=\"false\"\n\t\t\t\t\t\taria-controls=\"cw-faq-a-1-5\">\n\t\t\t\t\t\t<span class=\"cw-faq-q-text\">Comment se d\u00e9roule un devis ?<\/span>\n\t\t\t\t\t\t<span class=\"cw-faq-toggle\" aria-hidden=\"true\"><\/span>\n\t\t\t\t\t<\/button>\n\n\t\t\t\t\t\t\t\t\t\t<div class=\"cw-faq-a\"\n\t\t\t\t\t\tid=\"cw-faq-a-1-5\"\n\t\t\t\t\t\trole=\"region\"\n\t\t\t\t\t\taria-labelledby=\"cw-faq-q-1-5\"\n\t\t\t\t\t\tinert>\n\t\t\t\t\t\t<div class=\"cw-faq-a-clip\">\n\t\t\t\t\t\t\t<div class=\"cw-faq-a-body\"><p>Vous remplissez le formulaire, on revient vers vous sous 48h pour un premier \u00e9change. Si le projet a du sens pour les deux c\u00f4t\u00e9s, on cadre ensemble et on vous remet un devis d\u00e9taill\u00e9 sous une semaine. Gratuit, sans engagement.<\/p><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t<\/li>\n\t\t\t\t\t<\/ul>\n\n\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f4393b5 e-flex e-con-boxed e-con e-parent\" data-id=\"f4393b5\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6a54170 e-con-full e-flex e-con e-child\" data-id=\"6a54170\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e58b984 elementor-widget elementor-widget-heading\" data-id=\"e58b984\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pr\u00eat \u00e0 passer du brief au build ?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f071efd elementor-widget elementor-widget-text-editor\" data-id=\"f071efd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p data-dc-tpl=\"221\" data-om-id=\"a08c034b:225\">Discutons de votre projet. Devis gratuit, retour sous 48 heures, et une r\u00e9ponse franche sur ce qui est faisable ou non.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2a24d1b elementor-align-center elementor-widget elementor-widget-button\" data-id=\"2a24d1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/myceweb.app\/estimate?offer=hand_made_logiciel&#038;lang=en\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" role=\"img\" aria-label=\"Fl&#xE8;che\"><path d=\"M3.5 10h13M11.5 5l5 5-5 5\" stroke=\"#FFFFFF\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Demander mon devis personalis\u00e9<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Hand Made : d\u00e9veloppement sur mesure Votre produit. Votre vision. Notre code. Les solutions toutes faites ne vous ressemblent pas\u00a0? Nous non plus. Chez CEWeb, nous d\u00e9veloppons des produits 100\u00a0% sur-mesure, con\u00e7us ligne par ligne pour coller \u00e0 votre r\u00e9alit\u00e9 m\u00e9tier. Pas de template. Pas de compromis. Du vrai craft. D\u00e9marrer mon projet Voir nos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"wpai_generated_summary":"","footnotes":""},"class_list":["post-3661","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency<\/title>\n<meta name=\"description\" content=\"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ceweb-agency.com\/en\/hand-made\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency\" \/>\n<meta property=\"og:description\" content=\"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ceweb-agency.com\/en\/hand-made\/\" \/>\n<meta property=\"og:site_name\" content=\"CEWeb Agency\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-22T10:31:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ceweb-agency.com\/wp-content\/uploads\/2026\/10\/home_miniature-scaled.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/hand-made\\\/\",\"url\":\"https:\\\/\\\/ceweb-agency.com\\\/hand-made\\\/\",\"name\":\"D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#website\"},\"datePublished\":\"2026-09-15T09:43:25+00:00\",\"dateModified\":\"2026-10-22T10:31:10+00:00\",\"description\":\"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/hand-made\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ceweb-agency.com\\\/hand-made\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/hand-made\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/ceweb-agency.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hand Made\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#website\",\"url\":\"https:\\\/\\\/ceweb-agency.com\\\/\",\"name\":\"CEWeb Agency\",\"description\":\"Cr\u00e9ation de sites &amp; strat\u00e9gie digitale\",\"publisher\":{\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ceweb-agency.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#organization\",\"name\":\"CEWeb Agency\",\"url\":\"https:\\\/\\\/ceweb-agency.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ceweb-agency.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Logo-Black-Trans.png\",\"contentUrl\":\"https:\\\/\\\/ceweb-agency.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/Logo-Black-Trans.png\",\"width\":1790,\"height\":740,\"caption\":\"CEWeb Agency\"},\"image\":{\"@id\":\"https:\\\/\\\/ceweb-agency.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/clement-wds\\\/\",\"https:\\\/\\\/www.instagram.com\\\/ceweb_agency\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency","description":"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ceweb-agency.com\/en\/hand-made\/","og_locale":"en_US","og_type":"article","og_title":"D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency","og_description":"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.","og_url":"https:\/\/ceweb-agency.com\/en\/hand-made\/","og_site_name":"CEWeb Agency","article_modified_time":"2026-10-22T10:31:10+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/ceweb-agency.com\/wp-content\/uploads\/2026\/10\/home_miniature-scaled.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ceweb-agency.com\/hand-made\/","url":"https:\/\/ceweb-agency.com\/hand-made\/","name":"D\u00e9veloppement d\u2019application sur-mesure | CEWeb Agency","isPartOf":{"@id":"https:\/\/ceweb-agency.com\/#website"},"datePublished":"2026-09-15T09:43:25+00:00","dateModified":"2026-10-22T10:31:10+00:00","description":"D\u00e9veloppement d\u2019application sur-mesure : apps mobiles, logiciels m\u00e9tier, API et plateformes web. Code livr\u00e9, document\u00e9 et \u00e0 vous.","breadcrumb":{"@id":"https:\/\/ceweb-agency.com\/hand-made\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ceweb-agency.com\/hand-made\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ceweb-agency.com\/hand-made\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/ceweb-agency.com\/"},{"@type":"ListItem","position":2,"name":"Hand Made"}]},{"@type":"WebSite","@id":"https:\/\/ceweb-agency.com\/#website","url":"https:\/\/ceweb-agency.com\/","name":"CEWeb Agency","description":"Cr\u00e9ation de sites &amp; strat\u00e9gie digitale","publisher":{"@id":"https:\/\/ceweb-agency.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ceweb-agency.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ceweb-agency.com\/#organization","name":"CEWeb Agency","url":"https:\/\/ceweb-agency.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ceweb-agency.com\/#\/schema\/logo\/image\/","url":"https:\/\/ceweb-agency.com\/wp-content\/uploads\/2026\/06\/Logo-Black-Trans.png","contentUrl":"https:\/\/ceweb-agency.com\/wp-content\/uploads\/2026\/06\/Logo-Black-Trans.png","width":1790,"height":740,"caption":"CEWeb Agency"},"image":{"@id":"https:\/\/ceweb-agency.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/clement-wds\/","https:\/\/www.instagram.com\/ceweb_agency\/"]}]}},"_links":{"self":[{"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/pages\/3661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/comments?post=3661"}],"version-history":[{"count":46,"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/pages\/3661\/revisions"}],"predecessor-version":[{"id":4337,"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/pages\/3661\/revisions\/4337"}],"wp:attachment":[{"href":"https:\/\/ceweb-agency.com\/en\/wp-json\/wp\/v2\/media?parent=3661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}