{"id":7754,"date":"2026-11-02T09:21:41","date_gmt":"2026-11-02T08:21:41","guid":{"rendered":"https:\/\/www.cim-atlantique.com\/deeper\/"},"modified":"2026-11-02T20:02:17","modified_gmt":"2026-11-02T19:02:17","slug":"deeper","status":"publish","type":"page","link":"https:\/\/www.cim-atlantique.com\/en\/deeper\/","title":{"rendered":"Deeper \u2014 AI industrial vision software"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><style>.fusion-page-title-bar{display:none!important;}.fusion-tb-footer{display:none!important;}<\/style>\n<style>\r\n  :root{\r\n    --paper:#ffffff;\r\n    --panel:#f4f8f9;\r\n    --panel-2:#eaf4f5;\r\n    --ink:#16222b;\r\n    --ink-soft:#46585f;\r\n    --muted:#8a9aa1;\r\n    --line:#e2eaec;\r\n    --line-strong:#cfdcde;\r\n    --teal:#1d919e;\r\n    --teal-d:#15707a;\r\n    --teal-soft:#e7f3f4;\r\n    --teal-glow:#6fd2dd;\r\n    --red:#7f191a;\r\n    --red-soft:#f6ebeb;\r\n    --navy:#0e1726;\r\n    --navy-2:#16243a;\r\n    --sans:\"Hanken Grotesk\",system-ui,sans-serif;\r\n    --disp:\"Space Grotesk\",system-ui,sans-serif;\r\n    --mono:\"JetBrains Mono\",ui-monospace,monospace;\r\n    --wrap:1240px;\r\n    color-scheme:light;\r\n  }\r\n  *{box-sizing:border-box}\r\n  html{scroll-behavior:smooth}\r\n  body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}\r\n  h1,h2,h3,h4{font-family:var(--disp);font-weight:700;line-height:1.05;letter-spacing:-.02em;margin:0}\r\n  p{margin:0}\r\n  a{color:inherit;text-decoration:none}\r\n  img{max-width:100%;height:auto;display:block}\r\n  .wrap{max-width:var(--wrap);margin:0 auto;padding:0 32px}\r\n  .teal{color:var(--teal)}\r\n  .redc{color:var(--red)}\r\n  .eyebrow{font-family:var(--mono);font-size:14px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--teal);display:inline-flex;align-items:center;gap:12px}\r\n  .eyebrow::before{content:\"\";width:28px;height:2px;background:var(--teal)}\r\n  .eyebrow.red{color:var(--red)}\r\n  .eyebrow.red::before{background:var(--red)}\r\n  .eyebrow.light{color:var(--teal-glow)}\r\n  .eyebrow.light::before{background:var(--teal-glow)}\r\n  .btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:600;font-size:16px;padding:15px 26px;border-radius:10px;border:1.5px solid transparent;cursor:pointer;transition:transform .15s,background .15s,box-shadow .15s,border-color .15s,color .15s}\r\n  .btn-primary{background:var(--teal);color:#fff;box-shadow:0 8px 22px rgba(29,145,158,.28)}\r\n  .btn-primary:hover{transform:translateY(-2px);background:var(--teal-d)}\r\n  .btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong)}\r\n  .btn-ghost:hover{border-color:var(--teal);color:var(--teal-d)}\r\n  .btn-ghost.on-dark{color:#fff;border-color:rgba(255,255,255,.3)}\r\n  .btn-ghost.on-dark:hover{border-color:var(--teal-glow);color:var(--teal-glow)}\r\n  .btn-arrow::after{content:\"\u2192\"}\r\n  section{position:relative}\r\n  .sec{padding:108px 0}\r\n  .sec-head{max-width:780px;margin-bottom:54px}\r\n  .sec-head h2{font-size:clamp(34px,4.4vw,56px);margin:16px 0 0}\r\n  .sec-head p{font-size:21px;color:var(--ink-soft);margin-top:20px}\r\n  .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1)}\r\n  .reveal.in{opacity:1;transform:none}\r\n\r\n  \/* ===== HEADER ===== *\/\r\n  header{position:fixed;top:0;left:0;right:0;z-index:100;transition:background .3s,box-shadow .3s,border-color .3s;border-bottom:1px solid transparent}\r\n  header.scrolled{background:rgba(255,255,255,.9);backdrop-filter:blur(14px);border-bottom-color:var(--line);box-shadow:0 4px 24px rgba(16,34,43,.05)}\r\n  .nav{display:flex;align-items:center;gap:32px;height:84px}\r\n  .nav .logo{height:46px;width:auto}\r\n  .nav-links{display:flex;align-items:center;gap:28px;margin-left:auto}\r\n  .nav-links a{font-size:15.5px;font-weight:500;color:var(--ink-soft);position:relative;padding:6px 0;transition:color .15s}\r\n  .nav-links a:hover,.nav-links a.cur{color:var(--teal-d)}\r\n  .nav-links a.cur::after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--teal)}\r\n  .nav .btn{margin-left:6px;padding:12px 22px}\r\n  .burger{display:none;margin-left:auto;width:46px;height:46px;border:1px solid var(--line-strong);border-radius:10px;background:#fff;cursor:pointer;flex-direction:column;gap:5px;align-items:center;justify-content:center}\r\n  .burger span{width:20px;height:2px;background:var(--ink)}\r\n  .mobile{position:fixed;inset:0;z-index:99;background:rgba(255,255,255,.98);backdrop-filter:blur(8px);padding:100px 32px 32px;display:none;flex-direction:column;gap:6px;overflow:auto}\r\n  .mobile.open{display:flex}\r\n  .mobile a{font-family:var(--disp);font-weight:600;font-size:22px;color:var(--ink);padding:14px 0;border-bottom:1px solid var(--line)}\r\n  .mobile .btn{margin-top:20px;justify-content:center;color:#fff}\r\n\r\n  \/* ===== HERO ===== *\/\r\n  .hero{padding:150px 0 96px;overflow:hidden;background:linear-gradient(180deg,var(--panel),#fff 85%)}\r\n  #neural{position:absolute;inset:0;width:100%;height:100%;z-index:0}\r\n  .crumbs{position:relative;z-index:2;font-family:var(--mono);font-size:13px;color:var(--muted);margin-bottom:38px;letter-spacing:.02em}\r\n  .crumbs a{color:var(--ink-soft)} .crumbs a:hover{color:var(--teal-d)}\r\n  .crumbs span{margin:0 8px;color:var(--line-strong)}\r\n  .hero .grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1.08fr;gap:56px;align-items:center}\r\n  .hero-logo{height:58px;width:auto;margin-bottom:26px}\r\n  .hero h1{font-size:clamp(40px,5.4vw,72px);letter-spacing:-.03em;margin-top:18px;color:var(--ink)!important}\r\n  .hero .sub{font-size:clamp(18px,2vw,22px);color:var(--ink-soft);margin-top:26px;max-width:40ch}\r\n  .hero-cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:36px}\r\n  .hero-meta{display:flex;gap:36px;margin-top:46px;flex-wrap:wrap}\r\n  .hero-meta .m{display:flex;flex-direction:column}\r\n  .hero-meta .mv{font-family:var(--disp);font-weight:700;font-size:30px;color:var(--ink);line-height:1}\r\n  .hero-meta .ml{font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-top:8px}\r\n  .hero-visual{position:relative}\r\n  .shot{border-radius:16px;overflow:hidden;border:3px solid #fff;outline:1px solid var(--line);box-shadow:0 30px 70px rgba(16,34,43,.18);background:#fff}\r\n  .shot img{width:100%;display:block}\r\n  .hero-badge{position:absolute;left:-22px;bottom:-26px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 20px;box-shadow:0 18px 40px rgba(16,34,43,.16);display:flex;align-items:center;gap:14px}\r\n  .hero-badge .dot{width:12px;height:12px;border-radius:50%;background:var(--red);box-shadow:0 0 0 5px var(--red-soft);flex:none}\r\n  .hero-badge .t{font-family:var(--disp);font-weight:700;font-size:16px;line-height:1.2}\r\n  .hero-badge .d{font-family:var(--mono);font-size:12px;color:var(--muted)}\r\n\r\n  \/* ===== SUCCESSION ===== *\/\r\n  .succ{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}\r\n  .succ .wrap{display:flex;align-items:center;gap:22px;padding-top:22px;padding-bottom:22px;flex-wrap:wrap}\r\n  .succ .tag{font-family:var(--mono);font-size:12.5px;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--red);border-radius:5px;padding:6px 10px;flex:none}\r\n  .succ p{font-size:16.5px;color:var(--ink-soft);flex:1;min-width:260px}\r\n  .succ p b{color:var(--ink)}\r\n  .succ s{color:var(--muted)}\r\n\r\n  \/* ===== POURQUOI ===== *\/\r\n  .why{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}\r\n  .why-c{border:1px solid var(--line);border-radius:18px;padding:32px 30px;background:#fff;transition:transform .2s,box-shadow .2s}\r\n  .why-c:hover{transform:translateY(-4px);box-shadow:0 24px 50px rgba(16,34,43,.08)}\r\n  .why-c .n{font-family:var(--mono);font-size:13px;letter-spacing:.14em;color:var(--teal);font-weight:600}\r\n  .why-c:nth-child(2) .n{color:var(--red)}\r\n  .why-c h3{font-size:24px;margin:14px 0 12px}\r\n  .why-c p{font-size:16.5px;color:var(--ink-soft);line-height:1.55}\r\n\r\n  \/* ===== BOITE A OUTILS ===== *\/\r\n  .tools-sec{background:var(--panel)}\r\n  .tools{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}\r\n  .tool{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px 22px;display:flex;flex-direction:column;gap:12px;transition:border-color .2s,transform .2s,box-shadow .2s}\r\n  .tool:hover{border-color:var(--teal);transform:translateY(-3px);box-shadow:0 18px 40px rgba(16,34,43,.08)}\r\n  .tool .ic{width:44px;height:44px;border-radius:11px;background:var(--teal-soft);color:var(--teal-d);display:flex;align-items:center;justify-content:center}\r\n  .tool:nth-child(even) .ic{background:var(--red-soft);color:var(--red)}\r\n  .tool .ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}\r\n  .tool h3{font-size:19px;line-height:1.15}\r\n  .tool p{font-size:14.5px;color:var(--ink-soft);line-height:1.5}\r\n  .tool .k{margin-top:auto;font-family:var(--mono);font-size:11.5px;color:var(--muted);line-height:1.5;padding-top:10px;border-top:1px dashed var(--line)}\r\n  .tool.feat{background:var(--navy);border-color:var(--navy);color:#fff}\r\n  .tool.feat .ic{background:rgba(111,210,221,.15);color:var(--teal-glow)}\r\n  .tool.feat p{color:#b6c4d0}\r\n  .tool.feat .k{color:#7d8e9c;border-top-color:rgba(255,255,255,.14)}\r\n  .tool-link{display:inline-flex;align-items:center;gap:8px;margin-top:4px;font-family:var(--disp);font-weight:600;font-size:14.5px;color:var(--teal-d);padding:8px 12px;border:1.5px solid var(--teal);border-radius:8px;align-self:flex-start;transition:background .15s,color .15s}\r\n  .tool-link:hover{background:var(--teal);color:#fff}\r\n  .tool.feat .tool-link{color:var(--teal-glow);border-color:var(--teal-glow)}\r\n  .tool.feat .tool-link:hover{background:var(--teal-glow);color:var(--navy)}\r\n  .pl{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:currentColor;flex:none}\r\n  .pl::before{content:\"\";border-left:7px solid #fff;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;margin-left:2px}\r\n  .tool.feat .tool-link .pl::before{border-left-color:var(--navy)}\r\n  .spot .img a{display:block;height:100%}\r\n  .tools-note{margin-top:30px;font-size:16px;color:var(--ink-soft);max-width:80ch}\r\n  .tools-note b{color:var(--ink)}\r\n\r\n  \/* ===== PIPELINE ===== *\/\r\n  .pipe{display:grid;grid-template-columns:1.25fr 1fr;gap:60px;align-items:center}\r\n  .pipe h2{font-size:clamp(32px,4vw,50px);margin-top:16px}\r\n  .pipe .lead{font-size:19px;color:var(--ink-soft);margin-top:22px}\r\n  .pts{margin-top:28px;display:flex;flex-direction:column;gap:16px}\r\n  .pt{display:grid;grid-template-columns:28px 1fr;gap:14px;align-items:start;font-size:16.5px;color:var(--ink-soft);line-height:1.5}\r\n  .pt::before{content:\"\u2713\";color:var(--teal);font-weight:800;font-size:18px;line-height:1.4}\r\n  .pt b{color:var(--ink)}\r\n\r\n  \/* ===== STATS ===== *\/\r\n  .stats{background:var(--navy);color:#fff;padding:84px 0}\r\n  .stats .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px}\r\n  .stat{border-top:2px solid rgba(255,255,255,.12);padding-top:22px}\r\n  .stat:nth-child(2){border-top-color:var(--teal)}\r\n  .stat:nth-child(4){border-top-color:var(--red)}\r\n  .stat .n{font-family:var(--disp);font-weight:700;font-size:clamp(40px,4.6vw,60px);line-height:.95;letter-spacing:-.03em}\r\n  .stat .n .u{font-size:.45em;color:var(--teal-glow);font-weight:600;margin-left:6px}\r\n  .stat .l{font-size:16.5px;color:#aebccb;margin-top:12px;line-height:1.4;max-width:24ch}\r\n\r\n  \/* ===== METHODE ===== *\/\r\n  .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#fff}\r\n  .step{padding:34px 32px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);position:relative}\r\n  .step:nth-child(3n){border-right:none}\r\n  .step:nth-child(n+4){border-bottom:none}\r\n  .step .sn{font-family:var(--disp);font-weight:700;font-size:44px;color:var(--teal-soft);line-height:1;-webkit-text-stroke:1.5px var(--teal)}\r\n  .step:nth-child(even) .sn{color:var(--red-soft);-webkit-text-stroke-color:var(--red)}\r\n  .step .mod{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:18px}\r\n  .step h3{font-size:22px;margin:6px 0 10px}\r\n  .step p{font-size:16px;color:var(--ink-soft);line-height:1.55}\r\n\r\n  \/* ===== DUO (VLM \/ reflets) ===== *\/\r\n  .duo{display:grid;grid-template-columns:1fr 1fr;gap:28px}\r\n  .spot{border-radius:20px;overflow:hidden;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column}\r\n  .spot .img{aspect-ratio:16\/9;overflow:hidden;background:#0b0f14;position:relative}\r\n  .spot .img img{width:100%;height:100%;object-fit:cover}\r\n  .spot .img .lbl{position:absolute;left:16px;top:16px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;background:rgba(14,23,38,.82);color:var(--teal-glow);padding:6px 10px;border-radius:6px;backdrop-filter:blur(4px)}\r\n  .spot .body{padding:32px 32px 34px;display:flex;flex-direction:column;gap:14px;flex:1}\r\n  .spot h3{font-size:clamp(24px,2.4vw,30px)}\r\n  .spot p{font-size:16.5px;color:var(--ink-soft);line-height:1.55}\r\n  .spot .chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:8px}\r\n  .chips span{font-family:var(--mono);font-size:12.5px;color:var(--ink-soft);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:6px 11px}\r\n\r\n  .duo{align-items:start}\r\n  .more{margin-top:10px;border-top:1px solid var(--line)}\r\n  .more summary,.more-link{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:10px;margin-top:16px;font-family:var(--disp);font-weight:600;font-size:16px;color:var(--teal-d);padding:11px 18px;border:1.5px solid var(--teal);border-radius:10px;transition:background .15s,color .15s;align-self:flex-start}\r\n  .more summary::-webkit-details-marker{display:none}\r\n  .more summary::after{content:\"+\";font-family:var(--mono);font-size:18px;transition:transform .2s}\r\n  .more[open] summary::after{transform:rotate(45deg)}\r\n  .more summary:hover,.more-link:hover{background:var(--teal);color:#fff}\r\n  .more-link::after{content:\"\u2192\"}\r\n  .more-body{padding-top:20px;display:flex;flex-direction:column;gap:12px}\r\n  .more-body h4{font-family:var(--disp);font-size:18px;margin-top:10px;color:var(--ink)}\r\n  .more-body h4:first-child{margin-top:0}\r\n  .more-body p{font-size:16px}\r\n  .ticks{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}\r\n  .ticks li{display:grid;grid-template-columns:22px 1fr;gap:8px;font-size:16px;color:var(--ink-soft);line-height:1.5}\r\n  .ticks li::before{content:\"\u2713\";color:var(--teal);font-weight:800}\r\n  .ticks b{color:var(--ink)}\r\n  .ex{display:grid;grid-template-columns:1fr 1fr;gap:14px}\r\n  .ex figure{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel)}\r\n  .ex img{width:100%;aspect-ratio:16\/10;object-fit:cover;background:#0b0f14}\r\n  .ex figcaption{font-size:14px;color:var(--ink-soft);line-height:1.45;padding:10px 12px}\r\n  .ex figcaption b{color:var(--ink)}\r\n  @media(max-width:640px){ .ex{grid-template-columns:1fr} }\r\n\r\n  \/* ===== SPECS ===== *\/\r\n  .specs-sec{background:linear-gradient(180deg,#fff,var(--panel))}\r\n  .specs{display:grid;grid-template-columns:1fr 1fr;gap:0 56px}\r\n  .spec{display:grid;grid-template-columns:200px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line-strong)}\r\n  .spec .k{font-family:var(--mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-d);padding-top:3px}\r\n  .spec:nth-child(4n+3) .k,.spec:nth-child(4n+4) .k{color:var(--red)}\r\n  .spec .v{font-size:16.5px;color:var(--ink);line-height:1.5}\r\n  .spec .v small{display:block;color:var(--muted);font-size:14px;margin-top:2px}\r\n\r\n  \/* ===== APPLICATIONS ===== *\/\r\n  .cases{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}\r\n  .case{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#fff;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}\r\n  .case:hover{transform:translateY(-4px);box-shadow:0 24px 50px rgba(16,34,43,.1)}\r\n  .case .ci{aspect-ratio:560\/340;overflow:hidden;background:#0b0f14}\r\n  .case .ci img{width:100%;height:100%;object-fit:cover;transition:transform .5s}\r\n  .case:hover .ci img{transform:scale(1.05)}\r\n  .case .cb{padding:22px 24px 24px;display:flex;flex-direction:column;gap:8px;flex:1}\r\n  .case .sector{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--teal-d)}\r\n  .case:nth-child(even) .sector{color:var(--red)}\r\n  .case h3{font-size:21px;line-height:1.15}\r\n  .case p{font-size:15px;color:var(--ink-soft);line-height:1.5}\r\n  .case .kpis{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:10px}\r\n  .case .kpis span{font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--teal-soft);border-radius:5px;padding:5px 9px}\r\n  .case:nth-child(even) .kpis span{background:var(--red-soft)}\r\n  .cases-more{margin-top:34px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;font-size:16.5px;color:var(--ink-soft)}\r\n\r\n  \/* ===== OFFRES ===== *\/\r\n  .offres-sec{background:var(--navy);color:#fff;overflow:hidden}\r\n  #neural2{position:absolute;inset:0;width:100%;height:100%}\r\n  .offres-sec .wrap{position:relative;z-index:2}\r\n  .offres-sec .sec-head h2{color:#fff}\r\n  .offres-sec .sec-head p{color:#aebccb}\r\n  .offres{display:grid;grid-template-columns:1fr 1fr;gap:24px}\r\n  .offre{border:1px solid rgba(255,255,255,.14);border-radius:20px;padding:38px 36px;background:rgba(255,255,255,.03);display:flex;flex-direction:column;gap:16px}\r\n  .offre.main{background:#fff;color:var(--ink);border-color:#fff}\r\n  .offre .ot{font-family:var(--mono);font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-glow)}\r\n  .offre.main .ot{color:var(--teal-d)}\r\n  .offre h3{font-size:28px}\r\n  .offre p{font-size:16.5px;color:#b6c4d0;line-height:1.55}\r\n  .offre.main p{color:var(--ink-soft)}\r\n  .offre ul{list-style:none;padding:0;margin:4px 0 0;display:flex;flex-direction:column;gap:10px}\r\n  .offre li{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:16px;line-height:1.45;color:#dbe4ec}\r\n  .offre.main li{color:var(--ink-soft)}\r\n  .offre li::before{content:\"\u2192\";color:var(--teal-glow);font-weight:700}\r\n  .offre.main li::before{color:var(--teal)}\r\n  .offre .btn{align-self:flex-start;margin-top:auto}\r\n  .cir{margin-top:30px;display:flex;align-items:center;gap:14px;font-size:15.5px;color:#aebccb;flex-wrap:wrap}\r\n  .cir b{color:#fff}\r\n  .cir .pill{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;border:1px solid rgba(111,210,221,.5);color:var(--teal-glow);border-radius:999px;padding:6px 14px}\r\n\r\n  \/* ===== FAQ ===== *\/\r\n  .faq-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:start}\r\n  .faq-grid .sec-head{position:sticky;top:110px;margin-bottom:0}\r\n  .faq details{border-bottom:1px solid var(--line-strong);padding:4px 0}\r\n  .faq details:first-child{border-top:1px solid var(--line-strong)}\r\n  .faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:20px;align-items:center;padding:20px 0;font-family:var(--disp);font-weight:600;font-size:19px;color:var(--ink)}\r\n  .faq summary::-webkit-details-marker{display:none}\r\n  .faq summary::after{content:\"+\";font-family:var(--mono);font-size:22px;color:var(--teal);transition:transform .2s;flex:none}\r\n  .faq details[open] summary::after{transform:rotate(45deg)}\r\n  .faq details p{font-size:16.5px;color:var(--ink-soft);padding:0 40px 22px 0;line-height:1.6}\r\n\r\n  \/* ===== CONTACT ===== *\/\r\n  .contact{background:linear-gradient(160deg,var(--navy),#0a1018);color:#fff;border-radius:26px;padding:64px;display:grid;grid-template-columns:1fr 1fr;gap:60px;position:relative;overflow:hidden}\r\n  #neural3{position:absolute;inset:0;width:100%;height:100%}\r\n  .contact>*{position:relative;z-index:2}\r\n  .contact h2{font-size:clamp(32px,4vw,48px);color:#fff;max-width:16ch;margin-top:16px}\r\n  .contact .lead{font-size:19px;color:#aebccb;margin-top:20px;max-width:42ch}\r\n  .cinfo{margin-top:34px}\r\n  .ci2{padding:18px 0;border-bottom:1px solid rgba(255,255,255,.12);display:flex;gap:16px;align-items:center}\r\n  .ci2:first-child{border-top:1px solid rgba(255,255,255,.12)}\r\n  .ci2 .k{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-glow);min-width:96px}\r\n  .ci2 .v{font-size:18px;color:#fff}\r\n  .form{background:#fff;border-radius:18px;padding:34px;color:var(--ink)}\r\n  .form h3{font-size:22px;margin-bottom:6px}\r\n  .form p.fh{font-size:14.5px;color:var(--muted);margin-bottom:22px}\r\n  .field{margin-bottom:16px}\r\n  .field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:7px}\r\n  .field input,.field textarea{width:100%;border:1.5px solid var(--line-strong);border-radius:10px;padding:13px 15px;font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--panel);transition:border-color .15s,background .15s}\r\n  .field input:focus,.field textarea:focus{outline:none;border-color:var(--teal);background:#fff}\r\n  .field textarea{resize:vertical;min-height:110px}\r\n  .form .btn-primary{width:100%;justify-content:center;margin-top:6px}\r\n  .form .note{font-size:12.5px;color:var(--muted);margin-top:14px;text-align:center}\r\n\r\n  \/* ===== FOOTER ===== *\/\r\n  footer{background:#0a1018;color:#9fb0bd;padding:72px 0 30px;margin-top:108px}\r\n  .foot-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.1)}\r\n  .foot-brand .flogo{height:42px;width:auto;margin-bottom:20px;filter:brightness(0) invert(1)}\r\n  .foot-brand p{font-size:15px;color:#8595a1;max-width:34ch;line-height:1.55}\r\n  .foot-col h4{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:#fff;font-weight:600;margin-bottom:18px}\r\n  .foot-col a{display:block;font-size:15px;color:#8595a1;padding:7px 0;transition:color .15s}\r\n  .foot-col a:hover{color:var(--teal)}\r\n  .foot-bot{display:flex;justify-content:space-between;align-items:center;padding-top:26px;font-size:13.5px;color:#6a7884;flex-wrap:wrap;gap:14px}\r\n\r\n  @media(max-width:1180px){\r\n    .tools{grid-template-columns:repeat(3,1fr)}\r\n  }\r\n  @media(max-width:980px){\r\n    .nav-links{display:none}\r\n    .nav .btn{display:none}\r\n    .burger{display:flex}\r\n    .hero .grid{grid-template-columns:1fr;gap:56px}\r\n    .why{grid-template-columns:1fr}\r\n    .pipe{grid-template-columns:1fr;gap:40px}\r\n    .stats .grid{grid-template-columns:1fr 1fr}\r\n    .steps{grid-template-columns:1fr 1fr}\r\n    .step{border-right:1px solid var(--line)!important;border-bottom:1px solid var(--line)!important}\r\n    .step:nth-child(2n){border-right:none!important}\r\n    .step:nth-child(n+5){border-bottom:none!important}\r\n    .duo{grid-template-columns:1fr}\r\n    .specs{grid-template-columns:1fr}\r\n    .cases{grid-template-columns:1fr 1fr}\r\n    .offres{grid-template-columns:1fr}\r\n    .faq-grid{grid-template-columns:1fr;gap:36px}\r\n    .faq-grid .sec-head{position:static}\r\n    .contact{grid-template-columns:1fr;padding:44px 32px}\r\n    .foot-grid{grid-template-columns:1fr 1fr}\r\n  }\r\n  @media(max-width:640px){\r\n    body{font-size:17px}\r\n    .wrap{padding:0 16px}\r\n    .sec{padding:76px 0}\r\n    .hero{padding:118px 0 80px}\r\n    .hero-badge{position:relative;left:auto;bottom:auto;margin:-18px 0 0 12px;width:fit-content;padding:12px 16px}\r\n    .tools{grid-template-columns:1fr 1fr}\r\n    .stats .grid{grid-template-columns:1fr}\r\n    .steps{grid-template-columns:1fr}\r\n    .step{border-right:none!important;border-bottom:1px solid var(--line)!important}\r\n    .step:last-child{border-bottom:none!important}\r\n    .spec{grid-template-columns:1fr;gap:6px}\r\n    .cases{grid-template-columns:1fr}\r\n    .contact{padding:36px 20px;border-radius:20px}\r\n    .form{padding:24px 20px}\r\n    .offre{padding:30px 24px}\r\n    .foot-grid{grid-template-columns:1fr}\r\n  }\r\n  @media(max-width:420px){\r\n    .tools{grid-template-columns:1fr}\r\n  }\r\n  @media (prefers-reduced-motion: reduce){\r\n    .reveal{opacity:1;transform:none;transition:none}\r\n    html{scroll-behavior:auto}\r\n  }\r\n<\/style>\n\r\n\r\n<!-- ===== HEADER ===== -->\r\n<header id=\"hdr\">\r\n  <div class=\"wrap nav\">\r\n    <a href=\"https:\/\/www.cim-atlantique.com\/en\/\"><img decoding=\"async\" width=\"1600\" height=\"1131\" class=\"lazyload logo\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271600%27%20height%3D%271131%27%20viewBox%3D%270%200%201600%201131%27%3E%3Crect%20width%3D%271600%27%20height%3D%271131%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cim-logo-1.png\" alt=\"CIM Atlantique\" title=\"\"><\/a>\r\n    <nav class=\"nav-links\" aria-label=\"Page navigation\">\r\n      <a href=\"#outils\">Tools<\/a>\r\n      <a href=\"#methode\">Method<\/a>\r\n      <a href=\"#applications\">Applications<\/a>\r\n      <a href=\"#offres\">Offers<\/a>\r\n      <a href=\"#faq\">FAQ<\/a>\r\n      <a href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">Industrial vision<\/a>\r\n    <\/nav>\r\n    <a href=\"#contact\" class=\"btn btn-primary btn-arrow\">Test my parts<\/a>\r\n    <button class=\"burger\" id=\"burger\" aria-label=\"Menu\"><span><\/span><span><\/span><span><\/span><\/button>\r\n  <\/div>\r\n<\/header>\r\n\r\n<div class=\"mobile\" id=\"mobile\">\r\n  <a href=\"#outils\">Tools<\/a>\r\n  <a href=\"#methode\">Method<\/a>\r\n  <a href=\"#applications\">Applications<\/a>\r\n  <a href=\"#offres\">Offers<\/a>\r\n  <a href=\"#faq\">FAQ<\/a>\r\n  <a href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">Industrial vision<\/a>\r\n  <a href=\"#contact\" class=\"btn btn-primary btn-arrow\">Test my parts<\/a>\r\n<\/div>\r\n\r\n<main>\r\n<!-- ===== HERO ===== -->\r\n<section class=\"hero\" id=\"top\">\r\n  <canvas id=\"neural\" aria-hidden=\"true\"><\/canvas>\r\n  <div class=\"wrap\">\r\n    <nav class=\"crumbs\" aria-label=\"Breadcrumb\">\r\n      <a href=\"https:\/\/www.cim-atlantique.com\/en\/\">Home<\/a><span>\/<\/span><a href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">Industrial vision<\/a><span>\/<\/span>Deeper\r\n    <\/nav>\r\n    <div class=\"grid\">\r\n      <div class=\"hero-copy\">\r\n        <img decoding=\"async\" width=\"560\" height=\"120\" class=\"lazyload hero-logo\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27120%27%20viewBox%3D%270%200%20560%20120%27%3E%3Crect%20width%3D%27560%27%20height%3D%27120%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-logo-light.png\" alt=\"Deeper\" title=\"\">\r\n        <span class=\"eyebrow\">Developed by CIM Atlantique<\/span>\r\n        <h1>The industrial vision software that brings together <span class=\"teal\">every AI tool<\/span>.<\/h1>\r\n        <p class=\"sub\">Deeper brings together in a single platform the best artificial-intelligence and vision algorithms \u2014 anomaly detection, OCR, measurement, counting, vision-language models \u2014 and assembles them without a single line of code.<\/p>\r\n        <div class=\"hero-cta\">\r\n          <a href=\"#contact\" class=\"btn btn-primary btn-arrow\">Test Deeper on my parts<\/a>\r\n          <a href=\"#applications\" class=\"btn btn-ghost\">See the applications<\/a>\r\n        <\/div>\r\n        <div class=\"hero-meta\">\r\n          <div class=\"m\"><span class=\"mv\">+80<\/span><span class=\"ml\">processing blocks<\/span><\/div>\r\n          <div class=\"m\"><span class=\"mv\">0<\/span><span class=\"ml\">lines of code<\/span><\/div>\r\n          <div class=\"m\"><span class=\"mv\">+12 years<\/span><span class=\"ml\">of AI vision<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"hero-visual\">\r\n        <div class=\"shot\"><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271500%27%20height%3D%27686%27%20viewBox%3D%270%200%201500%20686%27%3E%3Crect%20width%3D%271500%27%20height%3D%27686%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-ui-c.jpg\" alt=\"Deeper interface in simulation mode: anomaly detection on parts, with a score per part\" width=\"1500\" height=\"686\" title=\"\"><\/div>\r\n        <div class=\"hero-badge\">\r\n          <span class=\"dot\"><\/span>\r\n          <span><span class=\"t\">Anomaly detection<\/span><br><span class=\"d\">score and heat map per part<\/span><\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== SUCCESSION DEEP CAPTURE ===== -->\r\n<div class=\"succ\">\r\n  <div class=\"wrap\">\r\n    <span class=\"tag\">New generation<\/span>\r\n    <p><b>Deeper succeeds <s>Deep Capture<\/s>.<\/b> The supervised deep learning proven on our customers' lines remains at the heart of the tool, now surrounded by a complete toolbox and a no-code editor.<\/p>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- ===== POURQUOI ===== -->\r\n<section class=\"sec\" id=\"pourquoi\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow\">Why Deeper<\/span>\r\n      <h2>The right algorithm for every inspection.<\/h2>\r\n      <p>No single algorithm can do everything. A surface defect, a dimension, a marking or a count each call for different tools: Deeper brings them together and lets you combine them.<\/p>\r\n    <\/div>\r\n    <div class=\"why\">\r\n      <div class=\"why-c reveal\">\r\n        <div class=\"n\">01 \u2014 TOOLBOX<\/div>\r\n        <h3>Every approach, in one place<\/h3>\r\n        <p>Deep learning, anomaly detection, rule-based \"classic\" vision, OCR, polarization, VLM: you pick the technique that fits the defect, not the other way around.<\/p>\r\n      <\/div>\r\n      <div class=\"why-c reveal\">\r\n        <div class=\"n\">02 \u2014 NO-CODE<\/div>\r\n        <h3>An application is built, not coded<\/h3>\r\n        <p>Each inspection is a visual pipeline: you connect blocks, test on your own images and tune the parameters live.<\/p>\r\n      <\/div>\r\n      <div class=\"why-c reveal\">\r\n        <div class=\"n\">03 \u2014 INDUSTRIAL<\/div>\r\n        <h3>Built for the production line<\/h3>\r\n        <p>GPU computing to keep up with the line rate, multi-camera, a customizable operator screen and direct dialogue with the PLC.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== BOITE A OUTILS ===== -->\r\n<section class=\"sec tools-sec\" id=\"outils\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow red\">The toolbox<\/span>\r\n      <h2>More than 80 blocks, ten tool families.<\/h2>\r\n      <p>From latest-generation AI models to proven vision tools, each block slots into a pipeline and combines with the others.<\/p>\r\n    <\/div>\r\n    <div class=\"tools\">\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M12 3l9 5v8l-9 5-9-5V8z\"\/><path d=\"M12 12l9-4M12 12v9M12 12L3 8\"\/><\/svg><\/span>\r\n        <h3>Anomaly detection<\/h3>\r\n        <p>Learns what a good part looks like and flags any deviation, even a never-before-seen defect, with a score and a heat map.<\/p>\r\n        <div class=\"k\">anomalib \u00b7 AnomalyDINO \u00b7 RareCLIP<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"\/><path d=\"M14 3h7v7M3 14v7h7\"\/><\/svg><\/span>\r\n        <h3>Detection & classification<\/h3>\r\n        <p>Locates, classifies and sorts objects and defects in real time, including from a simple text description of the object you are looking for.<\/p>\r\n        <div class=\"k\">YOLO \u00b7 YOLO-World \u00b7 Grounding DINO<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M4 18c3-8 6-11 8-11s5 3 8 11\"\/><path d=\"M4 18h16\"\/><circle cx=\"12\" cy=\"7\" r=\"2\"\/><\/svg><\/span>\r\n        <h3>Segmentation<\/h3>\r\n        <p>Precisely outlines each part or area to measure a surface, isolate a region or straighten a label.<\/p>\r\n        <div class=\"k\">SAM 2 \u00b7 SAM 3 \u00b7 FastSAM<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M4 6V4h16v2M9 20h6M12 4v16\"\/><\/svg><\/span>\r\n        <h3>OCR & codes<\/h3>\r\n        <p>Reads back dates, batch numbers and markings, even irregular inkjet or slanted text. Reads barcodes, QR and Datamatrix codes.<\/p>\r\n        <div class=\"k\">PaddleOCR \u00b7 OpenOCR \u00b7 VLM OCR \u00b7 codes<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M3 17L17 3l4 4L7 21H3z\"\/><path d=\"M7 13l2 2M10 10l2 2M13 7l2 2\"\/><\/svg><\/span>\r\n        <h3>Measurement & geometry<\/h3>\r\n        <p>Sub-pixel edge measurement, line and circle fitting, distances, angles, part alignment and pattern search.<\/p>\r\n        <div class=\"k\">caliper \u00b7 fit \u00b7 fixture \u00b7 pattern match<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><circle cx=\"9\" cy=\"9\" r=\"2\"\/><circle cx=\"15\" cy=\"9\" r=\"2\"\/><circle cx=\"9\" cy=\"15\" r=\"2\"\/><circle cx=\"15\" cy=\"15\" r=\"2\"\/><circle cx=\"12\" cy=\"12\" r=\"10\"\/><\/svg><\/span>\r\n        <h3>Counting<\/h3>\r\n        <p>Counts objects from a few examples or a description, including stacked products.<\/p>\r\n        <div class=\"k\">CountGD \u00b7 GECO2 \u00b7 LOCA \u00b7 FamNet<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 3a9 9 0 0 1 0 18z\"\/><\/svg><\/span>\r\n        <h3>Color<\/h3>\r\n        <p>Checks the hue of an area against a reference and analyzes color distribution.<\/p>\r\n        <div class=\"k\">color check \u00b7 histograms<\/div>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M12 3v18M3 12h18\"\/><circle cx=\"12\" cy=\"12\" r=\"5\"\/><\/svg><\/span>\r\n        <h3>Polarization & reprocessing<\/h3>\r\n        <p>Removes reflections, reveals micro-defects and prepares the image: contrast, filters, straightening, cropping.<\/p>\r\n        <div class=\"k\">Stokes \u00b7 anti-reflection \u00b7 deskew \u00b7 +20 filters<\/div>\r\n        <a class=\"tool-link\" href=\"https:\/\/www.cim-atlantique.com\/en\/deep-lighting\/\">Deep Lighting \u2192<\/a>\r\n      <\/div>\r\n      <div class=\"tool feat reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M4 5h16v10H9l-5 4z\"\/><path d=\"M8 9h8M8 12h5\"\/><\/svg><\/span>\r\n        <h3>VLM \u2014 vision by prompt<\/h3>\r\n        <p>Vision-language models that read, describe and answer a question about the image. Ideal for getting an inspection started quickly.<\/p>\r\n        <div class=\"k\">OCR \u00b7 detection \u00b7 description \u00b7 question\/answer<\/div>\r\n        <a class=\"tool-link\" href=\"https:\/\/www.youtube.com\/watch?v=HuJsZj8k2Tg\" target=\"_blank\" rel=\"noopener\"><span class=\"pl\"><\/span>Watch the video<\/a>\r\n      <\/div>\r\n      <div class=\"tool reveal\">\r\n        <span class=\"ic\"><svg viewBox=\"0 0 24 24\"><path d=\"M5 12h4l2-5 3 10 2-5h3\"\/><\/svg><\/span>\r\n        <h3>Decision & communication<\/h3>\r\n        <p>Thresholds, AND\/OR logic, final OK\/NOK verdict, then sending the result to the PLC or the information system.<\/p>\r\n        <div class=\"k\">OPC-UA \u00b7 Modbus TCP \u00b7 HTTP<\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <p class=\"tools-note reveal\"><b>The right tool, not a single tool.<\/b> On one and the same part, Deeper can chain a straightening step, an anomaly detection, a batch-number read and a measurement, then return a single verdict to the machine.<\/p>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- ===== LE LOGICIEL, MODULE PAR MODULE (repris de la page d'accueil) ===== -->\r\n<style>\r\n\/* ===== Visite du logiciel (reprise de la page d'accueil) ===== *\/\r\n.tour-sec{background:#0C1821;color:#fff;position:relative;overflow:hidden}\r\n.tour-sec .eyebrow{color:#2DD4BF}.tour-sec .eyebrow::before{background:#2DD4BF}\r\n.tour-sec h2{color:#fff;font-size:clamp(34px,4vw,54px);margin:14px 0 16px}\r\n.tour-sec .lead{color:#B5C4CF;max-width:760px}\r\n#cim-accueil{--mint:#2DD4BF;--teal:#0B909E;--fog:#9DB1BF;--steel-2:#1E2D39;--night:#0C1821;--f-body:var(--sans);--f-display:var(--disp);--f-mono:var(--mono)}\r\n#cim-accueil h3,#cim-accueil h4{color:#fff}\r\n#cim-accueil ul{list-style:none;margin:0;padding:0}\r\n#cim-accueil .btn{display:inline-flex;align-items:center;gap:10px;min-height:50px;padding:0 24px;border-radius:2px;font-family:var(--disp);font-weight:700;font-size:16px;background:#2DD4BF;color:#0C1821;transition:box-shadow .25s}\r\n#cim-accueil .btn:hover{box-shadow:0 0 0 6px rgba(45,212,191,.18)}\r\n#cim-accueil .tour{margin-top:clamp(48px,6vw,80px)}\r\n#cim-accueil .tour__head{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;align-items:baseline;margin-bottom:26px}\r\n#cim-accueil .tour__head h3{font-size:clamp(1.4rem,1rem + 1vw,1.9rem);font-stretch:110%}\r\n#cim-accueil .tour__head p{color:var(--fog);font-size:.92rem}\r\n#cim-accueil .tour__hint-touch{display:none}\r\n@media (hover:none){#cim-accueil .tour__hint-hover{display:none}#cim-accueil .tour__hint-touch{display:inline}}\r\n#cim-accueil .tour__grid{display:grid;gap:22px;grid-template-columns:minmax(0,1fr)}\r\n@media (min-width:860px){#cim-accueil .tour__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\r\n#cim-accueil .vg{display:flex;flex-direction:column;border-radius:4px;background:var(--steel-2);border:1px solid rgba(255,255,255,.08);overflow:hidden;transition:border-color .3s,transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s}\r\n#cim-accueil .vg.is-play{border-color:rgba(45,212,191,.6);box-shadow:0 24px 60px rgba(0,0,0,.35),0 0 0 4px rgba(45,212,191,.08)}\r\n#cim-accueil .vg__screen{background:#0A131A}\r\n#cim-accueil .vg__bar{display:flex;align-items:center;gap:6px;height:26px;padding:0 12px;background:#111D26;border-bottom:1px solid rgba(255,255,255,.06)}\r\n#cim-accueil .vg__bar i{width:8px;height:8px;border-radius:50%;background:#3B4C59}\r\n#cim-accueil .vg__bar i:first-child{background:var(--mint)}\r\n#cim-accueil .vg__bar b{margin-left:8px;font-family:var(--f-mono);font-weight:500;font-size:.7rem;color:#9DB1BF}\r\n#cim-accueil .vg__view{position:relative;aspect-ratio:1400\/787;overflow:hidden;container-type:inline-size}\r\n#cim-accueil .vg__view > img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;max-width:none;transition:transform 1.2s cubic-bezier(.2,.8,.2,1),filter .6s}\r\n#cim-accueil .vg:not(.is-play) .vg__view > img{filter:saturate(.85)}\r\n#cim-accueil .vg__body{padding:22px 24px 26px;display:flex;flex-direction:column;gap:10px;flex:1}\r\n#cim-accueil .vg__kick{display:flex;align-items:center;gap:10px;font-family:var(--f-mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mint)}\r\n#cim-accueil .vg__kick span{display:grid;place-items:center;width:28px;height:22px;border-radius:2px;background:rgba(45,212,191,.14);color:var(--mint);font-size:.72rem}\r\n#cim-accueil .vg h4{margin:0;font-family:var(--f-display);font-weight:800;font-stretch:108%;font-size:1.28rem;line-height:1.15;color:#fff!important}\r\n#cim-accueil .vg__body > p:not(.vg__kick){color:#B5C4CF;font-size:.95rem;line-height:1.55}\r\n#cim-accueil .vg__tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px}\r\n#cim-accueil .vg__tags li{padding:4px 10px;border-radius:2px;border:1px solid rgba(255,255,255,.16);font-family:var(--f-mono);font-size:.72rem;color:#D8E3EA}\r\n#cim-accueil .vg--cta{justify-content:center;align-items:flex-start;gap:16px;padding:36px clamp(24px,3vw,40px);background:radial-gradient(ellipse 80% 70% at 100% 0%,rgba(45,212,191,.16),rgba(45,212,191,0) 60%),var(--steel-2)}\r\n#cim-accueil .vg--cta p{color:#B5C4CF;max-width:44ch}\r\n#cim-accueil .vg__logo{width:170px;height:auto}\r\n#cim-accueil .vg--cta h4{font-size:1.6rem}\r\n#cim-accueil .vg__more{font-weight:600;color:#fff;text-decoration:underline!important;text-decoration-color:rgba(45,212,191,.7)!important;text-underline-offset:5px}\r\n@media (min-width:860px){#cim-accueil .vg--wide{grid-column:1\/-1;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}#cim-accueil .vg--wide .vg__body{justify-content:center;padding:32px 36px}#cim-accueil .vg--wide h4{font-size:1.55rem}}\r\n#cim-accueil .vlm-zone{overflow:hidden}\r\n#cim-accueil .vlm-zone canvas,#cim-accueil .vlm-zone .vlm-full{position:absolute;inset:0;width:100%;height:100%;max-width:none}\r\n#cim-accueil .vlm-full{opacity:0;transition:opacity .6s}\r\n#cim-accueil .vlm-full.on{opacity:1}\r\n#cim-accueil .vlm-preset{display:flex;align-items:center;padding:0 1cqw;background:#EFE7FB;color:#5B3BB0;font-family:var(--f-mono);font-weight:600;font-size:1.2cqw;border:1px solid #D9CCF4;border-radius:.3cqw}\r\n#cim-accueil .vlm-panel{display:flex;flex-direction:column;justify-content:center;gap:.7cqw;padding:1cqw 1.2cqw;background:#fff;border-top:1px solid #E3E8EC;border-bottom:1px solid #E3E8EC}\r\n#cim-accueil .vlm-panel em{font-style:normal;font-family:var(--f-mono);font-weight:700;font-size:1.05cqw;letter-spacing:.08em;text-transform:uppercase;color:#2B3A46}\r\n#cim-accueil .vlm-panel small{font-size:.95cqw;color:#7A8A96}\r\n#cim-accueil .vlm-in{display:flex;align-items:center;height:3.6cqw;padding:0 1cqw;border-radius:.4cqw;background:#F3F5F7;box-shadow:inset 0 0 0 .14cqw #CBD3DA;font-size:1.45cqw;color:#16222B;transition:box-shadow .2s,background .2s}\r\n#cim-accueil .vlm-in b{font-weight:500}\r\n#cim-accueil .vlm-in.focus{background:#fff;box-shadow:inset 0 0 0 .2cqw var(--teal),0 0 0 .5cqw rgba(11,144,158,.15)}\r\n#cim-accueil .vlm-in.focus b::after{content:\"\";display:inline-block;width:.14cqw;height:1.9cqw;margin-left:.15cqw;vertical-align:middle;background:#16222B;animation:blink 1s steps(2,start) infinite}\r\n#cim-accueil .vlm-tag{background:var(--mint)}\r\n#cim-accueil .ov{position:absolute;inset:0;pointer-events:none;font-family:var(--f-body)}\r\n#cim-accueil .ov > *{position:absolute}\r\n#cim-accueil .cur{width:2.6cqw;height:3.6cqw;min-width:14px;min-height:20px;opacity:0;z-index:20;transition:left .8s cubic-bezier(.45,0,.2,1),top .8s cubic-bezier(.45,0,.2,1),opacity .3s;\r\n  background:no-repeat center\/contain url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 20 28'%3E%3Cpath d='M2 2v21l5.5-5.2 3.6 8.2 3.4-1.5-3.6-8H18z' fill='%23fff' stroke='%230C1821' stroke-width='1.6' stroke-linejoin='round'\/%3E%3C\/svg%3E\");filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}\r\n#cim-accueil .cur::after{content:\"\";position:absolute;left:-1.6cqw;top:-1.6cqw;width:3.2cqw;height:3.2cqw;border-radius:50%;border:2px solid var(--mint);opacity:0;transform:scale(.3)}\r\n#cim-accueil .cur.is-click::after{animation:curClick .45s ease-out}\r\n#cim-accueil .ov-flash{border-radius:.5cqw;background:rgba(45,212,191,.35);box-shadow:0 0 0 .3cqw rgba(45,212,191,.6);opacity:0}\r\n#cim-accueil .ov-flash.on{animation:ovFlash .6s ease-out}\r\n#cim-accueil .lid{width:6.6%;height:11.7%;border-radius:50%;border:.32cqw solid #FFD21F;box-shadow:0 0 .9cqw rgba(255,210,31,.7),inset 0 0 .9cqw rgba(255,210,31,.35);opacity:0;transform:scale(1.4);transition:opacity .25s,transform .35s cubic-bezier(.2,1.4,.4,1);transition-delay:calc(var(--i) * 70ms)}\r\n#cim-accueil .on .lid,#cim-accueil .lid.on{opacity:1;transform:none}\r\n#cim-accueil .ov-tag{padding:.5cqw 1cqw;border-radius:.4cqw;background:#FFD21F;color:#16222B;font-family:var(--f-mono);font-size:1.25cqw;font-weight:500;opacity:0;transform:translateY(-.6cqw);transition:opacity .3s,transform .3s;white-space:nowrap}\r\n#cim-accueil .ov-tag b{font-weight:700}\r\n#cim-accueil .ov-toast{padding:.7cqw 1.2cqw;border-radius:.5cqw;background:#16222B;color:var(--mint);font-family:var(--f-mono);font-size:1.25cqw;box-shadow:0 .8cqw 2cqw rgba(0,0,0,.3);opacity:0;transform:translateY(.8cqw);transition:opacity .3s,transform .35s;white-space:nowrap}\r\n#cim-accueil .ov-tag.on,#cim-accueil .ov-toast.on{opacity:1;transform:none}\r\n#cim-accueil .ov-hl{border-radius:.3cqw;box-shadow:inset 0 0 0 .25cqw var(--teal);background:rgba(11,144,158,.12);opacity:0;transition:opacity .25s}\r\n#cim-accueil .ov-hl.on{opacity:1}\r\n#cim-accueil .ov-ghost,#cim-accueil .ov-node{display:flex;align-items:center;justify-content:space-between;gap:.6cqw;padding:0 .8cqw;border-radius:.3cqw;background:#fff;border-left:.35cqw solid #2C5BD8;font-size:1.05cqw;color:#16222B;white-space:nowrap}\r\n#cim-accueil .ov-ghost{height:3.2cqw;width:15cqw;opacity:0;box-shadow:0 1cqw 2.4cqw rgba(10,58,100,.35);transition:left .8s cubic-bezier(.45,0,.2,1),top .8s cubic-bezier(.45,0,.2,1),opacity .2s;z-index:15}\r\n#cim-accueil .ov-ghost.on{opacity:.95}\r\n#cim-accueil .ov-ghost em,#cim-accueil .ov-node em{font-style:normal;font-family:var(--f-mono);font-size:.8cqw;color:#2C5BD8;background:#E4ECFB;padding:.1cqw .4cqw;border-radius:.2cqw}\r\n#cim-accueil .ov-node{font-size:.8cqw;padding:0 .5cqw;box-shadow:0 0 0 .2cqw rgba(11,144,158,.6);opacity:0;transform:scale(.7);transition:opacity .25s,transform .35s cubic-bezier(.2,1.4,.4,1)}\r\n#cim-accueil .ov-node em{font-size:.6cqw}\r\n#cim-accueil .ov-node.on{opacity:1;transform:none}\r\n#cim-accueil .ov-svg{inset:0;width:100%;height:100%}\r\n#cim-accueil .ov-link{fill:none;stroke:#2E8F5E;stroke-width:2.2;stroke-dasharray:1;stroke-dashoffset:1;vector-effect:non-scaling-stroke}\r\n#cim-accueil .ov-link.on{transition:stroke-dashoffset .7s ease-out;stroke-dashoffset:0}\r\n#cim-accueil .ov-pill{display:grid;place-items:center;border-radius:2cqw;background:#E3F6EC;color:#1D7A4C;font-size:1.05cqw;font-weight:600;opacity:0;transition:opacity .3s}\r\n#cim-accueil .ov-pill.on{opacity:1}\r\n#cim-accueil .ov-box{border-radius:.5cqw;box-shadow:inset 0 0 0 .3cqw var(--teal),0 0 1.4cqw rgba(11,144,158,.45);background:rgba(11,144,158,.06);opacity:0;transition:opacity .3s;transition-delay:calc(var(--i) * 380ms)}\r\n#cim-accueil .ov-wire{height:.35cqw;background:var(--teal);transform-origin:left;transform:scaleX(0);transition:transform .3s;transition-delay:calc(var(--i) * 380ms + 220ms);box-shadow:0 0 .8cqw var(--teal)}\r\n#cim-accueil .on .ov-box,#cim-accueil .ov-box.on{opacity:1}\r\n#cim-accueil .on .ov-wire,#cim-accueil .ov-wire.on{transform:none}\r\n#cim-accueil .ov-tip{padding:.7cqw 1.2cqw;border-radius:.5cqw;background:#16222B;color:#fff;font-size:1.2cqw;white-space:nowrap;opacity:0;transform:translateY(.6cqw);transition:opacity .3s,transform .3s;box-shadow:0 .8cqw 2cqw rgba(0,0,0,.25)}\r\n#cim-accueil .ov-tip.on{opacity:1;transform:none}\r\n#cim-accueil .ov-tool{display:grid;place-items:center;border-radius:.5cqw;background:#fff;color:#16222B;font-weight:600;font-size:1.25cqw;box-shadow:0 .2cqw .6cqw rgba(0,0,0,.12);opacity:0;transition:opacity .2s}\r\n#cim-accueil .ov-tool.on{opacity:1}\r\n#cim-accueil .ov-obb{transform:rotate(-40deg);border:.28cqw dashed #FFD21F;background:rgba(255,210,31,.12);opacity:0;transition:opacity .2s}\r\n#cim-accueil .ov-obb em{position:absolute;left:-.3cqw;top:-2.4cqw;padding:.2cqw .6cqw;background:#FFD21F;color:#16222B;font-style:normal;font-family:var(--f-mono);font-size:1.05cqw;white-space:nowrap}\r\n#cim-accueil .ov-obb.on{opacity:1;animation:obbIn .5s ease-out}\r\n#cim-accueil .ov-obb.on.solid{border-style:solid}\r\n#cim-accueil .ov-cover{display:flex;align-items:center;justify-content:flex-end;padding:0 .8cqw;background:rgba(20,22,30,.92);color:#FFD21F;font-family:var(--f-mono);font-size:1.05cqw;white-space:nowrap;border-radius:.3cqw;opacity:0;transition:opacity .2s}\r\n#cim-accueil .ov-cover.on{opacity:1}\r\n#cim-accueil .ov-field{display:flex;align-items:center;padding:0 1.1cqw;border-radius:.4cqw;background:#DCDEE0;box-shadow:inset 0 0 0 .22cqw transparent;font-size:1.35cqw;color:#16222B;opacity:0;transition:box-shadow .2s,opacity .2s}\r\n#cim-accueil .ov-field b{font-weight:400}\r\n#cim-accueil .ov-field.on{opacity:1}\r\n#cim-accueil .ov-field.focus{box-shadow:inset 0 0 0 .22cqw var(--teal),0 0 0 .5cqw rgba(11,144,158,.15);background:#fff}\r\n#cim-accueil .ov-field.focus b::after{content:\"\";display:inline-block;width:.12cqw;height:1.6cqw;margin-left:.15cqw;vertical-align:middle;background:#16222B;animation:blink 1s steps(2,start) infinite}\r\n#cim-accueil .ov-menu{display:flex;flex-direction:column;border-radius:.4cqw;background:#fff;box-shadow:0 1cqw 2.4cqw rgba(10,58,100,.25);overflow:hidden;opacity:0;transform:translateY(-.6cqw);transition:opacity .2s,transform .2s;z-index:12}\r\n#cim-accueil .ov-menu i{font-style:normal;padding:.5cqw 1.1cqw;font-size:1.2cqw;color:#16222B}\r\n#cim-accueil .ov-menu i.is-pick.hov{background:#E4ECFB;color:#2C5BD8;font-weight:600}\r\n#cim-accueil .ov-menu.on{opacity:1;transform:none}\r\n#cim-accueil .ov-run{display:flex;align-items:center;gap:.6cqw;padding:0 1.2cqw;background:#E6EFF9;font-size:1.15cqw;color:#16222B;white-space:nowrap;opacity:0;transition:opacity .3s;overflow:hidden}\r\n#cim-accueil .ov-run b{color:#0B909E}\r\n#cim-accueil .ov-run em{font-style:normal;font-family:var(--f-mono);font-size:1cqw;color:#56697A;margin-left:auto}\r\n#cim-accueil .ov-run > i{position:absolute;left:0;bottom:0;height:.3cqw;width:0;background:var(--teal);transition:width 2.6s linear}\r\n#cim-accueil .ov-run.on{opacity:1}\r\n#cim-accueil .ov-run.on > i{width:12%}\r\n@media (prefers-reduced-motion:reduce){#cim-accueil .ov *,#cim-accueil .ov{transition:none!important;animation:none!important}}\r\n@keyframes blink{to{visibility:hidden}}\r\n@keyframes curClick{0%{opacity:1;transform:scale(.3)}100%{opacity:0;transform:scale(1.4)}}\r\n@keyframes ovFlash{0%{opacity:1}100%{opacity:0}}\r\n@keyframes obbIn{from{transform:rotate(-40deg) scale(.4)}to{transform:rotate(-40deg)}}\r\n\r\n<\/style>\r\n<section class=\"sec tour-sec\" id=\"logiciel\">\r\n  <div class=\"wrap\">\r\n    <span class=\"eyebrow\">The software<\/span>\r\n    <h2>From image to verdict, everything happens in Deeper.<\/h2>\r\n    <p class=\"lead\">Six modules cover the full cycle of an inspection: describe the object with a prompt, run production, build the recipe without coding, organize and annotate images, train the models. Deeper connects to your industrial cameras and sends its verdict straight to the PLC.<\/p>\r\n    <div id=\"cim-accueil\">\r\n    <div class=\"tour\">\r\n        <div class=\"tour__head\">\r\n          <h3>The software, module by module<\/h3>\r\n          <p><span class=\"tour__hint-hover\">Hover over a tile to see it in action.<\/span><span class=\"tour__hint-touch\">The tiles animate as they appear on screen.<\/span><\/p>\r\n        <\/div>\r\n\r\n        <div class=\"tour__grid\">\r\n\r\n          <!-- VLM -->\r\n          <article class=\"vg vg--wide\" data-tour=\"vlm\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Vision by prompt<\/b><\/div>\r\n              <div class=\"vg__view\" style=\"aspect-ratio:1436\/724\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271436%27%20height%3D%27724%27%20viewBox%3D%270%200%201436%20724%27%3E%3Crect%20width%3D%271436%27%20height%3D%27724%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-vlm-base-1.webp\" alt=\"Deeper detects every syringe in an image from the single word \" width=\"1436\" height=\"724\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"vlm-zone\" style=\"left:43.25%;top:20.17%;width:36.63%;height:71.82%\"><canvas width=\"526\" height=\"520\" aria-hidden=\"true\"><\/canvas><img decoding=\"async\" class=\"lazyload vlm-full\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27526%27%20height%3D%27520%27%20viewBox%3D%270%200%20526%20520%27%3E%3Crect%20width%3D%27526%27%20height%3D%27520%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-vlm-color-1.webp\" alt=\"\" width=\"526\" height=\"520\" loading=\"lazy\" title=\"\"><\/span>\r\n                  <span class=\"vlm-preset\" style=\"left:1.25%;top:59.4%;width:18.6%;height:4.3%\">VLM_PROMPT<\/span>\r\n                  <span class=\"vlm-panel\" style=\"left:.56%;top:71.3%;width:20.6%;height:19.9%\"><em>\u2726 VLM prompt<\/em><span class=\"vlm-in\"><b data-prompt><\/b><\/span><small>Describe the object to detect<\/small><\/span>\r\n                  <span class=\"ov-flash vlm-trig\" style=\"left:1.25%;top:93.8%;width:19.2%;height:4.7%\"><\/span>\r\n                  <span class=\"ov-tag vlm-tag\" style=\"left:44.5%;top:22.5%\">Prompt \"syringe\" \u00b7 <b data-state>analyzing\u2026<\/b><\/span>\r\n                  <span class=\"ov-toast\" style=\"left:55%;top:84%\">\u2713 Detected without training<\/span>\r\n                  <span class=\"cur\" style=\"left:30%;top:60%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>01<\/span> Vision by prompt<\/p>\r\n              <h4>Describe what you're looking for, without training a model<\/h4>\r\n              <p>With vision-language models (VLM), you simply describe the object in a few words: \"syringe\", \"cap\", \"label\". Deeper detects and outlines every occurrence in the image, with no annotation or training. Ideal for starting an inspection in a few minutes or pre-annotating a dataset.<\/p>\r\n              <ul class=\"vg__tags\"><li>Text prompt<\/li><li>Zero training<\/li><li>Segmentation<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n\r\n          <!-- OPERATE -->\r\n          <article class=\"vg\" data-tour=\"operate\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Operate<\/b><\/div>\r\n              <div class=\"vg__view\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271400%27%20height%3D%27787%27%20viewBox%3D%270%200%201400%20787%27%3E%3Crect%20width%3D%271400%27%20height%3D%27787%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/ui-operate-1.webp\" alt=\"Deeper&#039;s Operate screen: triggering and result of an inspection\" width=\"1400\" height=\"787\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"ov-flash\" style=\"left:1.7%;top:2.7%;width:25.4%;height:5.7%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:0;left:66.5%;top:31.3%\"><\/span><span class=\"lid\" style=\"--i:1;left:70.1%;top:32.6%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:2;left:75.4%;top:36.5%\"><\/span><span class=\"lid\" style=\"--i:3;left:61.5%;top:42.3%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:4;left:64.2%;top:42.7%\"><\/span><span class=\"lid\" style=\"--i:5;left:68.8%;top:46.6%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:6;left:74.2%;top:43.6%\"><\/span><span class=\"lid\" style=\"--i:7;left:62%;top:50.8%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:8;left:63.3%;top:54.3%\"><\/span><span class=\"lid\" style=\"--i:9;left:65.8%;top:51.4%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:10;left:72.2%;top:56%\"><\/span><span class=\"lid\" style=\"--i:11;left:74.2%;top:62.5%\"><\/span>\r\n                  <span class=\"lid\" style=\"--i:12;left:67.2%;top:63.8%\"><\/span>\r\n                  <span class=\"ov-tag\" style=\"left:48.5%;top:9.5%\">Count \u00b7 <b data-count>0<\/b> caps<\/span>\r\n                  <span class=\"ov-toast\" style=\"left:49%;top:79%\">\u2713 Result sent to the PLC<\/span>\r\n                  <span class=\"cur\" style=\"left:40%;top:75%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>02<\/span> Operate<\/p>\r\n              <h4>Run production and inspect in real time<\/h4>\r\n              <p>The production screen. An acquisition is triggered, by the operator or the PLC, and Deeper runs the inspection: detections, verdict and processing time for each step appear immediately. Live mode on camera, or Simulation on recorded images.<\/p>\r\n              <ul class=\"vg__tags\"><li>Live \/ Simulation<\/li><li>Verdict<\/li><li>Cycle time<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n          <!-- STUDIO -->\r\n          <article class=\"vg\" data-tour=\"studio\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Studio<\/b><\/div>\r\n              <div class=\"vg__view\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271400%27%20height%3D%27787%27%20viewBox%3D%270%200%201400%20787%27%3E%3Crect%20width%3D%271400%27%20height%3D%27787%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/ui-studio-1.webp\" alt=\"Deeper&#039;s Studio: block-based pipeline editor\" width=\"1400\" height=\"787\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"ov-hl\" style=\"left:.2%;top:77.3%;width:20.9%;height:5.3%\"><\/span>\r\n                  <svg class=\"ov-svg\" viewBox=\"0 0 1400 787\" preserveAspectRatio=\"none\" aria-hidden=\"true\"><path class=\"ov-link\" pathLength=\"1\" d=\"M612 462 C 660 462, 500 300, 540 296\"\/><\/svg>\r\n                  <span class=\"ov-node\" style=\"left:36.4%;top:55.8%;width:7.5%;height:5.4%\"><b>Image Source<\/b><em>CPU<\/em><\/span>\r\n                  <span class=\"ov-ghost drag\" style=\"left:1.5%;top:77.8%\"><b>Image Source<\/b><em>CPU<\/em><\/span>\r\n                  <span class=\"ov-flash\" style=\"left:23%;top:1.3%;width:15%;height:3.6%\"><\/span>\r\n                  <span class=\"ov-pill\" style=\"left:46.4%;top:1.3%;width:10.5%;height:3.6%\">\u2713 compiled \u00b7 active<\/span>\r\n                  <span class=\"cur\" style=\"left:30%;top:80%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>03<\/span> Studio<\/p>\r\n              <h4>Build the inspection, without coding<\/h4>\r\n              <p>You drag blocks from the palette (camera, preprocessing, AI, OCR, measurement, counting, decision, PLC), connect them, then compile and activate. Each recipe is saved as a reusable preset, and the Layouts tab composes the operator screen.<\/p>\r\n              <ul class=\"vg__tags\"><li>+80 blocks<\/li><li>Presets<\/li><li>Operator screens<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n          <!-- DATA -->\r\n          <article class=\"vg\" data-tour=\"data\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Data<\/b><\/div>\r\n              <div class=\"vg__view\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271400%27%20height%3D%27787%27%20viewBox%3D%270%200%201400%20787%27%3E%3Crect%20width%3D%271400%27%20height%3D%27787%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/ui-data-1.webp\" alt=\"Deeper&#039;s Data module: collections, datasets, snapshots and training runs\" width=\"1400\" height=\"787\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"ov-box\" style=\"--i:0;left:2.2%;top:30.4%;width:15.8%;height:9.8%\"><\/span>\r\n                  <span class=\"ov-wire\" style=\"--i:0;left:18%;top:35.3%;width:3%\"><\/span>\r\n                  <span class=\"ov-box\" style=\"--i:1;left:21%;top:30.8%;width:19.1%;height:9.4%\"><\/span>\r\n                  <span class=\"ov-wire\" style=\"--i:1;left:40.1%;top:35.3%;width:3.9%\"><\/span>\r\n                  <span class=\"ov-box\" style=\"--i:2;left:43.9%;top:30.8%;width:19.1%;height:9.4%\"><\/span>\r\n                  <span class=\"ov-wire\" style=\"--i:2;left:63%;top:35.3%;width:3.8%\"><\/span>\r\n                  <span class=\"ov-box\" style=\"--i:3;left:66.8%;top:30.8%;width:16.6%;height:9.4%\"><\/span>\r\n                  <span class=\"ov-tip\" style=\"left:44%;top:42.5%\">Raw image \u2192 annotated dataset \u2192 frozen version \u2192 trained model<\/span>\r\n                  <span class=\"cur\" style=\"left:55%;top:85%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>04<\/span> Data<\/p>\r\n              <h4>Organize and trace your images<\/h4>\r\n              <p>Image collections, datasets, versioned snapshots and training runs: the whole chain can be read at a glance, from the raw image to the model, with the history of every change.<\/p>\r\n              <ul class=\"vg__tags\"><li>Collections<\/li><li>Versioned snapshots<\/li><li>Traceability<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n          <!-- ANNOTATION -->\r\n          <article class=\"vg\" data-tour=\"annot\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Data \u00b7 Datasets<\/b><\/div>\r\n              <div class=\"vg__view\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271400%27%20height%3D%27787%27%20viewBox%3D%270%200%201400%20787%27%3E%3Crect%20width%3D%271400%27%20height%3D%27787%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/ui-annotation-1.webp\" alt=\"Image annotation in Deeper with Smart click\" width=\"1400\" height=\"787\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"ov-tool\" style=\"left:51.9%;top:20.8%;width:11.9%;height:4.6%\">Smart click<\/span>\r\n                  <span class=\"ov-obb\" style=\"left:60.1%;top:53.6%;width:9%;height:8.2%\"><em>obj \u00b7 0.96<\/em><\/span>\r\n                  <span class=\"ov-cover\" style=\"left:85.5%;top:33.2%;width:13.6%;height:3.6%\">31 annotation(s)<\/span>\r\n                  <span class=\"ov-flash\" style=\"left:93.4%;top:20.8%;width:6.4%;height:4.6%\"><\/span>\r\n                  <span class=\"ov-toast\" style=\"left:42%;top:36.5%\">\u2713 Image validated, next image<\/span>\r\n                  <span class=\"cur\" style=\"left:45%;top:85%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>05<\/span> Annotation<\/p>\r\n              <h4>Annotate fast, with AI assistance<\/h4>\r\n              <p>Oriented boxes, fill, Smart click: one click on the object and the assistant draws the annotation. It also finds similar images or pre-annotates with your own model, and tracks progress and the train \/ validation \/ test split.<\/p>\r\n              <ul class=\"vg__tags\"><li>Smart click<\/li><li>Oriented boxes<\/li><li>Pre-annotation<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n\r\n          <!-- LEARNING -->\r\n          <article class=\"vg\" data-tour=\"learn\">\r\n            <div class=\"vg__screen\">\r\n              <div class=\"vg__bar\"><i><\/i><i><\/i><i><\/i><b>Deeper \u00b7 Learning<\/b><\/div>\r\n              <div class=\"vg__view\">\r\n                <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271400%27%20height%3D%27787%27%20viewBox%3D%270%200%201400%20787%27%3E%3Crect%20width%3D%271400%27%20height%3D%27787%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/ui-learning-1.webp\" alt=\"Deeper&#039;s Learning module: hyperparameter tuning and training\" width=\"1400\" height=\"787\" loading=\"lazy\" title=\"\">\r\n                <div class=\"ov\">\r\n                  <span class=\"ov-field\" data-f=\"size\" style=\"left:28.5%;top:12.9%;width:33.8%;height:5%\"><b>256<\/b><\/span>\r\n                  <span class=\"ov-field\" data-f=\"ep\" style=\"left:63.7%;top:12.9%;width:33.8%;height:5%\"><b>50<\/b><\/span>\r\n                  <span class=\"ov-field\" data-f=\"ms\" style=\"left:63.7%;top:51.5%;width:33.8%;height:5%\"><b>n<\/b><\/span>\r\n                  <span class=\"ov-menu\" style=\"left:63.7%;top:57%;width:33.8%\"><i>n<\/i><i class=\"is-pick\">s<\/i><i>m<\/i><i>l<\/i><i>x<\/i><\/span>\r\n                  <span class=\"ov-run\" style=\"left:.4%;top:77.2%;width:22.8%;height:6.3%\"><b>\u25cf #75<\/b> running <em>epoch <span data-ep>0<\/span>\/100<\/em><i><\/i><\/span>\r\n                  <span class=\"cur\" style=\"left:45%;top:85%\"><\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"vg__body\">\r\n              <p class=\"vg__kick\"><span>06<\/span> Learning<\/p>\r\n              <h4>Train your own models<\/h4>\r\n              <p>You pick a dataset version, set the hyperparameters and launch training: YOLO (detection, oriented boxes, segmentation) or anomaly detection. Each run is logged, evaluated and comparable before going into production.<\/p>\r\n              <ul class=\"vg__tags\"><li>YOLO<\/li><li>Anomalies<\/li><li>mAP evaluation<\/li><\/ul>\r\n            <\/div>\r\n          <\/article>\r\n\r\n          <!-- CTA -->\r\n          <article class=\"vg vg--cta\">\r\n            <img decoding=\"async\" class=\"lazyload vg__logo\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27565%27%20height%3D%27261%27%20viewBox%3D%270%200%20565%20261%27%3E%3Crect%20width%3D%27565%27%20height%3D%27261%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-logo-fond-fonce-1.svg\" alt=\"Deeper\" width=\"565\" height=\"261\" loading=\"lazy\" title=\"\">\r\n            <h4>See Deeper on your parts<\/h4>\r\n            <p>Send us a few images of your products: we build the inspection in Deeper and show you the result.<\/p>\r\n            <a class=\"btn btn--mint\" href=\"#contact\">Test Deeper on my parts \u2192<\/a>\r\n            <a class=\"vg__more\" href=\"#contact\">Request a demo<\/a>\r\n          <\/article>\r\n\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== PIPELINE NO-CODE ===== -->\r\n<section class=\"sec\" id=\"pipeline\">\r\n  <div class=\"wrap pipe\">\r\n    <div class=\"reveal\">\r\n      <div class=\"shot\"><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271500%27%20height%3D%27683%27%20viewBox%3D%270%200%201500%20683%27%3E%3Crect%20width%3D%271500%27%20height%3D%27683%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-pipeline-c.jpg\" alt=\"Deeper&#039;s pipeline editor: polarization, segmentation, straightening and VLM nodes connected together\" width=\"1500\" height=\"683\" loading=\"lazy\" title=\"\"><\/div>\r\n    <\/div>\r\n    <div class=\"reveal\">\r\n      <span class=\"eyebrow\">No-code programming<\/span>\r\n      <h2>One inspection = one visual pipeline.<\/h2>\r\n      <p class=\"lead\">In Deeper's editor, you drag the blocks onto the canvas and connect them: camera, preprocessing, AI, measurement, decision, PLC output.<\/p>\r\n      <div class=\"pts\">\r\n        <div class=\"pt\"><span><b>Readable by everyone.<\/b> The pipeline shows exactly what the inspection does, step by step, with the intermediate images.<\/span><\/div>\r\n        <div class=\"pt\"><span><b>Adjustable in production.<\/b> Thresholds, regions of interest and camera settings can be tuned without redeveloping the application.<\/span><\/div>\r\n        <div class=\"pt\"><span><b>Reusable.<\/b> Each pipeline is saved as a preset: switch product reference in one click.<\/span><\/div>\r\n        <div class=\"pt\"><span><b>Scalable.<\/b> A new defect, a new product reference? You add a block instead of starting over.<\/span><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== STATS ===== -->\r\n<section class=\"stats\" aria-label=\"Deeper in figures\">\r\n  <div class=\"wrap\">\r\n    <div class=\"grid\">\r\n      <div class=\"stat reveal\"><div class=\"n\" data-count=\"12\" data-prefix=\"+\">+12<span class=\"u\">years<\/span><\/div><div class=\"l\">of expertise in AI vision and deep learning<\/div><\/div>\r\n      <div class=\"stat reveal\"><div class=\"n\">< 0.1<span class=\"u\">mm<\/span><\/div><div class=\"l\">defects detected on lacquered parts<\/div><\/div>\r\n      <div class=\"stat reveal\"><div class=\"n\" data-count=\"120\">120<span class=\"u\">\/min<\/span><\/div><div class=\"l\">bottles inspected across 8 cameras<\/div><\/div>\r\n      <div class=\"stat reveal\"><div class=\"n\" data-count=\"80\">80<span class=\"u\">\/min<\/span><\/div><div class=\"l\">cheeses inspected, multi-defect<\/div><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== METHODE ===== -->\r\n<section class=\"sec\" id=\"methode\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow\">From image to line<\/span>\r\n      <h2>Six steps, one single platform.<\/h2>\r\n      <p>Acquisition, training, fine-tuning and deployment all happen in the same software: no tools to stitch together, no data to move around.<\/p>\r\n    <\/div>\r\n    <div class=\"steps reveal\">\r\n      <div class=\"step\">\r\n        <div class=\"sn\">01<\/div>\r\n        <div class=\"mod\">Live \u00b7 Browser<\/div>\r\n        <h3>Acquire the images<\/h3>\r\n        <p>Live from the line cameras, or remotely from a phone or tablet for the first trials. Images are organized into collections.<\/p>\r\n      <\/div>\r\n      <div class=\"step\">\r\n        <div class=\"sn\">02<\/div>\r\n        <div class=\"mod\">Dataset<\/div>\r\n        <h3>Annotate<\/h3>\r\n        <p>Defects and reference parts are annotated directly in the tool, with data augmentation to enrich the image sets.<\/p>\r\n      <\/div>\r\n      <div class=\"step\">\r\n        <div class=\"sn\">03<\/div>\r\n        <div class=\"mod\">Training \u00b7 Models<\/div>\r\n        <h3>Train<\/h3>\r\n        <p>Models are trained online, runs are tracked and versions compared: the best model is promoted to production.<\/p>\r\n      <\/div>\r\n      <div class=\"step\">\r\n        <div class=\"sn\">04<\/div>\r\n        <div class=\"mod\">Pipeline<\/div>\r\n        <h3>Assemble the inspection<\/h3>\r\n        <p>The blocks are connected in the visual editor: preprocessing, models, measurements, decision rules.<\/p>\r\n      <\/div>\r\n      <div class=\"step\">\r\n        <div class=\"sn\">05<\/div>\r\n        <div class=\"mod\">Simulation<\/div>\r\n        <h3>Validate on real images<\/h3>\r\n        <p>The pipeline is replayed on the saved collections to tune thresholds and measure performance before going live.<\/p>\r\n      <\/div>\r\n      <div class=\"step\">\r\n        <div class=\"sn\">06<\/div>\r\n        <div class=\"mod\">Layouts \u00b7 Deploy<\/div>\r\n        <h3>Deploy<\/h3>\r\n        <p>You compose the operator screen (video feed, results, permitted settings) and deploy to the line workstation, connected to the PLC.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== VLM + REFLETS ===== -->\r\n<section class=\"sec\" id=\"innovations\" style=\"padding-top:0\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow red\">What changes the game<\/span>\r\n      <h2>Inspections that used to be out of reach.<\/h2>\r\n    <\/div>\r\n    <div class=\"duo\">\r\n      <article class=\"spot reveal\">\r\n        <div class=\"img\"><img class=\"lazyload\" decoding=\"async\" width=\"924\" height=\"520\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27924%27%20height%3D%27520%27%20viewBox%3D%270%200%20924%20520%27%3E%3Crect%20width%3D%27924%27%20height%3D%27520%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-seringues-vlm-1.jpg\" alt=\"Locating and counting loose syringes with a vision-language model in Deeper\" loading=\"lazy\" title=\"\"><span class=\"lbl\">VLM \u00b7 locating & counting<\/span><\/div>\r\n        <div class=\"body\">\r\n          <h3>Start an inspection with no training campaign.<\/h3>\r\n          <p>Vision-language models (VLM) connect what they see to words. Here, loose syringes: the model locates each syringe, even when overlapping others, and Deeper counts them, with no prior annotation campaign.<\/p>\r\n          <p>The VLM is not a magic wand: it is one more tool in the box. Depending on the inspection, Deeper combines it with trained models and measurement tools to reach the reliability expected in production.<\/p>\r\n          <div class=\"chips\"><span>Locating<\/span><span>Counting<\/span><span>Smart OCR<\/span><span>Question \/ answer<\/span><\/div>\r\n          <a class=\"more-link\" href=\"https:\/\/www.youtube.com\/watch?v=HuJsZj8k2Tg\" target=\"_blank\" rel=\"noopener\"><span class=\"pl\"><\/span>Watch the video: sorting croissants with a VLM<\/a>\r\n          <details class=\"more\">\r\n            <summary>Learn more about VLMs<\/summary>\r\n            <div class=\"more-body\">\r\n              <h4>What a VLM can do in Deeper<\/h4>\r\n              <ul class=\"ticks\">\r\n                <li><span><b>Locate<\/b> objects named by their name, and produce a mask per object.<\/span><\/li>\r\n                <li><span><b>Count<\/b> loose parts, even when they overlap.<\/span><\/li>\r\n                <li><span><b>Read<\/b> difficult text and markings: slanted, irregular, on a busy background.<\/span><\/li>\r\n                <li><span><b>Sort<\/b> between several labels: pass \/ fail, reference A \/ reference B.<\/span><\/li>\r\n                <li><span><b>Answer<\/b> a question about the image: presence of an element, condition of a product.<\/span><\/li>\r\n              <\/ul>\r\n              <h4>Two examples<\/h4>\r\n              <div class=\"ex\">\r\n                <figure><img class=\"lazyload\" decoding=\"async\" width=\"1436\" height=\"724\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271436%27%20height%3D%27724%27%20viewBox%3D%270%200%201436%20724%27%3E%3Crect%20width%3D%271436%27%20height%3D%27724%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-vlm-seringues-ui-1.jpg\" alt=\"Deeper interface: syringe-counting pipeline in simulation mode\" loading=\"lazy\" title=\"\"><figcaption><b>Loose syringes.<\/b> An 11-block pipeline: the VLM locates the syringes, Deeper refines and filters the masks, then counts the stacked parts.<\/figcaption><\/figure>\r\n                <figure><a href=\"https:\/\/www.youtube.com\/watch?v=HuJsZj8k2Tg\" target=\"_blank\" rel=\"noopener\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-croissants.jpg\" alt=\"Sorting croissants with a vision-language model\" loading=\"lazy\" title=\"\"><\/a><figcaption><b>Croissant conformity.<\/b> Two labels, \"well rolled\" and \"poorly rolled\", were enough to sort the products, without building a model. <a href=\"https:\/\/www.youtube.com\/watch?v=HuJsZj8k2Tg\" target=\"_blank\" rel=\"noopener\" class=\"teal\" style=\"font-weight:600\">Watch the video \u2192<\/a><\/figcaption><\/figure>\r\n              <\/div>\r\n              <h4>When to use it<\/h4>\r\n              <p>For a feasibility study or a first demonstrator in a few hours, when product references are numerous or change often, and when the object or criterion is easy to describe.<\/p>\r\n              <h4>Its limits, and how Deeper makes up for them<\/h4>\r\n              <p>A VLM is slower than a dedicated model and less precise on very subtle defects. For high line rates, Deeper switches to a trained model: the images already collected and sorted by the VLM serve as the training base. In every case, the final verdict goes through decision rules and thresholds that you control.<\/p>\r\n              <a href=\"#contact\" class=\"btn btn-primary btn-arrow\" style=\"margin-top:6px;align-self:flex-start\">Test a VLM on my images<\/a>\r\n            <\/div>\r\n          <\/details>\r\n        <\/div>\r\n      <\/article>\r\n      <article class=\"spot reveal\">\r\n        <div class=\"img\"><a href=\"https:\/\/www.cim-atlantique.com\/en\/deep-lighting\/\"><img class=\"lazyload\" decoding=\"async\" width=\"1000\" height=\"511\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271000%27%20height%3D%27511%27%20viewBox%3D%270%200%201000%20511%27%3E%3Crect%20width%3D%271000%27%20height%3D%27511%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-polar-w.jpg\" alt=\"Polarization image in Deeper revealing a defect on a glossy surface\" loading=\"lazy\" title=\"\"><\/a><span class=\"lbl\">Polarization \u00b7 reprocessing<\/span><\/div>\r\n        <div class=\"body\">\r\n          <h3>Reflections are no longer an obstacle.<\/h3>\r\n          <p>Glass, lacquer, plastic films, polished metal: glossy surfaces defeat most vision systems. With a polarized camera, Deeper computes the Stokes parameters, removes reflections and brings out dents, scratches and dust.<\/p>\r\n          <p>On lacquered pens, defects smaller than 0.1 mm become visible; on film-wrapped trays, OCR reads back dates and batch numbers printed through the film.<\/p>\r\n          <p>To go further on reflective surfaces, Deeper pairs with <a href=\"https:\/\/www.cim-atlantique.com\/en\/deep-lighting\/\" class=\"teal\" style=\"font-weight:700\">Deep Lighting<\/a>, our dedicated lighting solution.<\/p>\r\n          <div class=\"chips\"><span>Anti-reflection<\/span><span>Micro-defects<\/span><span>OCR through film<\/span><\/div>\r\n          <a class=\"more-link\" href=\"https:\/\/www.cim-atlantique.com\/en\/deep-lighting\/\">Learn more about Deep Lighting<\/a>\r\n        <\/div>\r\n      <\/article>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== SPECS ===== -->\r\n<section class=\"sec specs-sec\" id=\"specs\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow\">Specifications<\/span>\r\n      <h2>Technical sheet.<\/h2>\r\n    <\/div>\r\n    <div class=\"specs reveal\">\r\n      <div class=\"spec\"><div class=\"k\">Computing<\/div><div class=\"v\">Industrial PC with GPU<small>High computing power to keep up with production line rates<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Deployment<\/div><div class=\"v\">On-premise on a PC or as SaaS (web server)<small>On-premise, the images stay on your site<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Cameras<\/div><div class=\"v\">Baumer, Basler, SVS-Vistek\u2026<small>Area-scan and polarized cameras; exposure, gain and white balance set per preset<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Multi-camera<\/div><div class=\"v\">Several cameras managed by a single installation<small>Up to 8 cameras streaming on our glassware applications<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Programming<\/div><div class=\"v\">No-code pipeline editor<small>More than 80 blocks, groups, reusable presets<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Learning<\/div><div class=\"v\">Online annotation, training and versioning of models<small>Promotion of the best model to production<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Operator interface<\/div><div class=\"v\">Screens composable by drag-and-drop<small>Video feed, results table, reference selection, permitted settings<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Communication<\/div><div class=\"v\">OPC-UA, Modbus TCP, HTTP requests<small>OK\/NOK verdict, measurements and read text sent to the PLC or the IT system<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Fine-tuning<\/div><div class=\"v\">Simulation mode on recorded images<small>Visualization of every intermediate pipeline step<\/small><\/div><\/div>\r\n      <div class=\"spec\"><div class=\"k\">Remote acquisition<\/div><div class=\"v\">Image capture from a phone or tablet<small>Handy for feasibility studies<\/small><\/div><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== APPLICATIONS ===== -->\r\n<style>\r\n.case .ci{position:relative}\r\n.case .ci .vplay{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(0deg,rgba(14,23,38,.35),rgba(14,23,38,0) 60%);opacity:.95;transition:background .25s}\r\n.case .ci .vplay span{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.92);box-shadow:0 8px 24px rgba(0,0,0,.25);transition:transform .25s}\r\n.case .ci .vplay span::before{content:\"\";margin-left:5px;border-left:16px solid #1d919e;border-top:10px solid transparent;border-bottom:10px solid transparent}\r\n.case .ci .vplay small{position:absolute;right:10px;bottom:10px;padding:3px 8px;border-radius:3px;background:rgba(14,23,38,.8);color:#fff;font:500 12px var(--mono)}\r\n.case .ci .vplay:hover span{transform:scale(1.08)}\r\n.case .vlink{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-weight:600;font-size:15px;color:var(--teal)}\r\n.case .vlink::before{content:\"\";border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}\r\n.case .ci .vcase{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-end;padding:10px}\r\n.case .ci .vcase em{font-style:normal;padding:5px 10px;border-radius:3px;background:rgba(14,23,38,.82);color:#fff;font:500 12px var(--mono);opacity:0;transform:translateY(4px);transition:all .25s}\r\n.case:hover .ci .vcase em{opacity:1;transform:none}\r\n.case .vlink--case::before{content:\"\u2192\";border:0;margin-right:-2px}\r\n.case .vlink:hover{color:var(--teal-d);text-decoration:underline}\r\n<\/style>\r\n<section class=\"sec\" id=\"applications\">\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow red\">Deeper in production<\/span>\r\n      <h2>A very wide range of challenges.<\/h2>\r\n      <p>Glassware, cosmetics, wood, food, packaging: a few applications in service at our customers' sites.<\/p>\r\n    <\/div>\r\n    <div class=\"cases\">\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-flacons.jpg\" alt=\"Inspection of glass bottle bases\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: Inspection of bottle bases\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Glassware \u00b7 perfume & spirits<\/div><h3>Inspection of bottle bases<\/h3><p>Incisions, seed bubbles and burn marks detected around the entire base rim, distinguishing real defects from mold seams.<\/p><div class=\"kpis\"><span>8 cameras<\/span><span>120 bottles\/min<\/span><span>~100 refs<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-stylos.jpg\" alt=\"Micro-defect detection on lacquered pens\" loading=\"lazy\" title=\"\"><a class=\"vplay\" href=\"https:\/\/www.youtube.com\/watch?v=7QZRujysWnc\" target=\"_blank\" rel=\"noopener\" aria-label=\"Watch the video: Micro-defects on lacquered pens\"><span><\/span><small>1:41<\/small><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Cosmetics \u00b7 lacquering<\/div><h3>Micro-defects on lacquered pens<\/h3><p>Image reprocessing removes reflections and highlights dents, dust, scratches and lacquer defects.<\/p><div class=\"kpis\"><span>< 0.1 mm<\/span><span>Image reprocessing<\/span><\/div><a class=\"vlink\" href=\"https:\/\/www.youtube.com\/watch?v=7QZRujysWnc\" target=\"_blank\" rel=\"noopener\">Watch the video<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-bois.jpg\" alt=\"Knot detection on wooden boards\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: Board inspection\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Wood \u00b7 planer outfeed<\/div><h3>Board inspection<\/h3><p>Knots, cracks and missing material graded in real time, down to telling \"spike\" knots from standard knots.<\/p><div class=\"kpis\"><span>95% of defects detected<\/span><span>< 3% false positives<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-fromages.jpg\" alt=\"Multi-defect inspection of cheeses\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: Bare cheeses\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Food \u00b7 cheese<\/div><h3>Bare cheeses<\/h3><p>Foreign bodies, cracks, missing material, dimensional and rind defects, on products moving along the line.<\/p><div class=\"kpis\"><span>80 cheeses\/min<\/span><span>Multi-defect<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-poulet.jpg\" alt=\"Detection of hemorrhages on chicken wing portions\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: Chicken drumettes &amp; wings\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Poultry \u00b7 wing portions<\/div><h3>Chicken drumettes & wings<\/h3><p>Hemorrhages, bruises, exposed bones, shape defects: each piece classified without slowing the line.<\/p><div class=\"kpis\"><span>~5,000 pieces\/h<\/span><span>93% of defects detected<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-ocr-film.jpg\" alt=\"OCR reading of dates and batch numbers on film-wrapped trays\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: OCR on plastic films\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Deli meats \u00b7 packaging<\/div><h3>OCR on plastic films<\/h3><p>Polarization to remove film reflections, then AI able to read back irregular inkjet printing and barcodes.<\/p><div class=\"kpis\"><span>Polarization<\/span><span>OCR + barcode<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-sandwich.jpg\" alt=\"Completeness inspection of sandwiches\" loading=\"lazy\" title=\"\"><a class=\"vcase\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" aria-label=\"See the case study: Club sandwiches\"><em>Cas d'usage \u2192<\/em><\/a><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Food \u00b7 catering<\/div><h3>Club sandwiches<\/h3><p>Checking that each sandwich is complete: no missing slice or filling.<\/p><div class=\"kpis\"><span>Missing slice<\/span><span>Missing material<\/span><\/div><a class=\"vlink vlink--case\" href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">See the case study<\/a><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"560\" height=\"340\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27560%27%20height%3D%27340%27%20viewBox%3D%270%200%20560%20340%27%3E%3Crect%20width%3D%27560%27%20height%3D%27340%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cas-ocr.jpg\" alt=\"Reading engraved characters on a cylindrical part\" loading=\"lazy\" title=\"\"><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Traceability \u00b7 marking<\/div><h3>Reading difficult markings<\/h3><p>Engraved or printed characters on curved and glossy surfaces, read back character by character.<\/p><div class=\"kpis\"><span>OCR<\/span><span>Curved surfaces<\/span><\/div><\/div>\r\n      <\/article>\r\n      <article class=\"case reveal\">\r\n        <div class=\"ci\"><img class=\"lazyload\" decoding=\"async\" width=\"1000\" height=\"941\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271000%27%20height%3D%27941%27%20viewBox%3D%270%200%201000%20941%27%3E%3Crect%20width%3D%271000%27%20height%3D%27941%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-petri-w.jpg\" alt=\"Automatic counting of colonies in a Petri dish\" loading=\"lazy\" title=\"\"><\/div>\r\n        <div class=\"cb\"><div class=\"sector\">Laboratory \u00b7 counting<\/div><h3>Automatic counting<\/h3><p>Counting of items in an image, with no rule to program, from just a few examples.<\/p><div class=\"kpis\"><span>Few-shot counting<\/span><span>Locating<\/span><\/div><\/div>\r\n      <\/article>\r\n    <\/div>\r\n    <div class=\"cases-more reveal\">\r\n      <span><a href=\"https:\/\/www.youtube.com\/@cimnormandie\/videos\" target=\"_blank\" rel=\"noopener\" class=\"teal\" style=\"font-weight:600\">All our industrial vision videos<\/a> \u00b7 More details on our projects on the <a href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\" class=\"teal\" style=\"font-weight:600\">industrial vision<\/a> page.<\/span>\r\n      <a href=\"#contact\" class=\"btn btn-ghost btn-arrow\">Submit my case<\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== OFFRES ===== -->\r\n<section class=\"sec offres-sec\" id=\"offres\">\r\n  <canvas id=\"neural2\" aria-hidden=\"true\"><\/canvas>\r\n  <div class=\"wrap\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow light\">One software, one integrator<\/span>\r\n      <h2>Turnkey, or in your hands.<\/h2>\r\n      <p>CIM Atlantique has been designing special machines, robotic cells and vision systems for more than 30 years. Deeper can be used in two ways.<\/p>\r\n    <\/div>\r\n    <div class=\"offres\">\r\n      <div class=\"offre main reveal\">\r\n        <span class=\"ot\">Turnkey solution<\/span>\r\n        <h3>We design and integrate your inspection.<\/h3>\r\n        <p>Our engineers master the whole chain, from the feasibility study to on-site commissioning.<\/p>\r\n        <ul>\r\n          <li>Feasibility study on your images and your parts<\/li>\r\n          <li>Selection of lighting, optics and camera<\/li>\r\n          <li>Development of the Deeper application<\/li>\r\n          <li>Mechanical, automation, ejection and robotic integration<\/li>\r\n          <li>Commissioning and performance monitoring<\/li>\r\n        <\/ul>\r\n        <a href=\"#contact\" class=\"btn btn-primary btn-arrow\">Request a study<\/a>\r\n      <\/div>\r\n      <div class=\"offre reveal\">\r\n        <span class=\"ot\">License & training<\/span>\r\n        <h3>Your teams take over.<\/h3>\r\n        <p>For integrators, process-engineering departments and quality teams who want to build and evolve their inspections on their own.<\/p>\r\n        <ul>\r\n          <li>License for the Deeper software<\/li>\r\n          <li>Remote onboarding training over 2 to 3 days<\/li>\r\n          <li>Training eligible for funding through your OPCO, via our Qualiopi-certified partner organization<\/li>\r\n          <li>Support from our engineers on your first applications<\/li>\r\n        <\/ul>\r\n        <a href=\"#contact\" class=\"btn btn-ghost on-dark btn-arrow\">Request a callback<\/a>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"cir reveal\"><span class=\"pill\">CIR-approved<\/span><span><b>Research Tax Credit:<\/b> your innovative vision projects may qualify.<\/span><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== FAQ ===== -->\r\n<section class=\"sec\" id=\"faq\">\r\n  <div class=\"wrap faq-grid\">\r\n    <div class=\"sec-head reveal\">\r\n      <span class=\"eyebrow\">FAQ<\/span>\r\n      <h2>Frequently asked questions about Deeper.<\/h2>\r\n      <p>A question that isn't here? Call us on <a href=\"tel:+33240587296\" class=\"teal\" style=\"font-weight:600\">+33 2 40 58 72 96<\/a>.<\/p>\r\n    <\/div>\r\n    <div class=\"faq reveal\">\r\n      <details open>\r\n        <summary>Does Deeper replace Deep Capture?<\/summary>\r\n        <p>Yes. Deeper is the next generation of our AI vision software. It builds on the experience gained with Deep Capture in supervised deep learning and broadens it: anomaly detection, measurement, OCR, counting, polarization, vision-language models, all programmable without code. Do you have a Deep Capture installation? Let's talk about upgrading it.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>Do you need to be a vision or AI expert?<\/summary>\r\n        <p>No. Inspections are built without code, by assembling blocks in a visual editor. Our engineers can deliver the application turnkey, or train your teams so they can evolve it themselves.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>How many images do you need to get started?<\/summary>\r\n        <p>It depends on the technique chosen. Anomaly detection learns mainly from good parts, which is valuable when defects are rare. Vision-language models sometimes make it possible to start with no specific training. For supervised models, we define the image campaign with you during the feasibility study.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>Which cameras are compatible?<\/summary>\r\n        <p>Deeper works in particular with Baumer, Basler and SVS-Vistek industrial cameras, including polarized ones. It can also receive images remotely (phone, tablet) for the fine-tuning phase.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>Cloud or on-premise?<\/summary>\r\n        <p>Both: on-premise on a PC equipped with a GPU, as close as possible to the line and without relying on the internet, or as SaaS on a web server.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>How does Deeper communicate with my PLC?<\/summary>\r\n        <p>The inspection result (OK\/NOK verdict, measurements, read text) is sent to the PLC or the information system via OPC-UA, Modbus TCP or an HTTP request.<\/p>\r\n      <\/details>\r\n      <details>\r\n        <summary>Can we test Deeper on our parts?<\/summary>\r\n        <p>Yes. Send us a few images of your parts, both good and defective: we assess feasibility with Deeper and present the results to you, by video call or in our workshops in Grandchamps-des-Fontaines.<\/p>\r\n      <\/details>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== CONTACT ===== -->\r\n<section id=\"contact\">\r\n  <div class=\"wrap\">\r\n    <div class=\"contact reveal\">\r\n      <canvas id=\"neural3\" aria-hidden=\"true\"><\/canvas>\r\n      <div>\r\n        <span class=\"eyebrow light\">And your line?<\/span>\r\n        <h2>A difficult inspection? Let's test it with Deeper.<\/h2>\r\n        <p class=\"lead\">Reflections, random defects, a wide variety of references: send us a few images and we'll tell you what Deeper can do.<\/p>\r\n        <div class=\"cinfo\">\r\n          <div class=\"ci2\"><span class=\"k\">Phone<\/span><a class=\"v\" href=\"tel:+33240587296\">+33 2 40 58 72 96<\/a><\/div>\r\n          <div class=\"ci2\"><span class=\"k\">Email<\/span><a class=\"v\" href=\"mailto:r.gueudre@cim-atlantique.com\">r.gueudre@cim-atlantique.com<\/a><\/div>\r\n          <div class=\"ci2\"><span class=\"k\">Workshop<\/span><span class=\"v\">3 rue Herm\u00e8s, ZAC de la Belle \u00c9toile<br>44119 Grandchamps-des-Fontaines<\/span><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <form class=\"form\" id=\"demoForm\">\r\n        <h3>Request a demo<\/h3>\r\n        <p class=\"fh\">On your own parts, by video call or in our workshops.<\/p>\r\n        <div class=\"field\"><label for=\"f-nom\">Name and company<\/label><input id=\"f-nom\" name=\"nom\" required autocomplete=\"organization\"><\/div>\r\n        <div class=\"field\"><label for=\"f-mail\">Work email<\/label><input id=\"f-mail\" name=\"mail\" type=\"email\" required autocomplete=\"email\"><\/div>\r\n        <div class=\"field\"><label for=\"f-tel\">Phone<\/label><input id=\"f-tel\" name=\"tel\" type=\"tel\" autocomplete=\"tel\"><\/div>\r\n        <div class=\"field\"><label for=\"f-msg\">Your inspection<\/label><textarea id=\"f-msg\" name=\"msg\" placeholder=\"Product, defects to detect, line rate\u2026\"><\/textarea><\/div>\r\n        <button class=\"btn btn-primary btn-arrow\" type=\"submit\">Send my request<\/button>\r\n        <p class=\"note\">Your images can be attached to our reply by email.<\/p>\r\n      <\/form>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n<\/main>\r\n\r\n<!-- ===== FOOTER ===== -->\r\n<footer>\r\n  <div class=\"wrap\">\r\n    <div class=\"foot-grid\">\r\n      <div class=\"foot-brand\">\r\n        <img decoding=\"async\" width=\"1600\" height=\"1131\" class=\"lazyload flogo\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271600%27%20height%3D%271131%27%20viewBox%3D%270%200%201600%201131%27%3E%3Crect%20width%3D%271600%27%20height%3D%271131%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/cim-logo-1.png\" alt=\"CIM Atlantique\" title=\"\">\r\n        <p>Designer of custom industrial automation solutions: special machines, robotics, AI industrial vision and machine retrofit.<\/p>\r\n      <\/div>\r\n      <div class=\"foot-col\">\r\n        <h4>Deeper<\/h4>\r\n        <a href=\"#outils\">Toolbox<\/a>\r\n        <a href=\"#methode\">Method<\/a>\r\n        <a href=\"#applications\">Applications<\/a>\r\n        <a href=\"#offres\">Offers<\/a>\r\n        <a href=\"#faq\">FAQ<\/a>\r\n      <\/div>\r\n      <div class=\"foot-col\">\r\n        <h4>Vision<\/h4>\r\n        <a href=\"https:\/\/www.cim-atlantique.com\/en\/industrial-vision\/\">Industrial vision<\/a>\r\n        <a href=\"#innovations\">Polarization & VLM<\/a>\r\n        <a href=\"#specs\">Technical sheet<\/a>\r\n      <\/div>\r\n      <div class=\"foot-col\">\r\n        <h4>Contact<\/h4>\r\n        <a href=\"tel:+33240587296\">+33 2 40 58 72 96<\/a>\r\n        <a href=\"mailto:r.gueudre@cim-atlantique.com\">Write an email<\/a>\r\n        <a href=\"#contact\">Request a demo<\/a>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"foot-bot\">\r\n      <span>\u00a9 2026 CIM Atlantique \u2014 All rights reserved<\/span>\r\n      <span>3 rue Herm\u00e8s \u00b7 44119 Grandchamps-des-Fontaines \u00b7 +33 2 40 58 72 96<\/span>\r\n    <\/div>\r\n  <\/div>\r\n<\/footer>\r\n\r\n<script>\r\n  \/\/ header\r\n  var hdr=document.getElementById('hdr');\r\n  function onScroll(){ hdr.classList.toggle('scrolled', window.scrollY>20); }\r\n  onScroll(); window.addEventListener('scroll', onScroll, {passive:true});\r\n\r\n  \/\/ mobile menu\r\n  var burger=document.getElementById('burger'), mobile=document.getElementById('mobile');\r\n  burger.addEventListener('click', function(){ mobile.classList.toggle('open'); });\r\n  mobile.querySelectorAll('a').forEach(function(a){ a.addEventListener('click', function(){ mobile.classList.remove('open'); }); });\r\n\r\n  \/\/ reveal\r\n  if('IntersectionObserver' in window){\r\n    var io=new IntersectionObserver(function(es){\r\n      es.forEach(function(e){ if(e.isIntersecting){ e.target.classList.add('in'); io.unobserve(e.target); } });\r\n    },{threshold:.1, rootMargin:'0px 0px -40px 0px'});\r\n    document.querySelectorAll('.reveal').forEach(function(el){ io.observe(el); });\r\n  } else { document.querySelectorAll('.reveal').forEach(function(el){ el.classList.add('in'); }); }\r\n\r\n  \/\/ counters\r\n  function animateCount(el){\r\n    var target=parseFloat(el.getAttribute('data-count')), prefix=el.getAttribute('data-prefix')||'';\r\n    var unit=el.querySelector('.u'), unitHTML=unit?unit.outerHTML:'', dur=1300, start=null;\r\n    function step(ts){\r\n      if(!start)start=ts;\r\n      var p=Math.min((ts-start)\/dur,1), e=1-Math.pow(1-p,3);\r\n      el.innerHTML=prefix+Math.round(target*e)+unitHTML;\r\n      if(p<1)requestAnimationFrame(step);\r\n    }\r\n    requestAnimationFrame(step);\r\n  }\r\n  if('IntersectionObserver' in window){\r\n    var cio=new IntersectionObserver(function(es){\r\n      es.forEach(function(e){ if(e.isIntersecting){ animateCount(e.target); cio.unobserve(e.target); } });\r\n    },{threshold:.4});\r\n    document.querySelectorAll('[data-count]').forEach(function(el){ cio.observe(el); });\r\n  }\r\n\r\n  \/\/ motif neuronal CIM (identique au site) : points qui battent, traits mobiles, flashs d'information\r\n  var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n  function Net(cv) {\r\n    \/* Motif neuronal CIM : maillage a\u00e9r\u00e9 de points qui battent (halo), traits qui ondulent\r\n       doucement et s'\u00e9cartent un peu du pointeur, flashs d'information qui circulent de point en point. *\/\r\n    var ctx = cv.getContext('2d'), dpr = Math.min(window.devicePixelRatio || 1, 2);\r\n    var W = 0, H = 0, nodes = [], edges = [], adj = [], flashes = [], mouse = { x: -9999, y: -9999 }, running = false, raf = 0, t0 = performance.now(), nextSpawn = 0;\r\n    var TEAL = [29, 145, 158], RED = [127, 25, 26], MINT = [123, 232, 217];\r\n    function rgba(c, a) { return 'rgba(' + c[0] + ',' + c[1] + ',' + c[2] + ',' + a + ')'; }\r\n    function rnd(s) { s = s % 2147483647; if (s <= 0) s += 2147483646; return function () { s = s * 16807 % 2147483647; return (s - 1) \/ 2147483646; }; }\r\n    function size() {\r\n      var rc = cv.getBoundingClientRect(); W = rc.width; H = rc.height;\r\n      cv.width = Math.round(W * dpr); cv.height = Math.round(H * dpr); ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\r\n      var density = parseFloat(cv.getAttribute('data-density') || '1');\r\n      var k = Math.max(.62, Math.min(1, W \/ 1440));            \/* points un peu plus petits sur t\u00e9l\u00e9phone *\/\r\n      var count = Math.round(Math.max(9, Math.min(40, W * H \/ 42000)) * (.55 + density * .55));\r\n      var r = rnd(13 + Math.round(W) % 97), cols = Math.max(2, Math.ceil(Math.sqrt(count * W \/ H))), rows = Math.max(1, Math.ceil(count \/ cols));\r\n      nodes = [];\r\n      for (var gy = 0; gy < rows; gy++) for (var gx = 0; gx < cols; gx++) {\r\n        if (nodes.length >= count) break;\r\n        var idx = nodes.length, big = idx % 3 === 0;\r\n        nodes.push({ hx: (gx + .15 + r() * .7) * W \/ cols, hy: (gy + .15 + r() * .7) * H \/ rows, x: 0, y: 0, ox: 0, oy: 0,\r\n          ax: 5 + r() * 7, ay: 5 + r() * 7, fx: .00022 + r() * .00025, fy: .0002 + r() * .00025, px: r() * 6.3, py: r() * 6.3,\r\n          rad: (big ? 12 : 8) * k, col: idx % 5 === 2 ? RED : TEAL, ph: r() * 6.3, glow: 0 });\r\n      }\r\n      edges = []; adj = nodes.map(function () { return []; });\r\n      var seen = {};\r\n      for (var i = 0; i < nodes.length; i++) {\r\n        var d = [];\r\n        for (var j = 0; j < nodes.length; j++) if (j !== i) { var dx = nodes[i].hx - nodes[j].hx, dy = nodes[i].hy - nodes[j].hy; d.push([dx * dx + dy * dy, j]); }\r\n        d.sort(function (a, b) { return a[0] - b[0]; });\r\n        for (var q = 0; q < 2 && q < d.length; q++) {\r\n          var a = Math.min(i, d[q][1]), b = Math.max(i, d[q][1]);\r\n          if (seen[a + '-' + b]) continue; seen[a + '-' + b] = 1;\r\n          edges.push({ a: a, b: b, ph: r() * 6.3 }); adj[a].push(edges.length - 1); adj[b].push(edges.length - 1);\r\n        }\r\n      }\r\n      flashes = [];\r\n    }\r\n    function spawn(from, hops) {\r\n      var list = adj[from]; if (!list || !list.length) return;\r\n      var e = edges[list[Math.floor(Math.random() * list.length)]];\r\n      flashes.push({ e: e, dir: e.a === from ? 1 : -1, t: 0, v: .006 + Math.random() * .006, hops: hops });\r\n    }\r\n    function frame(now) {\r\n      var t = now - t0, light = cv.dataset.bg ? cv.dataset.bg === 'light' : !cv.parentElement.closest('.dark');\r\n      var lineOp = light ? .34 : .34, haloOp = light ? .08 : .11, nodeOp = light ? .62 : .8;\r\n      ctx.clearRect(0, 0, W, H);\r\n      \/* positions : l\u00e9g\u00e8re d\u00e9rive autour du point d'origine + \u00e9cart doux au pointeur *\/\r\n      for (var i = 0; i < nodes.length; i++) {\r\n        var n = nodes[i];\r\n        var bx = n.hx + Math.sin(t * n.fx + n.px) * n.ax, by = n.hy + Math.cos(t * n.fy + n.py) * n.ay;\r\n        var dx = bx - mouse.x, dy = by - mouse.y, dm = Math.sqrt(dx * dx + dy * dy), tx = 0, ty = 0;\r\n        if (dm < 190 && dm > .1) { var f = (1 - dm \/ 190); f = f * f * 26; tx = dx \/ dm * f; ty = dy \/ dm * f; }\r\n        n.ox += (tx - n.ox) * .06; n.oy += (ty - n.oy) * .06;\r\n        n.x = bx + n.ox; n.y = by + n.oy; n.glow *= .94;\r\n      }\r\n      \/* traits *\/\r\n      ctx.lineCap = 'round';\r\n      for (i = 0; i < edges.length; i++) {\r\n        var e = edges[i], A = nodes[e.a], B = nodes[e.b];\r\n        var pulse = .45 + .55 * (.5 + .5 * Math.sin(t \/ 4200 * 6.283 + e.ph));\r\n        var mx = (A.x + B.x) \/ 2 - mouse.x, my = (A.y + B.y) \/ 2 - mouse.y, near = Math.max(0, 1 - Math.sqrt(mx * mx + my * my) \/ 240);\r\n        ctx.strokeStyle = rgba(TEAL, Math.min(1, lineOp * pulse + near * .35).toFixed(3));\r\n        ctx.lineWidth = 1.5 + near * .8;\r\n        ctx.beginPath(); ctx.moveTo(A.x, A.y); ctx.lineTo(B.x, B.y); ctx.stroke();\r\n      }\r\n      \/* transferts d'information *\/\r\n      if (!reduce && now > nextSpawn && nodes.length) { spawn(Math.floor(Math.random() * nodes.length), 2 + Math.floor(Math.random() * 3)); nextSpawn = now + 380 + Math.random() * 520; }\r\n      for (i = flashes.length - 1; i >= 0; i--) {\r\n        var fl = flashes[i]; fl.t += fl.v;\r\n        var P = nodes[fl.dir > 0 ? fl.e.a : fl.e.b], Q = nodes[fl.dir > 0 ? fl.e.b : fl.e.a];\r\n        if (fl.t >= 1) { Q.glow = 1; flashes.splice(i, 1); if (fl.hops > 0) spawn(nodes.indexOf(Q), fl.hops - 1); continue; }\r\n        var px = P.x + (Q.x - P.x) * fl.t, py = P.y + (Q.y - P.y) * fl.t;\r\n        var tl = Math.max(0, fl.t - .16), qx = P.x + (Q.x - P.x) * tl, qy = P.y + (Q.y - P.y) * tl;\r\n        var gl = ctx.createLinearGradient(qx, qy, px, py); gl.addColorStop(0, rgba(MINT, 0)); gl.addColorStop(1, rgba(MINT, .9));\r\n        ctx.strokeStyle = gl; ctx.lineWidth = 2.6; ctx.beginPath(); ctx.moveTo(qx, qy); ctx.lineTo(px, py); ctx.stroke();\r\n        var g = ctx.createRadialGradient(px, py, 0, px, py, 10);\r\n        g.addColorStop(0, 'rgba(255,255,255,.95)'); g.addColorStop(.35, rgba(MINT, .85)); g.addColorStop(1, rgba(MINT, 0));\r\n        ctx.fillStyle = g; ctx.beginPath(); ctx.arc(px, py, 10, 0, 6.283); ctx.fill();\r\n      }\r\n      \/* points qui battent, avec halo *\/\r\n      for (i = 0; i < nodes.length; i++) {\r\n        n = nodes[i];\r\n        var s = .5 + .5 * Math.sin(t \/ 4600 * 6.283 + n.ph), sh = .5 + .5 * Math.sin(t \/ 5400 * 6.283 + n.ph);\r\n        var hr = n.rad * 2.4 * (1 + .32 * sh) * (1 + n.glow * .35);\r\n        ctx.fillStyle = rgba(n.col, (haloOp * (.65 + .35 * sh) + n.glow * .18).toFixed(3));\r\n        ctx.beginPath(); ctx.arc(n.x, n.y, hr, 0, 6.283); ctx.fill();\r\n        ctx.fillStyle = rgba(n.col, nodeOp);\r\n        ctx.beginPath(); ctx.arc(n.x, n.y, n.rad * (1 + .16 * s), 0, 6.283); ctx.fill();\r\n        if (n.glow > .05) { ctx.fillStyle = rgba(MINT, (n.glow * .8).toFixed(3)); ctx.beginPath(); ctx.arc(n.x, n.y, n.rad * .55, 0, 6.283); ctx.fill(); }\r\n      }\r\n    }\r\n    function loop(now) { frame(now); if (running) raf = requestAnimationFrame(loop); }\r\n    size(); frame(performance.now());\r\n    var host = cv.parentElement;\r\n    host.addEventListener('pointermove', function (e) { var rc = cv.getBoundingClientRect(); mouse.x = e.clientX - rc.left; mouse.y = e.clientY - rc.top; });\r\n    host.addEventListener('pointerleave', function () { mouse.x = mouse.y = -9999; });\r\n    var tm; window.addEventListener('resize', function () { clearTimeout(tm); tm = setTimeout(function () { size(); frame(performance.now()); }, 150); });\r\n    if (reduce || !('IntersectionObserver' in window)) return;\r\n    new IntersectionObserver(function (es) {\r\n      es.forEach(function (e) { if (e.isIntersecting && !running) { running = true; raf = requestAnimationFrame(loop); } else if (!e.isIntersecting) { running = false; cancelAnimationFrame(raf); } });\r\n    }).observe(cv);\r\n  }\r\n  [['neural','light','.8'],['neural2','dark','.5'],['neural3','dark','.45']].forEach(function(c){ var cv=document.getElementById(c[0]); if(cv){ cv.dataset.bg=c[1]; cv.setAttribute('data-density',c[2]); Net(cv); } });\r\n\r\n  \/\/ form -> mail\r\n  document.getElementById('demoForm').addEventListener('submit', function(e){\r\n    e.preventDefault();\r\n    var f=e.target, body='Name \/ company: '+f.nom.value+'\\nEmail: '+f.mail.value+'\\nPhone: '+f.tel.value+'\\n\\nInspection:\\n'+f.msg.value;\r\n    window.location.href='mailto:r.gueudre@cim-atlantique.com?subject='+encodeURIComponent('Deeper demo request')+'&body='+encodeURIComponent(body);\r\n  });\r\n<\/script>\r\n<script>\r\n(function(){\r\n  var root=document.getElementById('cim-accueil'); if(!root) return;\r\n  var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n  \/* ---------- Visite du logiciel : chaque vignette joue un petit sc\u00e9nario au survol ---------- *\/\r\n  (function () {\r\n    var cards = root.querySelectorAll('.vg[data-tour]');\r\n    if (!cards.length) return;\r\n    function Tour(card, script) {\r\n      var ov = card.querySelector('.ov'), cur = card.querySelector('.cur'), token = 0, playing = false;\r\n      var home = { l: cur.style.left, t: cur.style.top };\r\n      function $(s) { return ov.querySelector(s); }\r\n      function $$(s) { return ov.querySelectorAll(s); }\r\n      function wait(ms, tk) { return new Promise(function (res, rej) { setTimeout(function () { tk === token ? res() : rej('stop'); }, ms); }); }\r\n      var api = {\r\n        $: $, $$: $$,\r\n        move: function (x, y, tk, ms) {\r\n          ms = ms || 800;\r\n          [cur].concat(Array.prototype.slice.call($$('.drag.on'))).forEach(function (el) {\r\n            el.style.transitionDuration = ms + 'ms, ' + ms + 'ms, .3s';\r\n            var dx = el === cur ? 0 : -1.2, dy = el === cur ? 0 : -1.4;\r\n            el.style.left = (x + dx) + '%'; el.style.top = (y + dy) + '%';\r\n          });\r\n          return wait(ms + 60, tk);\r\n        },\r\n        click: function (tk) { cur.classList.remove('is-click'); void cur.offsetWidth; cur.classList.add('is-click'); return wait(260, tk); },\r\n        on: function (s) { (typeof s === 'string' ? $$(s) : [s]).forEach(function (e) { e.classList.add('on'); }); },\r\n        off: function (s) { (typeof s === 'string' ? $$(s) : [s]).forEach(function (e) { e.classList.remove('on'); }); },\r\n        flash: function (s) { var e = $(s); e.classList.remove('on'); void e.offsetWidth; e.classList.add('on'); },\r\n        type: function (el, txt, tk) {\r\n          var k = 0; el.textContent = '';\r\n          return new Promise(function (res, rej) {\r\n            (function f() { if (tk !== token) return rej('stop'); el.textContent = txt.slice(0, ++k); if (k < txt.length) setTimeout(f, 110); else res(); })();\r\n          });\r\n        },\r\n        count: function (el, to, ms, tk) {\r\n          var t0 = performance.now();\r\n          return new Promise(function (res) { (function f(t) { if (tk !== token) return res(); var k = Math.min(1, (t - t0) \/ ms); el.textContent = Math.round(to * k); if (k < 1) requestAnimationFrame(f); else res(); })(t0); });\r\n        },\r\n        wait: wait,\r\n        token: function () { return token; }\r\n      };\r\n      function reset() {\r\n        ov.querySelectorAll('.on,.focus,.hov,.solid').forEach(function (e) { e.classList.remove('on', 'focus', 'hov', 'solid'); });\r\n        cur.style.transitionDuration = '0s'; cur.style.left = home.l; cur.style.top = home.t;\r\n        $$('.drag').forEach(function (e) { e.style.transitionDuration = '0s'; e.style.left = e.dataset.l || e.style.left; e.style.top = e.dataset.t || e.style.top; });\r\n        if (script.reset) script.reset(api);\r\n      }\r\n      $$('.drag').forEach(function (e) { e.dataset.l = e.style.left; e.dataset.t = e.style.top; });\r\n      async function loop() {\r\n        var tk = ++token; playing = true; card.classList.add('is-play');\r\n        try { while (tk === token) { reset(); await wait(250, tk); await script.run(api, tk); await wait(1600, tk); } } catch (e) {}\r\n      }\r\n      function stop() { token++; playing = false; card.classList.remove('is-play'); reset(); }\r\n      card.addEventListener('mouseenter', function () { if (!playing) loop(); });\r\n      card.addEventListener('mouseleave', stop);\r\n      card.addEventListener('focusin', function () { if (!playing) loop(); });\r\n      card.addEventListener('focusout', function (e) { if (!card.contains(e.relatedTarget)) stop(); });\r\n      if (window.matchMedia('(hover:none)').matches && 'IntersectionObserver' in window) {\r\n        new IntersectionObserver(function (es) { es.forEach(function (e) { if (e.isIntersecting) { if (!playing) loop(); } else stop(); }); }, { threshold: .6 }).observe(card);\r\n      }\r\n      if (reduce && script.final) script.final(api);\r\n      card.tabIndex = 0;\r\n      return { stop: stop };\r\n    }\r\n\r\n    var S = {\r\n      operate: {\r\n        reset: function (a) { a.$('[data-count]').textContent = '0'; },\r\n        run: async function (a, tk) {\r\n          await a.move(14.5, 5.6, tk);\r\n          await a.click(tk); a.flash('.ov-flash');\r\n          await a.wait(450, tk);\r\n          a.on('.lid'); a.on('.ov-tag'); await a.count(a.$('[data-count]'), 13, 900, tk);\r\n          await a.wait(500, tk); a.on('.ov-toast');\r\n          await a.move(36, 70, tk, 900);\r\n        },\r\n        final: function (a) { a.on('.lid'); a.on('.ov-tag'); a.$('[data-count]').textContent = '13'; }\r\n      },\r\n      studio: {\r\n        run: async function (a, tk) {\r\n          await a.move(10, 80, tk); a.on('.ov-hl');\r\n          await a.click(tk); a.on('.ov-ghost');\r\n          await a.move(40, 58.5, tk, 1100);\r\n          a.off('.ov-ghost'); a.off('.ov-hl'); a.on('.ov-node');\r\n          await a.wait(300, tk); a.on('.ov-link');\r\n          await a.wait(800, tk);\r\n          await a.move(30.5, 3.1, tk);\r\n          await a.click(tk); a.flash('.ov-flash');\r\n          await a.wait(400, tk); a.on('.ov-pill');\r\n          await a.move(60, 75, tk, 900);\r\n        },\r\n        final: function (a) { a.on('.ov-node'); a.on('.ov-link'); a.on('.ov-pill'); }\r\n      },\r\n      data: {\r\n        run: async function (a, tk) {\r\n          await a.move(31, 35.5, tk);\r\n          await a.click(tk);\r\n          a.on('.ov-box'); a.on('.ov-wire');\r\n          await a.wait(1700, tk); a.on('.ov-tip');\r\n          await a.move(75, 36, tk, 1000);\r\n          await a.wait(600, tk);\r\n          await a.move(75, 84, tk, 900);\r\n        },\r\n        final: function (a) { a.on('.ov-box'); a.on('.ov-wire'); a.on('.ov-tip'); }\r\n      },\r\n      annot: {\r\n        run: async function (a, tk) {\r\n          await a.move(57.5, 23, tk);\r\n          await a.click(tk); a.on('.ov-tool');\r\n          await a.wait(300, tk);\r\n          await a.move(64.8, 57.8, tk, 900);\r\n          await a.click(tk); a.on('.ov-obb');\r\n          await a.wait(600, tk); a.$('.ov-obb').classList.add('solid'); a.on('.ov-cover');\r\n          await a.wait(700, tk);\r\n          await a.move(96.4, 23, tk, 900);\r\n          await a.click(tk); a.flash('.ov-flash');\r\n          await a.wait(250, tk); a.on('.ov-toast');\r\n          await a.move(80, 80, tk, 900);\r\n        },\r\n        final: function (a) { a.on('.ov-tool'); a.on('.ov-obb'); a.$('.ov-obb').classList.add('solid'); a.on('.ov-cover'); }\r\n      },\r\n      vlm: (function () {\r\n        var data = null, ok = null;\r\n        function load() {\r\n          if (ok !== null) return Promise.resolve(ok);\r\n          function im(src) { return new Promise(function (res, rej) { var i = new Image(); i.onload = function () { res(i); }; i.onerror = rej; i.src = src; }); }\r\n          return Promise.all([im('https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-vlm-color-1.webp'), im('https:\/\/www.cim-atlantique.com\/wp-content\/uploads\/2026\/11\/deeper-vlm-order-1.png')]).then(function (r) {\r\n            try {\r\n              var w = 526, hh = 520, c = document.createElement('canvas'); c.width = w; c.height = hh; var x = c.getContext('2d');\r\n              x.drawImage(r[0], 0, 0, w, hh); var col = x.getImageData(0, 0, w, hh);\r\n              x.clearRect(0, 0, w, hh); x.drawImage(r[1], 0, 0, w, hh); var ord = x.getImageData(0, 0, w, hh).data;\r\n              var o = new Uint8Array(w * hh); for (var i = 0; i < o.length; i++) o[i] = ord[i * 4];\r\n              data = { col: col, ord: o }; ok = true;\r\n            } catch (e) { ok = false; }\r\n            return ok;\r\n          }, function () { ok = false; return ok; });\r\n        }\r\n        function paint(cv, t) {\r\n          var x = cv.getContext('2d'), out = x.createImageData(526, 520), d = out.data, c = data.col.data, o = data.ord;\r\n          for (var i = 0, n = o.length; i < n; i++) { var k = o[i]; if (!k) continue; var a = (t - k) * 14; if (a <= 0) continue; var j = i * 4; d[j] = c[j]; d[j + 1] = c[j + 1]; d[j + 2] = c[j + 2]; d[j + 3] = a > 255 ? 255 : a; }\r\n          x.putImageData(out, 0, 0);\r\n        }\r\n        return {\r\n          reset: function (a) {\r\n            a.$('[data-prompt]').textContent = ''; a.$('.vlm-in').classList.remove('focus');\r\n            a.$('[data-state]').textContent = 'analyzing\u2026';\r\n            var cv = a.$('.vlm-zone canvas'); cv.getContext('2d').clearRect(0, 0, cv.width, cv.height);\r\n          },\r\n          run: async function (a, tk) {\r\n            load();\r\n            await a.move(10.5, 83.5, tk);\r\n            await a.click(tk); a.$('.vlm-in').classList.add('focus');\r\n            await a.type(a.$('[data-prompt]'), 'syringe', tk);\r\n            await a.wait(350, tk);\r\n            a.$('.vlm-in').classList.remove('focus');\r\n            await a.move(10.8, 96, tk, 700);\r\n            await a.click(tk); a.flash('.vlm-trig');\r\n            a.on('.vlm-tag');\r\n            var ready = await load(), cv = a.$('.vlm-zone canvas');\r\n            if (ready) {\r\n              var t0 = performance.now(), D = 2200;\r\n              await new Promise(function (res) { (function f(t) { if (tk !== a.token()) return res(); var k = Math.min(1, (t - t0) \/ D); paint(cv, k * 275); if (k < 1) requestAnimationFrame(f); else res(); })(t0); });\r\n            } else { await a.wait(600, tk); }\r\n            a.on('.vlm-full');\r\n            a.$('[data-state]').textContent = 'all detected';\r\n            await a.wait(400, tk); a.on('.ov-toast');\r\n            await a.move(32, 70, tk, 900);\r\n          },\r\n          final: function (a) { a.$('[data-prompt]').textContent = 'syringe'; a.on('.vlm-full'); a.on('.vlm-tag'); a.$('[data-state]').textContent = 'all detected'; }\r\n        };\r\n      })(),\r\n      learn: {\r\n        reset: function (a) {\r\n          a.$('[data-f=\"size\"] b').textContent = '256'; a.$('[data-f=\"ep\"] b').textContent = '50'; a.$('[data-f=\"ms\"] b').textContent = 'n';\r\n          a.$('[data-ep]').textContent = '0';\r\n        },\r\n        run: async function (a, tk) {\r\n          var fs = a.$('[data-f=\"size\"]'), fe = a.$('[data-f=\"ep\"]'), fm = a.$('[data-f=\"ms\"]');\r\n          await a.move(40, 15.6, tk);\r\n          await a.click(tk); a.on(fs); fs.classList.add('focus');\r\n          await a.type(fs.querySelector('b'), '640', tk); await a.wait(350, tk); fs.classList.remove('focus');\r\n          await a.move(75, 15.6, tk);\r\n          await a.click(tk); a.on(fe); fe.classList.add('focus');\r\n          await a.type(fe.querySelector('b'), '100', tk); await a.wait(350, tk); fe.classList.remove('focus');\r\n          await a.move(80, 54, tk);\r\n          await a.click(tk); a.on(fm); a.on('.ov-menu');\r\n          await a.move(68, 63.5, tk, 600); a.$('.ov-menu .is-pick').classList.add('hov');\r\n          await a.click(tk); a.off('.ov-menu'); fm.querySelector('b').textContent = 's';\r\n          await a.wait(400, tk);\r\n          await a.move(12, 80.4, tk, 1000);\r\n          a.on('.ov-run'); await a.count(a.$('[data-ep]'), 12, 2600, tk);\r\n        },\r\n        final: function (a) { ['size', 'ep', 'ms'].forEach(function (k) { a.on(a.$('[data-f=\"' + k + '\"]')); }); a.$('[data-f=\"size\"] b').textContent = '640'; a.$('[data-f=\"ep\"] b').textContent = '100'; a.$('[data-f=\"ms\"] b').textContent = 's'; a.on('.ov-run'); }\r\n      }\r\n    };\r\n    cards.forEach(function (c) { var s = S[c.dataset.tour]; if (s) Tour(c, s); });\r\n  })();\r\n})();\r\n<\/script>\r\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-7754","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/pages\/7754","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/comments?post=7754"}],"version-history":[{"count":3,"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/pages\/7754\/revisions"}],"predecessor-version":[{"id":7818,"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/pages\/7754\/revisions\/7818"}],"wp:attachment":[{"href":"https:\/\/www.cim-atlantique.com\/en\/wp-json\/wp\/v2\/media?parent=7754"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}