{"id":2521,"date":"2025-09-19T12:49:24","date_gmt":"2025-09-19T12:49:24","guid":{"rendered":"https:\/\/webontwerpers.be\/seo-service\/"},"modified":"2026-01-23T18:09:12","modified_gmt":"2026-01-23T18:09:12","slug":"seo-service","status":"publish","type":"page","link":"https:\/\/webontwerpers.be\/fr\/seo-service\/","title":{"rendered":"SEO-service"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2521\" class=\"elementor elementor-2521 elementor-1193\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8ab6acc e-con-full e-flex e-con e-parent\" data-id=\"8ab6acc\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9498574 elementor-widget elementor-widget-html\" data-id=\"9498574\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- WEBONTWERPERS \u2013 SEO PAKKETTEN SECTION (SAME DESIGN + WIDER + MOBILE + SCROLL TO #offerte)\n     Paste EVERYTHING into one Elementor HTML widget.\n-->\n<section class=\"wo-packs\" id=\"wo-packs\">\n  <style>\n  \n    :root{\n      --wo-blue:#015af2;\n      --wo-purple:#a154d0;\n\n      --wo-bgA:#070A12;\n      --wo-bgB:#0a0f1f;\n\n      --wo-shadow: 0 22px 70px rgba(0,0,0,.30);\n      --wo-shadow2: 0 28px 95px rgba(0,0,0,.40);\n\n      --wo-radius:28px;\n      --wo-font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;\n    }\n\n    \/* FULL WIDTH \u2013 DARK *\/\n    .wo-packs{\n      width:100vw;\n      position:relative;\n      left:50%;\n      margin-left:-50vw;\n      padding: 96px 0;\n      background:\n        radial-gradient(1100px 520px at 14% 18%, rgba(1,90,242,.22), transparent 60%),\n        radial-gradient(1100px 520px at 86% 22%, rgba(161,84,208,.22), transparent 60%),\n        radial-gradient(900px 560px at 50% 110%, rgba(34,197,94,.10), transparent 60%),\n        linear-gradient(180deg, var(--wo-bgA), var(--wo-bgB));\n      font-family: var(--wo-font);\n      color: rgba(255,255,255,.92);\n      overflow:hidden;\n      isolation:isolate;\n    }\n\n    .wo-packs::before{\n      content:\"\";\n      position:absolute; inset:-2px;\n      background:\n        linear-gradient(to right, rgba(255,255,255,.06) 1px, transparent 1px),\n        linear-gradient(to bottom, rgba(255,255,255,.06) 1px, transparent 1px);\n      background-size: 72px 72px;\n      opacity:.10;\n      pointer-events:none;\n      mix-blend-mode:soft-light;\n      z-index:0;\n    }\n\n    .wo-packs::after{\n      content:\"\";\n      position:absolute; inset:-35%;\n      background: conic-gradient(from 0deg,\n        rgba(1,90,242,.22),\n        rgba(161,84,208,.22),\n        rgba(1,90,242,.22)\n      );\n      opacity:.10;\n      filter: blur(20px);\n      animation: woPacksSpin 22s linear infinite;\n      pointer-events:none;\n      z-index:0;\n    }\n    @keyframes woPacksSpin{ from{transform:rotate(0deg);} to{transform:rotate(360deg);} }\n\n    .wo-packs__wrap{\n      max-width: 1440px; \/* widened *\/\n      margin: 0 auto;\n      padding: 0 18px;\n      position:relative;\n      z-index:1;\n    }\n\n    \/* HEADER *\/\n    .wo-packs__kicker{\n      display:inline-flex;\n      align-items:center;\n      gap:10px;\n      font-weight: 900;\n      font-size: 12px;\n      letter-spacing:.42px;\n      text-transform:uppercase;\n      color: rgba(255,255,255,.86);\n      margin-bottom: 10px;\n    }\n    .wo-packs__dot{\n      width:10px;height:10px;border-radius:999px;\n      background: linear-gradient(135deg, var(--wo-blue), var(--wo-purple));\n      box-shadow: 0 0 0 6px rgba(1,90,242,.16);\n    }\n\n    \/* kicker row to host the button without overlapping titles *\/\n    .wo-packs__kickerRow{\n      display:flex;\n      align-items:center;\n      justify-content:space-between;\n      gap: 12px;\n      flex-wrap:wrap;\n      margin-bottom: 6px;\n    }\n\n    .wo-packs__title{\n      margin:0 0 8px;\n      font-size: clamp(30px, 3.4vw, 48px);\n      line-height:1.04;\n      letter-spacing:-0.9px;\n    }\n    .wo-packs__title span{\n      background: linear-gradient(90deg, rgba(1,90,242,1), rgba(161,84,208,1));\n      -webkit-background-clip:text;\n      background-clip:text;\n      color: transparent;\n    }\n    .wo-packs__sub{\n      margin:0 0 22px;\n      color: rgba(255,255,255,.70);\n      font-size: 15.6px;\n      line-height: 1.75;\n      max-width: 70ch;\n    }\n\n    \/* GRID *\/\n    .wo-packs__grid{\n      display:grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr)); \/* 3 packs *\/\n      gap: 16px;\n      align-items: stretch;\n    }\n\n    .wo-pack{\n      position:relative;\n      border-radius: var(--wo-radius);\n      padding: 18px;\n      background: rgba(255,255,255,.06);\n      border: 1px solid rgba(255,255,255,.14);\n      box-shadow: var(--wo-shadow);\n      overflow:hidden;\n      transform: translateZ(0);\n      transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease, background .22s ease, filter .22s ease;\n      display:flex;\n      flex-direction:column;\n      min-height: 100%;\n    }\n\n    .wo-pack::before{\n      content:\"\";\n      position:absolute;\n      inset:-2px;\n      border-radius: calc(var(--wo-radius) + 2px);\n      padding: 2px;\n      background: linear-gradient(135deg, rgba(1,90,242,.55), rgba(161,84,208,.55), rgba(1,90,242,.22));\n      -webkit-mask:\n        linear-gradient(#000 0 0) content-box,\n        linear-gradient(#000 0 0);\n      -webkit-mask-composite: xor;\n      mask-composite: exclude;\n      opacity:.18;\n      pointer-events:none;\n    }\n\n    .wo-pack::after{\n      content:\"\";\n      position:absolute;\n      top:-40%;\n      left:-60%;\n      width: 60%;\n      height: 180%;\n      background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.55), rgba(255,255,255,0));\n      transform: rotate(18deg);\n      opacity: 0;\n      pointer-events:none;\n    }\n\n    .wo-pack:hover{\n      transform: translateY(-4px);\n      box-shadow: var(--wo-shadow2);\n      border-color: rgba(255,255,255,.22);\n      background: rgba(255,255,255,.075);\n      filter: saturate(1.05);\n    }\n    .wo-pack:hover::after{\n      opacity:.85;\n      animation: woPackShimmer 1.15s ease;\n    }\n    @keyframes woPackShimmer{ 0%{ left:-60%; } 100%{ left:140%; } }\n\n    .wo-packTop{\n      display:flex;\n      align-items:flex-start;\n      justify-content:space-between;\n      gap: 12px;\n      margin-bottom: 10px;\n    }\n\n    .wo-cap{\n      display:inline-flex;\n      align-items:center;\n      gap:8px;\n      padding: 8px 10px;\n      border-radius: 999px;\n      background: rgba(255,255,255,.08);\n      border: 1px solid rgba(255,255,255,.14);\n      color: rgba(255,255,255,.86);\n      font-weight: 900;\n      font-size: 12px;\n      letter-spacing:.2px;\n      white-space:nowrap;\n    }\n    .wo-cap i{\n      width:8px;height:8px;border-radius:999px;\n      background: linear-gradient(135deg, var(--wo-blue), var(--wo-purple));\n      display:inline-block;\n      box-shadow: 0 0 0 6px rgba(1,90,242,.14);\n    }\n\n    .wo-badge{\n      padding: 8px 10px;\n      border-radius: 999px;\n      background: linear-gradient(135deg, rgba(1,90,242,.18), rgba(161,84,208,.16));\n      border: 1px solid rgba(1,90,242,.28);\n      color: rgba(255,255,255,.92);\n      font-weight: 950;\n      font-size: 12px;\n      letter-spacing:.2px;\n      white-space:nowrap;\n    }\n\n    .wo-packName{\n      margin: 2px 0 6px;\n      font-size: 18px;\n      font-weight: 980;\n      letter-spacing: -0.35px;\n      color: rgba(255,255,255,.95);\n    }\n\n    .wo-priceRow{\n      display:flex;\n      align-items:baseline;\n      gap: 10px;\n      margin: 8px 0 12px;\n      flex-wrap:wrap;\n    }\n    .wo-price{\n      font-size: 34px;\n      font-weight: 1000;\n      letter-spacing: -0.8px;\n      line-height:1;\n      background: linear-gradient(90deg, rgba(255,255,255,.95), rgba(255,255,255,.82));\n      -webkit-background-clip:text;\n      background-clip:text;\n      color: transparent;\n    }\n    .wo-vat{\n      color: rgba(255,255,255,.68);\n      font-weight: 900;\n      font-size: 13px;\n    }\n\n    .wo-listTitle{\n      margin: 10px 0 8px;\n      font-size: 13px;\n      letter-spacing:.2px;\n      color: rgba(255,255,255,.78);\n      font-weight: 900;\n    }\n\n    .wo-list{\n      margin:0;\n      padding:0;\n      list-style:none;\n      display:grid;\n      gap: 8px;\n    }\n    .wo-li{\n      display:flex;\n      gap: 10px;\n      align-items:flex-start;\n      color: rgba(255,255,255,.74);\n      font-size: 13.5px;\n      line-height: 1.55;\n      overflow-wrap:anywhere;\n      word-break: break-word;\n    }\n    .wo-li svg{ flex:0 0 auto; margin-top:2px; opacity:.95; }\n\n    .wo-packFooter{\n      margin-top: auto;\n      padding-top: 14px;\n      display:flex;\n      align-items:center;\n      justify-content:space-between;\n      gap: 12px;\n      flex-wrap:wrap;\n    }\n\n    .wo-btnGlass{\n      position: relative;\n      background: rgba(255, 255, 255, 0.15);\n      border: 1px solid rgba(255, 255, 255, 0.30);\n      border-radius: 16px;\n      color: #fff;\n      font-size: 14.5px;\n      font-weight: 900;\n      padding: 12px 14px;\n      cursor: pointer;\n      backdrop-filter: blur(10px) saturate(180%);\n      -webkit-backdrop-filter: blur(10px) saturate(180%);\n      box-shadow: 0 10px 26px rgba(0, 0, 0, 0.25);\n      overflow: hidden;\n      transition: all 0.35s ease;\n      display:inline-flex;\n      align-items:center;\n      justify-content:space-between;\n      gap:10px;\n      text-decoration:none !important;\n      user-select:none;\n      white-space:nowrap;\n    }\n    .wo-btnGlass:hover{\n      background: rgba(255, 255, 255, 0.25);\n      box-shadow: 0 14px 34px rgba(0, 0, 0, 0.35);\n      transform: translateY(-1px) scale(1.02);\n      color:#fff;\n    }\n    .wo-btnGlass::before{\n      content:\"\";\n      position:absolute;\n      top:-50%;\n      left:-50%;\n      width:200%;\n      height:200%;\n      background: radial-gradient(circle, rgba(255,255,255,0.30) 0%, rgba(255,255,255,0) 60%);\n      transform: rotate(45deg);\n      pointer-events:none;\n      animation: woBtnShine 3s infinite linear;\n      border-radius: inherit;\n    }\n    @keyframes woBtnShine{\n      0%{ transform: translate(-100%, -100%) rotate(45deg); opacity: .30; }\n      50%{ transform: translate(100%, 100%) rotate(45deg); opacity: .60; }\n      100%{ transform: translate(-100%, -100%) rotate(45deg); opacity: .30; }\n    }\n\n    .wo-arrow{\n      width: 26px; height: 26px;\n      border-radius: 999px;\n      display:grid; place-items:center;\n      background: rgba(255,255,255,.08);\n      border: 1px solid rgba(255,255,255,.14);\n      transition: transform .22s ease;\n      flex: 0 0 auto;\n    }\n    .wo-btnGlass:hover .wo-arrow{ transform: translateX(3px); }\n    .wo-arrow svg{ width: 16px; height:16px; }\n\n    \/* RESPONSIVE *\/\n    @media(max-width: 1100px){\n      .wo-packs{ padding: 86px 0; }\n      .wo-packs__grid{ grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }\n      .wo-pack{ padding: 18px; }\n    }\n    @media(max-width: 740px){\n      .wo-packs{ padding: 72px 0; }\n      .wo-packs__sub{ font-size: 15px; }\n      .wo-packs__grid{ grid-template-columns: 1fr; gap: 14px; }\n      .wo-pack{ padding: 16px; border-radius: 22px; }\n      .wo-price{ font-size: 32px; }\n      .wo-packTop{ gap: 10px; }\n      .wo-cap, .wo-badge{ font-size: 11.5px; padding: 7px 10px; }\n      .wo-li{ font-size: 13.2px; }\n      .wo-packFooter{ padding-top: 12px; }\n      .wo-btnGlass{ width: 100%; justify-content:space-between; }\n    }\n\n    @media (prefers-reduced-motion: reduce){\n      .wo-packs::after, .wo-pack::after, .wo-btnGlass::before{ animation:none !important; }\n      .wo-pack, .wo-btnGlass{ transition:none !important; }\n    }\n\n    \/* =========================================================\n       SEO ACADEMY \u2013 BUTTON (placed in kicker row, no overlap)\n       ========================================================= *\/\n    .wo-seoAcademyBtn{\n      position:relative;\n      z-index: 6;\n\n      display:flex;\n      align-items:center;\n      gap: 12px;\n\n      padding: 11px 13px;\n      border-radius: 18px;\n      border: 1px solid rgba(255,255,255,.24);\n\n      background: rgba(255,255,255,.06);\n      backdrop-filter: blur(12px) saturate(140%);\n      -webkit-backdrop-filter: blur(12px) saturate(140%);\n\n      color: rgba(255,255,255,.96);\n      font-family: var(--wo-font);\n      cursor:pointer;\n      box-shadow: 0 16px 44px rgba(0,0,0,.45);\n\n      overflow:hidden;\n      user-select:none;\n      transition: transform .22s ease, border-color .22s ease, background .22s ease, box-shadow .22s ease;\n      animation: woSeoBtnFloat 3.6s ease-in-out infinite;\n      flex: 0 0 auto;\n    }\n    @keyframes woSeoBtnFloat{\n      0%,100%{ transform: translateY(0); }\n      50%{ transform: translateY(-4px); }\n    }\n    .wo-seoAcademyBtn::before{\n      content:\"\";\n      position:absolute;\n      inset:-2px;\n      background: conic-gradient(from 0deg,\n        rgba(1,90,242,.95),\n        rgba(161,84,208,.95),\n        rgba(34,197,94,.70),\n        rgba(1,90,242,.95)\n      );\n      filter: blur(18px);\n      opacity:.52;\n      animation: woSeoBtnSpin 6.2s linear infinite;\n      pointer-events:none;\n    }\n    @keyframes woSeoBtnSpin{ to{ transform: rotate(360deg); } }\n    .wo-seoAcademyBtn::after{\n      content:\"\";\n      position:absolute;\n      inset:1px;\n      border-radius: 17px;\n      background:\n        radial-gradient(120% 120% at 18% 8%, rgba(1,90,242,.18), transparent 58%),\n        radial-gradient(120% 120% at 85% 35%, rgba(161,84,208,.16), transparent 62%),\n        linear-gradient(180deg, rgba(7,10,18,.72), rgba(10,15,31,.62));\n      border: 1px solid rgba(255,255,255,.10);\n      pointer-events:none;\n    }\n    .wo-seoAcademyBtn > *{ position:relative; z-index:1; }\n\n    .wo-seoAcademyBtn:hover{\n      transform: translateY(-2px) scale(1.02);\n      border-color: rgba(255,255,255,.34);\n      background: rgba(255,255,255,.075);\n      box-shadow: 0 22px 66px rgba(0,0,0,.55);\n    }\n\n    .woSeoOrb{\n      width: 34px;\n      height: 34px;\n      border-radius: 999px;\n      background:\n        radial-gradient(circle at 30% 30%, rgba(255,255,255,.22), transparent 55%),\n        conic-gradient(from 0deg, rgba(1,90,242,1), rgba(161,84,208,1), rgba(34,197,94,.85), rgba(1,90,242,1));\n      box-shadow:\n        0 0 0 6px rgba(1,90,242,.16),\n        0 0 26px rgba(161,84,208,.35);\n      animation: woSeoOrbPulse 1.8s ease-in-out infinite;\n      flex: 0 0 34px;\n    }\n    @keyframes woSeoOrbPulse{\n      0%,100%{ transform: scale(1); opacity:1; }\n      50%{ transform: scale(1.14); opacity:.72; }\n    }\n\n    .woSeoBtnText{ display:flex; flex-direction:column; line-height:1.05; text-align:left; }\n    .woSeoBtnText strong{ font-size: 13.8px; font-weight: 1000; letter-spacing: -0.2px; color: rgba(255,255,255,.96); }\n    .woSeoBtnText small{ font-size: 12px; font-weight: 900; color: rgba(255,255,255,.70); }\n\n    .woSeoBtnChip{\n      margin-left: 6px;\n      padding: 8px 10px;\n      border-radius: 999px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(255,255,255,.06);\n      font-size: 12px;\n      font-weight: 950;\n      color: rgba(255,255,255,.88);\n      white-space:nowrap;\n    }\n\n    \/* \u2705 Mobile placement fix: button becomes full-width row below kicker *\/\n    @media(max-width: 740px){\n      .wo-packs__kickerRow{\n        align-items:flex-start;\n      }\n      .wo-seoAcademyBtn{\n        width: 100%;\n        justify-content:flex-start;\n        margin-top: 6px;\n      }\n      .woSeoBtnChip{ display:none; }\n    }\n\n    \/* =========================================================\n       SEO ACADEMY MODAL (centered)\n       ========================================================= *\/\n    .woSeoAcademyModal{\n      position: fixed;\n      inset: 0;\n      z-index: 2147483647;\n      display: none;\n      isolation: isolate;\n      padding: 18px;\n    }\n    .woSeoAcademyModal[aria-hidden=\"false\"]{ display:block; }\n\n    .woSeoAcademyBackdrop{\n      position: absolute;\n      inset: 0;\n      background:\n        radial-gradient(120% 120% at 28% 10%, rgba(1,90,242,.20), transparent 55%),\n        radial-gradient(120% 120% at 82% 30%, rgba(161,84,208,.18), transparent 58%),\n        rgba(0,0,0,.70);\n      backdrop-filter: blur(10px);\n      -webkit-backdrop-filter: blur(10px);\n    }\n\n    .woSeoAcademyPanel{\n      position: relative;\n      width: min(980px, 100%);\n      border-radius: 18px;\n      overflow: hidden;\n      background: linear-gradient(180deg, rgba(10,14,30,.92), rgba(7,9,20,.92));\n      border: 1px solid rgba(255,255,255,.14);\n      box-shadow: 0 30px 90px rgba(0,0,0,.65);\n      max-height: calc(100dvh - 36px);\n\n      display:flex;\n      flex-direction:column;\n\n      \/* \u2705 real center *\/\n      margin: 0 auto;\n      top: 50%;\n      transform: translateY(-50%);\n    }\n\n    .woSeoAcademyModal[aria-hidden=\"false\"] .woSeoAcademyPanel{\n      animation: woSeoAcademyPop .52s cubic-bezier(.2,.9,.25,1) both;\n    }\n    @keyframes woSeoAcademyPop{\n      0%{ opacity:0; transform: translateY(calc(-50% + 18px)) scale(.94); filter: blur(10px); }\n      55%{ opacity:1; transform: translateY(-50%) scale(1.02); filter: blur(0); }\n      100%{ opacity:1; transform: translateY(-50%) scale(1); filter: blur(0); }\n    }\n\n    @media(max-width: 740px){\n      .woSeoAcademyModal{ padding: 10px; }\n      .woSeoAcademyPanel{\n        max-height: calc(100dvh - 20px);\n      }\n    }\n\n    .woSeoAcademyHead{\n      display:flex;\n      align-items:center;\n      justify-content:space-between;\n      gap: 12px;\n      padding: 14px;\n      border-bottom: 1px solid rgba(255,255,255,.10);\n      background: linear-gradient(90deg, rgba(1,90,242,.10), rgba(161,84,208,.10));\n    }\n    .woSeoAcademyBrand{\n      display:flex;\n      align-items:center;\n      gap: 12px;\n      min-width: 0;\n    }\n    .woSeoAcademyLogo{\n      width: 36px;\n      height: 36px;\n      border-radius: 50%;\n      background:\n        radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 55%),\n        conic-gradient(from 0deg, rgba(1,90,242,1), rgba(161,84,208,1), rgba(34,197,94,.80), rgba(1,90,242,1));\n      box-shadow: 0 0 0 1px rgba(255,255,255,.12), 0 20px 50px rgba(0,0,0,.45);\n      animation: woSeoBtnSpin 4.8s linear infinite;\n      flex: 0 0 36px;\n    }\n    .woSeoAcademyBrandTxt{ min-width:0; }\n    .woSeoAcademyTitle{\n      font-weight: 1000;\n      letter-spacing: .2px;\n      color: rgba(255,255,255,.96);\n      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n    }\n    .woSeoAcademySub{\n      margin-top: 1px;\n      font-size: 12px;\n      font-weight: 900;\n      color: rgba(255,255,255,.70);\n      white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\n    }\n    .woSeoAcademyClose{\n      width: 40px;\n      height: 40px;\n      border-radius: 12px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(255,255,255,.06);\n      color: rgba(255,255,255,.96);\n      cursor:pointer;\n      flex: 0 0 auto;\n    }\n    .woSeoAcademyClose:hover{ background: rgba(255,255,255,.10); }\n\n    \/* \u2705 Progress bar + icons *\/\n    .woSeoAcademyProgress{\n      padding: 10px 14px 12px;\n      border-bottom: 1px solid rgba(255,255,255,.10);\n      background: rgba(255,255,255,.03);\n    }\n    .woSeoAcademyBar{\n      height: 10px;\n      border-radius: 999px;\n      border: 1px solid rgba(255,255,255,.12);\n      background: rgba(255,255,255,.06);\n      overflow:hidden;\n    }\n    .woSeoAcademyBar > span{\n      display:block;\n      height:100%;\n      width:0%;\n      background: linear-gradient(90deg, rgba(1,90,242,1), rgba(161,84,208,1), rgba(34,197,94,.85));\n      box-shadow: 0 0 30px rgba(1,90,242,.18);\n      transition: width .35s ease;\n    }\n\n    .woSeoSteps{\n      margin-top: 10px;\n      display:flex;\n      align-items:center;\n      gap: 8px;\n      flex-wrap:wrap;\n    }\n    .woSeoStepDot{\n      width: 34px;\n      height: 34px;\n      border-radius: 999px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(255,255,255,.05);\n      display:grid;\n      place-items:center;\n      opacity:.65;\n      transition: transform .2s ease, opacity .2s ease, border-color .2s ease, background .2s ease;\n    }\n    .woSeoStepDot svg{ width: 18px; height: 18px; opacity:.95; }\n    .woSeoStepDot.is-active{\n      opacity: 1;\n      transform: translateY(-1px);\n      border-color: rgba(255,255,255,.26);\n      background: rgba(255,255,255,.08);\n      box-shadow: 0 18px 50px rgba(0,0,0,.35);\n    }\n    .woSeoStepDot.is-done{\n      opacity: .85;\n      border-color: rgba(1,90,242,.30);\n      background: linear-gradient(135deg, rgba(1,90,242,.10), rgba(161,84,208,.10));\n    }\n\n    .woSeoAcademyMeta{\n      display:flex;\n      justify-content:space-between;\n      align-items:center;\n      gap: 10px;\n      margin-top: 10px;\n      font-size: 12px;\n      color: rgba(255,255,255,.72);\n      flex-wrap:wrap;\n    }\n    .woSeoAcademyMeta b{ color: rgba(255,255,255,.90); font-weight: 1000; }\n\n    .woSeoAcademyBody{\n      flex: 1 1 auto;\n      min-height: 0;\n      overflow-y: auto;\n      -webkit-overflow-scrolling: touch;\n      padding: 14px;\n    }\n\n    \/* Book container *\/\n    .woSeoBook{\n      border-radius: 16px;\n      border: 1px solid rgba(255,255,255,.12);\n      background: rgba(255,255,255,.04);\n      overflow:hidden;\n      position:relative;\n      backdrop-filter: blur(12px);\n      -webkit-backdrop-filter: blur(12px);\n      min-height: 0;\n    }\n    .woSeoBook::before{\n      content:\"\";\n      position:absolute; inset:-60px;\n      background:\n        radial-gradient(60% 45% at 15% 0%, rgba(1,90,242,.14), transparent 60%),\n        radial-gradient(55% 40% at 90% 55%, rgba(161,84,208,.12), transparent 60%),\n        radial-gradient(45% 35% at 50% 90%, rgba(34,197,94,.08), transparent 60%);\n      filter: blur(12px);\n      opacity:.95;\n      pointer-events:none;\n      animation: woSeoGlow 3.2s ease-in-out infinite;\n    }\n    @keyframes woSeoGlow{ 0%,100%{ transform: translateY(0) scale(1);} 50%{ transform: translateY(-6px) scale(1.03);} }\n\n    .woSeoPage{\n      position:relative;\n      z-index:1;\n      padding: 16px;\n      transform-style: preserve-3d;\n    }\n\n    \/* \u2705 More realistic page turn (shadow + slight perspective) *\/\n    .woSeoPageFlip{\n      animation: woSeoFlipReal .52s cubic-bezier(.2,.9,.25,1) both;\n    }\n    @keyframes woSeoFlipReal{\n      0%{\n        opacity:0;\n        transform: perspective(1200px) rotateY(-18deg) translateX(-10px) translateY(10px);\n        filter: blur(10px);\n      }\n      55%{\n        opacity:1;\n        transform: perspective(1200px) rotateY(6deg) translateX(0) translateY(0);\n        filter: blur(0);\n      }\n      100%{\n        opacity:1;\n        transform: perspective(1200px) rotateY(0deg) translateX(0) translateY(0);\n      }\n    }\n    .woSeoPageShadow{\n      position:absolute;\n      inset:0;\n      pointer-events:none;\n      opacity:0;\n      background: linear-gradient(90deg, rgba(0,0,0,.35), transparent 42%, rgba(0,0,0,.12));\n    }\n    .woSeoPageFlip + .woSeoPageShadow{\n      animation: woSeoShadow .52s ease both;\n    }\n    @keyframes woSeoShadow{\n      0%{ opacity:.35; }\n      100%{ opacity:0; }\n    }\n\n    .woSeoKicker{\n      display:inline-flex;\n      align-items:center;\n      gap: 10px;\n      padding: 8px 10px;\n      border-radius: 999px;\n      background: rgba(255,255,255,.06);\n      border: 1px solid rgba(255,255,255,.12);\n      font-weight: 1000;\n      letter-spacing: .6px;\n      font-size: 12px;\n      color: rgba(255,255,255,.90);\n      margin-bottom: 12px;\n      user-select:none;\n    }\n    .woSeoKicker i{\n      width: 9px; height: 9px; border-radius: 999px;\n      background: linear-gradient(135deg, var(--wo-blue), var(--wo-purple));\n      box-shadow: 0 0 0 6px rgba(1,90,242,.14);\n    }\n\n    .woSeoH{\n      margin: 0 0 8px;\n      font-size: clamp(20px, 2.2vw, 28px);\n      font-weight: 1000;\n      letter-spacing: -0.4px;\n      color: rgba(255,255,255,.96);\n    }\n    .woSeoP{\n      margin: 0 0 14px;\n      font-size: 14px;\n      line-height: 1.72;\n      color: rgba(255,255,255,.72);\n      max-width: 80ch;\n    }\n\n    \/* icon cards *\/\n    .woSeoCards{\n      display:grid;\n      grid-template-columns: repeat(3, minmax(0,1fr));\n      gap: 12px;\n      margin-top: 12px;\n    }\n    .woSeoCard{\n      border-radius: 16px;\n      border: 1px solid rgba(255,255,255,.12);\n      background: rgba(255,255,255,.05);\n      padding: 12px;\n      overflow:hidden;\n    }\n    .woSeoCardTop{\n      display:flex;\n      align-items:center;\n      gap: 10px;\n      margin-bottom: 8px;\n    }\n    .woSeoIco{\n      width: 38px;\n      height: 38px;\n      border-radius: 14px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(255,255,255,.06);\n      display:grid;\n      place-items:center;\n      box-shadow: 0 14px 40px rgba(0,0,0,.30);\n    }\n    .woSeoIco svg{ width: 20px; height: 20px; }\n    .woSeoCardTitle{\n      font-weight: 1000;\n      font-size: 13px;\n      color: rgba(255,255,255,.90);\n      letter-spacing: -0.1px;\n    }\n    .woSeoCardTxt{\n      font-size: 13px;\n      line-height: 1.55;\n      color: rgba(255,255,255,.72);\n    }\n\n    @media(max-width: 860px){\n      .woSeoCards{ grid-template-columns: 1fr; }\n    }\n\n    .woSeoNav{\n      display:flex;\n      align-items:center;\n      justify-content:space-between;\n      gap: 10px;\n      margin-top: 14px;\n      padding-top: 12px;\n      border-top: 1px solid rgba(255,255,255,.10);\n      flex-wrap:wrap;\n    }\n    .woSeoBtn{\n      display:inline-flex;\n      align-items:center;\n      justify-content:center;\n      gap: 10px;\n      padding: 10px 12px;\n      border-radius: 14px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(255,255,255,.06);\n      color: rgba(255,255,255,.96);\n      cursor:pointer;\n      font-weight: 950;\n      font-size: 13px;\n      user-select:none;\n      transition: background .2s ease, transform .2s ease, border-color .2s ease;\n    }\n    .woSeoBtn:disabled{ opacity:.45; cursor:not-allowed; }\n    .woSeoBtn:hover{ background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.22); transform: translateY(-1px); }\n\n    .woSeoBtnPrimary{\n      position:relative;\n      overflow:hidden;\n      background: linear-gradient(90deg, rgba(1,90,242,.16), rgba(161,84,208,.16), rgba(34,197,94,.10));\n    }\n    .woSeoBtnPrimary::before{\n      content:\"\";\n      position:absolute; inset:-2px;\n      background: conic-gradient(from 0deg, rgba(1,90,242,1), rgba(161,84,208,1), rgba(34,197,94,.85), rgba(1,90,242,1));\n      filter: blur(12px);\n      opacity:.42;\n      animation: woSeoBtnSpin 2.9s linear infinite;\n      pointer-events:none;\n    }\n    .woSeoBtnPrimary > *{ position:relative; z-index:1; }\n\n    \/* prevent bg scroll *\/\n    .woSeoAcademyPanel{ max-height: calc(100dvh - 36px); }\n    .woSeoAcademyBody{ overflow-y: auto; }\n  <\/style>\n  <div class=\"wo-packs__wrap\">\n\n    <!-- \u2705 Kicker row: left kicker + right button -->\n    <div class=\"wo-packs__kickerRow\">\n      <div class=\"wo-packs__kicker\"><span class=\"wo-packs__dot\"><\/span> Packs SEO<\/div>\n\n      <button class=\"wo-seoAcademyBtn\" type=\"button\" data-wo-seo-open aria-haspopup=\"dialog\" aria-controls=\"woSeoAcademyModal\">\n        <span class=\"woSeoOrb\" aria-hidden=\"true\"><\/span>\n        <span class=\"woSeoBtnText\">\n          <strong>Qu\u2019est-ce que le SEO ?<\/strong>\n          <small>Qu\u2019est-ce que cela rapporte ?<\/small>\n        <\/span>\n        <span class=\"woSeoBtnChip\" aria-hidden=\"true\">Mini Acad\u00e9mie<\/span>\n      <\/button>\n    <\/div>\n\n    <h2 class=\"wo-packs__title\">Service <span>SEO<\/span><\/h2>\n    <p class=\"wo-packs__sub\">Une approche claire, des r\u00e9sultats mesurables et une optimisation continue \u2014 sans prise de t\u00eate.<\/p>\n\n    <div class=\"wo-packs__grid\">\n\n      <!-- Basic SEO -->\n      <article class=\"wo-pack\" aria-label=\"Pack SEO Basique\">\n        <div class=\"wo-packTop\">\n          <span class=\"wo-cap\"><i><\/i> 5\u201310 mots-cl\u00e9s<\/span>\n          <span class=\"wo-badge\">SEO Basique<\/span>\n        <\/div>\n        <h3 class=\"wo-packName\">SEO Basique<\/h3>\n        <div class=\"wo-priceRow\"><div class=\"wo-price\">\u20ac175<\/div><div class=\"wo-vat\">\/ mois \/ +TVA<\/div><\/div>\n        <div class=\"wo-listTitle\">Pack inclus :<\/div>\n        <ul class=\"wo-list\">\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Analyse SEO de votre site web<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Recherche de mots-cl\u00e9s de base (5\u201310 mots-cl\u00e9s)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Optimisation on-page (titres, m\u00e9ta-descriptions, structure d\u2019URL)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Installation & suivi de Google Search Console<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Rapport r\u00e9capitulatif mensuel<\/li>\n        <\/ul>\n        <div class=\"wo-packFooter\">\n          <a class=\"wo-btnGlass wo-scrollToOfferte\" href=\"https:\/\/webontwerpers.be\/seo-service\/#offerte\" data-target=\"#offerte\">\n            Acheter le pack\n            <span class=\"wo-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 18l6-6-6-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- Pro SEO -->\n      <article class=\"wo-pack\" aria-label=\"Pack SEO Pro\">\n        <div class=\"wo-packTop\">\n          <span class=\"wo-cap\"><i><\/i> 20+ mots-cl\u00e9s<\/span>\n          <span class=\"wo-badge\">SEO Pro<\/span>\n        <\/div>\n        <h3 class=\"wo-packName\">SEO Pro<\/h3>\n        <div class=\"wo-priceRow\"><div class=\"wo-price\">\u20ac225<\/div><div class=\"wo-vat\">\/ mois \/ +TVA<\/div><\/div>\n        <div class=\"wo-listTitle\">Pack inclus :<\/div>\n        <ul class=\"wo-list\">\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Recherche de mots-cl\u00e9s approfondie (20+ mots-cl\u00e9s)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Optimisation SEO on-page (vitesse, compatibilit\u00e9 mobile, contenu)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Linkbuilding via des sites fiables<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Optimisation du Profil d\u2019\u00e9tablissement Google (Google Maps)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Conseils SEO pour les articles de blog et le contenu<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Rapport de performance mensuel d\u00e9taill\u00e9<\/li>\n        <\/ul>\n        <div class=\"wo-packFooter\">\n          <a class=\"wo-btnGlass wo-scrollToOfferte\" href=\"https:\/\/webontwerpers.be\/seo-service\/#offerte\" data-target=\"#offerte\">\n            Acheter le pack\n            <span class=\"wo-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 18l6-6-6-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n      <!-- Premium SEO -->\n      <article class=\"wo-pack\" aria-label=\"Pack SEO Premium\">\n        <div class=\"wo-packTop\">\n          <span class=\"wo-cap\"><i><\/i> 50+ mots-cl\u00e9s<\/span>\n          <span class=\"wo-badge\">SEO Premium<\/span>\n        <\/div>\n        <h3 class=\"wo-packName\">SEO Premium<\/h3>\n        <div class=\"wo-priceRow\"><div class=\"wo-price\">\u20ac400<\/div><div class=\"wo-vat\">\/ mois \/ +TVA<\/div><\/div>\n        <div class=\"wo-listTitle\">Pack inclus :<\/div>\n        <ul class=\"wo-list\">\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Recherche de mots-cl\u00e9s approfondie (50+ mots-cl\u00e9s)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Analyse concurrentielle et plan strat\u00e9gique<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>SEO technique (sitemap, liens cass\u00e9s, vitesse de chargement)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Campagne de linkbuilding avec des sites \u00e0 forte autorit\u00e9<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Suggestions r\u00e9guli\u00e8res de contenu SEO (blogs \/ fiches produit)<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Reporting via Google Analytics + Search Console<\/li>\n          <li class=\"wo-li\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>Mise \u00e0 jour bimensuelle & discussion strat\u00e9gique<\/li>\n        <\/ul>\n        <div class=\"wo-packFooter\">\n          <a class=\"wo-btnGlass wo-scrollToOfferte\" href=\"https:\/\/webontwerpers.be\/seo-service\/#offerte\" data-target=\"#offerte\">\n            Acheter le pack\n            <span class=\"wo-arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 18l6-6-6-6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n          <\/a>\n        <\/div>\n      <\/article>\n\n    <\/div>\n  <\/div>\n\n  <!-- \u2705 SEO Academy Modal -->\n  <div class=\"woSeoAcademyModal\" id=\"woSeoAcademyModal\" role=\"dialog\" aria-modal=\"true\" aria-hidden=\"true\">\n    <div class=\"woSeoAcademyBackdrop\" data-wo-seo-close><\/div>\n\n    <div class=\"woSeoAcademyPanel\" role=\"document\" aria-label=\"Mini Acad\u00e9mie SEO\">\n      <div class=\"woSeoAcademyHead\">\n        <div class=\"woSeoAcademyBrand\">\n          <div class=\"woSeoAcademyLogo\" aria-hidden=\"true\"><\/div>\n          <div class=\"woSeoAcademyBrandTxt\">\n            <div class=\"woSeoAcademyTitle\">Mini Acad\u00e9mie SEO \u2022 Webontwerpers<\/div>\n            <div class=\"woSeoAcademySub\">\u00c9tape par \u00e9tape, clair et convaincant<\/div>\n          <\/div>\n        <\/div>\n        <button class=\"woSeoAcademyClose\" type=\"button\" aria-label=\"Fermer\" data-wo-seo-close>\u2715<\/button>\n      <\/div>\n\n      <div class=\"woSeoAcademyProgress\">\n        <div class=\"woSeoAcademyBar\"><span id=\"woSeoAcademyBarFill\"><\/span><\/div>\n\n        <div class=\"woSeoSteps\" id=\"woSeoSteps\"><\/div>\n\n        <div class=\"woSeoAcademyMeta\">\n          <span id=\"woSeoAcademyStep\">\u00c9tape 1\/9<\/span>\n          <span id=\"woSeoAcademyLabel\"><b>Bienvenue<\/b> \u2022 mini acad\u00e9mie SEO<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"woSeoAcademyBody\">\n        <div class=\"woSeoBook\">\n          <div class=\"woSeoPage\" id=\"woSeoAcademyPage\"><\/div>\n          <div class=\"woSeoPageShadow\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function(){\n      var targetId = \"offerte\";\n      var selector = '.wo-scrollToOfferte';\n\n      function findHeaderOffset(){\n        var candidates = [\n          document.querySelector('header.elementor-sticky--effects'),\n          document.querySelector('.elementor-location-header'),\n          document.querySelector('header'),\n          document.querySelector('.sticky, .is-sticky')\n        ].filter(Boolean);\n\n        var maxH = 0;\n        candidates.forEach(function(el){\n          var rect = el.getBoundingClientRect();\n          var h = rect.height || el.offsetHeight || 0;\n          if(h > maxH && h < 260) maxH = h;\n        });\n        return (maxH || 0) + 18;\n      }\n\n      function smoothScrollToId(id){\n        var el = document.getElementById(id) || document.querySelector('#' + CSS.escape(id));\n        if(!el) {\n          window.location.href = \"https:\/\/webontwerpers.be\/seo-service\/#\" + id;\n          return;\n        }\n\n        var offset = findHeaderOffset();\n        var y = el.getBoundingClientRect().top + window.pageYOffset - offset;\n\n        window.scrollTo({ top: Math.max(0, y), behavior: \"smooth\" });\n\n        if(history && history.replaceState){\n          history.replaceState(null, \"\", \"#\" + id);\n        }\n      }\n\n      document.addEventListener('click', function(e){\n        var a = e.target.closest(selector);\n        if(!a) return;\n\n        e.preventDefault();\n        smoothScrollToId(targetId);\n      });\n\n      window.addEventListener('load', function(){\n        var hash = (location.hash || \"\").replace(\"#\",\"\");\n        if(hash && (hash === targetId)){\n          setTimeout(function(){ smoothScrollToId(targetId); }, 80);\n        }\n      });\n\n      \/* =========================================================\n         SEO ACADEMY POPUP LOGIC (NL)\n         ========================================================= *\/\n      var wrap = document.querySelector('#wo-packs');\n      if(!wrap) return;\n\n      var openBtn = wrap.querySelector('[data-wo-seo-open]');\n      var modal = wrap.querySelector('#woSeoAcademyModal');\n      var closeEls = wrap.querySelectorAll('[data-wo-seo-close]');\n      var page = wrap.querySelector('#woSeoAcademyPage');\n      var barFill = wrap.querySelector('#woSeoAcademyBarFill');\n      var stepEl = wrap.querySelector('#woSeoAcademyStep');\n      var labelEl = wrap.querySelector('#woSeoAcademyLabel');\n      var stepsRow = wrap.querySelector('#woSeoSteps');\n\n      var scrollY = 0;\n\n      function ico(type){\n        \/\/ tiny inline SVG set\n        if(type === 'start') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 2l3 7 7 3-7 3-3 7-3-7-7-3 7-3 3-7z\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"\/><\/svg>';\n        if(type === 'search') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15z\" stroke=\"currentColor\" stroke-width=\"1.7\"\/><path d=\"M16.5 16.5L21 21\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\"\/><\/svg>';\n        if(type === 'trend') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M4 16l6-6 4 4 6-8\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M20 6v6h-6\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n        if(type === 'google') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 21c5 0 9-4 9-9 0-.5 0-1-.1-1.5H12v3.2h5.2c-.5 2.2-2.4 3.8-5.2 3.8-3 0-5.5-2.5-5.5-5.5S9 6 12 6c1.4 0 2.6.5 3.6 1.3l2.3-2.2C16.3 3.6 14.3 3 12 3 7 3 3 7 3 12s4 9 9 9z\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linejoin=\"round\"\/><\/svg>';\n        if(type === 'gear') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 15.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7z\" stroke=\"currentColor\" stroke-width=\"1.7\"\/><path d=\"M19.4 15a7.9 7.9 0 0 0 .1-6l-2.1.4a6 6 0 0 0-1.1-1.1l.4-2.1a7.9 7.9 0 0 0-6-.1l.4 2.1a6 6 0 0 0-1.1 1.1L7 9a7.9 7.9 0 0 0-.1 6l2.1-.4a6 6 0 0 0 1.1 1.1l-.4 2.1a7.9 7.9 0 0 0 6 .1l-.4-2.1a6 6 0 0 0 1.1-1.1l2.1.4z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linejoin=\"round\"\/><\/svg>';\n        if(type === 'link') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M10 13a5 5 0 0 1 0-7l1.5-1.5a5 5 0 0 1 7 7L17 13\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\"\/><path d=\"M14 11a5 5 0 0 1 0 7L12.5 19.5a5 5 0 0 1-7-7L7 11\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\"\/><\/svg>';\n        if(type === 'report') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M7 3h10v18H7V3z\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><path d=\"M9 7h6M9 11h6M9 15h4\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\"\/><\/svg>';\n        if(type === 'cta') return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M12 2l3 6 7 1-5 5 1 7-6-3-6 3 1-7-5-5 7-1 3-6z\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg>';\n        return '<svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M20 7l-9 10-4-4\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n      }\n\n      var steps = [\n        {\n          key:\"WELKOM\",\n          icon:\"start\",\n          h:\"Welkom bij de SEO Mini Academy\",\n          p:\"In 2\u20133 minuten leer je wat SEO is, waarom het belangrijk is en hoe het jouw bedrijf helpt om meer klanten te krijgen via Google.\",\n          cards:[\n            {t:\"Helder uitgelegd\", d:\"Geen jargon \u2014 gewoon duidelijke taal.\", i:\"report\"},\n            {t:\"Praktisch\", d:\"Je snapt meteen wat je nodig hebt.\", i:\"gear\"},\n            {t:\"Actiegericht\", d:\"Aan het einde weet je welk pakket past.\", i:\"cta\"}\n          ],\n          primary:{text:\"SEO leren\", action:\"next\"},\n          secondary:null\n        },\n        {\n          key:\"1) BASIS\",\n          icon:\"google\",\n          h:\"Wat is SEO?\",\n          p:\"SEO (Search Engine Optimization) is het optimaliseren van je website zodat je hoger scoort in Google en meer relevante bezoekers krijgt.\",\n          cards:[\n            {t:\"Meer zichtbaarheid\", d:\"Je wordt gevonden wanneer klanten zoeken.\", i:\"search\"},\n            {t:\"Meer vertrouwen\", d:\"Hoge posities voelen betrouwbaarder.\", i:\"cta\"},\n            {t:\"Meer leads\", d:\"Bezoekers veranderen vaker in klanten.\", i:\"trend\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"2) WAAROM\",\n          icon:\"trend\",\n          h:\"Wat levert SEO op?\",\n          p:\"SEO bouwt aan duurzame groei. Je hoeft niet telkens opnieuw te betalen voor elke klik, zoals bij advertenties.\",\n          cards:[\n            {t:\"Duurzaam kanaal\", d:\"Blijft werken, ook als je even pauzeert.\", i:\"report\"},\n            {t:\"Lagere kosten\", d:\"Op termijn vaak goedkoper dan Ads.\", i:\"trend\"},\n            {t:\"Constante instroom\", d:\"Meer aanvragen en gesprekken.\", i:\"cta\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"3) GOOGLE\",\n          icon:\"google\",\n          h:\"Hoe bepaalt Google de ranking?\",\n          p:\"Google kijkt naar relevantie, kwaliteit en vertrouwen. Dat is een combinatie van content, techniek en autoriteit.\",\n          cards:[\n            {t:\"Relevantie\", d:\"Past je pagina bij de zoekopdracht?\", i:\"search\"},\n            {t:\"Techniek\", d:\"Snel, mobielvriendelijk, foutloos.\", i:\"gear\"},\n            {t:\"Vertrouwen\", d:\"Sterke links & merk-signalen.\", i:\"link\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"4) ZOEKWOORDEN\",\n          icon:\"search\",\n          h:\"Zoekwoorden: de basis van de juiste bezoekers\",\n          p:\"Zoekwoorden zijn wat jouw klanten intypen in Google. De juiste woorden brengen de juiste klanten.\",\n          cards:[\n            {t:\"Koopintentie\", d:\"We kiezen woorden met echte intentie.\", i:\"cta\"},\n            {t:\"Structuur\", d:\"Pagina\u2019s worden logisch opgebouwd.\", i:\"report\"},\n            {t:\"Meer conversie\", d:\"Meer aanvragen met minder ruis.\", i:\"trend\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"5) ON-PAGE\",\n          icon:\"report\",\n          h:\"On-page SEO: optimalisatie op je pagina\u2019s\",\n          p:\"Titels, meta descriptions, URL\u2019s, headings en inhoud zorgen voor een betere klikratio \u00e9n betere ranking.\",\n          cards:[\n            {t:\"Titel & meta\", d:\"Meer clicks vanuit Google.\", i:\"report\"},\n            {t:\"Content structuur\", d:\"Duidelijk voor Google & bezoeker.\", i:\"gear\"},\n            {t:\"CTA\u2019s\", d:\"Meer contactaanvragen.\", i:\"cta\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"6) TECHNIEK\",\n          icon:\"gear\",\n          h:\"Technische SEO: de fundering\",\n          p:\"Als je website traag is of fouten heeft, verlies je posities. Technische SEO maakt je site sneller en beter indexeerbaar.\",\n          cards:[\n            {t:\"Snelheid\", d:\"Core Web Vitals & laadtijd.\", i:\"trend\"},\n            {t:\"Mobiel\", d:\"Perfect op smartphones.\", i:\"google\"},\n            {t:\"Indexatie\", d:\"Sitemap, errors, broken links.\", i:\"gear\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"7) LINKS\",\n          icon:\"link\",\n          h:\"Linkbuilding: vertrouwen & autoriteit\",\n          p:\"Links van betrouwbare websites geven Google een sterk signaal: jouw site is waardevol en relevant.\",\n          cards:[\n            {t:\"Autoriteit\", d:\"Sterkere positie in competitieve niches.\", i:\"trend\"},\n            {t:\"Kwaliteit\", d:\"Betrouwbare bronnen, geen spam.\", i:\"link\"},\n            {t:\"Stabiliteit\", d:\"Posities blijven langer staan.\", i:\"report\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"8) METEN\",\n          icon:\"report\",\n          h:\"Resultaten meten: SEO is data-gedreven\",\n          p:\"Via Search Console en Analytics zien we groei in zichtbaarheid, bezoekers en conversies \u2014 en sturen we bij waar nodig.\",\n          cards:[\n            {t:\"Zichtbaarheid\", d:\"Impressies & posities stijgen.\", i:\"trend\"},\n            {t:\"Bezoekers\", d:\"Meer relevante traffic.\", i:\"search\"},\n            {t:\"Leads\", d:\"Formulieren, calls, aanvragen.\", i:\"cta\"}\n          ],\n          primary:{text:\"Volgende\", action:\"next\"},\n          secondary:{text:\"Terug\", action:\"prev\"}\n        },\n        {\n          key:\"9) PAKKET\",\n          icon:\"cta\",\n          h:\"Klaar om te groeien met SEO?\",\n          p:\"Kies een pakket dat past bij je doelen. We kunnen klein starten (Basic), versnellen (Pro) of maximaal concurreren (Premium).\",\n          cards:[\n            {t:\"Basic SEO\", d:\"Sterke basis + snelle optimalisaties.\", i:\"report\"},\n            {t:\"Pro SEO\", d:\"Groei, content + linkbuilding.\", i:\"trend\"},\n            {t:\"Premium SEO\", d:\"Maximale impact in competitive niches.\", i:\"cta\"}\n          ],\n          primary:{text:\"Ga naar #offerte\", action:\"offerte\"},\n          secondary:{text:\"Opnieuw starten\", action:\"restart\"}\n        }\n      ];\n\n      var idx = 0;\n\n      function esc(s){\n        return String(s).replace(\/[&<>\"']\/g, function(m){\n          return ({ \"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#039;\" }[m]);\n        });\n      }\n\n      function lockScroll(){\n        scrollY = window.scrollY || document.documentElement.scrollTop || 0;\n        document.body.style.position = 'fixed';\n        document.body.style.top = '-' + scrollY + 'px';\n        document.body.style.left = '0';\n        document.body.style.right = '0';\n        document.body.style.width = '100%';\n      }\n      function unlockScroll(){\n        var top = document.body.style.top;\n        document.body.style.position = '';\n        document.body.style.top = '';\n        document.body.style.left = '';\n        document.body.style.right = '';\n        document.body.style.width = '';\n        window.scrollTo(0, top ? Math.abs(parseInt(top, 10)) : scrollY);\n      }\n\n      function buildDots(){\n        if(!stepsRow) return;\n        var html = '';\n        for(var i=0;i<steps.length;i++){\n          html += '<div class=\"woSeoStepDot\" data-step-dot=\"'+i+'\" aria-hidden=\"true\">'+ico(steps[i].icon)+'<\/div>';\n        }\n        stepsRow.innerHTML = html;\n      }\n\n      function paintDots(){\n        if(!stepsRow) return;\n        var dots = stepsRow.querySelectorAll('.woSeoStepDot');\n        dots.forEach(function(d){\n          d.classList.remove('is-active','is-done');\n          var n = parseInt(d.getAttribute('data-step-dot') || '0', 10);\n          if(n < idx) d.classList.add('is-done');\n          if(n === idx) d.classList.add('is-active');\n        });\n      }\n\n      function render(withAnim){\n        var s = steps[idx];\n        var total = steps.length;\n        var pct = Math.round(((idx+1)\/total)*100);\n\n        if(barFill) barFill.style.width = pct + '%';\n        if(stepEl) stepEl.textContent = 'Stap ' + (idx+1) + '\/' + total;\n        if(labelEl) labelEl.innerHTML = '<b>' + esc(s.key) + '<\/b> \u2022 SEO mini academy';\n\n        var cardsHtml = (s.cards || []).map(function(c){\n          return ''\n            + '<div class=\"woSeoCard\">'\n              + '<div class=\"woSeoCardTop\">'\n                + '<div class=\"woSeoIco\" aria-hidden=\"true\">'+ico(c.i)+'<\/div>'\n                + '<div class=\"woSeoCardTitle\">'+esc(c.t)+'<\/div>'\n              + '<\/div>'\n              + '<div class=\"woSeoCardTxt\">'+esc(c.d)+'<\/div>'\n            + '<\/div>';\n        }).join('');\n\n        var secondaryHtml = '';\n        if(s.secondary){\n          secondaryHtml = '<button class=\"woSeoBtn\" type=\"button\" data-wo-seo-act=\"'+esc(s.secondary.action)+'\">'+esc(s.secondary.text)+'<\/button>';\n        }\n\n        page.classList.remove('woSeoPageFlip');\n        if(withAnim){\n          void page.offsetWidth;\n          page.classList.add('woSeoPageFlip');\n        }\n\n        page.innerHTML = ''\n          + '<div class=\"woSeoKicker\"><i><\/i> SEO MINI ACADEMY<\/div>'\n          + '<h3 class=\"woSeoH\">'+esc(s.h)+'<\/h3>'\n          + '<p class=\"woSeoP\">'+esc(s.p)+'<\/p>'\n          + '<div class=\"woSeoCards\">'+cardsHtml+'<\/div>'\n          + '<div class=\"woSeoNav\">'\n            + (secondaryHtml || '<span><\/span>')\n            + '<button class=\"woSeoBtn woSeoBtnPrimary\" type=\"button\" data-wo-seo-act=\"'+esc(s.primary.action)+'\">'\n              + '<span>'+esc(s.primary.text)+'<\/span>'\n              + '<span aria-hidden=\"true\">\u2192<\/span>'\n            + '<\/button>'\n          + '<\/div>';\n\n        paintDots();\n      }\n\n      function openModal(){\n        modal.setAttribute('aria-hidden','false');\n        lockScroll();\n        idx = 0;\n        buildDots();\n        render(true);\n      }\n      function closeModal(){\n        modal.setAttribute('aria-hidden','true');\n        unlockScroll();\n      }\n\n      function act(action){\n        if(action === 'next'){\n          if(idx < steps.length-1){ idx++; render(true); }\n          return;\n        }\n        if(action === 'prev'){\n          if(idx > 0){ idx--; render(true); }\n          return;\n        }\n        if(action === 'restart'){\n          idx = 0; render(true);\n          return;\n        }\n        if(action === 'offerte'){\n          closeModal();\n          setTimeout(function(){ smoothScrollToId(targetId); }, 80);\n          return;\n        }\n      }\n\n      if(openBtn){\n        openBtn.addEventListener('click', openModal);\n      }\n      closeEls.forEach(function(el){\n        el.addEventListener('click', closeModal);\n      });\n\n      document.addEventListener('keydown', function(e){\n        if(modal.getAttribute('aria-hidden') === 'false' && e.key === 'Escape'){\n          closeModal();\n        }\n      });\n\n      modal.addEventListener('click', function(e){\n        var btn = e.target.closest('[data-wo-seo-act]');\n        if(btn){\n          e.preventDefault();\n          act(btn.getAttribute('data-wo-seo-act'));\n          return;\n        }\n        \/\/ allow clicking dots to jump\n        var dot = e.target.closest('[data-step-dot]');\n        if(dot){\n          var n = parseInt(dot.getAttribute('data-step-dot')||'0',10);\n          if(!isNaN(n)){\n            idx = Math.max(0, Math.min(steps.length-1, n));\n            render(true);\n          }\n        }\n      });\n\n      \/\/ prevent background scroll via wheel on backdrop\n      var backdrop = modal.querySelector('.woSeoAcademyBackdrop');\n      if(backdrop){\n        backdrop.addEventListener('wheel', function(e){ e.preventDefault(); }, {passive:false});\n        backdrop.addEventListener('touchmove', function(e){ e.preventDefault(); }, {passive:false});\n      }\n    })();\n    \/* =========================================================\n   \u2705 HARD FORCE (MOBILE ONLY): hide .wo-qs .wo-wa .woh-header\n   while Mini Academy modal is open \u2014 even if theme re-renders\n   ========================================================= *\/\n(function(){\n  function isMobile(){ return window.matchMedia('(max-width: 768px)').matches; }\n\n  var modal = document.getElementById('woSeoAcademyModal');\n  if(!modal) return;\n\n  var targets = ['.wo-qs', '.wo-wa', '.woh-header', '#woCtasRoot'];\n\n  var cache = new Map(); \/\/ original inline styles\n\n  function qAll(sel){\n    try{ return Array.prototype.slice.call(document.querySelectorAll(sel)); }\n    catch(e){ return []; }\n  }\n\n  function saveAndHide(el){\n    if(!cache.has(el)){\n      cache.set(el, el.getAttribute('style') || '');\n    }\n    \/\/ \u2705 Force: display none + no pointer events + low z\n    el.style.setProperty('display','none','important');\n    el.style.setProperty('pointer-events','none','important');\n    el.style.setProperty('z-index','0','important');\n    el.style.setProperty('transform','none','important');\n    el.style.setProperty('filter','none','important');\n  }\n\n  function restore(el){\n    if(!cache.has(el)) return;\n    var old = cache.get(el);\n    if(old) el.setAttribute('style', old);\n    else el.removeAttribute('style');\n    cache.delete(el);\n  }\n\n  function modalOpen(){\n    return modal.getAttribute('aria-hidden') === 'false';\n  }\n\n  function apply(){\n    if(!isMobile()) return;\n    if(!modalOpen()) return;\n\n    \/\/ Ensure modal is top\n    modal.style.setProperty('z-index','2147483647','important');\n    modal.style.setProperty('position','fixed','important');\n    modal.style.setProperty('inset','0','important');\n\n    targets.forEach(function(sel){\n      qAll(sel).forEach(saveAndHide);\n    });\n  }\n\n  function unapply(){\n    \/\/ restore cached\n    cache.forEach(function(_, el){ restore(el); });\n  }\n\n  \/\/ Hook open\/close by watching aria-hidden changes\n  var obs = new MutationObserver(function(){\n    if(!isMobile()) { unapply(); return; }\n    if(modalOpen()){\n      apply();\n    }else{\n      unapply();\n    }\n  });\n  obs.observe(modal, { attributes:true, attributeFilter:['aria-hidden','style','class'] });\n\n  \/\/ Also: keep enforcing in case theme re-injects buttons while open\n  var bodyObs = new MutationObserver(function(){\n    if(!isMobile()) return;\n    if(modalOpen()) apply();\n  });\n  bodyObs.observe(document.body, { childList:true, subtree:true });\n\n  \/\/ Extra: apply immediately on clicks that open modal\n  document.addEventListener('click', function(e){\n    if(!isMobile()) return;\n    var openBtn = e.target.closest('[data-wo-seo-open]');\n    var closeBtn = e.target.closest('[data-wo-seo-close]');\n    if(openBtn){\n      setTimeout(apply, 0);\n      setTimeout(apply, 80);\n      setTimeout(apply, 240);\n    }\n    if(closeBtn){\n      setTimeout(unapply, 0);\n      setTimeout(unapply, 80);\n    }\n  }, true);\n\n  \/\/ On resize\/orientation change\n  window.addEventListener('resize', function(){\n    if(!isMobile()) unapply();\n    else if(modalOpen()) apply();\n  });\n\n})();\n\n  <\/script>\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a78c51c e-con-full e-flex e-con e-parent\" data-id=\"a78c51c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;shape_divider_top&quot;:&quot;triangle&quot;}\">\n\t\t\t\t<div class=\"elementor-shape elementor-shape-top\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" d=\"M500,98.9L0,6.1V0h1000v6.1L500,98.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3b29c71 elementor-widget elementor-widget-html\" data-id=\"3b29c71\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Webontwerpers AI (DARK) - SEO Service Recommender (same system) -->\n<div id=\"woAiRecommenderSeo\" class=\"woai woai--dark\">\n  <button class=\"woai-cta\" type=\"button\" aria-haspopup=\"dialog\" aria-controls=\"woaiModalSeo\">\n    <span class=\"woai-cta__glow\" aria-hidden=\"true\"><\/span>\n    <span class=\"woai-cta__icon\" aria-hidden=\"true\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\">\n        <path d=\"M12 2l2.2 4.7L19 8l-3.5 3.4.9 5-4.4-2.4-4.4 2.4.9-5L5 8l4.8-1.3L12 2z\" stroke=\"currentColor\" stroke-width=\"1.5\"\/>\n        <path d=\"M7.5 21.5c2.8-1.5 6.2-1.5 9 0\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/>\n      <\/svg>\n    <\/span>\n    <span class=\"woai-cta__text\">\n      <span class=\"woai-cta__title\">AI-assistent analyseert jouw SEO<\/span>\n      <span class=\"woai-cta__sub\">en adviseert het beste SEO-pakket<\/span>\n    <\/span>\n    <span class=\"woai-cta__chip\" aria-hidden=\"true\">Start analyse<\/span>\n  <\/button>\n\n  <div class=\"woai-modal\" id=\"woaiModalSeo\" role=\"dialog\" aria-modal=\"true\" aria-hidden=\"true\">\n    <div class=\"woai-backdrop\" data-woai-close><\/div>\n\n    <div class=\"woai-panel\" role=\"document\" aria-label=\"AI SEO analyse\">\n      <canvas class=\"woai-particles\" aria-hidden=\"true\"><\/canvas>\n\n      <div class=\"woai-head\">\n        <div class=\"woai-brand\">\n          <div class=\"woai-orb\" aria-hidden=\"true\"><\/div>\n          <div class=\"woai-brand__txt\">\n            <div class=\"woai-brand__title\">Webontwerpers AI<\/div>\n            <div class=\"woai-brand__sub\">SEO \u2022 Slimme analyse<\/div>\n          <\/div>\n        <\/div>\n        <button class=\"woai-x\" type=\"button\" aria-label=\"Sluiten\" data-woai-close>\u2715<\/button>\n      <\/div>\n\n      <div class=\"woai-progress\">\n        <div class=\"woai-progress__bar\"><span class=\"woai-progress__fill\"><\/span><\/div>\n        <div class=\"woai-progress__meta\">\n          <span class=\"woai-stepLabel\">Stap 1\/?<\/span>\n          <span class=\"woai-status\" aria-live=\"polite\">Analyse klaar om te starten<\/span>\n        <\/div>\n      <\/div>\n\n      <div class=\"woai-body\">\n        <div class=\"woai-wizard\">\n          <div class=\"woai-scanline\" aria-hidden=\"true\"><\/div>\n\n          <div class=\"woai-qwrap\">\n            <div class=\"woai-qtop\">\n              <div class=\"woai-qbadge\">\n                <span class=\"woai-qbadge__dot\" aria-hidden=\"true\"><\/span>\n                <span class=\"woai-qbadge__txt\">AI VRAAG<\/span>\n              <\/div>\n              <button class=\"woai-manualToggle\" type=\"button\" aria-expanded=\"false\" title=\"Manueel invullen\">\n                <span aria-hidden=\"true\">\u270e<\/span> Manueel\n              <\/button>\n            <\/div>\n\n            <h3 class=\"woai-question\">\u2014<\/h3>\n            <p class=\"woai-help\">\u2014<\/p>\n\n            <div class=\"woai-options\" role=\"list\"><\/div>\n\n            <div class=\"woai-manual\" hidden>\n              <label class=\"woai-label\" for=\"woaiManualSeo\">Manuele toelichting (optioneel)<\/label>\n              <textarea id=\"woaiManualSeo\" class=\"woai-textarea\" rows=\"3\" placeholder=\"Bijv. \u2018We willen bovenaan staan in Antwerpen voor webdesign + meer leads\u2026\u2019\"><\/textarea>\n            <\/div>\n\n            <div class=\"woai-nav\">\n              <button class=\"woai-btn woai-btn--ghost\" type=\"button\" data-woai-prev disabled>\u2190 Vorige<\/button>\n              <div class=\"woai-nav__right\">\n                <button class=\"woai-btn woai-btn--ghost\" type=\"button\" data-woai-reset>Reset<\/button>\n                <button class=\"woai-btn woai-btn--primary\" type=\"button\" data-woai-next disabled>Volgende \u2192<\/button>\n              <\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"woai-result\" hidden>\n            <div class=\"woai-result__hero\">\n              <div class=\"woai-result__aiMark\" aria-hidden=\"true\">\n                <div class=\"woai-ring\"><\/div>\n                <div class=\"woai-core\"><\/div>\n                <div class=\"woai-ring woai-ring--2\"><\/div>\n              <\/div>\n              <div class=\"woai-result__txt\">\n                <div class=\"woai-result__kicker\">AI ADVIES<\/div>\n                <h3 class=\"woai-result__title\">Jouw beste match: <span class=\"woai-result__pack\">\u2014<\/span><\/h3>\n                <p class=\"woai-result__why\">\u2014<\/p>\n              <\/div>\n              <div class=\"woai-result__badge\" aria-hidden=\"true\">\n                <div class=\"woai-result__badgeTop\">MATCH<\/div>\n                <div class=\"woai-result__badgeVal\"><span class=\"woai-badgePct\">\u2014<\/span>%<\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"woai-packCard woai-packCard--main\">\n              <div class=\"woai-packGlow\" aria-hidden=\"true\"><\/div>\n              <div class=\"woai-packCard__top\">\n                <div class=\"woai-packCard__name\">\u2014<\/div>\n                <div class=\"woai-packCard__price\">\u2014<\/div>\n              <\/div>\n              <div class=\"woai-packCard__meta\">\u2014<\/div>\n              <ul class=\"woai-packCard__list\"><\/ul>\n\n              <div class=\"woai-packCard__actions\">\n                <a class=\"woai-btn woai-btn--primary woai-packLink\" href=\"#\" target=\"_self\" rel=\"noopener\" data-woai-scroll=\"1\">Bekijk pakket<\/a>\n                <a class=\"woai-btn woai-btn--ghost woai-offerteLink\" href=\"#\" target=\"_self\" rel=\"noopener\">Offerte aanvragen<\/a>\n              <\/div>\n            <\/div>\n\n            <div class=\"woai-alts\">\n              <div class=\"woai-alts__title\">Alternatieven<\/div>\n              <div class=\"woai-alts__grid\" id=\"woaiAltGridSeo\"><\/div>\n            <\/div>\n\n            <div class=\"woai-result__footer\">\n              <button class=\"woai-btn woai-btn--ghost\" type=\"button\" data-woai-back>\u2190 Terug naar vragen<\/button>\n              <button class=\"woai-btn woai-btn--ghost\" type=\"button\" data-woai-close>Sluiten<\/button>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"woai-console\" aria-hidden=\"true\">\n          <div class=\"woai-console__card\">\n            <div class=\"woai-console__title\">Realtime analyse<\/div>\n            <div class=\"woai-console__lines\" id=\"woaiConsoleLinesSeo\"><\/div>\n            <div class=\"woai-console__footer\"><span class=\"woai-pulseDot\"><\/span> Neural scoring actief<\/div>\n          <\/div>\n          <div class=\"woai-console__mini\">\n            <div class=\"woai-mini__label\">Confidence<\/div>\n            <div class=\"woai-mini__bar\"><span class=\"woai-mini__fill\"><\/span><\/div>\n            <div class=\"woai-mini__val\">\u2014<\/div>\n          <\/div>\n          <div class=\"woai-console__hint\">Tip: \u201cManueel\u201d kan altijd extra nuance toevoegen.<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  \/* ===== BASE (same dark system) ===== *\/\n  .woai{\n    --accent1:#00E5FF; --accent2:#B700FF; --accent3:#00FF85;\n    --txt:#EEF3FF; --muted:rgba(238,243,255,.70); --line:rgba(238,243,255,.14);\n    --panelBg: linear-gradient(180deg, rgba(10,14,30,.92), rgba(7,9,20,.92));\n    --shadow: 0 30px 90px rgba(0,0,0,.60);\n    font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;\n    color:var(--txt);\n  }\n  .woai, .woai *{ box-sizing:border-box; }\n  .woai a{ text-decoration:none; color:inherit; }\n\n  .woai-cta{\n    width:100%;\n    display:flex; align-items:center; gap:14px;\n    padding:14px 16px;\n    border-radius:16px;\n    border:1px solid var(--line);\n    position:relative; overflow:hidden;\n    cursor:pointer;\n    box-shadow: 0 18px 60px rgba(0,0,0,.35);\n    background: rgba(12,16,34,.70);\n    backdrop-filter: blur(12px);\n  }\n  .woai-cta:before{\n    content:\"\"; position:absolute; inset:-2px;\n    background: conic-gradient(from 0deg, var(--accent1), var(--accent2), var(--accent3), var(--accent1));\n    filter: blur(12px); opacity:.55;\n    animation: woaiSpin 3.6s linear infinite;\n  }\n  .woai-cta:after{\n    content:\"\"; position:absolute; inset:2px;\n    background:\n      radial-gradient(120% 120% at 20% 0%, rgba(0,229,255,.18), transparent 60%),\n      radial-gradient(120% 120% at 90% 60%, rgba(183,0,255,.16), transparent 55%),\n      linear-gradient(180deg, rgba(12,16,34,.92), rgba(8,10,22,.92));\n    border-radius:14px;\n    border:1px solid rgba(255,255,255,.10);\n  }\n  .woai-cta > *{ position:relative; z-index:1; }\n  .woai-cta__glow{ position:absolute; inset:0; z-index:0; opacity:.95;\n    background:\n      radial-gradient(60% 70% at 20% 0%, rgba(0,229,255,.22), transparent 60%),\n      radial-gradient(70% 70% at 85% 30%, rgba(183,0,255,.18), transparent 60%);\n  }\n  .woai-cta__icon{\n    width:42px; height:42px; flex:0 0 42px;\n    border-radius:14px;\n    display:grid; place-items:center;\n    background: rgba(255,255,255,.06);\n    border:1px solid rgba(255,255,255,.12);\n    box-shadow: 0 12px 30px rgba(0,0,0,.35);\n    color: var(--txt);\n  }\n  .woai-cta__icon svg{ width:22px; height:22px; color: rgba(238,243,255,.92); }\n  .woai-cta__text{ flex:1; min-width:0; }\n  .woai-cta__title{ display:block; font-weight:950; letter-spacing:.2px; color: var(--txt); }\n  .woai-cta__sub{ display:block; margin-top:2px; color:var(--muted); font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n  .woai-cta__chip{\n    padding:8px 10px; border-radius:999px;\n    border:1px solid rgba(255,255,255,.14);\n    background: linear-gradient(90deg, rgba(0,229,255,.12), rgba(183,0,255,.12));\n    font-weight:950; font-size:12px; color: var(--txt);\n  }\n  .woai-cta:hover{ transform: translateY(-1px); transition: transform .15s ease; }\n  .woai-cta:active{ transform: translateY(0px) scale(.99); }\n\n  @media (max-width: 520px){\n    .woai-cta{ padding:10px 12px; gap:10px; border-radius:14px; }\n    .woai-cta__icon{ width:36px; height:36px; flex:0 0 36px; border-radius:12px; }\n    .woai-cta__title{ font-size:14px; }\n    .woai-cta__sub{ font-size:12px; }\n    .woai-cta__chip{ display:none; }\n  }\n  @media (max-width: 380px){\n    .woai-cta__sub{ display:none; }\n  }\n\n  .woai-modal{ position:fixed; inset:0; z-index:999999; display:none; }\n  .woai-modal[aria-hidden=\"false\"]{ display:block; }\n  .woai-backdrop{\n    position:absolute; inset:0;\n    background:\n      radial-gradient(120% 120% at 30% 10%, rgba(0,229,255,.16), transparent 52%),\n      radial-gradient(120% 120% at 80% 30%, rgba(183,0,255,.14), transparent 58%),\n      rgba(0,0,0,.66);\n    backdrop-filter: blur(10px);\n  }\n  .woai-panel{\n    position:relative;\n    width:min(980px, calc(100% - 24px));\n    margin: 12px auto;\n    border-radius: 18px;\n    overflow:hidden;\n    background: var(--panelBg);\n    border:1px solid rgba(255,255,255,.14);\n    box-shadow: var(--shadow);\n    max-height: calc(100dvh - 24px);\n    transform-origin: 50% 18%;\n  }\n  .woai-modal[aria-hidden=\"false\"] .woai-panel{\n    animation: woaiPopIn .50s cubic-bezier(.2,.9,.25,1) both;\n  }\n  @keyframes woaiPopIn{\n    0%{ opacity:0; transform: translateY(18px) scale(.94); filter: blur(10px); }\n    55%{ opacity:1; transform: translateY(0) scale(1.02); filter: blur(0); }\n    100%{ opacity:1; transform: translateY(0) scale(1); filter: blur(0); }\n  }\n  .woai-particles{ position:absolute; inset:0; width:100%; height:100%; opacity:.45; pointer-events:none; }\n\n  .woai-head{\n    display:flex; align-items:center; justify-content:space-between;\n    padding:14px 14px 10px 14px;\n    border-bottom:1px solid rgba(255,255,255,.10);\n    background: linear-gradient(90deg, rgba(0,229,255,.08), rgba(183,0,255,.08));\n  }\n  .woai-brand{ display:flex; align-items:center; gap:12px; }\n  .woai-orb{\n    width:36px; height:36px; border-radius:50%;\n    background:\n      radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), transparent 55%),\n      conic-gradient(from 0deg, var(--accent1), var(--accent2), var(--accent3), var(--accent1));\n    box-shadow: 0 0 0 1px rgba(255,255,255,.12), 0 20px 50px rgba(0,0,0,.45);\n    animation: woaiSpin 4.8s linear infinite;\n  }\n  .woai-brand__title{ font-weight:990; letter-spacing:.3px; color:var(--txt); }\n  .woai-brand__sub{ font-size:12px; margin-top:1px; color:var(--muted); }\n  .woai-x{\n    width:40px; height:40px; border-radius:12px;\n    border:1px solid rgba(255,255,255,.14);\n    background: rgba(255,255,255,.06);\n    color: var(--txt);\n    cursor:pointer;\n  }\n  .woai-x:hover{ background: rgba(255,255,255,.10); }\n\n  .woai-progress{ padding:10px 14px 12px; border-bottom:1px solid rgba(255,255,255,.10); background: rgba(255,255,255,.03); }\n  .woai-progress__bar{ height:10px; border-radius:999px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); overflow:hidden; }\n  .woai-progress__fill{ display:block; height:100%; width:0%;\n    background: linear-gradient(90deg, var(--accent1), var(--accent2), var(--accent3));\n    box-shadow: 0 0 30px rgba(0,229,255,.22);\n    transition: width .35s ease;\n  }\n  .woai-progress__meta{ display:flex; justify-content:space-between; gap:10px; margin-top:8px; font-size:12px; color:var(--muted); }\n\n  .woai-body{\n    display:grid;\n    grid-template-columns: 1.25fr .75fr;\n    gap:14px;\n    padding:14px;\n    overflow:auto;\n    max-height: calc(100dvh - 140px);\n  }\n  .woai-wizard{\n    border-radius:16px;\n    border:1px solid rgba(255,255,255,.12);\n    background: rgba(255,255,255,.04);\n    overflow:hidden;\n    position:relative;\n    backdrop-filter: blur(12px);\n  }\n  .woai-scanline{\n    position:absolute; left:-30%; top:0; width:60%; height:100%;\n    background: linear-gradient(90deg, transparent, rgba(0,229,255,.16), transparent);\n    transform: skewX(-15deg);\n    animation: woaiScan 3.8s ease-in-out infinite;\n    pointer-events:none;\n  }\n  @keyframes woaiScan{\n    0%{ transform: translateX(-40%) skewX(-15deg); opacity:0; }\n    15%{ opacity:.9; }\n    50%{ opacity:.25; }\n    100%{ transform: translateX(220%) skewX(-15deg); opacity:0; }\n  }\n\n  .woai-qwrap{ padding:16px; }\n  .woai-qwrap.woai-transition{ animation: woaiQSwap .36s cubic-bezier(.2,.9,.25,1) both; }\n  @keyframes woaiQSwap{\n    0%{ opacity:0; transform: translateY(10px); filter: blur(8px); }\n    60%{ opacity:1; transform: translateY(0); filter: blur(0); }\n    100%{ opacity:1; transform: translateY(0); }\n  }\n\n  .woai-qtop{ display:flex; align-items:center; justify-content:space-between; gap:10px; }\n  .woai-qbadge{ display:flex; align-items:center; gap:8px; padding:7px 10px; border-radius:999px; border:1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); font-size:12px; font-weight:950; letter-spacing:.5px; color:var(--txt); }\n  .woai-qbadge__dot{ width:8px; height:8px; border-radius:50%; background: linear-gradient(90deg, var(--accent1), var(--accent2)); box-shadow: 0 0 12px rgba(0,229,255,.25); animation: woaiPulse 1.5s ease-in-out infinite; }\n  @keyframes woaiPulse{ 0%,100%{ transform:scale(1); opacity:1 } 50%{ transform:scale(1.25); opacity:.65 } }\n\n  .woai-manualToggle{ display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:12px; border:1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); cursor:pointer; font-weight:900; font-size:12px; color:var(--txt); }\n  .woai-manualToggle:hover{ background: rgba(255,255,255,.10); }\n\n  .woai-question{ margin:12px 0 6px; font-size:18px; font-weight:990; letter-spacing:.2px; color:var(--txt); }\n  .woai-help{ margin:0 0 12px; font-size:13px; color:var(--muted); }\n\n  .woai-options{ display:grid; gap:10px; }\n  .woai-opt{\n    display:flex; gap:10px; align-items:flex-start;\n    padding:12px;\n    border-radius:14px;\n    border:1px solid rgba(255,255,255,.12);\n    background: rgba(255,255,255,.06);\n    cursor:pointer;\n    transition: transform .12s ease, background .12s ease, border-color .12s ease;\n    color: var(--txt);\n  }\n  .woai-opt:hover{ transform: translateY(-1px); border-color: rgba(0,229,255,.35); background: rgba(0,229,255,.08); }\n  .woai-opt[aria-selected=\"true\"]{ border-color: rgba(183,0,255,.35); background: linear-gradient(90deg, rgba(0,229,255,.10), rgba(183,0,255,.10)); box-shadow: 0 0 0 1px rgba(183,0,255,.10) inset; }\n  .woai-opt__ic{ width:34px; height:34px; border-radius:12px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); flex:0 0 34px; }\n  .woai-opt__t{ font-weight:950; color:var(--txt); }\n  .woai-opt__d{ margin-top:2px; font-size:12px; color:var(--muted); }\n\n  .woai-manual{ margin-top:10px; }\n  .woai-label{ display:block; margin:10px 0 6px; font-weight:900; font-size:12px; color:var(--txt); }\n  .woai-textarea{ width:100%; border-radius:14px; border:1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); color: var(--txt); padding:10px 12px; outline:none; }\n  .woai-textarea:focus{ border-color: rgba(0,229,255,.45); box-shadow: 0 0 0 3px rgba(0,229,255,.12); }\n\n  .woai-nav{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:14px; padding-top:12px; border-top:1px solid rgba(255,255,255,.10); }\n  .woai-nav__right{ display:flex; gap:10px; align-items:center; }\n  .woai-btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; border-radius:14px; padding:10px 12px; border:1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); color: var(--txt); cursor:pointer; font-weight:950; font-size:13px; user-select:none; }\n  .woai-btn:disabled{ opacity:.45; cursor:not-allowed; }\n  .woai-btn--ghost:hover{ background: rgba(255,255,255,.10); }\n  .woai-btn--primary{ border:1px solid rgba(255,255,255,.14); background: linear-gradient(90deg, rgba(0,229,255,.14), rgba(183,0,255,.14), rgba(0,255,133,.10)); position:relative; overflow:hidden; }\n  .woai-btn--primary:before{ content:\"\"; position:absolute; inset:-2px; background: conic-gradient(from 0deg, var(--accent1), var(--accent2), var(--accent3), var(--accent1)); filter: blur(12px); opacity:.45; animation: woaiSpin 2.9s linear infinite; }\n  .woai-btn--primary > *{ position:relative; z-index:1; }\n\n  .woai-result{ padding:16px; }\n  .woai-result__hero{ display:flex; gap:14px; align-items:center; padding:14px; border-radius:16px; border:1px solid rgba(255,255,255,.12); background: linear-gradient(90deg, rgba(0,229,255,.10), rgba(183,0,255,.10)); }\n  .woai-result__aiMark{ width:76px; height:76px; position:relative; flex:0 0 76px; }\n  .woai-ring{ position:absolute; inset:0; border-radius:50%; border:1px solid rgba(255,255,255,.12); background: conic-gradient(from 0deg, rgba(0,229,255,0), rgba(0,229,255,.35), rgba(183,0,255,.35), rgba(0,255,133,.30), rgba(0,229,255,0)); animation: woaiSpin 2.6s linear infinite; }\n  .woai-ring--2{ inset:10px; opacity:.75; animation-duration:3.6s; }\n  .woai-core{ position:absolute; inset:22px; border-radius:50%; background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.18), rgba(0,229,255,.14), rgba(183,0,255,.12), transparent 65%); box-shadow: 0 0 30px rgba(0,229,255,.20); }\n\n  .woai-result__kicker{ font-weight:950; font-size:12px; letter-spacing:.9px; color: rgba(238,243,255,.85); }\n  .woai-result__title{ margin:4px 0 6px; font-size:18px; font-weight:990; color:var(--txt); }\n  .woai-result__why{ margin:0; font-size:13px; color:var(--muted); }\n\n  .woai-result__badge{ margin-left:auto; padding:10px 12px; border-radius:16px; border:1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); text-align:right; min-width:110px; }\n  .woai-result__badgeTop{ font-weight:990; letter-spacing:.8px; font-size:11px; color: rgba(238,243,255,.72); }\n  .woai-result__badgeVal{ font-weight:990; font-size:22px; line-height:1.1; background: linear-gradient(90deg, var(--accent1), var(--accent2), var(--accent3)); -webkit-background-clip:text; background-clip:text; color: transparent; }\n\n  .woai-packCard{ margin-top:12px; padding:16px; border-radius:18px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.05); position:relative; overflow:hidden; backdrop-filter: blur(12px); }\n  .woai-packGlow{ position:absolute; inset:-60px; background:\n      radial-gradient(60% 45% at 15% 0%, rgba(0,229,255,.16), transparent 60%),\n      radial-gradient(55% 40% at 90% 55%, rgba(183,0,255,.14), transparent 60%),\n      radial-gradient(45% 35% at 50% 90%, rgba(0,255,133,.10), transparent 60%);\n    filter: blur(10px); opacity:.95; pointer-events:none; animation: woaiGlow 3.2s ease-in-out infinite;\n  }\n  @keyframes woaiGlow{ 0%,100%{ transform: scale(1) translateY(0); opacity:.85 } 50%{ transform: scale(1.04) translateY(-6px); opacity:1 } }\n\n  .woai-packCard__top{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; flex-wrap:wrap; }\n  .woai-packCard__name{ font-weight:990; font-size:18px; color:var(--txt); }\n  .woai-packCard__price{ font-weight:990; font-size:16px; color:var(--txt); }\n  .woai-packCard__meta{ margin-top:6px; font-size:13px; color:var(--muted); }\n  .woai-packCard__list{ margin:12px 0 0; padding:0; list-style:none; display:grid; gap:9px; }\n  .woai-packCard__list li{ display:flex; gap:10px; align-items:flex-start; font-size:13px; color: rgba(238,243,255,.86); }\n  .woai-packCard__list li:before{ content:\"\"; width:10px; height:10px; border-radius:50%; margin-top:4px; flex:0 0 10px; background: linear-gradient(90deg, var(--accent1), var(--accent2)); box-shadow: 0 0 14px rgba(0,229,255,.22); }\n  .woai-packCard__actions{ margin-top:14px; display:flex; gap:10px; flex-wrap:wrap; }\n\n  .woai-alts{ margin-top:12px; padding:14px; border-radius:18px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); }\n  .woai-alts__title{ font-weight:950; font-size:12px; letter-spacing:.6px; margin-bottom:10px; color: rgba(238,243,255,.85); }\n  .woai-alts__grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }\n  .woai-alt{ border-radius:16px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); padding:12px; }\n  .woai-alt__t{ font-weight:950; font-size:13px; color:var(--txt); }\n  .woai-alt__m{ margin-top:4px; font-size:12px; color:var(--muted); }\n  .woai-alt__s{ margin-top:8px; font-weight:990; background: linear-gradient(90deg, var(--accent1), var(--accent2)); -webkit-background-clip:text; background-clip:text; color: transparent; }\n\n  .woai-result__footer{ margin-top:12px; display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; }\n\n  .woai-console{ display:flex; flex-direction:column; gap:12px; }\n  .woai-console__card{ border-radius:16px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); padding:14px; }\n  .woai-console__title{ font-weight:990; margin-bottom:10px; color:var(--txt); }\n  .woai-console__lines{ display:grid; gap:8px; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\"; font-size:12px; color: rgba(238,243,255,.86); }\n  .woai-line{ display:flex; gap:8px; align-items:center; }\n  .woai-line b{ color: rgba(0,229,255,.95); }\n  .woai-console__footer{ margin-top:10px; display:flex; align-items:center; gap:8px; font-size:12px; color:var(--muted); }\n  .woai-pulseDot{ width:8px; height:8px; border-radius:50%; background: rgba(0,255,133,.9); box-shadow: 0 0 12px rgba(0,255,133,.22); animation: woaiPulse 1.2s ease-in-out infinite; }\n\n  .woai-console__mini{ border-radius:16px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04); padding:12px 14px; }\n  .woai-mini__label{ font-size:12px; font-weight:950; letter-spacing:.4px; color:var(--txt); }\n  .woai-mini__bar{ margin-top:8px; height:10px; border-radius:999px; border:1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); overflow:hidden; }\n  .woai-mini__fill{ display:block; height:100%; width:0%; background: linear-gradient(90deg, var(--accent1), var(--accent2), var(--accent3)); transition: width .45s ease; }\n  .woai-mini__val{ margin-top:8px; font-weight:990; color:var(--txt); }\n\n  .woai-console__hint{ font-size:12px; padding:10px 12px; border-radius:16px; border:1px dashed rgba(255,255,255,.18); background: rgba(255,255,255,.03); color:var(--muted); }\n\n  @media (max-width: 860px){\n    .woai-body{ grid-template-columns:1fr; }\n    .woai-console{ display:none; }\n    .woai-alts__grid{ grid-template-columns:1fr; }\n  }\n  @media (prefers-reduced-motion: reduce){\n    .woai-cta:before,.woai-orb,.woai-scanline,.woai-ring,.woai-packGlow{ animation:none !important; }\n    .woai-modal[aria-hidden=\"false\"] .woai-panel,\n    .woai-qwrap.woai-transition{ animation:none !important; }\n  }\n  @keyframes woaiSpin{ to{ transform: rotate(360deg); } }\n\n  \/* Keep mobile z-index force *\/\n  @media (max-width: 860px){\n    .woai-modal{\n      position: fixed !important;\n      inset: 0 !important;\n      z-index: 2147483647 !important;\n      isolation: isolate !important;\n      transform: translateZ(0) !important;\n    }\n    .woai-backdrop{\n      position: fixed !important;\n      inset: 0 !important;\n      z-index: 0 !important;\n    }\n    .woai-panel{\n      position: relative !important;\n      z-index: 1 !important;\n      transform: translateZ(0) !important;\n    }\n  }\n\n  \/* =========================\n     MOBILE POPUP OVERFLOW FIX\n     (requested: add the patch)\n     ========================= *\/\n  @media (max-width: 860px){\n    .woai-panel,\n    .woai-body,\n    .woai-wizard,\n    .woai-qwrap,\n    .woai-result,\n    .woai-options,\n    .woai-packCard,\n    .woai-alts,\n    .woai-alts__grid{\n      overflow-x: hidden !important;\n    }\n    .woai-cta__text,\n    .woai-brand__txt,\n    .woai-result__txt,\n    .woai-packCard__top,\n    .woai-result__hero,\n    .woai-nav,\n    .woai-nav__right{\n      min-width: 0 !important;\n    }\n    .woai-cta__title,\n    .woai-cta__sub,\n    .woai-brand__title,\n    .woai-brand__sub,\n    .woai-question,\n    .woai-help,\n    .woai-opt__t,\n    .woai-opt__d,\n    .woai-result__title,\n    .woai-result__why,\n    .woai-packCard__name,\n    .woai-packCard__meta,\n    .woai-alt__t,\n    .woai-alt__m{\n      overflow-wrap: anywhere !important;\n      word-break: break-word !important;\n    }\n    .woai-packCard__actions{\n      display: grid !important;\n      grid-template-columns: 1fr !important;\n      gap: 10px !important;\n    }\n    .woai-packCard__actions .woai-btn{\n      width: 100% !important;\n    }\n    .woai-result__hero{\n      flex-wrap: wrap !important;\n    }\n    .woai-result__badge{\n      margin-left: 0 !important;\n      width: 100% !important;\n      text-align: left !important;\n      min-width: 0 !important;\n    }\n    .woai-panel{\n      width: calc(100% - 12px) !important;\n      margin: 6px auto !important;\n    }\n  }\n<\/style>\n\n<script>\n(function(){\n  const root = document.getElementById('woAiRecommenderSeo');\n  if(!root) return;\n\n  const modal = root.querySelector('#woaiModalSeo');\n  const panel = root.querySelector('.woai-panel');\n  const openBtn = root.querySelector('.woai-cta');\n  const closeEls = root.querySelectorAll('[data-woai-close]');\n  const prevBtn = root.querySelector('[data-woai-prev]');\n  const nextBtn = root.querySelector('[data-woai-next]');\n  const resetBtn = root.querySelector('[data-woai-reset]');\n  const backBtn = root.querySelector('[data-woai-back]');\n  const manualToggle = root.querySelector('.woai-manualToggle');\n  const manualWrap = root.querySelector('.woai-manual');\n  const manualText = root.querySelector('#woaiManualSeo');\n\n  const qWrap = root.querySelector('.woai-qwrap');\n  const resultWrap = root.querySelector('.woai-result');\n\n  const qEl = root.querySelector('.woai-question');\n  const helpEl = root.querySelector('.woai-help');\n  const optionsEl = root.querySelector('.woai-options');\n\n  const stepLabel = root.querySelector('.woai-stepLabel');\n  const statusEl = root.querySelector('.woai-status');\n  const fillEl = root.querySelector('.woai-progress__fill');\n\n  const consoleLines = root.querySelector('#woaiConsoleLinesSeo');\n  const confFill = root.querySelector('.woai-mini__fill');\n  const confVal = root.querySelector('.woai-mini__val');\n  const badgePct = root.querySelector('.woai-badgePct');\n\n  const resultPack = root.querySelector('.woai-result__pack');\n  const resultWhy = root.querySelector('.woai-result__why');\n  const packName = root.querySelector('.woai-packCard__name');\n  const packPrice = root.querySelector('.woai-packCard__price');\n  const packMeta = root.querySelector('.woai-packCard__meta');\n  const packList = root.querySelector('.woai-packCard__list');\n  const packLink = root.querySelector('.woai-packLink');\n  const offerteLink = root.querySelector('.woai-offerteLink');\n  const altGrid = root.querySelector('#woaiAltGridSeo');\n\n  const LINKS = {\n    pakketAnchor: \"https:\/\/webontwerpers.be\/seo-service\/#offerte\",\n    offertePage: \"https:\/\/webontwerpers.be\/offerte\/\"\n  };\n\n  const PACKAGES = {\n    basic: {\n      key:\"basic\",\n      title:\"Basic SEO\",\n      badge:\"5\u201310 zoekwoorden\",\n      price:\"\u20ac175 \/ maand \/ +BTW\",\n      bullets:[\n        \"SEO-analyse van uw website\",\n        \"Basis zoekwoordenonderzoek (5\u201310 zoekwoorden)\",\n        \"On-page optimalisatie (titels, meta descriptions, URL-structuur)\",\n        \"Installatie & opvolging van Google Search Console\",\n        \"Maandelijks overzichtsrapport\"\n      ]\n    },\n    pro: {\n      key:\"pro\",\n      title:\"Pro SEO\",\n      badge:\"20+ zoekwoorden\",\n      price:\"\u20ac225 \/ maand \/ +BTW\",\n      bullets:[\n        \"Uitgebreid zoekwoordenonderzoek (20+ zoekwoorden)\",\n        \"On-page SEO optimalisatie (snelheid, mobielvriendelijkheid, inhoud)\",\n        \"Linkbuilding via betrouwbare websites\",\n        \"Optimalisatie van Google Bedrijfsprofiel (Google Maps)\",\n        \"SEO-advies voor blogartikelen en content\",\n        \"Maandelijks gedetailleerd prestatierapport\"\n      ]\n    },\n    premium: {\n      key:\"premium\",\n      title:\"Premium SEO\",\n      badge:\"50+ zoekwoorden\",\n      price:\"\u20ac400 \/ maand \/ +BTW\",\n      bullets:[\n        \"Diepgaand zoekwoordenonderzoek (50+ zoekwoorden)\",\n        \"Concurrentieanalyse en strategieplan\",\n        \"Technische SEO (sitemap, broken links, laadsnelheid)\",\n        \"Linkbuildingcampagne met websites met hoge autoriteit\",\n        \"Regelmatige SEO-content suggesties (blogs \/ productteksten)\",\n        \"Rapportage via Google Analytics + Search Console\",\n        \"Tweewekelijkse update & strategiebespreking\"\n      ]\n    }\n  };\n\n  const QB = {\n    goal:{\n      id:\"goal\",\n      title:\"Wat is je belangrijkste SEO-doel?\",\n      help:\"Je doel bepaalt hoeveel zoekwoorden en optimalisatie nodig is.\",\n      options:[\n        { t:\"Lokaal beter gevonden worden\", d:\"Meer zichtbaarheid in jouw regio.\", ic:\"\ud83d\udccd\", score:{ basic:8, pro:10, premium:6 }, flags:{ path:\"local\" } },\n        { t:\"Meer leads \/ aanvragen\", d:\"Conversiegerichte SEO.\", ic:\"\ud83e\uddf2\", score:{ basic:6, pro:10, premium:8 }, flags:{ path:\"leads\" } },\n        { t:\"Content & blog groei\", d:\"Structurele groei via content.\", ic:\"\ud83d\udcdd\", score:{ basic:4, pro:10, premium:12 }, flags:{ path:\"content\" } },\n        { t:\"Sterke concurrentie\", d:\"Je wil bovenaan in een moeilijke markt.\", ic:\"\u2694\ufe0f\", score:{ basic:1, pro:8, premium:14 }, flags:{ path:\"competition\" } }\n      ]\n    },\n    keywords:{\n      id:\"keywords\",\n      title:\"Hoeveel zoekwoorden wil je targeten?\",\n      help:\"Dit is de kern van je SEO-pakket.\",\n      options:[\n        { t:\"5\u201310 zoekwoorden\", d:\"Basis focus.\", ic:\"\ud83d\udd39\", score:{ basic:14, pro:2, premium:0 } },\n        { t:\"20+ zoekwoorden\", d:\"Brede groei.\", ic:\"\ud83d\udd37\", score:{ basic:0, pro:14, premium:6 } },\n        { t:\"50+ zoekwoorden\", d:\"Maximale dekking.\", ic:\"\ud83d\uddc2\ufe0f\", score:{ basic:-2, pro:6, premium:16 } }\n      ]\n    },\n    site_state:{\n      id:\"site_state\",\n      title:\"Hoe staat je website er nu voor?\",\n      help:\"Technische staat be\u00efnvloedt de benodigde SEO-inzet.\",\n      options:[\n        { t:\"Nieuw of recent\", d:\"Basis optimalisaties zijn genoeg.\", ic:\"\u2728\", score:{ basic:10, pro:6, premium:2 } },\n        { t:\"Ok\u00e9, maar kan beter\", d:\"Snelheid, mobiel en content verbeteren.\", ic:\"\ud83d\udd27\", score:{ basic:4, pro:12, premium:8 } },\n        { t:\"Technische issues\", d:\"Broken links, snelheid, structuurproblemen.\", ic:\"\ud83e\udde0\", score:{ basic:0, pro:8, premium:14 }, flags:{ techHeavy:true } }\n      ]\n    },\n    content_need:{\n      id:\"content_need\",\n      title:\"Heb je hulp nodig met content (blogs\/teksten)?\",\n      help:\"Meer content = meer groei, maar ook meer strategie.\",\n      options:[\n        { t:\"Nee, ik regel content zelf\", d:\"Alleen SEO begeleiding.\", ic:\"\u2705\", score:{ basic:10, pro:10, premium:6 } },\n        { t:\"Ja, ik wil content-advies\", d:\"Blog topics + SEO advies.\", ic:\"\ud83d\udcdd\", score:{ basic:3, pro:12, premium:12 }, flags:{ contentHelp:true } }\n      ]\n    },\n    gmb:{\n      id:\"gmb\",\n      title:\"Is Google Bedrijfsprofiel (Maps) belangrijk?\",\n      help:\"Voor lokale SEO is dit een grote factor.\",\n      options:[\n        { t:\"Ja, heel belangrijk\", d:\"Optimalisatie Maps \/ lokaal.\", ic:\"\ud83d\uddfa\ufe0f\", score:{ basic:6, pro:12, premium:10 }, flags:{ localSignal:true } },\n        { t:\"Niet echt\", d:\"Focus op organische zoekresultaten.\", ic:\"\ud83d\udd0e\", score:{ basic:10, pro:10, premium:8 } }\n      ]\n    },\n    reporting:{\n      id:\"reporting\",\n      title:\"Hoe vaak wil je updates\/overleg?\",\n      help:\"Meer overleg past bij zwaardere trajecten.\",\n      options:[\n        { t:\"Maandelijks is genoeg\", d:\"Standaard rapportage.\", ic:\"\ud83d\udcca\", score:{ basic:12, pro:10, premium:6 } },\n        { t:\"Tweewekelijks + strategie\", d:\"Intensievere begeleiding.\", ic:\"\ud83e\uddd1\u200d\ud83d\udcbc\", score:{ basic:0, pro:8, premium:14 }, flags:{ biweekly:true } }\n      ]\n    }\n  };\n\n  const FLOWS = {\n    local:        [\"goal\",\"keywords\",\"gmb\",\"site_state\",\"reporting\",\"content_need\"],\n    leads:        [\"goal\",\"keywords\",\"site_state\",\"content_need\",\"reporting\",\"gmb\"],\n    content:      [\"goal\",\"keywords\",\"content_need\",\"site_state\",\"reporting\",\"gmb\"],\n    competition:  [\"goal\",\"keywords\",\"site_state\",\"reporting\",\"content_need\",\"gmb\"]\n  };\n\n  let flow = FLOWS.leads.slice();\n  let step = 0;\n  const answers = {};\n\n  openBtn.addEventListener('click', openModal);\n  closeEls.forEach(el => el.addEventListener('click', closeModal));\n  window.addEventListener('keydown', (e)=>{ if(modal.getAttribute('aria-hidden')==='false' && e.key==='Escape') closeModal(); });\n\n  manualToggle.addEventListener('click', ()=>{\n    const isOpen = manualToggle.getAttribute('aria-expanded') === 'true';\n    manualToggle.setAttribute('aria-expanded', String(!isOpen));\n    manualWrap.hidden = isOpen ? true : false;\n  });\n\n  prevBtn.addEventListener('click', ()=>{ if(step>0){ step--; renderStep(); } });\n  nextBtn.addEventListener('click', ()=>{\n    const qid = flow[step];\n    if(!answers[qid]) return;\n    if(step < flow.length-1){ step++; renderStep(); } else { showResult(); }\n  });\n  resetBtn.addEventListener('click', ()=>{\n    step=0; flow=FLOWS.leads.slice();\n    for(const k in answers) delete answers[k];\n    manualText.value=\"\"; manualWrap.hidden=true; manualToggle.setAttribute('aria-expanded','false');\n    pushConsole(\"Reset uitgevoerd\", \"OK\");\n    renderStep(true);\n  });\n  backBtn.addEventListener('click', ()=>{\n    resultWrap.hidden = true;\n    qWrap.hidden = false;\n    renderStep(true);\n  });\n\n  \/\/ smooth scroll + close modal for \u201cBekijk pakket\u201d\n  root.addEventListener(\"click\", (e)=>{\n    const a = e.target.closest('a[data-woai-scroll=\"1\"]');\n    if(!a) return;\n\n    closeModal();\n\n    const href = a.getAttribute(\"href\") || \"\";\n    try{\n      const u = new URL(href, window.location.href);\n      if(u.origin === window.location.origin){\n        const hash = u.hash || \"\";\n        if(hash && u.pathname === window.location.pathname){\n          e.preventDefault();\n          history.pushState(null, \"\", hash);\n          setTimeout(()=>{\n            const target = document.querySelector(hash);\n            if(target) target.scrollIntoView({behavior:\"smooth\", block:\"start\"});\n            else window.location.href = href;\n          }, 60);\n        }\n      }\n    }catch(err){}\n  });\n\n  \/\/ Offerte aanvragen -> always go to detailed offerte page, close modal\n  offerteLink.addEventListener(\"click\", ()=>{\n    closeModal();\n    window.location.href = LINKS.offertePage;\n  });\n\n  function openModal(){\n    modal.setAttribute('aria-hidden','false');\n    document.body.style.overflow = 'hidden';\n    qWrap.hidden = false; resultWrap.hidden = true;\n\n    step=0; flow=FLOWS.leads.slice();\n    for(const k in answers) delete answers[k];\n    manualText.value=\"\"; manualWrap.hidden=true; manualToggle.setAttribute('aria-expanded','false');\n\n    renderStep(true);\n    startParticles();\n    pushConsole(\"Systeem gestart\u2026\", \"OK\");\n    setTimeout(()=>pushConsole(\"Neural scoring: actief\", \"RUN\"), 180);\n  }\n  function closeModal(){\n    modal.setAttribute('aria-hidden','true');\n    document.body.style.overflow = '';\n    stopParticles();\n  }\n\n  function renderStep(){\n    qWrap.classList.remove(\"woai-transition\");\n    void qWrap.offsetWidth;\n    qWrap.classList.add(\"woai-transition\");\n\n    const qid = flow[step];\n    const q = QB[qid];\n\n    const total = flow.length;\n    stepLabel.textContent = `Stap ${step+1}\/${total}`;\n    fillEl.style.width = `${Math.round((step\/Math.max(1,total))*100)}%`;\n\n    prevBtn.disabled = step === 0;\n    nextBtn.disabled = !answers[qid];\n\n    qEl.textContent = q.title;\n    helpEl.textContent = q.help;\n\n    manualText.value = (answers[qid]?.manual || \"\");\n    manualWrap.hidden = !(manualToggle.getAttribute('aria-expanded') === 'true');\n\n    optionsEl.innerHTML = \"\";\n    q.options.forEach((opt, idx)=>{\n      const btn = document.createElement('button');\n      btn.type=\"button\";\n      btn.className=\"woai-opt\";\n      btn.setAttribute('role','listitem');\n      btn.setAttribute('aria-selected', answers[qid]?.idx === idx ? \"true\" : \"false\");\n      btn.innerHTML = `\n        <div class=\"woai-opt__ic\"><span>${opt.ic}<\/span><\/div>\n        <div class=\"woai-opt__txt\">\n          <div class=\"woai-opt__t\">${escapeHtml(opt.t)}<\/div>\n          <div class=\"woai-opt__d\">${escapeHtml(opt.d)}<\/div>\n        <\/div>\n      `;\n      btn.addEventListener('click', ()=>{\n        answers[qid] = { idx, manual: manualText.value || \"\", flags: (opt.flags || {}) };\n\n        if(qid === \"goal\"){\n          const path = opt.flags?.path || \"leads\";\n          flow = (FLOWS[path] || FLOWS.leads).slice();\n          for(const key of Object.keys(answers)){\n            if(!flow.includes(key)) delete answers[key];\n          }\n          step = 0;\n          pushConsole(`Path selected: ${path}`, \"OK\");\n        }\n\n        [...optionsEl.querySelectorAll('.woai-opt')].forEach(n=>n.setAttribute('aria-selected','false'));\n        btn.setAttribute('aria-selected','true');\n        nextBtn.disabled = false;\n\n        pushConsole(`${qid}: ${opt.t}`, \"OK\");\n        statusEl.textContent = \"Keuze geregistreerd\";\n        updateConfidence();\n        nextBtn.animate([{transform:\"scale(1)\"},{transform:\"scale(1.03)\"},{transform:\"scale(1)\"}], {duration:260, easing:\"cubic-bezier(.2,.9,.25,1)\"});\n      });\n      optionsEl.appendChild(btn);\n    });\n\n    manualText.oninput = ()=>{\n      if(answers[qid]){\n        answers[qid].manual = manualText.value;\n        pushConsole(`manual(${qid}): bijgewerkt`, \"NOTE\");\n      }\n    };\n\n    statusEl.textContent = \"Wacht op keuze\u2026\";\n    updateConfidence();\n  }\n\n  function computeScores(){\n    const scores = { basic:0, pro:0, premium:0 };\n\n    for(const qid of flow){\n      const a = answers[qid];\n      if(!a) continue;\n      const q = QB[qid];\n      const opt = q.options[a.idx];\n      if(!opt || !opt.score) continue;\n      for(const k of Object.keys(scores)){\n        scores[k] += (opt.score[k] || 0);\n      }\n    }\n\n    const manualAll = Object.values(answers).map(x=>x.manual||\"\").join(\" \").toLowerCase();\n    const has = (w)=> manualAll.includes(w);\n\n    if(has(\"linkbuilding\")) { scores.pro += 3; scores.premium += 4; }\n    if(has(\"technisch\") || has(\"sitemap\") || has(\"broken\")) { scores.premium += 5; scores.pro += 2; }\n    if(has(\"blog\") || has(\"content\")) { scores.pro += 3; scores.premium += 3; }\n    if(has(\"maps\") || has(\"bedrijfsprofiel\") || has(\"gmb\")) { scores.pro += 2; scores.basic += 1; }\n\n    \/\/ If they explicitly chose heavy technical issues, lean Premium\n    const stFlags = answers.site_state ? (QB.site_state.options[answers.site_state.idx]?.flags || {}) : {};\n    if(stFlags.techHeavy){ scores.premium += 6; scores.pro += 2; }\n\n    \/\/ If they chose biweekly strategy, lean Premium\n    const repFlags = answers.reporting ? (QB.reporting.options[answers.reporting.idx]?.flags || {}) : {};\n    if(repFlags.biweekly){ scores.premium += 6; }\n\n    return scores;\n  }\n\n  function pickWinner(scores){\n    const entries = Object.entries(scores).sort((a,b)=> b[1]-a[1]);\n    const bestKey = entries[0][0];\n    const ranking = entries;\n\n    const bestVal = ranking[0][1];\n    const secondVal = ranking[1] ? ranking[1][1] : bestVal-1;\n    const diff = bestVal - secondVal;\n    const confidence = Math.max(60, Math.min(96, 70 + diff*4));\n    return { bestKey, confidence, ranking };\n  }\n\n  function buildWhy(bestKey){\n    const bits = [];\n    const gOpt = answers.goal ? QB.goal.options[answers.goal.idx]?.t : null; if(gOpt) bits.push(`Doel: ${gOpt}`);\n    const kOpt = answers.keywords ? QB.keywords.options[answers.keywords.idx]?.t : null; if(kOpt) bits.push(`Zoekwoorden: ${kOpt}`);\n    const sOpt = answers.site_state ? QB.site_state.options[answers.site_state.idx]?.t : null; if(sOpt) bits.push(`Website: ${sOpt}`);\n    const base = bits.slice(0,3).join(\" \u2022 \");\n\n    if(bestKey===\"basic\") return `${base}. Perfect voor een sterke SEO-basis met 5\u201310 zoekwoorden.`;\n    if(bestKey===\"pro\") return `${base}. Ideaal voor groei: 20+ zoekwoorden + linkbuilding en Maps optimalisatie.`;\n    return `${base}. Beste keuze voor maximale impact: 50+ zoekwoorden + strategie + technische SEO.`;\n  }\n\n  function renderAlternatives(ranking){\n    altGrid.innerHTML = \"\";\n    ranking.slice(1,3).forEach(([key, score])=>{\n      const pkg = PACKAGES[key];\n      const el = document.createElement(\"div\");\n      el.className = \"woai-alt\";\n      el.innerHTML = `\n        <div class=\"woai-alt__t\">${escapeHtml(pkg.title)}<\/div>\n        <div class=\"woai-alt__m\">${escapeHtml(pkg.badge)} \u2022 ${escapeHtml(pkg.price)}<\/div>\n        <div class=\"woai-alt__s\">AI-score: ${Math.round(score)}<\/div>\n      `;\n      altGrid.appendChild(el);\n    });\n  }\n\n  function showResult(){\n    fillEl.style.width = \"100%\";\n    statusEl.textContent = \"Analyse afronden\u2026\";\n\n    pushConsole(\"Analyse: gestart\", \"RUN\");\n    setTimeout(()=>pushConsole(\"Feature extraction\u2026\", \"RUN\"), 200);\n    setTimeout(()=>pushConsole(\"Scoring modellen\u2026\", \"RUN\"), 430);\n    setTimeout(()=>pushConsole(\"Best match: berekenen\u2026\", \"RUN\"), 680);\n\n    const scores = computeScores();\n    const res = pickWinner(scores);\n    const pkg = PACKAGES[res.bestKey];\n\n    setTimeout(()=>{\n      qWrap.hidden = true;\n      resultWrap.hidden = false;\n\n      const why = buildWhy(res.bestKey);\n\n      resultPack.textContent = pkg.title;\n      resultWhy.textContent = why;\n\n      packName.textContent = pkg.title;\n      packPrice.textContent = pkg.price;\n      packMeta.textContent = `${pkg.badge} \u2022 Aanbevolen door AI-score`;\n      packList.innerHTML = pkg.bullets.map(x=>`<li>${escapeHtml(x)}<\/li>`).join(\"\");\n\n      packLink.href = LINKS.pakketAnchor;   \/\/ smooth scroll if same page\n      offerteLink.href = LINKS.offertePage; \/\/ detailed offerte page\n\n      confFill.style.width = `${res.confidence}%`;\n      confVal.textContent = `${res.confidence}%`;\n      badgePct.textContent = `${res.confidence}`;\n\n      renderAlternatives(res.ranking);\n\n      pushConsole(`Resultaat: ${pkg.title}`, \"OK\");\n      pushConsole(`Confidence: ${res.confidence}%`, \"OK\");\n      statusEl.textContent = \"Advies klaar \u2705\";\n    }, 880);\n  }\n\n  function updateConfidence(){\n    const answered = flow.filter(id=>answers[id]).length;\n    const total = flow.length;\n    const scores = computeScores();\n    const res = pickWinner(scores);\n\n    const base = 40 + Math.round((answered\/Math.max(1,total))*40);\n    const conf = Math.max(base, Math.min(95, res.confidence - (total-answered)*2));\n\n    confFill.style.width = `${conf}%`;\n    confVal.textContent = answered ? `${conf}%` : \"\u2014\";\n  }\n\n  function pushConsole(text, tag){\n    if(!consoleLines) return;\n    const row = document.createElement(\"div\");\n    row.className = \"woai-line\";\n    row.innerHTML = `<b>[${tag||\"OK\"}]<\/b> <span>${escapeHtml(text)}<\/span>`;\n    consoleLines.prepend(row);\n    while(consoleLines.children.length>10) consoleLines.removeChild(consoleLines.lastChild);\n  }\n  function escapeHtml(s){\n    return String(s).replace(\/[&<>\"']\/g, m=>({ \"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#039;\" }[m]));\n  }\n\n  \/\/ Particles (dark)\n  const canvas = root.querySelector(\".woai-particles\");\n  const ctx = canvas.getContext(\"2d\");\n  let raf=null, particles=[], lastT=0;\n\n  function resizeCanvas(){\n    const rect = panel.getBoundingClientRect();\n    canvas.width = Math.max(300, Math.floor(rect.width));\n    canvas.height = Math.max(300, Math.floor(rect.height));\n  }\n  function initParticles(){\n    resizeCanvas();\n    const count = Math.min(95, Math.round((canvas.width*canvas.height)\/17000));\n    particles = [];\n    for(let i=0;i<count;i++){\n      particles.push({\n        x:Math.random()*canvas.width,\n        y:Math.random()*canvas.height,\n        vx:(Math.random()-.5)*0.45,\n        vy:(Math.random()-.5)*0.45,\n        r:1+Math.random()*1.8,\n        a:0.12+Math.random()*0.24\n      });\n    }\n  }\n  function draw(t){\n    const dt = Math.min(32, t-lastT); lastT=t;\n    ctx.clearRect(0,0,canvas.width,canvas.height);\n\n    const g = ctx.createRadialGradient(canvas.width*0.25, canvas.height*0.15, 0, canvas.width*0.25, canvas.height*0.15, canvas.width*0.9);\n    g.addColorStop(0, \"rgba(0,229,255,0.12)\");\n    g.addColorStop(0.45, \"rgba(183,0,255,0.10)\");\n    g.addColorStop(1, \"rgba(0,0,0,0)\");\n    ctx.fillStyle = g;\n    ctx.fillRect(0,0,canvas.width,canvas.height);\n\n    for(const p of particles){\n      p.x += p.vx*dt; p.y += p.vy*dt;\n      if(p.x<-20) p.x=canvas.width+20;\n      if(p.x>canvas.width+20) p.x=-20;\n      if(p.y<-20) p.y=canvas.height+20;\n      if(p.y>canvas.height+20) p.y=-20;\n\n      ctx.beginPath();\n      ctx.arc(p.x,p.y,p.r,0,Math.PI*2);\n      ctx.fillStyle = `rgba(240,245,255,${p.a})`;\n      ctx.fill();\n    }\n\n    for(let i=0;i<particles.length;i++){\n      for(let j=i+1;j<particles.length;j++){\n        const a=particles[i], b=particles[j];\n        const dx=a.x-b.x, dy=a.y-b.y;\n        const d=Math.sqrt(dx*dx+dy*dy);\n        if(d<120){\n          const alpha=(1-d\/120)*0.18;\n          ctx.strokeStyle = `rgba(0,229,255,${alpha})`;\n          ctx.lineWidth=1;\n          ctx.beginPath();\n          ctx.moveTo(a.x,a.y); ctx.lineTo(b.x,b.y);\n          ctx.stroke();\n        }\n      }\n    }\n    raf=requestAnimationFrame(draw);\n  }\n  function startParticles(){\n    initParticles();\n    window.addEventListener(\"resize\", onResize, {passive:true});\n    raf=requestAnimationFrame((t)=>{ lastT=t; draw(t); });\n  }\n  function stopParticles(){\n    window.removeEventListener(\"resize\", onResize);\n    if(raf) cancelAnimationFrame(raf);\n    raf=null;\n  }\n  function onResize(){ resizeCanvas(); initParticles(); }\n\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5570750 e-con-full e-flex e-con e-parent\" data-id=\"5570750\" data-element_type=\"container\" id=\"offerte\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5c06e59 elementor-widget elementor-widget-html\" data-id=\"5c06e59\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section class=\"agency-quote-section\" id=\"agency-quote\">\n  <style>\n    :root{\n      --brand-blue:#015af2;\n      --brand-purple:#a154d0;\n\n      --bg-main:#0b0f1a;\n      --text-main:#ffffff;\n      --text-muted:rgba(255,255,255,.7);\n      --border-soft:rgba(255,255,255,.14);\n\n      --radius-xl:24px;\n      --shadow-xl:0 30px 80px rgba(0,0,0,.55);\n\n      --max-width:1100px;\n      --font-main:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;\n    }\n\n    .agency-quote-section{\n      width:100vw;\n      position:relative;\n      left:50%;\n      margin-left:-50vw;\n      background:\n        radial-gradient(900px 600px at 15% 15%, rgba(1,90,242,.35), transparent 60%),\n        radial-gradient(900px 600px at 85% 20%, rgba(161,84,208,.35), transparent 60%),\n        var(--bg-main);\n      color:var(--text-main);\n      font-family:var(--font-main);\n      overflow:hidden;\n    }\n\n    .agency-quote-wrapper{\n      max-width:var(--max-width);\n      margin:0 auto;\n      padding:100px 20px;\n    }\n\n    .agency-quote-header{\n      max-width:700px;\n      margin-bottom:50px;\n    }\n\n    .agency-eyebrow{\n      font-size:12px;\n      font-weight:800;\n      letter-spacing:.35px;\n      text-transform:uppercase;\n      color:var(--brand-blue);\n      margin-bottom:14px;\n    }\n\n    .agency-quote-title{\n      font-size:clamp(28px,3.4vw,44px);\n      line-height:1.1;\n      letter-spacing:-0.6px;\n      margin:0 0 14px;\n    }\n\n    .agency-quote-title span{\n      background:linear-gradient(90deg,var(--brand-blue),var(--brand-purple));\n      -webkit-background-clip:text;\n      background-clip:text;\n      color:transparent;\n    }\n\n    .agency-quote-lead{\n      font-size:15.6px;\n      line-height:1.75;\n      color:var(--text-muted);\n      margin:0;\n    }\n\n    .agency-quote-card{\n      background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.03));\n      border:1px solid var(--border-soft);\n      border-radius:var(--radius-xl);\n      padding:40px;\n      box-shadow:var(--shadow-xl);\n      overflow:hidden;\n      position:relative;\n    }\n\n    .agency-form-grid{\n      display:grid;\n      grid-template-columns:1fr 1fr;\n      gap:20px;\n    }\n\n    .agency-field{\n      display:flex;\n      flex-direction:column;\n      gap:6px;\n    }\n\n    .agency-field.full{ grid-column:1 \/ -1; }\n\n    .agency-field label{\n      font-size:13px;\n      font-weight:700;\n      color:var(--text-muted);\n    }\n\n    .agency-field input,\n    .agency-field textarea{\n      background:rgba(0,0,0,.35);\n      border:1px solid var(--border-soft);\n      border-radius:14px;\n      padding:14px;\n      color:#fff;\n      font-size:14px;\n      font-family:var(--font-main);\n      outline:none;\n      transition:border .25s ease, box-shadow .25s ease, transform .2s ease;\n    }\n    .agency-field input::placeholder,\n    .agency-field textarea::placeholder{\n      color: rgba(255,255,255,.55);\n    }\n\n    .agency-field input:focus,\n    .agency-field textarea:focus{\n      border-color:var(--brand-blue);\n      box-shadow:0 0 0 2px rgba(1,90,242,.25);\n      transform: translateY(-1px);\n    }\n\n    .agency-field textarea{\n      resize:vertical;\n      min-height:120px;\n      line-height:1.65;\n    }\n\n    .agency-package-grid{\n      display:grid;\n      grid-template-columns:repeat(3,1fr);\n      gap:14px;\n      margin-bottom:20px;\n    }\n\n    .agency-package{\n      background:rgba(0,0,0,.35);\n      border:1px solid var(--border-soft);\n      border-radius:16px;\n      padding:16px 12px;\n      text-align:center;\n      cursor:pointer;\n      font-size:13px;\n      font-weight:700;\n      transition:all .25s ease;\n      user-select:none;\n    }\n    .agency-package:hover{\n      border-color: rgba(255,255,255,.24);\n      transform: translateY(-1px);\n    }\n\n    .agency-package.active{\n      background:linear-gradient(135deg,rgba(1,90,242,.25),rgba(161,84,208,.25));\n      border-color:var(--brand-blue);\n    }\n\n    .agency-submit{\n      margin-top:30px;\n      display:flex;\n      justify-content:space-between;\n      align-items:center;\n      gap:20px;\n      flex-wrap:wrap;\n    }\n\n    .agency-submit-note{\n      font-size:13px;\n      color:var(--text-muted);\n    }\n\n    .agency-submit button{\n      background:linear-gradient(135deg,var(--brand-blue),var(--brand-purple));\n      border:none;\n      border-radius:16px;\n      padding:14px 26px;\n      font-size:14px;\n      font-weight:800;\n      color:#fff;\n      cursor:pointer;\n      box-shadow:0 18px 45px rgba(1,90,242,.35);\n      transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;\n    }\n    .agency-submit button:hover{\n      transform: translateY(-1px);\n      box-shadow:0 24px 60px rgba(1,90,242,.42);\n    }\n    .agency-submit button:disabled{\n      opacity:.65;\n      cursor:not-allowed;\n      transform:none;\n      box-shadow:none;\n    }\n\n    .agency-alert{\n      display:none;\n      margin-top: 16px;\n      padding: 14px;\n      border-radius: 16px;\n      border: 1px solid rgba(255,255,255,.14);\n      background: rgba(0,0,0,.25);\n      color: rgba(255,255,255,.88);\n      font-size: 13.6px;\n      line-height:1.6;\n    }\n    .agency-alert.success{ border-color: rgba(34,197,94,.30); }\n    .agency-alert.error{ border-color: rgba(239,68,68,.30); }\n\n    .agency-hp{ position:absolute; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden; }\n\n    @media(max-width:900px){\n      .agency-form-grid{ grid-template-columns:1fr; }\n      .agency-package-grid{ grid-template-columns:1fr; }\n    }\n  <\/style>\n  <div class=\"agency-quote-wrapper\">\n    <div class=\"agency-quote-header\">\n      <div class=\"agency-eyebrow\">Packs SEO<\/div>\n      <h2 class=\"agency-quote-title\">\n        Demander un <span>devis SEO<\/span>\n      <\/h2>\n      <p class=\"agency-quote-lead\">\n        Choisissez le pack SEO adapt\u00e9 \u00e0 vos objectifs de croissance.\n        Nous vous conseillons personnellement.\n      <\/p>\n    <\/div>\n\n    <div class=\"agency-quote-card\">\n      <form id=\"agencyQuoteForm\" novalidate>\n        <div class=\"agency-package-grid\" aria-label=\"Choisir un pack SEO\">\n          <div class=\"agency-package\" role=\"button\" tabindex=\"0\" data-package=\"Basic SEO\">SEO Basique<\/div>\n          <div class=\"agency-package\" role=\"button\" tabindex=\"0\" data-package=\"Pro SEO\">SEO Pro<\/div>\n          <div class=\"agency-package\" role=\"button\" tabindex=\"0\" data-package=\"Premium SEO\">SEO Premium<\/div>\n        <\/div>\n\n        <input type=\"hidden\" name=\"selected_package\" id=\"selectedPackage\" required>\n        <input type=\"hidden\" name=\"service\" value=\"SEO\">\n        <input type=\"hidden\" name=\"page_url\" id=\"agencyPageUrl\" value=\"\">\n        <input type=\"hidden\" name=\"ua\" id=\"agencyUA\" value=\"\">\n\n        <div class=\"agency-hp\" aria-hidden=\"true\">\n          <label>Laissez ceci vide<\/label>\n          <input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\">\n        <\/div>\n\n        <div class=\"agency-form-grid\">\n          <div class=\"agency-field\">\n            <label for=\"agencyName\">Nom*<\/label>\n            <input id=\"agencyName\" name=\"name\" type=\"text\" placeholder=\"Votre nom\" required>\n          <\/div>\n\n          <div class=\"agency-field\">\n            <label for=\"agencyEmail\">Adresse e-mail*<\/label>\n            <input id=\"agencyEmail\" name=\"email\" type=\"email\" placeholder=\"nom@entreprise.be\" required>\n          <\/div>\n\n          <div class=\"agency-field\">\n            <label for=\"agencyPhone\">T\u00e9l\u00e9phone<\/label>\n            <input id=\"agencyPhone\" name=\"phone\" type=\"tel\" placeholder=\"+32 ...\">\n          <\/div>\n\n          <div class=\"agency-field\">\n            <label for=\"agencyCompany\">Nom de l\u2019entreprise<\/label>\n            <input id=\"agencyCompany\" name=\"company\" type=\"text\" placeholder=\"Nom de l\u2019entreprise (optionnel)\">\n          <\/div>\n\n          <!-- \u2705 CHANGED: name=\"goals\" (and we also send as message\/details in JS) -->\n          <div class=\"agency-field full\">\n            <label for=\"agencyGoals\">Vos objectifs \/ site web<\/label>\n            <textarea\n              id=\"agencyGoals\"\n              name=\"goals\"\n              placeholder=\"Dites-nous ce que vous souhaitez atteindre avec le SEO (URL du site, objectifs, cible, r\u00e9gion, mots-cl\u00e9s importants, etc.)...\"\n            ><\/textarea>\n          <\/div>\n        <\/div>\n\n        <div class=\"agency-submit\">\n          <div class=\"agency-submit-note\">\n            Transparent \u2022 Croissance durable \u2022 Conseil personnalis\u00e9\n          <\/div>\n          <button id=\"agencySubmitBtn\" type=\"submit\">Demander un devis SEO<\/button>\n        <\/div>\n\n        <div class=\"agency-alert success\" id=\"agencySuccess\">\n          \u2705 Merci ! Votre demande a \u00e9t\u00e9 envoy\u00e9e. Nous vous contacterons d\u00e8s que possible.\n        <\/div>\n        <div class=\"agency-alert error\" id=\"agencyError\">\n          \u26a0\ufe0f V\u00e9rifiez les champs obligatoires et r\u00e9essayez.\n        <\/div>\n      <\/form>\n    <\/div>\n  <\/div>\n\n\n  <script>\n    (function(){\n      const root = document.getElementById('agency-quote');\n      if(!root) return;\n\n      const packages = root.querySelectorAll('.agency-package');\n      const hiddenInput = root.querySelector('#selectedPackage');\n\n      const form = root.querySelector('#agencyQuoteForm');\n      const btn = root.querySelector('#agencySubmitBtn');\n      const success = root.querySelector('#agencySuccess');\n      const error = root.querySelector('#agencyError');\n\n      const urlEl = root.querySelector('#agencyPageUrl');\n      const uaEl = root.querySelector('#agencyUA');\n      if(urlEl) urlEl.value = window.location.href;\n      if(uaEl) uaEl.value = navigator.userAgent || '';\n\n      function clickOrEnter(el, fn){\n        el.addEventListener('click', fn);\n        el.addEventListener('keydown', (e)=>{ if(e.key === 'Enter' || e.key === ' ') { e.preventDefault(); fn(); } });\n      }\n\n      packages.forEach(pkg=>{\n        clickOrEnter(pkg, ()=>{\n          packages.forEach(p=>p.classList.remove('active'));\n          pkg.classList.add('active');\n          hiddenInput.value = pkg.dataset.package;\n        });\n      });\n\n      function isValidEmail(v){\n        return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(String(v||'').trim());\n      }\n      function show(el){ if(el) el.style.display = 'block'; }\n      function hide(el){ if(el) el.style.display = 'none'; }\n\n      form.addEventListener('submit', async (e)=>{\n        e.preventDefault();\n        hide(success); hide(error);\n\n        const name = form.querySelector('#agencyName');\n        const email = form.querySelector('#agencyEmail');\n\n        let ok = true;\n\n        if(!hiddenInput.value){\n          ok = false;\n          alert('Selecteer eerst een SEO-pakket.');\n        }\n        if(!name.value.trim()) ok = false;\n        if(!isValidEmail(email.value)) ok = false;\n\n        if(!ok){\n          show(error);\n          return;\n        }\n\n        btn.disabled = true;\n        const oldText = btn.textContent;\n        btn.textContent = 'Verzenden...';\n\n        try{\n          const payload = Object.fromEntries(new FormData(form).entries());\n\n          \/\/ \u2705 Ensure message is ALWAYS present for email templates\n          const goalsText = (payload.goals || '').trim();\n          payload.message = payload.message || goalsText;   \/\/ common key\n          payload.details = payload.details || goalsText;   \/\/ alternative key\n          payload.goals = goalsText;                        \/\/ keep original key\n\n          const res = await fetch('\/wp-json\/wo\/v1\/quote', {\n            method: 'POST',\n            headers: { 'Content-Type': 'application\/json' },\n            body: JSON.stringify(payload),\n            credentials: 'same-origin'\n          });\n\n          const data = await res.json().catch(()=> ({}));\n\n          if(res.ok && data && data.success){\n            form.reset();\n            hiddenInput.value = '';\n            packages.forEach(p=>p.classList.remove('active'));\n            show(success);\n          }else{\n            show(error);\n          }\n        }catch(err){\n          show(error);\n        }finally{\n          btn.disabled = false;\n          btn.textContent = oldText;\n        }\n      });\n    })();\n  <\/script>\n<\/section>\n\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>Packs SEO Qu\u2019est-ce que le SEO ? Qu\u2019est-ce que cela rapporte ? Mini Acad\u00e9mie Service SEO Une approche claire, des r\u00e9sultats mesurables et une optimisation continue \u2014 sans prise de t\u00eate. 5\u201310 mots-cl\u00e9s SEO Basique SEO Basique \u20ac175\/ mois \/ +TVA Pack inclus : Analyse SEO de votre site web Recherche de mots-cl\u00e9s de base [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2521","page","type-page","status-publish","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/pages\/2521","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/comments?post=2521"}],"version-history":[{"count":6,"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/pages\/2521\/revisions"}],"predecessor-version":[{"id":2527,"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/pages\/2521\/revisions\/2527"}],"wp:attachment":[{"href":"https:\/\/webontwerpers.be\/fr\/wp-json\/wp\/v2\/media?parent=2521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}