{"id":268,"date":"2026-05-31T22:07:28","date_gmt":"2026-05-31T20:07:28","guid":{"rendered":"https:\/\/gaelo-h5s7cqtzmf.live-website.com\/?page_id=268"},"modified":"2026-06-19T15:24:51","modified_gmt":"2026-06-19T13:24:51","slug":"fdg","status":"publish","type":"page","link":"https:\/\/gaelo.fr\/en\/algorithms\/pet-segmentation\/fdg\/","title":{"rendered":"FDG"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"268\" class=\"elementor elementor-268\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-12c60da e-con-full e-flex e-con e-parent\" data-id=\"12c60da\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-657c4a0 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"657c4a0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n================================================================\nGaelO Flow \u2014 PAGE PRODUIT \u2014 EN \u2014 Medical Imaging Data Orchestration\nURL : \/en\/software\/dicom-data-orchestration\/\nFor Elementor Pro HTML widget \u2014 Full Width container\nBrand : Pixilib \/ GaelO Flow\n================================================================\n\nSEO :\n  Title (60c) : GaelO Flow \u2014 Medical Imaging Data Orchestration\n  Meta Desc (155c) : Automate DICOM workflows, integrate AI pipelines and\n    unlock high-level data analytics in clinical research with GaelO Flow,\n    a research-grade PACS for Real World Evidence studies.\n\nStyle : \"Elementor Pro premium\" \u2014 same architecture as GaelO page.\n  Accent color shifted from teal to INDIGO (#353275) for brand consistency\n  with the GaelO Flow product within the Pixilib ecosystem.\n  Hero stays dark on desktop, light glacier-blue on mobile (\u2264900px).\n\nStructure (1 H1 \/ 8 H2 \/ N H3) :\n  H1  : Advanced Medical Imaging Data Orchestration: GaelO Flow   [hero]\n  H2  : Beyond Storage: A New Era for Real World Evidence\u2026        [intro sticky + checklist]\n  H2  : Why GaelO Flow is built for research data orchestration   [counters + tabs]\n        [TABS] 4\u00d7 H3 : Orchestrate \/ Store \/ Deidentification \/ Interoperability\n  H2  : Empowering Data Analytics in Clinical Research            [6 icon boxes]\n  H2  : GaelO Flow Features                                       [12 icon boxes]\n  H2  : Deploy your way \u2014 On-premise or Cloud                     [2 deployment cards]\n  H2  : Supported imaging modalities                              [5 image boxes \/ photos]\n  H2  : The GaelO Ecosystem                                       [3 product image-boxes]\n  H2  : Ready to orchestrate\u2026                                     [final CTA]\n\nMaillage interne :\n  - \"GaelO platform\" (H3 Orchestrate)             \u2192 \/en\/software\/clinical-trial-imaging-platform\/\n  - \"data analytics in clinical research\" (sub)   \u2192 \/en\/algorithms\/medical-imaging-segmentation\/\n  - GaelO (eco card)                              \u2192 \/en\/software\/clinical-trial-imaging-platform\/\n  - AI Segmentation (eco + callout)               \u2192 \/en\/algorithms\/medical-imaging-segmentation\/\n  - DICOM Viewer (Integrated Viewer feature)      \u2192 \/en\/software\/dicom-viewer\/\n\nLiens externes (Wikipedia \/ NEMA) :\n  target=\"_blank\" rel=\"noopener nofollow\"  \u2014 pas de transmission de jus SEO\n\nNotes :\n  - Le H1 est inclus \u2192 d\u00e9sactiver tout H1 d'Elementor\n  - CTA \"Talk to Our Team\" et \"Request a Demo\" \u2192 #contact (\u00e0 remplacer)\n  - JS minimal natif (no jQuery) : tabs, counters, reveal, scroll progress, lightbox\n  - Mobile First, ARIA, prefers-reduced-motion respect\u00e9\n================================================================\n-->\n\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 PRODUCT PAGE \u2014 Scoped Styles\n   All rules namespaced under .gaelo-product to avoid leaks.\n   ============================================================ *\/\n.gaelo-product{\n  \/* GaelO Flow palette : indigo is the dominant accent (was teal on GaelO).\n     We override --teal* to point to indigo values so every component\n     (buttons, eyebrows, hovers, eco cards, etc.) inherits the right brand\n     color without rewriting all selectors. Teal stays available via\n     --teal-real* for the few spots where the GaelO teal is still useful\n     (e.g. the hero title gradient that pairs nicely with indigo). *\/\n  --teal:#353275;\n  --teal-bright:#7773C8;\n  --teal-dark:#2a2860;\n  --teal-soft:rgba(53,50,117,.10);\n  \/* the original GaelO teal, kept for ponctual use *\/\n  --teal-real:#0495A0;\n  --teal-real-bright:#5DD0DA;\n  --teal-real-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-soft:#F1F4F7;\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  --border-strong:rgba(49,64,83,.18);\n  --shadow-sm:0 2px 12px rgba(49,64,83,.06);\n  --shadow-md:0 8px 40px rgba(49,64,83,.12);\n  --shadow-lg:0 24px 80px rgba(49,64,83,.18);\n  --radius-sm:10px;\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.65;\n  font-size:17px;\n  -webkit-font-smoothing:antialiased;\n  -moz-osx-font-smoothing:grayscale;\n  \/* contain the full-bleed breakouts (hero \/ final CTA) so they never\n     create a horizontal overflow inside Elementor's HTML widget.\n     overflow-x:clip (not hidden) keeps position:sticky working. *\/\n  overflow-x:clip;\n  max-width:100%;\n}\n.gaelo-product *,\n.gaelo-product *::before,\n.gaelo-product *::after{box-sizing:border-box}\n.gaelo-product .container{\n  max-width:var(--max-width);\n  margin:0 auto;\n  padding:0 clamp(20px,4vw,40px);\n  position:relative;\n}\n\n\/* ============================================================\n   SCROLL PROGRESS BAR\n   ============================================================ *\/\n.gaelo-product .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   HERO \u2014 full-width edge-to-edge dark gradient\n   ============================================================ *\/\n.gaelo-product .hero{\n  position:relative;\n  width:100%;\n  margin-left:0;\n  margin-right:0;\n  min-height:90vh;\n  display:flex;flex-direction:column;\n  align-items:center;justify-content:center;\n  text-align:center;\n  overflow:hidden;\n  padding:clamp(100px,12vw,160px) clamp(20px,5vw,80px) clamp(80px,10vw,120px);\n  background:linear-gradient(160deg,#1A3A52 0%,#205B6E 45%,#1E4C5E 75%,#1A4458 100%);\n}\n.gaelo-product .hero-canvas{position:absolute;inset:0;overflow:hidden;pointer-events:none}\n.gaelo-product .hero-orb{\n  position:absolute;border-radius:50%;\n  filter:blur(90px);opacity:.30;\n  animation:gp-drift 18s ease-in-out infinite alternate;\n}\n.gaelo-product .hero-orb.o1{width:620px;height:620px;background:radial-gradient(circle,var(--teal),transparent 70%);top:-180px;left:-160px}\n.gaelo-product .hero-orb.o2{width:520px;height:520px;background:radial-gradient(circle,var(--indigo),transparent 70%);bottom:-150px;right:-140px;animation-duration:22s;animation-delay:-5s}\n.gaelo-product .hero-orb.o3{width:280px;height:280px;background:radial-gradient(circle,var(--orange),transparent 70%);top:25%;right:18%;opacity:.16;animation-duration:14s;animation-delay:-9s}\n@keyframes gp-drift{from{transform:translate(0,0) scale(1)}to{transform:translate(50px,40px) scale(1.12)}}\n\n.gaelo-product .hero-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\n.gaelo-product .hero-content{\n  position:relative;z-index:2;\n  max-width:1080px;width:100%;\n  margin-left:auto;margin-right:auto;\n  box-sizing:border-box;\n  display:flex;flex-direction:column;align-items:center;\n}\n\n.gaelo-product .hero-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:32px;\n  animation:gp-fadeUp .9s var(--ease) .2s both;\n}\n.gaelo-product .hero-badge-dot{\n  width:6px;height:6px;border-radius:50%;background:var(--teal);\n  box-shadow:0 0 12px var(--teal);border-radius:50%;background:#fff;\n  box-shadow:0 0 12px rgba(255,255,255,.6);\n  animation:gp-pulse 2s ease infinite;\n}\n@keyframes gp-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.6);opacity:.5}}\n\n.gaelo-product .hero-title{\n  font-size:clamp(2.2rem,6vw,4.8rem);\n  font-weight:800;\n  line-height:1.1;\n  letter-spacing:-.035em;\n  color:var(--white);\n  margin:0 0 24px;\n  max-width:1000px;\n  margin-left:auto;margin-right:auto;\n}\n.gaelo-product .hero-title .word{\n  display:inline-block;\n  opacity:0;transform:translateY(40px);\n  animation:gp-titleUp .9s var(--ease) forwards;\n}\n.gaelo-product .hero-title .word.w1{animation-delay:.35s}\n.gaelo-product .hero-title .word.w2{animation-delay:.45s}\n.gaelo-product .hero-title .word.w3{animation-delay:.55s}\n.gaelo-product .hero-title .word.w4{animation-delay:.65s}\n.gaelo-product .hero-title .word.w5{animation-delay:.75s}\n.gaelo-product .hero-title .word.w6{animation-delay:.85s}\n.gaelo-product .hero-title .word.w7{animation-delay:.95s}\n@keyframes gp-titleUp{to{opacity:1;transform:translateY(0)}}\n.gaelo-product .hero-title .accent{\n  background:linear-gradient(90deg,#5DD0DA,#78E08F);\n  -webkit-background-clip:text;-webkit-text-fill-color:transparent;\n  background-clip:text;color:transparent;\n}\n.gaelo-product .hero-title .accent-o{color:var(--orange)}\n\n.gaelo-product .hero-sub{\n  font-size:clamp(1.05rem,1.5vw,1.25rem);\n  font-weight:300;color:rgba(255,255,255,.7);\n  max-width:680px;margin:0 auto 48px;\n  animation:gp-fadeUp .9s var(--ease) 1.1s both;\n}\n.gaelo-product .hero-sub a{\n  color:#fff;\n  text-decoration:underline;\n  text-decoration-color:rgba(255,255,255,.4);\n  text-underline-offset:3px;\n  text-decoration-thickness:1px;\n  transition:text-decoration-color .2s var(--ease);\n}\n.gaelo-product .hero-sub a:hover{text-decoration-color:#fff}\n\n.gaelo-product .hero-actions{\n  display:flex;align-items:center;justify-content:center;\n  gap:14px;flex-wrap:wrap;margin-bottom:64px;\n  animation:gp-fadeUp .9s var(--ease) 1.3s both;\n}\n\n\/* hero mockup *\/\n.gaelo-product .hero-mockup{\n  position:relative;\n  max-width:920px;\n  width:100%;\n  margin:0 auto;\n  align-self:center;\n  border-radius:16px;\n  overflow:hidden;\n  box-shadow:0 40px 100px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.08);\n  animation:gp-mockup 1.2s var(--ease) 1.5s both;\n}\n@keyframes gp-mockup{from{opacity:0;transform:translateY(60px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}\n\/* Placeholder : empty mockup body when the actual image isn't ready yet *\/\n.gaelo-product .hero-mockup-placeholder-body{\n  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;\n  aspect-ratio:16\/9;\n  background:\n    repeating-linear-gradient(135deg,rgba(255,255,255,.04) 0,rgba(255,255,255,.04) 14px,transparent 14px,transparent 28px),\n    linear-gradient(160deg,#243846 0%,#1a2a36 100%);\n  color:rgba(255,255,255,.6);\n  font-family:var(--font-mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;\n}\n.gaelo-product .hero-mockup-placeholder-body svg{width:42px;height:42px;opacity:.5}\n\/* Large screens : scale up the dashboard mockup so it doesn't look tiny on big monitors *\/\n@media (min-width:1900px){\n  .gaelo-product .hero-content{max-width:1400px}\n  .gaelo-product .hero-mockup{max-width:1280px}\n  .gaelo-product .hero-title{max-width:1200px;font-size:clamp(2.2rem,3.5vw,5.4rem)}\n  .gaelo-product .hero-sub{max-width:820px;font-size:1.35rem}\n}\n@media (min-width:2600px){\n  .gaelo-product .hero-content{max-width:1700px}\n  .gaelo-product .hero-mockup{max-width:1500px}\n  .gaelo-product .hero-title{max-width:1500px}\n}\n.gaelo-product .hero-mockup-bar{\n  display:flex;align-items:center;gap:8px;\n  padding:14px 18px;\n  background:#1a2332;\n  border-bottom:1px solid rgba(255,255,255,.06);\n}\n.gaelo-product .hero-mockup-bar span{\n  width:11px;height:11px;border-radius:50%;\n  background:rgba(255,255,255,.16);\n}\n.gaelo-product .hero-mockup-bar span:nth-child(1){background:#ff5f57}\n.gaelo-product .hero-mockup-bar span:nth-child(2){background:#febc2e}\n.gaelo-product .hero-mockup-bar span:nth-child(3){background:#28c840}\n.gaelo-product .hero-mockup-url{\n  margin-left:18px;\n  padding:5px 14px;\n  background:rgba(255,255,255,.05);\n  border-radius:6px;\n  font-family:var(--font-mono);font-size:.72rem;\n  color:rgba(255,255,255,.45);\n  flex:1;text-align:center;max-width:340px;\n}\n\/* Mobile : hide the URL text in the mockup bar to keep things clean on small screens *\/\n@media (max-width:680px){\n  .gaelo-product .hero-mockup-url{display:none}\n}\n.gaelo-product .hero-mockup img{\n  display:block;width:100%;height:auto;\n}\n\n.gaelo-product .hero-scroll{\n  \/* In normal flow inside .hero-content : guarantees same horizontal center axis\n     as every other hero element (badge, h1, mockup) without scrollbar bugs *\/\n  margin:clamp(36px,5vw,64px) auto 0;\n  display:flex;flex-direction:column;align-items:center;gap:10px;\n  color:rgba(255,255,255,.4);font-family:var(--font-mono);\n  font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;\n  z-index:2;\n  animation:gp-fadeUp 1s var(--ease) 1.8s both;\n}\n.gaelo-product .hero-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-product .hero-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-real-bright);\n  animation:gp-scrollDown 2s ease infinite;\n}\n@keyframes gp-scrollDown{0%{top:6px;opacity:1}80%{top:18px;opacity:0}100%{top:6px;opacity:0}}\n\n\/* ============================================================\n   BUTTONS\n   ============================================================ *\/\n.gaelo-product .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  line-height:1;\n}\n.gaelo-product .btn:hover{text-decoration:none}\n.gaelo-product .btn svg{width:16px;height:16px;transition:transform .3s var(--ease);flex-shrink:0}\n.gaelo-product .btn:hover svg{transform:translateX(5px)}\n.gaelo-product .btn-primary-light{background:var(--white);color:var(--bg-dark)}\n.gaelo-product .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-product .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-product .btn-ghost-light:hover{\n  background:rgba(255,255,255,.15);transform:translateY(-2px);color:var(--white);\n}\n.gaelo-product .btn-primary{background:var(--teal);color:var(--white)}\n.gaelo-product .btn-primary:hover{\n  background:var(--teal-dark);transform:translateY(-2px);\n  box-shadow:0 12px 30px rgba(4,149,160,.4);color:var(--white);\n}\n.gaelo-product .btn-secondary{\n  background:transparent;color:var(--text);\n  border:1.5px solid var(--border-strong);\n}\n.gaelo-product .btn-secondary:hover{\n  background:var(--text);color:var(--white);transform:translateY(-2px);border-color:var(--text);\n}\n\n\n\/* ============================================================\n   ELEMENTOR-PRO STYLE BODY \u2014 sections, icon boxes, counters,\n   image boxes, feature lists, shape dividers, CTA boxes.\n   Built on top of the existing hero + design tokens.\n   ============================================================ *\/\n\n\/* ---- Section scaffolding (Elementor \"section\" feel) ---- *\/\n.gaelo-product .ep-section{\n  position:relative;\n  padding:clamp(64px,8vw,110px) 0;\n}\n.gaelo-product .ep-section.bg-white{background:var(--white)}\n.gaelo-product .ep-section.bg-soft{background:var(--bg-soft)}\n.gaelo-product .ep-section.bg-tint{\n  background:linear-gradient(180deg,var(--bg-soft),var(--white));\n}\n.gaelo-product .ep-section.bg-dark{\n  background:linear-gradient(160deg,#0d1b2a 0%,#13283a 60%,#102433 100%);\n  color:var(--white);\n}\n.gaelo-product .ep-section.has-divider-top{padding-top:clamp(90px,10vw,140px)}\n.gaelo-product .ep-section.has-divider-bottom{padding-bottom:clamp(90px,10vw,140px)}\n\n\/* ---- Eyebrow \/ heading kit (Elementor heading widget look) ---- *\/\n.gaelo-product .ep-head{\n  max-width:760px;\n  margin-bottom:clamp(40px,5vw,60px);\n}\n.gaelo-product .ep-head.center{\n  margin-left:auto;margin-right:auto;text-align:center;\n}\n.gaelo-product .ep-eyebrow{\n  display:inline-flex;align-items:center;gap:10px;\n  font-family:var(--font-mono);\n  font-size:.74rem;font-weight:600;\n  letter-spacing:.16em;text-transform:uppercase;\n  color:var(--teal);\n  margin-bottom:16px;\n}\n.gaelo-product .ep-section.bg-dark .ep-eyebrow{color:var(--teal-bright)}\n.gaelo-product .ep-eyebrow::before{\n  content:'';width:28px;height:2px;border-radius:2px;background:currentColor;\n}\n.gaelo-product .ep-head.center .ep-eyebrow{justify-content:center}\n.gaelo-product .ep-head h2{\n  font-size:clamp(1.9rem,3.6vw,2.85rem);\n  font-weight:800;line-height:1.12;letter-spacing:-.025em;\n  margin:0 0 18px;\n}\n.gaelo-product .ep-section.bg-dark .ep-head h2{color:var(--white)}\n.gaelo-product .ep-head p{\n  font-size:1.06rem;line-height:1.65;color:var(--muted);margin:0;\n}\n.gaelo-product .ep-section.bg-dark .ep-head p{color:rgba(255,255,255,.7)}\n.gaelo-product .ep-head .accent{color:var(--teal)}\n\n\/* Inline text links (NEMA, DICOM viewer, ICH, Imaging CRO\u2026) \u2014 discreet *\/\n.gaelo-product .intro-text a,\n.gaelo-product .tabs-panel-text a,\n.gaelo-product .iconbox p a,\n.gaelo-product .persona p a{\n  color:var(--teal-dark);\n  text-decoration:underline;\n  text-decoration-color:rgba(3,122,131,.35);\n  text-underline-offset:2px;\n  text-decoration-thickness:1px;\n  transition:color .2s var(--ease),text-decoration-color .2s var(--ease);\n}\n.gaelo-product .intro-text a:hover,\n.gaelo-product .tabs-panel-text a:hover,\n.gaelo-product .iconbox p a:hover,\n.gaelo-product .persona p a:hover{\n  color:var(--teal);\n  text-decoration-color:var(--teal);\n}\n\n\/* ============================================================\n   INTRO \/ MANIFESTO \u2014 two-column with sticky media card\n   ============================================================ *\/\n.gaelo-product .intro-grid{\n  display:grid;\n  grid-template-columns:0.95fr 1.05fr;\n  gap:clamp(32px,5vw,72px);\n  align-items:start;\n}\n.gaelo-product .intro-sticky{position:sticky;top:90px}\n.gaelo-product .intro-card{\n  background:var(--white);\n  border:1px solid var(--border);\n  border-radius:var(--radius-lg);\n  padding:clamp(28px,3.5vw,44px);\n  box-shadow:var(--shadow-md);\n}\n.gaelo-product .intro-card .ep-eyebrow{margin-bottom:18px}\n.gaelo-product .intro-card h2{\n  font-size:clamp(1.7rem,3vw,2.4rem);\n  font-weight:800;line-height:1.15;letter-spacing:-.025em;\n  margin:0 0 22px;color:var(--text);\n}\n.gaelo-product .intro-quote{\n  margin:0;padding:22px 26px;\n  background:var(--teal-soft);\n  border-left:3px solid var(--teal);\n  border-radius:0 var(--radius-sm) var(--radius-sm) 0;\n  font-size:1rem;font-style:italic;color:var(--slate);line-height:1.6;\n}\n.gaelo-product .intro-text > p{\n  font-size:1.04rem;line-height:1.72;margin:0 0 18px;color:var(--slate);\n}\n.gaelo-product .intro-text > p:first-child{\n  font-size:1.16rem;color:var(--text);font-weight:500;\n}\n\/* feature list with checkmarks (Elementor icon-list) *\/\n.gaelo-product .ep-list{\n  list-style:none;padding:0;margin:28px 0 0;\n  display:grid;gap:14px;\n}\n.gaelo-product .ep-list li{\n  display:block;\n  padding:16px 18px 16px 20px;\n  background:var(--bg-soft);\n  border-radius:12px;\n  border-left:3px solid var(--teal);\n  font-size:.96rem;color:var(--text);line-height:1.55;\n  transition:background .25s var(--ease),box-shadow .25s var(--ease),transform .25s var(--ease),border-color .25s var(--ease);\n}\n.gaelo-product .ep-list li:hover{\n  background:var(--white);\n  box-shadow:0 4px 18px rgba(49,64,83,.08);\n  border-left-color:var(--teal-bright);\n  transform:translateX(2px);\n}\n\/* Terme en gras sur sa propre ligne, description dessous : alignement propre et homog\u00e8ne *\/\n.gaelo-product .ep-list li > strong:first-of-type{\n  display:block;\n  color:var(--slate);\n  font-weight:700;font-size:1.01rem;\n  margin-bottom:3px;letter-spacing:-.01em;\n}\n\/* L'ancienne pastille check n'est plus utilis\u00e9e dans ce design *\/\n.gaelo-product .ep-list-check{display:none}\n@media (max-width:860px){\n  .gaelo-product .intro-grid{grid-template-columns:1fr;gap:36px}\n  .gaelo-product .intro-sticky{position:static}\n}\n\n\/* ============================================================\n   COLLAPSIBLE \u2014 \"Read more\" toggle (mobile\/tablet only \u2264900px)\n   ============================================================ *\/\n\/* Collapse toggle button \u2014 visible on ALL screens BUT\n   intro toggles (no data-collapse-target) are hidden on desktop. *\/\n.gaelo-product .collapse-toggle{\n  display:inline-flex;align-items:center;gap:8px;\n  margin:14px auto 0;\n  padding:10px 20px;border-radius:50px;\n  background:transparent;border:1px solid var(--border-strong);\n  font-family:inherit;font-size:.9rem;font-weight:600;\n  color:var(--teal-dark);cursor:pointer;\n  transition:all .2s var(--ease);\n  -webkit-tap-highlight-color:transparent;\n}\n\/* hide intro toggles (not grid toggles) on desktop *\/\n.gaelo-product .collapse-toggle:not([data-collapse-target=\"grid\"]){display:none}\n@media (max-width:900px){\n  .gaelo-product .collapse-toggle:not([data-collapse-target=\"grid\"]){display:inline-flex}\n}\n.gaelo-product .collapse-toggle:hover,\n.gaelo-product .collapse-toggle:focus-visible{\n  background:var(--teal-soft);border-color:var(--teal);color:var(--teal-dark);\n  outline:none;\n}\n.gaelo-product .collapse-toggle svg{\n  width:14px;height:14px;\n  transition:transform .25s var(--ease);\n}\n.gaelo-product .collapse-toggle[aria-expanded=\"true\"] svg{transform:rotate(180deg)}\n.gaelo-product .collapsible{\n  max-height:9999px;opacity:1;\n  transition:max-height .45s var(--ease),opacity .3s var(--ease);\n}\n.gaelo-product .iconbox.is-extra{display:none}\n.gaelo-product .iconbox-grid[data-extended=\"true\"] .iconbox.is-extra,\n.gaelo-product .iconbox-grid[data-extended=\"true\"] .iconbox.is-extra-mobile{\n  display:flex;\n  animation:gp-fadeUp .4s var(--ease) both;\n}\n.gaelo-product .collapse-wrap{\n  display:flex;flex-direction:column;align-items:center;\n  margin-top:14px;\n}\n@media (max-width:900px){\n  .gaelo-product .iconbox.is-extra-mobile{display:none}\n  .gaelo-product .collapsible[data-collapsed=\"true\"]{\n    max-height:0;overflow:hidden;opacity:0;\n    margin-top:0;margin-bottom:0;\n    transition:max-height .35s var(--ease),opacity .25s var(--ease);\n  }\n}\n\n\/* ============================================================\n   COUNTERS strip (Elementor counter widgets)\n   ============================================================ *\/\n.gaelo-product .counters{\n  display:grid;\n  grid-template-columns:repeat(4,1fr);\n  gap:1px;\n  background:var(--border);\n  border:1px solid var(--border);\n  border-radius:var(--radius-lg);\n  overflow:hidden;\n}\n.gaelo-product .counter{\n  background:var(--white);\n  padding:clamp(26px,3vw,40px) clamp(20px,2.5vw,32px);\n  text-align:center;\n}\n.gaelo-product .ep-section.bg-dark .counters{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.14)}\n.gaelo-product .ep-section.bg-dark .counter{background:transparent}\n.gaelo-product .counter-num{\n  font-size:clamp(2.1rem,4vw,3rem);\n  font-weight:800;line-height:1;letter-spacing:-.03em;\n  color:var(--teal);\n  font-variant-numeric:tabular-nums;\n}\n.gaelo-product .ep-section.bg-dark .counter-num{color:var(--teal-bright)}\n.gaelo-product .counter-num .suffix{color:var(--orange)}\n.gaelo-product .counter-label{\n  margin-top:10px;\n  font-family:var(--font-mono);\n  font-size:.72rem;font-weight:500;\n  letter-spacing:.08em;text-transform:uppercase;\n  color:var(--muted);\n}\n.gaelo-product .ep-section.bg-dark .counter-label{color:rgba(255,255,255,.6)}\n@media (max-width:680px){\n  .gaelo-product .counters{grid-template-columns:repeat(2,1fr)}\n}\n\n\/* ============================================================\n   TABS (kept, restyled a touch toward Elementor tabs widget)\n   ============================================================ *\/\n.gaelo-product .tabs{margin-top:8px}\n.gaelo-product .tabs-nav{\n  display:flex;gap:6px;margin-bottom:28px;padding:6px;\n  background:var(--white);border-radius:50px;border:1px solid var(--border);\n  box-shadow:var(--shadow-sm);flex-wrap:wrap;\n  max-width:fit-content;margin-left:auto;margin-right:auto;\n}\n.gaelo-product .tabs-btn{\n  border:none;background:transparent;padding:12px 24px;border-radius:50px;\n  font-family:inherit;font-size:.92rem;font-weight:600;color:var(--muted);\n  cursor:pointer;transition:all .3s var(--ease);\n  display:inline-flex;align-items:center;gap:10px;white-space:nowrap;\n}\n.gaelo-product .tabs-btn:hover{color:var(--text)}\n.gaelo-product .tabs-btn[aria-selected=\"true\"]{\n  background:var(--teal);color:var(--white);box-shadow:0 4px 14px rgba(4,149,160,.3);\n}\n.gaelo-product .tabs-btn-num{font-family:var(--font-mono);font-size:.7rem;opacity:.7}\n.gaelo-product .tabs-panel{display:none;animation:gp-tabFade .5s var(--ease)}\n.gaelo-product .tabs-panel.is-active{display:block}\n@keyframes gp-tabFade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}\n.gaelo-product .tabs-panel-inner{\n  display:flex;flex-direction:column;gap:clamp(20px,3vw,36px);\n  background:var(--white);border-radius:var(--radius-lg);\n  padding:clamp(26px,3.5vw,48px);box-shadow:var(--shadow-sm);border:1px solid var(--border);\n}\n.gaelo-product .tabs-panel-text{max-width:900px;margin:0 auto;width:100%;text-align:left}\n.gaelo-product .tabs-panel h3{font-size:clamp(1.35rem,2.4vw,1.8rem);margin-bottom:16px}\n.gaelo-product .tabs-panel-text p{font-size:.98rem;line-height:1.7}\n.gaelo-product .tabs-panel-text p + p{margin-top:14px}\n.gaelo-product .tabs-panel-visual{\n  position:relative;border-radius:var(--radius-md);overflow:hidden;\n  background:#0d1b2a;border:1px solid var(--border);\n  width:100%;\n}\n.gaelo-product .tabs-panel-visual img{\n  width:100%;height:auto;display:block;\n}\n@media (max-width:860px){\n  .gaelo-product .tabs-panel-inner{padding:24px}\n  .gaelo-product .tabs-nav{max-width:none;justify-content:flex-start;overflow-x:auto}\n  .gaelo-product .tabs-btn{flex-shrink:0}\n}\n\n\/* ============================================================\n   CRITERIA BLOCK + TABLE\n   ============================================================ *\/\n.gaelo-product .criteria-block{\n  margin-top:48px;padding:clamp(28px,4vw,48px);\n  background:var(--white);border-radius:var(--radius-lg);\n  border:1px solid var(--border);box-shadow:var(--shadow-sm);\n  scroll-margin-top:80px;\n}\n.gaelo-product .criteria-block-head{max-width:680px;margin-bottom:28px}\n.gaelo-product .criteria-block-title{\n  font-size:clamp(1.3rem,2.4vw,1.65rem);font-weight:700;letter-spacing:-.02em;\n  margin:8px 0 12px;color:var(--text);\n}\n.gaelo-product .criteria-block-sub{font-size:1rem;line-height:1.65;color:var(--muted);margin:0}\n.gaelo-product .criteria-table{\n  background:var(--white);border-radius:var(--radius-md);overflow:hidden;\n  border:1px solid var(--border);\n}\n.gaelo-product .criteria-table table{width:100%;border-collapse:collapse;font-size:.95rem}\n.gaelo-product .criteria-table thead th{\n  text-align:left;padding:16px 22px;\n  background:linear-gradient(135deg,var(--teal),var(--teal-dark));color:var(--white);\n  font-family:var(--font-mono);font-weight:600;font-size:.76rem;\n  letter-spacing:.1em;text-transform:uppercase;\n}\n.gaelo-product .criteria-table tbody td{padding:18px 22px;border-top:1px solid var(--border);vertical-align:top}\n.gaelo-product .criteria-table tbody tr:hover{background:rgba(4,149,160,.03)}\n.gaelo-product .criteria-table .topic{font-weight:700;color:var(--text);white-space:nowrap}\n.gaelo-product .criteria-list{display:flex;flex-wrap:wrap;gap:8px}\n.gaelo-product .criteria-link{\n  display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:50px;\n  background:var(--teal-soft);color:var(--teal-dark);font-size:.85rem;font-weight:600;\n  text-decoration:none;transition:all .25s var(--ease);border:1px solid transparent;\n}\n.gaelo-product .criteria-link:hover{\n  background:var(--teal);color:var(--white);text-decoration:none;\n  transform:translateY(-1px);box-shadow:0 6px 14px rgba(4,149,160,.3);\n}\n.gaelo-product .criteria-link svg{width:11px;height:11px;opacity:.7}\n@media (max-width:700px){\n  .gaelo-product .criteria-block{padding:22px 16px}\n  .gaelo-product .criteria-table{font-size:.88rem}\n  .gaelo-product .criteria-table thead th,\n  .gaelo-product .criteria-table tbody td{padding:13px 14px}\n  .gaelo-product .criteria-table .topic{white-space:normal}\n}\n\n\/* ============================================================\n   ICON BOXES grid (Elementor icon-box widget) \u2014 Core Features\n   ============================================================ *\/\n.gaelo-product .iconbox-grid{\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:24px;\n}\n.gaelo-product .iconbox{\n  background:var(--white);\n  border:1px solid var(--border);\n  border-radius:var(--radius-md);\n  padding:32px 28px;\n  transition:all .3s var(--ease);\n  position:relative;\n  display:flex;flex-direction:column;\n}\n.gaelo-product .iconbox:hover{\n  border-color:var(--teal);\n  box-shadow:var(--shadow-md);\n  transform:translateY(-4px);\n}\n.gaelo-product .iconbox-icon{\n  width:56px;height:56px;border-radius:14px;\n  background:var(--teal-soft);color:var(--teal);\n  display:flex;align-items:center;justify-content:center;\n  margin-bottom:20px;transition:all .3s var(--ease);\n}\n.gaelo-product .iconbox:hover .iconbox-icon{\n  background:var(--teal);color:var(--white);\n  transform:scale(1.05);\n}\n.gaelo-product .iconbox-icon svg{width:26px;height:26px}\n.gaelo-product .iconbox h3{\n  font-size:1.12rem;font-weight:700;letter-spacing:-.01em;\n  margin:0 0 12px;color:var(--text);\n}\n.gaelo-product .iconbox p{\n  font-size:.94rem;line-height:1.62;color:var(--muted);margin:0;\n}\n.gaelo-product .iconbox .ep-list{margin-top:16px;gap:9px}\n.gaelo-product .iconbox .ep-list li{font-size:.9rem;color:var(--slate);gap:10px}\n.gaelo-product .iconbox .ep-list-check{width:20px;height:20px}\n.gaelo-product .iconbox .ep-list-check svg{width:10px;height:10px}\n.gaelo-product .iconbox-media{\n  margin:18px -28px -32px;border-top:1px solid var(--border);\n  border-radius:0 0 var(--radius-md) var(--radius-md);overflow:hidden;\n}\n.gaelo-product .iconbox-media img{display:block;width:100%;height:auto}\n@media (max-width:920px){\n  .gaelo-product .iconbox-grid{grid-template-columns:repeat(2,1fr)}\n}\n@media (max-width:600px){\n  .gaelo-product .iconbox-grid{grid-template-columns:1fr}\n}\n\n\/* Empowering Data Analytics : 5 cards \u2192 3 + 2 centered last row *\/\n.gaelo-product .iconbox-grid.analytics-grid{\n  grid-template-columns:repeat(6,1fr);\n}\n.gaelo-product .iconbox-grid.analytics-grid .iconbox{grid-column:span 2}\n.gaelo-product .iconbox-grid.analytics-grid .iconbox:nth-child(4){grid-column:2 \/ span 2}\n.gaelo-product .iconbox-grid.analytics-grid .iconbox:nth-child(5){grid-column:4 \/ span 2}\n@media (max-width:920px){\n  .gaelo-product .iconbox-grid.analytics-grid{grid-template-columns:repeat(2,1fr)}\n  .gaelo-product .iconbox-grid.analytics-grid .iconbox,\n  .gaelo-product .iconbox-grid.analytics-grid .iconbox:nth-child(4),\n  .gaelo-product .iconbox-grid.analytics-grid .iconbox:nth-child(5){grid-column:auto}\n}\n@media (max-width:600px){\n  .gaelo-product .iconbox-grid.analytics-grid{grid-template-columns:1fr}\n}\n\n\/* ============================================================\n   MODALITIES \u2014 image boxes (photo cards)\n   ============================================================ *\/\n.gaelo-product .modalities-grid{\n  display:grid;grid-template-columns:repeat(6,1fr);\n  gap:26px;\n  max-width:1080px;margin-left:auto;margin-right:auto;\n}\n\/* 3 per row : each card spans 2 of the 6 columns *\/\n.gaelo-product .modalities-grid .mod-card{grid-column:span 2}\n\/* last row has 2 cards (4 & 5) \u2192 center them: card 4 starts col 2, card 5 starts col 4 *\/\n.gaelo-product .modalities-grid .mod-card:nth-child(4){grid-column:2 \/ span 2}\n.gaelo-product .modalities-grid .mod-card:nth-child(5){grid-column:4 \/ span 2}\n@media (max-width:860px){\n  .gaelo-product .modalities-grid{grid-template-columns:repeat(2,1fr);max-width:none}\n  .gaelo-product .modalities-grid .mod-card,\n  .gaelo-product .modalities-grid .mod-card:nth-child(4),\n  .gaelo-product .modalities-grid .mod-card:nth-child(5){grid-column:auto}\n}\n@media (max-width:560px){\n  .gaelo-product .modalities-grid{grid-template-columns:1fr}\n}\n.gaelo-product .mod-card{\n  background:var(--white);border:1px solid var(--border);border-radius:var(--radius-md);\n  transition:all .35s var(--ease);position:relative;overflow:hidden;\n  display:flex;flex-direction:column;\n}\n.gaelo-product .mod-card::after{\n  content:'';position:absolute;top:0;left:0;width:100%;height:3px;\n  background:linear-gradient(90deg,var(--teal),var(--teal-bright));\n  transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease);z-index:3;\n}\n.gaelo-product .mod-card:hover{border-color:var(--teal);transform:translateY(-4px);box-shadow:var(--shadow-md)}\n.gaelo-product .mod-card:hover::after{transform:scaleX(1)}\n.gaelo-product .mod-card-media{position:relative;aspect-ratio:16\/10;overflow:hidden;background:#0d1b2a}\n.gaelo-product .mod-card-media img{\n  width:100%;height:100%;object-fit:cover;display:block;\n  transition:transform .6s var(--ease),filter .4s var(--ease);filter:saturate(.95);\n}\n.gaelo-product .mod-card:hover .mod-card-media img{transform:scale(1.06);filter:saturate(1.1)}\n.gaelo-product .mod-card-media::after{\n  content:'';position:absolute;inset:0;pointer-events:none;\n  background:linear-gradient(180deg,transparent 55%,rgba(13,27,42,.35));\n}\n.gaelo-product .mod-card-body{padding:22px 24px 24px;flex:1;display:flex;flex-direction:column}\n.gaelo-product .mod-card h3{font-size:1.1rem;margin:0 0 8px;letter-spacing:-.01em;color:var(--text)}\n.gaelo-product .mod-card p{font-size:.92rem;line-height:1.55;color:var(--muted);margin:0}\n\n\/* ============================================================\n   PERSONAS \u2014 icon boxes with accent border\n   ============================================================ *\/\n.gaelo-product .personas-grid{\n  display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:22px;\n}\n.gaelo-product .persona{\n  position:relative;padding:30px 28px;border-radius:var(--radius-md);\n  background:var(--white);border:1px solid var(--border);\n  transition:all .35s var(--ease);overflow:hidden;\n}\n.gaelo-product .persona::before{\n  content:'';position:absolute;top:0;left:0;right:0;height:4px;\n  background:var(--accent,var(--teal));\n}\n.gaelo-product .persona:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:var(--accent,var(--teal))}\n.gaelo-product .persona.pharma{--accent:var(--teal)}\n.gaelo-product .persona.medtech{--accent:var(--indigo)}\n.gaelo-product .persona.academic{--accent:var(--orange)}\n.gaelo-product .persona.cro{--accent:#3aa256}\n.gaelo-product .persona-icon{\n  width:50px;height:50px;border-radius:12px;background:var(--bg-soft);\n  border:1px solid var(--border);color:var(--accent,var(--teal));\n  display:flex;align-items:center;justify-content:center;margin-bottom:18px;\n}\n.gaelo-product .persona-icon svg{width:23px;height:23px}\n.gaelo-product .persona-label{\n  font-family:var(--font-mono);font-size:.68rem;font-weight:600;\n  color:var(--accent,var(--teal));letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px;\n}\n.gaelo-product .persona h3{font-size:1.12rem;margin:0 0 10px;color:var(--text)}\n.gaelo-product .persona p{font-size:.93rem;line-height:1.6;color:var(--muted);margin:0}\n.gaelo-product .persona p a{color:var(--accent,var(--teal));font-weight:600;text-decoration:underline}\n\n\/* ============================================================\n   REASONS \u2014 \"Why choose GaelO Flow\" cards\n   Grid of 5 items : 3 on row 1, 2 centered on row 2\n   ============================================================ *\/\n.gaelo-product .reasons-grid{\n  display:grid;grid-template-columns:repeat(6,1fr);\n  gap:22px;max-width:1100px;margin:0 auto 48px;\n}\n.gaelo-product .reason-card{\n  grid-column:span 2;\n  background:var(--white);\n  border:1px solid var(--border);\n  border-radius:var(--radius-md);\n  padding:26px 26px 24px;\n  display:flex;flex-direction:column;gap:12px;\n  transition:all .3s var(--ease);\n  position:relative;overflow:hidden;\n}\n.gaelo-product .reason-card::before{\n  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;\n  background:var(--teal);transform:scaleY(0);transform-origin:top;\n  transition:transform .35s var(--ease);\n}\n.gaelo-product .reason-card:hover{\n  transform:translateY(-3px);\n  box-shadow:var(--shadow-md);\n  border-color:var(--teal);\n}\n.gaelo-product .reason-card:hover::before{transform:scaleY(1)}\n.gaelo-product .reason-card-head{\n  display:flex;align-items:flex-start;gap:14px;\n}\n.gaelo-product .reason-card-check{\n  flex-shrink:0;width:30px;height:30px;border-radius:50%;\n  background:var(--teal);color:#fff;\n  display:flex;align-items:center;justify-content:center;\n  margin-top:2px;\n}\n.gaelo-product .reason-card-check svg{width:14px;height:14px}\n.gaelo-product .reason-card h3{\n  font-size:1.05rem;font-weight:700;letter-spacing:-.01em;\n  margin:0;color:var(--text);line-height:1.3;\n}\n.gaelo-product .reason-card p{\n  font-size:.94rem;line-height:1.6;color:var(--muted);margin:0;\n}\n\/* center the last 2 cards on the second row *\/\n.gaelo-product .reason-card:nth-child(4){grid-column:2 \/ span 2}\n.gaelo-product .reason-card:nth-child(5){grid-column:4 \/ span 2}\n@media (max-width:920px){\n  .gaelo-product .reasons-grid{grid-template-columns:repeat(2,1fr)}\n  .gaelo-product .reason-card,\n  .gaelo-product .reason-card:nth-child(4),\n  .gaelo-product .reason-card:nth-child(5){grid-column:auto}\n}\n@media (max-width:600px){\n  .gaelo-product .reasons-grid{grid-template-columns:1fr}\n}\n\n\/* ============================================================\n   DICOM VIEWER PAGE \u2014 Core Features rich rows\n   3 large H3 sections, alternating text\/image\n   ============================================================ *\/\n.gaelo-product .viewer-feature-grid{\n  display:flex;flex-direction:column;gap:clamp(28px,4vw,52px);\n  max-width:1180px;margin:0 auto;\n}\n.gaelo-product .viewer-feature{\n  background:var(--white);\n  border:1px solid var(--border);\n  border-radius:var(--radius-lg);\n  padding:clamp(32px,4vw,48px);\n  display:flex;flex-direction:column;gap:24px;\n  box-shadow:var(--shadow-sm);\n}\n.gaelo-product .viewer-feature.viewer-feature-image{\n  display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(28px,3.5vw,44px);\n  align-items:center;\n}\n.gaelo-product .viewer-feature-text{display:flex;flex-direction:column;gap:14px}\n.gaelo-product .viewer-feature-num{\n  display:none;\n}\n.gaelo-product .viewer-feature h3{\n  font-size:clamp(1.35rem,2.2vw,1.7rem);font-weight:800;\n  letter-spacing:-.015em;color:var(--text);margin:0;line-height:1.2;\n}\n.gaelo-product .viewer-feature p{\n  font-size:.98rem;line-height:1.7;color:var(--muted);margin:0;\n}\n.gaelo-product .viewer-feature p + p{margin-top:6px}\n.gaelo-product .viewer-feature .ep-list{margin-top:6px;gap:10px}\n.gaelo-product .viewer-feature .ep-list li{font-size:.95rem;color:var(--slate)}\n.gaelo-product .viewer-feature-visual{\n  position:relative;border-radius:var(--radius-md);overflow:hidden;\n  background:#0d1b2a;border:1px solid var(--border);\n  aspect-ratio:4\/3;\n}\n.gaelo-product .viewer-feature-visual img{\n  width:100%;height:100%;object-fit:cover;display:block;\n  transition:transform .5s var(--ease);\n}\n.gaelo-product .viewer-feature-visual:hover img{transform:scale(1.03)}\n@media (max-width:860px){\n  .gaelo-product .viewer-feature.viewer-feature-image{grid-template-columns:1fr}\n}\n\n\n\/* ============================================================\n   LESION BANNER \u2014 real image with caption (FDG page)\n   ============================================================ *\/\n.gaelo-product .lesion-banner{\n  margin:24px 0 0;\n  border-radius:var(--radius-md);\n  overflow:hidden;\n  background:#0d1b2a;\n  border:1px solid var(--border);\n  box-shadow:var(--shadow-sm);\n}\n.gaelo-product .lesion-banner img{\n  width:100%;height:auto;display:block;\n  transition:transform .6s var(--ease);\n}\n.gaelo-product .lesion-banner:hover img{transform:scale(1.02)}\n.gaelo-product .lesion-banner figcaption{\n  padding:12px 18px;\n  background:var(--white);\n  border-top:1px solid var(--border);\n  font-size:.82rem;color:var(--muted);text-align:center;font-style:italic;\n}\n\/* ============================================================\n   LESION PLACEHOLDER \u2014 temporary gray block awaiting the\n   lesion zoom image (SUVmax \/ Volume label) on the FDG page\n   ============================================================ *\/\n.gaelo-product .lesion-placeholder{\n  margin:24px 0 0;\n  border-radius:var(--radius-md);\n  overflow:hidden;\n  border:1px dashed var(--border-strong);\n  background:\n    repeating-linear-gradient(135deg,rgba(0,0,0,.025) 0,rgba(0,0,0,.025) 14px,transparent 14px,transparent 28px),\n    var(--bg-soft);\n}\n.gaelo-product .lesion-placeholder-body{\n  aspect-ratio:21\/9;\n  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;\n  color:var(--muted);\n  padding:24px;\n}\n.gaelo-product .lesion-placeholder-body svg{width:48px;height:48px;opacity:.45}\n.gaelo-product .lesion-placeholder-label{\n  font-family:var(--font-mono);font-size:.78rem;font-weight:600;\n  letter-spacing:.12em;text-transform:uppercase;color:var(--slate);\n}\n.gaelo-product .lesion-placeholder-sub{\n  font-size:.78rem;font-style:italic;color:var(--muted);\n}\n\n\/* ============================================================\n   ALGO BANNER \u2014 large image below the intro on the Algorithms page\n   Split-screen showing raw DICOM vs AI segmentation overlay\n   ============================================================ *\/\n.gaelo-product .algo-banner{\n  margin:clamp(48px,6vw,72px) auto 0;\n  max-width:1180px;\n  border-radius:var(--radius-lg);\n  overflow:hidden;\n  background:#0d1b2a;\n  border:1px solid var(--border);\n  box-shadow:0 18px 50px rgba(13,27,42,.12);\n}\n.gaelo-product .algo-banner img{\n  width:100%;height:auto;display:block;\n  transition:transform .6s var(--ease);\n}\n.gaelo-product .algo-banner:hover img{transform:scale(1.02)}\n.gaelo-product .algo-banner figcaption{\n  padding:14px 22px;\n  background:var(--white);\n  border-top:1px solid var(--border);\n  font-size:.85rem;color:var(--muted);text-align:center;\n  font-style:italic;\n}\n\n\/* ============================================================\n   INTEGRATION CARDS \u2014 Native integration in our products (3 cards)\n   ============================================================ *\/\n.gaelo-product .integration-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;\n  max-width:1180px;margin:0 auto;\n}\n.gaelo-product .integration-card{\n  background:var(--white);\n  border:1px solid var(--border);\n  border-radius:var(--radius-md);\n  padding:clamp(26px,3vw,34px);\n  display:flex;flex-direction:column;gap:14px;\n  transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease);\n  position:relative;overflow:hidden;\n}\n.gaelo-product .integration-card::before{\n  content:'';position:absolute;left:0;top:0;bottom:0;width:3px;\n  background:var(--teal);transform:scaleY(0);transform-origin:top;\n  transition:transform .35s var(--ease);\n}\n.gaelo-product .integration-card:hover{\n  transform:translateY(-4px);\n  box-shadow:var(--shadow-md);\n  border-color:var(--teal);\n}\n.gaelo-product .integration-card:hover::before{transform:scaleY(1)}\n.gaelo-product .integration-card-head{display:flex;flex-direction:column;gap:10px;align-items:flex-start}\n.gaelo-product .integration-card-tag{\n  font-family:var(--font-mono);font-size:.65rem;font-weight:600;\n  letter-spacing:.16em;text-transform:uppercase;\n  padding:6px 12px;border-radius:50px;\n}\n.gaelo-product .integration-card h3{\n  font-size:1.35rem;font-weight:800;letter-spacing:-.015em;\n  color:var(--text);margin:0;line-height:1.2;\n}\n.gaelo-product .integration-card p{\n  font-size:.94rem;line-height:1.65;color:var(--muted);margin:0;\n}\n.gaelo-product .integration-card a{color:var(--teal-dark);font-weight:600;text-decoration:underline;text-decoration-color:rgba(4,149,160,.25);text-underline-offset:3px}\n.gaelo-product .integration-card a:hover{text-decoration-color:var(--teal-dark)}\n@media (max-width:920px){\n  .gaelo-product .integration-grid{grid-template-columns:1fr;max-width:640px}\n}\n\n\/* ============================================================\n   REASON CARD WIDE \u2014 \"Multiple Device Support\" with image below\n   Used on DICOM Viewer & Algorithms : N normal cards then 1 wide card\n   ============================================================ *\/\n\/* By default in has-wide mode, normal cards take span 3 (so 2 per row) *\/\n.gaelo-product .reasons-grid.has-wide .reason-card{grid-column:span 3}\n\/* Variant : when there are 3+1 cards, normal cards span 2 so 3 fit per row *\/\n.gaelo-product .reasons-grid.has-wide-3 .reason-card{grid-column:span 2}\n.gaelo-product .reason-card-wide{\n  grid-column:1 \/ -1 !important;\n  display:flex;flex-direction:column;\n}\n.gaelo-product .reason-card-visual{\n  margin:18px -26px -24px;\n  border-top:1px solid var(--border);\n  border-radius:0 0 var(--radius-md) var(--radius-md);\n  overflow:hidden;\n  aspect-ratio:21\/9;\n  background:#0d1b2a;\n}\n.gaelo-product .reason-card-visual img{\n  width:100%;height:100%;object-fit:cover;display:block;\n  transition:transform .5s var(--ease);\n}\n.gaelo-product .reason-card-wide:hover .reason-card-visual img{transform:scale(1.03)}\n@media (max-width:920px){\n  .gaelo-product .reasons-grid.has-wide .reason-card,\n  .gaelo-product .reason-card-wide{grid-column:auto !important}\n  .gaelo-product .reason-card-visual{aspect-ratio:16\/9}\n}\n\n\/* ============================================================\n   DEPLOYMENT \u2014 on-premise vs cloud comparative cards\n   ============================================================ *\/\n.gaelo-product .deploy-grid{\n  display:grid;grid-template-columns:repeat(2,1fr);gap:26px;\n  max-width:1000px;margin:0 auto;\n}\n.gaelo-product .deploy-card{\n  position:relative;\n  display:flex;flex-direction:column;\n  padding:38px 34px 34px;\n  border-radius:var(--radius-lg);\n  background:var(--white);\n  border:1px solid var(--border);\n  transition:all .35s var(--ease);\n  overflow:hidden;\n}\n.gaelo-product .deploy-card::before{\n  content:'';position:absolute;top:0;left:0;right:0;height:4px;\n  background:var(--deploy-accent,var(--teal));\n}\n.gaelo-product .deploy-card:hover{\n  transform:translateY(-5px);\n  box-shadow:var(--shadow-lg);\n  border-color:var(--deploy-accent,var(--teal));\n}\n.gaelo-product .deploy-card.on-prem{--deploy-accent:var(--teal)}    \/* indigo on Flow (teal var = indigo) *\/\n.gaelo-product .deploy-card.cloud{--deploy-accent:var(--teal-real)} \/* the original teal for contrast *\/\n.gaelo-product .deploy-card-head{margin-bottom:24px}\n.gaelo-product .deploy-card-tag{\n  display:inline-block;\n  font-family:var(--font-mono);font-size:.68rem;font-weight:600;\n  color:var(--deploy-accent,var(--teal));\n  letter-spacing:.16em;text-transform:uppercase;\n  margin-bottom:14px;\n}\n.gaelo-product .deploy-card-icon{\n  width:56px;height:56px;border-radius:14px;\n  background:var(--bg-soft);\n  border:1px solid var(--border);\n  color:var(--deploy-accent,var(--teal));\n  display:flex;align-items:center;justify-content:center;\n  margin-bottom:18px;\n  transition:all .3s var(--ease);\n}\n.gaelo-product .deploy-card:hover .deploy-card-icon{\n  background:var(--deploy-accent,var(--teal));color:#fff;\n}\n.gaelo-product .deploy-card-icon svg{width:26px;height:26px}\n.gaelo-product .deploy-card h3{\n  font-size:1.3rem;font-weight:700;letter-spacing:-.015em;\n  margin:0 0 10px;color:var(--text);\n}\n.gaelo-product .deploy-card-head p{\n  font-size:.98rem;line-height:1.6;color:var(--muted);margin:0;\n}\n.gaelo-product .deploy-list{margin:0;gap:11px}\n.gaelo-product .deploy-list li{font-size:.94rem;color:var(--text);line-height:1.5}\n@media (max-width:760px){\n  .gaelo-product .deploy-grid{grid-template-columns:1fr}\n  .gaelo-product .deploy-card{padding:28px 22px 24px}\n}\n\n\/* ============================================================\n   ECOSYSTEM \u2014 product image-boxes\n   ============================================================ *\/\n.gaelo-product .eco-grid{\n  display:grid;grid-template-columns:repeat(3,1fr);gap:24px;\n}\n.gaelo-product .eco-card{\n  position:relative;display:flex;flex-direction:column;\n  background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);\n  overflow:hidden;transition:all .4s var(--ease);\n}\n.gaelo-product .eco-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:var(--eco-accent,var(--teal))}\n.gaelo-product .eco-card.gaelo{--eco-accent:var(--teal);--eco-accent-soft:var(--teal-soft);--eco-deep:#037a83;--eco-grad:linear-gradient(150deg,#0495A0 0%,#037a83 55%,#02666d 100%)}\n.gaelo-product .eco-card.flow{--eco-accent:var(--indigo);--eco-accent-soft:var(--indigo-soft);--eco-deep:#2a2860;--eco-grad:linear-gradient(150deg,#3f3c86 0%,#353275 55%,#2a2860 100%)}\n.gaelo-product .eco-card.algo{--eco-accent:#cc8200;--eco-accent-soft:var(--orange-soft);--eco-deep:#b5760a;--eco-grad:linear-gradient(150deg,#FFBA4D 0%,#f0a52f 100%)}\n.gaelo-product .eco-visual{\n  position:relative;display:flex;align-items:center;justify-content:center;height:190px;\n  background:var(--eco-grad,linear-gradient(150deg,var(--teal),var(--teal-dark)));\n  overflow:hidden;\n}\n\/* subtle tech grid texture over the colored band \u2014 discreet, not kitsch *\/\n.gaelo-product .eco-visual::before{\n  content:'';position:absolute;inset:0;pointer-events:none;\n  background-image:\n    linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);\n  background-size:26px 26px;\n  -webkit-mask-image:radial-gradient(ellipse 75% 75% at 30% 25%,black,transparent 80%);\n  mask-image:radial-gradient(ellipse 75% 75% at 30% 25%,black,transparent 80%);\n}\n\/* soft light bloom in a corner for depth *\/\n.gaelo-product .eco-visual::after{\n  content:'';position:absolute;top:-40%;right:-20%;\n  width:70%;height:140%;border-radius:50%;pointer-events:none;\n  background:radial-gradient(circle,rgba(255,255,255,.18),transparent 65%);\n}\n.gaelo-product .eco-visual img{\n  position:relative;z-index:1;\n  max-width:80%;max-height:110px;width:auto;height:auto;object-fit:contain;\n  transition:transform .5s var(--ease);\n  \/* render brand logos in white over the colored band *\/\n  filter:brightness(0) invert(1);\n}\n.gaelo-product .eco-card:hover .eco-visual img{transform:scale(1.04)}\n\/* AI card keeps the real photo \u2014 colored veil from the charter (orange) for cohesion *\/\n.gaelo-product .eco-visual.cover{background:#0d1b2a}\n.gaelo-product .eco-visual.cover::before{display:none}\n.gaelo-product .eco-visual.cover::after{\n  content:'';position:absolute;inset:0;top:auto;right:auto;width:100%;height:100%;border-radius:0;\n  background:linear-gradient(180deg,rgba(255,186,77,.12) 0%,transparent 35%,rgba(13,27,42,.55) 100%);\n}\n.gaelo-product .eco-visual.cover img{\n  max-width:none;max-height:none;width:100%;height:100%;object-fit:cover;\n  object-position:top center;\n  filter:none;\n}\n.gaelo-product .eco-body{padding:26px 28px 28px;display:flex;flex-direction:column;flex:1}\n.gaelo-product .eco-tag{\n  display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);\n  font-size:.68rem;font-weight:600;color:var(--eco-accent,var(--teal));\n  letter-spacing:.14em;text-transform:uppercase;margin-bottom:12px;\n}\n.gaelo-product .eco-tag::before{content:'';width:18px;height:2px;border-radius:2px;background:var(--eco-accent,var(--teal))}\n.gaelo-product .eco-card h3{font-size:1.2rem;margin:0 0 14px;letter-spacing:-.015em;color:var(--text)}\n.gaelo-product .eco-card p{font-size:.95rem;line-height:1.6;color:var(--muted);margin:0 0 22px;flex:1}\n.gaelo-product .eco-link{\n  display:inline-flex;align-items:center;gap:8px;align-self:flex-start;\n  padding:11px 20px;border-radius:50px;background:var(--eco-accent-soft,var(--teal-soft));\n  color:var(--eco-accent,var(--teal));font-size:.88rem;font-weight:600;\n  text-decoration:none;transition:all .25s var(--ease);border:1px solid transparent;\n}\n.gaelo-product .eco-link:hover{background:var(--eco-accent,var(--teal));color:var(--white);text-decoration:none;transform:translateX(3px)}\n.gaelo-product .eco-link svg{width:13px;height:13px;transition:transform .25s var(--ease)}\n.gaelo-product .eco-link:hover svg{transform:translateX(3px)}\n@media (max-width:920px){.gaelo-product .eco-grid{grid-template-columns:1fr;gap:18px}}\n\n\/* ============================================================\n   CALLOUT BOX (Elementor CTA box) \u2014 mid-page conversion\n   ============================================================ *\/\n.gaelo-product .callout{\n  display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:clamp(28px,4vw,56px);\n  background:linear-gradient(135deg,var(--teal),var(--teal-dark));\n  border-radius:var(--radius-xl);padding:clamp(36px,5vw,64px);\n  color:var(--white);position:relative;overflow:hidden;\n}\n.gaelo-product .callout::before{\n  content:'';position:absolute;inset:0;pointer-events:none;\n  background:radial-gradient(ellipse 50% 80% at 100% 0%,rgba(255,255,255,.14),transparent);\n}\n.gaelo-product .callout-content{position:relative;z-index:1}\n.gaelo-product .callout h2{font-size:clamp(1.6rem,3vw,2.3rem);font-weight:800;color:var(--white);letter-spacing:-.025em;margin:0 0 14px;line-height:1.15}\n.gaelo-product .callout p{color:rgba(255,255,255,.85);font-size:1.02rem;line-height:1.6;margin:0}\n.gaelo-product .callout-actions{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px}\n@media (max-width:820px){\n  .gaelo-product .callout{grid-template-columns:1fr;gap:24px}\n  .gaelo-product .callout-actions{flex-direction:row;flex-wrap:wrap}\n}\n\n\/* ============================================================\n   FINAL CTA \u2014 full-width edge-to-edge\n   ============================================================ *\/\n.gaelo-product .final-cta{\n  position:relative;overflow:hidden;width:100vw;\n  margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);\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}\n.gaelo-product .final-cta-glow{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 60% 60% at 50% 100%,rgba(4,149,160,.28),transparent)}\n.gaelo-product .final-cta-grid-overlay{\n  position:absolute;inset:0;pointer-events:none;\n  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),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-product .final-cta-content{position:relative;z-index:1;max-width:680px;margin:0 auto}\n.gaelo-product .final-cta h2{font-size:clamp(2rem,4vw,3rem);font-weight:800;letter-spacing:-.03em;line-height:1.08;color:var(--white);margin-bottom:18px}\n.gaelo-product .final-cta-sub{color:rgba(255,255,255,.65);font-weight:300;font-size:1.05rem;margin-bottom:38px;max-width:520px;margin-left:auto;margin-right:auto}\n.gaelo-product .final-cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}\n\n\/* ============================================================\n   LIGHTBOX \u2014 click any image to enlarge (sober, not fullscreen)\n   ============================================================ *\/\n.gaelo-product .zoomable{\n  cursor:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='32' height='32' viewBox='0 0 32 32'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='13' cy='13' r='8' fill='rgba(4,149,160,0.35)'\/%3E%3Cline x1='19' y1='19' x2='27' y2='27'\/%3E%3Cline x1='13' y1='10' x2='13' y2='16'\/%3E%3Cline x1='10' y1='13' x2='16' y2='13'\/%3E%3C\/g%3E%3C\/svg%3E\") 13 13, zoom-in;\n}\n.gp-lightbox{\n  position:fixed;inset:0;z-index:99999;\n  display:flex;align-items:center;justify-content:center;\n  padding:clamp(20px,5vw,64px);\n  background:rgba(13,27,42,.82);\n  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);\n  opacity:0;visibility:hidden;\n  transition:opacity .3s cubic-bezier(.16,1,.3,1),visibility .3s;\n  cursor:zoom-out;\n}\n.gp-lightbox.is-open{opacity:1;visibility:visible}\n.gp-lightbox-img{\n  max-width:min(1100px,92vw);max-height:86vh;\n  width:auto;height:auto;\n  border-radius:10px;\n  box-shadow:0 30px 90px rgba(0,0,0,.5);\n  transform:scale(.96);\n  transition:transform .3s cubic-bezier(.16,1,.3,1);\n  background:#0d1b2a;\n  cursor:zoom-out;\n}\n@media (min-width:1900px){\n  .gp-lightbox-img{max-width:min(1600px,92vw);max-height:88vh}\n}\n@media (min-width:2600px){\n  .gp-lightbox-img{max-width:min(2200px,92vw);max-height:90vh}\n}\n.gp-lightbox.is-open .gp-lightbox-img{transform:scale(1)}\n.gp-lightbox-close{\n  position:absolute;top:clamp(16px,3vw,28px);right:clamp(16px,3vw,28px);\n  width:44px;height:44px;border-radius:50%;\n  border:1px solid rgba(255,255,255,.25);\n  background:rgba(255,255,255,.1);color:#fff;\n  display:flex;align-items:center;justify-content:center;cursor:pointer;\n  transition:all .2s ease;\n}\n.gp-lightbox-close:hover{background:rgba(255,255,255,.2);transform:rotate(90deg)}\n.gp-lightbox-close svg{width:20px;height:20px}\n.gp-lightbox-cap{\n  position:absolute;bottom:clamp(16px,3vw,28px);left:0;right:0;\n  text-align:center;color:rgba(255,255,255,.7);\n  font-family:var(--font-mono);font-size:.78rem;\n  padding:0 24px;pointer-events:none;\n}\n@media (prefers-reduced-motion:reduce){\n  .gp-lightbox,.gp-lightbox-img{transition:none}\n}\n\n\/* ============================================================\n   REVEAL ON SCROLL\n   ============================================================ *\/\n.gaelo-product .reveal{\n  opacity:0;transform:translateY(32px);\n  transition:opacity .9s var(--ease),transform .9s var(--ease);\n}\n.gaelo-product .reveal.is-visible{opacity:1;transform:none}\n.gaelo-product .reveal-d1{transition-delay:.08s}\n.gaelo-product .reveal-d2{transition-delay:.16s}\n.gaelo-product .reveal-d3{transition-delay:.24s}\n.gaelo-product .reveal-d4{transition-delay:.32s}\n\n@keyframes gp-fadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}\n\n\/* ============================================================\n   RESPONSIVE\n   ============================================================ *\/\n@media (max-width:900px){\n  .gaelo-product{font-size:16px}\n  .gaelo-product .hero{min-height:auto;padding:80px 20px 60px}\n  .gaelo-product .hero-scroll{display:none}\n  .gaelo-product .hero-mockup{margin-top:8px}\n  \/* hide the platform badge on mobile \u2014 leave more room for the H1 *\/\n  .gaelo-product .hero-badge{display:none}\n}\n@media (max-width:640px){\n  .gaelo-product .hero-actions{flex-direction:column;width:100%;align-items:stretch}\n  .gaelo-product .hero-actions .btn{justify-content:center;width:100%}\n  .gaelo-product .final-cta-actions{flex-direction:column;width:100%;align-items:stretch}\n  .gaelo-product .final-cta-actions .btn{justify-content:center}\n}\n@media (prefers-reduced-motion:reduce){\n  .gaelo-product *,\n  .gaelo-product *::before,\n  .gaelo-product *::after{\n    animation-duration:.01ms!important;\n    animation-iteration-count:1!important;\n    transition-duration:.01ms!important;\n  }\n}\n<\/style>\n\n<!-- ===== JSON-LD : SoftwareApplication + BreadcrumbList ===== -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"SoftwareApplication\",\n      \"@id\": \"\/en\/software\/dicom-data-orchestration\/#software\",\n      \"name\": \"GaelO Flow\",\n      \"applicationCategory\": \"MedicalApplication\",\n      \"operatingSystem\": \"Web-based, on-premise or cloud\",\n      \"url\": \"\/en\/software\/dicom-data-orchestration\/\",\n      \"description\": \"Research-grade PACS to orchestrate medical imaging data: DICOM query\/retrieve, batch de-identification, AI inference pipelines, integrated DICOM viewer and seamless data exports for Real World Evidence studies.\",\n      \"publisher\": {\n        \"@type\": \"Organization\",\n        \"name\": \"Pixilib\",\n        \"url\": \"\/\"\n      },\n      \"featureList\": [\n        \"Research PACS with unlimited DICOM storage\",\n        \"Auto-Retrieve from production PACS\",\n        \"Batch de-identification and anonymization\",\n        \"Integrated full-feature DICOM viewer\",\n        \"AI inference pipelines (FDG, PSMA, DOTATOC, CT)\",\n        \"Role-based access control with isolated datasets\",\n        \"RESTful API for full ecosystem integration\",\n        \"On-premise or cloud deployment\"\n      ]\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        { \"@type\": \"ListItem\", \"position\": 1, \"name\": \"Home\", \"item\": \"\/en\/\" },\n        { \"@type\": \"ListItem\", \"position\": 2, \"name\": \"Software\", \"item\": \"\/en\/software\/\" },\n        { \"@type\": \"ListItem\", \"position\": 3, \"name\": \"GaelO Flow \u2014 Medical Imaging Data Orchestration\", \"item\": \"\/en\/software\/dicom-data-orchestration\/\" }\n      ]\n    }\n  ]\n}\n<\/script>\n\n<article class=\"gaelo-product\" lang=\"en\">\n\n  <!-- Scroll progress bar -->\n  <div class=\"scroll-progress\" aria-hidden=\"true\"><\/div>\n\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <!-- ============================================================\n       HERO\n       ============================================================ -->\n  <header class=\"hero\" role=\"banner\">\n    <div class=\"hero-canvas\" aria-hidden=\"true\">\n      <div class=\"hero-orb o1\"><\/div>\n      <div class=\"hero-orb o2\"><\/div>\n      <div class=\"hero-orb o3\"><\/div>\n      <div class=\"hero-grid\"><\/div>\n    <\/div>\n\n    <div class=\"hero-content\">\n      <span class=\"hero-badge\">\n        <span class=\"hero-badge-dot\"><\/span>\n        TMTV \u00b7 Lymphoma \u00b7 Solid Tumors \u00b7 Oncology Endpoints\n      <\/span>\n\n      <h1 class=\"hero-title\">\n        <span class=\"word w1 accent\">FDG-PET<\/span>\n        <span class=\"word w2\">Segmentation:<\/span>\n        <span class=\"word w3\">Automated<\/span>\n        <span class=\"word w4 accent-o\">TMTV<\/span>\n        <span class=\"word w5\">Calculation<\/span>\n      <\/h1>\n\n      <p class=\"hero-sub\">Standardizing Total Metabolic Tumor Volume extraction to enhance predictive accuracy in oncology clinical trials.<\/p>\n\n      <div class=\"hero-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\" aria-hidden=\"true\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg>\n        <\/a>\n        <a href=\"#features\" class=\"btn btn-ghost-light\">Explore the Pipeline<\/a>\n      <\/div>\n\n      <!-- Placeholder figure : awaiting lesion zoom image with SUVmax\/Volume label -->\n      <figure class=\"hero-mockup\">\n        <div class=\"hero-mockup-bar\">\n          <span><\/span><span><\/span><span><\/span>\n          <div class=\"hero-mockup-url\">gaelo.fr \u00b7 fdg \u00b7 lesion-segmentation<\/div>\n        <\/div>\n        <img fetchpriority=\"high\"\n          src=\"\/wp-content\/uploads\/2026\/06\/fdg-lesion-suvmax-volume-segmentation.jpeg\"\n          alt=\"Close-up zoom on a hypermetabolic FDG-PET lesion with AI-generated segmentation contour and annotation showing SUVmax and Volume, computed by the Pixilib TMTV pipeline.\"\n          loading=\"eager\"\n          decoding=\"async\"\n          width=\"1280\" height=\"720\">\n      <\/figure>\n\n    <div class=\"hero-scroll\" aria-hidden=\"true\">\n      <div class=\"hero-scroll-dot\"><\/div>\n      Scroll\n    <\/div>\n    <\/div>\n  <\/header>\n\n\n  <!-- ============================================================\n       SECTION \u2014 INTRO \/ MANIFESTO\n       H2 : Tumor Burden, a new imaging biomarkers ready for decisional trials\n       ============================================================ -->\n  <section class=\"ep-section bg-white\" aria-labelledby=\"intro-title\">\n    <div class=\"container\">\n      <div class=\"intro-grid\">\n\n        <div class=\"intro-sticky reveal\">\n          <div class=\"intro-card\">\n            <span class=\"ep-eyebrow\">A new biomarker<\/span>\n            <h2 id=\"intro-title\">Tumor Burden, a new imaging biomarker ready for decisional trials<\/h2>\n            <blockquote class=\"intro-quote\">\"At Pixilib we see medical imaging as a leverage to enhance patients' healthcare and provide more accurate treatments.\"<\/blockquote>\n          <\/div>\n          <button class=\"collapse-toggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"intro-more\" data-collapse-label-more=\"Read more\" data-collapse-label-less=\"Show less\">\n            <span class=\"collapse-label\">Read more<\/span>\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"\/><\/svg>\n          <\/button>\n        <\/div>\n\n        <div class=\"intro-text reveal reveal-d1 collapsible\" id=\"intro-more\">\n          <p>Last year, PET\/CT segmentation with Total Metabolic Tumor Volume (TMTV) calculations showed a strong prognosis value in various <a href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/25268160\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">tumors<\/a>. With TMTV, tumor burden can be quantified to evaluate a patient's outcomes.<\/p>\n          <p>For instance in Lymphomas, this biomarker is now being integrated into new patient risk stratification to build more tailored therapies \u2014 reducing toxicity for low-risk patients and increasing treatment efficacy for high-risk patients.<\/p>\n          <p>Our technology makes TMTV calculation accessible in prospective decisional trials to have real-time, centralized, expert-validated TMTV calculation that can be integrated for treatment adaptation.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       SECTION \u2014 PRECISION ALGORITHMS (3 H3)\n       H2 : Precision Algorithms for TMTV Extraction\n       ============================================================ -->\n  <section class=\"ep-section bg-soft\" id=\"features\" aria-labelledby=\"precision-title\">\n    <div class=\"container\">\n      <div class=\"ep-head center reveal\">\n        <span class=\"ep-eyebrow\">The Pipeline<\/span>\n        <h2 id=\"precision-title\">Precision Algorithms for TMTV Extraction<\/h2>\n        <p>Our image processing pipeline is optimized to handle the challenges of FDG PET across multicenter studies, ensuring that your Total Metabolic Tumor Volume data is reproducible, standardized and medically validated (human in the loop).<\/p>\n      <\/div>\n\n      <div class=\"viewer-feature-grid reveal reveal-d1\">\n\n        <article class=\"viewer-feature\">\n          <div class=\"viewer-feature-text\">\n            <span class=\"viewer-feature-num\">01<\/span>\n            <h3>Automated Lesion Detection &amp; Segmentation<\/h3>\n            <p><a href=\"https:\/\/pubmed.ncbi.nlm.nih.gov\/35204515\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">Pixilib's algorithms<\/a> identify hypermetabolic foci while filtering out physiological uptake (e.g., brain, heart, bladder). This automated Tumor Segmentation ensures:<\/p>\n            <ul class=\"ep-list\">\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Consistency<\/strong> eliminating the inter-reader variability inherent in manual contouring<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Speed<\/strong> calculating the Total Metabolic Tumor Volume in seconds, even for patients with high metastatic dissemination<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Validity and Accuracy<\/strong> AI delineates lesions, then validated thresholding methods (e.g., 41% SUVmax or SUV 2.5) are applied according to the study protocol<\/li>\n            <\/ul>\n          <\/div>\n          <!-- Placeholder figure : lesion zoom with SUVmax\/Volume label \u2014 to replace later -->\n          <figure class=\"lesion-banner\">\n            <img src=\"\/wp-content\/uploads\/2026\/06\/fdg-lesion-suvmax-volume-segmentation.jpeg\" alt=\"Close-up zoom on a hypermetabolic FDG-PET lesion with AI-generated segmentation contour and annotation showing SUVmax and Volume, computed by the Pixilib TMTV pipeline.\" loading=\"lazy\" decoding=\"async\">\n            <figcaption>Lesion zoom with AI-generated segmentation contour and SUVmax \/ Volume annotation.<\/figcaption>\n          <\/figure>\n        <\/article>\n\n        <article class=\"viewer-feature\">\n          <div class=\"viewer-feature-text\">\n            <span class=\"viewer-feature-num\">02<\/span>\n            <h3>Human In The Loop, Tumor Burden Assessment<\/h3>\n            <p>Our AI algorithm is integrated with a real DICOM viewer, making it possible for physicians to review AI results and edit them \u2014 remove false positives, add missing lesions.<\/p>\n            <p>At Pixilib we don't think there will be a perfect AI capable of 100% accuracy in segmentation tasks. We believe in complementarity: AI algorithms removing the unneeded work burden of standard segmentation tasks, and expert review focusing on more complicated cases and unusual uptake to deliver a final medically validated TMTV.<\/p>\n            <p>Our algorithms are designed to reach this complementarity \u2014 building the best of AI and medical expert union.<\/p>\n          <\/div>\n        <\/article>\n\n        <article class=\"viewer-feature\">\n          <div class=\"viewer-feature-text\">\n            <span class=\"viewer-feature-num\">03<\/span>\n            <h3>Radiomics calculation pipeline<\/h3>\n            <p>Once the tumor mass is segmented, TMTV is an important factor to extract \u2014 but not the only one. From this segmentation we extract many new biomarkers that could be integrated into clinical trials:<\/p>\n            <ul class=\"ep-list\">\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Total Lesion Glycolysis<\/strong> (TLG)<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Tumor Spread<\/strong> (Dmax)<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Uptake intensity<\/strong> (SUVmax, SUVpeak, SUVmean)<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Shape features<\/strong> Surface, Surface-to-volume ratio, Elongation, Flatness, Compactness...<\/li>\n              <li><span class=\"ep-list-check\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/span><strong>Textural features<\/strong><\/li>\n            <\/ul>\n            <p>In combination with our CT segmentation algorithm, we also integrate differentiation of involved organs to calculate separate organ involvement burden and extract anthropomorphic quantifications.<\/p>\n          <\/div>\n        <\/article>\n\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       SECTION \u2014 WHY AUTOMATE (3 advantage cards)\n       H2 : Why Automate your FDG PET Analysis with GaelO?\n       ============================================================ -->\n  <section class=\"ep-section bg-white\" aria-labelledby=\"why-title\">\n    <div class=\"container\">\n      <div class=\"ep-head center reveal\">\n        <span class=\"ep-eyebrow\">The GaelO advantage<\/span>\n        <h2 id=\"why-title\">Why Automate your FDG PET Analysis with GaelO?<\/h2>\n        <p>From multicenter <a href=\"\/en\/software\/\">clinical trial imaging<\/a> harmonization to ready-to-export TMTV metrics \u2014 three reasons to bring AI-validated tumor burden into your next protocol.<\/p>\n      <\/div>\n\n      <div class=\"reasons-grid has-wide-3 reveal reveal-d1\">\n\n        <article class=\"reason-card\">\n          <div class=\"reason-card-head\">\n            <span class=\"reason-card-check\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n            <\/span>\n            <h3>Predictive Power<\/h3>\n          <\/div>\n          <p>TMTV and derived metrics are increasingly recognized as major surrogate endpoints for progression-free survival (PFS) and Overall Survival (OS).<\/p>\n        <\/article>\n\n        <article class=\"reason-card\">\n          <div class=\"reason-card-head\">\n            <span class=\"reason-card-check\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n            <\/span>\n            <h3>Multicenter Harmonization<\/h3>\n          <\/div>\n          <p>Our algorithms account for differences in PET\/CT scanner sensitivity and reconstruction methods, delivering reproducible TMTV values regardless of the acquisition site.<\/p>\n        <\/article>\n\n        <article class=\"reason-card\">\n          <div class=\"reason-card-head\">\n            <span class=\"reason-card-check\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>\n            <\/span>\n            <h3>Ready for Clinical Reports<\/h3>\n          <\/div>\n          <p>Export your TMTV and derived metrics directly into your Electronic Data Capture (EDC) system or clinical study report \u2014 no manual transcription, no rounding errors.<\/p>\n        <\/article>\n\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       SECTION \u2014 ECOSYSTEM (cross-sell)\n       ============================================================ -->\n  <section class=\"ep-section bg-soft\" aria-labelledby=\"ecosystem-title\">\n    <div class=\"container\">\n      <div class=\"ep-head center reveal\">\n        <span class=\"ep-eyebrow\">The GaelO Ecosystem<\/span>\n        <h2 id=\"ecosystem-title\">A unified <span class=\"accent\">infrastructure<\/span> for medical imaging research<\/h2>\n        <p>From clinical trial centralization to research PACS and AI segmentation \u2014 three complementary products covering the full lifecycle of medical imaging in clinical research.<\/p>\n      <\/div>\n\n      <div class=\"eco-grid reveal reveal-d1\">\n        <article class=\"eco-card gaelo\">\n          <div class=\"eco-visual\"><img loading=\"lazy\" src=\"\/wp-content\/uploads\/2026\/03\/Logo-Gaelo-1-scaled.png\" alt=\"GaelO logo \u2014 clinical trial imaging platform\" loading=\"lazy\" decoding=\"async\" width=\"280\" height=\"88\"><\/div>\n          <div class=\"eco-body\">\n            <span class=\"eco-tag\">Clinical Trials<\/span>\n            <h3>GaelO<\/h3>\n            <p>Collection and centralized reading of clinical trials. From DICOM upload to Blind Independent Central Review with disease-specific criteria \u2014 GDPR\/HIPAA compliant, fully auditable.<\/p>\n            <a href=\"\/en\/software\/\" class=\"eco-link\">Discover GaelO<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/a>\n          <\/div>\n        <\/article>\n        <article class=\"eco-card flow\">\n          <div class=\"eco-visual\"><img loading=\"lazy\" src=\"\/wp-content\/uploads\/2026\/04\/Logo-gaelo-flow.png\" alt=\"GaelO Flow logo \u2014 research PACS for retrospective and Real World Evidence studies\" loading=\"lazy\" decoding=\"async\" width=\"280\" height=\"88\"><\/div>\n          <div class=\"eco-body\">\n            <span class=\"eco-tag\">Research PACS \u00b7 RWE<\/span>\n            <h3>GaelO Flow<\/h3>\n            <p>Research PACS for retrospective and Real World Evidence studies. Orchestrate <strong>medical imaging data<\/strong>: query\/retrieve, batch de-identification, AI inference pipelines and seamless export.<\/p>\n            <a href=\"\/en\/software\/dicom-data-orchestration\/\" class=\"eco-link\">Discover GaelO Flow<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/a>\n          <\/div>\n        <\/article>\n        <article class=\"eco-card algo\">\n          <div class=\"eco-visual cover\"><img loading=\"lazy\" src=\"\/wp-content\/uploads\/2026\/06\/wp-contentuploadsgaelo-sharedai-segmentation-card.jpg\" alt=\"AI segmentation algorithms \u2014 FDG, PSMA, DOTATOC tracers for medical imaging\" loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"280\"><\/div>\n          <div class=\"eco-body\">\n            <span class=\"eco-tag\">AI \u00b7 Segmentation<\/span>\n            <h3>AI Segmentation Algorithms<\/h3>\n            <p>FDG, PSMA, DOTATOC. Automated PET segmentation to extract <strong>Total Metabolic Tumor Volume (TMTV)<\/strong> human-in-the-loop, 100% medically validated, regulatory-ready.<\/p>\n            <a href=\"\/en\/algorithms\/\" class=\"eco-link\">Explore algorithms<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\/><polyline points=\"12 5 19 12 12 19\"\/><\/svg><\/a>\n          <\/div>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\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-overlay\" aria-hidden=\"true\"><\/div>\n    <div class=\"final-cta-content\">\n      <h2 id=\"final-title\">Ready to bring AI-validated TMTV into your next trial?<\/h2>\n      <p class=\"final-cta-sub\">From lymphoma risk stratification to solid tumor response assessment \u2014 let's integrate reproducible Total Metabolic Tumor Volume as a decisional endpoint of your clinical research.<\/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\" aria-hidden=\"true\"><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 + smooth anchor scroll + collapse + lightbox\n     ============================================================ -->\n<script>\n(function(){\n  var root=document.querySelector('.gaelo-product');\n  if(!root)return;\n\n  \/\/ \u2500\u2500\u2500 REVEAL ON SCROLL \u2500\u2500\u2500\n  if(typeof IntersectionObserver!=='undefined'){\n    var revealEls=root.querySelectorAll('.reveal');\n    var revealIO=new IntersectionObserver(function(entries){\n      entries.forEach(function(e){\n        if(e.isIntersecting){\n          e.target.classList.add('is-visible');\n          revealIO.unobserve(e.target);\n        }\n      });\n    },{rootMargin:'0px 0px -10% 0px',threshold:.1});\n    revealEls.forEach(function(el){revealIO.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 TABS \u2500\u2500\u2500\n  var tabsContainer=root.querySelector('.tabs');\n  if(tabsContainer){\n    var tabBtns=tabsContainer.querySelectorAll('.tabs-btn');\n    var tabPanels=tabsContainer.querySelectorAll('.tabs-panel');\n\n    function activateTab(idx){\n      tabBtns.forEach(function(b,i){\n        var active=i===idx;\n        b.setAttribute('aria-selected',active?'true':'false');\n        b.setAttribute('tabindex',active?'0':'-1');\n      });\n      tabPanels.forEach(function(p,i){\n        var active=i===idx;\n        p.classList.toggle('is-active',active);\n        if(active){p.removeAttribute('hidden')}\n        else{p.setAttribute('hidden','')}\n      });\n    }\n\n    tabBtns.forEach(function(btn,idx){\n      btn.addEventListener('click',function(){activateTab(idx)});\n      btn.addEventListener('keydown',function(e){\n        var newIdx=null;\n        if(e.key==='ArrowRight'){newIdx=(idx+1)%tabBtns.length;e.preventDefault()}\n        else if(e.key==='ArrowLeft'){newIdx=(idx-1+tabBtns.length)%tabBtns.length;e.preventDefault()}\n        else if(e.key==='Home'){newIdx=0;e.preventDefault()}\n        else if(e.key==='End'){newIdx=tabBtns.length-1;e.preventDefault()}\n        if(newIdx!==null){activateTab(newIdx);tabBtns[newIdx].focus()}\n      });\n    });\n  }\n\n  \/\/ \u2500\u2500\u2500 COUNTERS (count-up on first view) \u2500\u2500\u2500\n  var counters=root.querySelectorAll('.counter-num');\n  if(counters.length && typeof IntersectionObserver!=='undefined'){\n    var cIO=new IntersectionObserver(function(entries){\n      entries.forEach(function(e){\n        if(!e.isIntersecting)return;\n        cIO.unobserve(e.target);\n        var el=e.target;\n        var full=el.textContent;\n        var m=full.match(\/(\\d+)\/);\n        if(!m){return}\n        var target=parseInt(m[1],10);\n        var prefix=full.slice(0,m.index);\n        var suffixSpan=el.querySelector('.suffix');\n        var suffix=suffixSpan?suffixSpan.outerHTML:full.slice(m.index+m[1].length);\n        var dur=1100,start=null;\n        function step(ts){\n          if(!start)start=ts;\n          var prog=Math.min(1,(ts-start)\/dur);\n          var eased=1-Math.pow(1-prog,3);\n          var val=Math.round(target*eased);\n          el.innerHTML=prefix+val+suffix;\n          if(prog<1){requestAnimationFrame(step)}\n        }\n        requestAnimationFrame(step);\n      });\n    },{threshold:.4});\n    counters.forEach(function(c){cIO.observe(c)});\n  }\n\n  \/\/ \u2500\u2500\u2500 COLLAPSE TOGGLES \u2014 \"Read more\" \/ \"Show less\" (mobile\/tablet only) \u2500\u2500\u2500\n  var toggles=root.querySelectorAll('.collapse-toggle');\n  var mql=window.matchMedia('(max-width:900px)');\n\n  function applyCollapsedState(toggle,target,collapsed){\n    toggle.setAttribute('aria-expanded',collapsed?'false':'true');\n    var label=toggle.querySelector('.collapse-label');\n    if(label){\n      label.textContent=collapsed\n        ?(toggle.dataset.collapseLabelMore||'Read more')\n        :(toggle.dataset.collapseLabelLess||'Show less');\n    }\n    if(toggle.dataset.collapseTarget==='grid'){\n      if(collapsed)target.removeAttribute('data-extended');\n      else target.setAttribute('data-extended','true');\n    } else {\n      target.setAttribute('data-collapsed',collapsed?'true':'false');\n    }\n  }\n  function syncToggle(toggle){\n    var id=toggle.getAttribute('aria-controls');\n    if(!id)return;\n    var target=document.getElementById(id);\n    if(!target)return;\n    \/\/ Grid toggle (features list) : always start collapsed\n    if(toggle.dataset.collapseTarget==='grid'){\n      applyCollapsedState(toggle,target,true);\n      return;\n    }\n    \/\/ Generic collapsible (intro text) : collapsed only on mobile\n    if(mql.matches){\n      applyCollapsedState(toggle,target,true);\n    } else {\n      applyCollapsedState(toggle,target,false);\n    }\n  }\n  toggles.forEach(function(toggle){\n    syncToggle(toggle);\n    toggle.addEventListener('click',function(){\n      var id=toggle.getAttribute('aria-controls');\n      var target=document.getElementById(id);\n      if(!target)return;\n      var currentlyCollapsed=toggle.getAttribute('aria-expanded')!=='true';\n      applyCollapsedState(toggle,target,!currentlyCollapsed);\n    });\n  });\n  if(mql.addEventListener)mql.addEventListener('change',function(){toggles.forEach(syncToggle)});\n  else if(mql.addListener)mql.addListener(function(){toggles.forEach(syncToggle)});\n\n  \/\/ \u2500\u2500\u2500 LIGHTBOX (click any content image to enlarge) \u2500\u2500\u2500\n  \/\/ Exclude brand logos (decorative) inside .eco-visual that are NOT cover photos.\n  var imgs=root.querySelectorAll('img');\n  var box=null,boxImg=null,boxCap=null,lastFocus=null;\n\n  function buildBox(){\n    box=document.createElement('div');\n    box.className='gp-lightbox';\n    box.setAttribute('role','dialog');\n    box.setAttribute('aria-modal','true');\n    box.setAttribute('aria-label','Image preview');\n    box.innerHTML=''\n      +'<button class=\"gp-lightbox-close\" type=\"button\" aria-label=\"Close image preview\">'\n      +'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>'\n      +'<\/button>'\n      +'<img class=\"gp-lightbox-img\" alt=\"\">'\n      +'<div class=\"gp-lightbox-cap\"><\/div>';\n    document.body.appendChild(box);\n    boxImg=box.querySelector('.gp-lightbox-img');\n    boxCap=box.querySelector('.gp-lightbox-cap');\n    box.addEventListener('click',function(e){\n      \/\/ clicking the backdrop, the close button, OR the image itself closes it\n      closeBox();\n    });\n  }\n  function openBox(src,alt){\n    if(!box)buildBox();\n    lastFocus=document.activeElement;\n    boxImg.src=src;boxImg.alt=alt||'';\n    boxCap.textContent=alt||'';\n    \/\/ force reflow then open for the transition\n    box.offsetHeight;\n    box.classList.add('is-open');\n    document.body.style.overflow='hidden';\n    box.querySelector('.gp-lightbox-close').focus();\n  }\n  function closeBox(){\n    if(!box)return;\n    box.classList.remove('is-open');\n    document.body.style.overflow='';\n    if(lastFocus&&lastFocus.focus)lastFocus.focus();\n  }\n  document.addEventListener('keydown',function(e){\n    if(e.key==='Escape'&&box&&box.classList.contains('is-open'))closeBox();\n  });\n\n  imgs.forEach(function(img){\n    var inLogo=img.closest('.eco-visual')&&!img.closest('.eco-visual.cover');\n    if(inLogo)return;                 \/\/ skip decorative brand logos\n    if(img.closest('.hero-mockup-bar'))return;\n    img.classList.add('zoomable');\n    img.setAttribute('tabindex','0');\n    img.setAttribute('role','button');\n    img.addEventListener('click',function(){openBox(img.currentSrc||img.src,img.alt)});\n    img.addEventListener('keydown',function(e){\n      if(e.key==='Enter'||e.key===' '){e.preventDefault();openBox(img.currentSrc||img.src,img.alt)}\n    });\n  });\n\n\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>TMTV \u00b7 Lymphoma \u00b7 Solid Tumors \u00b7 Oncology Endpoints FDG-PET Segmentation: Automated TMTV Calculation Standardizing Total Metabolic Tumor Volume extraction to enhance predictive accuracy in oncology clinical trials. Request a Demo Explore the Pipeline gaelo.fr \u00b7 fdg \u00b7 lesion-segmentation Scroll A new biomarker Tumor Burden, a new imaging biomarker ready for decisional trials &#8220;At Pixilib [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":263,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-268","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/268","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=268"}],"version-history":[{"count":20,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/268\/revisions"}],"predecessor-version":[{"id":794,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/268\/revisions\/794"}],"up":[{"embeddable":true,"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/pages\/263"}],"wp:attachment":[{"href":"https:\/\/gaelo.fr\/en\/wp-json\/wp\/v2\/media?parent=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}