{"id":737,"date":"2026-06-19T10:19:46","date_gmt":"2026-06-19T08:19:46","guid":{"rendered":"https:\/\/gaelo-h5s7cqtzmf.live-website.com\/?page_id=737"},"modified":"2026-06-19T15:44:23","modified_gmt":"2026-06-19T13:44:23","slug":"home","status":"publish","type":"page","link":"https:\/\/gaelo.fr\/en\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"737\" class=\"elementor elementor-737\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34cf174 e-con-full e-flex e-con e-parent\" data-id=\"34cf174\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2120852 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"2120852\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n================================================================\nGaelO \u2014 HOME \u2014 EN \u2014 Medical Imaging Infrastructure\nURL : https:\/\/gaelo.fr\/en\/\nFor Elementor Pro HTML widget\nBrand : Pixilib \/ GaelO\n================================================================\n\nConcept :\n  \u2022 Splash hero immersif PLEINE LARGEUR (edge-to-edge, pas\n    de border-radius) \u2014 fond sombre, gros titre Maven Pro 800\n    en gradient avec animations character-level\n  \u2022 Smooth scroll vers 4 sections produits + scroll-snap doux\n    (proximity) qui aligne chaque pilier quand on s'arr\u00eate\n    pr\u00e8s de lui \u2014 d\u00e9sactiv\u00e9 en mobile (gestes au doigt)\n  \u2022 Chaque section est minimaliste, asym\u00e9trique, avec sa couleur\n    d'accent : GaelO (teal), GaelO Flow (indigo), Image Processing\n    (orange), Services (green)\n  \u2022 Visuels SVG abstraits anim\u00e9s (pas d'images charg\u00e9es)\n  \u2022 CTA final dark gradient\n\n\u26a0\ufe0f Notes pour A :\n  - Le H1 est inclus. D\u00e9sactive celui d'Elementor si pr\u00e9sent.\n  - Tous les CTA pointent vers les vraies URLs des pages produits.\n  - Le bouton \"Talk to Our Team\" pointe vers #contact \u2014\n    remplace par l'URL de ton formulaire \/ page contact.\n  - JS minimal : scroll-progression bar + reveal + smooth-scroll\n    + activation du scroll-snap sur le document.\n================================================================\n-->\n\n<!-- Polices -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Maven+Pro:wght@400;500;600;700;800&family=Roboto+Mono:wght@400;500;600&display=swap\" rel=\"stylesheet\">\n\n<style>\n\/* ============================================================\n   GaelO Home \u2014 Scoped Styles\n   ============================================================ *\/\n.gaelo-home{\n  --teal:#0495A0;\n  --teal-bright:#5DD0DA;\n  --teal-soft:rgba(4,149,160,.12);\n  --orange:#FFBA4D;\n  --orange-soft:rgba(255,186,77,.14);\n  --indigo:#353275;\n  --indigo-bright:#5B57B8;\n  --indigo-soft:rgba(53,50,117,.12);\n  --green:#78E08F;\n  --green-soft:rgba(120,224,143,.14);\n  --slate:#314053;\n  --bg:#F8FAFB;\n  --bg-dark:#0d1b2a;\n  --bg-darker:#081421;\n  --white:#FFFFFF;\n  --text:#1A2332;\n  --muted:#6B7A8F;\n  --border:rgba(49,64,83,.10);\n  --shadow-md:0 8px 40px rgba(49,64,83,.12);\n  --shadow-lg:0 24px 80px rgba(49,64,83,.18);\n  --radius-md:18px;\n  --radius-lg:28px;\n  --radius-xl:36px;\n  --ease:cubic-bezier(.16,1,.3,1);\n  --max-width:1200px;\n  --font-display:'Maven Pro','Helvetica Neue',Arial,sans-serif;\n  --font-mono:'Roboto Mono','SF Mono','Menlo',monospace;\n  font-family:var(--font-display);\n  color:var(--text);\n  line-height:1.6;\n  font-size:17px;\n  -webkit-font-smoothing:antialiased;\n  scroll-behavior:smooth;\n}\n.gaelo-home *,\n.gaelo-home *::before,\n.gaelo-home *::after{box-sizing:border-box}\n.gaelo-home .container{max-width:var(--max-width);margin:0 auto;padding:0 clamp(20px,4vw,40px)}\n\n\/* ============================================================\n   SCROLL PROGRESS BAR (top)\n   ============================================================ *\/\n.gaelo-home .scroll-progress{\n  position:fixed;top:0;left:0;\n  height:2px;width:0%;\n  background:linear-gradient(90deg,var(--teal),var(--indigo),var(--orange));\n  z-index:9999;\n  transition:width .1s linear;\n  pointer-events:none;\n}\n\n\/* ============================================================\n   SPLASH HERO \u2014 full-width edge-to-edge (no border-radius)\n   ============================================================ *\/\n.gaelo-home .splash{\n  position:relative;\n  \/* break out of any parent (Elementor column, .container, etc.)\n     to truly span edge-to-edge with the dark background *\/\n  width:100vw;\n  margin-left:calc(50% - 50vw);\n  margin-right:calc(50% - 50vw);\n  margin-top:0;margin-bottom:0;\n  min-height:100vh;\n  display:flex;flex-direction:column;\n  align-items:center;justify-content:center;\n  text-align:center;\n  overflow:hidden;\n  padding:clamp(60px,8vw,100px) clamp(20px,5vw,80px) clamp(72px,10vw,100px);\n  background:linear-gradient(160deg,#1A3A52 0%,#205B6E 45%,#1E4C5E 75%,#1A4458 100%);\n}\n\n\/* ambient orbs *\/\n.gaelo-home .splash-canvas{position:absolute;inset:0;overflow:hidden;pointer-events:none}\n.gaelo-home .splash-orb{\n  position:absolute;border-radius:50%;\n  filter:blur(90px);opacity:.32;\n  animation:home-drift 16s ease-in-out infinite alternate;\n}\n.gaelo-home .splash-orb.o1{width:600px;height:600px;background:radial-gradient(circle,var(--teal),transparent 70%);top:-150px;left:-150px;animation-duration:18s}\n.gaelo-home .splash-orb.o2{width:520px;height:520px;background:radial-gradient(circle,var(--indigo),transparent 70%);bottom:-140px;right:-140px;animation-duration:22s;animation-delay:-5s}\n.gaelo-home .splash-orb.o3{width:300px;height:300px;background:radial-gradient(circle,var(--orange),transparent 70%);top:30%;right:20%;opacity:.16;animation-duration:14s;animation-delay:-9s}\n@keyframes home-drift{from{transform:translate(0,0) scale(1)}to{transform:translate(50px,40px) scale(1.12)}}\n\n\/* grid overlay *\/\n.gaelo-home .splash-grid{\n  position:absolute;inset:0;pointer-events:none;\n  background-image:\n    linear-gradient(rgba(4,149,160,.07) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(4,149,160,.07) 1px,transparent 1px);\n  background-size:64px 64px;\n  -webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent);\n  mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent);\n}\n.gaelo-home .splash-scanline{\n  position:absolute;left:0;width:100%;height:1px;\n  background:linear-gradient(90deg,transparent,var(--teal),var(--orange),transparent);\n  opacity:.5;animation:home-scan 8s linear infinite;\n}\n@keyframes home-scan{0%{top:0;opacity:.5}50%{opacity:.25}100%{top:100%;opacity:.5}}\n\n\/* content *\/\n.gaelo-home .splash-content{position:relative;z-index:2;max-width:1080px}\n\n.gaelo-home .splash-badge{\n  display:inline-flex;align-items:center;gap:10px;\n  padding:7px 18px;border-radius:50px;\n  border:1px solid rgba(4,149,160,.4);\n  background:rgba(4,149,160,.12);\n  color:var(--teal-bright);\n  font-family:var(--font-mono);font-size:.72rem;font-weight:500;\n  letter-spacing:.18em;text-transform:uppercase;\n  margin-bottom:36px;\n  animation:home-fadeUp .9s var(--ease) .3s both;\n}\n.gaelo-home .splash-badge-dot{\n  width:6px;height:6px;border-radius:50%;background:var(--teal);\n  box-shadow:0 0 12px var(--teal);\n  animation:home-pulse 2s ease infinite;\n}\n@keyframes home-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.6);opacity:.5}}\n\n.gaelo-home .splash-title{\n  font-size:clamp(2.4rem,7.5vw,5.5rem);\n  font-weight:800;\n  line-height:1.02;\n  letter-spacing:-.04em;\n  color:var(--white);\n  margin:0 0 24px;\n}\n.gaelo-home .splash-title .word{\n  display:inline-block;\n  opacity:0;transform:translateY(40px);\n  animation:home-titleUp .9s var(--ease) forwards;\n}\n.gaelo-home .splash-title .word.w1{animation-delay:.45s}\n.gaelo-home .splash-title .word.w2{animation-delay:.6s}\n.gaelo-home .splash-title .word.w3{animation-delay:.75s}\n.gaelo-home .splash-title .word.w4{animation-delay:.9s}\n.gaelo-home .splash-title .word.w5{animation-delay:1.05s}\n.gaelo-home .splash-title .word.w6{animation-delay:1.2s}\n@keyframes home-titleUp{to{opacity:1;transform:translateY(0)}}\n.gaelo-home .splash-title .accent{color:var(--orange)}\n.gaelo-home .splash-title .accent2{\n  background:linear-gradient(90deg,var(--teal),var(--green));\n  -webkit-background-clip:text;-webkit-text-fill-color:transparent;\n  background-clip:text;color:transparent;\n}\n\n.gaelo-home .splash-sub{\n  font-size:clamp(1rem,1.5vw,1.18rem);\n  font-weight:300;color:rgba(255,255,255,.6);\n  max-width:560px;margin:0 auto 48px;\n  animation:home-fadeUp .9s var(--ease) 1.4s both;\n}\n\n.gaelo-home .splash-actions{\n  display:flex;align-items:center;justify-content:center;\n  gap:14px;flex-wrap:wrap;\n  animation:home-fadeUp .9s var(--ease) 1.6s both;\n}\n\n\/* scroll cue *\/\n.gaelo-home .splash-scroll{\n  position:absolute;bottom:36px;left:50%;transform:translateX(-50%);\n  display:flex;flex-direction:column;align-items:center;gap:10px;\n  color:rgba(255,255,255,.42);font-family:var(--font-mono);\n  font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;\n  z-index:2;\n  animation:home-fadeUp 1s var(--ease) 2s both;\n}\n.gaelo-home .splash-scroll-dot{\n  width:22px;height:34px;\n  border:1.5px solid rgba(255,255,255,.25);\n  border-radius:20px;position:relative;\n}\n.gaelo-home .splash-scroll-dot::after{\n  content:'';position:absolute;top:6px;left:50%;\n  transform:translateX(-50%);\n  width:4px;height:4px;border-radius:50%;\n  background:var(--teal);\n  animation:home-scrollDown 2s ease infinite;\n}\n@keyframes home-scrollDown{\n  0%{top:6px;opacity:1}80%{top:18px;opacity:0}100%{top:6px;opacity:0}\n}\n\n\/* ============================================================\n   BUTTONS\n   ============================================================ *\/\n.gaelo-home .btn{\n  display:inline-flex;align-items:center;gap:10px;\n  padding:14px 30px;border-radius:50px;\n  font-size:.95rem;font-weight:600;font-family:inherit;\n  text-decoration:none;cursor:pointer;border:none;\n  transition:all .25s var(--ease);\n}\n.gaelo-home .btn:hover{text-decoration:none}\n.gaelo-home .btn svg{width:16px;height:16px;transition:transform .3s var(--ease)}\n.gaelo-home .btn:hover svg{transform:translateX(5px)}\n\n.gaelo-home .btn-primary-light{background:var(--white);color:var(--bg-dark)}\n.gaelo-home .btn-primary-light:hover{\n  background:var(--teal);color:var(--white);transform:translateY(-2px);\n  box-shadow:0 12px 30px rgba(4,149,160,.4);\n}\n.gaelo-home .btn-ghost-light{\n  background:rgba(255,255,255,.06);color:rgba(255,255,255,.92);\n  border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(10px);\n}\n.gaelo-home .btn-ghost-light:hover{\n  background:rgba(255,255,255,.15);transform:translateY(-2px);color:var(--white);\n}\n\n\/* ============================================================\n   PRODUCT SECTIONS \u2014 minimal, asymmetric, accent-color-driven\n   Scroll-snap: when scrolling stops near a pillar, it gently\n   snaps to align. Proximity (not mandatory) preserves freedom.\n   ============================================================ *\/\n.gaelo-home .pillar{\n  position:relative;\n  min-height:100vh;\n  padding:clamp(80px,12vw,150px) clamp(20px,4vw,40px);\n  overflow:hidden;\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n}\n.gaelo-home .pillar-inner{\n  position:relative;\n  max-width:820px;\n  width:100%;\n  margin:0 auto;\n  text-align:center;\n  display:flex;flex-direction:column;align-items:center;\n}\n\n\/* huge watermark number behind the title *\/\n.gaelo-home .pillar-title-wrap{\n  position:relative;\n  display:inline-block;\n  padding:clamp(28px,5vw,64px) clamp(20px,4vw,48px);\n  margin:0;\n}\n.gaelo-home .pillar-watermark{\n  position:absolute;\n  top:50%;left:50%;\n  transform:translate(-50%,-50%);\n  font-family:var(--font-display);\n  font-size:clamp(8rem,18vw,16rem);\n  font-weight:800;letter-spacing:-.08em;\n  line-height:1;\n  z-index:0;pointer-events:none;\n  user-select:none;\n  white-space:nowrap;\n}\n\/* image variant \u2014 used for product logos behind the title *\/\n.gaelo-home img.pillar-watermark{\n  width:auto;height:auto;\n  max-width:clamp(240px,42vw,420px);\n  max-height:clamp(140px,22vw,220px);\n  opacity:.10;\n  object-fit:contain;\n  font-size:initial;letter-spacing:initial;line-height:initial;\n}\n\n.gaelo-home .pillar-label{\n  display:inline-flex;align-items:center;gap:12px;\n  font-family:var(--font-mono);font-size:.75rem;font-weight:600;\n  letter-spacing:.16em;text-transform:uppercase;\n  margin-bottom:18px;\n  position:relative;z-index:1;\n  flex-wrap:wrap;justify-content:center;\n}\n.gaelo-home .pillar-label::before{\n  content:'';width:24px;height:2px;\n  border-radius:2px;\n  background:var(--teal);\n}\n.gaelo-home .pillar.p02 .pillar-label::before{background:var(--indigo)}\n.gaelo-home .pillar.p-dicom .pillar-label::before{background:var(--teal-bright)}\n.gaelo-home .pillar.p03 .pillar-label::before{background:var(--orange)}\n.gaelo-home .pillar.p04 .pillar-label::before{background:#3aa256}\n.gaelo-home .pillar-label-text{color:var(--muted)}\n\n.gaelo-home .pillar h2{\n  position:relative;z-index:1;\n  font-size:clamp(2.4rem,6vw,4.4rem);\n  font-weight:800;line-height:1;letter-spacing:-.04em;\n  color:var(--text);margin:0;\n}\n.gaelo-home .pillar-tagline{\n  font-size:clamp(1.05rem,1.5vw,1.22rem);\n  font-weight:300;color:var(--muted);\n  max-width:580px;margin:24px auto 36px;line-height:1.6;\n  position:relative;z-index:1;\n}\n\n.gaelo-home .pillar-stats{\n  display:flex;gap:clamp(20px,3vw,48px);\n  margin:0 auto 40px;flex-wrap:wrap;\n  justify-content:center;\n  position:relative;z-index:1;\n}\n.gaelo-home .pillar-stat{\n  position:relative;padding-left:14px;text-align:left;\n}\n.gaelo-home .pillar-stat::before{\n  content:'';position:absolute;left:0;top:6px;bottom:6px;\n  width:2px;border-radius:2px;\n}\n.gaelo-home .pillar-stat-num{\n  display:block;font-size:1.05rem;font-weight:700;\n  color:var(--text);letter-spacing:-.01em;line-height:1.3;\n}\n.gaelo-home .pillar-stat-label{\n  font-family:var(--font-mono);font-size:.68rem;\n  color:var(--muted);\n  text-transform:uppercase;letter-spacing:.1em;\n}\n\n.gaelo-home .pillar-cta{\n  display:inline-flex;align-items:center;gap:14px;\n  padding:20px 44px;border-radius:50px;\n  font-weight:700;font-size:1.1rem;\n  letter-spacing:-.005em;\n  text-decoration:none;\n  transition:all .3s var(--ease);\n  position:relative;overflow:hidden;\n}\n.gaelo-home .pillar-cta svg{\n  width:20px;height:20px;\n  transition:transform .3s var(--ease);\n}\n.gaelo-home .pillar-cta:hover svg{transform:translateX(6px)}\n@media (max-width:640px){\n  .gaelo-home .pillar-cta{padding:16px 32px;font-size:1rem;gap:12px}\n  .gaelo-home .pillar-cta svg{width:18px;height:18px}\n}\n\n\/* COLOR VARIANTS per pillar *\/\n\/* Pillar 01 \u2014 GaelO \u2014 TEAL *\/\n.gaelo-home .pillar.p01 .pillar-label-num{background:var(--teal-soft);color:var(--teal)}\n.gaelo-home .pillar.p01 .pillar-stat::before{background:var(--teal)}\n.gaelo-home .pillar.p01 .pillar-watermark{color:rgba(4,149,160,.06)}\n.gaelo-home .pillar.p01 .pillar-cta{background:var(--teal);color:var(--white)}\n.gaelo-home .pillar.p01 .pillar-cta:hover{background:#037a83;transform:translateY(-2px);box-shadow:0 12px 30px rgba(4,149,160,.4)}\n\n\/* Pillar 02 \u2014 GaelO Flow \u2014 INDIGO *\/\n.gaelo-home .pillar.p02 .pillar-label-num{background:var(--indigo-soft);color:var(--indigo)}\n.gaelo-home .pillar.p-dicom .pillar-label-num{background:var(--teal-soft);color:var(--teal)}\n.gaelo-home .pillar.p-dicom .pillar-stat::before{background:var(--teal-bright)}\n.gaelo-home .pillar.p-dicom .pillar-cta{background:var(--teal-bright);color:var(--slate)}\n.gaelo-home .pillar.p-dicom .pillar-cta:hover{background:var(--teal);color:var(--white);transform:translateY(-2px);box-shadow:0 12px 30px rgba(93,208,218,.4)}\n.gaelo-home .pillar.p02 .pillar-stat::before{background:var(--indigo)}\n.gaelo-home .pillar.p02 .pillar-watermark{color:rgba(53,50,117,.06)}\n.gaelo-home .pillar.p02 .pillar-cta{background:var(--indigo);color:var(--white)}\n.gaelo-home .pillar.p02 .pillar-cta:hover{background:#2a2860;transform:translateY(-2px);box-shadow:0 12px 30px rgba(53,50,117,.4)}\n\n\/* Pillar 03 \u2014 Image Processing \u2014 ORANGE *\/\n.gaelo-home .pillar.p03 .pillar-label-num{background:var(--orange-soft);color:#cc8200}\n.gaelo-home .pillar.p03 .pillar-stat::before{background:var(--orange)}\n.gaelo-home .pillar.p03 .pillar-watermark{color:rgba(255,186,77,.1)}\n.gaelo-home .pillar.p03 .pillar-cta{background:var(--orange);color:var(--text)}\n.gaelo-home .pillar.p03 .pillar-cta:hover{background:#ffc96a;transform:translateY(-2px);box-shadow:0 12px 30px rgba(255,186,77,.45)}\n\n\/* Pillar 04 \u2014 Services \u2014 GREEN *\/\n.gaelo-home .pillar.p04 .pillar-label-num{background:var(--green-soft);color:#3aa256}\n.gaelo-home .pillar.p04 .pillar-stat::before{background:var(--green)}\n.gaelo-home .pillar.p04 .pillar-watermark{color:rgba(120,224,143,.1)}\n.gaelo-home .pillar.p04 .pillar-cta{background:#3aa256;color:var(--white)}\n.gaelo-home .pillar.p04 .pillar-cta:hover{background:#2e8745;transform:translateY(-2px);box-shadow:0 12px 30px rgba(120,224,143,.4)}\n\n\/* ============================================================\n   FINAL CTA\n   ============================================================ *\/\n.gaelo-home .final-cta{\n  position:relative;overflow:hidden;\n  \/* edge-to-edge breakout, same as splash, no border-radius\n     so it lands flush at the bottom of the page *\/\n  width:100vw;\n  margin-left:calc(50% - 50vw);\n  margin-right:calc(50% - 50vw);\n  margin-top:0;margin-bottom:0;\n  min-height:100vh;\n  padding:clamp(80px,10vw,130px) clamp(20px,5vw,80px);\n  background:linear-gradient(135deg,var(--indigo),#1d1a5e,#0d2a42);\n  text-align:center;color:var(--white);\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n}\n.gaelo-home .final-cta-glow{\n  position:absolute;inset:0;pointer-events:none;\n  background:radial-gradient(ellipse 60% 60% at 50% 100%,rgba(4,149,160,.28),transparent);\n}\n.gaelo-home .final-cta-grid{\n  position:absolute;inset:0;pointer-events:none;\n  background-image:\n    linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);\n  background-size:50px 50px;\n  -webkit-mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent);\n  mask-image:radial-gradient(ellipse 80% 80% at 50% 50%,black,transparent);\n}\n.gaelo-home .final-cta-content{position:relative;z-index:1;max-width:640px;margin:0 auto}\n.gaelo-home .final-cta h2{\n  font-size:clamp(2rem,4vw,3rem);\n  font-weight:800;letter-spacing:-.03em;line-height:1.08;\n  color:var(--white);margin-bottom:18px;\n}\n.gaelo-home .final-cta-sub{\n  color:rgba(255,255,255,.62);font-weight:300;font-size:1.05rem;\n  margin-bottom:38px;max-width:520px;margin-left:auto;margin-right:auto;\n}\n.gaelo-home .final-cta-actions{\n  display:flex;gap:14px;justify-content:center;flex-wrap:wrap;\n}\n\n\/* ============================================================\n   REVEAL ON SCROLL\n   ============================================================ *\/\n.gaelo-home .reveal{\n  opacity:0;transform:translateY(32px);\n  transition:opacity .9s var(--ease),transform .9s var(--ease);\n}\n.gaelo-home .reveal.is-visible{opacity:1;transform:none}\n.gaelo-home .reveal-d1{transition-delay:.1s}\n.gaelo-home .reveal-d2{transition-delay:.2s}\n.gaelo-home .reveal-d3{transition-delay:.3s}\n.gaelo-home .reveal-d4{transition-delay:.4s}\n\n@keyframes home-fadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}\n\n\/* ============================================================\n   RESPONSIVE\n   ============================================================ *\/\n@media (max-width:900px){\n  \/* on mobile snap is disabled \u2014 release the 100vh constraint\n     so sections size to their content naturally *\/\n  .gaelo-home .pillar,\n  .gaelo-home .final-cta{min-height:auto}\n  .gaelo-home .pillar{padding:clamp(72px,12vw,110px) 20px}\n  .gaelo-home .pillar-watermark{font-size:clamp(7rem,22vw,12rem)}\n  .gaelo-home img.pillar-watermark{\n    max-width:clamp(200px,42vw,300px);\n    max-height:clamp(110px,22vw,160px);\n    font-size:initial;\n  }\n  .gaelo-home .pillar-title-wrap{padding:clamp(20px,5vw,40px) clamp(16px,4vw,32px)}\n}\n@media (max-width:640px){\n  .gaelo-home{font-size:16px}\n  .gaelo-home .splash{padding:60px 18px 80px}\n  .gaelo-home .splash-scroll{display:none}\n  .gaelo-home .pillar{padding:64px 18px}\n  .gaelo-home .pillar h2{font-size:clamp(2rem,9vw,2.6rem)}\n  .gaelo-home .pillar-watermark{font-size:clamp(6rem,28vw,9rem)}\n  .gaelo-home img.pillar-watermark{\n    max-width:clamp(150px,46vw,220px);\n    max-height:clamp(80px,24vw,120px);\n    font-size:initial;\n  }\n  .gaelo-home .pillar-tagline{font-size:1rem;margin:18px auto 28px}\n  .gaelo-home .pillar-stats{gap:16px;margin-bottom:28px}\n  .gaelo-home .pillar-stat{padding-left:12px}\n  .gaelo-home .final-cta{padding:64px 20px}\n}\n@media (prefers-reduced-motion:reduce){\n  .gaelo-home *,\n  .gaelo-home *::before,\n  .gaelo-home *::after{\n    animation-duration:.01ms!important;\n    animation-iteration-count:1!important;\n    transition-duration:.01ms!important;\n  }\n}\n\n\/* Logo seul (sans texte) sur GaelO + GaelO Flow *\/\n.gaelo-home .pillar.p01 #gaelo-title,\n.gaelo-home .pillar.p02 #flow-title{\n  position:absolute;width:1px;height:1px;padding:0;margin:-1px;\n  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;\n}\n\/* Le title-wrap n'a plus besoin de son gros padding (le H2 est masqu\u00e9) *\/\n.gaelo-home .pillar.p01 .pillar-title-wrap,\n.gaelo-home .pillar.p02 .pillar-title-wrap{\n  padding:0;\n  display:block;\n  margin:24px auto 0;\n}\n\/* Le logo passe en flux normal, bien visible, centr\u00e9, taille ma\u00eetris\u00e9e *\/\n.gaelo-home .pillar.p01 img.pillar-watermark,\n.gaelo-home .pillar.p02 img.pillar-watermark{\n  position:relative;top:auto;left:auto;transform:none;\n  opacity:1;\n  display:block;margin:0 auto;\n  max-width:clamp(220px,32vw,300px);\n  max-height:none;\n  width:auto;height:auto;\n}\n<\/style>\n\n<!-- ===== JSON-LD : Organization + WebSite ===== -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"Organization\",\n      \"@id\": \"https:\/\/gaelo.fr\/#organization\",\n      \"name\": \"Pixilib\",\n      \"alternateName\": \"GaelO\",\n      \"url\": \"https:\/\/gaelo.fr\/\",\n      \"description\": \"Pixilib builds GaelO, a medical imaging infrastructure for clinical research \u2014 clinical trial imaging platform, DICOM data orchestration, AI segmentation algorithms and imaging CRO services.\"\n    },\n    {\n      \"@type\": \"WebSite\",\n      \"@id\": \"https:\/\/gaelo.fr\/en\/#website\",\n      \"url\": \"https:\/\/gaelo.fr\/en\/\",\n      \"name\": \"GaelO \u2014 Medical Imaging Infrastructure for Clinical Research\",\n      \"inLanguage\": \"en\",\n      \"publisher\": { \"@id\": \"https:\/\/gaelo.fr\/#organization\" }\n    }\n  ]\n}\n<\/script>\n\n<article class=\"gaelo-home\" lang=\"en\">\n\n  <!-- Scroll progress bar -->\n  <div class=\"scroll-progress\" aria-hidden=\"true\"><\/div>\n\n  <!-- ============================================================\n       SPLASH HERO \u2014 full width edge-to-edge\n       ============================================================ -->\n  <header class=\"splash\" role=\"banner\">\n    <div class=\"splash-canvas\" aria-hidden=\"true\">\n      <div class=\"splash-orb o1\"><\/div>\n      <div class=\"splash-orb o2\"><\/div>\n      <div class=\"splash-orb o3\"><\/div>\n      <div class=\"splash-grid\"><\/div>\n      <div class=\"splash-scanline\"><\/div>\n    <\/div>\n\n    <div class=\"splash-content\">\n      <span class=\"splash-badge\">\n        <span class=\"splash-badge-dot\"><\/span>\n        Pixilib \u00b7 GaelO Ecosystem\n      <\/span>\n      <h1 class=\"splash-title\">\n        <span class=\"word w1\">Medical<\/span>\n        <span class=\"word w2\">Imaging<\/span><br>\n        <span class=\"word w3 accent2\">Infrastructure<\/span>\n        <span class=\"word w4\">for<\/span><br>\n        <span class=\"word w5 accent\">Clinical<\/span>\n        <span class=\"word w6 accent\">Research<\/span>\n      <\/h1>\n      <p class=\"splash-sub\">A unified platform for centralized imaging, DICOM orchestration, AI-powered analysis and clinical trial expertise.<\/p>\n      <div class=\"splash-actions\">\n        <a href=\"#gaelo\" class=\"btn btn-primary-light\">\n          Explore the Ecosystem\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\/><polyline points=\"19 12 12 19 5 12\"\/><\/svg>\n        <\/a>\n        <a href=\"\/en\/contact\/\" class=\"btn btn-ghost-light\">Talk to Our Team<\/a>\n      <\/div>\n    <\/div>\n\n    <div class=\"splash-scroll\" aria-hidden=\"true\">\n      <div class=\"splash-scroll-dot\"><\/div>\n      Scroll\n    <\/div>\n  <\/header>\n\n  <div class=\"container\">\n\n    <!-- ============================================================\n         PILLAR 01 \u2014 GAELO\n         ============================================================ -->\n    <section class=\"pillar p01\" id=\"gaelo\" aria-labelledby=\"gaelo-title\">\n      <div class=\"pillar-inner reveal\">\n        <span class=\"pillar-label\">\n          <span class=\"pillar-label-text\">Clinical Trial Imaging Platform<\/span>\n        <\/span>\n        <div class=\"pillar-title-wrap\">\n          <img class=\"pillar-watermark\" src=\"\/wp-content\/uploads\/2026\/03\/Logo-Gaelo-1-scaled.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\">\n          <h2 id=\"gaelo-title\">GaelO<\/h2>\n        <\/div>\n        <p class=\"pillar-tagline\">The all-in-one solution for centralized imaging review, Blind Independent Central Review workflows, automated de-identification and audit-ready data capture.<\/p>\n        <div class=\"pillar-stats\">\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">ICH E6(R3)<\/span>\n            <span class=\"pillar-stat-label\">Audit Trail<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">GDPR \u00b7 HIPAA<\/span>\n            <span class=\"pillar-stat-label\">Compliant<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Multi-Modal<\/span>\n            <span class=\"pillar-stat-label\">CT \u00b7 MRI \u00b7 PET \u00b7 RT<\/span>\n          <\/div>\n        <\/div>\n        <a href=\"\/en\/software\/\" class=\"pillar-cta\">\n          Discover GaelO\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n      <\/div>\n    <\/section>\n\n    <!-- ============================================================\n         PILLAR 02 \u2014 GAELO FLOW\n         ============================================================ -->\n    <section class=\"pillar p02\" id=\"gaelo-flow\" aria-labelledby=\"flow-title\">\n      <div class=\"pillar-inner reveal\">\n        <span class=\"pillar-label\">\n          <span class=\"pillar-label-text\">DICOM Data Orchestration<\/span>\n        <\/span>\n        <div class=\"pillar-title-wrap\">\n          <img class=\"pillar-watermark\" src=\"\/wp-content\/uploads\/2026\/04\/Logo-gaelo-flow.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\" decoding=\"async\">\n          <h2 id=\"flow-title\">GaelO Flow<\/h2>\n        <\/div>\n        <p class=\"pillar-tagline\">A vendor-neutral DICOM platform \u2014 query\/retrieve, batch anonymization, AI integration and seamless data exchange across investigator sites.<\/p>\n        <div class=\"pillar-stats\">\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Query\/Retrieve<\/span>\n            <span class=\"pillar-stat-label\">DICOM Search<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Batch<\/span>\n            <span class=\"pillar-stat-label\">De-identification<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">AI-Ready<\/span>\n            <span class=\"pillar-stat-label\">Algorithm Hub<\/span>\n          <\/div>\n        <\/div>\n        <a href=\"\/en\/software\/dicom-data-orchestration\/\" class=\"pillar-cta\">\n          Discover GaelO Flow\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n      <\/div>\n    <\/section>\n\n    <!-- ============================================================\n         PILLAR \u2014 DICOM VIEWER\n         ============================================================ -->\n    <section class=\"pillar p-dicom\" id=\"dicom-viewer\" aria-labelledby=\"dicom-title\">\n      <div class=\"pillar-inner reveal\">\n        <span class=\"pillar-label\">\n          <span class=\"pillar-label-text\">Advanced Web-Based DICOM Viewer<\/span>\n        <\/span>\n        <div class=\"pillar-title-wrap\">\n          <h2 id=\"dicom-title\">DICOM Viewer<\/h2>\n        <\/div>\n        <p class=\"pillar-tagline\">A full diagnostic workstation in the browser \u2014 MPR, MIP, PET\/CT fusion, quantification tools and embedded eCRFs for unified central review.<\/p>\n        <div class=\"pillar-stats\">\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">MPR \u00b7 MIP<\/span>\n            <span class=\"pillar-stat-label\">Reconstruction<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">PET\/CT<\/span>\n            <span class=\"pillar-stat-label\">Fusion<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Zero-Install<\/span>\n            <span class=\"pillar-stat-label\">Browser-Based<\/span>\n          <\/div>\n        <\/div>\n        <a href=\"\/en\/software\/dicom-viewer\/\" class=\"pillar-cta\">\n          Discover the DICOM Viewer\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n      <\/div>\n    <\/section>\n\n    <!-- ============================================================\n         PILLAR 03 \u2014 IMAGE PROCESSING\n         ============================================================ -->\n    <section class=\"pillar p03\" id=\"image-processing\" aria-labelledby=\"ip-title\">\n      <div class=\"pillar-inner reveal\">\n        <span class=\"pillar-label\">\n          <span class=\"pillar-label-text\">AI Algorithms \u00b7 Medical Imaging<\/span>\n        <\/span>\n        <div class=\"pillar-title-wrap\">\n          <h2 id=\"ip-title\">Image Processing<\/h2>\n        <\/div>\n        <p class=\"pillar-tagline\">Automated segmentation engines for PET (FDG, PSMA, DOTATOC) and CT \u2014 all human-in-the-loop, all medically validated, all ready for clinical trials.<\/p>\n        <div class=\"pillar-stats\">\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">PET Segmentation<\/span>\n            <span class=\"pillar-stat-label\">FDG \u00b7 PSMA \u00b7 DOTATOC<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">CT Organs<\/span>\n            <span class=\"pillar-stat-label\">Multi-Organ<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Human-in-Loop<\/span>\n            <span class=\"pillar-stat-label\">Physician Validated<\/span>\n          <\/div>\n        <\/div>\n        <a href=\"\/en\/algorithms\/\" class=\"pillar-cta\">\n          Explore Algorithms\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n      <\/div>\n    <\/section>\n\n    <!-- ============================================================\n         PILLAR 04 \u2014 SERVICES\n         ============================================================ -->\n    <section class=\"pillar p04\" id=\"services\" aria-labelledby=\"sv-title\">\n      <div class=\"pillar-inner reveal\">\n        <span class=\"pillar-label\">\n          <span class=\"pillar-label-text\">Imaging CRO \u00b7 Expertise<\/span>\n        <\/span>\n        <div class=\"pillar-title-wrap\">\n          <h2 id=\"sv-title\">Services<\/h2>\n        <\/div>\n        <p class=\"pillar-tagline\">From study design to data export \u2014 our scientific committee, radiomics expertise and clinical experts deliver imaging endpoints with rigor.<\/p>\n        <div class=\"pillar-stats\">\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Imaging CRO<\/span>\n            <span class=\"pillar-stat-label\">Full-Service<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">Radiomics<\/span>\n            <span class=\"pillar-stat-label\">Biomarker Discovery<\/span>\n          <\/div>\n          <div class=\"pillar-stat\">\n            <span class=\"pillar-stat-num\">24\/7<\/span>\n            <span class=\"pillar-stat-label\">Investigator Support<\/span>\n          <\/div>\n        <\/div>\n        <a href=\"\/en\/services\/\" class=\"pillar-cta\">\n          Explore Services\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <!-- ============================================================\n       FINAL CTA\n       ============================================================ -->\n  <aside class=\"final-cta\" id=\"contact\" aria-labelledby=\"final-title\">\n    <div class=\"final-cta-glow\" aria-hidden=\"true\"><\/div>\n    <div class=\"final-cta-grid\" aria-hidden=\"true\"><\/div>\n    <div class=\"final-cta-content\">\n      <h2 id=\"final-title\">Ready to elevate your clinical trial imaging?<\/h2>\n      <p class=\"final-cta-sub\">From multicenter trials to bespoke imaging endpoints \u2014 let's design the right infrastructure together.<\/p>\n      <div class=\"final-cta-actions\">\n        <a href=\"\/en\/contact\/\" class=\"btn btn-primary-light\">\n          Request a Demo\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n        <a href=\"\/en\/contact\/\" class=\"btn btn-ghost-light\">Talk to Our Team<\/a>\n      <\/div>\n    <\/div>\n  <\/aside>\n\n<\/article>\n\n<!-- =============================================================\n     JS \u2014 reveal + scroll progress + custom smooth-snap\n     The snap is implemented in pure JS (no CSS scroll-snap) so we\n     get a smooth Apple-like feel on Mac trackpads: each wheel\/swipe\n     glides to the next section with momentum, and a cooldown prevents\n     stuttery double-fires. Mobile (\u2264900px) keeps native scrolling.\n     ============================================================= -->\n<script>\n(function(){\n  var root=document.querySelector('.gaelo-home');\n  if(!root)return;\n\n  \/\/ \u2500\u2500\u2500 REVEAL ON SCROLL \u2500\u2500\u2500\n  if(typeof IntersectionObserver!=='undefined'){\n    var els=root.querySelectorAll('.reveal');\n    var io=new IntersectionObserver(function(entries){\n      entries.forEach(function(e){\n        if(e.isIntersecting){\n          e.target.classList.add('is-visible');\n          io.unobserve(e.target);\n        }\n      });\n    },{rootMargin:'0px 0px -10% 0px',threshold:.1});\n    els.forEach(function(el){io.observe(el)});\n  }\n\n  \/\/ \u2500\u2500\u2500 SCROLL PROGRESS BAR \u2500\u2500\u2500\n  var bar=root.querySelector('.scroll-progress');\n  function updateProgress(){\n    if(!bar)return;\n    var max=document.documentElement.scrollHeight-window.innerHeight;\n    var p=max>0?(window.scrollY\/max)*100:0;\n    bar.style.width=p+'%';\n  }\n  window.addEventListener('scroll',updateProgress,{passive:true});\n  updateProgress();\n\n  \/\/ \u2500\u2500\u2500 BASE SCROLL SETUP \u2500\u2500\u2500\n  document.documentElement.style.scrollBehavior='auto';\n  document.body.style.overflowX='hidden';\n\n  \/\/ \u2500\u2500\u2500 ANCHOR CLICK SMOOTHING \u2500\u2500\u2500\n  root.addEventListener('click',function(ev){\n    var a=ev.target.closest('a[href^=\"#\"]');\n    if(!a)return;\n    var id=a.getAttribute('href').slice(1);\n    if(!id)return;\n    var target=document.getElementById(id);\n    if(!target)return;\n    ev.preventDefault();\n    smoothScrollTo(target);\n  });\n\n  \/\/ \u2500\u2500\u2500 CUSTOM RAF EASE-OUT SCROLL \u2500\u2500\u2500\n  \/\/ Browser-native scrollIntoView is a bit jerky on some setups.\n  \/\/ We do our own animation with cubic-out easing for a buttery feel.\n  var animFrame=null;\n  function smoothScrollTo(target,duration){\n    duration=duration||650;\n    if(animFrame)cancelAnimationFrame(animFrame);\n    var startY=window.scrollY;\n    var endY=target.getBoundingClientRect().top+startY;\n    \/\/ clamp endY to valid scroll range\n    var maxY=document.documentElement.scrollHeight-window.innerHeight;\n    if(endY>maxY)endY=maxY;\n    if(endY<0)endY=0;\n    var dist=endY-startY;\n    if(Math.abs(dist)<2){return}\n    var startT=performance.now();\n    function step(now){\n      var t=Math.min(1,(now-startT)\/duration);\n      \/\/ cubic ease-out: smooth deceleration, no bounce\n      var eased=1-Math.pow(1-t,3);\n      window.scrollTo(0,startY+dist*eased);\n      if(t<1){animFrame=requestAnimationFrame(step)}\n      else{animFrame=null}\n    }\n    animFrame=requestAnimationFrame(step);\n  }\n\n  \/\/ \u2500\u2500\u2500 SECTION-BY-SECTION SMOOTH SNAP (desktop only) \u2500\u2500\u2500\n  var sections=[];\n  function refreshSections(){\n    sections=Array.prototype.slice.call(\n      root.querySelectorAll('.splash, .pillar, .final-cta')\n    );\n  }\n  refreshSections();\n  window.addEventListener('resize',function(){\n    refreshSections();\n    \/\/ re-clamp current position after resize\n    if(animFrame){cancelAnimationFrame(animFrame);animFrame=null}\n  });\n\n  function currentIndex(){\n    var midY=window.scrollY+window.innerHeight*0.4;\n    for(var i=0;i<sections.length;i++){\n      var rect=sections[i].getBoundingClientRect();\n      var topAbs=rect.top+window.scrollY;\n      var botAbs=topAbs+rect.height;\n      if(topAbs<=midY&&botAbs>midY)return i;\n    }\n    return Math.max(0,sections.length-1);\n  }\n\n  var snapMQ={matches:false};  \/\/ SNAP D\u00c9SACTIV\u00c9 \u2014 scroll classique\n  var lockUntil=0;\n  var COOLDOWN=720;            \/\/ ms \u2014 snap animation + small breath\n  var INERTIA_GAP=110;         \/\/ ms without wheel = \"new gesture\" \u2192 trigger snap\n  var lastWheelTime=0;\n\n  function snapTo(index){\n    if(index<0||index>=sections.length)return;\n    lockUntil=Date.now()+COOLDOWN;\n    smoothScrollTo(sections[index],COOLDOWN);\n  }\n\n  \/\/ The trick for a trackpad-friendly snap:\n  \/\/   1. The FIRST wheel event of a new gesture triggers the snap immediately\n  \/\/      (no accumulator \u2192 super responsive, just one gentle swipe is enough).\n  \/\/   2. All subsequent events during the same gesture (trackpad inertia keeps\n  \/\/      firing for ~500ms after the user stops touching) are blocked but DON'T\n  \/\/      retrigger snap \u2014 that's what was making it feel \"stuck\" before.\n  \/\/   3. After the cooldown AND once events have stopped for INERTIA_GAP ms,\n  \/\/      we're back ready for a new gesture.\n  function onWheel(e){\n    if(!snapMQ.matches)return;          \/\/ mobile\/tablet: native scroll\n    if(e.ctrlKey)return;                \/\/ browser zoom \u2014 leave alone\n    if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return; \/\/ horizontal wheel\n    if(Math.abs(e.deltaY)<2)return;     \/\/ dust event\n\n    var now=Date.now();\n    var sinceLast=now-lastWheelTime;\n    lastWheelTime=now;\n\n    \/\/ During the snap animation: block the wheel entirely\n    if(now<lockUntil){\n      e.preventDefault();\n      return;\n    }\n\n    \/\/ Continuation of the previous gesture (trackpad inertia \/ unfinished swipe)\n    \/\/ \u2192 block native scroll but don't fire another snap\n    if(sinceLast<INERTIA_GAP){\n      e.preventDefault();\n      return;\n    }\n\n    \/\/ \u2500\u2500\u2500 NEW GESTURE: snap right away \u2500\u2500\u2500\n    var dir=e.deltaY>0?1:-1;\n    var next=currentIndex()+dir;\n    \/\/ edge: scrolling beyond first\/last section \u2192 release control to the\n    \/\/ browser so the user can interact with anything above\/below the widget\n    if(next<0||next>=sections.length)return;\n    e.preventDefault();\n    snapTo(next);\n  }\n  window.addEventListener('wheel',onWheel,{passive:false});\n\n  \/\/ \u2500\u2500\u2500 KEYBOARD NAVIGATION (desktop only) \u2500\u2500\u2500\n  function onKey(e){\n    if(!snapMQ.matches)return;\n    if(Date.now()<lockUntil){e.preventDefault();return}\n    var idx=currentIndex();\n    if(e.key==='ArrowDown'||e.key==='PageDown'||e.code==='Space'){\n      if(idx<sections.length-1){e.preventDefault();snapTo(idx+1)}\n    }else if(e.key==='ArrowUp'||e.key==='PageUp'){\n      if(idx>0){e.preventDefault();snapTo(idx-1)}\n    }else if(e.key==='Home'){\n      e.preventDefault();snapTo(0);\n    }else if(e.key==='End'){\n      e.preventDefault();snapTo(sections.length-1);\n    }\n  }\n  window.addEventListener('keydown',onKey);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Pixilib \u00b7 GaelO Ecosystem Medical Imaging Infrastructure for Clinical Research A unified platform for centralized imaging, DICOM orchestration, AI-powered analysis and clinical trial expertise. Explore the Ecosystem Talk to Our Team Scroll Clinical Trial Imaging Platform GaelO The all-in-one solution for centralized imaging review, Blind Independent Central Review workflows, automated de-identification and audit-ready data capture. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-737","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/comments?post=737"}],"version-history":[{"count":13,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/737\/revisions"}],"predecessor-version":[{"id":854,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/737\/revisions\/854"}],"wp:attachment":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/media?parent=737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}