{"id":49009,"date":"2026-08-25T12:07:07","date_gmt":"2026-08-25T11:07:07","guid":{"rendered":"https:\/\/cctvacademy.be\/?page_id=49009"},"modified":"2026-10-04T21:12:39","modified_gmt":"2026-10-04T20:12:39","slug":"inschrijven","status":"publish","type":"page","link":"https:\/\/cctvacademy.be\/nl\/inschrijven\/","title":{"rendered":"inschrijven"},"content":{"rendered":"\t\t<div data-elementor-type=\"masteriyo-course-archive-page\" data-elementor-id=\"49009\" class=\"elementor elementor-49009\">\n\t\t\t\t<div class=\"elementor-element elementor-element-643dafb e-flex e-con-boxed e-con e-parent\" data-id=\"643dafb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f6aa88 elementor-widget elementor-widget-html\" data-id=\"2f6aa88\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- CCTV Academy \u00b7 Opleidingsaanvraag \u00b7 HTML v1.19 STAGING \u00b7 form-uitlijning + Nederlands als starttaal \u00b7 4 talen\n     Dit bestand vervangt uitsluitend het bestaande Elementor HTML-widget.\n     BELANGRIJK: behoud de BESTAANDE aparte Elementor Shortcode-widget\n     direct na dit widget: [forminator_form id=\"49521\"].\n     De bestaande v1.16-brug herkent in Forminator 49521 de bestaande Hidden\n     Fields hidden-1\/-2\/-3 en gebruikt de default markers als fallback.\n     Geen extra velden of nieuw formulier nodig.\n     De aparte widget is vereist: Elementor HTML verwerkt WordPress-shortcodes\n     niet betrouwbaar zonder extra WordPress-filter of eigen plugin.\n     Laat Account's centrale LanguageBridge actief; vermijd een tweede\n     persoonlijke taalopslag en behoud TranslatePress tijdens de migratie. -->\n<section class=\"cctv-academy-request\" id=\"cctv-academy-request\" lang=\"nl\"><div aria-label=\"Paginaversie\" class=\"cctv-version\">CCTV Academy \u00b7 Opleidingsaanvraag \u00b7 pagina v1.19 \u00b7 STAGING<\/div>\n<input checked=\"\" class=\"cctv-lang-radio\" id=\"cctv-lang-nl\" name=\"cctv-language\" type=\"radio\" value=\"nl\"\/>\n<input class=\"cctv-lang-radio\" id=\"cctv-lang-fr\" name=\"cctv-language\" type=\"radio\" value=\"fr\"\/>\n<input class=\"cctv-lang-radio\" id=\"cctv-lang-en\" name=\"cctv-language\" type=\"radio\" value=\"en\"\/><input class=\"cctv-lang-radio\" id=\"cctv-lang-de\" name=\"cctv-language\" type=\"radio\" value=\"de\"\/>\n<script>(function(){\n  \"use strict\";\n  var ROOT_ID=\"cctv-academy-request\", EVENT=\"cctvAcademyLanguageChange\";\n  var valid={nl:true,fr:true,en:true,de:true};\n  var current=\"nl\", busy=false;\n  function normalize(v){v=String(v||\"\").toLowerCase().trim();return valid[v]?v:\"nl\";}\n  function root(){return document.getElementById(ROOT_ID);}\n  function bridge(){return window.CCTVAcademyLanguageBridge||null;}\n  function updatePage(lang,emit){\n    current=normalize(lang);var r=root();if(!r)return;\n    var radio=r.querySelector('#cctv-lang-'+current);if(radio)radio.checked=true;\n    r.setAttribute('lang',current);r.setAttribute('data-language',current);\n    r.querySelectorAll('[data-placeholder-'+current+']').forEach(function(el){el.placeholder=el.getAttribute('data-placeholder-'+current);});\n    var home=r.querySelector('.cctv-home-button');\n    if(home){home.setAttribute('aria-label',{nl:'Naar de homepage van CCTV Academy',fr:'Aller \u00e0 la page d\u2019accueil de CCTV Academy',en:'Go to the CCTV Academy homepage',de:'Zur Startseite der CCTV Academy'}[current]);\n      if(bridge()&&typeof bridge().url==='function')home.href=bridge().url('https:\/\/cctvacademy.be\/',current);\n    }\n    var poster=r.querySelector('.cctv-poster img');\n    if(poster)poster.alt={nl:'CCTV Academy-affiche met bewakingscamera\u2019s',fr:'Affiche CCTV Academy avec cam\u00e9ras de surveillance',en:'CCTV Academy poster with surveillance cameras',de:'CCTV-Academy-Plakat mit \u00dcberwachungskameras'}[current];\n    \/* Only mark the local page. Do not override the entire WordPress theme language. *\/\n    if(emit!==false){try{window.dispatchEvent(new CustomEvent(EVENT,{detail:{language:current}}));}catch(e){}}\n  }\n  function initial(){\n    \/* This training page starts in Dutch by default, regardless of an\n       account\/browser preference. Explicit ?lang=fr|en|de links still work.\n       The existing central LanguageBridge remains responsible for later\n       user-initiated language changes; do not write a new preference. *\/\n    try{\n      var q=new URL(window.location.href).searchParams;\n      var l=String(q.get('lang')||q.get('cctv_lang')||'').toLowerCase().trim();\n      if(valid[l])return l;\n    }catch(e){}\n    return 'nl';\n  }\n  function choose(lang){\n    lang=normalize(lang);if(busy)return Promise.resolve(false);\n    var b=bridge();if(b&&typeof b.choose==='function'){\n      busy=true;\n      return b.choose(lang,false).then(function(){updatePage(lang,true);return true;})\n      .catch(function(err){console.warn('CCTV Academy: central language could not be saved.',err);updatePage(lang,true);return false;})\n      .finally(function(){busy=false;});\n    }\n    \/* Preview fallback: visible local translation, no false claim that user preference was saved. *\/\n    updatePage(lang,true);return Promise.resolve(false);\n  }\n  window.CCTVAcademyLanguage={set:choose,get:function(){return current;}};\n  window.CCTVAcademyRequestLanguage=choose;\n  function init(){updatePage(initial(),true);root().querySelectorAll('.cctv-lang-radio').forEach(function(item){item.addEventListener('change',function(){if(item.checked)choose(item.value);});});}\n  if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',init,{once:true});else init();\n})();<\/script>\n<style>\n\/* ==========================================================\n   CCTV ACADEMY \u00b7 TRAINING \/ SUPPORT REQUEST\n   Elementor + Forminator 49521 ready\n   ========================================================== *\/\n\n#cctv-academy-request{\n  --navy:#071725;\n  --navy-2:#102b43;\n  --navy-3:#173f5f;\n  --blue:#0878e8;\n  --blue-dark:#0663bd;\n  --cyan:#54b8ff;\n\n  --paper:#f4f7fb;\n  --white:#fff;\n  --text:#26384d;\n  --muted:#66788d;\n  --border:#dce5ef;\n  --soft:#edf4fa;\n  --green:#1f8a63;\n  --green-soft:#eaf8f2;\n  --amber:#d99616;\n  --amber-soft:#fff7e6;\n\n  position:relative;\n  overflow:hidden;\n  isolation:isolate;\n\n  font-family:Arial,Helvetica,sans-serif;\n  color:var(--text);\n  background:var(--paper);\n}\n\n#cctv-academy-request *,\n#cctv-academy-request *::before,\n#cctv-academy-request *::after{\n  box-sizing:border-box;\n}\n\n#cctv-academy-request a{\n  color:inherit;\n  text-decoration:none;\n}\n\n#cctv-academy-request .cctv-container{\n  width:min(1160px,calc(100% - 40px));\n  margin:0 auto;\n}\n\n\/* ==========================================================\n   POSTER \/ AFFICHE\n   Replace only the src below with the WordPress image URL.\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-poster-zone{\n  padding:28px 0 0;\n  background:var(--navy);\n}\n\n#cctv-academy-request .cctv-poster{\n  position:relative;\n  overflow:hidden;\n  margin:0;\n  border:1px solid rgba(255,255,255,.16);\n  border-radius:18px;\n  background:#0c2031;\n  box-shadow:0 24px 60px rgba(0,0,0,.24);\n}\n\n#cctv-academy-request .cctv-poster img{\n  display:block;\n  width:100%;\n  max-height:720px;\n  object-fit:contain;\n  background:#0c2031;\n}\n\n#cctv-academy-request .cctv-poster-fallback{\n  display:none;\n  min-height:220px;\n  place-items:center;\n  padding:34px;\n  color:#dbe9f4;\n  text-align:center;\n  line-height:1.7;\n}\n\n\/* ==========================================================\n   HERO\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-hero{\n  position:relative;\n  overflow:hidden;\n  color:#fff;\n\n  background:\n    radial-gradient(circle at 86% 12%,rgba(8,120,232,.40),transparent 31%),\n    radial-gradient(circle at 15% 90%,rgba(84,184,255,.10),transparent 28%),\n    linear-gradient(135deg,var(--navy),var(--navy-2));\n}\n\n#cctv-academy-request .cctv-hero::before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  pointer-events:none;\n  opacity:.22;\n\n  background:\n    linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);\n\n  background-size:38px 38px;\n}\n\n#cctv-academy-request .cctv-hero .cctv-container{\n  position:relative;\n  z-index:2;\n}\n\n#cctv-academy-request .cctv-page-tools{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:18px;\n  padding:18px 0 0;\n}\n\n#cctv-academy-request .cctv-home-button{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n\n  min-height:40px;\n  padding:8px 14px;\n\n  border:1px solid rgba(255,255,255,.20);\n  border-radius:999px;\n\n  background:rgba(255,255,255,.08);\n  color:#fff!important;\n\n  font-size:12px;\n  font-weight:900;\n  letter-spacing:.03em;\n\n  box-shadow:0 8px 25px rgba(0,0,0,.10);\n  backdrop-filter:blur(8px);\n\n  transition:transform .18s ease,background .18s ease;\n}\n\n#cctv-academy-request .cctv-home-button:hover{\n  transform:translateY(-1px);\n  background:rgba(255,255,255,.15);\n}\n\n#cctv-academy-request .cctv-home-icon{\n  display:grid;\n  place-items:center;\n\n  width:22px;\n  height:22px;\n\n  border-radius:50%;\n  background:#fff;\n  color:var(--navy);\n\n  font-size:13px;\n  line-height:1;\n}\n\n\/* LANGUAGE *\/\n\n#cctv-academy-request .cctv-language-bar{\n  display:flex;\n  align-items:center;\n  gap:10px;\n\n  color:#dce8f2;\n\n  font-size:12px;\n  font-weight:800;\n}\n\n#cctv-academy-request .cctv-language-label{\n  opacity:.74;\n}\n\n#cctv-academy-request .cctv-language-switcher{\n  display:inline-flex;\n  overflow:hidden;\n\n  border:1px solid rgba(255,255,255,.22);\n  border-radius:999px;\n\n  background:rgba(255,255,255,.07);\n}\n\n#cctv-academy-request .cctv-language-switcher button{\n  appearance:none;\n  -webkit-appearance:none;\n\n  min-width:42px;\n  margin:0;\n  padding:8px 11px;\n\n  border:0;\n  border-right:1px solid rgba(255,255,255,.16);\n  border-radius:0;\n\n  background:transparent;\n  color:#eaf3fa;\n\n  font:inherit;\n  font-size:12px;\n  font-weight:900;\n\n  cursor:pointer;\n  outline:none;\n\n  transition:background .18s ease,color .18s ease;\n}\n\n#cctv-academy-request .cctv-language-switcher button:last-child{\n  border-right:0;\n}\n\n#cctv-academy-request .cctv-language-switcher button:hover{\n  background:rgba(255,255,255,.12);\n}\n\n#cctv-academy-request .cctv-language-switcher button.is-active{\n  background:var(--blue);\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-hero-content{\n  max-width:960px;\n  padding:52px 0 76px;\n}\n\n#cctv-academy-request .cctv-kicker{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n\n  margin-bottom:18px;\n  padding:8px 13px;\n\n  border:1px solid rgba(255,255,255,.16);\n  border-radius:999px;\n\n  background:rgba(255,255,255,.07);\n\n  font-size:12px;\n  font-weight:800;\n  letter-spacing:.04em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-kicker::before{\n  content:\"\";\n  width:7px;\n  height:7px;\n  border-radius:50%;\n  background:var(--cyan);\n  box-shadow:0 0 0 5px rgba(84,184,255,.12);\n}\n\n#cctv-academy-request .cctv-hero h1{\n  max-width:950px;\n  margin:0 0 19px;\n\n  color:#fff;\n\n  font-size:clamp(39px,6vw,64px);\n  font-weight:800;\n  line-height:1.02;\n  letter-spacing:-.045em;\n}\n\n#cctv-academy-request .cctv-hero p{\n  max-width:820px;\n  margin:0;\n\n  color:rgba(255,255,255,.82);\n\n  font-size:18px;\n  line-height:1.72;\n}\n\n\/* ==========================================================\n   MAIN\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-main{\n  padding:44px 0 72px;\n}\n\n#cctv-academy-request .cctv-intro-grid{\n  display:grid;\n  grid-template-columns:1.25fr .75fr;\n  gap:24px;\n  margin-bottom:24px;\n}\n\n#cctv-academy-request .cctv-card{\n  padding:30px;\n\n  border:1px solid var(--border);\n  border-radius:18px;\n\n  background:#fff;\n\n  box-shadow:0 14px 40px rgba(7,23,37,.07);\n}\n\n#cctv-academy-request .cctv-card h2{\n  margin:0 0 13px;\n  color:var(--navy);\n  font-size:29px;\n  letter-spacing:-.02em;\n}\n\n#cctv-academy-request .cctv-card p{\n  margin:0 0 13px;\n  line-height:1.75;\n}\n\n#cctv-academy-request .cctv-card p:last-child{\n  margin-bottom:0;\n}\n\n#cctv-academy-request .cctv-process-list{\n  display:grid;\n  gap:13px;\n  margin-top:24px;\n}\n\n#cctv-academy-request .cctv-process-item{\n  display:grid;\n  grid-template-columns:38px 1fr;\n  gap:13px;\n  align-items:start;\n}\n\n#cctv-academy-request .cctv-process-number{\n  display:grid;\n  place-items:center;\n\n  width:38px;\n  height:38px;\n\n  border-radius:10px;\n\n  background:var(--navy);\n  color:#fff;\n\n  font-size:12px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-process-item strong{\n  display:block;\n  margin-bottom:3px;\n  color:var(--navy);\n}\n\n#cctv-academy-request .cctv-process-item span{\n  color:var(--muted);\n  font-size:13px;\n  line-height:1.55;\n}\n\n\/* PARTICIPANTS RULE *\/\n\n#cctv-academy-request .cctv-participant-rule{\n  position:relative;\n  overflow:hidden;\n\n  padding:30px;\n\n  border:1px solid #b9decf;\n  border-radius:18px;\n\n  background:\n    radial-gradient(circle at 95% 0,rgba(31,138,99,.12),transparent 36%),\n    var(--green-soft);\n\n  box-shadow:0 14px 40px rgba(7,23,37,.05);\n}\n\n#cctv-academy-request .cctv-participant-rule::before{\n  content:\"5+\";\n  position:absolute;\n  right:20px;\n  top:4px;\n\n  color:rgba(31,138,99,.10);\n\n  font-size:94px;\n  font-weight:900;\n  line-height:1;\n}\n\n#cctv-academy-request .cctv-participant-label{\n  display:inline-block;\n\n  margin-bottom:13px;\n  padding:6px 9px;\n\n  border-radius:999px;\n\n  background:var(--green);\n  color:#fff;\n\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.07em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-participant-rule h2{\n  position:relative;\n  max-width:360px;\n  margin:0 0 12px;\n\n  color:#164d3b;\n\n  font-size:28px;\n  line-height:1.08;\n}\n\n#cctv-academy-request .cctv-participant-rule p{\n  position:relative;\n  margin:0 0 14px;\n\n  color:#346354;\n  line-height:1.68;\n}\n\n#cctv-academy-request .cctv-participant-rule strong{\n  color:#113f31;\n}\n\n#cctv-academy-request .cctv-micro-exception{\n  position:relative;\n\n  margin-top:19px;\n  padding:15px 16px;\n\n  border-left:4px solid var(--blue);\n\n  background:#fff;\n  color:#315d86;\n\n  font-size:13px;\n  line-height:1.6;\n}\n\n\/* ==========================================================\n   FORM INTRO\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-form-area{\n  padding:32px;\n\n  border:1px solid var(--border);\n  border-radius:20px;\n\n  background:#fff;\n\n  box-shadow:0 14px 40px rgba(7,23,37,.07);\n}\n\n#cctv-academy-request .cctv-form-head{\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:24px;\n  align-items:end;\n\n  margin-bottom:26px;\n  padding-bottom:24px;\n\n  border-bottom:1px solid var(--border);\n}\n\n#cctv-academy-request .cctv-form-area h2{\n  margin:0 0 8px;\n  color:var(--navy);\n  font-size:32px;\n  letter-spacing:-.025em;\n}\n\n#cctv-academy-request .cctv-form-area p{\n  max-width:720px;\n  margin:0;\n  color:var(--muted);\n  line-height:1.7;\n}\n\n#cctv-academy-request .cctv-form-badge{\n  padding:9px 12px;\n\n  border-radius:999px;\n\n  background:var(--soft);\n  color:var(--navy-3);\n\n  font-size:11px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-form-anchor{\n  display:grid;\n  place-items:center;\n\n  min-height:105px;\n  padding:24px;\n\n  border:2px dashed #bfd0e0;\n  border-radius:14px;\n\n  background:#f8fbfe;\n\n  color:var(--muted);\n  text-align:center;\n\n  font-size:13px;\n  line-height:1.65;\n}\n\n#cctv-academy-request .cctv-form-anchor strong{\n  display:block;\n  margin-bottom:5px;\n  color:var(--navy);\n}\n\n\n\/* ==========================================================\n   STEP 1 \u00b7 REQUEST TYPE SELECTOR\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-request-choice{\n  margin:0 0 28px;\n  padding:27px;\n\n  border:1px solid var(--border);\n  border-radius:18px;\n\n  background:\n    linear-gradient(180deg,#fbfdff 0%,#f4f8fc 100%);\n\n  box-shadow:inset 0 1px #fff;\n}\n\n#cctv-academy-request .cctv-request-choice__head{\n  display:grid;\n  grid-template-columns:auto 1fr;\n  gap:16px;\n  align-items:start;\n\n  margin-bottom:22px;\n}\n\n#cctv-academy-request .cctv-request-choice__step{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n\n  min-height:34px;\n  padding:7px 11px;\n\n  border-radius:999px;\n\n  background:var(--navy);\n  color:#fff;\n\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-request-choice__head h3{\n  margin:0 0 6px;\n  color:var(--navy);\n\n  font-size:25px;\n  line-height:1.1;\n  letter-spacing:-.02em;\n}\n\n#cctv-academy-request .cctv-request-choice__head p{\n  margin:0;\n  max-width:760px;\n\n  color:var(--muted);\n  font-size:13px;\n  line-height:1.6;\n}\n\n#cctv-academy-request .cctv-request-choice__grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:13px;\n}\n\n#cctv-academy-request .cctv-request-option{\n  position:relative;\n\n  display:grid;\n  grid-template-columns:42px 1fr 28px;\n  gap:13px;\n  align-items:center;\n\n  width:100%;\n  min-height:108px;\n  margin:0;\n  padding:17px;\n\n  border:1px solid #cedbe7;\n  border-radius:13px;\n\n  background:#fff;\n  color:var(--text);\n\n  text-align:left;\n  font:inherit;\n\n  cursor:pointer;\n\n  box-shadow:0 5px 15px rgba(7,23,37,.035);\n\n  transition:\n    transform .18s ease,\n    border-color .18s ease,\n    box-shadow .18s ease,\n    background .18s ease;\n}\n\n#cctv-academy-request .cctv-request-option:hover{\n  transform:translateY(-2px);\n  border-color:#91b9dc;\n  box-shadow:0 9px 22px rgba(7,23,37,.08);\n}\n\n#cctv-academy-request .cctv-request-option--micro{\n  border-color:#9fc9ef;\n  background:#f7fbff;\n}\n\n#cctv-academy-request .cctv-request-option__number{\n  display:grid;\n  place-items:center;\n\n  width:42px;\n  height:42px;\n\n  border-radius:11px;\n\n  background:var(--soft);\n  color:var(--navy-3);\n\n  font-size:11px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-request-option__copy{\n  display:block;\n  min-width:0;\n}\n\n#cctv-academy-request .cctv-request-option__copy strong{\n  display:block;\n\n  margin-bottom:5px;\n\n  color:var(--navy);\n\n  font-size:15px;\n  line-height:1.25;\n}\n\n#cctv-academy-request .cctv-request-option__copy small{\n  display:block;\n\n  color:var(--muted);\n\n  font-size:12px;\n  line-height:1.5;\n}\n\n#cctv-academy-request .cctv-request-option__check{\n  display:grid;\n  place-items:center;\n\n  width:27px;\n  height:27px;\n\n  border:1px solid #c9d6e3;\n  border-radius:50%;\n\n  color:transparent;\n  background:#fff;\n\n  font-size:13px;\n  font-weight:900;\n\n  transition:.18s ease;\n}\n\n#cctv-academy-request .cctv-request-option.is-selected{\n  border-color:var(--blue);\n  background:#f2f8ff;\n\n  box-shadow:\n    0 0 0 2px rgba(8,120,232,.10),\n    0 9px 24px rgba(8,120,232,.10);\n}\n\n#cctv-academy-request .cctv-request-option.is-selected .cctv-request-option__number{\n  background:var(--blue);\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-request-option.is-selected .cctv-request-option__check{\n  border-color:var(--blue);\n  background:var(--blue);\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-request-choice__status{\n  display:flex;\n  flex-wrap:wrap;\n  align-items:center;\n  gap:6px;\n\n  margin-top:16px;\n  padding-top:14px;\n\n  border-top:1px solid var(--border);\n\n  color:var(--muted);\n\n  font-size:12px;\n}\n\n#cctv-academy-request .cctv-request-choice__status strong{\n  color:var(--navy);\n}\n\n@media(max-width:720px){\n  #cctv-academy-request .cctv-request-choice{\n    padding:21px;\n  }\n\n  #cctv-academy-request .cctv-request-choice__grid{\n    grid-template-columns:1fr;\n  }\n}\n\n@media(max-width:480px){\n  #cctv-academy-request .cctv-request-choice__head{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-request-option{\n    grid-template-columns:38px 1fr 26px;\n    gap:10px;\n    padding:14px;\n  }\n\n  #cctv-academy-request .cctv-request-option__number{\n    width:38px;\n    height:38px;\n  }\n}\n\n\n\n\/* ==========================================================\n   STEP 2 \u00b7 MICRO-LEARNING BY TRAINING PATH\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-micro-topics[hidden]{\n  display:none !important;\n}\n\n#cctv-academy-request .cctv-micro-topics{\n  margin:0 0 28px;\n  padding:28px;\n\n  border:1px solid #b9d7ef;\n  border-radius:18px;\n\n  background:\n    radial-gradient(circle at 95% 0,rgba(8,120,232,.07),transparent 30%),\n    linear-gradient(180deg,#fbfdff 0%,#f3f8fc 100%);\n\n  box-shadow:\n    0 10px 28px rgba(7,23,37,.055),\n    inset 0 1px #fff;\n}\n\n#cctv-academy-request .cctv-micro-topics__head{\n  display:grid;\n  grid-template-columns:auto 1fr;\n  gap:16px;\n  align-items:start;\n  margin-bottom:22px;\n}\n\n#cctv-academy-request .cctv-micro-topics__step{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n\n  min-height:34px;\n  padding:7px 11px;\n\n  border-radius:999px;\n  background:var(--blue);\n  color:#fff;\n\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-micro-topics__intro h3{\n  margin:0 0 6px;\n  color:var(--navy);\n\n  font-size:25px;\n  line-height:1.1;\n  letter-spacing:-.02em;\n}\n\n#cctv-academy-request .cctv-micro-topics__intro p{\n  max-width:830px;\n  margin:0;\n\n  color:var(--muted);\n  font-size:13px;\n  line-height:1.62;\n}\n\n\/* ---- THREE TRAINING PATHS ---- *\/\n\n#cctv-academy-request .cctv-micro-tracks{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:12px;\n\n  margin-bottom:17px;\n}\n\n#cctv-academy-request .cctv-micro-track{\n  appearance:none;\n  -webkit-appearance:none;\n\n  position:relative;\n\n  display:grid;\n  grid-template-columns:38px 1fr auto;\n  gap:11px;\n  align-items:center;\n\n  width:100%;\n  min-height:105px;\n  margin:0;\n  padding:15px;\n\n  border:1px solid #ccd9e5;\n  border-radius:13px;\n\n  background:#fff;\n  color:var(--text);\n\n  font:inherit;\n  text-align:left;\n\n  cursor:pointer;\n\n  box-shadow:0 5px 15px rgba(7,23,37,.035);\n\n  transition:\n    transform .18s ease,\n    border-color .18s ease,\n    background .18s ease,\n    box-shadow .18s ease;\n}\n\n#cctv-academy-request .cctv-micro-track:hover{\n  transform:translateY(-2px);\n  border-color:#91b9dc;\n  box-shadow:0 8px 20px rgba(7,23,37,.07);\n}\n\n#cctv-academy-request .cctv-micro-track.is-active{\n  border-color:var(--blue);\n\n  background:\n    linear-gradient(180deg,#f7fbff,#eef6fd);\n\n  box-shadow:\n    0 0 0 2px rgba(8,120,232,.09),\n    0 8px 22px rgba(8,120,232,.08);\n}\n\n#cctv-academy-request .cctv-micro-track__number{\n  display:grid;\n  place-items:center;\n\n  width:38px;\n  height:38px;\n\n  border-radius:10px;\n\n  background:var(--soft);\n  color:var(--navy-3);\n\n  font-size:10px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-micro-track.is-active\n.cctv-micro-track__number{\n  background:var(--blue);\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-micro-track__copy{\n  min-width:0;\n}\n\n#cctv-academy-request .cctv-micro-track__copy strong{\n  display:block;\n  margin-bottom:4px;\n\n  color:var(--navy);\n\n  font-size:14px;\n  line-height:1.25;\n}\n\n#cctv-academy-request .cctv-micro-track__copy small{\n  display:block;\n\n  color:var(--muted);\n\n  font-size:10px;\n  line-height:1.42;\n}\n\n#cctv-academy-request .cctv-micro-track__count{\n  display:grid;\n  place-items:center;\n\n  min-width:28px;\n  height:28px;\n  padding:0 7px;\n\n  border-radius:999px;\n\n  background:#eef3f8;\n  color:#60758a;\n\n  font-size:10px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-micro-track.is-active\n.cctv-micro-track__count{\n  background:var(--blue);\n  color:#fff;\n}\n\n\/* ---- DATA SOURCE ---- *\/\n\n#cctv-academy-request .cctv-micro-topics__source{\n  display:flex;\n  align-items:center;\n  gap:8px;\n\n  margin-bottom:14px;\n  padding:9px 11px;\n\n  border-radius:9px;\n\n  background:#eaf4ff;\n  color:#426987;\n\n  font-size:11px;\n  line-height:1.45;\n}\n\n#cctv-academy-request .cctv-micro-topics__source.is-fallback{\n  background:#fff7e6;\n  color:#745718;\n}\n\n#cctv-academy-request .cctv-micro-topics__pulse{\n  width:7px;\n  height:7px;\n\n  flex:0 0 auto;\n\n  border-radius:50%;\n\n  background:var(--blue);\n  box-shadow:0 0 0 4px rgba(8,120,232,.10);\n}\n\n#cctv-academy-request .cctv-micro-topics__source.is-fallback\n.cctv-micro-topics__pulse{\n  background:var(--amber);\n  box-shadow:0 0 0 4px rgba(217,150,22,.10);\n}\n\n\/* ---- SCROLLABLE TOPIC WINDOW ---- *\/\n\n#cctv-academy-request .cctv-micro-topics__viewport{\n  overflow:hidden;\n\n  border:1px solid #d5e1eb;\n  border-radius:14px;\n\n  background:#edf3f8;\n}\n\n#cctv-academy-request .cctv-micro-topics__viewport-head{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:18px;\n\n  padding:12px 14px;\n\n  border-bottom:1px solid #d5e1eb;\n\n  background:#fff;\n}\n\n#cctv-academy-request .cctv-micro-topics__viewport-head > div{\n  display:flex;\n  align-items:center;\n  gap:8px;\n\n  color:var(--muted);\n\n  font-size:10px;\n  font-weight:800;\n  text-transform:uppercase;\n  letter-spacing:.04em;\n}\n\n#cctv-academy-request .cctv-micro-topics__viewport-head strong{\n  color:var(--navy);\n}\n\n#cctv-academy-request .cctv-micro-topics__scroll-note{\n  color:#778b9d;\n\n  font-size:10px;\n  font-weight:700;\n  text-align:right;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:12px;\n\n  \/*\n   * 3 rows of cards = max. 9 subjects visible at once on desktop.\n   * Additional subjects remain in the same compact scroll window.\n   *\/\n  max-height:558px;\n  overflow-y:auto;\n  overscroll-behavior:contain;\n\n  padding:14px;\n\n  scrollbar-width:thin;\n  scrollbar-color:#91a8bc transparent;\n\n  scroll-snap-type:y proximity;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid::-webkit-scrollbar{\n  width:8px;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid::-webkit-scrollbar-track{\n  background:transparent;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid::-webkit-scrollbar-thumb{\n  border:2px solid transparent;\n  border-radius:999px;\n  background:#9bb0c1;\n  background-clip:padding-box;\n}\n\n#cctv-academy-request .cctv-micro-topic{\n  position:relative;\n\n  display:flex;\n  flex-direction:column;\n\n  min-height:168px;\n  padding:16px;\n\n  border:1px solid #d1dee9;\n  border-radius:12px;\n\n  background:#fff;\n\n  text-align:left;\n\n  box-shadow:0 4px 13px rgba(7,23,37,.035);\n\n  cursor:pointer;\n\n  scroll-snap-align:start;\n\n  transition:\n    transform .18s ease,\n    border-color .18s ease,\n    box-shadow .18s ease,\n    background .18s ease;\n}\n\n#cctv-academy-request .cctv-micro-topic:hover{\n  transform:translateY(-2px);\n  border-color:#95bad9;\n  box-shadow:0 8px 20px rgba(7,23,37,.075);\n}\n\n#cctv-academy-request .cctv-micro-topic.is-selected{\n  border-color:var(--blue);\n  background:#f2f8ff;\n\n  box-shadow:\n    0 0 0 2px rgba(8,120,232,.09),\n    0 8px 22px rgba(8,120,232,.08);\n}\n\n#cctv-academy-request .cctv-micro-topic__top{\n  display:flex;\n  align-items:flex-start;\n  justify-content:space-between;\n  gap:10px;\n\n  margin-bottom:10px;\n}\n\n#cctv-academy-request .cctv-micro-topic__label{\n  display:inline-flex;\n  align-items:center;\n\n  min-height:24px;\n  padding:5px 8px;\n\n  border-radius:999px;\n\n  background:var(--soft);\n  color:var(--blue-dark);\n\n  font-size:8px;\n  font-weight:900;\n  letter-spacing:.06em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-micro-topic__check{\n  display:grid;\n  place-items:center;\n\n  width:25px;\n  height:25px;\n\n  flex:0 0 auto;\n\n  border:1px solid #cad8e4;\n  border-radius:50%;\n\n  background:#fff;\n  color:transparent;\n\n  font-size:12px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-micro-topic.is-selected\n.cctv-micro-topic__check{\n  border-color:var(--blue);\n  background:var(--blue);\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-micro-topic h4{\n  margin:0 0 7px;\n\n  color:var(--navy);\n\n  font-size:14px;\n  line-height:1.28;\n}\n\n#cctv-academy-request .cctv-micro-topic p{\n  flex:1;\n\n  margin:0 0 10px;\n\n  color:var(--muted);\n\n  font-size:10px;\n  line-height:1.48;\n}\n\n#cctv-academy-request .cctv-micro-topic__link{\n  color:var(--blue-dark);\n\n  font-size:9px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-micro-topic__link::after{\n  content:\" \u2197\";\n}\n\n#cctv-academy-request .cctv-micro-topics__empty{\n  grid-column:1 \/ -1;\n\n  padding:32px;\n\n  border:1px dashed #cbd9e6;\n  border-radius:12px;\n\n  background:#fff;\n  color:var(--muted);\n\n  text-align:center;\n\n  font-size:13px;\n}\n\n#cctv-academy-request .cctv-micro-topics__bottom{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:15px;\n\n  margin-top:17px;\n  padding-top:15px;\n\n  border-top:1px solid var(--border);\n}\n\n#cctv-academy-request .cctv-micro-topics__selected{\n  display:flex;\n  align-items:center;\n  gap:9px;\n\n  color:var(--muted);\n\n  font-size:12px;\n}\n\n#cctv-academy-request .cctv-micro-topics__selected strong{\n  display:grid;\n  place-items:center;\n\n  min-width:30px;\n  height:30px;\n  padding:0 8px;\n\n  border-radius:999px;\n\n  background:var(--blue);\n  color:#fff;\n\n  font-size:12px;\n}\n\n#cctv-academy-request .cctv-micro-topics__clear{\n  appearance:none;\n\n  padding:7px 11px;\n\n  border:1px solid #c5d5e3;\n  border-radius:10px;\n\n  background:#fff;\n  color:var(--navy);\n\n  font:inherit;\n  font-size:11px;\n  font-weight:900;\n\n  cursor:pointer;\n\n  transition:.18s ease;\n}\n\n#cctv-academy-request .cctv-micro-topics__clear:hover{\n  border-color:#91b9dc;\n  background:#f8fbfe;\n  color:var(--blue-dark);\n}\n\n#cctv-academy-request .cctv-micro-topics__summary{\n  margin-top:14px;\n  padding:13px 14px;\n\n  border-left:4px solid var(--blue);\n\n  background:#fff;\n  color:#41566b;\n\n  font-size:12px;\n  line-height:1.6;\n}\n\n@media(max-width:960px){\n  #cctv-academy-request .cctv-micro-tracks{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__grid{\n    grid-template-columns:repeat(2,minmax(0,1fr));\n    max-height:558px;\n  }\n}\n\n@media(max-width:650px){\n  #cctv-academy-request .cctv-micro-topics{\n    padding:21px;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__head{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__step{\n    justify-self:start;\n  }\n\n  #cctv-academy-request .cctv-micro-track{\n    min-height:94px;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__viewport-head{\n    align-items:flex-start;\n    flex-direction:column;\n    gap:5px;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__scroll-note{\n    text-align:left;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__grid{\n    grid-template-columns:1fr;\n\n    \/*\n     * Mobile stays compact. It never exposes more than the\n     * desktop maximum and remains naturally scrollable.\n     *\/\n    max-height:540px;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__bottom{\n    align-items:flex-start;\n    flex-direction:column;\n  }\n}\n\n\n\/* ==========================================================\n   STEP 3 \u00b7 MICRO-LEARNING PRACTICAL INTAKE\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-micro-intake[hidden]{\n  display:none !important;\n}\n\n#cctv-academy-request .cctv-micro-intake{\n  margin:0 0 28px;\n  padding:28px;\n\n  border:1px solid #c8d9e7;\n  border-radius:18px;\n\n  background:\n    radial-gradient(circle at 100% 0,rgba(8,120,232,.05),transparent 32%),\n    #fff;\n\n  box-shadow:0 10px 28px rgba(7,23,37,.05);\n}\n\n#cctv-academy-request .cctv-micro-intake__head{\n  display:grid;\n  grid-template-columns:auto 1fr;\n  gap:16px;\n  align-items:start;\n\n  margin-bottom:22px;\n}\n\n#cctv-academy-request .cctv-micro-intake__step{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n\n  min-height:34px;\n  padding:7px 11px;\n\n  border-radius:999px;\n\n  background:var(--navy);\n  color:#fff;\n\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-micro-intake__head h3{\n  margin:0 0 6px;\n\n  color:var(--navy);\n\n  font-size:25px;\n  line-height:1.1;\n  letter-spacing:-.02em;\n}\n\n#cctv-academy-request .cctv-micro-intake__head p{\n  max-width:820px;\n  margin:0;\n\n  color:var(--muted);\n\n  font-size:13px;\n  line-height:1.62;\n}\n\n#cctv-academy-request .cctv-micro-intake__grid{\n  display:grid;\n  grid-template-columns:1fr 1fr;\n  gap:16px;\n}\n\n#cctv-academy-request .cctv-micro-intake__field{\n  display:flex;\n  flex-direction:column;\n  gap:7px;\n\n  min-width:0;\n}\n\n#cctv-academy-request .cctv-micro-intake__field > span{\n  color:var(--navy);\n\n  font-size:13px;\n  font-weight:900;\n  line-height:1.35;\n}\n\n#cctv-academy-request .cctv-micro-intake__field textarea{\n  width:100%;\n  min-height:136px;\n  padding:13px 14px;\n\n  border:1px solid #cbd8e4;\n  border-radius:11px;\n\n  background:#fbfdff;\n  color:var(--text);\n\n  font:inherit;\n  font-size:13px;\n  line-height:1.55;\n\n  resize:vertical;\n  outline:none;\n\n  transition:\n    border-color .18s ease,\n    box-shadow .18s ease,\n    background .18s ease;\n}\n\n#cctv-academy-request .cctv-micro-intake__field textarea:focus{\n  border-color:var(--blue);\n  background:#fff;\n  box-shadow:0 0 0 3px rgba(8,120,232,.09);\n}\n\n#cctv-academy-request .cctv-micro-intake__field small{\n  color:#75879a;\n\n  font-size:10px;\n  line-height:1.5;\n}\n\n#cctv-academy-request .cctv-micro-intake__status{\n  display:flex;\n  align-items:center;\n  gap:9px;\n\n  margin-top:18px;\n  padding-top:15px;\n\n  border-top:1px solid var(--border);\n\n  color:#4d6880;\n\n  font-size:11px;\n  line-height:1.5;\n}\n\n#cctv-academy-request .cctv-micro-intake__status-dot{\n  width:8px;\n  height:8px;\n\n  flex:0 0 auto;\n\n  border-radius:50%;\n\n  background:var(--green);\n\n  box-shadow:0 0 0 4px rgba(31,138,99,.10);\n}\n\n@media(max-width:720px){\n  #cctv-academy-request .cctv-micro-intake{\n    padding:21px;\n  }\n\n  #cctv-academy-request .cctv-micro-intake__head,\n  #cctv-academy-request .cctv-micro-intake__grid{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-micro-intake__step{\n    justify-self:start;\n  }\n}\n\n\n\/* ==========================================================\n   FORMINATOR 49521 \u00b7 DESIGN + FIELD REARRANGEMENT\n\n   This intentionally targets the real Forminator form even when\n   the Elementor Shortcode widget sits directly BELOW this HTML widget.\n   ========================================================== *\/\n\n#forminator-module-49521{\n  display:grid !important;\n  grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n  gap:18px 18px !important;\n\n  margin-top:24px !important;\n  padding:30px !important;\n\n  border:1px solid #dce5ef !important;\n  border-radius:20px !important;\n\n  background:#fff !important;\n\n  box-shadow:0 14px 40px rgba(7,23,37,.07) !important;\n\n  font-family:Arial,Helvetica,sans-serif !important;\n}\n\n#forminator-module-49521 .forminator-row{\n  display:contents !important;\n}\n\n#forminator-module-49521 .forminator-col{\n  min-width:0 !important;\n  margin:0 !important;\n  padding:0 !important;\n}\n\n#forminator-module-49521 .forminator-field{\n  margin:0 !important;\n}\n\n#forminator-module-49521 .forminator-label{\n  display:block !important;\n\n  margin:0 0 7px !important;\n\n  color:#071725 !important;\n\n  font-size:13px !important;\n  font-weight:800 !important;\n  line-height:1.35 !important;\n}\n\n#forminator-module-49521 input.forminator-input,\n#forminator-module-49521 textarea.forminator-textarea,\n#forminator-module-49521 select,\n#forminator-module-49521 .select2-selection{\n  width:100% !important;\n  min-height:50px !important;\n\n  padding:12px 13px !important;\n\n  border:1px solid #cbd7e4 !important;\n  border-radius:10px !important;\n\n  background:#fbfdff !important;\n  color:#26384d !important;\n\n  box-shadow:none !important;\n\n  font-size:14px !important;\n\n  transition:\n    border-color .18s ease,\n    box-shadow .18s ease,\n    background .18s ease !important;\n}\n\n#forminator-module-49521 input.forminator-input:focus,\n#forminator-module-49521 textarea.forminator-textarea:focus,\n#forminator-module-49521 select:focus{\n  border-color:#0878e8 !important;\n  background:#fff !important;\n  box-shadow:0 0 0 3px rgba(8,120,232,.10) !important;\n  outline:none !important;\n}\n\n#forminator-module-49521 textarea.forminator-textarea{\n  min-height:135px !important;\n  resize:vertical !important;\n}\n\n\/* Give content-heavy fields the full width *\/\n#forminator-module-49521 .forminator-col:has(textarea),\n#forminator-module-49521 .forminator-col:has(.forminator-field-radio),\n#forminator-module-49521 .forminator-col:has(.forminator-field-checkbox),\n#forminator-module-49521 .forminator-col:has(.forminator-field-upload),\n#forminator-module-49521 .forminator-col:has(.forminator-field-html),\n#forminator-module-49521 .forminator-col:has(.forminator-button-submit),\n#forminator-module-49521 .forminator-col:has(.forminator-button){\n  grid-column:1 \/ -1 !important;\n}\n\n#forminator-module-49521 .forminator-description{\n  margin-top:6px !important;\n  color:#718296 !important;\n  font-size:11px !important;\n  line-height:1.5 !important;\n}\n\n#forminator-module-49521 .forminator-checkbox,\n#forminator-module-49521 .forminator-radio{\n  margin-bottom:9px !important;\n}\n\n#forminator-module-49521 .forminator-button-submit{\n  min-height:54px !important;\n  padding:14px 25px !important;\n\n  border:0 !important;\n  border-radius:10px !important;\n\n  background:#0878e8 !important;\n  color:#fff !important;\n\n  font-size:14px !important;\n  font-weight:900 !important;\n\n  box-shadow:0 8px 20px rgba(8,120,232,.22) !important;\n\n  cursor:pointer !important;\n\n  transition:\n    transform .18s ease,\n    background .18s ease,\n    box-shadow .18s ease !important;\n}\n\n#forminator-module-49521 .forminator-button-submit:hover{\n  transform:translateY(-1px) !important;\n  background:#0663bd !important;\n  box-shadow:0 10px 24px rgba(8,120,232,.28) !important;\n}\n\n\/* ==========================================================\n   RESPONSIVE\n   ========================================================== *\/\n\n@media(max-width:820px){\n  #cctv-academy-request .cctv-intro-grid{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-form-head{\n    grid-template-columns:1fr;\n  }\n\n  #forminator-module-49521{\n    grid-template-columns:1fr !important;\n    padding:22px !important;\n  }\n\n  #forminator-module-49521 .forminator-col{\n    grid-column:1 !important;\n  }\n}\n\n@media(max-width:560px){\n  #cctv-academy-request .cctv-container{\n    width:min(100% - 28px,1160px);\n  }\n\n  #cctv-academy-request .cctv-page-tools{\n    align-items:stretch;\n    flex-direction:column;\n  }\n\n  #cctv-academy-request .cctv-home-button{\n    align-self:flex-start;\n  }\n\n  #cctv-academy-request .cctv-language-bar{\n    justify-content:space-between;\n  }\n\n  #cctv-academy-request .cctv-language-label{\n    font-size:11px;\n  }\n\n  #cctv-academy-request .cctv-hero-content{\n    padding:42px 0 55px;\n  }\n\n  #cctv-academy-request .cctv-card,\n  #cctv-academy-request .cctv-participant-rule,\n  #cctv-academy-request .cctv-form-area{\n    padding:22px;\n  }\n}\n\n\/* ==========================================================\n   DESIGNER OVERRIDE \u00b7 AFFICHE STIJL\n   Volledige pagina in de stijl van de CCTV Academy affiche\n   ========================================================== *\/\n\n#cctv-academy-request{\n  --navy:#17202a;\n  --navy-2:#202b35;\n  --navy-3:#2f3a46;\n  --blue:#aa2c21;\n  --blue-dark:#7f1d17;\n  --cyan:#be9d52;\n\n  --paper:#efe5d1;\n  --white:#fbf7ef;\n  --text:#27323c;\n  --muted:#6e675a;\n  --border:#b7ab93;\n  --soft:#f5ecda;\n  --green:#5f6d4d;\n  --green-soft:#edf1e7;\n  --amber:#c69a3a;\n  --amber-soft:#fbf1da;\n\n  font-family:Arial,Helvetica,sans-serif;\n  color:var(--text);\n  background:\n    radial-gradient(circle at 20% 10%,rgba(255,255,255,.30),transparent 18%),\n    radial-gradient(circle at 90% 20%,rgba(0,0,0,.04),transparent 18%),\n    radial-gradient(circle at 10% 80%,rgba(0,0,0,.03),transparent 20%),\n    linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.03)),\n    var(--paper);\n}\n\n#cctv-academy-request::before{\n  content:\"\";\n  position:absolute;\n  inset:18px;\n  z-index:0;\n  pointer-events:none;\n  border:2px solid rgba(32,29,25,.42);\n  opacity:.95;\n}\n\n#cctv-academy-request::after{\n  content:\"\";\n  position:absolute;\n  inset:32px;\n  z-index:0;\n  pointer-events:none;\n  border:1px solid rgba(32,29,25,.22);\n}\n\n#cctv-academy-request .cctv-container{\n  position:relative;\n  z-index:2;\n  width:min(1180px,calc(100% - 44px));\n}\n\n#cctv-academy-request h1,\n#cctv-academy-request h2,\n#cctv-academy-request h3,\n#cctv-academy-request h4{\n  font-family:Georgia,\"Times New Roman\",serif;\n  letter-spacing:-.02em;\n  color:#173348;\n}\n\n#cctv-academy-request .cctv-poster-zone{\n  padding:26px 0 8px;\n  background:transparent;\n}\n\n#cctv-academy-request .cctv-poster{\n  border:1px solid rgba(29,30,31,.24);\n  border-radius:0;\n  background:#efe5d1;\n  box-shadow:0 18px 45px rgba(42,31,18,.12);\n}\n\n#cctv-academy-request .cctv-poster::before,\n#cctv-academy-request .cctv-poster::after{\n  content:\"\";\n  position:absolute;\n  pointer-events:none;\n  opacity:.28;\n  border-color:#2d2b28;\n}\n\n#cctv-academy-request .cctv-poster::before{\n  inset:16px;\n  border-top:1px solid;\n  border-bottom:1px solid;\n}\n\n#cctv-academy-request .cctv-poster::after{\n  inset:24px;\n  border-left:1px solid;\n  border-right:1px solid;\n}\n\n#cctv-academy-request .cctv-poster img{\n  max-height:none;\n  background:#efe5d1;\n}\n\n#cctv-academy-request .cctv-hero{\n  color:var(--text);\n  background:\n    linear-gradient(rgba(66,57,42,.08) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(66,57,42,.08) 1px,transparent 1px),\n    radial-gradient(circle at 18% 10%,rgba(255,255,255,.30),transparent 18%),\n    linear-gradient(180deg,rgba(255,255,255,.15),rgba(177,162,135,.10)),\n    var(--paper);\n  background-size:38px 38px,38px 38px,auto,auto,auto;\n  border-top:1px solid rgba(31,31,31,.12);\n  border-bottom:1px solid rgba(31,31,31,.16);\n}\n\n#cctv-academy-request .cctv-hero::before{\n  opacity:.18;\n  background:\n    linear-gradient(rgba(0,0,0,.07) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(0,0,0,.07) 1px,transparent 1px);\n  background-size:76px 76px;\n}\n\n#cctv-academy-request .cctv-page-tools{\n  padding:18px 0 8px;\n}\n\n#cctv-academy-request .cctv-home-button,\n#cctv-academy-request .cctv-language-switcher{\n  box-shadow:none;\n  backdrop-filter:none;\n}\n\n#cctv-academy-request .cctv-home-button{\n  border:1px solid rgba(32,29,25,.34);\n  border-radius:0;\n  background:#d8ab47;\n  color:#111!important;\n  text-transform:uppercase;\n  letter-spacing:.08em;\n}\n\n#cctv-academy-request .cctv-home-button:hover{\n  background:#c89b35;\n  transform:translateY(-1px);\n}\n\n#cctv-academy-request .cctv-home-icon{\n  background:#fff3d4;\n  color:#1e1e1e;\n  border-radius:0;\n  border:1px solid rgba(0,0,0,.18);\n}\n\n#cctv-academy-request .cctv-language-bar{\n  color:#534b3f;\n}\n\n#cctv-academy-request .cctv-language-switcher{\n  border:1px solid rgba(32,29,25,.34);\n  border-radius:0;\n  background:#f7efdd;\n}\n\n#cctv-academy-request .cctv-language-switcher button{\n  color:#2b3138;\n  border-right:1px solid rgba(32,29,25,.16);\n}\n\n#cctv-academy-request .cctv-language-switcher button:hover{\n  background:#ece1c8;\n}\n\n#cctv-academy-request .cctv-language-switcher button.is-active{\n  background:#aa2c21;\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-hero-content{\n  max-width:1000px;\n  padding:34px 0 64px;\n}\n\n#cctv-academy-request .cctv-kicker{\n  border:1px solid rgba(32,29,25,.28);\n  border-radius:0;\n  background:#d8ab47;\n  color:#111;\n  font-size:12px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-kicker::before{\n  content:\"\";\n  width:10px;\n  height:10px;\n  border-radius:50%;\n  background:#aa2c21;\n  box-shadow:0 0 0 2px rgba(0,0,0,.08);\n}\n\n#cctv-academy-request .cctv-hero h1{\n  max-width:900px;\n  margin:0 0 18px;\n  color:#173348;\n  font-size:clamp(36px,5.8vw,64px);\n  line-height:1.02;\n  text-shadow:none;\n}\n\n#cctv-academy-request .cctv-hero p{\n  max-width:860px;\n  color:#5c5b58;\n  font-size:18px;\n  line-height:1.7;\n}\n\n#cctv-academy-request .cctv-main{\n  position:relative;\n  padding:42px 0 78px;\n  background:transparent;\n}\n\n#cctv-academy-request .cctv-main::before{\n  content:\"\";\n  position:absolute;\n  left:52%;\n  top:0;\n  bottom:0;\n  width:1px;\n  background:linear-gradient(180deg,transparent,rgba(29,30,31,.10),transparent);\n  pointer-events:none;\n}\n\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-form-area,\n#cctv-academy-request .cctv-request-choice,\n#cctv-academy-request .cctv-micro-topics,\n#cctv-academy-request .cctv-micro-intake{\n  position:relative;\n  overflow:hidden;\n  border:1px solid var(--border);\n  border-radius:0;\n  background:\n    linear-gradient(180deg,rgba(255,255,255,.42),rgba(255,255,255,.18)),\n    var(--white);\n  box-shadow:0 14px 35px rgba(46,34,20,.07);\n}\n\n#cctv-academy-request .cctv-card::before,\n#cctv-academy-request .cctv-form-area::before,\n#cctv-academy-request .cctv-request-choice::before,\n#cctv-academy-request .cctv-micro-topics::before,\n#cctv-academy-request .cctv-micro-intake::before{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:0;\n  width:100%;\n  height:5px;\n  background:linear-gradient(90deg,#173348 0 26%,#aa2c21 26% 52%,#d8ab47 52% 76%,#5f6d4d 76% 100%);\n}\n\n#cctv-academy-request .cctv-card h2,\n#cctv-academy-request .cctv-form-head h2,\n#cctv-academy-request .cctv-request-choice__head h3,\n#cctv-academy-request .cctv-micro-topics__intro h3,\n#cctv-academy-request .cctv-micro-intake__head h3{\n  color:#173348;\n}\n\n#cctv-academy-request .cctv-card p,\n#cctv-academy-request .cctv-form-area p,\n#cctv-academy-request .cctv-request-choice__head p,\n#cctv-academy-request .cctv-micro-topics__intro p,\n#cctv-academy-request .cctv-micro-intake__head p{\n  color:#60584c;\n}\n\n#cctv-academy-request .cctv-process-item{\n  border:1px solid rgba(32,29,25,.14);\n  border-radius:0;\n  background:#f6efdf;\n}\n\n#cctv-academy-request .cctv-process-number,\n#cctv-academy-request .cctv-request-option__number,\n#cctv-academy-request .cctv-micro-topics__step,\n#cctv-academy-request .cctv-micro-intake__step{\n  border-radius:0;\n  background:#d8ab47;\n  color:#111;\n  border:1px solid rgba(0,0,0,.16);\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-form-badge,\n#cctv-academy-request .cctv-participant-label,\n#cctv-academy-request .cctv-micro-exception{\n  border-radius:0;\n  border:1px solid rgba(32,29,25,.22);\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-form-badge{\n  background:#173348;\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-participant-label{\n  background:#f6ebd0;\n  color:#4b422f;\n}\n\n#cctv-academy-request .cctv-micro-exception{\n  background:#fbf0e9;\n  color:#7d372a;\n}\n\n#cctv-academy-request .cctv-request-option,\n#cctv-academy-request .cctv-micro-track,\n#cctv-academy-request .cctv-micro-topic,\n#cctv-academy-request .cctv-micro-intake__field{\n  border:1px solid rgba(32,29,25,.16);\n  border-radius:0;\n  background:#fbf7ef;\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-request-option:hover,\n#cctv-academy-request .cctv-micro-track:hover,\n#cctv-academy-request .cctv-micro-topic:hover{\n  transform:translateY(-2px);\n  border-color:#857052;\n  box-shadow:0 12px 24px rgba(46,34,20,.08);\n}\n\n#cctv-academy-request .cctv-request-option.is-active,\n#cctv-academy-request .cctv-micro-track.is-active,\n#cctv-academy-request .cctv-micro-topic.is-selected{\n  border-color:#aa2c21;\n  background:\n    linear-gradient(180deg,rgba(170,44,33,.07),rgba(170,44,33,.03)),\n    #fbf7ef;\n  box-shadow:0 14px 28px rgba(170,44,33,.08);\n}\n\n#cctv-academy-request .cctv-request-option__check,\n#cctv-academy-request .cctv-micro-topic__check{\n  border-radius:0;\n  background:#173348;\n}\n\n#cctv-academy-request .cctv-request-option.is-active .cctv-request-option__check,\n#cctv-academy-request .cctv-micro-topic.is-selected .cctv-micro-topic__check{\n  background:#aa2c21;\n}\n\n#cctv-academy-request .cctv-request-choice__status,\n#cctv-academy-request .cctv-micro-intake__status,\n#cctv-academy-request .cctv-micro-topics__source,\n#cctv-academy-request .cctv-micro-topics__viewport{\n  border-radius:0;\n  border:1px solid rgba(32,29,25,.16);\n  background:#f6efdf;\n  color:#5e5447;\n}\n\n#cctv-academy-request .cctv-micro-topics__pulse{\n  background:#aa2c21;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid{\n  border-top:1px dashed rgba(32,29,25,.16);\n  border-bottom:1px dashed rgba(32,29,25,.16);\n  background:\n    linear-gradient(180deg,rgba(255,255,255,.32),rgba(255,255,255,.10)),\n    #fcf8f0;\n}\n\n#cctv-academy-request .cctv-micro-topics__grid::-webkit-scrollbar-thumb{\n  background:#b89f73;\n}\n\n#cctv-academy-request .cctv-micro-topic__label{\n  border-radius:0;\n  border:1px solid rgba(32,29,25,.14);\n  background:#ece1c8;\n  color:#3f4631;\n  font-weight:800;\n  text-transform:uppercase;\n  letter-spacing:.04em;\n}\n\n#cctv-academy-request .cctv-micro-topic h4{\n  color:#173348;\n  font-size:24px;\n  line-height:1.2;\n}\n\n#cctv-academy-request .cctv-micro-topic p{\n  color:#5e584d;\n}\n\n#cctv-academy-request .cctv-micro-topic__link,\n#cctv-academy-request .cctv-micro-topics__clear{\n  color:#173348;\n  font-weight:800;\n}\n\n#cctv-academy-request .cctv-micro-topics__clear{\n  border:1px solid rgba(32,29,25,.16);\n  border-radius:0;\n  background:#efe6d4;\n}\n\n#cctv-academy-request .cctv-micro-topics__clear:hover{\n  background:#e5dac1;\n}\n\n#cctv-academy-request .cctv-micro-topics__selected strong{\n  color:#173348;\n}\n\n#cctv-academy-request .cctv-micro-topics__summary{\n  color:#655c50;\n}\n\n#cctv-academy-request .cctv-micro-intake__field label{\n  color:#173348;\n  font-weight:800;\n}\n\n#cctv-academy-request .cctv-micro-intake__field input,\n#cctv-academy-request .cctv-micro-intake__field select,\n#cctv-academy-request .cctv-micro-intake__field textarea,\n#cctv-academy-request .forminator-ui input.forminator-input,\n#cctv-academy-request .forminator-ui textarea.forminator-textarea,\n#cctv-academy-request .forminator-ui select{\n  border:1px solid #b7ab93 !important;\n  border-radius:0 !important;\n  background:#fffdf8 !important;\n  color:#26384d !important;\n  box-shadow:none !important;\n}\n\n#cctv-academy-request .cctv-micro-intake__field input:focus,\n#cctv-academy-request .cctv-micro-intake__field select:focus,\n#cctv-academy-request .cctv-micro-intake__field textarea:focus,\n#cctv-academy-request .forminator-ui input.forminator-input:focus,\n#cctv-academy-request .forminator-ui textarea.forminator-textarea:focus,\n#cctv-academy-request .forminator-ui select:focus{\n  outline:none;\n  border-color:#aa2c21 !important;\n  box-shadow:0 0 0 3px rgba(170,44,33,.10) !important;\n}\n\n#cctv-academy-request .forminator-ui .forminator-label{\n  color:#173348 !important;\n  font-weight:800 !important;\n}\n\n#cctv-academy-request .forminator-ui .forminator-button-submit{\n  border-radius:0 !important;\n  border:1px solid rgba(0,0,0,.18) !important;\n  background:#aa2c21 !important;\n  color:#fff !important;\n  text-transform:uppercase;\n  letter-spacing:.05em;\n  font-weight:900 !important;\n  box-shadow:none !important;\n}\n\n#cctv-academy-request .forminator-ui .forminator-button-submit:hover{\n  background:#8b2118 !important;\n}\n\n#cctv-academy-request .cctv-form-anchor{\n  position:relative;\n}\n\n#cctv-academy-request .cctv-form-anchor::before{\n  content:\"\";\n  position:absolute;\n  right:18px;\n  top:18px;\n  width:140px;\n  height:140px;\n  opacity:.08;\n  background:\n    linear-gradient(rgba(23,51,72,.45) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(23,51,72,.45) 1px,transparent 1px);\n  background-size:18px 18px;\n  pointer-events:none;\n}\n\n@media (max-width:900px){\n  #cctv-academy-request::before{\n    inset:10px;\n  }\n\n  #cctv-academy-request::after{\n    inset:20px;\n  }\n\n  #cctv-academy-request .cctv-main::before{\n    display:none;\n  }\n\n  #cctv-academy-request .cctv-hero-content{\n    padding:26px 0 50px;\n  }\n\n  #cctv-academy-request .cctv-micro-topic h4{\n    font-size:21px;\n  }\n}\n\n\n\/* ==========================================================\n   CSS-ONLY LANGUAGE SWITCH \u00b7 ELEMENTOR SAFE\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-lang-radio{\n  position:absolute!important;\n  width:1px!important;\n  height:1px!important;\n  margin:-1px!important;\n  padding:0!important;\n  overflow:hidden!important;\n  clip:rect(0 0 0 0)!important;\n  clip-path:inset(50%)!important;\n  white-space:nowrap!important;\n  border:0!important;\n}\n\n#cctv-academy-request .cctv-lang-copy{\n  display:none;\n}\n\n\/* De zichtbare pagina vertaalt puur op basis van de gekozen radio. *\/\n#cctv-lang-nl:checked ~ * .cctv-lang-copy--nl,\n#cctv-lang-fr:checked ~ * .cctv-lang-copy--fr,\n#cctv-lang-en:checked ~ * .cctv-lang-copy--en{\n  display:inline;\n}\n\n#cctv-academy-request .cctv-language-switcher label{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-width:42px;\n  margin:0;\n  padding:8px 11px;\n  border:0;\n  border-right:1px solid rgba(32,29,25,.16);\n  border-radius:0;\n  background:transparent;\n  color:#2b3138;\n  font:inherit;\n  font-size:12px;\n  font-weight:900;\n  cursor:pointer;\n  user-select:none;\n  transition:background .18s ease,color .18s ease;\n}\n\n#cctv-academy-request .cctv-language-switcher label:last-child{\n  border-right:0;\n}\n\n#cctv-academy-request .cctv-language-switcher label:hover{\n  background:#ece1c8;\n}\n\n#cctv-lang-nl:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-nl\"],\n#cctv-lang-fr:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-fr\"],\n#cctv-lang-en:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-en\"]{\n  background:#aa2c21;\n  color:#fff;\n}\n\n#cctv-lang-nl:focus-visible ~ * .cctv-language-switcher label[for=\"cctv-lang-nl\"],\n#cctv-lang-fr:focus-visible ~ * .cctv-language-switcher label[for=\"cctv-lang-fr\"],\n#cctv-lang-en:focus-visible ~ * .cctv-language-switcher label[for=\"cctv-lang-en\"]{\n  outline:3px solid rgba(170,44,33,.24);\n  outline-offset:2px;\n}\n\n\n\n\/* ==========================================================\n   DESIGN UPGRADE \u00b7 WHITESPACE + VISUAL STORYTELLING\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-poster-zone{\n  padding:20px 0 8px;\n  background:\n    radial-gradient(circle at 50% 0,rgba(84,184,255,.14),transparent 38%),\n    linear-gradient(180deg,#142838 0%,#102130 100%);\n}\n\n#cctv-academy-request .cctv-poster{\n  max-width:760px;\n  margin:0 auto;\n  border-radius:20px;\n  box-shadow:0 16px 42px rgba(0,0,0,.20);\n}\n\n#cctv-academy-request .cctv-poster img{\n  max-height:420px;\n}\n\n#cctv-academy-request .cctv-hero .cctv-container{\n  width:min(1180px,calc(100% - 40px));\n}\n\n#cctv-academy-request .cctv-hero-content{\n  max-width:1080px;\n  padding:62px 0 92px;\n}\n\n#cctv-academy-request .cctv-hero p{\n  max-width:760px;\n}\n\n#cctv-academy-request .cctv-hero-highlights{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:16px;\n  margin-top:28px;\n}\n\n#cctv-academy-request .cctv-hero-highlight{\n  padding:16px 18px;\n  border:1px solid rgba(255,255,255,.14);\n  border-radius:18px;\n  background:rgba(255,255,255,.07);\n  box-shadow:0 10px 24px rgba(0,0,0,.10);\n  backdrop-filter:blur(10px);\n}\n\n#cctv-academy-request .cctv-hero-highlight strong{\n  display:block;\n  margin-bottom:5px;\n  color:#fff;\n  font-size:14px;\n}\n\n#cctv-academy-request .cctv-hero-highlight span{\n  display:block;\n  color:rgba(255,255,255,.78);\n  font-size:13px;\n  line-height:1.55;\n}\n\n#cctv-academy-request .cctv-main{\n  padding:62px 0 110px;\n}\n\n#cctv-academy-request .cctv-intro-grid{\n  gap:32px;\n  margin-bottom:42px;\n}\n\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule,\n#cctv-academy-request .cctv-form-area,\n#cctv-academy-request .cctv-visual-story{\n  border-radius:24px;\n}\n\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule{\n  padding:36px;\n}\n\n#cctv-academy-request .cctv-process-list{\n  margin-top:28px;\n  gap:16px;\n}\n\n#cctv-academy-request .cctv-process-item{\n  padding:12px 0;\n  border-bottom:1px solid rgba(15,34,48,.08);\n}\n\n#cctv-academy-request .cctv-process-item:last-child{\n  border-bottom:0;\n  padding-bottom:0;\n}\n\n#cctv-academy-request .cctv-process-item:first-child{\n  padding-top:0;\n}\n\n#cctv-academy-request .cctv-visual-story{\n  margin:0 0 48px;\n  padding:38px;\n  border:1px solid var(--border);\n  background:\n    radial-gradient(circle at 100% 0,rgba(170,44,33,.06),transparent 28%),\n    linear-gradient(180deg,#ffffff 0%,#f7fafc 100%);\n  box-shadow:0 16px 44px rgba(7,23,37,.06);\n}\n\n#cctv-academy-request .cctv-section-lead{\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:18px;\n  align-items:end;\n  margin-bottom:28px;\n}\n\n#cctv-academy-request .cctv-section-eyebrow{\n  display:inline-flex;\n  align-items:center;\n  gap:8px;\n  margin-bottom:10px;\n  padding:7px 12px;\n  border-radius:999px;\n  background:#f1f6fb;\n  color:var(--navy-3);\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-section-eyebrow::before{\n  content:\"\";\n  width:8px;\n  height:8px;\n  border-radius:50%;\n  background:var(--accent);\n  box-shadow:0 0 0 5px rgba(170,44,33,.12);\n}\n\n#cctv-academy-request .cctv-section-lead h2{\n  margin:0 0 8px;\n  color:var(--navy);\n  font-size:33px;\n  letter-spacing:-.03em;\n}\n\n#cctv-academy-request .cctv-section-lead p{\n  max-width:740px;\n  margin:0;\n  color:var(--muted);\n  line-height:1.75;\n}\n\n#cctv-academy-request .cctv-visual-badge{\n  align-self:start;\n  padding:9px 12px;\n  border-radius:999px;\n  background:#f4ece1;\n  color:#7a5335;\n  font-size:11px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-photo-grid{\n  display:grid;\n  grid-template-columns:1.2fr .8fr .8fr;\n  gap:18px;\n}\n\n#cctv-academy-request .cctv-photo-card{\n  overflow:hidden;\n  border:1px solid #dbe6ef;\n  border-radius:22px;\n  background:#fff;\n  box-shadow:0 12px 30px rgba(7,23,37,.055);\n}\n\n#cctv-academy-request .cctv-photo-card img{\n  display:block;\n  width:100%;\n  height:238px;\n  object-fit:cover;\n}\n\n#cctv-academy-request .cctv-photo-card--feature img{\n  height:310px;\n}\n\n#cctv-academy-request .cctv-photo-card__body{\n  padding:18px 18px 20px;\n}\n\n#cctv-academy-request .cctv-photo-card__title{\n  display:block;\n  margin-bottom:8px;\n  color:var(--navy);\n  font-size:18px;\n  font-weight:800;\n  line-height:1.25;\n}\n\n#cctv-academy-request .cctv-photo-card__text{\n  margin:0 0 12px;\n  color:var(--muted);\n  font-size:14px;\n  line-height:1.7;\n}\n\n#cctv-academy-request .cctv-photo-card__meta{\n  display:flex;\n  flex-wrap:wrap;\n  gap:8px;\n  margin-bottom:12px;\n}\n\n#cctv-academy-request .cctv-photo-chip{\n  display:inline-flex;\n  align-items:center;\n  min-height:30px;\n  padding:6px 10px;\n  border-radius:999px;\n  background:#f0f5fa;\n  color:var(--navy-3);\n  font-size:11px;\n  font-weight:800;\n}\n\n#cctv-academy-request .cctv-photo-source{\n  color:#6a7c8d;\n  font-size:11px;\n  line-height:1.6;\n}\n\n#cctv-academy-request .cctv-photo-source a{\n  text-decoration:underline;\n}\n\n#cctv-academy-request .cctv-form-area{\n  padding:38px;\n  box-shadow:0 18px 44px rgba(7,23,37,.08);\n}\n\n#cctv-academy-request .cctv-form-head{\n  margin-bottom:32px;\n  padding-bottom:28px;\n}\n\n#cctv-academy-request .cctv-request-choice,\n#cctv-academy-request .cctv-micro-topics{\n  margin-bottom:34px;\n}\n\n@media (max-width: 980px){\n  #cctv-academy-request .cctv-hero-highlights,\n  #cctv-academy-request .cctv-photo-grid{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-photo-card img,\n  #cctv-academy-request .cctv-photo-card--feature img{\n    height:240px;\n  }\n\n  #cctv-academy-request .cctv-section-lead{\n    grid-template-columns:1fr;\n  }\n}\n\n@media (max-width: 820px){\n  #cctv-academy-request .cctv-poster{\n    max-width:100%;\n  }\n\n  #cctv-academy-request .cctv-poster img{\n    max-height:280px;\n  }\n\n  #cctv-academy-request .cctv-card,\n  #cctv-academy-request .cctv-participant-rule,\n  #cctv-academy-request .cctv-visual-story,\n  #cctv-academy-request .cctv-form-area{\n    padding:24px;\n  }\n}\n\n\n\/* ==========================================================\n   PREMIUM CONVERSIE DESIGN \u00b7 STEP 13\n   ========================================================== *\/\n\n#cctv-academy-request{\n  --accent:#aa2c21;\n  --accent-dark:#812119;\n  --premium-gold:#c8a85d;\n  --premium-ink:#112838;\n  --premium-soft:#f7f3eb;\n  --premium-line:rgba(17,40,56,.12);\n  scroll-behavior:smooth;\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n}\n\n#cctv-academy-request .cctv-poster-zone{\n  padding:18px 0 12px;\n}\n\n#cctv-academy-request .cctv-poster{\n  max-width:620px;\n  border-radius:22px;\n  border:1px solid rgba(255,255,255,.14);\n  box-shadow:0 18px 55px rgba(5,18,28,.20);\n}\n\n#cctv-academy-request .cctv-poster img{\n  max-height:340px;\n}\n\n#cctv-academy-request .cctv-hero{\n  background:\n    radial-gradient(circle at 84% 18%,rgba(200,168,93,.13),transparent 26%),\n    radial-gradient(circle at 10% 95%,rgba(170,44,33,.14),transparent 28%),\n    linear-gradient(135deg,#0c2130 0%,#132e40 52%,#0f2535 100%);\n}\n\n#cctv-academy-request .cctv-hero-content{\n  max-width:1040px;\n  padding:68px 0 94px;\n}\n\n#cctv-academy-request .cctv-kicker{\n  border-color:rgba(255,255,255,.16);\n  background:rgba(255,255,255,.07);\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-hero h1{\n  max-width:920px;\n  font-size:clamp(42px,5.7vw,68px);\n  line-height:1.01;\n  letter-spacing:-.045em;\n  text-wrap:balance;\n}\n\n#cctv-academy-request .cctv-hero p{\n  max-width:760px;\n  font-size:18px;\n  line-height:1.78;\n}\n\n#cctv-academy-request .cctv-hero-actions{\n  display:flex;\n  flex-wrap:wrap;\n  gap:12px;\n  align-items:center;\n  margin-top:28px;\n}\n\n#cctv-academy-request .cctv-cta{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  gap:12px;\n  min-height:50px;\n  padding:13px 20px;\n  border:1px solid transparent;\n  border-radius:999px;\n  font-size:14px;\n  font-weight:900;\n  letter-spacing:.01em;\n  text-decoration:none!important;\n  transition:\n    transform .18s ease,\n    box-shadow .18s ease,\n    background .18s ease,\n    border-color .18s ease;\n}\n\n#cctv-academy-request .cctv-cta:hover{\n  transform:translateY(-2px);\n}\n\n#cctv-academy-request .cctv-cta--primary{\n  background:var(--accent);\n  color:#fff!important;\n  box-shadow:0 14px 30px rgba(170,44,33,.24);\n}\n\n#cctv-academy-request .cctv-cta--primary:hover{\n  background:var(--accent-dark);\n  box-shadow:0 18px 34px rgba(170,44,33,.28);\n}\n\n#cctv-academy-request .cctv-cta--secondary{\n  border-color:rgba(255,255,255,.20);\n  background:rgba(255,255,255,.07);\n  color:#fff!important;\n}\n\n#cctv-academy-request .cctv-cta--secondary:hover{\n  background:rgba(255,255,255,.12);\n  border-color:rgba(255,255,255,.32);\n}\n\n#cctv-academy-request .cctv-cta__arrow{\n  font-size:18px;\n  transition:transform .18s ease;\n}\n\n#cctv-academy-request .cctv-cta:hover .cctv-cta__arrow{\n  transform:translateX(3px);\n}\n\n#cctv-academy-request .cctv-hero-microcopy{\n  margin-top:12px!important;\n  font-size:12px!important;\n  color:rgba(255,255,255,.62)!important;\n}\n\n#cctv-academy-request .cctv-hero-highlights{\n  gap:14px;\n  margin-top:36px;\n}\n\n#cctv-academy-request .cctv-hero-highlight{\n  min-height:132px;\n  padding:20px;\n  border-color:rgba(255,255,255,.11);\n  border-radius:20px;\n  background:rgba(255,255,255,.055);\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-hero-highlight strong{\n  margin-bottom:8px;\n  font-size:15px;\n}\n\n#cctv-academy-request .cctv-hero-highlight span{\n  font-size:12.5px;\n  line-height:1.65;\n}\n\n#cctv-academy-request .cctv-main{\n  padding:78px 0 126px;\n}\n\n#cctv-academy-request .cctv-intro-grid{\n  gap:34px;\n  margin-bottom:58px;\n}\n\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule,\n#cctv-academy-request .cctv-visual-story,\n#cctv-academy-request .cctv-form-area{\n  border-color:var(--premium-line);\n  box-shadow:0 20px 60px rgba(17,40,56,.065);\n}\n\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule{\n  padding:42px;\n}\n\n#cctv-academy-request .cctv-card h2,\n#cctv-academy-request .cctv-participant-rule h2,\n#cctv-academy-request .cctv-section-lead h2,\n#cctv-academy-request .cctv-form-area h2{\n  text-wrap:balance;\n}\n\n#cctv-academy-request .cctv-visual-story{\n  margin-bottom:38px;\n  padding:44px;\n}\n\n#cctv-academy-request .cctv-photo-grid{\n  gap:20px;\n}\n\n#cctv-academy-request .cctv-photo-card{\n  border-radius:24px;\n  border-color:rgba(17,40,56,.10);\n  box-shadow:0 16px 38px rgba(17,40,56,.07);\n  transition:transform .2s ease,box-shadow .2s ease;\n}\n\n#cctv-academy-request .cctv-photo-card:hover{\n  transform:translateY(-4px);\n  box-shadow:0 22px 46px rgba(17,40,56,.10);\n}\n\n#cctv-academy-request .cctv-photo-card img{\n  height:250px;\n}\n\n#cctv-academy-request .cctv-photo-card--feature img{\n  height:326px;\n}\n\n#cctv-academy-request .cctv-photo-card__body{\n  padding:22px 22px 24px;\n}\n\n#cctv-academy-request .cctv-photo-source{\n  opacity:.72;\n}\n\n#cctv-academy-request .cctv-conversion-band{\n  display:grid;\n  grid-template-columns:minmax(0,1fr) auto;\n  gap:30px;\n  align-items:center;\n  margin:0 0 54px;\n  padding:34px 38px;\n  border:1px solid rgba(200,168,93,.30);\n  border-radius:26px;\n  background:\n    radial-gradient(circle at 90% 10%,rgba(200,168,93,.12),transparent 32%),\n    linear-gradient(135deg,#102838 0%,#173a4d 100%);\n  color:#fff;\n  box-shadow:0 22px 56px rgba(17,40,56,.14);\n}\n\n#cctv-academy-request .cctv-conversion-band__eyebrow{\n  display:inline-block;\n  margin-bottom:9px;\n  color:#dbc486;\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:.10em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-conversion-band h2{\n  max-width:700px;\n  margin:0 0 10px;\n  color:#fff;\n  font-size:30px;\n  line-height:1.13;\n  letter-spacing:-.025em;\n}\n\n#cctv-academy-request .cctv-conversion-band p{\n  max-width:720px;\n  margin:0;\n  color:rgba(255,255,255,.72);\n  line-height:1.7;\n}\n\n#cctv-academy-request .cctv-cta--large{\n  min-height:56px;\n  padding:15px 24px;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-form-area{\n  padding:46px;\n  border-radius:28px;\n}\n\n#cctv-academy-request .cctv-form-head{\n  margin-bottom:22px;\n  padding-bottom:30px;\n}\n\n#cctv-academy-request .cctv-form-confidence{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:10px;\n  margin:0 0 32px;\n}\n\n#cctv-academy-request .cctv-form-confidence > span{\n  display:flex;\n  gap:9px;\n  align-items:center;\n  min-height:46px;\n  padding:10px 12px;\n  border:1px solid rgba(17,40,56,.09);\n  border-radius:14px;\n  background:#f8fafc;\n  color:#566979;\n  font-size:12px;\n  font-weight:700;\n}\n\n#cctv-academy-request .cctv-form-confidence > span::first-letter{\n  color:var(--accent);\n}\n\n#cctv-academy-request .cctv-request-choice,\n#cctv-academy-request .cctv-micro-topics,\n#cctv-academy-request .cctv-micro-intake{\n  padding:32px;\n  border-radius:22px;\n  border-color:rgba(17,40,56,.11);\n}\n\n#cctv-academy-request .cctv-request-choice__grid{\n  gap:16px;\n}\n\n#cctv-academy-request .cctv-request-option{\n  min-height:118px;\n  padding:19px;\n  border-radius:17px;\n}\n\n#cctv-academy-request .cctv-request-option:hover{\n  transform:translateY(-3px);\n}\n\n#cctv-academy-request .cctv-request-option.is-selected,\n#cctv-academy-request .cctv-request-option[aria-pressed=\"true\"]{\n  border-color:var(--accent);\n  box-shadow:0 12px 28px rgba(170,44,33,.10);\n}\n\n#cctv-academy-request .cctv-micro-track{\n  border-radius:17px;\n}\n\n#cctv-academy-request .cctv-micro-topic{\n  border-radius:18px;\n}\n\n#cctv-academy-request .forminator-ui .forminator-button-submit{\n  min-height:54px!important;\n  padding:14px 24px!important;\n  border-radius:999px!important;\n  background:var(--accent)!important;\n  box-shadow:0 12px 26px rgba(170,44,33,.20)!important;\n  transition:transform .18s ease,background .18s ease,box-shadow .18s ease!important;\n}\n\n#cctv-academy-request .forminator-ui .forminator-button-submit:hover{\n  transform:translateY(-2px)!important;\n  background:var(--accent-dark)!important;\n  box-shadow:0 16px 30px rgba(170,44,33,.26)!important;\n}\n\n#cctv-academy-request .cctv-mobile-cta{\n  display:none;\n}\n\n@media (max-width:980px){\n  #cctv-academy-request .cctv-conversion-band{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-conversion-band .cctv-cta{\n    justify-self:start;\n  }\n}\n\n@media (max-width:760px){\n  #cctv-academy-request{\n    padding-bottom:86px;\n  }\n\n  #cctv-academy-request .cctv-container{\n    width:min(100% - 28px,1180px);\n  }\n\n  #cctv-academy-request .cctv-poster-zone{\n    padding:12px 0 6px;\n  }\n\n  #cctv-academy-request .cctv-poster{\n    max-width:92%;\n    border-radius:16px;\n  }\n\n  #cctv-academy-request .cctv-poster img{\n    max-height:230px;\n  }\n\n  #cctv-academy-request .cctv-page-tools{\n    align-items:flex-start;\n    gap:10px;\n  }\n\n  #cctv-academy-request .cctv-language-bar{\n    gap:6px;\n  }\n\n  #cctv-academy-request .cctv-language-label{\n    display:none;\n  }\n\n  #cctv-academy-request .cctv-hero-content{\n    padding:44px 0 62px;\n  }\n\n  #cctv-academy-request .cctv-hero h1{\n    font-size:clamp(36px,12vw,50px);\n    line-height:1.04;\n  }\n\n  #cctv-academy-request .cctv-hero p{\n    font-size:16px;\n    line-height:1.68;\n  }\n\n  #cctv-academy-request .cctv-hero-actions{\n    display:grid;\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-cta{\n    width:100%;\n  }\n\n  #cctv-academy-request .cctv-hero-highlights{\n    grid-template-columns:1fr;\n    gap:10px;\n  }\n\n  #cctv-academy-request .cctv-hero-highlight{\n    min-height:0;\n    padding:16px;\n  }\n\n  #cctv-academy-request .cctv-main{\n    padding:48px 0 82px;\n  }\n\n  #cctv-academy-request .cctv-intro-grid{\n    grid-template-columns:1fr;\n    gap:18px;\n    margin-bottom:34px;\n  }\n\n  #cctv-academy-request .cctv-card,\n  #cctv-academy-request .cctv-participant-rule,\n  #cctv-academy-request .cctv-visual-story,\n  #cctv-academy-request .cctv-form-area{\n    padding:24px;\n    border-radius:20px;\n  }\n\n  #cctv-academy-request .cctv-section-lead h2,\n  #cctv-academy-request .cctv-form-area h2,\n  #cctv-academy-request .cctv-conversion-band h2{\n    font-size:27px;\n  }\n\n  #cctv-academy-request .cctv-photo-grid{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-photo-card img,\n  #cctv-academy-request .cctv-photo-card--feature img{\n    height:220px;\n  }\n\n  #cctv-academy-request .cctv-conversion-band{\n    margin-bottom:34px;\n    padding:26px 24px;\n    border-radius:20px;\n  }\n\n  #cctv-academy-request .cctv-form-head{\n    grid-template-columns:1fr;\n    gap:15px;\n    align-items:start;\n  }\n\n  #cctv-academy-request .cctv-form-badge{\n    justify-self:start;\n  }\n\n  #cctv-academy-request .cctv-form-confidence{\n    grid-template-columns:1fr;\n    gap:7px;\n  }\n\n  #cctv-academy-request .cctv-request-choice,\n  #cctv-academy-request .cctv-micro-topics,\n  #cctv-academy-request .cctv-micro-intake{\n    padding:22px;\n  }\n\n  #cctv-academy-request .cctv-request-choice__grid,\n  #cctv-academy-request .cctv-micro-tracks{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-request-option,\n  #cctv-academy-request .cctv-micro-track{\n    min-height:94px;\n  }\n\n  #cctv-academy-request .cctv-micro-topics__grid{\n    grid-template-columns:1fr;\n    max-height:500px;\n  }\n\n  #cctv-academy-request .cctv-mobile-cta{\n    position:fixed;\n    left:12px;\n    right:12px;\n    bottom:12px;\n    z-index:999;\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap:12px;\n    padding:10px 10px 10px 15px;\n    border:1px solid rgba(255,255,255,.15);\n    border-radius:18px;\n    background:rgba(12,33,48,.94);\n    color:#fff;\n    box-shadow:0 16px 40px rgba(0,0,0,.24);\n    backdrop-filter:blur(14px);\n  }\n\n  #cctv-academy-request .cctv-mobile-cta__copy strong{\n    display:block;\n    font-size:12px;\n    line-height:1.3;\n  }\n\n  #cctv-academy-request .cctv-mobile-cta > a{\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    min-height:42px;\n    padding:10px 14px;\n    border-radius:999px;\n    background:var(--accent);\n    color:#fff!important;\n    font-size:12px;\n    font-weight:900;\n    white-space:nowrap;\n  }\n}\n\n@media (max-width:420px){\n  #cctv-academy-request .cctv-home-button{\n    padding:7px 10px;\n  }\n\n  #cctv-academy-request .cctv-language-switcher label{\n    min-width:38px;\n    padding:8px 8px;\n  }\n\n  #cctv-academy-request .cctv-card,\n  #cctv-academy-request .cctv-participant-rule,\n  #cctv-academy-request .cctv-visual-story,\n  #cctv-academy-request .cctv-form-area{\n    padding:20px;\n  }\n\n  #cctv-academy-request .cctv-mobile-cta__copy{\n    display:none;\n  }\n\n  #cctv-academy-request .cctv-mobile-cta > a{\n    width:100%;\n  }\n}\n\n\/* ==========================================================\n   STEP 14 \u00b7 CONSISTENTE AFFICHE-STIJL + PROGRESSIEF FORMULIER\n   ========================================================== *\/\n\n\/* Strong language rule: prevents nested component CSS from exposing\n   all NL\/FR\/EN copies at the same time. *\/\n#cctv-academy-request .cctv-lang-copy{\n  display:none !important;\n}\n\n#cctv-lang-nl:checked ~ * .cctv-lang-copy--nl,\n#cctv-lang-fr:checked ~ * .cctv-lang-copy--fr,\n#cctv-lang-en:checked ~ * .cctv-lang-copy--en{\n  display:inline !important;\n}\n\n\/* One visual family from poster to form *\/\n#cctv-academy-request .cctv-poster-zone{\n  padding:22px 0 16px;\n  background:\n    linear-gradient(rgba(23,51,72,.045) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(23,51,72,.045) 1px,transparent 1px),\n    radial-gradient(circle at 50% -10%,rgba(255,255,255,.75),transparent 40%),\n    #efe5d1;\n  background-size:42px 42px,42px 42px,auto,auto;\n  border-bottom:1px solid rgba(23,51,72,.11);\n}\n\n#cctv-academy-request .cctv-poster{\n  max-width:560px;\n  border:1px solid rgba(23,51,72,.18);\n  border-radius:20px;\n  background:#f8efdd;\n  box-shadow:0 16px 36px rgba(66,48,28,.10);\n}\n\n#cctv-academy-request .cctv-poster img{\n  max-height:300px;\n  background:#f8efdd;\n}\n\n\/* Hero now continues the same warm paper surface instead of switching\n   to a dark navy block. *\/\n#cctv-academy-request .cctv-hero{\n  color:#233745;\n  background:\n    radial-gradient(circle at 92% 12%,rgba(200,168,93,.14),transparent 24%),\n    radial-gradient(circle at 8% 94%,rgba(170,44,33,.06),transparent 28%),\n    linear-gradient(rgba(23,51,72,.032) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(23,51,72,.032) 1px,transparent 1px),\n    #efe5d1;\n  background-size:auto,auto,76px 76px,76px 76px,auto;\n  border-bottom:1px solid rgba(23,51,72,.14);\n}\n\n#cctv-academy-request .cctv-hero::before{\n  opacity:.18;\n  background:\n    radial-gradient(circle at 14% 20%,rgba(170,44,33,.11) 0 2px,transparent 3px),\n    radial-gradient(circle at 87% 80%,rgba(23,51,72,.12) 0 2px,transparent 3px);\n  background-size:34px 34px,52px 52px;\n}\n\n#cctv-academy-request .cctv-page-tools{\n  padding:20px 0 4px;\n}\n\n#cctv-academy-request .cctv-home-button{\n  border:1px solid rgba(70,50,20,.22);\n  background:#d8ab47;\n  color:#111!important;\n  box-shadow:0 8px 20px rgba(77,55,24,.09);\n}\n\n#cctv-academy-request .cctv-home-button:hover{\n  background:#c99b36;\n}\n\n#cctv-academy-request .cctv-home-icon{\n  background:#fff6df;\n  color:#173348;\n}\n\n#cctv-academy-request .cctv-language-bar{\n  color:#625b50;\n}\n\n#cctv-academy-request .cctv-language-switcher{\n  border:1px solid rgba(23,51,72,.20);\n  background:rgba(255,255,255,.46);\n  box-shadow:0 6px 18px rgba(66,48,28,.045);\n}\n\n#cctv-academy-request .cctv-language-switcher label{\n  color:#263847;\n  border-right-color:rgba(23,51,72,.12);\n}\n\n#cctv-academy-request .cctv-language-switcher label:hover{\n  background:#e6d9bf;\n}\n\n#cctv-lang-nl:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-nl\"],\n#cctv-lang-fr:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-fr\"],\n#cctv-lang-en:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-en\"]{\n  background:#aa2c21;\n  color:#fff;\n}\n\n#cctv-academy-request .cctv-hero-content{\n  max-width:1020px;\n  padding:54px 0 78px;\n}\n\n#cctv-academy-request .cctv-kicker{\n  border:1px solid rgba(23,51,72,.17);\n  background:rgba(255,255,255,.38);\n  color:#173348;\n  box-shadow:none;\n}\n\n#cctv-academy-request .cctv-kicker::before{\n  background:#aa2c21;\n  box-shadow:0 0 0 5px rgba(170,44,33,.10);\n}\n\n#cctv-academy-request .cctv-hero h1{\n  color:#173348;\n  text-shadow:none;\n}\n\n#cctv-academy-request .cctv-hero p{\n  color:#665f53;\n}\n\n#cctv-academy-request .cctv-cta--secondary{\n  border-color:rgba(23,51,72,.22);\n  background:rgba(255,255,255,.42);\n  color:#173348!important;\n}\n\n#cctv-academy-request .cctv-cta--secondary:hover{\n  border-color:rgba(23,51,72,.34);\n  background:#fff8ea;\n}\n\n#cctv-academy-request .cctv-hero-microcopy{\n  color:#766c5e!important;\n}\n\n#cctv-academy-request .cctv-hero-highlights{\n  gap:15px;\n}\n\n#cctv-academy-request .cctv-hero-highlight{\n  position:relative;\n  overflow:hidden;\n  border:1px solid rgba(23,51,72,.13);\n  background:rgba(255,251,241,.58);\n  box-shadow:0 12px 26px rgba(66,48,28,.055);\n}\n\n#cctv-academy-request .cctv-hero-highlight::before{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:0;\n  right:0;\n  height:4px;\n  background:linear-gradient(90deg,#173348,#aa2c21,#d8ab47);\n}\n\n#cctv-academy-request .cctv-hero-highlight strong{\n  color:#173348;\n}\n\n#cctv-academy-request .cctv-hero-highlight > span{\n  color:#655d51;\n}\n\n\/* Smoother handoff from hero to content *\/\n#cctv-academy-request .cctv-main{\n  background:\n    radial-gradient(circle at 88% 8%,rgba(200,168,93,.08),transparent 20%),\n    #f4eee2;\n}\n\n\/* Progressive reveal *\/\n#cctv-academy-request .cctv-request-followup[hidden]{\n  display:none !important;\n}\n\n#cctv-academy-request .cctv-request-followup{\n  display:block;\n  margin-top:26px;\n  animation:cctvRequestReveal .30s ease both;\n}\n\n@keyframes cctvRequestReveal{\n  from{\n    opacity:0;\n    transform:translateY(10px);\n  }\n  to{\n    opacity:1;\n    transform:translateY(0);\n  }\n}\n\n\/* Remove extra bottom margin from the selector when the follow-up is closed. *\/\n#cctv-academy-request .cctv-request-choice{\n  margin-bottom:0;\n}\n\n#cctv-academy-request.has-request-type .cctv-request-choice{\n  margin-bottom:0;\n}\n\n\/* The real Forminator shortcode lives in the next Elementor widget.\n   Keep it closed until a choice is made. *\/\nbody:not(.cctv-academy-request-ready) #forminator-module-49521,\n.cctv-forminator-widget-hidden{\n  display:none !important;\n}\n\n@media (max-width:760px){\n  #cctv-academy-request .cctv-poster{\n    max-width:88%;\n  }\n\n  #cctv-academy-request .cctv-poster img{\n    max-height:210px;\n  }\n\n  #cctv-academy-request .cctv-hero-content{\n    padding:40px 0 56px;\n  }\n\n  #cctv-academy-request .cctv-hero-highlights{\n    margin-top:28px;\n  }\n\n  #cctv-academy-request .cctv-request-followup{\n    margin-top:20px;\n  }\n}\n\n\/* ==========================================================\n   STEP 15 \u00b7 SLIM CONTEXTFORMULIER\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-selection-review{\n  position:relative;\n  overflow:hidden;\n  margin:0 0 30px;\n  padding:28px;\n  border:1px solid rgba(23,51,72,.13);\n  border-radius:22px;\n  background:\n    radial-gradient(circle at 100% 0,rgba(200,168,93,.11),transparent 30%),\n    linear-gradient(180deg,#fffdf8 0%,#f7f0e2 100%);\n  box-shadow:0 14px 34px rgba(66,48,28,.055);\n}\n\n#cctv-academy-request .cctv-selection-review::before{\n  content:\"\";\n  position:absolute;\n  inset:0 auto 0 0;\n  width:5px;\n  background:linear-gradient(180deg,#173348,#aa2c21,#d8ab47);\n}\n\n#cctv-academy-request .cctv-selection-review__head{\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:18px;\n  align-items:start;\n  margin-bottom:22px;\n}\n\n#cctv-academy-request .cctv-selection-review__eyebrow{\n  display:inline-block;\n  margin-bottom:8px;\n  color:#8b6a2b;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.10em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-selection-review h3{\n  margin:0 0 7px;\n  color:#173348;\n  font-size:25px;\n  line-height:1.15;\n}\n\n#cctv-academy-request .cctv-selection-review__head p{\n  max-width:690px;\n  margin:0;\n  color:#6c6458;\n  font-size:13px;\n  line-height:1.65;\n}\n\n#cctv-academy-request .cctv-selection-review__status{\n  display:inline-flex;\n  align-items:center;\n  min-height:32px;\n  padding:7px 11px;\n  border-radius:999px;\n  background:#e9f3ee;\n  color:#32634e;\n  font-size:10px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-selection-review__status.is-waiting{\n  background:#fff1dc;\n  color:#855e20;\n}\n\n#cctv-academy-request .cctv-selection-review__grid{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px;\n}\n\n#cctv-academy-request .cctv-selection-review__item{\n  min-width:0;\n  padding:15px 16px;\n  border:1px solid rgba(23,51,72,.09);\n  border-radius:15px;\n  background:rgba(255,255,255,.64);\n}\n\n#cctv-academy-request .cctv-selection-review__item[hidden]{\n  display:none!important;\n}\n\n#cctv-academy-request .cctv-selection-review__label{\n  display:block;\n  margin-bottom:6px;\n  color:#7b7162;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.06em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-selection-review__item strong{\n  color:#173348;\n  font-size:14px;\n  line-height:1.5;\n}\n\n#cctv-academy-request .cctv-selection-review__chips{\n  display:flex;\n  flex-wrap:wrap;\n  gap:7px;\n}\n\n#cctv-academy-request .cctv-selection-review__chip{\n  display:inline-flex;\n  align-items:center;\n  min-height:31px;\n  padding:6px 10px;\n  border:1px solid rgba(23,51,72,.10);\n  border-radius:999px;\n  background:#edf4f8;\n  color:#294b61;\n  font-size:11px;\n  font-weight:800;\n  line-height:1.35;\n}\n\n#cctv-academy-request .cctv-selection-review__message{\n  margin:17px 0 0;\n  padding-top:15px;\n  border-top:1px solid rgba(23,51,72,.09);\n  color:#665e52;\n  font-size:12px;\n  line-height:1.65;\n}\n\n\/* Live context copied into the actual Forminator form *\/\n#forminator-module-49521 .cctv-forminator-context{\n  grid-column:1 \/ -1!important;\n  order:-100!important;\n  margin:0 0 6px!important;\n  padding:18px 20px!important;\n  border:1px solid rgba(23,51,72,.12)!important;\n  border-radius:16px!important;\n  background:#f7f1e5!important;\n}\n\n#forminator-module-49521 .cctv-forminator-context__eyebrow{\n  display:block;\n  margin-bottom:5px;\n  color:#8a692d;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n}\n\n#forminator-module-49521 .cctv-forminator-context strong{\n  display:block;\n  margin-bottom:7px;\n  color:#173348;\n  font-size:16px;\n}\n\n#forminator-module-49521 .cctv-forminator-context p{\n  margin:0;\n  color:#665e52;\n  font-size:12px;\n  line-height:1.65;\n}\n\n#forminator-module-49521 .cctv-forminator-context__topics{\n  display:flex;\n  flex-wrap:wrap;\n  gap:6px;\n  margin-top:10px;\n}\n\n#forminator-module-49521 .cctv-forminator-context__topic{\n  display:inline-flex;\n  padding:5px 8px;\n  border-radius:999px;\n  background:#fff;\n  color:#294b61;\n  font-size:10px;\n  font-weight:800;\n}\n\n\/* Adaptive section titles inside Forminator *\/\n#forminator-module-49521 .cctv-form-section-title{\n  grid-column:1 \/ -1!important;\n  margin:7px 0 -2px!important;\n  padding:16px 0 8px!important;\n  border-bottom:1px solid rgba(23,51,72,.10)!important;\n  color:#173348!important;\n  font-size:15px!important;\n  font-weight:900!important;\n  line-height:1.3!important;\n}\n\n#forminator-module-49521 .forminator-col.cctv-form-bridge-field{\n  display:none!important;\n}\n\/* v1.11: these are ONLY the optional questions in the marked block. *\/\n#forminator-module-49521 .forminator-col.cctv-v111-course-hidden,\n#forminator-module-49521 .cctv-form-section-title[hidden]{display:none!important;}\n\n\/* Technical support puts the problem\/context block before planning. *\/\n#forminator-module-49521.cctv-form-mode--technical-support\n  .cctv-form-section-title[data-form-section=\"context\"]{\n  order:95!important;\n}\n\n#forminator-module-49521.cctv-form-mode--technical-support\n  .cctv-form-section-title[data-form-section=\"planning\"]{\n  order:195!important;\n}\n\n@media(max-width:760px){\n  #cctv-academy-request .cctv-selection-review{\n    padding:22px;\n  }\n\n  #cctv-academy-request .cctv-selection-review__head,\n  #cctv-academy-request .cctv-selection-review__grid{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-selection-review__status{\n    justify-self:start;\n  }\n}\n\n\/* ==========================================================\n   STEP 16 \u00b7 DYNAMISCHE DEELNEMERS\n   ========================================================== *\/\n\n#cctv-academy-request .cctv-participants[hidden]{\n  display:none!important;\n}\n\n#cctv-academy-request .cctv-participants{\n  position:relative;\n  overflow:hidden;\n  margin:0 0 30px;\n  padding:32px;\n  border:1px solid rgba(23,51,72,.12);\n  border-radius:22px;\n  background:\n    radial-gradient(circle at 96% 0,rgba(200,168,93,.10),transparent 28%),\n    linear-gradient(180deg,#fffdf8 0%,#f8f2e7 100%);\n  box-shadow:0 14px 34px rgba(66,48,28,.055);\n}\n\n#cctv-academy-request .cctv-participants::before{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:0;\n  right:0;\n  height:4px;\n  background:linear-gradient(90deg,#173348,#aa2c21,#d8ab47);\n}\n\n#cctv-academy-request .cctv-participants__head{\n  display:grid;\n  grid-template-columns:auto 1fr;\n  gap:16px;\n  align-items:start;\n  margin-bottom:24px;\n}\n\n#cctv-academy-request .cctv-participants__step{\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  min-height:34px;\n  padding:7px 11px;\n  border:1px solid rgba(0,0,0,.12);\n  border-radius:999px;\n  background:#d8ab47;\n  color:#111;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.08em;\n  text-transform:uppercase;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-participants__head h3{\n  margin:0 0 7px;\n  color:#173348;\n  font-size:25px;\n  line-height:1.12;\n  letter-spacing:-.02em;\n}\n\n#cctv-academy-request .cctv-participants__head p{\n  max-width:760px;\n  margin:0;\n  color:#6c6458;\n  font-size:13px;\n  line-height:1.65;\n}\n\n#cctv-academy-request .cctv-participants__count-card{\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:18px;\n  align-items:center;\n  margin-bottom:26px;\n  padding:18px 20px;\n  border:1px solid rgba(23,51,72,.11);\n  border-radius:17px;\n  background:rgba(255,255,255,.67);\n}\n\n#cctv-academy-request .cctv-participants__label{\n  display:block;\n  margin-bottom:4px;\n  color:#7a7062;\n  font-size:10px;\n  font-weight:900;\n  letter-spacing:.06em;\n  text-transform:uppercase;\n}\n\n#cctv-academy-request .cctv-participants__count-card strong{\n  color:#173348;\n  font-size:13px;\n}\n\n#cctv-academy-request .cctv-participants__select-wrap{\n  position:relative;\n  min-width:118px;\n}\n\n#cctv-academy-request .cctv-participants__select-wrap select{\n  appearance:none;\n  -webkit-appearance:none;\n  width:100%;\n  min-height:48px;\n  padding:10px 38px 10px 15px;\n  border:1px solid #b7ab93;\n  border-radius:13px;\n  background:#fffdf8;\n  color:#173348;\n  font:inherit;\n  font-size:16px;\n  font-weight:900;\n  cursor:pointer;\n  outline:none;\n}\n\n#cctv-academy-request .cctv-participants__select-wrap select:focus{\n  border-color:#aa2c21;\n  box-shadow:0 0 0 3px rgba(170,44,33,.10);\n}\n\n#cctv-academy-request .cctv-participants__select-wrap > span{\n  position:absolute;\n  top:50%;\n  right:13px;\n  transform:translateY(-50%);\n  pointer-events:none;\n  color:#7a7062;\n}\n\n#cctv-academy-request .cctv-participants__names-head{\n  display:grid;\n  grid-template-columns:1fr auto;\n  gap:16px;\n  align-items:end;\n  margin-bottom:14px;\n}\n\n#cctv-academy-request .cctv-participants__names-head h4{\n  margin:0 0 5px;\n  color:#173348;\n  font-size:18px;\n}\n\n#cctv-academy-request .cctv-participants__names-head p{\n  margin:0;\n  color:#746b5f;\n  font-size:12px;\n  line-height:1.6;\n}\n\n#cctv-academy-request .cctv-participants__counter{\n  display:inline-flex;\n  align-items:center;\n  min-height:31px;\n  padding:6px 10px;\n  border-radius:999px;\n  background:#edf4f8;\n  color:#294b61;\n  font-size:10px;\n  font-weight:900;\n  white-space:nowrap;\n}\n\n#cctv-academy-request .cctv-participants__names{\n  display:grid;\n  grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px;\n}\n\n#cctv-academy-request .cctv-participant-name{\n  display:block;\n  padding:14px;\n  border:1px solid rgba(23,51,72,.09);\n  border-radius:15px;\n  background:rgba(255,255,255,.60);\n}\n\n#cctv-academy-request .cctv-participant-name > span{\n  display:block;\n  margin-bottom:7px;\n  color:#173348;\n  font-size:11px;\n  font-weight:900;\n}\n\n#cctv-academy-request .cctv-participant-name input{\n  width:100%;\n  min-height:44px;\n  padding:10px 12px;\n  border:1px solid #b7ab93;\n  border-radius:11px;\n  background:#fffdf8;\n  color:#26384d;\n  font:inherit;\n  outline:none;\n}\n\n#cctv-academy-request .cctv-participant-name input:focus{\n  border-color:#aa2c21;\n  box-shadow:0 0 0 3px rgba(170,44,33,.10);\n}\n\n#cctv-academy-request .cctv-participants__status{\n  display:flex;\n  align-items:center;\n  gap:9px;\n  margin-top:17px;\n  padding-top:15px;\n  border-top:1px solid rgba(23,51,72,.08);\n  color:#6b6357;\n  font-size:11px;\n  line-height:1.55;\n}\n\n#cctv-academy-request .cctv-participants__status-dot{\n  flex:0 0 auto;\n  width:8px;\n  height:8px;\n  border-radius:50%;\n  background:#5f6d4d;\n  box-shadow:0 0 0 5px rgba(95,109,77,.10);\n}\n\n#cctv-academy-request .cctv-selection-review__participants{\n  display:flex;\n  flex-wrap:wrap;\n  gap:6px;\n  margin-top:8px;\n}\n\n#cctv-academy-request .cctv-selection-review__participant{\n  display:inline-flex;\n  padding:5px 8px;\n  border-radius:999px;\n  background:#f1eadc;\n  color:#5c5141;\n  font-size:10px;\n  font-weight:800;\n}\n\n\/* Fields that have already been supplied by the smart Academy flow\n   do not need to be asked a second time inside Forminator. *\/\n#forminator-module-49521 .forminator-col.cctv-form-autofilled-hidden{\n  display:none!important;\n}\n\n@media(max-width:760px){\n  #cctv-academy-request .cctv-participants{\n    padding:22px;\n  }\n\n  #cctv-academy-request .cctv-participants__head,\n  #cctv-academy-request .cctv-participants__count-card,\n  #cctv-academy-request .cctv-participants__names-head,\n  #cctv-academy-request .cctv-participants__names{\n    grid-template-columns:1fr;\n  }\n\n  #cctv-academy-request .cctv-participants__select-wrap{\n    width:100%;\n  }\n\n  #cctv-academy-request .cctv-participants__counter{\n    justify-self:start;\n  }\n}\n\n\n\/* v1.0 \u2014 VISUELE AFWERKING: helder contrast, betrouwbare responsiviteit *\/\n#cctv-academy-request .cctv-poster-fallback{background:#f8efdd!important;color:#173348!important;}\n#cctv-academy-request .cctv-poster-fallback strong{color:#173348!important;}\n#cctv-academy-request .cctv-version{position:relative;z-index:5;display:block;padding:9px 18px;\n  background:#173348;color:#fff;font:700 11px\/1.45 Arial,sans-serif;letter-spacing:.06em;text-align:center}\n#cctv-academy-request .cctv-hero-highlight,\n#cctv-academy-request .cctv-hero-highlight:hover{background:#fffaf0!important;border:1px solid #d6c7aa!important;}\n#cctv-academy-request .cctv-hero-highlight strong,\n#cctv-academy-request .cctv-hero-highlight strong span{color:#173348!important;font-weight:900!important;opacity:1!important;}\n#cctv-academy-request .cctv-hero-highlight > span,\n#cctv-academy-request .cctv-hero-highlight > span span{color:#3e4850!important;opacity:1!important;}\n#cctv-lang-de:checked ~ * .cctv-lang-copy--de{display:inline!important;}\n#cctv-lang-de:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-de\"]{background:#aa2c21;color:#fff;}\n#cctv-lang-de:focus-visible ~ * .cctv-language-switcher label[for=\"cctv-lang-de\"]{outline:3px solid rgba(170,44,33,.25);outline-offset:2px;}\n#cctv-academy-request .cctv-language-switcher label:focus-visible,\n#cctv-academy-request .cctv-request-option:focus-visible,\n#cctv-academy-request .cctv-micro-track:focus-visible{outline:3px solid #aa2c21;outline-offset:3px;}\n#cctv-academy-request .cctv-compact-faq{margin:0 0 38px;padding:28px 32px;background:#fffdf8;\n  border:1px solid #d7c9af;border-radius:22px;box-shadow:0 14px 36px rgba(17,40,56,.045)}\n#cctv-academy-request .cctv-compact-faq__lead{margin-bottom:18px}\n#cctv-academy-request .cctv-eyebrow{display:inline-block;color:#a02c22;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}\n#cctv-academy-request .cctv-compact-faq h2{margin:8px 0 0;color:#173348;font:700 clamp(23px,2.6vw,31px)\/1.25 Georgia,serif}\n#cctv-academy-request .cctv-compact-faq__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n#cctv-academy-request .cctv-compact-faq details{padding:16px;border-radius:14px;border:1px solid #e2d6bd;background:#fbf5e8}\n#cctv-academy-request .cctv-compact-faq summary{cursor:pointer;color:#173348;font-size:14px;font-weight:800;line-height:1.5}\n#cctv-academy-request .cctv-compact-faq p{margin:12px 0 0;color:#445463;font-size:13px;line-height:1.7}\n#cctv-academy-request .cctv-hero .cctv-kicker{color:#173348!important}\n#cctv-academy-request .cctv-hero .cctv-hero-microcopy{color:#555246!important}\n@media(max-width:800px){#cctv-academy-request .cctv-compact-faq__grid{grid-template-columns:1fr}#cctv-academy-request .cctv-compact-faq{padding:22px;margin-bottom:24px}}\n@media(prefers-reduced-motion:reduce){#cctv-academy-request *,#cctv-academy-request *::before,#cctv-academy-request *::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}\n\n\/* ==========================================================\n   v1.1 STAGING \u00b7 AFFICHE NAAST DE HERO, NIET MEER BOVENAAN\n   Alleen nieuwe presentatielaag; alle oorspronkelijke scripts behouden.\n   ========================================================== *\/\n#cctv-academy-request .cctv-hero-content{\n  width:100%; max-width:none; padding:43px 0 66px;\n}\n#cctv-academy-request .cctv-hero-layout{\n  display:grid;\n  grid-template-columns:minmax(0,1fr) minmax(235px,335px);\n  align-items:center;\n  column-gap:clamp(25px,4vw,60px);\n  row-gap:20px;\n}\n#cctv-academy-request .cctv-hero-copy{min-width:0;}\n#cctv-academy-request .cctv-hero-layout h1{\n  font-size:clamp(38px,4.7vw,60px);\n  max-width:745px;\n  overflow-wrap:normal;\n}\n#cctv-academy-request .cctv-hero-layout .cctv-kicker{\n  max-width:100%;\n}\n#cctv-academy-request .cctv-hero-art{\n  min-width:0; width:100%;\n  display:flex; justify-content:center; align-items:center;\n  padding:12px;\n  border:1px solid rgba(23,51,72,.14);\n  border-radius:22px;\n  background:rgba(255,251,243,.58);\n  box-shadow:0 16px 35px rgba(66,48,28,.07);\n}\n#cctv-academy-request .cctv-hero .cctv-poster{\n  display:block;\n  width:100%; max-width:295px;\n  margin:0;\n  border:1px solid rgba(23,51,72,.22);\n  border-radius:12px;\n  background:#f8efdd;\n  box-shadow:0 13px 28px rgba(30,40,46,.14);\n}\n#cctv-academy-request .cctv-hero .cctv-poster img{\n  display:block; width:100%; height:auto;\n  max-height:445px;\n  object-fit:contain;\n  background:#f8efdd;\n}\n#cctv-academy-request .cctv-hero .cctv-poster-fallback{\n  min-height:240px; padding:23px 13px;\n}\n#cctv-academy-request .cctv-hero-highlights{\n  margin-top:29px;\n}\n@media(max-width:900px){\n  #cctv-academy-request .cctv-hero-layout{\n    grid-template-columns:minmax(0,1fr) 230px;\n    column-gap:22px;\n  }\n  #cctv-academy-request .cctv-hero-layout h1{font-size:clamp(35px,4.5vw,45px);}\n  #cctv-academy-request .cctv-hero-art{padding:9px;}\n}\n@media(max-width:700px){\n  #cctv-academy-request .cctv-hero-content{padding:33px 0 50px;}\n  #cctv-academy-request .cctv-hero-layout{\n    grid-template-columns:minmax(0,1fr);\n    gap:25px;\n  }\n  #cctv-academy-request .cctv-hero-layout h1{\n    font-size:clamp(35px,9vw,49px);\n  }\n  #cctv-academy-request .cctv-hero-art{\n    width:min(100%,325px); max-width:325px; justify-self:center;\n  }\n  #cctv-academy-request .cctv-hero .cctv-poster{\n    width:min(100%,265px); max-width:265px;\n  }\n  #cctv-academy-request .cctv-hero .cctv-poster img{\n    max-height:345px;\n  }\n  #cctv-academy-request .cctv-hero-highlights{margin-top:25px;}\n}\n@media(max-width:420px){\n  #cctv-academy-request .cctv-hero-layout h1{font-size:clamp(33px,9vw,40px);}\n  #cctv-academy-request .cctv-hero-art{max-width:285px;}\n  #cctv-academy-request .cctv-hero .cctv-poster{max-width:230px;}\n  #cctv-academy-request .cctv-hero .cctv-poster img{max-height:305px;}\n}\n\n\/* ==========================================================\n   v1.2 STAGING \u00b7 COMPACTE, TOEGANKELIJKE FAQ\n   De drie bestaande vertaalde antwoorden blijven uitklapbaar.\n   ========================================================== *\/\n#cctv-academy-request .cctv-compact-faq{\n  margin:0 0 22px;\n  padding:0;\n  overflow:hidden;\n  border:1px solid #d8c7aa;\n  border-radius:16px;\n  background:#fffdf8;\n  box-shadow:0 8px 24px rgba(17,40,56,.035);\n}\n\/* Higher specificity than the legacy card-style details rule. *\/\n#cctv-academy-request .cctv-compact-faq > details.cctv-compact-faq__toggle{\n  display:block;\n  padding:0;\n  border:0;\n  border-radius:0;\n  background:transparent;\n}\n#cctv-academy-request .cctv-compact-faq__toggle{\n  display:block;\n  padding:0;\n  margin:0;\n  border:0;\n  border-radius:0;\n  background:transparent;\n}\n#cctv-academy-request .cctv-compact-faq__summary{\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:18px;\n  min-height:73px;\n  padding:13px 19px;\n  margin:0;\n  background:transparent;\n  border:0;\n  color:#173348;\n  cursor:pointer;\n  list-style:none;\n}\n#cctv-academy-request .cctv-compact-faq__summary::-webkit-details-marker{display:none;}\n#cctv-academy-request .cctv-compact-faq__summary::marker{content:'';}\n#cctv-academy-request .cctv-compact-faq__summary:focus-visible{outline:3px solid #aa2c21;outline-offset:-4px;}\n#cctv-academy-request .cctv-compact-faq__summary:hover{background:#faf4e8;}\n#cctv-academy-request .cctv-compact-faq__intro{min-width:0;display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 17px;}\n#cctv-academy-request .cctv-compact-faq .cctv-eyebrow{font:900 10px\/1.4 Arial,sans-serif;white-space:nowrap;letter-spacing:.07em;}\n#cctv-academy-request .cctv-compact-faq h2{\n  margin:0;\n  font:700 clamp(17px,2vw,21px)\/1.35 Georgia,serif;\n  letter-spacing:-.02em;\n  color:#173348;\n}\n#cctv-academy-request .cctv-compact-faq__action{\n  display:inline-flex;\n  flex:none;\n  align-items:center;\n  gap:8px;\n  color:#922a21;\n  font-size:12px;\n  font-weight:800;\n  white-space:nowrap;\n}\n#cctv-academy-request .cctv-compact-faq__chevron{display:inline-block;font-size:22px;line-height:1;transform:rotate(0deg);transition:transform .2s ease;}\n#cctv-academy-request .cctv-compact-faq__toggle[open] .cctv-compact-faq__chevron{transform:rotate(180deg);}\n#cctv-academy-request .cctv-compact-faq__grid{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:10px;\n  padding:0 17px 16px;\n}\n#cctv-academy-request .cctv-compact-faq__grid > details{\n  margin:0;\n  padding:11px 13px;\n  border:1px solid #e2d6bd;\n  border-radius:11px;\n  background:#fbf5e8;\n}\n#cctv-academy-request .cctv-compact-faq__grid > details > summary{\n  font-size:12px;\n  font-weight:800;\n  line-height:1.5;\n  color:#173348;\n}\n#cctv-academy-request .cctv-compact-faq__grid > details > p{\n  margin:9px 0 0;\n  font-size:12px;\n  line-height:1.6;\n  color:#445463;\n}\n@media(max-width:900px){\n  #cctv-academy-request .cctv-compact-faq__grid{grid-template-columns:1fr;}\n}\n@media(max-width:560px){\n  #cctv-academy-request .cctv-compact-faq__summary{align-items:flex-start;flex-direction:column;gap:8px;padding:12px 15px;}\n  #cctv-academy-request .cctv-compact-faq__action{font-size:11px;}\n  #cctv-academy-request .cctv-compact-faq__grid{padding:0 12px 12px;}\n}\n\n\/* ==========================================================\n   v1.3 \u00b7 SUBTIELE AANDACHT VOOR INDIVIDUELE MICRO-LEARNING\n   Langzame, zachte puls: tekst blijft steeds volledig leesbaar.\n   ========================================================== *\/\n#cctv-academy-request .cctv-micro-exception{\n  animation:cctv-micro-pulse 5.5s ease-in-out infinite;\n}\n@keyframes cctv-micro-pulse{\n  0%, 25%, 78%, 100%{\n    background-color:#fbf0e9;\n    border-color:rgba(125,55,42,.25);\n    box-shadow:0 0 0 0 rgba(170,44,33,0);\n  }\n  45%, 58%{\n    background-color:#fff0d6;\n    border-color:#aa2c21;\n    box-shadow:0 0 0 4px rgba(170,44,33,.12), 0 0 22px rgba(170,44,33,.14);\n  }\n}\n@media(prefers-reduced-motion:reduce){\n  #cctv-academy-request .cctv-micro-exception{\n    animation:none;\n  }\n}\n\n\/* v1.6: compactere deelnemers- en selectiekoppen zonder de verwijderde hulpteksten. *\/\n#cctv-academy-request .cctv-participants__names-head h4,\n#cctv-academy-request .cctv-selection-review h3 { margin-bottom:0; }\n#cctv-academy-request .cctv-selection-review__head { margin-bottom:16px; }\n\n\/* v1.7: voorkennis direct zichtbaar op de drie reguliere opleidingskaarten. *\/\n#cctv-academy-request .cctv-request-option__copy .cctv-request-prerequisite{\n  display:block;\n  margin-top:10px;\n  padding-top:9px;\n  border-top:1px solid rgba(23,51,72,.14);\n  color:#29485a;\n  font-size:11.5px;\n  font-weight:800;\n  line-height:1.45;\n}\n\n\n\/* v1.8: contact details for exactly the selected number of participants. *\/\n#forminator-module-49521{box-sizing:border-box!important;width:100%!important;max-width:100%!important;}\n#forminator-module-49521 *{box-sizing:border-box;}\n#forminator-module-49521 .cctv-v18-participants{\n  grid-column:1 \/ -1 !important; order:86!important; display:block;\n  padding:20px 0 8px; margin:2px 0 12px; min-width:0;\n}\n#forminator-module-49521 .cctv-v18-participants[hidden]{display:none!important;}\n#forminator-module-49521 .cctv-v18-title{\n  margin:0 0 14px; padding-bottom:9px; border-bottom:1px solid #d9d2c4;\n  font-size:17px; color:#173348; font-weight:800;\n}\n#forminator-module-49521 .cctv-v18-row{\n  display:grid;grid-template-columns:106px repeat(3,minmax(0,1fr));\n  gap:12px;align-items:end;padding:12px 0;border-bottom:1px solid #e8e3d8;\n}\n#forminator-module-49521 .cctv-v18-number{padding-bottom:15px;font-size:12px;color:#173348;}\n#forminator-module-49521 .cctv-v18-field{display:flex;flex-direction:column;gap:6px;min-width:0;}\n#forminator-module-49521 .cctv-v18-field span{font-size:12px;font-weight:800;color:#173348;}\n#forminator-module-49521 .cctv-v18-field input{\n  width:100%;min-width:0;min-height:47px;padding:10px 12px;\n  border:1px solid #cbd7e4;border-radius:10px;background:#fbfdff;\n  font:inherit;font-size:14px;color:#26384d;\n}\n#forminator-module-49521 .cctv-v18-field input:focus{outline:2px solid #aa2c21;outline-offset:1px;}\n#forminator-module-49521 .cctv-v18-error{color:#a5271d;font-weight:700;font-size:13px;margin:12px 0;}\n#forminator-module-49521 .cctv-v18-error[hidden]{display:none!important;}\n#forminator-module-49521 .forminator-col.cctv-v18-legacy-participant,\n#forminator-module-49521 .forminator-col.cctv-v18-practical,\n#forminator-module-49521 [data-cctv-form-group=\"planning\"],\n#forminator-module-49521 #cctv-form-section-planning{display:none!important;}\n@media(max-width:850px){\n #forminator-module-49521 .cctv-v18-row{grid-template-columns:1fr 1fr;}\n #forminator-module-49521 .cctv-v18-number{grid-column:1 \/ -1;padding-bottom:0;}\n #forminator-module-49521 .cctv-v18-field:has(input[type=\"email\"]){grid-column:1 \/ -1;}\n}\n@media(max-width:540px){\n #forminator-module-49521 .cctv-v18-row{grid-template-columns:1fr;gap:10px;}\n #forminator-module-49521 .cctv-v18-number{grid-column:1;padding-bottom:0;}\n #forminator-module-49521 .cctv-v18-field:has(input[type=\"email\"]){grid-column:1;}\n}\n\/* v1.15: stronger, accessible selection affordances (four fixed text languages unchanged). *\/\n#cctv-academy-request .cctv-micro-topics__bottom{\n  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;\n  gap:15px;padding:18px 16px;margin-top:18px;\n  border:2px solid #d5b06a;border-radius:14px;background:#fffaf1;\n}\n#cctv-academy-request .cctv-micro-topics__selected{\n  gap:13px;color:#173348;font-size:16px;font-weight:900;line-height:1.5;\n}\n#cctv-academy-request .cctv-micro-topics__selected strong{\n  min-width:51px;height:51px;padding:0 12px;\n  background:#aa2c21;color:#fff;font-size:24px;border-radius:50%;\n}\n#cctv-academy-request .cctv-micro-topics__clear{\n  min-height:48px;padding:12px 21px;font-size:14px;\n  color:#fff;background:#173348;border:2px solid #173348;border-radius:11px;\n}\n#cctv-academy-request .cctv-micro-topics__clear:hover,\n#cctv-academy-request .cctv-micro-topics__clear:focus-visible{\n  color:#fff;background:#aa2c21;border-color:#aa2c21;\n}\n@media(max-width:540px){\n  #cctv-academy-request .cctv-micro-topics__selected{font-size:14px;}\n  #cctv-academy-request .cctv-micro-topics__clear{width:100%;}\n}\n\/* Micro-learning and technical assistance share a section, never both textareas. *\/\n#cctv-academy-request .cctv-micro-intake__field.cctv-v115-field-inactive{\n  display:none!important;\n}\n#cctv-academy-request .cctv-micro-intake[data-intake-mode] .cctv-micro-intake__grid{\n  grid-template-columns:1fr;\n}\n#forminator-module-49521 .forminator-col.cctv-v115-removed-question{\n  display:none!important;\n}\n#forminator-module-49521 .forminator-col.cctv-v18-legacy-participant.cctv-v113-contact-preserved{display:none!important;}\n#forminator-module-49521 #cctv-form-section-context{\n  display:none!important;\n}\n\n\n\/* v1.17 \u00b7 Keuze deelnemersaantal wordt pas actief na expliciete bevestiging.\n   Bestaande Forminator-vormgeving, v1.16 bridge en taalbron blijven ongewijzigd. *\/\n#cctv-academy-request .cctv-v117-confirmation {\n  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;\n  gap:13px; margin:-8px 0 18px; padding:14px 17px;\n  border:1px solid #d8b66c; border-radius:13px; background:#fffaf0;\n}\n#cctv-academy-request .cctv-v117-confirmation[hidden] {display:none!important;}\n#cctv-academy-request .cctv-v117-confirmation__hint {\n  flex:1 1 230px; color:#173348; font-size:12px; font-weight:750; line-height:1.55;\n}\n#cctv-academy-request .cctv-v117-confirm-button {\n  appearance:none; min-height:45px; padding:11px 18px; border:2px solid #173348;\n  border-radius:10px; background:#173348; color:#fff; font:inherit;\n  font-size:13px; font-weight:900; cursor:pointer;\n}\n#cctv-academy-request .cctv-v117-confirm-button:hover,\n#cctv-academy-request .cctv-v117-confirm-button:focus-visible {\n  background:#aa2c21; border-color:#aa2c21; outline-offset:3px;\n}\n#cctv-academy-request #cctv-participants.cctv-v117-needs-confirmation .cctv-participants__select-wrap {\n  border-radius:13px; animation:cctv-v117-count-pulse 1.35s ease-in-out infinite;\n}\n@keyframes cctv-v117-count-pulse {\n  0%,100% {box-shadow:0 0 0 2px rgba(170,44,33,.17);}\n  50% {box-shadow:0 0 0 6px rgba(170,44,33,.65);}\n}\n@media(max-width:540px) {\n  #cctv-academy-request .cctv-v117-confirm-button {width:100%;}\n}\n@media(prefers-reduced-motion:reduce) {\n  #cctv-academy-request #cctv-participants.cctv-v117-needs-confirmation .cctv-participants__select-wrap {\n    animation:none; outline:3px solid #aa2c21; outline-offset:4px;\n  }\n}\n\n\/* v1.13: Forminator contact columns must never inherit the course-only hide rule. *\/\n#forminator-module-49521 .forminator-col.cctv-v113-contact-preserved{\n  display:block!important;\n}\n\/* v1.12: actual existing VAT Forminator field visible in the left\n   contact column, even when it was previously inside an extra-info row. *\/\n#forminator-module-49521 .forminator-col.cctv-v112-vat-visible{\n  grid-column:auto!important;\n  order:10!important;\n  display:block!important;\n}\n#forminator-module-49521 .cctv-v112-vat-row{display:contents!important;}\n@media(max-width:820px){\n  #forminator-module-49521 .forminator-col.cctv-v112-vat-visible{\n    grid-column:1!important;\n  }\n}\n<\/style>\n<!-- v1.18: moderne vormgeving; alle v1.17-functies en teksten zijn behouden -->\n<style id=\"cctv-academy-v118-modern-design\">\n\/* CCTV Academy \/ visual system v1.18\n   Presentation only. All v1.17 behavior, four languages and original text remain intact.\n   Isolated selectors deliberately appear AFTER the accepted v1.17 stylesheet. *\/\n#cctv-academy-request {\n  --modern-ink:#183344;\n  --modern-ink-strong:#112b3c;\n  --modern-subtle:#587083;\n  --modern-line:#dbe4e9;\n  --modern-page:#f5f8fa;\n  --modern-surface:#ffffff;\n  --modern-soft:#f0f5f7;\n  --modern-cream:#faf7ef;\n  --modern-gold:#d8b56b;\n  --modern-red:#b2463d;\n  --modern-red-dark:#94352f;\n  --modern-teal:#2a827f;\n  --modern-shadow:0 14px 42px rgba(28,54,70,.055);\n  font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  color:var(--modern-ink);\n  background:var(--modern-page);\n  overflow:clip;\n  scroll-behavior:smooth;\n}\n#cctv-academy-request::before,\n#cctv-academy-request::after,\n#cctv-academy-request .cctv-main::before {display:none!important;}\n#cctv-academy-request *,#forminator-module-49521 * {box-sizing:border-box;}\n#cctv-academy-request .cctv-container {width:min(1120px,calc(100% - 64px));}\n#cctv-academy-request h1,\n#cctv-academy-request h2,\n#cctv-academy-request h3,\n#cctv-academy-request h4 {\n  font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  letter-spacing:-.032em;\n  color:var(--modern-ink-strong);\n}\n#cctv-academy-request button,\n#cctv-academy-request a,\n#forminator-module-49521 button {\n  -webkit-tap-highlight-color:transparent;\n}\n#cctv-academy-request :is(button,a,input,select,textarea,summary):focus-visible,\n#forminator-module-49521 :is(button,a,input,select,textarea):focus-visible {\n  outline:3px solid rgba(42,130,127,.63)!important;\n  outline-offset:3px!important;\n}\n\/* Navigation and a warm, spacious, visually focused welcome *\/\n#cctv-academy-request .cctv-version {\n  padding:7px 20px; background:#163447; color:#eaf3f4;\n  font-size:10px; font-weight:700; letter-spacing:.085em;\n}\n#cctv-academy-request .cctv-hero {\n  position:relative; isolation:isolate;\n  color:var(--modern-ink);\n  border:0; border-bottom:1px solid #e2e9e9;\n  background:linear-gradient(140deg,#f9fbfc 0%,#f4f8f8 59%,#f7f5ee 100%);\n}\n#cctv-academy-request .cctv-hero::before {\n  display:block; opacity:1; z-index:-1;\n  background:radial-gradient(ellipse 38% 54% at 88% 20%,rgba(216,181,107,.14),transparent 75%),\n    radial-gradient(ellipse 36% 56% at 1% 86%,rgba(42,130,127,.075),transparent 76%);\n  background-size:auto;\n}\n#cctv-academy-request .cctv-page-tools {padding:22px 0 6px;}\n#cctv-academy-request .cctv-home-button {\n  min-height:38px; padding:8px 13px; border:1px solid #d4e0e4;\n  border-radius:100px; background:rgba(255,255,255,.78);\n  color:#233e4c!important; box-shadow:none; font-size:11px;\n  letter-spacing:.02em; text-transform:none;\n}\n#cctv-academy-request .cctv-home-button:hover {background:#fff; border-color:#a4bec7;}\n#cctv-academy-request .cctv-home-icon {\n  width:23px; height:23px; background:#edf4f4; border:0;\n  border-radius:100px; color:#255a60;\n}\n#cctv-academy-request .cctv-language-bar {color:#526a76;}\n#cctv-academy-request .cctv-language-switcher {\n  padding:3px; border:1px solid #d5e1e4;\n  border-radius:100px; background:#fff; box-shadow:none;\n}\n#cctv-academy-request .cctv-language-switcher label {\n  min-width:42px; padding:7px 10px; border:0;\n  border-radius:100px; color:#4c6573; font-weight:800; font-size:11px;\n}\n#cctv-lang-nl:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-nl\"],\n#cctv-lang-fr:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-fr\"],\n#cctv-lang-en:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-en\"],\n#cctv-lang-de:checked ~ * .cctv-language-switcher label[for=\"cctv-lang-de\"] {\n  background:var(--modern-ink-strong)!important; color:#fff!important;\n  border-radius:100px; box-shadow:0 3px 9px rgba(25,50,66,.13);\n}\n#cctv-academy-request .cctv-hero-content {max-width:none; padding:58px 0 65px;}\n#cctv-academy-request .cctv-hero-layout {\n  display:grid; grid-template-columns:minmax(0,1fr) minmax(225px,285px);\n  gap:clamp(32px,6vw,88px); align-items:center;\n}\n#cctv-academy-request .cctv-kicker {\n  display:inline-flex; padding:7px 12px; border:1px solid #dce8e5;\n  border-radius:100px; background:#eaf4f2; color:#286b69!important;\n  font-size:11px; font-weight:800; letter-spacing:.025em;\n  text-transform:none; box-shadow:none;\n}\n#cctv-academy-request .cctv-kicker::before {\n  width:7px; height:7px; border:0; background:#31908d;\n  box-shadow:0 0 0 3px rgba(49,144,141,.12);\n}\n#cctv-academy-request .cctv-hero h1,\n#cctv-academy-request .cctv-hero-layout h1 {\n  max-width:735px; margin:16px 0 21px;\n  color:#152f42; font-size:clamp(37px,4.35vw,60px);\n  line-height:1.095; font-weight:820; letter-spacing:-.051em;\n  text-shadow:none; text-wrap:balance;\n}\n#cctv-academy-request .cctv-hero p {\n  max-width:680px; color:#5b7080; font-size:15px;\n  line-height:1.77;\n}\n#cctv-academy-request .cctv-hero-art {\n  position:relative; padding:13px; border:1px solid #e6e4d9;\n  border-radius:25px; background:rgba(255,255,255,.72);\n  box-shadow:0 24px 55px rgba(39,61,69,.075);\n  transform:rotate(1deg); transition:transform .4s ease,box-shadow .4s ease;\n}\n#cctv-academy-request .cctv-hero-art:hover {\n  transform:rotate(0deg) translateY(-4px);\n  box-shadow:0 29px 62px rgba(39,61,69,.105);\n}\n#cctv-academy-request .cctv-hero .cctv-poster {\n  width:100%; max-width:264px; border:0; border-radius:16px;\n  background:#f7f2e8; box-shadow:none;\n}\n#cctv-academy-request .cctv-hero .cctv-poster img {\n  width:100%; max-height:350px; border-radius:16px;\n  object-fit:contain; background:#f7f2e8;\n}\n#cctv-academy-request .cctv-hero-actions {gap:12px; margin-top:27px;}\n#cctv-academy-request .cctv-cta {\n  min-height:49px; padding:12px 20px; border-radius:11px;\n  font-size:13px; font-weight:800; box-shadow:none;\n  transition:transform .2s ease,background .2s ease,box-shadow .2s ease;\n}\n#cctv-academy-request .cctv-cta--primary {\n  color:#fff!important; background:var(--modern-red); border:1px solid var(--modern-red);\n  box-shadow:0 9px 20px rgba(178,70,61,.14);\n}\n#cctv-academy-request .cctv-cta--primary:hover {\n  background:var(--modern-red-dark); box-shadow:0 12px 24px rgba(178,70,61,.18);\n}\n#cctv-academy-request .cctv-cta--secondary {\n  color:var(--modern-ink)!important; background:#fff;\n  border:1px solid #d6e2e5;\n}\n#cctv-academy-request .cctv-cta--secondary:hover {background:#f1f6f6;border-color:#b4ced0;}\n#cctv-academy-request .cctv-hero-microcopy {\n  margin-top:13px!important; color:#687d8a!important; font-size:11px!important;\n}\n#cctv-academy-request .cctv-hero-highlights {\n  display:grid; grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:18px; margin-top:42px;\n}\n#cctv-academy-request .cctv-hero-highlight,\n#cctv-academy-request .cctv-hero-highlight:hover {\n  min-height:0; padding:12px 6px 8px 17px;\n  border:0!important; border-left:2px solid #d6b576!important;\n  border-radius:0; background:transparent!important; box-shadow:none;\n  backdrop-filter:none;\n}\n#cctv-academy-request .cctv-hero-highlight::before {display:none;}\n#cctv-academy-request .cctv-hero-highlight strong,\n#cctv-academy-request .cctv-hero-highlight strong span {color:#223f50!important; font-size:12px;}\n#cctv-academy-request .cctv-hero-highlight > span,\n#cctv-academy-request .cctv-hero-highlight > span span {\n  color:#617582!important; font-size:11px; line-height:1.6;\n}\n\/* Content hierarchy: explanatory content stays intact, but no longer fights with the form. *\/\n#cctv-academy-request .cctv-main {\n  padding:57px 0 96px; background:var(--modern-page);\n}\n#cctv-academy-request .cctv-intro-grid {\n  grid-template-columns:1.45fr 1fr; gap:20px; margin-bottom:23px;\n}\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule,\n#cctv-academy-request .cctv-visual-story,\n#cctv-academy-request .cctv-form-area,\n#cctv-academy-request .cctv-request-choice,\n#cctv-academy-request .cctv-micro-topics,\n#cctv-academy-request .cctv-micro-intake,\n#cctv-academy-request .cctv-participants,\n#cctv-academy-request .cctv-selection-review {\n  border:1px solid var(--modern-line);\n  border-radius:20px;\n  background:var(--modern-surface);\n  box-shadow:var(--modern-shadow);\n}\n#cctv-academy-request .cctv-card::before,\n#cctv-academy-request .cctv-form-area::before,\n#cctv-academy-request .cctv-request-choice::before,\n#cctv-academy-request .cctv-micro-topics::before,\n#cctv-academy-request .cctv-micro-intake::before,\n#cctv-academy-request .cctv-participants::before {display:none;}\n#cctv-academy-request .cctv-card,\n#cctv-academy-request .cctv-participant-rule {padding:28px 30px;}\n#cctv-academy-request .cctv-card h2,\n#cctv-academy-request .cctv-participant-rule h2 {\n  color:var(--modern-ink-strong); font-size:23px; line-height:1.23;\n}\n#cctv-academy-request .cctv-card p,\n#cctv-academy-request .cctv-participant-rule p {color:#607687;font-size:12px;line-height:1.75;}\n#cctv-academy-request .cctv-process-list {\n  display:grid; grid-template-columns:repeat(2,minmax(0,1fr));\n  gap:12px 20px; margin-top:24px;\n}\n#cctv-academy-request .cctv-process-item {\n  grid-template-columns:29px 1fr; gap:10px;\n  padding:4px 0 6px; border:0; border-radius:0;\n  background:transparent;\n}\n#cctv-academy-request .cctv-process-number {\n  width:27px; height:27px; border:1px solid #dbe5e5;\n  border-radius:8px; background:#eff5f5; color:#357a76;\n  font-size:10px; box-shadow:none;\n}\n#cctv-academy-request .cctv-process-item strong {color:#2c4556;font-size:12px;margin-bottom:3px;}\n#cctv-academy-request .cctv-process-item span:not(.cctv-process-number) {\n  color:#637986;font-size:11px;line-height:1.5;\n}\n#cctv-academy-request .cctv-participant-rule {\n  background:linear-gradient(160deg,#fff 65%,#fcfaf5 100%);\n}\n#cctv-academy-request .cctv-participant-rule::before {display:none;}\n#cctv-academy-request .cctv-participant-label {\n  margin-bottom:14px; padding:5px 9px; border:0;\n  border-radius:100px; background:#e9f4f1; color:#26756e;\n  letter-spacing:.02em; font-size:10px;\n}\n#cctv-academy-request .cctv-micro-exception {\n  margin-top:20px; padding:12px 14px;\n  border:1px solid #ecdfc8; border-left:3px solid var(--modern-gold);\n  border-radius:10px; background:#fdfaf5; color:#647279;\n  font-size:11px; line-height:1.64; animation:none;\n}\n#cctv-academy-request .cctv-compact-faq {\n  margin:0 0 30px; border:1px solid var(--modern-line);\n  border-radius:14px; background:#fff; box-shadow:none;\n}\n#cctv-academy-request .cctv-compact-faq__summary {min-height:62px;padding:12px 20px;}\n#cctv-academy-request .cctv-compact-faq h2 {font-family:inherit;font-size:16px;color:#284556;}\n#cctv-academy-request .cctv-compact-faq__action {color:#a74a3d;font-size:11px;}\n#cctv-academy-request .cctv-compact-faq__grid > details {background:#f8faf9;border-color:#e2e9e9;}\n#cctv-academy-request .cctv-visual-story {\n  padding:29px; margin-bottom:30px; box-shadow:none;\n}\n#cctv-academy-request .cctv-section-lead {margin-bottom:20px;}\n#cctv-academy-request .cctv-section-eyebrow {background:#eaf4f2;color:#28716b;}\n#cctv-academy-request .cctv-section-lead h2 {font-size:25px;}\n#cctv-academy-request .cctv-section-lead p {font-size:12px;}\n#cctv-academy-request .cctv-photo-grid {\n  grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;\n}\n#cctv-academy-request .cctv-photo-card {\n  border-color:#e4e9ea; border-radius:13px;\n  box-shadow:none; transition:transform .25s ease,box-shadow .25s ease;\n}\n#cctv-academy-request .cctv-photo-card:hover {transform:translateY(-3px);box-shadow:0 9px 23px rgba(29,55,67,.065);}\n#cctv-academy-request .cctv-photo-card img,\n#cctv-academy-request .cctv-photo-card--feature img {height:154px;object-fit:cover;}\n#cctv-academy-request .cctv-photo-card__body {padding:15px 15px 17px;}\n#cctv-academy-request .cctv-photo-card__title {font-size:15px;color:#253f50;}\n#cctv-academy-request .cctv-photo-card__text {font-size:11px;line-height:1.58;}\n#cctv-academy-request .cctv-photo-chip {background:#edf3f4;color:#476979;font-size:10px;}\n#cctv-academy-request .cctv-conversion-band {\n  padding:26px 29px; margin-bottom:37px;\n  border:0; border-radius:18px;\n  background:linear-gradient(115deg,#1b3a4c,#244c5a);\n  box-shadow:0 13px 28px rgba(20,49,64,.09);\n}\n#cctv-academy-request .cctv-conversion-band h2 {font-size:23px;line-height:1.28;color:#fff;}\n#cctv-academy-request .cctv-conversion-band p {font-size:12px;color:#d3e1e6;}\n#cctv-academy-request .cctv-conversion-band__eyebrow {color:#e6c88c;}\n\/* Main application: one clear path, with cards that invite selection. *\/\n#cctv-academy-request .cctv-form-area {\n  padding:40px; border-radius:23px;\n  background:#fff; box-shadow:0 20px 52px rgba(26,54,68,.07);\n}\n#cctv-academy-request .cctv-form-head {margin-bottom:20px;padding-bottom:17px;border-color:#e7ecee;}\n#cctv-academy-request .cctv-form-area h2 {font-size:29px;}\n#cctv-academy-request .cctv-form-badge {\n  border:1px solid #e1e7e9; border-radius:100px;\n  background:#f4f8f8; color:#526e7a; font-size:10px;\n}\n#cctv-academy-request .cctv-form-confidence {\n  display:flex; flex-wrap:wrap; gap:9px; margin-bottom:28px;\n}\n#cctv-academy-request .cctv-form-confidence > span {\n  flex:1 1 145px; min-height:0; padding:10px 14px;\n  border:1px solid #e3eaeb; border-radius:11px;\n  background:#f8fafb; color:#526c78;\n  font-size:11px; font-weight:720;\n}\n#cctv-academy-request .cctv-request-choice,\n#cctv-academy-request .cctv-micro-topics,\n#cctv-academy-request .cctv-micro-intake,\n#cctv-academy-request .cctv-participants {\n  padding:28px; border-radius:18px;\n  border-color:#e3eaeb; background:#fcfdfd; box-shadow:none;\n}\n#cctv-academy-request .cctv-request-choice__head,\n#cctv-academy-request .cctv-micro-topics__head,\n#cctv-academy-request .cctv-micro-intake__head,\n#cctv-academy-request .cctv-participants__head {\n  grid-template-columns:auto 1fr; align-items:start; gap:13px; margin-bottom:23px;\n}\n#cctv-academy-request .cctv-request-choice__step,\n#cctv-academy-request .cctv-micro-topics__step,\n#cctv-academy-request .cctv-micro-intake__step,\n#cctv-academy-request .cctv-participants__step {\n  min-height:31px; padding:7px 11px;\n  border:0; border-radius:100px; background:#e7f1f0;\n  color:#286d68; font-size:10px; box-shadow:none;\n}\n#cctv-academy-request .cctv-request-choice__head h3,\n#cctv-academy-request .cctv-micro-topics__intro h3,\n#cctv-academy-request .cctv-micro-intake__head h3,\n#cctv-academy-request .cctv-participants__head h3 {\n  margin:2px 0 5px; font-size:23px; color:#1b3547;\n}\n#cctv-academy-request .cctv-request-choice__head p,\n#cctv-academy-request .cctv-micro-topics__intro p,\n#cctv-academy-request .cctv-micro-intake__head p,\n#cctv-academy-request .cctv-participants__head p {\n  color:#697e8a; font-size:12px; line-height:1.62;\n}\n#cctv-academy-request .cctv-request-choice__grid {gap:12px;}\n#cctv-academy-request .cctv-request-option,\n#cctv-academy-request .cctv-request-option--micro {\n  position:relative; grid-template-columns:36px minmax(0,1fr) 26px;\n  gap:12px; align-items:start; min-height:102px;\n  padding:17px 16px; border:1px solid #dfe7ea; border-radius:14px;\n  background:#fff; box-shadow:none;\n  transition:border-color .22s ease,background .22s ease,box-shadow .22s ease,transform .22s ease;\n}\n#cctv-academy-request .cctv-request-option::before {\n  content:\"\"; display:block; position:absolute; top:11px; bottom:11px; left:0;\n  width:3px; border-radius:0 3px 3px 0; opacity:0;\n  background:#b2463d; transform:scaleY(.35);\n  transition:opacity .22s ease,transform .22s ease;\n}\n#cctv-academy-request .cctv-request-option:hover {\n  transform:translateY(-2px); border-color:#bed0d7;\n  box-shadow:0 8px 20px rgba(25,53,66,.075);\n}\n#cctv-academy-request .cctv-request-option.is-selected,\n#cctv-academy-request .cctv-request-option[aria-pressed=\"true\"] {\n  border-color:#cc8880; background:#fff9f6;\n  box-shadow:0 0 0 2px rgba(178,70,61,.075),0 10px 23px rgba(178,70,61,.045);\n}\n#cctv-academy-request .cctv-request-option.is-selected::before,\n#cctv-academy-request .cctv-request-option[aria-pressed=\"true\"]::before {opacity:1;transform:scaleY(1);}\n#cctv-academy-request .cctv-request-option__number,\n#cctv-academy-request .cctv-request-option.is-selected .cctv-request-option__number {\n  width:34px;height:34px;border:0;border-radius:9px;\n  background:#edf4f5;color:#3c6c73;font-size:10px;\n}\n#cctv-academy-request .cctv-request-option.is-selected .cctv-request-option__number {background:#b2463d;color:#fff;}\n#cctv-academy-request .cctv-request-option__copy strong {color:#233e50;font-size:14px;line-height:1.33;}\n#cctv-academy-request .cctv-request-option__copy small {margin-top:5px;color:#667b87;font-size:11px;line-height:1.5;}\n#cctv-academy-request .cctv-request-option__copy .cctv-request-prerequisite {\n  margin-top:9px; padding-top:7px; border-color:#e7edef;\n  color:#526b76; font-size:10px; font-weight:710;\n}\n#cctv-academy-request .cctv-request-option__check {\n  width:24px;height:24px;border-radius:100px;\n  border:1px solid #d9e4e6;background:#f7fafb;\n}\n#cctv-academy-request .cctv-request-option.is-selected .cctv-request-option__check {\n  border-color:#b2463d; background:#b2463d;color:#fff;\n}\n#cctv-academy-request .cctv-request-choice__status {\n  margin-top:20px;padding-top:14px;border-color:#e5eced;\n  color:#647986;font-size:11px;\n  background:transparent!important; border-radius:0;\n}\n#cctv-academy-request .cctv-request-choice__status strong {color:#233e4d;}\n#cctv-academy-request .cctv-request-followup {margin-top:18px;}\n#cctv-academy-request .cctv-micro-topics {margin-bottom:19px;}\n#cctv-academy-request .cctv-micro-track {\n  min-height:85px; padding:13px; border-radius:12px;\n  border:1px solid #e2e9eb;background:#fff;box-shadow:none;\n}\n#cctv-academy-request .cctv-micro-track.is-active {border-color:#97c3bd;background:#eff8f6;box-shadow:none;}\n#cctv-academy-request .cctv-micro-topic {\n  min-height:148px; padding:13px;border-radius:11px;\n  border-color:#dfe7e9;background:#fff;box-shadow:none;\n}\n#cctv-academy-request .cctv-micro-topic:hover {transform:translateY(-2px);box-shadow:0 7px 17px rgba(25,53,66,.07);}\n#cctv-academy-request .cctv-micro-topic.is-selected {border-color:#88bab1;background:#f1faf8;box-shadow:none;}\n#cctv-academy-request .cctv-micro-topic h4 {font-size:15px;}\n#cctv-academy-request .cctv-micro-topic p {font-size:11px;}\n#cctv-academy-request .cctv-micro-topics__viewport {background:#f6f9fa;border-color:#e1e8e9;border-radius:12px;}\n#cctv-academy-request .cctv-micro-topics__grid {gap:11px;background:#f6f9fa;}\n#cctv-academy-request .cctv-micro-topics__source {background:#eff7f5;color:#3e7070;border-color:#e1eeee;}\n#cctv-academy-request .cctv-micro-topics__bottom {\n  border:1px solid #e3e9e9;background:#fff;border-radius:12px;\n  padding:13px 15px;\n}\n#cctv-academy-request .cctv-micro-topics__selected {font-size:12px;color:#364e5b;}\n#cctv-academy-request .cctv-micro-topics__selected strong {\n  min-width:38px;height:38px;font-size:17px;background:#2a827f;color:#fff;\n}\n#cctv-academy-request .cctv-micro-topics__clear {\n  min-height:39px;padding:9px 15px;border:1px solid #d7e3e6;\n  border-radius:10px;background:#f4f8f8;color:#294c5a;font-size:11px;\n}\n#cctv-academy-request .cctv-micro-topics__clear:hover {background:#e9f1f1;border-color:#b5cbcf;color:#193746;}\n#cctv-academy-request .cctv-micro-intake__field {background:#fff;border-color:#e0e8ea;border-radius:11px;}\n#cctv-academy-request .cctv-micro-intake__field textarea {background:#fff;border-color:#d4e0e4;border-radius:10px;}\n#cctv-academy-request .cctv-participants__count-card {\n  border:1px solid #e0e8e9;border-radius:12px;\n  padding:15px 17px;background:#fff;\n}\n#cctv-academy-request .cctv-participants__select-wrap select {\n  min-width:95px;min-height:45px;border-color:#bfcfd2;border-radius:10px;\n  background:#fff;color:#1e3e4b;\n}\n#cctv-academy-request .cctv-v117-confirmation {\n  margin:-5px 0 12px;padding:14px;\n  border:1px solid #e2d4b5;border-radius:12px;\n  background:#fffaf2;\n}\n#cctv-academy-request .cctv-v117-confirmation__hint {color:#536b79;font-size:12px;}\n#cctv-academy-request .cctv-v117-confirm-button {\n  min-height:43px;padding:10px 17px;border:1px solid #b2463d;\n  border-radius:10px;background:#b2463d;color:#fff;\n  font-size:12px;box-shadow:0 7px 18px rgba(178,70,61,.14);\n  transition:background .2s ease,transform .2s ease,box-shadow .2s ease;\n}\n#cctv-academy-request .cctv-v117-confirm-button:hover {background:#94352f;border-color:#94352f;transform:translateY(-1px);}\n#cctv-academy-request #cctv-participants.cctv-v117-needs-confirmation .cctv-participants__select-wrap {\n  animation:cctv-v118-count-attention 2.6s ease-in-out infinite;\n}\n@keyframes cctv-v118-count-attention {\n  0%,100% {box-shadow:0 0 0 2px rgba(178,70,61,.10);}\n  50% {box-shadow:0 0 0 5px rgba(178,70,61,.30);}\n}\n#cctv-academy-request .cctv-selection-review {\n  margin:18px 0 0;padding:18px 21px;border-radius:14px;\n  background:#f3f8f7;border-color:#dce9e7;box-shadow:none;\n}\n#cctv-academy-request .cctv-selection-review::before {display:none;}\n#cctv-academy-request .cctv-selection-review__head {margin-bottom:11px;}\n#cctv-academy-request .cctv-selection-review h3 {font-size:15px;margin:0;}\n#cctv-academy-request .cctv-selection-review__grid {gap:9px;}\n#cctv-academy-request .cctv-selection-review__item {\n  padding:11px 13px;border:1px solid #e4eceb;border-radius:10px;background:#fff;\n}\n#cctv-academy-request .cctv-selection-review__status {background:#e4f1ec;color:#346b59;font-size:10px;white-space:normal;line-height:1.45;overflow-wrap:anywhere;max-width:100%;}\n#cctv-academy-request .cctv-selection-review__status.is-waiting {background:#fbefdd;color:#866326;}\n\/* Forminator lives in its OWN Elementor widget: styles deliberately target ID 49521. *\/\n#forminator-module-49521 {\n  margin-top:19px!important;padding:31px!important;\n  border:1px solid #dce5e9!important;border-radius:21px!important;\n  background:#fff!important;\n  box-shadow:0 20px 45px rgba(30,57,71,.065)!important;\n  font-family:Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif!important;\n  gap:16px 19px!important;\n}\n#forminator-module-49521 .cctv-forminator-context {\n  padding:15px 18px!important;border:1px solid #dbeae6!important;\n  border-radius:13px!important;background:#f2f8f6!important;\n}\n#forminator-module-49521 .cctv-forminator-context strong {color:#284a51;font-size:15px;}\n#forminator-module-49521 .cctv-form-section-title {\n  padding:18px 0 9px!important;border-bottom:1px solid #e4eaeb!important;\n  color:#253e50!important;font-size:14px!important;\n}\n#forminator-module-49521 .forminator-label {\n  margin-bottom:6px!important;color:#2c4959!important;\n  font-size:12px!important;font-weight:750!important;\n}\n#forminator-module-49521 input.forminator-input,\n#forminator-module-49521 textarea.forminator-textarea,\n#forminator-module-49521 select,\n#forminator-module-49521 .select2-selection,\n#forminator-module-49521 .cctv-v18-field input {\n  min-height:46px!important;padding:10px 13px!important;\n  border:1px solid #d3e0e4!important;\n  border-radius:10px!important;background:#fbfdfe!important;\n  color:#283f50!important;font-family:inherit!important;font-size:13px!important;\n  transition:border-color .2s ease,box-shadow .2s ease!important;\n}\n#forminator-module-49521 textarea.forminator-textarea {min-height:109px!important;}\n#forminator-module-49521 :is(input.forminator-input,textarea.forminator-textarea,select,.cctv-v18-field input):focus {\n  border-color:#68a9a2!important;background:#fff!important;\n  box-shadow:0 0 0 3px rgba(42,130,127,.10)!important;\n}\n#forminator-module-49521 .cctv-v18-participants {padding:18px 0 2px;margin:0 0 8px;}\n#forminator-module-49521 .cctv-v18-title {font-size:15px;color:#203b4d;border-color:#e2e9e9;}\n#forminator-module-49521 .cctv-v18-row {gap:11px;padding:11px 0;border-color:#e8eeee;}\n#forminator-module-49521 .cctv-v18-number {color:#4f6b79;}\n#forminator-module-49521 .forminator-button-submit {\n  min-height:48px!important;padding:11px 24px!important;\n  border:1px solid #b2463d!important;border-radius:10px!important;\n  background:#b2463d!important;color:#fff!important;\n  font-size:13px!important;font-weight:830!important;\n  letter-spacing:.015em!important;text-transform:none!important;\n  box-shadow:0 8px 20px rgba(178,70,61,.14)!important;\n}\n#forminator-module-49521 .forminator-button-submit:hover {\n  background:#94352f!important;box-shadow:0 10px 22px rgba(178,70,61,.21)!important;\n}\n\/* Presentation motion is optional, brief, and never gates content or submission. *\/\n@keyframes cctv-v118-enter {from{opacity:.3;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}\n#cctv-academy-request .cctv-hero-copy {animation:cctv-v118-enter .65s ease both;}\n#cctv-academy-request .cctv-hero-art {animation:cctv-v118-enter .78s .08s ease both;}\n#cctv-academy-request .cctv-request-followup:not([hidden]) {animation:cctv-v118-enter .32s ease both;}\n@media(max-width:1000px) {\n  #cctv-academy-request .cctv-process-list {grid-template-columns:1fr;gap:9px;}\n  #cctv-academy-request .cctv-intro-grid {grid-template-columns:1.18fr 1fr;}\n}\n@media(max-width:800px) {\n  #cctv-academy-request .cctv-container {width:min(100% - 34px,1120px);}\n  #cctv-academy-request .cctv-hero-layout {grid-template-columns:minmax(0,1fr) 204px;gap:23px;}\n  #cctv-academy-request .cctv-hero h1 {font-size:clamp(32px,5.2vw,46px);}\n  #cctv-academy-request .cctv-intro-grid {grid-template-columns:1fr;}\n  #cctv-academy-request .cctv-process-list {grid-template-columns:repeat(2,minmax(0,1fr));}\n  #cctv-academy-request .cctv-photo-grid {grid-template-columns:repeat(2,minmax(0,1fr));}\n  #cctv-academy-request .cctv-form-area {padding:26px;}\n  #forminator-module-49521 {padding:23px!important;grid-template-columns:1fr!important;}\n}\n@media(max-width:620px) {\n  #cctv-academy-request .cctv-container {width:calc(100% - 32px);}\n  #cctv-academy-request .cctv-page-tools {padding:16px 0 0;}\n  #cctv-academy-request .cctv-hero-content {padding:39px 0 45px;}\n  #cctv-academy-request .cctv-hero-layout {grid-template-columns:1fr;gap:22px;}\n  #cctv-academy-request .cctv-hero h1 {font-size:clamp(34px,9vw,46px);}\n  #cctv-academy-request .cctv-hero-art {width:min(100%,265px);justify-self:center;padding:9px;}\n  #cctv-academy-request .cctv-hero .cctv-poster {max-width:230px;}\n  #cctv-academy-request .cctv-hero-highlights {grid-template-columns:1fr;gap:9px;margin-top:27px;}\n  #cctv-academy-request .cctv-hero-highlight {padding:5px 0 6px 12px;}\n  #cctv-academy-request .cctv-main {padding:33px 0 73px;}\n  #cctv-academy-request .cctv-card,\n  #cctv-academy-request .cctv-participant-rule {padding:23px;}\n  #cctv-academy-request .cctv-process-list {grid-template-columns:1fr;}\n  #cctv-academy-request .cctv-photo-grid {grid-template-columns:1fr;}\n  #cctv-academy-request .cctv-visual-story {padding:22px;}\n  #cctv-academy-request .cctv-photo-card img,\n  #cctv-academy-request .cctv-photo-card--feature img {height:170px;}\n  #cctv-academy-request .cctv-conversion-band {padding:23px;}\n  #cctv-academy-request .cctv-form-area {padding:21px;}\n  #cctv-academy-request .cctv-form-confidence {display:grid;grid-template-columns:1fr;gap:7px;}\n  #cctv-academy-request .cctv-request-choice,\n  #cctv-academy-request .cctv-micro-topics,\n  #cctv-academy-request .cctv-micro-intake,\n  #cctv-academy-request .cctv-participants {padding:19px;}\n  #cctv-academy-request .cctv-request-choice__head,\n  #cctv-academy-request .cctv-micro-topics__head,\n  #cctv-academy-request .cctv-micro-intake__head,\n  #cctv-academy-request .cctv-participants__head {grid-template-columns:1fr;gap:8px;}\n  #cctv-academy-request .cctv-request-choice__grid {grid-template-columns:1fr;}\n  #cctv-academy-request .cctv-request-option {min-height:0;}\n  #cctv-academy-request .cctv-selection-review {padding:15px;}\n  #cctv-academy-request .cctv-selection-review__grid {grid-template-columns:1fr;}\n  #cctv-academy-request .cctv-selection-review__status {justify-self:start;text-align:left;}\n  #cctv-academy-request .cctv-mobile-cta {background:rgba(255,255,255,.95);border-color:#d9e5e7;box-shadow:0 11px 30px rgba(24,53,69,.15);padding:8px 10px;}\n  #cctv-academy-request .cctv-mobile-cta__copy {color:#254a58;}\n  #cctv-academy-request .cctv-mobile-cta > a {background:#b2463d;color:#fff!important;border-radius:11px;}\n  #forminator-module-49521 {margin-top:14px!important;padding:18px!important;border-radius:16px!important;}\n}\n@media(prefers-reduced-motion:reduce) {\n  #cctv-academy-request,#cctv-academy-request *,\n  #cctv-academy-request *::before,#cctv-academy-request *::after,\n  #forminator-module-49521 * {\n    scroll-behavior:auto!important;animation:none!important;transition:none!important;\n  }\n  #cctv-academy-request #cctv-participants.cctv-v117-needs-confirmation .cctv-participants__select-wrap {\n    outline:3px solid #b2463d;outline-offset:3px;\n  }\n}\n\n<\/style>\n\n<!-- v1.19 \u00b7 gerichte visuele correctie na echte WordPress-schermafbeelding.\n     Enkel CSS: geen nieuwe velden of wijzigingen in de 8 goedgekeurde scripts. -->\n<style id=\"cctv-academy-v119-form-alignment\">\n\/* De originele HTML-sectie en de afzonderlijke shortcode-widget zijn twee\n   Elementor-elementen. Geef ze dezelfde maximale breedte, zonder de plugin\n   of Elementor-container van andere pagina's aan te passen. *\/\nbody:has(#cctv-academy-request) .elementor-widget-shortcode:has(#forminator-module-49521) {\n  box-sizing:border-box!important;\n  width:100%!important;\n  max-width:1184px!important;\n  min-width:0!important;\n  margin:0 auto!important;\n  padding:0 32px!important;\n  flex-shrink:1!important;\n  align-self:center!important;\n}\nbody:has(#cctv-academy-request) .elementor-widget-shortcode:has(#forminator-module-49521) > .elementor-widget-container {\n  width:100%!important;\n  max-width:100%!important;\n  min-width:0!important;\n  margin:0!important;\n}\nbody:has(#cctv-academy-request) #forminator-module-49521 {\n  box-sizing:border-box!important;\n  width:100%!important;\n  max-width:1120px!important;\n  min-width:0!important;\n  margin:0 auto 38px!important;\n  overflow-wrap:break-word;\n}\n\/* Geen onnodige witruimte tussen de bestaande selectiesamenvatting en de\n   daaropvolgende contactgegevens. De intake-inhoud zelf blijft bestaan. *\/\nbody.cctv-academy-request-ready #cctv-academy-request .cctv-main {\n  padding-bottom:22px!important;\n}\nbody.cctv-academy-request-ready #cctv-academy-request {\n  padding-bottom:0!important;\n}\nbody.cctv-academy-request-ready #cctv-academy-request .cctv-form-area {\n  padding-bottom:24px!important;\n}\n\/* De formulierkop onder de shortcode herhaalt de selectie die direct\n   erboven al zichtbaar is. Alleen die dubbele presentatie verbergen;\n   velden, waarden en hidden-field-bridge blijven ongewijzigd. *\/\nbody.cctv-academy-request-ready:has(#cctv-academy-request #cctv-selection-review:not([hidden]))\n#forminator-module-49521 > .cctv-forminator-context {\n  display:none!important;\n}\n\/* Verhelp niet-passende form-grid-items en ingeladen select\/textarea-stijlen. *\/\nbody:has(#cctv-academy-request) #forminator-module-49521 .forminator-col,\nbody:has(#cctv-academy-request) #forminator-module-49521 .cctv-v18-participants,\nbody:has(#cctv-academy-request) #forminator-module-49521 .cctv-v18-row,\nbody:has(#cctv-academy-request) #forminator-module-49521 .cctv-v18-field {\n  min-width:0!important;max-width:100%!important;\n}\nbody:has(#cctv-academy-request) #forminator-module-49521 :is(input.forminator-input,textarea.forminator-textarea,select,.select2-container,.cctv-v18-field input) {\n  min-width:0!important;max-width:100%!important;\n}\n@media(max-width:800px) {\n  body:has(#cctv-academy-request) .elementor-widget-shortcode:has(#forminator-module-49521) {\n    padding:0 17px!important;\n  }\n}\n@media(max-width:620px) {\n  body:has(#cctv-academy-request) .elementor-widget-shortcode:has(#forminator-module-49521) {\n    padding:0 16px!important;\n  }\n}\n@media(max-width:760px) {\n  body.cctv-academy-request-ready #cctv-academy-request .cctv-main {\n    padding-bottom:13px!important;\n  }\n  body.cctv-academy-request-ready #cctv-academy-request .cctv-mobile-cta {\n    display:none!important; \/* niet langer nodig zodra het formulier openstaat *\/\n  }\n  body:has(#cctv-academy-request) #forminator-module-49521 {\n    padding:19px!important;border-radius:16px!important;\n  }\n}\n<\/style>\n<header class=\"cctv-hero\">\n<div class=\"cctv-container\">\n<div class=\"cctv-page-tools\">\n<a aria-label=\"Ga naar de homepage van CCTV Academy\" class=\"cctv-home-button\" href=\"https:\/\/cctvacademy.be\/nl\/\">\n<span aria-hidden=\"true\" class=\"cctv-home-icon\">\u2302<\/span>\n<span data-i18n=\"home\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Home<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Accueil<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Home<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Startseite<\/span><\/span>\n<\/a>\n<div class=\"cctv-language-bar\">\n<span class=\"cctv-language-label\">\n          Taal \u00b7 Langue \u00b7 Language\n        <\/span>\n<div aria-label=\"NL \/ FR \/ EN \/ DE\" class=\"cctv-language-switcher\" role=\"radiogroup\">\n<label for=\"cctv-lang-nl\" title=\"Nederlands\">NL<\/label>\n<label for=\"cctv-lang-fr\" title=\"Fran\u00e7ais\">FR<\/label>\n<label for=\"cctv-lang-en\" title=\"English\">EN<\/label>\n<label for=\"cctv-lang-de\" title=\"Deutsch\">DE<\/label><\/div>\n<\/div>\n<\/div>\n<div class=\"cctv-hero-content\">\n<div class=\"cctv-hero-layout\">\n<div class=\"cctv-hero-copy\">\n<div class=\"cctv-kicker\" data-i18n=\"kicker\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">CCTV Academy \u00b7 Voor professionele installateurs<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Academy \u00b7 Pour les installateurs professionnels<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Academy \u00b7 For professional installers<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV Academy \u00b7 F\u00fcr professionelle Errichter<\/span><\/div>\n<h1 data-i18n=\"hero_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Word zekerder in CCTV. Kies de opleiding die u verder brengt.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Ma\u00eetrisez mieux le CCTV. Choisissez la formation qui vous fait progresser.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Build your CCTV confidence. Choose training that moves you forward.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Mehr Sicherheit im Umgang mit CCTV. Finden Sie Ihre passende Schulung.<\/span><\/h1>\n<p data-i18n=\"hero_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geef aan welke opleiding, Micro-Learning sessie, opleidingstraject of technische ondersteuning u nodig heeft. Vul uw aanvraag zo volledig mogelijk in, zodat we de juiste inhoud, begeleiding en praktische voorbereiding kunnen voorzien.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Indiquez la formation, la session de Micro-Learning, le parcours ou l\u2019assistance technique dont vous avez besoin. Compl\u00e9tez votre demande aussi pr\u00e9cis\u00e9ment que possible afin que nous puissions pr\u00e9parer le contenu, l\u2019accompagnement et l\u2019organisation pratique adapt\u00e9s.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Tell us which course, Micro-Learning session, training path or technical support you need. Complete your request as fully as possible so we can prepare the right content, guidance and practical setup.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie Ihre Schulung, Ihr Micro-Learning-Thema oder die gew\u00fcnschte technische Unterst\u00fctzung. Mit Ihren Angaben k\u00f6nnen wir Inhalte und praktische Vorbereitung passend abstimmen.<\/span><\/p>\n<div aria-label=\"Snelle acties\" class=\"cctv-hero-actions\">\n<a class=\"cctv-cta cctv-cta--primary\" href=\"#cctv-aanvraag\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Start uw aanvraag<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Commencer votre demande<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Start your request<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Anfrage starten<\/span>\n<span aria-hidden=\"true\" class=\"cctv-cta__arrow\">\u2192<\/span>\n<\/a>\n<a class=\"cctv-cta cctv-cta--secondary\" href=\"#cctv-werkwijze\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Bekijk de aanpak<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Voir l\u2019approche<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">See the approach<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">So funktioniert es<\/span>\n<\/a>\n<\/div>\n<p class=\"cctv-hero-microcopy\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies eerst uw traject of onderwerp. Daarna vult u alleen de relevante informatie in.<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez d\u2019abord votre parcours ou votre sujet. Vous compl\u00e9tez ensuite uniquement les informations utiles.<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose your path or topic first. Then complete only the information that matters.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie zuerst Ihren Lernweg oder Ihr Thema. Danach geben Sie nur die relevanten Informationen ein.<\/span>\n<\/p>\n<\/div><!-- \/cctv-hero-copy -->\n<aside class=\"cctv-hero-art\" aria-label=\"CCTV Academy affiche\">\n<figure class=\"cctv-poster\">\n<img data-recalc-dims=\"1\" decoding=\"async\" alt=\"CCTV Academy affiche met technische illustratie van bewakingscamera\u2019s\" onerror=\"this.style.display='none';this.nextElementSibling.style.display='grid';\" src=\"https:\/\/i0.wp.com\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png?w=812&#038;ssl=1\"\/>\n<div class=\"cctv-poster-fallback\" style=\"display:none;\">\n<div>\n<strong data-i18n=\"poster_missing_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Affiche toevoegen<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Ajouter l\u2019affiche<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Add the poster<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Plakat hinzuf\u00fcgen<\/span><\/strong><br\/>\n<span data-i18n=\"poster_missing_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Vervang in de HTML de afbeeldings-URL door de WordPress-URL van de aangeleverde affiche.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Remplacez dans le HTML l\u2019URL de l\u2019image par l\u2019URL WordPress de l\u2019affiche fournie.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Replace the image URL in the HTML with the WordPress URL of the supplied poster.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ersetzen Sie im HTML die Bild-URL durch die WordPress-URL des bereitgestellten Plakats.<\/span><\/span>\n<\/div>\n<\/div>\n<\/figure>\n<\/aside>\n<\/div><!-- \/cctv-hero-layout -->\n<div class=\"cctv-hero-highlights\">\n<div class=\"cctv-hero-highlight\">\n<strong><span class=\"cctv-lang-copy cctv-lang-copy--nl\">3 duidelijke opleidingstrajecten<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">3 parcours de formation clairs<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">3 clear learning paths<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">3 klare Lernwege<\/span><\/strong>\n<span><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Van Basis CCTV tot Advanced AI: kies het niveau dat aansluit bij uw ervaring.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Du CCTV de base \u00e0 l\u2019Advanced AI : choisissez le niveau adapt\u00e9 \u00e0 votre exp\u00e9rience.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">From CCTV Basics to Advanced AI: choose the level that matches your experience.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Von CCTV-Grundlagen bis Advanced AI: W\u00e4hlen Sie die passende Stufe f\u00fcr Ihre Erfahrung.<\/span><\/span>\n<\/div>\n<div class=\"cctv-hero-highlight\">\n<strong><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Flexibele Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Micro-Learning flexible<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Flexible Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Flexibles Micro-Learning<\/span><\/strong>\n<span><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Werk gericht aan \u00e9\u00e9n concrete techniek, configuratie of probleemstelling.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Travaillez de mani\u00e8re cibl\u00e9e sur une technique, une configuration ou un probl\u00e8me concret.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Focus on one specific technique, configuration or technical challenge.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Arbeiten Sie gezielt an einer konkreten Technik, Konfiguration oder Fragestellung.<\/span><\/span>\n<\/div>\n<div class=\"cctv-hero-highlight\">\n<strong><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Technische assistentie<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Assistance technique<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Technical assistance<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Technische Unterst\u00fctzung<\/span><\/strong>\n<span><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Heeft u een probleem met de installatie, configuratie of werking van uw CCTV-systeem? Breng uw technische uitdaging mee. Samen analyseren we het probleem en werken we een praktische, doeltreffende oplossing uit.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Vous rencontrez un probl\u00e8me d\u2019installation, de configuration ou de fonctionnement de votre syst\u00e8me CCTV ? Pr\u00e9sentez-nous votre difficult\u00e9 technique. Ensemble, nous analyserons le probl\u00e8me et \u00e9laborerons une solution concr\u00e8te et efficace.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Having trouble installing, configuring or operating your CCTV system? Bring us your technical challenge. Together, we\u2019ll analyse the problem and develop a practical, effective solution.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Haben Sie ein Problem bei der Installation, Konfiguration oder beim Betrieb Ihres CCTV-Systems? Bringen Sie Ihre technische Herausforderung mit. Gemeinsam analysieren wir das Problem und erarbeiten eine praxisnahe, wirksame L\u00f6sung.<\/span><\/span>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/header>\n<main class=\"cctv-main\">\n<div class=\"cctv-container\">\n<div class=\"cctv-intro-grid\">\n<section class=\"cctv-card\" id=\"cctv-werkwijze\">\n<h2 data-i18n=\"how_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Zo verloopt uw aanvraag<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Voici comment se d\u00e9roule votre demande<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">How your request works<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">So l\u00e4uft Ihre Anfrage ab<\/span><\/h2>\n<p data-i18n=\"how_intro\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geen lange planningstabellen. Geef ons vooral de informatie die nodig is om uw opleiding of technische ondersteuning correct voor te bereiden.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pas de longs tableaux de planification. Donnez-nous surtout les informations n\u00e9cessaires pour pr\u00e9parer correctement votre formation ou votre assistance technique.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">No lengthy planning tables. Give us the information we need to prepare your training or technical support correctly.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Keine langen Planungstabellen: Teilen Sie uns die Informationen mit, die wir f\u00fcr Ihre Schulung oder technische Unterst\u00fctzung ben\u00f6tigen.<\/span><\/p>\n<div class=\"cctv-process-list\">\n<div class=\"cctv-process-item\">\n<span class=\"cctv-process-number\">01<\/span>\n<div>\n<strong data-i18n=\"step1_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies uw opleiding of ondersteuning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez votre formation ou votre assistance<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose your training or support<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie Schulung oder Unterst\u00fctzung<\/span><\/strong>\n<span data-i18n=\"step1_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geef aan welk traject, onderwerp of technisch probleem centraal staat.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Indiquez le parcours, le sujet ou le probl\u00e8me technique concern\u00e9.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Tell us which path, topic or technical problem is central to your request.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Nennen Sie Ihren Lernweg, Ihr Thema oder Ihr technisches Problem.<\/span><\/span>\n<\/div>\n<\/div>\n<div class=\"cctv-process-item\">\n<span class=\"cctv-process-number\">02<\/span>\n<div>\n<strong data-i18n=\"step2_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Beschrijf uw voorkennis<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">D\u00e9crivez vos connaissances pr\u00e9alables<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Describe your prior knowledge<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Beschreiben Sie Ihre Vorkenntnisse<\/span><\/strong>\n<span data-i18n=\"step2_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Zo kunnen we het niveau en de inhoud beter afstemmen.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Nous pouvons ainsi mieux adapter le niveau et le contenu.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">This allows us to better match the level and content.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">So k\u00f6nnen wir Niveau und Inhalte besser abstimmen.<\/span><\/span>\n<\/div>\n<\/div>\n<div class=\"cctv-process-item\">\n<span class=\"cctv-process-number\">03<\/span>\n<div>\n<strong data-i18n=\"step3_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Vul deelnemers en contactgegevens in<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Indiquez les participants et vos coordonn\u00e9es<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Enter participants and contact details<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Teilnehmende und Kontaktdaten angeben<\/span><\/strong>\n<span data-i18n=\"step3_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Vermeld duidelijk voor wie de opleiding of ondersteuning bedoeld is.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9cisez clairement \u00e0 qui la formation ou l\u2019assistance est destin\u00e9e.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Clearly indicate who the training or support is intended for.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Geben Sie an, f\u00fcr wen Schulung oder Unterst\u00fctzung vorgesehen sind.<\/span><\/span>\n<\/div>\n<\/div>\n<div class=\"cctv-process-item\">\n<span class=\"cctv-process-number\">04<\/span>\n<div>\n<strong data-i18n=\"step4_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">CCTV Academy neemt contact op<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Academy vous contacte<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Academy contacts you<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV Academy nimmt Kontakt auf<\/span><\/strong>\n<span data-i18n=\"step4_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">We stemmen de praktische organisatie vervolgens rechtstreeks met u af.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Nous convenons ensuite directement avec vous de l\u2019organisation pratique.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">We then coordinate the practical organisation directly with you.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Anschlie\u00dfend stimmen wir die praktische Organisation direkt mit Ihnen ab.<\/span><\/span>\n<\/div>\n<\/div>\n<\/div>\n<script>\n(function(){\n  \"use strict\";\n\n  var ROOT_ID = \"cctv-academy-request\";\n  var STORAGE_KEY = \"cctv_academy_request_type\";\n\n  var labels = {\n    \"basis-cctv\":\"choice_basis_cctv_title\",\n    \"basis-ai\":\"choice_basis_ai_title\",\n    \"advanced-ai\":\"choice_advanced_ai_title\",\n    \"micro-learning\":\"choice_micro_title\",\n    \"technical-support\":\"choice_support_title\"\n  };\n\n  var currentType = \"\";\n\n  function root(){\n    return document.getElementById(ROOT_ID);\n  }\n\n  function getCurrentLanguage(){\n    if (\n      window.CCTVAcademyLanguage &&\n      typeof window.CCTVAcademyLanguage.get === \"function\"\n    ){\n      return window.CCTVAcademyLanguage.get();\n    }\n    return \"nl\";\n  }\n\n  function getTranslatedLabel(type){\n    var el = root();\n    if (!el || !labels[type]) return \"\";\n\n    var card = el.querySelector(\n      '.cctv-request-option[data-request-type=\"' + type + '\"]'\n    );\n\n    if (!card) return \"\";\n\n    var lang = getCurrentLanguage();\n    var localized = card.querySelector(\n      \".cctv-lang-copy--\" + lang\n    );\n\n    if (localized){\n      return localized.textContent.trim();\n    }\n\n    var title = card.querySelector(\"[data-i18n]\");\n    return title ? title.textContent.trim() : \"\";\n  }\n\n  function render(type){\n    var el = root();\n    if (!el) return;\n\n    currentType = type || \"\";\n\n    el.querySelectorAll(\".cctv-request-option[data-request-type]\").forEach(function(button){\n      var active = button.getAttribute(\"data-request-type\") === currentType;\n      button.classList.toggle(\"is-selected\",active);\n      button.setAttribute(\"aria-pressed\",active ? \"true\" : \"false\");\n    });\n\n    var hidden = el.querySelector(\"#cctv-request-type-hidden\");\n    if (hidden){\n      hidden.value = currentType;\n    }\n\n    var value = el.querySelector(\"#cctv-request-choice-value\");\n    if (value){\n      if (currentType){\n        value.removeAttribute(\"data-i18n\");\n        value.textContent = getTranslatedLabel(currentType);\n      }else{\n        value.setAttribute(\"data-i18n\",\"choice_none\");\n      }\n    }\n  }\n\n  function set(type,persist){\n    var valid = Object.prototype.hasOwnProperty.call(labels,type);\n    type = valid ? type : \"\";\n\n    render(type);\n\n    if (persist !== false){\n      try{\n        localStorage.setItem(STORAGE_KEY,type);\n      }catch(e){}\n    }\n\n    try{\n      window.dispatchEvent(new CustomEvent(\"cctvAcademyRequestTypeChange\",{\n        detail:{requestType:type}\n      }));\n    }catch(e){}\n  }\n\n  function init(){\n    var el = root();\n    if (!el) return;\n\n    el.querySelectorAll(\".cctv-request-option[data-request-type]\").forEach(function(button){\n      button.addEventListener(\"click\",function(){\n        set(button.getAttribute(\"data-request-type\"),true);\n      });\n    });\n\n    var stored = \"\";\n    try{\n      stored = localStorage.getItem(STORAGE_KEY) || \"\";\n    }catch(e){}\n\n    set(stored,false);\n  }\n\n  window.CCTVAcademyRequestType = {\n    set:function(type){ set(type,true); },\n    get:function(){ return currentType; }\n  };\n\n  window.addEventListener(\"cctvAcademyLanguageChange\",function(){\n    window.setTimeout(function(){\n      render(currentType);\n    },0);\n  });\n\n  if (document.readyState === \"loading\"){\n    document.addEventListener(\"DOMContentLoaded\",init,{once:true});\n  }else{\n    init();\n  }\n})();\n<\/script>\n<\/section>\n<aside class=\"cctv-participant-rule\">\n<span class=\"cctv-participant-label\" data-i18n=\"participants_label\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Belangrijk<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Important<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Important<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Wichtig<\/span><\/span>\n<h2 data-i18n=\"participants_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Opleidingen vanaf 5 inschrijvingen.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Formations \u00e0 partir de 5 inscriptions.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Courses run from 5 registrations.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Regul\u00e4re Schulungen ab 5 Anmeldungen.<\/span><\/h2>\n<p data-i18n=\"participants_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Alle reguliere CCTV Academy-opleidingen gaan door zodra er minstens 5 deelnemers zijn ingeschreven.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Toutes les formations r\u00e9guli\u00e8res de CCTV Academy sont organis\u00e9es \u00e0 partir d\u2019un minimum de 5 participants inscrits.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">All regular CCTV Academy courses take place once at least 5 participants have registered.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Regul\u00e4re CCTV-Academy-Schulungen finden ab mindestens 5 angemeldeten Personen statt.<\/span><\/p>\n<div class=\"cctv-micro-exception\">\n<strong data-i18n=\"micro_exception_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Uitzondering: CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Exception : CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Exception: CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ausnahme: CCTV Micro-Learning<\/span><\/strong><br\/>\n<span data-i18n=\"micro_exception_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Aan CCTV Micro-Learning trainingen kunt u ook individueel deelnemen.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Les formations CCTV Micro-Learning sont \u00e9galement accessibles individuellement.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Micro-Learning training sessions can also be attended individually.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Am CCTV Micro-Learning k\u00f6nnen Sie auch einzeln teilnehmen.<\/span><\/span>\n<\/div>\n<\/aside>\n<\/div>\n\n\n\n<section aria-labelledby=\"cctv-faq-title\" class=\"cctv-compact-faq\">\n<details class=\"cctv-compact-faq__toggle\">\n<summary class=\"cctv-compact-faq__summary\">\n  <span class=\"cctv-compact-faq__intro\">\n    <span class=\"cctv-eyebrow\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Goed om te weten<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Bon \u00e0 savoir<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Good to know<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Gut zu wissen<\/span><\/span>\n    <h2 id=\"cctv-faq-title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Een traject dat bij uw praktijk past<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Un parcours adapt\u00e9 \u00e0 votre pratique<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">A learning path for your day-to-day work<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ein Lernweg f\u00fcr Ihren Arbeitsalltag<\/span><\/h2>\n  <\/span>\n  <span class=\"cctv-compact-faq__action\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Bekijk 3 antwoorden<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Voir les 3 r\u00e9ponses<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">View 3 answers<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">3 Antworten ansehen<\/span><span class=\"cctv-compact-faq__chevron\" aria-hidden=\"true\">\u2304<\/span><\/span>\n<\/summary>\n<div class=\"cctv-compact-faq__grid\">\n\n<details><summary><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Twijfel over uw niveau?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Vous h\u00e9sitez sur votre niveau ?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Not sure about your level?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Unsicher \u00fcber Ihr Niveau?<\/span><\/summary><p><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Beschrijf uw ervaring in de aanvraag. Zo kunnen we samen bekijken welk traject aansluit op uw voorkennis.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">D\u00e9crivez votre exp\u00e9rience dans la demande. Nous pourrons ainsi examiner ensemble le parcours correspondant \u00e0 vos acquis.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Describe your experience in your request. We can then discuss which path suits your current skills.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Beschreiben Sie Ihre Erfahrung in der Anfrage. So k\u00f6nnen wir gemeinsam den passenden Lernweg finden.<\/span><\/p><\/details>\n<details><summary><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Wilt u \u00e9\u00e9n specifiek probleem aanpakken?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Vous souhaitez r\u00e9soudre un probl\u00e8me pr\u00e9cis ?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Want to tackle one specific problem?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">M\u00f6chten Sie ein konkretes Problem l\u00f6sen?<\/span><\/summary><p><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies Micro-Learning voor een gericht leermoment of technische ondersteuning voor uw concrete vraag.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez le Micro-Learning pour un apprentissage cibl\u00e9 ou l\u2019assistance technique pour votre question concr\u00e8te.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose Micro-Learning for focused training or technical support for a specific issue.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie Micro-Learning f\u00fcr gezieltes Lernen oder technischen Support f\u00fcr eine konkrete Frage.<\/span><\/p><\/details>\n<details><summary><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Wat gebeurt er na uw aanvraag?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Que se passe-t-il apr\u00e8s votre demande ?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">What happens after your request?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Was passiert nach Ihrer Anfrage?<\/span><\/summary><p><span class=\"cctv-lang-copy cctv-lang-copy--nl\">CCTV Academy neemt contact op om de inhoud en praktische organisatie met u af te stemmen. Dit formulier legt niet automatisch een opleidingsdatum vast.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Academy vous contacte pour convenir du contenu et de l\u2019organisation. Ce formulaire ne r\u00e9serve pas automatiquement une date.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Academy will contact you to agree on content and practical arrangements. This form does not automatically book a date.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV Academy kontaktiert Sie, um Inhalte und Organisation abzustimmen. Mit diesem Formular wird nicht automatisch ein Termin gebucht.<\/span><\/p><\/details>\n<\/div>\n<\/details>\n<\/section><section class=\"cctv-form-area\" id=\"cctv-aanvraag\">\n<div class=\"cctv-form-head\">\n<div>\n<h2 data-i18n=\"request_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Uw aanvraag<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Votre demande<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Your request<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ihre Anfrage<\/span><\/h2>\n<\/div>\n<span class=\"cctv-form-badge\" data-i18n=\"form_badge\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">CCTV Academy \u00b7 Aanvraag<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Academy \u00b7 Demande<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Academy \u00b7 Request<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV Academy \u00b7 Anfrage<\/span><\/span>\n<\/div>\n<div class=\"cctv-form-confidence\">\n<span>01 <span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies uw traject<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez votre parcours<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose your path<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Lernweg w\u00e4hlen<\/span><\/span>\n<span>02 <span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geef uw context<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9cisez votre contexte<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Add your context<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ihre Situation beschreiben<\/span><\/span>\n<span>03 <span class=\"cctv-lang-copy cctv-lang-copy--nl\">Wij stemmen af<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Nous coordonnons<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">We coordinate<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Wir stimmen alles ab<\/span><\/span>\n<\/div>\n<section aria-labelledby=\"cctv-request-choice-title\" class=\"cctv-request-choice\">\n<div class=\"cctv-request-choice__head\">\n<span class=\"cctv-request-choice__step\" data-i18n=\"choice_step\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Stap 1<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">\u00c9tape 1<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Step 1<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Schritt 1<\/span><\/span>\n<div>\n<h3 data-i18n=\"choice_title\" id=\"cctv-request-choice-title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Wat wilt u aanvragen?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Que souhaitez-vous demander ?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">What would you like to request?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Was m\u00f6chten Sie anfragen?<\/span><\/h3>\n<p data-i18n=\"choice_intro\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies eerst het type opleiding of ondersteuning. In de volgende stap kunnen we het formulier gericht aanpassen aan uw keuze.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez d\u2019abord le type de formation ou d\u2019assistance. \u00c0 l\u2019\u00e9tape suivante, nous pourrons adapter le formulaire \u00e0 votre choix.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">First choose the type of training or support. In the next step, we can tailor the form to your selection.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie Ihre Schulung oder Unterst\u00fctzung. Anschlie\u00dfend wird das Formular auf Ihre Auswahl abgestimmt.<\/span><\/p>\n<\/div>\n<\/div>\n<div aria-label=\"Type aanvraag\" class=\"cctv-request-choice__grid\" role=\"group\">\n<button aria-pressed=\"false\" class=\"cctv-request-option\" data-request-type=\"basis-cctv\" type=\"button\">\n<span class=\"cctv-request-option__number\">01<\/span>\n<span class=\"cctv-request-option__copy\">\n<strong data-i18n=\"choice_basis_cctv_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Traject 1\/3 : Basis CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Parcours 1\/3 : CCTV de base<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Track 1\/3: CCTV Basics<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Lernweg 1\/3: CCTV-Grundlagen<\/span><\/strong>\n<small data-i18n=\"choice_basis_cctv_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Camera's, recorders, opslag, bekabeling en technische fundamenten.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Cam\u00e9ras, enregistreurs, stockage, c\u00e2blage et fondamentaux techniques.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Cameras, recorders, storage, cabling and technical fundamentals.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Kameras, Rekorder, Speicherung, Verkabelung und technische Grundlagen.<\/span><\/small>\n<span class=\"cctv-request-prerequisite\" data-i18n=\"prerequisite_basis_cctv\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Voorkennis: geen<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9requis : aucun<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Prerequisites: none<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Vorkenntnisse: keine<\/span><\/span>\n<\/span>\n<span aria-hidden=\"true\" class=\"cctv-request-option__check\">\u2713<\/span>\n<\/button>\n<button aria-pressed=\"false\" class=\"cctv-request-option\" data-request-type=\"basis-ai\" type=\"button\">\n<span class=\"cctv-request-option__number\">02<\/span>\n<span class=\"cctv-request-option__copy\">\n<strong data-i18n=\"choice_basis_ai_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Traject 2\/3 : Basis AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Parcours 2\/3 : CCTV IA de base<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Track 2\/3: Basic AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Lernweg 2\/3: KI-CCTV-Grundlagen<\/span><\/strong>\n<small data-i18n=\"choice_basis_ai_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">MD, IVS, SMD en intelligente personen- en voertuigdetectie.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">MD, IVS, SMD et d\u00e9tection intelligente des personnes et v\u00e9hicules.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">MD, IVS, SMD and intelligent person and vehicle detection.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">MD, IVS, SMD und intelligente Personen- und Fahrzeugerkennung.<\/span><\/small>\n<span class=\"cctv-request-prerequisite\" data-i18n=\"prerequisite_basis_ai\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Voorkennis: Basis CCTV of gelijkgesteld door ervaring<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9requis : CCTV de base ou exp\u00e9rience pratique \u00e9quivalente<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Prerequisites: CCTV Basics or equivalent practical experience<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Vorkenntnisse: CCTV-Grundlagen oder gleichwertige praktische Erfahrung<\/span><\/span>\n<\/span>\n<span aria-hidden=\"true\" class=\"cctv-request-option__check\">\u2713<\/span>\n<\/button>\n<button aria-pressed=\"false\" class=\"cctv-request-option\" data-request-type=\"advanced-ai\" type=\"button\">\n<span class=\"cctv-request-option__number\">03<\/span>\n<span class=\"cctv-request-option__copy\">\n<strong data-i18n=\"choice_advanced_ai_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Traject 3\/3 : Advanced AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Parcours 3\/3 : CCTV IA avanc\u00e9e<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Track 3\/3: Advanced AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Lernweg 3\/3: Advanced AI CCTV<\/span><\/strong>\n<small data-i18n=\"choice_advanced_ai_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">ANPR, perimeter, AcuPick, herkenning en geavanceerde videoanalyse.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">ANPR, p\u00e9rim\u00e8tre, AcuPick, reconnaissance et analyse vid\u00e9o avanc\u00e9e.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">ANPR, perimeter, AcuPick, recognition and advanced video analytics.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">ANPR, Perimeterschutz, AcuPick, Erkennung und erweiterte Videoanalyse.<\/span><\/small>\n<span class=\"cctv-request-prerequisite\" data-i18n=\"prerequisite_advanced_ai\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Voorkennis: Basis AI CCTV of gelijkgesteld door ervaring<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9requis : CCTV IA de base ou exp\u00e9rience pratique \u00e9quivalente<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Prerequisites: Basic AI CCTV or equivalent practical experience<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Vorkenntnisse: KI-CCTV-Grundlagen oder gleichwertige praktische Erfahrung<\/span><\/span>\n<\/span>\n<span aria-hidden=\"true\" class=\"cctv-request-option__check\">\u2713<\/span>\n<\/button>\n<button aria-pressed=\"false\" class=\"cctv-request-option cctv-request-option--micro\" data-request-type=\"micro-learning\" type=\"button\">\n<span class=\"cctv-request-option__number\">04<\/span>\n<span class=\"cctv-request-option__copy\">\n<strong data-i18n=\"choice_micro_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV Micro-Learning<\/span><\/strong>\n<small data-i18n=\"choice_micro_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies zelf wat u praktisch wilt oefenen. Individuele deelname is mogelijk.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez vous-m\u00eame ce que vous souhaitez pratiquer. La participation individuelle est possible.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose what you want to practise. Individual attendance is possible.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie selbst, was Sie praktisch \u00fcben m\u00f6chten. Einzelteilnahme ist m\u00f6glich.<\/span><\/small>\n<\/span>\n<span aria-hidden=\"true\" class=\"cctv-request-option__check\">\u2713<\/span>\n<\/button>\n<button aria-pressed=\"false\" class=\"cctv-request-option\" data-request-type=\"technical-support\" type=\"button\">\n<span class=\"cctv-request-option__number\">05<\/span>\n<span class=\"cctv-request-option__copy\">\n<strong data-i18n=\"choice_support_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Technische ondersteuning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Assistance technique<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Technical support<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Technischer Support<\/span><\/strong>\n<small data-i18n=\"choice_support_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Een concrete technische vraag, configuratie of probleemstelling.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Une question technique concr\u00e8te, une configuration ou un probl\u00e8me \u00e0 r\u00e9soudre.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">A specific technical question, configuration or problem to solve.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Eine konkrete technische Frage, Konfiguration oder Problemstellung.<\/span><\/small>\n<\/span>\n<span aria-hidden=\"true\" class=\"cctv-request-option__check\">\u2713<\/span>\n<\/button>\n<\/div>\n<div aria-live=\"polite\" class=\"cctv-request-choice__status\">\n<span data-i18n=\"choice_selected_label\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geselecteerd:<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">S\u00e9lection :<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Selected:<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ausgew\u00e4hlt:<\/span><\/span>\n<strong data-i18n=\"choice_none\" id=\"cctv-request-choice-value\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">nog geen keuze<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">aucun choix pour l\u2019instant<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">no selection yet<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">noch keine Auswahl<\/span><\/strong>\n<\/div>\n<input aria-hidden=\"true\" id=\"cctv-request-type-hidden\" type=\"hidden\" value=\"\"\/>\n<\/section><div class=\"cctv-request-followup\" hidden=\"\" id=\"cctv-request-followup\"><section aria-labelledby=\"cctv-micro-topics-title\" class=\"cctv-micro-topics\" hidden=\"\" id=\"cctv-micro-topics\">\n<div class=\"cctv-micro-topics__head\">\n<span class=\"cctv-micro-topics__step\" data-i18n=\"topics_step\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Stap 2<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">\u00c9tape 2<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Step 2<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Schritt 2<\/span><\/span>\n<div class=\"cctv-micro-topics__intro\">\n<h3 data-i18n=\"topics_title\" id=\"cctv-micro-topics-title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies eerst uw opleidingstraject<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez d\u2019abord votre parcours de formation<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">First choose your training path<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie zuerst Ihren Lernweg<\/span><\/h3>\n<p data-i18n=\"topics_intro\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">De Micro-Learning onderwerpen zijn verdeeld over Basis CCTV, Basis AI CCTV en Advanced AI CCTV. Kies een traject en selecteer daarna \u00e9\u00e9n of meerdere onderwerpen.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Les sujets de Micro-Learning sont r\u00e9partis entre CCTV de base, CCTV IA de base et CCTV IA avanc\u00e9e. Choisissez un parcours puis s\u00e9lectionnez un ou plusieurs sujets.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Micro-Learning topics are divided into CCTV Basics, Basic AI CCTV and Advanced AI CCTV. Choose a path and then select one or more topics.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Die Micro-Learning-Themen sind auf CCTV-Grundlagen, KI-CCTV-Grundlagen und Advanced AI CCTV verteilt. W\u00e4hlen Sie einen Lernweg und danach ein oder mehrere Themen.<\/span><\/p>\n<\/div>\n<\/div>\n<div aria-label=\"CCTV opleidingstraject\" class=\"cctv-micro-tracks\" role=\"tablist\">\n<button aria-selected=\"true\" class=\"cctv-micro-track is-active\" data-track=\"basis-cctv\" role=\"tab\" type=\"button\">\n<span class=\"cctv-micro-track__number\">01<\/span>\n<span class=\"cctv-micro-track__copy\">\n<strong data-i18n=\"track_basis_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Basis CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV de base<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">CCTV Basics<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">CCTV-Grundlagen<\/span><\/strong>\n<small data-i18n=\"track_basis_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Camera's, recorders, opslag, IP, bekabeling en basis troubleshooting.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Cam\u00e9ras, enregistreurs, stockage, IP, c\u00e2blage et d\u00e9pannage de base.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Cameras, recorders, storage, IP, cabling and basic troubleshooting.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Kameras, Rekorder, Speicher, IP, Verkabelung und grundlegende Fehlerbehebung.<\/span><\/small>\n<\/span>\n<span class=\"cctv-micro-track__count\" data-track-count=\"basis-cctv\">0<\/span>\n<\/button>\n<button aria-selected=\"false\" class=\"cctv-micro-track\" data-track=\"basis-ai\" role=\"tab\" type=\"button\">\n<span class=\"cctv-micro-track__number\">02<\/span>\n<span class=\"cctv-micro-track__copy\">\n<strong data-i18n=\"track_basis_ai_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Basis AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV IA de base<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Basic AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">KI-CCTV-Grundlagen<\/span><\/strong>\n<small data-i18n=\"track_basis_ai_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">MD, IVS, SMD en intelligente personen- en voertuigdetectie.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">MD, IVS, SMD et d\u00e9tection intelligente des personnes et v\u00e9hicules.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">MD, IVS, SMD and intelligent person and vehicle detection.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">MD, IVS, SMD und intelligente Personen- und Fahrzeugerkennung.<\/span><\/small>\n<\/span>\n<span class=\"cctv-micro-track__count\" data-track-count=\"basis-ai\">0<\/span>\n<\/button>\n<button aria-selected=\"false\" class=\"cctv-micro-track\" data-track=\"advanced-ai\" role=\"tab\" type=\"button\">\n<span class=\"cctv-micro-track__number\">03<\/span>\n<span class=\"cctv-micro-track__copy\">\n<strong data-i18n=\"track_advanced_title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Advanced AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV IA avanc\u00e9e<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Advanced AI CCTV<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Advanced AI CCTV<\/span><\/strong>\n<small data-i18n=\"track_advanced_text\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">ANPR, perimeter, AcuPick, herkenning en geavanceerde videoanalyse.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">ANPR, p\u00e9rim\u00e8tre, AcuPick, reconnaissance et analyse vid\u00e9o avanc\u00e9e.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">ANPR, perimeter, AcuPick, recognition and advanced video analytics.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">ANPR, Perimeterschutz, AcuPick, Erkennung und erweiterte Videoanalyse.<\/span><\/small>\n<\/span>\n<span class=\"cctv-micro-track__count\" data-track-count=\"advanced-ai\">0<\/span>\n<\/button>\n<\/div>\n<div class=\"cctv-micro-topics__source\" id=\"cctv-micro-topics-source\">\n<span aria-hidden=\"true\" class=\"cctv-micro-topics__pulse\"><\/span>\n<span data-i18n=\"topics_catalog_source\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">27 Micro-Learning onderwerpen om uit te kiezen<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">27 sujets Micro-Learning au choix<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">27 Micro-Learning topics to choose from<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">27 Micro-Learning-Themen zur Auswahl<\/span><\/span>\n<\/div>\n<div class=\"cctv-micro-topics__viewport\">\n<div class=\"cctv-micro-topics__viewport-head\">\n<div>\n<span data-i18n=\"topics_current_track\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Gekozen traject<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Parcours s\u00e9lectionn\u00e9<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Selected path<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Gew\u00e4hlter Lernweg<\/span><\/span>\n<strong id=\"cctv-micro-current-track\">Basis CCTV<\/strong>\n<\/div>\n<span class=\"cctv-micro-topics__scroll-note\" data-i18n=\"topics_scroll_note\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Max. 9 onderwerpen zichtbaar \u00b7 scroll voor meer<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Max. 9 sujets visibles \u00b7 faites d\u00e9filer pour voir la suite<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Max. 9 topics visible \u00b7 scroll for more<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Max. 9 Themen sichtbar \u00b7 scrollen f\u00fcr weitere<\/span><\/span>\n<\/div>\n<div aria-live=\"polite\" class=\"cctv-micro-topics__grid\" id=\"cctv-micro-topics-grid\">\n<\/div>\n<\/div>\n<div class=\"cctv-micro-topics__bottom\">\n<div class=\"cctv-micro-topics__selected\">\n<span data-i18n=\"topics_selected_label\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Geselecteerde onderwerpen<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Sujets s\u00e9lectionn\u00e9s<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Selected topics<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ausgew\u00e4hlte Themen<\/span><\/span>\n<strong id=\"cctv-micro-topics-count\">0<\/strong>\n<\/div>\n<button class=\"cctv-micro-topics__clear\" data-i18n=\"topics_clear\" id=\"cctv-micro-topics-clear\" type=\"button\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Selectie wissen<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Effacer la s\u00e9lection<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Clear selection<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Auswahl l\u00f6schen<\/span><\/button>\n<\/div>\n<div class=\"cctv-micro-topics__summary\" hidden=\"\" id=\"cctv-micro-topics-summary\">\n<\/div>\n<textarea aria-hidden=\"true\" hidden=\"\" id=\"cctv-micro-topics-hidden\"><\/textarea>\n<\/section><section aria-labelledby=\"cctv-micro-intake-title\" class=\"cctv-micro-intake\" hidden=\"\" id=\"cctv-micro-intake\">\n<div class=\"cctv-micro-intake__head\">\n<span class=\"cctv-micro-intake__step\" data-i18n=\"intake_step\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Stap 3<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">\u00c9tape 3<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Step 3<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Schritt 3<\/span><\/span>\n<div>\n<h3 data-i18n=\"intake_title\" id=\"cctv-micro-intake-title\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Maak uw Micro-Learning sessie concreet<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00e9cisez votre session de Micro-Learning<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Make your Micro-Learning session specific<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Beschreiben Sie Ihre Micro-Learning-Einheit<\/span><\/h3>\n<p data-i18n=\"intake_intro\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Vermeld een eigen onderwerp of technisch probleem en beschrijf wat u na de sessie zelfstandig wilt kunnen uitvoeren.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Indiquez un sujet personnel ou un probl\u00e8me technique et d\u00e9crivez ce que vous souhaitez pouvoir r\u00e9aliser de mani\u00e8re autonome apr\u00e8s la session.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Add your own topic or technical problem and describe what you want to be able to do independently after the session.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Nennen Sie ein eigenes Thema oder technisches Problem und beschreiben Sie, was Sie danach selbstst\u00e4ndig umsetzen m\u00f6chten.<\/span><\/p>\n<\/div>\n<\/div>\n<div class=\"cctv-micro-intake__grid\">\n<label class=\"cctv-micro-intake__field\">\n<span data-i18n=\"intake_custom_topic_label\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Ander onderwerp \/ eigen technisch probleem<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Autre sujet \/ probl\u00e8me technique personnel<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Other topic \/ your own technical problem<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Anderes Thema \/ eigenes technisches Problem<\/span><\/span>\n<textarea data-i18n-placeholder=\"intake_custom_topic_placeholder\" data-placeholder-de=\"Beispiel: Kamera nach PoE-Switch offline, NVR findet Kamera nicht, ANPR funktioniert nachts nicht \u2026\" data-placeholder-en=\"For example: camera offline after PoE switch, NVR cannot find camera, ANPR does not work at night...\" data-placeholder-fr=\"Par exemple : cam\u00e9ra hors ligne apr\u00e8s un switch PoE, NVR ne trouve pas la cam\u00e9ra, ANPR ne fonctionne pas la nuit...\" data-placeholder-nl=\"Bijvoorbeeld: camera offline na PoE-switch, NVR kan camera niet vinden, ANPR werkt 's nachts niet...\" id=\"cctv-micro-custom-topic\" placeholder=\"Bijvoorbeeld: camera offline na PoE-switch, NVR kan camera niet vinden, ANPR werkt 's nachts niet...\" rows=\"4\"><\/textarea>\n<small data-i18n=\"intake_custom_topic_help\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Optioneel. Gebruik dit veld als uw onderwerp niet tussen de geselecteerde artikels staat.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Optionnel. Utilisez ce champ si votre sujet ne figure pas parmi les articles s\u00e9lectionn\u00e9s.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Optional. Use this field if your topic is not among the selected articles.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Optional: Nutzen Sie dieses Feld, wenn Ihr Thema nicht in der Auswahl steht.<\/span><\/small>\n<\/label>\n<label class=\"cctv-micro-intake__field\">\n<span data-i18n=\"intake_goal_label\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Wat wilt u na deze sessie zelfstandig kunnen uitvoeren?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Que souhaitez-vous pouvoir r\u00e9aliser seul apr\u00e8s cette session ?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">What do you want to be able to do independently after this session?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Was m\u00f6chten Sie nach der Schulung selbstst\u00e4ndig durchf\u00fchren k\u00f6nnen?<\/span><\/span>\n<textarea data-i18n-placeholder=\"intake_goal_placeholder\" data-placeholder-de=\"Beispiel: Dahua-NVR selbstst\u00e4ndig starten, ANPR richtig einrichten oder Netzwerkproblem analysieren.\" data-placeholder-en=\"For example: start a Dahua NVR independently, set up ANPR correctly or analyse a network problem.\" data-placeholder-fr=\"Par exemple : d\u00e9marrer seul un NVR Dahua, r\u00e9gler correctement l\u2019ANPR ou analyser un probl\u00e8me r\u00e9seau.\" data-placeholder-nl=\"Bijvoorbeeld: zelfstandig een Dahua NVR opstarten, ANPR correct afregelen of een netwerkprobleem analyseren.\" id=\"cctv-micro-learning-goal\" placeholder=\"Bijvoorbeeld: zelfstandig een Dahua NVR opstarten, ANPR correct afregelen of een netwerkprobleem analyseren.\" rows=\"4\"><\/textarea>\n<small data-i18n=\"intake_goal_help\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Zo kan CCTV Academy de testopstelling en begeleiding beter voorbereiden.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">CCTV Academy peut ainsi mieux pr\u00e9parer le banc de test et l\u2019accompagnement.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">This helps CCTV Academy prepare the test setup and guidance more effectively.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Damit kann CCTV Academy die Testumgebung und Betreuung besser vorbereiten.<\/span><\/small>\n<\/label>\n<\/div>\n<div aria-live=\"polite\" class=\"cctv-micro-intake__status\">\n<span aria-hidden=\"true\" class=\"cctv-micro-intake__status-dot\"><\/span>\n<span data-i18n=\"intake_status\"><span class=\"cctv-lang-copy cctv-lang-copy--nl\">Uw antwoorden worden automatisch aan de Micro-Learning aanvraag toegevoegd.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--fr\">Vos r\u00e9ponses sont automatiquement ajout\u00e9es \u00e0 la demande de Micro-Learning.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--en\">Your answers are automatically added to the Micro-Learning request.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ihre Angaben werden automatisch Ihrer Micro-Learning-Anfrage hinzugef\u00fcgt.<\/span><\/span>\n<\/div>\n<\/section><section aria-labelledby=\"cctv-participants-title\" class=\"cctv-participants\" hidden=\"\" id=\"cctv-participants\">\n<div class=\"cctv-participants__head\">\n<span class=\"cctv-participants__step\" id=\"cctv-participants-step\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Stap 2<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">\u00c9tape 2<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Step 2<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Schritt 2<\/span>\n<\/span>\n<div>\n<h3 id=\"cctv-participants-title\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Hoeveel deelnemers nemen deel?<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Combien de participants prendront part \u00e0 la formation ?<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">How many participants will attend?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Wie viele Personen nehmen teil?<\/span>\n<\/h3>\n<p id=\"cctv-participants-intro\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Kies het aantal deelnemers.<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Choisissez le nombre de participants.<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Choose the number of participants.<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">W\u00e4hlen Sie die Teilnehmerzahl.<\/span>\n<\/p>\n<\/div>\n<\/div>\n<div class=\"cctv-participants__count-card\">\n<div>\n<span class=\"cctv-participants__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Aantal deelnemers<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Nombre de participants<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Number of participants<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Teilnehmerzahl<\/span>\n<\/span>\n<strong id=\"cctv-participants-range\"><\/strong>\n<\/div>\n<div class=\"cctv-participants__select-wrap\">\n<select aria-label=\"Aantal deelnemers\" id=\"cctv-participants-count\"><\/select>\n<span aria-hidden=\"true\">\u2304<\/span>\n<\/div>\n<\/div>\n<div aria-live=\"polite\" class=\"cctv-v117-confirmation\" hidden=\"\" id=\"cctv-v117-confirmation\">\n  <span class=\"cctv-v117-confirmation__hint\" id=\"cctv-v117-confirm-hint\">\n    <span class=\"cctv-lang-copy cctv-lang-copy--nl\">Bevestig het aantal deelnemers. Pas daarna verschijnt het contactformulier.<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--fr\">Confirmez le nombre de participants pour afficher le formulaire de contact.<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--en\">Confirm the number of participants to display the contact form.<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--de\">Best\u00e4tigen Sie die Teilnehmerzahl, damit das Kontaktformular angezeigt wird.<\/span>\n  <\/span>\n  <button aria-describedby=\"cctv-v117-confirm-hint\" class=\"cctv-v117-confirm-button\" id=\"cctv-v117-confirm-button\" type=\"button\">\n    <span class=\"cctv-lang-copy cctv-lang-copy--nl\">Aantal bevestigen<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--fr\">Confirmer le nombre<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--en\">Confirm number<\/span>\n    <span class=\"cctv-lang-copy cctv-lang-copy--de\">Anzahl best\u00e4tigen<\/span>\n  <\/button>\n<\/div>\n<textarea aria-hidden=\"true\" hidden=\"\" id=\"cctv-participants-hidden\"><\/textarea>\n<\/section><script>\n(function(){\n  \"use strict\";\n\n  var ROOT_ID = \"cctv-academy-request\";\n  var STORAGE_KEY = \"cctv_academy_participants\";\n  var EVENT_NAME = \"cctvAcademyParticipantsChange\";\n\n  var state = {\n    type:\"\",\n    count:0,\n    names:[],\n    confirmed:false \/* v1.17: intentionally not restored from localStorage. *\/\n  };\n\n  var text = {\n    nl:{\n      rangeMicro:\"Micro-Learning: 1 t\/m 5 deelnemers\",\n      rangeRegular:\"Reguliere opleiding: 5 t\/m 10 deelnemers\",\n      counter:function(count){ return count + (count === 1 ? \" deelnemer\" : \" deelnemers\"); },\n      name:function(index){ return \"Naam deelnemer \" + index; },\n      placeholder:function(index){ return \"Voor- en achternaam deelnemer \" + index; },\n      selectAria:\"Aantal deelnemers\"\n    },\n    fr:{\n      rangeMicro:\"Micro-Learning : 1 \u00e0 5 participants\",\n      rangeRegular:\"Formation r\u00e9guli\u00e8re : 5 \u00e0 10 participants\",\n      counter:function(count){ return count + (count === 1 ? \" participant\" : \" participants\"); },\n      name:function(index){ return \"Nom du participant \" + index; },\n      placeholder:function(index){ return \"Pr\u00e9nom et nom du participant \" + index; },\n      selectAria:\"Nombre de participants\"\n    },\n    en:{\n      rangeMicro:\"Micro-Learning: 1 to 5 participants\",\n      rangeRegular:\"Regular course: 5 to 10 participants\",\n      counter:function(count){ return count + (count === 1 ? \" participant\" : \" participants\"); },\n      name:function(index){ return \"Participant \" + index + \" name\"; },\n      placeholder:function(index){ return \"First and last name of participant \" + index; },\n      selectAria:\"Number of participants\"\n    },\n    de:{\n      rangeMicro:\"Micro-Learning: 1 bis 5 Teilnehmende\",\n      rangeRegular:\"Regul\u00e4re Schulung: 5 bis 10 Teilnehmende\",\n      counter:function(n){return n+\" \"+(n===1?\"teilnehmende Person\":\"Teilnehmende\");},\n      name:function(i){return \"Name von Person \"+i;},\n      placeholder:function(i){return \"Vor- und Nachname von Person \"+i;},\n      selectAria:\"Teilnehmerzahl\"\n    }\n  };\n\n  function root(){\n    return document.getElementById(ROOT_ID);\n  }\n\n  function language(){\n    if (\n      window.CCTVAcademyLanguage &&\n      typeof window.CCTVAcademyLanguage.get === \"function\"\n    ){\n      var value = String(\n        window.CCTVAcademyLanguage.get() || \"nl\"\n      );\n\n      if (text[value]) return value;\n    }\n\n    return \"nl\";\n  }\n\n  function requestType(){\n    if (\n      window.CCTVAcademyRequestType &&\n      typeof window.CCTVAcademyRequestType.get === \"function\"\n    ){\n      return String(\n        window.CCTVAcademyRequestType.get() || \"\"\n      );\n    }\n\n    return \"\";\n  }\n\n  function isRegular(type){\n    return (\n      type === \"basis-cctv\" ||\n      type === \"basis-ai\" ||\n      type === \"advanced-ai\"\n    );\n  }\n\n  function isParticipantType(type){\n    return (\n      type === \"micro-learning\" ||\n      isRegular(type)\n    );\n  }\n\n  function constraints(type){\n    if (type === \"micro-learning\"){\n      return {min:1,max:5};\n    }\n\n    if (isRegular(type)){\n      return {min:5,max:10};\n    }\n\n    return {min:0,max:0};\n  }\n\n  function clampCount(value,type){\n    var range = constraints(type);\n\n    if (!range.min){\n      return 0;\n    }\n\n    value = parseInt(value,10);\n\n    if (!isFinite(value)){\n      value = range.min;\n    }\n\n    return Math.max(\n      range.min,\n      Math.min(range.max,value)\n    );\n  }\n\n  function ensureNames(count){\n    while (state.names.length < count){\n      state.names.push(\"\");\n    }\n\n    \/*\n     * Do not throw away names above the current count.\n     * If the participant count is increased again, they return.\n     *\/\n  }\n\n  function restore(){\n    try{\n      var saved = JSON.parse(\n        localStorage.getItem(STORAGE_KEY) || \"{}\"\n      );\n\n      if (saved && typeof saved === \"object\"){\n        state.type = String(saved.type || \"\");\n        state.count = parseInt(saved.count,10) || 0;\n        state.names = Array.isArray(saved.names)\n          ? saved.names.map(function(name){\n              return String(name || \"\");\n            })\n          : [];\n      }\n    }catch(e){}\n  }\n\n  function persist(){\n    try{\n      localStorage.setItem(\n        STORAGE_KEY,\n        JSON.stringify({\n          type:state.type,\n          count:state.count,\n          names:state.names\n        })\n      );\n    }catch(e){}\n  }\n\n  function activeNames(){\n    return state.names\n      .slice(0,state.count)\n      .map(function(name){\n        return String(name || \"\").trim();\n      });\n  }\n\n  function formatted(){\n    if (!isParticipantType(state.type)){\n      return \"\";\n    }\n\n    var lines = [\n      \"AANTAL DEELNEMERS\",\n      String(state.count),\n      \"\",\n      \"NAMEN DEELNEMERS\"\n    ];\n\n    activeNames().forEach(function(name,index){\n      lines.push(\n        (index + 1) +\n        \". \" +\n        (name || \"Nog niet ingevuld\")\n      );\n    });\n\n    return lines.join(\"\\n\");\n  }\n\n  function emit(){\n    try{\n      window.dispatchEvent(\n        new CustomEvent(EVENT_NAME,{\n          detail:{\n            type:state.type,\n            count:state.count,\n            names:activeNames(),\n            formatted:formatted()\n          }\n        })\n      );\n    }catch(e){}\n  }\n\n  function saveAndEmit(){\n    persist();\n\n    var el = root();\n    if (el){\n      var hidden =\n        el.querySelector(\n          \"#cctv-participants-hidden\"\n        );\n\n      if (hidden){\n        hidden.value =\n          JSON.stringify({\n            type:state.type,\n            count:state.count,\n            names:activeNames()\n          });\n      }\n    }\n\n    emit();\n  }\n\n  function renderSelect(){\n    var el = root();\n    if (!el) return;\n\n    var select =\n      el.querySelector(\n        \"#cctv-participants-count\"\n      );\n\n    var rangeText =\n      el.querySelector(\n        \"#cctv-participants-range\"\n      );\n\n    var counter =\n      el.querySelector(\n        \"#cctv-participants-counter\"\n      );\n\n    if (!select) return;\n\n    var lang = language();\n    var copy = text[lang];\n    var range = constraints(state.type);\n\n    select.innerHTML = \"\";\n    select.setAttribute(\n      \"aria-label\",\n      copy.selectAria\n    );\n\n    for (\n      var value = range.min;\n      value <= range.max;\n      value++\n    ){\n      var option =\n        document.createElement(\"option\");\n\n      option.value = String(value);\n      option.textContent = String(value);\n\n      if (value === state.count){\n        option.selected = true;\n      }\n\n      select.appendChild(option);\n    }\n\n    if (rangeText){\n      rangeText.textContent =\n        state.type === \"micro-learning\"\n          ? copy.rangeMicro\n          : copy.rangeRegular;\n    }\n\n    if (counter){\n      counter.textContent =\n        copy.counter(state.count);\n    }\n  }\n\n  function renderNames(){\n    var el = root();\n    if (!el) return;\n\n    var container =\n      el.querySelector(\n        \"#cctv-participant-name-fields\"\n      );\n\n    if (!container) return;\n\n    var lang = language();\n    var copy = text[lang];\n\n    container.innerHTML = \"\";\n\n    ensureNames(state.count);\n\n    for (var i = 0; i < state.count; i++){\n      (function(index){\n        var label =\n          document.createElement(\"label\");\n\n        label.className =\n          \"cctv-participant-name\";\n\n        var caption =\n          document.createElement(\"span\");\n\n        caption.textContent =\n          copy.name(index + 1);\n\n        var input =\n          document.createElement(\"input\");\n\n        input.type = \"text\";\n        input.autocomplete = \"name\";\n        input.value =\n          state.names[index] || \"\";\n\n        input.placeholder =\n          copy.placeholder(index + 1);\n\n        input.setAttribute(\n          \"aria-label\",\n          copy.name(index + 1)\n        );\n\n        input.setAttribute(\n          \"data-participant-index\",\n          String(index)\n        );\n\n        input.addEventListener(\n          \"input\",\n          function(){\n            state.names[index] =\n              input.value;\n\n            saveAndEmit();\n          }\n        );\n\n        label.appendChild(caption);\n        label.appendChild(input);\n        container.appendChild(label);\n      })(i);\n    }\n  }\n\n  function render(){\n    var el = root();\n    if (!el) return;\n\n    var section =\n      el.querySelector(\n        \"#cctv-participants\"\n      );\n\n    if (!section) return;\n\n    var show =\n      isParticipantType(state.type);\n\n    section.hidden = !show;\n    section.classList.toggle(\"cctv-v117-needs-confirmation\",show && !state.confirmed);\n    var confirmationBox = el.querySelector(\"#cctv-v117-confirmation\");\n    if (confirmationBox) confirmationBox.hidden = !show || state.confirmed;\n\n    if (!show){\n      return;\n    }\n\n    var range = constraints(state.type);\n\n    state.count =\n      clampCount(state.count,state.type);\n\n    if (!state.count){\n      state.count = range.min;\n    }\n\n    ensureNames(state.count);\n\n    var step =\n      el.querySelector(\n        \"#cctv-participants-step\"\n      );\n\n    if (step){\n      step.querySelectorAll(\n        \".cctv-lang-copy\"\n      ).forEach(function(copyEl){\n        var isFr =\n          copyEl.classList.contains(\n            \"cctv-lang-copy--fr\"\n          );\n\n        var isEn =\n          copyEl.classList.contains(\n            \"cctv-lang-copy--en\"\n          );\n\n        var number =\n          state.type === \"micro-learning\"\n            ? \"4\"\n            : \"2\";\n\n        copyEl.textContent =\n          isFr\n            ? \"\u00c9tape \" + number\n            : isEn\n              ? \"Step \" + number\n              : \"Stap \" + number;\n      });\n    }\n\n    renderSelect();\n    renderNames();\n  }\n\n  function applyType(type,persistState){\n    type = String(type || \"\");\n\n    \/* Every different training path withdraws the old participant-count approval. *\/\n    if (type !== state.type) state.confirmed = false;\n    state.type = type;\n\n    if (!isParticipantType(type)){\n      state.count = 0;\n      render();\n\n      if (persistState !== false){\n        saveAndEmit();\n      }\n\n      return;\n    }\n\n    state.count =\n      clampCount(state.count,type);\n\n    if (!state.count){\n      state.count =\n        constraints(type).min;\n    }\n\n    ensureNames(state.count);\n    render();\n\n    if (persistState !== false){\n      saveAndEmit();\n    }\n  }\n\n  function setCount(value){\n    if (!isParticipantType(state.type)){\n      return;\n    }\n\n    state.count =\n      clampCount(\n        value,\n        state.type\n      );\n\n    \/* Changing the number after confirmation also requires confirming again. *\/\n    state.confirmed = false;\n    ensureNames(state.count);\n    render();\n    saveAndEmit();\n  }\n\n  function confirmCount(){\n    if (!isParticipantType(state.type)) return;\n    var range = constraints(state.type);\n    if (state.count < range.min || state.count > range.max) return;\n    state.confirmed = true;\n    render();\n    saveAndEmit();\n  }\n\n  function init(){\n    restore();\n\n    var el = root();\n    if (!el) return;\n\n    var select =\n      el.querySelector(\n        \"#cctv-participants-count\"\n      );\n\n    if (select){\n      select.addEventListener(\n        \"change\",\n        function(){\n          setCount(select.value);\n        }\n      );\n    }\n\n    var confirmButton = el.querySelector(\"#cctv-v117-confirm-button\");\n    if (confirmButton) confirmButton.addEventListener(\"click\",confirmCount);\n\n    applyType(\n      requestType() || state.type,\n      false\n    );\n\n    saveAndEmit();\n  }\n\n  window.addEventListener(\n    \"cctvAcademyRequestTypeChange\",\n    function(event){\n      var type =\n        event && event.detail\n          ? event.detail.requestType\n          : \"\";\n\n      applyType(type,true);\n    }\n  );\n\n  window.addEventListener(\n    \"cctvAcademyLanguageChange\",\n    function(){\n      render();\n    }\n  );\n\n  window.CCTVAcademyParticipants = {\n    get:function(){\n      return {\n        type:state.type,\n        count:state.count,\n        names:activeNames(),\n        formatted:formatted(),\n        confirmed:!isParticipantType(state.type) || state.confirmed\n      };\n    },\n\n    confirmCount:confirmCount,\n    setCount:setCount,\n\n    setName:function(index,name,notify){\n      index = parseInt(index,10);\n      if (!isFinite(index) || index < 0 || index >= state.count) return;\n      ensureNames(state.count);\n      state.names[index] = String(name || \"\");\n      if (notify === true){\n        saveAndEmit();\n      }else{\n        persist();\n      }\n    },\n\n    clear:function(){\n      state.names = [];\n      state.confirmed = false;\n      state.count =\n        isParticipantType(state.type)\n          ? constraints(state.type).min\n          : 0;\n\n      render();\n      saveAndEmit();\n    }\n  };\n\n  if (document.readyState === \"loading\"){\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      init,\n      {once:true}\n    );\n  }else{\n    init();\n  }\n})();\n<\/script><section aria-labelledby=\"cctv-selection-review-title\" class=\"cctv-selection-review\" id=\"cctv-selection-review\">\n<div class=\"cctv-selection-review__head\">\n<div>\n<h3 id=\"cctv-selection-review-title\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Uw selectie voor het formulier<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Votre s\u00e9lection pour le formulaire<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Your selection for the form<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Ihre Auswahl f\u00fcr das Formular<\/span>\n<\/h3>\n\n<\/div>\n<span class=\"cctv-selection-review__status\" id=\"cctv-review-status\"><\/span>\n<\/div>\n<div class=\"cctv-selection-review__grid\">\n<div class=\"cctv-selection-review__item\">\n<span class=\"cctv-selection-review__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Aanvraag<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Demande<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Request<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Anfrage<\/span>\n<\/span>\n<strong id=\"cctv-review-request\">\u2014<\/strong>\n<\/div><div class=\"cctv-selection-review__item\" hidden=\"\" id=\"cctv-review-participants-wrap\">\n<span class=\"cctv-selection-review__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Deelnemers<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Participants<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Participants<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Teilnehmende<\/span>\n<\/span>\n<strong id=\"cctv-review-participants-count\"><\/strong>\n<div class=\"cctv-selection-review__participants\" id=\"cctv-review-participants-names\"><\/div>\n<\/div>\n<div class=\"cctv-selection-review__item\" hidden=\"\" id=\"cctv-review-topics-wrap\">\n<span class=\"cctv-selection-review__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Micro-Learning onderwerpen<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Sujets Micro-Learning<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Micro-Learning topics<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Micro-Learning-Themen<\/span>\n<\/span>\n<div class=\"cctv-selection-review__chips\" id=\"cctv-review-topics\"><\/div>\n<\/div>\n<div class=\"cctv-selection-review__item\" hidden=\"\" id=\"cctv-review-own-wrap\">\n<span class=\"cctv-selection-review__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Eigen onderwerp \/ probleem<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Votre sujet \/ probl\u00e8me<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Your topic \/ problem<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Eigenes Thema \/ Problem<\/span>\n<\/span>\n<strong id=\"cctv-review-own\"><\/strong>\n<\/div>\n<div class=\"cctv-selection-review__item\" hidden=\"\" id=\"cctv-review-goal-wrap\">\n<span class=\"cctv-selection-review__label\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Praktisch leerdoel<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Objectif pratique<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Practical learning goal<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Praktisches Lernziel<\/span>\n<\/span>\n<strong id=\"cctv-review-goal\"><\/strong>\n<\/div>\n<\/div>\n\n\n<\/section><\/div>\n<!-- v1.9: behoud het aparte shortcode-widget [forminator_form id=\"49521\"]. Configureer drie echte Hidden Fields (met startwaarden CCTV_REQUEST_TYPE, CCTV_MICRO_TOPICS, CCTV_PARTICIPANTS). Ruim de oude eenmalige deelnemer- en planningvelden DEFINITIEF op in Forminator zodra echte stagingverzending is getest; client-side verbergen alleen verwijdert ze niet uit de Forminator-configuratie. --><\/section>\n<\/div>\n<\/main>\n<div aria-label=\"Snelle aanvraag\" class=\"cctv-mobile-cta\">\n<div class=\"cctv-mobile-cta__copy\">\n<strong>\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Klaar om te starten?<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Pr\u00eat \u00e0 commencer ?<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Ready to start?<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Bereit zu starten?<\/span>\n<\/strong>\n<\/div>\n<a href=\"#cctv-aanvraag\">\n<span class=\"cctv-lang-copy cctv-lang-copy--nl\">Start aanvraag<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--fr\">Commencer<\/span>\n<span class=\"cctv-lang-copy cctv-lang-copy--en\">Start request<\/span><span class=\"cctv-lang-copy cctv-lang-copy--de\">Anfrage starten<\/span>\n<\/a>\n<\/div>\n<script>\n(function(){\n  \"use strict\";\n\n  var ROOT_ID = \"cctv-academy-request\";\n  var STORAGE_KEY = \"cctv_academy_micro_topics\";\n  var TRACK_STORAGE_KEY = \"cctv_academy_micro_track\";\n\n  \/*\n   * One canonical topic ID, three language versions.\n   * Selections are stored ONLY by canonical_topic_id so changing\n   * language never loses the participant's chosen topics.\n   *\/\n  var CATALOGUE = [{\"id\":\"ML-001\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Basis CCTV: camera's en opnamesystemen\",\"text\":\"Begrijp hoe camera, lens, recorder, opslag, monitor, bekabeling, nachtzicht en accessoires samen \u00e9\u00e9n professioneel CCTV-systeem vormen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/overzicht-cctv-cameras-en-opnamesystemen\/\"},\"fr\":{\"title\":\"CCTV de base : cam\u00e9ras et syst\u00e8mes d\u2019enregistrement\",\"text\":\"Comprenez comment cam\u00e9ra, objectif, enregistreur, stockage, moniteur, c\u00e2blage, vision nocturne et accessoires forment ensemble un syst\u00e8me CCTV professionnel.\",\"url\":\"\"},\"en\":{\"title\":\"CCTV Basics: Cameras and Recording Systems\",\"text\":\"Understand how the camera, lens, recorder, storage, monitor, cabling, night vision and accessories work together as one professional CCTV system.\",\"url\":\"\"},\"de\":{\"title\":\"CCTV-Grundlagen: Kameras und Aufzeichnungssysteme\",\"text\":\"Verstehen Sie, wie Kamera, Objektiv, Rekorder, Speicher, Monitor, Verkabelung, Nachtsicht und Zubeh\u00f6r ein professionelles CCTV-System bilden.\",\"url\":\"\"}},{\"id\":\"ML-002\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Basis CCTV IP-netwerken\",\"text\":\"Leer hoe IPv4, subnetmasker, DHCP, gateway, PoE, NVR, camera's, routers en internetverbindingen binnen een CCTV-installatie samenwerken.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/overzicht-basis-cctv-ip-netwerken\/\"},\"fr\":{\"title\":\"R\u00e9seaux IP CCTV de base\",\"text\":\"Apprenez comment IPv4, masque de sous-r\u00e9seau, DHCP, passerelle, PoE, NVR, cam\u00e9ras, routeurs et connexion internet fonctionnent ensemble dans une installation CCTV.\",\"url\":\"\"},\"en\":{\"title\":\"Basic CCTV IP Networks\",\"text\":\"Learn how IPv4, subnet masks, DHCP, gateways, PoE, NVRs, cameras, routers and internet connections work together in a CCTV installation.\",\"url\":\"\"},\"de\":{\"title\":\"Grundlagen der CCTV-IP-Netzwerke\",\"text\":\"Lernen Sie, wie IPv4, Subnetzmaske, DHCP, Gateway, PoE, NVR, Kameras, Router und Internet in einer CCTV-Anlage zusammenarbeiten.\",\"url\":\"\"}},{\"id\":\"ML-003\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Basis CCTV IP-netwerken: praktijkoefeningen\",\"text\":\"Oefen zelf met IP-camera's, PoE, vaste IP-adressen, DHCP, internet, wifi, DMSS, SmartPSS Lite en P2P in opeenvolgende praktijktesten.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/opleiding-basis-cctv-ip-netwerken-14-praktijkoefeningen\/\"},\"fr\":{\"title\":\"R\u00e9seaux IP CCTV de base : exercices pratiques\",\"text\":\"Pratiquez avec des cam\u00e9ras IP, PoE, adresses IP fixes, DHCP, internet, Wi-Fi, DMSS, SmartPSS Lite et P2P au moyen de tests pratiques successifs.\",\"url\":\"\"},\"en\":{\"title\":\"Basic CCTV IP Networks: Practical Exercises\",\"text\":\"Practise with IP cameras, PoE, static IP addresses, DHCP, internet, Wi-Fi, DMSS, SmartPSS Lite and P2P through a sequence of hands-on tests.\",\"url\":\"\"},\"de\":{\"title\":\"CCTV-IP-Netzwerke: praktische \u00dcbungen\",\"text\":\"\u00dcben Sie mit IP-Kameras, PoE, festen IP-Adressen, DHCP, Internet, WLAN, DMSS, SmartPSS Lite und P2P.\",\"url\":\"\"}},{\"id\":\"ML-004\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Belgische camerawet voor CCTV-installateurs\",\"text\":\"Leer welke juridische aandachtspunten gelden bij bewakingscamera's in Belgi\u00eb: plaatsing, privacy, verantwoordelijkheden en actuele informatiebronnen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/basis-cctv-opleiding-camerawet-belgie\/\"},\"fr\":{\"title\":\"Loi belge sur les cam\u00e9ras pour installateurs CCTV\",\"text\":\"D\u00e9couvrez les principaux points juridiques li\u00e9s aux cam\u00e9ras de surveillance en Belgique : installation, vie priv\u00e9e, responsabilit\u00e9s et sources officielles \u00e0 jour.\",\"url\":\"\"},\"en\":{\"title\":\"Belgian Camera Law for CCTV Installers\",\"text\":\"Learn the main legal considerations for surveillance cameras in Belgium, including placement, privacy, responsibilities and up-to-date official sources.\",\"url\":\"\"},\"de\":{\"title\":\"Belgisches Kameragesetz f\u00fcr CCTV-Errichter\",\"text\":\"Erfahren Sie die wesentlichen rechtlichen Aspekte in Belgien: Montage, Datenschutz, Verantwortlichkeiten und aktuelle Informationsquellen.\",\"url\":\"\"}},{\"id\":\"ML-005\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Dahua software: SmartPSS Lite, DMSS en ConfigTool\",\"text\":\"Ontdek welke Dahua-software u gebruikt voor livebeeld, playback, mobiel beheer, apparaatdetectie, IP-configuratie en technisch onderhoud.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/dahua-software\/\"},\"fr\":{\"title\":\"Logiciels Dahua : SmartPSS Lite, DMSS et ConfigTool\",\"text\":\"D\u00e9couvrez quels logiciels Dahua utiliser pour la vid\u00e9o en direct, la relecture, la gestion mobile, la d\u00e9tection d\u2019appareils, la configuration IP et la maintenance technique.\",\"url\":\"\"},\"en\":{\"title\":\"Dahua Software: SmartPSS Lite, DMSS and ConfigTool\",\"text\":\"Learn which Dahua tools to use for live video, playback, mobile management, device discovery, IP configuration and technical maintenance.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-Software: SmartPSS Lite, DMSS und ConfigTool\",\"text\":\"Lernen Sie Dahua-Tools f\u00fcr Livebilder, Wiedergabe, mobile Verwaltung, Ger\u00e4teerkennung, IP-Konfiguration und Wartung kennen.\",\"url\":\"\"}},{\"id\":\"ML-006\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"DMSS: een account aanmaken\",\"text\":\"Maak stap voor stap een DMSS-account aan en leer waar u het inlog- en registratiescherm vindt op Android en iPhone.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-toevoegen-account-in-dmss\/\"},\"fr\":{\"title\":\"DMSS : cr\u00e9er un compte\",\"text\":\"Cr\u00e9ez un compte DMSS \u00e9tape par \u00e9tape et d\u00e9couvrez o\u00f9 trouver les \u00e9crans de connexion et d\u2019inscription sur Android et iPhone.\",\"url\":\"https:\/\/cctvacademy.be\/fr\/stap-per-stap-instructies-toevoegen-account-in-dmss\/\"},\"en\":{\"title\":\"DMSS: Create an Account\",\"text\":\"Create a DMSS account step by step and learn where to find the sign-in and registration screens on Android and iPhone.\",\"url\":\"\"},\"de\":{\"title\":\"DMSS: Konto erstellen\",\"text\":\"Erstellen Sie Schritt f\u00fcr Schritt ein DMSS-Konto und finden Sie die Anmelde- und Registrierungsansicht auf Android und iPhone.\",\"url\":\"\"}},{\"id\":\"ML-007\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Dahua camerabeelden bekijken op smartphone met DMSS\",\"text\":\"Installeer DMSS, koppel een NVR of IP-camera via P2P of IP-adres en bekijk live- en opgenomen beelden op uw smartphone.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-dahua-camerabeelden-op-mijn-smartphone\/\"},\"fr\":{\"title\":\"Voir les cam\u00e9ras Dahua sur smartphone avec DMSS\",\"text\":\"Installez DMSS, ajoutez un NVR ou une cam\u00e9ra IP via P2P ou adresse IP et consultez les images en direct et enregistr\u00e9es sur votre smartphone.\",\"url\":\"\"},\"en\":{\"title\":\"View Dahua Cameras on a Smartphone with DMSS\",\"text\":\"Install DMSS, add an NVR or IP camera via P2P or IP address, and view live and recorded footage on your smartphone.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-Kameras mit DMSS auf dem Smartphone ansehen\",\"text\":\"Installieren Sie DMSS, verbinden Sie einen NVR oder eine IP-Kamera per P2P oder IP-Adresse und sehen Sie Livebilder und Aufnahmen an.\",\"url\":\"\"}},{\"id\":\"ML-008\",\"track\":\"basis-cctv\",\"nl\":{\"title\":\"Dahua NVR via P2P toevoegen aan SmartPSS Lite\",\"text\":\"Controleer P2P, voeg de NVR via serienummer toe aan SmartPSS Lite en verifieer de online status en Live View.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-hoe-voeg-ik-een-dahua-nvr-toe-aan-smartpss-lite-via-de-p2p-functie\/\"},\"fr\":{\"title\":\"Ajouter un NVR Dahua \u00e0 SmartPSS Lite via P2P\",\"text\":\"V\u00e9rifiez P2P, ajoutez le NVR \u00e0 SmartPSS Lite via son num\u00e9ro de s\u00e9rie et contr\u00f4lez son statut en ligne ainsi que la vue en direct.\",\"url\":\"\"},\"en\":{\"title\":\"Add a Dahua NVR to SmartPSS Lite via P2P\",\"text\":\"Check P2P, add the NVR to SmartPSS Lite using its serial number, and verify its online status and Live View.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-NVR per P2P zu SmartPSS Lite hinzuf\u00fcgen\",\"text\":\"Pr\u00fcfen Sie P2P, f\u00fcgen Sie den NVR mit seiner Seriennummer hinzu und kontrollieren Sie Onlinestatus und Livebild.\",\"url\":\"\"}},{\"id\":\"ML-009\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Dahua NVR firmware veilig updaten\",\"text\":\"Leer de juiste firmware selecteren, het .BIN-bestand correct voorbereiden, de update veilig uitvoeren en inschatten wanneer een factory reset of extra compatibiliteitscontrole nodig is.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-hoe-doe-ik-een-firmware-update-van-een-dahua-nvr\/\"},\"fr\":{\"title\":\"Mettre \u00e0 jour le firmware d\u2019un NVR Dahua en toute s\u00e9curit\u00e9\",\"text\":\"Apprenez \u00e0 s\u00e9lectionner le bon firmware, pr\u00e9parer correctement le fichier .BIN, effectuer la mise \u00e0 jour en toute s\u00e9curit\u00e9 et d\u00e9terminer quand une r\u00e9initialisation usine ou un contr\u00f4le de compatibilit\u00e9 suppl\u00e9mentaire est n\u00e9cessaire.\",\"url\":\"https:\/\/cctvacademy.be\/fr\/stap-per-stap-instructies-hoe-doe-ik-een-firmware-update-van-een-dahua-nvr\/\"},\"en\":{\"title\":\"Safely Update the Firmware of a Dahua NVR\",\"text\":\"Learn how to select the correct firmware, prepare the .BIN file, carry out the update safely, and decide when a factory reset or additional compatibility check is required.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-NVR-Firmware sicher aktualisieren\",\"text\":\"W\u00e4hlen Sie die passende Firmware, bereiten Sie die BIN-Datei vor und f\u00fchren Sie das Update kontrolliert durch.\",\"url\":\"\"}},{\"id\":\"ML-010\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Factory reset: wanneer en waarom?\",\"text\":\"Begrijp wanneer een factory reset zinvol is, welke instellingen verloren gaan en welke onderdelen van netwerk, camera\u2019s, gebruikers en opnameconfiguratie u daarna opnieuw moet instellen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/terug-naar-fabrieksinstellingen\/\"},\"fr\":{\"title\":\"R\u00e9initialisation usine : quand et pourquoi ?\",\"text\":\"Comprenez quand une r\u00e9initialisation usine est utile, quels param\u00e8tres sont perdus et quels \u00e9l\u00e9ments du r\u00e9seau, des cam\u00e9ras, des utilisateurs et de l\u2019enregistrement doivent ensuite \u00eatre reconfigur\u00e9s.\",\"url\":\"\"},\"en\":{\"title\":\"Factory Reset: When and Why?\",\"text\":\"Understand when a factory reset is useful, which settings are lost, and which network, camera, user and recording settings must be configured again afterwards.\",\"url\":\"\"},\"de\":{\"title\":\"Werkseinstellungen: wann und warum?\",\"text\":\"Verstehen Sie, wann ein Werksreset sinnvoll ist, welche Einstellungen verloren gehen und was vorher gepr\u00fcft werden sollte.\",\"url\":\"\"}},{\"id\":\"ML-011\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Een Dahua NVR terugzetten naar fabrieksinstellingen\",\"text\":\"Voer een hardware factory reset stap voor stap uit via de resetknop en leer welke aandachtspunten gelden voor camera-wachtwoorden en de volledige herconfiguratie van het systeem.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-hoe-doe-ik-een-factory-reset-van-mijn-opnamesysteem\/\"},\"fr\":{\"title\":\"R\u00e9initialiser un NVR Dahua aux param\u00e8tres d\u2019usine\",\"text\":\"Effectuez pas \u00e0 pas une r\u00e9initialisation mat\u00e9rielle via le bouton Reset et d\u00e9couvrez les points d\u2019attention concernant les mots de passe des cam\u00e9ras et la reconfiguration compl\u00e8te du syst\u00e8me.\",\"url\":\"\"},\"en\":{\"title\":\"Reset a Dahua NVR to Factory Settings\",\"text\":\"Perform a hardware factory reset step by step using the reset button and learn what to watch for regarding camera passwords and complete system reconfiguration.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-NVR auf Werkseinstellungen zur\u00fccksetzen\",\"text\":\"F\u00fchren Sie mit Reset-Taste und lokaler Bedienung Schritt f\u00fcr Schritt einen Hardware-Werksreset durch.\",\"url\":\"\"}},{\"id\":\"ML-012\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"De taal van een Dahua NVR wijzigen\",\"text\":\"Wijzig de interfacetaal via de lokale monitor of webinterface en leer waar u System > General > Basic, Language en Apply terugvindt.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-instructies-hoe-verander-ik-de-taal-van-mijn-nvr\/\"},\"fr\":{\"title\":\"Modifier la langue d\u2019un NVR Dahua\",\"text\":\"Modifiez la langue de l\u2019interface via le moniteur local ou l\u2019interface web et apprenez o\u00f9 trouver System > General > Basic, Language et Apply.\",\"url\":\"\"},\"en\":{\"title\":\"Change the Language of a Dahua NVR\",\"text\":\"Change the interface language using the local monitor or web interface and learn where to find System > General > Basic, Language and Apply.\",\"url\":\"\"},\"de\":{\"title\":\"Sprache eines Dahua-NVR \u00e4ndern\",\"text\":\"\u00c4ndern Sie die Men\u00fcsprache \u00fcber den lokalen Monitor oder die Weboberfl\u00e4che.\",\"url\":\"\"}},{\"id\":\"ML-013\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Gewone bewegingsdetectie (MD) configureren\",\"text\":\"Configureer klassieke Motion Detection, teken het detectiegebied en begrijp wanneer gewone bewegingsdetectie nuttig is en waarom ze vaker ongewenste meldingen kan veroorzaken.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/stap-per-stap-bewegingsdetectie-programmeren-in-dahua-tips-en-uitleg\/\"},\"fr\":{\"title\":\"Configurer la d\u00e9tection de mouvement classique (MD)\",\"text\":\"Configurez la d\u00e9tection de mouvement classique, d\u00e9finissez la zone de d\u00e9tection et comprenez quand cette m\u00e9thode est utile et pourquoi elle peut g\u00e9n\u00e9rer davantage de fausses alertes.\",\"url\":\"\"},\"en\":{\"title\":\"Configure Standard Motion Detection (MD)\",\"text\":\"Configure standard Motion Detection, define the detection area, and understand when it is useful and why it can generate more unwanted alerts.\",\"url\":\"\"},\"de\":{\"title\":\"Standard-Bewegungserkennung (MD) einrichten\",\"text\":\"Konfigurieren Sie die Bewegungserkennung, legen Sie Erkennungsbereiche fest und pr\u00fcfen Sie die Ereignisse.\",\"url\":\"\"}},{\"id\":\"ML-014\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Dahua IVS: Tripwire en Intrusion configureren\",\"text\":\"Activeer IVS, programmeer virtuele lijnen en zones, kies mens- en voertuigfilters en koppel detecties aan acties zoals opname, buzzer of contactuitgang.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/configuratie-van-de-slimme-bewegingsdetectie\/\"},\"fr\":{\"title\":\"Dahua IVS : configurer Tripwire et Intrusion\",\"text\":\"Activez IVS, programmez des lignes et zones virtuelles, s\u00e9lectionnez les filtres personne\/v\u00e9hicule et associez les d\u00e9tections \u00e0 des actions comme l\u2019enregistrement, le buzzer ou une sortie de contact.\",\"url\":\"\"},\"en\":{\"title\":\"Dahua IVS: Configure Tripwire and Intrusion\",\"text\":\"Enable IVS, program virtual lines and zones, select person and vehicle filters, and link detections to actions such as recording, the buzzer or a contact output.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua IVS: Tripwire und Intrusion einrichten\",\"text\":\"Aktivieren Sie IVS, definieren Sie virtuelle Linien und Bereiche und stellen Sie Personen- und Fahrzeugfilter ein.\",\"url\":\"\"}},{\"id\":\"ML-015\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Praktijklab: MD, IVS en SMD\",\"text\":\"Programmeer drie AI-camera\u2019s met verschillende detecties, test Tripwire en Intrusion, stuur de NVR-buzzer aan en controleer of intelligente gebeurtenissen correct worden opgenomen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/opdracht-ai-1-md-ivs-smd\/\"},\"fr\":{\"title\":\"Laboratoire pratique : MD, IVS et SMD\",\"text\":\"Programmez trois cam\u00e9ras IA avec diff\u00e9rentes d\u00e9tections, testez Tripwire et Intrusion, commandez le buzzer du NVR et v\u00e9rifiez que les \u00e9v\u00e9nements intelligents sont correctement enregistr\u00e9s.\",\"url\":\"https:\/\/cctvacademy.be\/fr\/opdracht-ai-1-md-ivs-smd\/\"},\"en\":{\"title\":\"Hands-on Lab: MD, IVS and SMD\",\"text\":\"Program three AI cameras with different detections, test Tripwire and Intrusion, trigger the NVR buzzer, and verify that intelligent events are recorded correctly.\",\"url\":\"\"},\"de\":{\"title\":\"Praxislabor: MD, IVS und SMD\",\"text\":\"Richten Sie drei KI-Kameras mit unterschiedlichen Erkennungsarten ein und vergleichen Sie die Erkennung.\",\"url\":\"\"}},{\"id\":\"ML-016\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Praktijklab: NVR contact inputs & outputs\",\"text\":\"Koppel alarmcontacten aan de NVR, programmeer IN\/OUT-logica, Anti-Dither, Post-Alarm en Post-Record en controleer opnames die door externe contacten worden getriggerd.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/opdracht-ai-2-contact-inputs-en-outputs-nvr\/\"},\"fr\":{\"title\":\"Laboratoire pratique : entr\u00e9es et sorties de contact du NVR\",\"text\":\"Reliez des contacts d\u2019alarme au NVR, programmez la logique IN\/OUT, Anti-Dither, Post-Alarm et Post-Record, puis v\u00e9rifiez les enregistrements d\u00e9clench\u00e9s par des contacts externes.\",\"url\":\"\"},\"en\":{\"title\":\"Hands-on Lab: NVR Contact Inputs & Outputs\",\"text\":\"Connect alarm contacts to the NVR, program IN\/OUT logic, Anti-Dither, Post-Alarm and Post-Record, and verify recordings triggered by external contacts.\",\"url\":\"\"},\"de\":{\"title\":\"Praxislabor: NVR-Kontakteing\u00e4nge und -ausg\u00e4nge\",\"text\":\"Verdrahten Sie Alarmkontakte, konfigurieren Sie Eing\u00e4nge, Ausg\u00e4nge und Entprellung und pr\u00fcfen Sie die Ereignislogik.\",\"url\":\"\"}},{\"id\":\"ML-017\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"AI-meldingen op smartphone met DMSS\",\"text\":\"Installeer DMSS, activeer de juiste smartphone-rechten, stel per camera intelligente pushmeldingen in en test meldingen voor personen- en voertuigdetectie.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/opdracht-ai_3-meldingen-op-smartphone\/\"},\"fr\":{\"title\":\"Notifications IA sur smartphone avec DMSS\",\"text\":\"Installez DMSS, activez les autorisations n\u00e9cessaires sur le smartphone, configurez les notifications push intelligentes par cam\u00e9ra et testez les alertes de d\u00e9tection de personnes et de v\u00e9hicules.\",\"url\":\"\"},\"en\":{\"title\":\"AI Notifications on a Smartphone with DMSS\",\"text\":\"Install DMSS, enable the required smartphone permissions, configure intelligent push notifications per camera, and test person and vehicle detection alerts.\",\"url\":\"\"},\"de\":{\"title\":\"KI-Benachrichtigungen auf dem Smartphone mit DMSS\",\"text\":\"Konfigurieren Sie DMSS, Smartphone-Berechtigungen und intelligente Ereignisbenachrichtigungen.\",\"url\":\"\"}},{\"id\":\"ML-018\",\"track\":\"basis-ai\",\"nl\":{\"title\":\"Dahua AI SSA: automatische beeldoptimalisatie\",\"text\":\"Begrijp hoe AI Scene Self-Adaption sc\u00e8nes zoals regen, mist, tegenlicht, weinig licht en flikkering herkent en automatisch belichting, contrast en kleurinstellingen optimaliseert.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/wat-betekent-ai-ssa-van-het-merk-dahua\/\"},\"fr\":{\"title\":\"Dahua AI SSA : optimisation automatique de l\u2019image\",\"text\":\"Comprenez comment AI Scene Self-Adaption reconna\u00eet des sc\u00e8nes comme la pluie, le brouillard, le contre-jour, le faible \u00e9clairage et le scintillement, puis optimise automatiquement l\u2019exposition, le contraste et les couleurs.\",\"url\":\"\"},\"en\":{\"title\":\"Dahua AI SSA: Automatic Image Optimisation\",\"text\":\"Understand how AI Scene Self-Adaption recognises conditions such as rain, fog, backlight, low light and flicker, then automatically optimises exposure, contrast and colour settings.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua AI SSA: automatische Bildoptimierung\",\"text\":\"Verstehen Sie, wie AI Scene Self-Adaption Bildbedingungen erkennt und Kameraeinstellungen optimiert.\",\"url\":\"\"}},{\"id\":\"ML-019\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"ANPR nummerplaatherkenning\",\"text\":\"Leer een Dahua ANPR-oplossing correct installeren, uitrichten en configureren, nummerplaten zoeken en exporteren en typische herkenningsproblemen systematisch analyseren.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/anpr-nummerplaatherkenning\/\"},\"fr\":{\"title\":\"Reconnaissance de plaques ANPR\",\"text\":\"Apprenez \u00e0 installer, orienter et configurer correctement une solution ANPR Dahua, \u00e0 rechercher et exporter des plaques et \u00e0 analyser m\u00e9thodiquement les probl\u00e8mes de reconnaissance.\",\"url\":\"https:\/\/cctvacademy.be\/fr\/anpr-nummerplaatherkenning\/\"},\"en\":{\"title\":\"ANPR Number Plate Recognition\",\"text\":\"Learn how to correctly install, aim and configure a Dahua ANPR solution, search and export number plates, and systematically troubleshoot recognition issues.\",\"url\":\"\"},\"de\":{\"title\":\"ANPR: Kennzeichenerkennung\",\"text\":\"Erfahren Sie, wie Sie eine Dahua-ANPR-L\u00f6sung richtig montieren, ausrichten und konfigurieren.\",\"url\":\"\"}},{\"id\":\"ML-020\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"AcuPick: personen en voertuigen snel terugvinden\",\"text\":\"Gebruik Dahua AcuPick om met \u00e9\u00e9n referentiebeeld een persoon of voertuig over meerdere camerabeelden terug te vinden en relevante verschijningen sneller te analyseren.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/kan-jij-mij-vinden\/\"},\"fr\":{\"title\":\"AcuPick : retrouver rapidement des personnes et des v\u00e9hicules\",\"text\":\"Utilisez Dahua AcuPick \u00e0 partir d\u2019une image de r\u00e9f\u00e9rence pour retrouver une personne ou un v\u00e9hicule dans plusieurs enregistrements et analyser plus rapidement les apparitions pertinentes.\",\"url\":\"\"},\"en\":{\"title\":\"AcuPick: Quickly Find People and Vehicles\",\"text\":\"Use Dahua AcuPick with a single reference image to find a person or vehicle across multiple recordings and analyse relevant appearances more quickly.\",\"url\":\"\"},\"de\":{\"title\":\"AcuPick: Personen und Fahrzeuge schnell finden\",\"text\":\"Suchen Sie mit Dahua AcuPick anhand eines Referenzbildes gezielt nach Personen oder Fahrzeugen.\",\"url\":\"\"}},{\"id\":\"ML-021\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"AcuPick zoeken in 2 rondes\",\"text\":\"Voer eerst een gerichte zoekopdracht uit op \u00e9\u00e9n camera en gebruik daarna AcuPick om dezelfde persoon of hetzelfde voertuig over alle compatibele camera\u2019s terug te vinden.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/start-met-het-slim-zoeken-naar-mensen-zonder-licenties\/\"},\"fr\":{\"title\":\"Recherche AcuPick en 2 \u00e9tapes\",\"text\":\"Effectuez d\u2019abord une recherche cibl\u00e9e sur une cam\u00e9ra, puis utilisez AcuPick pour retrouver la m\u00eame personne ou le m\u00eame v\u00e9hicule sur toutes les cam\u00e9ras compatibles.\",\"url\":\"\"},\"en\":{\"title\":\"Two-Stage AcuPick Search\",\"text\":\"First run a targeted search on one camera, then use AcuPick to find the same person or vehicle across all compatible cameras.\",\"url\":\"\"},\"de\":{\"title\":\"AcuPick-Suche in zwei Schritten\",\"text\":\"Starten Sie eine gezielte Kamerasuche und finden Sie das Objekt anschlie\u00dfend \u00fcber weitere Kameras hinweg.\",\"url\":\"\"}},{\"id\":\"ML-022\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"AcuPick-resultaten slim exporteren naar USB\",\"text\":\"Zoek relevante beelden met AcuPick, selecteer het juiste fragment en exporteer de opname via USB 3.0 voor controle of verdere verwerking met SmartPlayer.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/start-met-slim-downloaden-van-jouw-camerabeelden-op-usb-stick-kort-krachtig-en-eenvoudig\/\"},\"fr\":{\"title\":\"Exporter intelligemment les r\u00e9sultats AcuPick vers USB\",\"text\":\"Recherchez les images pertinentes avec AcuPick, s\u00e9lectionnez le bon extrait et exportez l\u2019enregistrement via USB 3.0 pour contr\u00f4le ou traitement ult\u00e9rieur avec SmartPlayer.\",\"url\":\"\"},\"en\":{\"title\":\"Smart Export of AcuPick Results to USB\",\"text\":\"Find relevant footage with AcuPick, select the correct clip, and export the recording via USB 3.0 for review or further processing with SmartPlayer.\",\"url\":\"\"},\"de\":{\"title\":\"AcuPick-Ergebnisse intelligent auf USB exportieren\",\"text\":\"Finden Sie relevante Aufnahmen, w\u00e4hlen Sie den richtigen Ausschnitt und exportieren Sie ihn auf USB.\",\"url\":\"\"}},{\"id\":\"ML-023\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"Gezichtsdetectie correct configureren\",\"text\":\"Configureer Face Detection in de camera, plaats de NVR in de juiste AI-modus en controleer in livebeeld of gezichten correct als detectie-event worden gemarkeerd.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/hoe-programmeer-ik-gezichtsdetectie\/\"},\"fr\":{\"title\":\"Configurer correctement la d\u00e9tection faciale\",\"text\":\"Configurez Face Detection dans la cam\u00e9ra, placez le NVR dans le mode IA appropri\u00e9 et v\u00e9rifiez en vue en direct que les visages sont correctement signal\u00e9s comme \u00e9v\u00e9nements de d\u00e9tection.\",\"url\":\"\"},\"en\":{\"title\":\"Configure Face Detection Correctly\",\"text\":\"Configure Face Detection in the camera, place the NVR in the appropriate AI mode, and verify in Live View that faces are correctly marked as detection events.\",\"url\":\"\"},\"de\":{\"title\":\"Gesichtserkennung als Detektion richtig einrichten\",\"text\":\"Konfigurieren Sie Face Detection an der Kamera und den passenden KI-Modus am NVR und pr\u00fcfen Sie die Ereignisse.\",\"url\":\"\"}},{\"id\":\"ML-024\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"Gezichtsdetectie versus gezichtsherkenning\",\"text\":\"Leer het technische verschil tussen een gezicht detecteren en een persoon herkennen via vergelijking met een gezichtsdatabank, inclusief de impact op AI-capaciteit van de NVR.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/detectie-kijkt-herkenning-kent\/\"},\"fr\":{\"title\":\"D\u00e9tection faciale versus reconnaissance faciale\",\"text\":\"Comprenez la diff\u00e9rence technique entre d\u00e9tecter un visage et reconna\u00eetre une personne par comparaison avec une base de donn\u00e9es faciale, ainsi que l\u2019impact sur la capacit\u00e9 IA du NVR.\",\"url\":\"\"},\"en\":{\"title\":\"Face Detection vs Face Recognition\",\"text\":\"Understand the technical difference between detecting a face and recognising a person by comparing it with a face database, including the impact on NVR AI capacity.\",\"url\":\"\"},\"de\":{\"title\":\"Gesichtsdetektion versus Gesichtswiedererkennung\",\"text\":\"Unterscheiden Sie zwischen dem Erkennen eines Gesichts und dem biometrischen Abgleich mit einer Gesichtsdatenbank.\",\"url\":\"\"}},{\"id\":\"ML-025\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"Gezichtsherkenning & Belgische\/EU-regelgeving\",\"text\":\"Bekijk waarom automatische biometrische gezichtsherkenning juridisch veel gevoeliger is dan gewone persoonsdetectie en welke vragen GDPR, Camerawet en EU AI Act oproepen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/automatische-gezichtsherkenning-wat-zegt-de-wetgeving\/\"},\"fr\":{\"title\":\"Reconnaissance faciale & r\u00e9glementation belge\/europ\u00e9enne\",\"text\":\"D\u00e9couvrez pourquoi la reconnaissance faciale biom\u00e9trique automatis\u00e9e est juridiquement beaucoup plus sensible que la simple d\u00e9tection de personnes et quelles questions soul\u00e8vent le RGPD, la loi cam\u00e9ras et l\u2019AI Act europ\u00e9en.\",\"url\":\"\"},\"en\":{\"title\":\"Facial Recognition & Belgian\/EU Regulation\",\"text\":\"Learn why automated biometric facial recognition is legally much more sensitive than ordinary person detection and what issues arise under the GDPR, Belgian camera law and the EU AI Act.\",\"url\":\"\"},\"de\":{\"title\":\"Biometrische Gesichtserkennung: belgisches und EU-Recht\",\"text\":\"Verstehen Sie, warum biometrische Gesichtserkennung rechtlich besonders sensibel ist und welche Fragen DSGVO, Kameragesetz und EU AI Act aufwerfen.\",\"url\":\"\"}},{\"id\":\"ML-026\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"AI-herkenning: van detectie naar gezichtsdatabank\",\"text\":\"Configureer gezichtsdetectie, bouw en beheer gezichtsdatabanken, test herkenning over meerdere camera\u2019s en begrijp waarom de juridische grenzen integraal deel van de oefening zijn.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/kan-jij-mij-herkennen\/\"},\"fr\":{\"title\":\"Reconnaissance IA : de la d\u00e9tection \u00e0 la base de visages\",\"text\":\"Configurez la d\u00e9tection faciale, cr\u00e9ez et g\u00e9rez des bases de visages, testez la reconnaissance sur plusieurs cam\u00e9ras et comprenez pourquoi les limites juridiques font partie int\u00e9grante de l\u2019exercice.\",\"url\":\"\"},\"en\":{\"title\":\"AI Recognition: From Detection to a Face Database\",\"text\":\"Configure face detection, build and manage face databases, test recognition across multiple cameras, and understand why legal boundaries are an integral part of the exercise.\",\"url\":\"\"},\"de\":{\"title\":\"KI-Wiedererkennung: von Detektion zur Gesichtsdatenbank\",\"text\":\"Konfigurieren Sie Gesichtsdetektion, verwalten Sie Gesichtsdatenbanken und beachten Sie die rechtlichen Grenzen.\",\"url\":\"\"}},{\"id\":\"ML-027\",\"track\":\"advanced-ai\",\"nl\":{\"title\":\"Dahua AI-metadata analyseren in Nx Witness\",\"text\":\"Zet Nx Witness tijdelijk op Verbose, activeer Dahua AI-events en vergelijk camera- en VMS-logs om te controleren welke metadata en plugin-events werkelijk worden ontvangen.\",\"url\":\"https:\/\/cctvacademy.be\/nl\/metadata-van-dahua-cameras-onderscheppen\/\"},\"fr\":{\"title\":\"Analyser les m\u00e9tadonn\u00e9es IA Dahua dans Nx Witness\",\"text\":\"Passez temporairement Nx Witness en mode Verbose, d\u00e9clenchez des \u00e9v\u00e9nements IA Dahua et comparez les journaux cam\u00e9ra\/VMS afin de v\u00e9rifier quelles m\u00e9tadonn\u00e9es et quels \u00e9v\u00e9nements du plugin sont r\u00e9ellement re\u00e7us.\",\"url\":\"\"},\"en\":{\"title\":\"Analyse Dahua AI Metadata in Nx Witness\",\"text\":\"Temporarily enable Verbose mode in Nx Witness, trigger Dahua AI events, and compare camera and VMS logs to verify which metadata and plugin events are actually received.\",\"url\":\"\"},\"de\":{\"title\":\"Dahua-KI-Metadaten in Nx Witness analysieren\",\"text\":\"Aktivieren Sie zeitweise ausf\u00fchrliche Protokolle und vergleichen Sie Kamera- und VMS-Logs zur Pr\u00fcfung \u00fcbertragener KI-Ereignisse.\",\"url\":\"\"}}];\n\n  var selectedIds = [];\n  var activeTrack = \"basis-cctv\";\n\n  var ui = {\n    nl:{\n      source:\"27 Micro-Learning onderwerpen om uit te kiezen\",\n      empty:\"Binnen dit opleidingstraject zijn momenteel geen onderwerpen gevonden.\",\n      summary:\"Uw keuze:\",\n      article:\"Bekijk artikel\",\n      basis:\"Basis CCTV\",\n      basicAi:\"Basis AI CCTV\",\n      advanced:\"Advanced AI CCTV\"\n    },\n    fr:{\n      source:\"27 sujets Micro-Learning au choix\",\n      empty:\"Aucun sujet n\u2019est actuellement disponible dans ce parcours de formation.\",\n      summary:\"Votre s\u00e9lection :\",\n      article:\"Voir l\u2019article\",\n      basis:\"CCTV de base\",\n      basicAi:\"CCTV IA de base\",\n      advanced:\"CCTV IA avanc\u00e9e\"\n    },\n    en:{\n      source:\"27 Micro-Learning topics to choose from\",\n      empty:\"No topics are currently available in this training path.\",\n      summary:\"Your selection:\",\n      article:\"View article\",\n      basis:\"CCTV Basics\",\n      basicAi:\"Basic AI CCTV\",\n      advanced:\"Advanced AI CCTV\"\n    },\n    de:{\n      source:\"27 Micro-Learning-Themen zur Auswahl\",\n      empty:\"F\u00fcr diesen Lernweg wurden derzeit keine Themen gefunden.\",\n      summary:\"Ihre Auswahl:\", article:\"Artikel ansehen\",\n      basis:\"CCTV-Grundlagen\",basicAi:\"KI-CCTV-Grundlagen\",advanced:\"Advanced AI CCTV\"\n    }\n  };\n\n  function root(){\n    return document.getElementById(ROOT_ID);\n  }\n\n  function language(){\n    if (\n      window.CCTVAcademyLanguage &&\n      typeof window.CCTVAcademyLanguage.get === \"function\"\n    ){\n      var value = window.CCTVAcademyLanguage.get();\n      if (ui[value]) return value;\n    }\n\n    return \"nl\";\n  }\n\n  function getTopic(id){\n    for (var i = 0; i < CATALOGUE.length; i++){\n      if (CATALOGUE[i].id === id){\n        return CATALOGUE[i];\n      }\n    }\n\n    return null;\n  }\n\n  function localizedTopic(topic){\n    if (!topic) return null;\n\n    var lang = language();\n    var local = topic[lang] || topic.nl;\n\n    return {\n      id:topic.id,\n      track:topic.track,\n      title:String(local.title || \"\"),\n      text:String(local.text || \"\"),\n      url:String(local.url || \"\")\n    };\n  }\n\n  function localizedSelection(){\n    return selectedIds\n      .map(function(id){\n        return localizedTopic(getTopic(id));\n      })\n      .filter(Boolean);\n  }\n\n  function restoreSelection(){\n    try{\n      var raw = JSON.parse(\n        localStorage.getItem(STORAGE_KEY) || \"[]\"\n      );\n\n      if (Array.isArray(raw)){\n        \/*\n         * Backward compatible with previous versions that stored\n         * complete topic objects instead of canonical IDs.\n         *\/\n        selectedIds = raw\n          .map(function(item){\n            return typeof item === \"string\"\n              ? item\n              : item && item.id;\n          })\n          .filter(function(id){\n            return !!getTopic(id);\n          });\n      }\n    }catch(e){\n      selectedIds = [];\n    }\n  }\n\n  function saveSelection(){\n    try{\n      localStorage.setItem(\n        STORAGE_KEY,\n        JSON.stringify(selectedIds)\n      );\n    }catch(e){}\n\n    var el = root();\n\n    if (el){\n      var hidden = el.querySelector(\n        \"#cctv-micro-topics-hidden\"\n      );\n\n      if (hidden){\n        hidden.value = JSON.stringify(\n          localizedSelection()\n        );\n      }\n    }\n\n    try{\n      window.dispatchEvent(\n        new CustomEvent(\n          \"cctvAcademyMicroTopicsChange\",\n          {\n            detail:{\n              topicIds:selectedIds.slice(),\n              topics:localizedSelection(),\n              track:activeTrack\n            }\n          }\n        )\n      );\n    }catch(e){}\n  }\n\n  function restoreTrack(){\n    try{\n      var stored = String(\n        localStorage.getItem(TRACK_STORAGE_KEY) || \"\"\n      );\n\n      if (\n        stored === \"basis-cctv\" ||\n        stored === \"basis-ai\" ||\n        stored === \"advanced-ai\"\n      ){\n        activeTrack = stored;\n      }\n    }catch(e){}\n  }\n\n  function trackLabel(track){\n    var copy = ui[language()];\n\n    if (track === \"basis-ai\"){\n      return copy.basicAi;\n    }\n\n    if (track === \"advanced-ai\"){\n      return copy.advanced;\n    }\n\n    return copy.basis;\n  }\n\n  function topicsForTrack(track){\n    return CATALOGUE.filter(function(topic){\n      return topic.track === track;\n    });\n  }\n\n  function isSelected(id){\n    return selectedIds.indexOf(id) !== -1;\n  }\n\n  function toggleTopic(id){\n    var index = selectedIds.indexOf(id);\n\n    if (index === -1){\n      selectedIds.push(id);\n    }else{\n      selectedIds.splice(index,1);\n    }\n\n    saveSelection();\n    renderTopics();\n    renderSelection();\n  }\n\n  function updateTrackCounts(){\n    var el = root();\n    if (!el) return;\n\n    [\n      \"basis-cctv\",\n      \"basis-ai\",\n      \"advanced-ai\"\n    ].forEach(function(track){\n      var badge = el.querySelector(\n        '[data-track-count=\"' + track + '\"]'\n      );\n\n      if (badge){\n        badge.textContent = String(\n          topicsForTrack(track).length\n        );\n      }\n    });\n  }\n\n  function renderTrackButtons(){\n    var el = root();\n    if (!el) return;\n\n    el.querySelectorAll(\n      \".cctv-micro-track[data-track]\"\n    ).forEach(function(button){\n      var active =\n        button.getAttribute(\"data-track\") === activeTrack;\n\n      button.classList.toggle(\n        \"is-active\",\n        active\n      );\n\n      button.setAttribute(\n        \"aria-selected\",\n        active ? \"true\" : \"false\"\n      );\n    });\n\n    var current = el.querySelector(\n      \"#cctv-micro-current-track\"\n    );\n\n    if (current){\n      current.textContent =\n        trackLabel(activeTrack);\n    }\n  }\n\n  function setTrack(track,persist){\n    if (\n      track !== \"basis-cctv\" &&\n      track !== \"basis-ai\" &&\n      track !== \"advanced-ai\"\n    ){\n      track = \"basis-cctv\";\n    }\n\n    activeTrack = track;\n\n    if (persist !== false){\n      try{\n        localStorage.setItem(\n          TRACK_STORAGE_KEY,\n          activeTrack\n        );\n      }catch(e){}\n    }\n\n    renderTrackButtons();\n    renderTopics();\n\n    var el = root();\n\n    if (el){\n      var grid = el.querySelector(\n        \"#cctv-micro-topics-grid\"\n      );\n\n      if (grid){\n        grid.scrollTop = 0;\n      }\n    }\n  }\n\n  function topicCard(topic){\n    var local = localizedTopic(topic);\n    var article = document.createElement(\"article\");\n\n    article.className = \"cctv-micro-topic\";\n    article.setAttribute(\"tabindex\",\"0\");\n    article.setAttribute(\"role\",\"checkbox\");\n    article.setAttribute(\n      \"aria-checked\",\n      isSelected(topic.id) ? \"true\" : \"false\"\n    );\n\n    if (isSelected(topic.id)){\n      article.classList.add(\"is-selected\");\n    }\n\n    var top = document.createElement(\"div\");\n    top.className = \"cctv-micro-topic__top\";\n\n    var badge = document.createElement(\"span\");\n    badge.className = \"cctv-micro-topic__label\";\n    badge.textContent = trackLabel(topic.track);\n\n    var check = document.createElement(\"span\");\n    check.className = \"cctv-micro-topic__check\";\n    check.setAttribute(\"aria-hidden\",\"true\");\n    check.textContent = \"\u2713\";\n\n    top.appendChild(badge);\n    top.appendChild(check);\n\n    var title = document.createElement(\"h4\");\n    title.textContent = local.title;\n\n    var copy = document.createElement(\"p\");\n    copy.textContent = local.text;\n\n    article.appendChild(top);\n    article.appendChild(title);\n    article.appendChild(copy);\n\n    \/*\n     * Never send a FR\/EN visitor to the NL article.\n     * A link is shown only when that language URL is actually known.\n     *\/\n    if (local.url){\n      var link = document.createElement(\"a\");\n\n      link.className = \"cctv-micro-topic__link\";\n      link.href = local.url;\n      link.target = \"_blank\";\n      link.rel = \"noopener\";\n      link.textContent = ui[language()].article;\n\n      link.addEventListener(\n        \"click\",\n        function(event){\n          event.stopPropagation();\n        }\n      );\n\n      article.appendChild(link);\n    }\n\n    article.addEventListener(\n      \"click\",\n      function(event){\n        if (\n          event.target &&\n          event.target.closest(\"a\")\n        ){\n          return;\n        }\n\n        toggleTopic(topic.id);\n      }\n    );\n\n    article.addEventListener(\n      \"keydown\",\n      function(event){\n        if (\n          event.key === \"Enter\" ||\n          event.key === \" \"\n        ){\n          event.preventDefault();\n          toggleTopic(topic.id);\n        }\n      }\n    );\n\n    return article;\n  }\n\n  function renderTopics(){\n    var el = root();\n    if (!el) return;\n\n    var grid = el.querySelector(\n      \"#cctv-micro-topics-grid\"\n    );\n\n    if (!grid) return;\n\n    grid.innerHTML = \"\";\n\n    var items = topicsForTrack(activeTrack);\n\n    if (!items.length){\n      var empty = document.createElement(\"div\");\n\n      empty.className =\n        \"cctv-micro-topics__empty\";\n\n      empty.textContent =\n        ui[language()].empty;\n\n      grid.appendChild(empty);\n      return;\n    }\n\n    items.forEach(function(topic){\n      grid.appendChild(\n        topicCard(topic)\n      );\n    });\n  }\n\n  function renderSelection(){\n    var el = root();\n    if (!el) return;\n\n    var selected = localizedSelection();\n\n    var count = el.querySelector(\n      \"#cctv-micro-topics-count\"\n    );\n\n    if (count){\n      count.textContent =\n        String(selected.length);\n    }\n\n    var summary = el.querySelector(\n      \"#cctv-micro-topics-summary\"\n    );\n\n    if (summary){\n      if (!selected.length){\n        summary.hidden = true;\n        summary.textContent = \"\";\n      }else{\n        summary.hidden = false;\n\n        summary.textContent =\n          ui[language()].summary +\n          \" \" +\n          selected.map(function(item){\n            return item.title;\n          }).join(\" \u00b7 \");\n      }\n    }\n\n    saveSelection();\n  }\n\n  function renderSource(){\n    var el = root();\n    if (!el) return;\n\n    var sourceEl = el.querySelector(\n      \"#cctv-micro-topics-source span:last-child\"\n    );\n\n    if (sourceEl){\n      sourceEl.textContent =\n        ui[language()].source;\n    }\n  }\n\n  function showForRequestType(type){\n    var el = root();\n    if (!el) return;\n\n    var section = el.querySelector(\n      \"#cctv-micro-topics\"\n    );\n\n    if (!section) return;\n\n    var show =\n      type === \"micro-learning\";\n\n    section.hidden = !show;\n\n    if (show){\n      renderAll();\n\n      window.setTimeout(\n        function(){\n          section.scrollIntoView({\n            behavior:\"smooth\",\n            block:\"nearest\"\n          });\n        },\n        80\n      );\n    }\n  }\n\n  function renderAll(){\n    renderSource();\n    updateTrackCounts();\n    renderTrackButtons();\n    renderTopics();\n    renderSelection();\n  }\n\n  function init(){\n    var el = root();\n    if (!el) return;\n\n    restoreSelection();\n    restoreTrack();\n\n    el.querySelectorAll(\n      \".cctv-micro-track[data-track]\"\n    ).forEach(function(button){\n      button.addEventListener(\n        \"click\",\n        function(){\n          setTrack(\n            button.getAttribute(\"data-track\"),\n            true\n          );\n        }\n      );\n    });\n\n    var clear = el.querySelector(\n      \"#cctv-micro-topics-clear\"\n    );\n\n    if (clear){\n      clear.addEventListener(\n        \"click\",\n        function(){\n          selectedIds = [];\n          saveSelection();\n          renderTopics();\n          renderSelection();\n        }\n      );\n    }\n\n    var requestType =\n      window.CCTVAcademyRequestType &&\n      typeof window.CCTVAcademyRequestType.get === \"function\"\n        ? window.CCTVAcademyRequestType.get()\n        : \"\";\n\n    renderAll();\n    showForRequestType(requestType);\n  }\n\n  window.addEventListener(\n    \"cctvAcademyRequestTypeChange\",\n    function(event){\n      var type =\n        event && event.detail\n          ? String(\n              event.detail.requestType || \"\"\n            )\n          : \"\";\n\n      showForRequestType(type);\n    }\n  );\n\n  window.addEventListener(\n    \"cctvAcademyLanguageChange\",\n    function(){\n      \/*\n       * Canonical IDs stay untouched; only localized card copy,\n       * summary and Forminator payload are regenerated.\n       *\/\n      window.setTimeout(\n        renderAll,\n        0\n      );\n    }\n  );\n\n  window.CCTVAcademyMicroLearningTopics = {\n    get:function(){\n      return localizedSelection();\n    },\n\n    getIds:function(){\n      return selectedIds.slice();\n    },\n\n    getTrack:function(){\n      return activeTrack;\n    },\n\n    setTrack:function(track){\n      setTrack(track,true);\n    },\n\n    clear:function(){\n      selectedIds = [];\n      saveSelection();\n      renderTopics();\n      renderSelection();\n    },\n\n    getCatalogue:function(){\n      return CATALOGUE.slice();\n    }\n  };\n\n  if (\n    document.readyState === \"loading\"\n  ){\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      init,\n      {once:true}\n    );\n  }else{\n    init();\n  }\n})();\n<\/script>\n<script>\n(function(){\n  \"use strict\";\n\n  var FORM_ID = \"forminator-module-49521\";\n  var REQUEST_MARKER = \"CCTV_REQUEST_TYPE\";\n  var TOPICS_MARKER = \"CCTV_MICRO_TOPICS\";\n  var PARTICIPANTS_MARKER = \"CCTV_PARTICIPANTS\";\n\n  var requestField = null;\n  var topicsField = null;\n  var participantsField = null;\n  var observer = null;\n  var scanTimer = 0;\n\n  var requestLabels = {\n    \"basis-cctv\":\"Basis CCTV\",\n    \"basis-ai\":\"Basis AI CCTV\",\n    \"advanced-ai\":\"Advanced AI CCTV\",\n    \"micro-learning\":\"CCTV Micro-Learning\",\n    \"technical-support\":\"Technische ondersteuning\"\n  };\n\n  function getForm(){\n    return document.getElementById(FORM_ID);\n  }\n\n  function fieldStillValid(field){\n    return !!(\n      field &&\n      document.documentElement.contains(field) &&\n      field.closest(\"#\" + FORM_ID)\n    );\n  }\n\n  function findByBridgeName(form,name){\n    if (!form) return null;\n\n    return form.querySelector(\n      '[data-cctv-academy-bridge=\"' + name + '\"]'\n    );\n  }\n\n  \/* v1.16: native Forminator field identifiers established from the\n     user's actual export of form 49521. Match by field name first;\n     its optional DOM id contains a random suffix. Do not rely solely\n     on the placeholder\/default marker surviving Forminator's render. *\/\n  function findByNativeId(form,fieldId){\n    if (!form) return null;\n\n    var candidates = form.querySelectorAll(\n      'input[type=\"hidden\"], input[type=\"text\"], textarea'\n    );\n    for (var i=0; i<candidates.length; i++){\n      var input = candidates[i];\n      var name = String(input.getAttribute('name') || '');\n      var id = String(input.id || '');\n      if (name === fieldId || name === fieldId + '[]' ||\n          id === fieldId || id === 'forminator-field-' + fieldId ||\n          id.indexOf('forminator-field-' + fieldId + '_') === 0){\n        return input;\n      }\n    }\n    return null;\n  }\n\n  function findByMarker(form,marker){\n    if (!form) return null;\n\n    var fields = form.querySelectorAll(\n      'input[type=\"hidden\"], input[type=\"text\"], textarea'\n    );\n\n    for (var i = 0; i < fields.length; i++){\n      if (\n        String(\n          fields[i].value || \"\"\n        ).trim() === marker\n      ){\n        return fields[i];\n      }\n    }\n\n    return null;\n  }\n\n  function discoverFields(){\n    var form = getForm();\n\n    if (!form){\n      requestField = null;\n      topicsField = null;\n      participantsField = null;\n      return false;\n    }\n\n    if (!fieldStillValid(requestField)){\n      requestField =\n        findByNativeId(\n          form,\n          \"hidden-1\"\n        ) ||\n        findByBridgeName(\n          form,\n          \"request-type\"\n        ) ||\n        findByMarker(\n          form,\n          REQUEST_MARKER\n        );\n\n      if (requestField){\n        requestField.setAttribute(\n          \"data-cctv-academy-bridge\",\n          \"request-type\"\n        );\n      }\n    }\n\n    if (!fieldStillValid(topicsField)){\n      topicsField =\n        findByNativeId(\n          form,\n          \"hidden-2\"\n        ) ||\n        findByBridgeName(\n          form,\n          \"micro-topics\"\n        ) ||\n        findByMarker(\n          form,\n          TOPICS_MARKER\n        );\n\n      if (topicsField){\n        topicsField.setAttribute(\n          \"data-cctv-academy-bridge\",\n          \"micro-topics\"\n        );\n      }\n    }\n\n    if (!fieldStillValid(participantsField)){\n      participantsField =\n        findByNativeId(\n          form,\n          \"hidden-3\"\n        ) ||\n        findByBridgeName(\n          form,\n          \"participants\"\n        ) ||\n        findByMarker(\n          form,\n          PARTICIPANTS_MARKER\n        );\n\n      if (participantsField){\n        participantsField.setAttribute(\n          \"data-cctv-academy-bridge\",\n          \"participants\"\n        );\n      }\n    }\n\n    return !!(\n      requestField &&\n      topicsField\n    );\n  }\n\n  function triggerFieldEvents(field){\n    if (!field) return;\n\n    try{\n      field.dispatchEvent(\n        new Event(\n          \"input\",\n          {bubbles:true}\n        )\n      );\n\n      field.dispatchEvent(\n        new Event(\n          \"change\",\n          {bubbles:true}\n        )\n      );\n    }catch(e){}\n  }\n\n  function setFieldValue(field,value){\n    if (!field) return;\n\n    var next =\n      String(\n        value == null\n          ? \"\"\n          : value\n      );\n\n    if (field.value !== next){\n      field.value = next;\n      field.setAttribute(\n        \"value\",\n        next\n      );\n\n      triggerFieldEvents(field);\n    }\n  }\n\n  function getRequestType(){\n    if (\n      window.CCTVAcademyRequestType &&\n      typeof window.CCTVAcademyRequestType.get === \"function\"\n    ){\n      return String(\n        window.CCTVAcademyRequestType.get() || \"\"\n      );\n    }\n\n    return \"\";\n  }\n\n  function getTopics(){\n    if (\n      window.CCTVAcademyMicroLearningTopics &&\n      typeof window.CCTVAcademyMicroLearningTopics.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyMicroLearningTopics.get();\n\n      return Array.isArray(value)\n        ? value\n        : [];\n    }\n\n    return [];\n  }\n\n  function getMicroIntake(){\n    if (\n      window.CCTVAcademyMicroIntake &&\n      typeof window.CCTVAcademyMicroIntake.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyMicroIntake.get();\n\n      return {\n        customTopic:String(\n          value &&\n          value.customTopic ||\n          \"\"\n        ).trim(),\n\n        learningGoal:String(\n          value &&\n          value.learningGoal ||\n          \"\"\n        ).trim()\n      };\n    }\n\n    return {\n      customTopic:\"\",\n      learningGoal:\"\"\n    };\n  }\n\n  function getParticipants(){\n    if (\n      window.CCTVAcademyParticipants &&\n      typeof window.CCTVAcademyParticipants.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyParticipants.get();\n\n      return {\n        type:String(\n          value &&\n          value.type ||\n          \"\"\n        ),\n        count:parseInt(\n          value &&\n          value.count,\n          10\n        ) || 0,\n        names:Array.isArray(\n          value &&\n          value.names\n        )\n          ? value.names\n          : []\n      };\n    }\n\n    return {\n      type:\"\",\n      count:0,\n      names:[]\n    };\n  }\n\n  function formatRequestType(type){\n    if (!type) return \"\";\n\n    return Object.prototype.hasOwnProperty.call(\n      requestLabels,\n      type\n    )\n      ? requestLabels[type] +\n        \" [\" +\n        type +\n        \"]\"\n      : type;\n  }\n\n  function formatTopics(type,topics,intake){\n    if (type === \"technical-support\"){\n      return intake && String(intake.customTopic || \"\").trim()\n        ? \"TECHNISCHE ASSISTENTIE \u2014 OMSCHRIJVING PROBLEEM\\n\" + String(intake.customTopic).trim()\n        : \"\";\n    }\n    if (type !== \"micro-learning\") return \"\";\n\n    var lines = [];\n\n    lines.push(\n      \"GESELECTEERDE MICRO-LEARNING ONDERWERPEN\"\n    );\n\n    if (topics.length){\n      topics.forEach(function(topic,index){\n        var title =\n          String(\n            topic.title || \"\"\n          ).trim();\n\n        var url =\n          String(\n            topic.url || \"\"\n          ).trim();\n\n        lines.push(\n          (index + 1) +\n          \". \" +\n          title +\n          (\n            url\n              ? \" | \" + url\n              : \"\"\n          )\n        );\n      });\n    }else{\n      lines.push(\n        \"Nog geen kennisbankonderwerpen geselecteerd.\"\n      );\n    }\n\n    if (\n      intake &&\n      intake.learningGoal\n    ){\n      lines.push(\"\");\n      lines.push(\n        \"PRAKTISCH LEERDOEL\"\n      );\n      lines.push(\n        intake.learningGoal\n      );\n    }\n\n    return lines.join(\"\\n\");\n  }\n\n  function formatParticipants(type,data){\n    if (\n      type === \"technical-support\" ||\n      !data ||\n      !data.count\n    ) return \"\";\n\n    var details = (\n      window.CCTVAcademyParticipantRows &&\n      typeof window.CCTVAcademyParticipantRows.getDetails === \"function\"\n    ) ? window.CCTVAcademyParticipantRows.getDetails() : [];\n\n    var lines = [\n      \"AANTAL DEELNEMERS\",\n      String(data.count),\n      \"\",\n      \"GEGEVENS PER DEELNEMER\"\n    ];\n\n    for (var i = 0; i < data.count; i++){\n      var person = details[i] || {};\n      var name = [person.first || \"\",person.last || \"\"]\n        .join(\" \").trim() || String(data.names[i] || \"\").trim();\n      lines.push((i + 1) + \". \" + (name || \"Nog niet ingevuld\"));\n      if (person.email){\n        lines.push(\"   E-mail: \" + String(person.email).trim());\n      }\n    }\n    return lines.join(\"\\n\");\n  }\n\n  function sync(){\n    discoverFields();\n\n    var type =\n      getRequestType();\n\n    var topics =\n      getTopics();\n\n    var intake =\n      getMicroIntake();\n\n    var participants =\n      getParticipants();\n\n    var participantPayload =\n      formatParticipants(\n        type,\n        participants\n      );\n\n    \/*\n     * If the optional third hidden field is not present, participant\n     * details are appended to the request-type hidden field so the\n     * information is still included in Forminator submissions.\n     *\/\n    var requestPayload =\n      formatRequestType(type);\n\n    if (\n      participantPayload &&\n      !participantsField\n    ){\n      requestPayload += \"\\n\\n\" + participantPayload;\n    }\n    if (type === \"technical-support\" && !topicsField && intake.customTopic){\n      requestPayload += \"\\n\\nTECHNISCHE ASSISTENTIE \u2014 OMSCHRIJVING PROBLEEM\\n\" + intake.customTopic;\n    }\n\n    setFieldValue(\n      requestField,\n      requestPayload\n    );\n\n    setFieldValue(\n      topicsField,\n      formatTopics(\n        type,\n        topics,\n        intake\n      )\n    );\n\n    setFieldValue(\n      participantsField,\n      participantPayload\n    );\n\n    return {\n      formFound:!!getForm(),\n      requestFieldFound:!!requestField,\n      topicsFieldFound:!!topicsField,\n      participantsFieldFound:!!participantsField,\n      requestType:type,\n      topicsCount:topics.length,\n      customTopic:intake.customTopic,\n      learningGoal:intake.learningGoal,\n      participantsCount:participants.count,\n      participantNames:participants.names\n    };\n  }\n\n  function scheduleSync(){\n    window.clearTimeout(\n      scanTimer\n    );\n\n    scanTimer =\n      window.setTimeout(\n        sync,\n        60\n      );\n  }\n\n  function startObserver(){\n    if (\n      observer ||\n      !document.body\n    ){\n      return;\n    }\n\n    observer =\n      new MutationObserver(\n        scheduleSync\n      );\n\n    observer.observe(\n      document.body,\n      {\n        childList:true,\n        subtree:true\n      }\n    );\n  }\n\n  function init(){\n    sync();\n    startObserver();\n\n    [\n      \"cctvAcademyRequestTypeChange\",\n      \"cctvAcademyMicroTopicsChange\",\n      \"cctvAcademyMicroIntakeChange\",\n      \"cctvAcademyParticipantsChange\",\n      \"cctvAcademyLanguageChange\"\n    ].forEach(function(name){\n      window.addEventListener(\n        name,\n        scheduleSync\n      );\n    });\n\n    \/* Elementor\/Forminator commonly sends its AJAX form on button click,\n       not always on a native form submit. Capture before its own handlers. *\/\n    document.addEventListener(\n      \"click\",\n      function(event){\n        var button = event.target && event.target.closest && event.target.closest(\n          \"#\" + FORM_ID + \" .forminator-button-submit, \" +\n          \"#\" + FORM_ID + \" button[type='submit'], \" +\n          \"#\" + FORM_ID + \" input[type='submit']\"\n        );\n        if (button) sync();\n      },\n      true\n    );\n\n    document.addEventListener(\n      \"submit\",\n      function(event){\n        var form = event.target;\n        if (form && (form.id === FORM_ID || form.closest(\"#\" + FORM_ID))){\n          sync();\n        }\n      },\n      true\n    );\n\n    \/* Native FormData path: use exactly the named fields established by\n       the Forminator export, without adding parallel hidden inputs. *\/\n    document.addEventListener(\"formdata\",function(event){\n      if (!event.target || event.target.id !== FORM_ID) return;\n      sync();\n      [requestField,topicsField,participantsField].forEach(function(field){\n        if (field && field.name) event.formData.set(field.name,field.value);\n      });\n    });\n  }\n\n  window.CCTVAcademyForminatorBridge = {\n    sync:sync,\n\n    status:function(){\n      return sync();\n    },\n\n    diagnostic:function(){\n      var result=sync();\n      var form=getForm();\n      \/* This diagnostic contains NO participant names, emails or intake text. *\/\n      return {\n        formFound:result.formFound,\n        requestFieldFound:result.requestFieldFound,\n        topicsFieldFound:result.topicsFieldFound,\n        participantsFieldFound:result.participantsFieldFound,\n        requestType:result.requestType,\n        topicsCount:result.topicsCount,\n        participantsCount:result.participantsCount,\n        fieldMapping:{\n          requestType:requestField ? requestField.name : null,\n          microTopics:topicsField ? topicsField.name : null,\n          participants:participantsField ? participantsField.name : null\n        },\n        markersStillPresent:form ? [\n          REQUEST_MARKER,TOPICS_MARKER,PARTICIPANTS_MARKER\n        ].filter(function(marker){return !!findByMarker(form,marker);}) : []\n      };\n    },\n\n    getFormattedValues:function(){\n      var type =\n        getRequestType();\n\n      var topics =\n        getTopics();\n\n      var intake =\n        getMicroIntake();\n\n      var participants =\n        getParticipants();\n\n      return {\n        requestType:\n          formatRequestType(type),\n\n        microLearningTopics:\n          formatTopics(\n            type,\n            topics,\n            intake\n          ),\n\n        participants:\n          formatParticipants(\n            type,\n            participants\n          )\n      };\n    }\n  };\n\n  if (\n    document.readyState === \"loading\"\n  ){\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      init,\n      {once:true}\n    );\n  }else{\n    init();\n  }\n})();\n<\/script>\n<script>\n(function(){\n  \"use strict\";\n\n  var ROOT_ID = \"cctv-academy-request\";\n  var STORAGE_KEY = \"cctv_academy_micro_intake\";\n\n  var state = {\n    customTopic:\"\",\n    learningGoal:\"\"\n  };\n\n  var saveTimer = 0;\n\n  function root(){\n    return document.getElementById(ROOT_ID);\n  }\n\n  function restore(){\n    try{\n      var value = JSON.parse(\n        localStorage.getItem(STORAGE_KEY) || \"{}\"\n      );\n\n      if (value && typeof value === \"object\"){\n        state.customTopic = String(value.customTopic || \"\");\n        state.learningGoal = String(value.learningGoal || \"\");\n      }\n    }catch(e){}\n  }\n\n  function save(){\n    try{\n      localStorage.setItem(\n        STORAGE_KEY,\n        JSON.stringify(state)\n      );\n    }catch(e){}\n\n    try{\n      window.dispatchEvent(\n        new CustomEvent(\"cctvAcademyMicroIntakeChange\",{\n          detail:{\n            customTopic:state.customTopic,\n            learningGoal:state.learningGoal\n          }\n        })\n      );\n    }catch(e){}\n  }\n\n  function scheduleSave(){\n    window.clearTimeout(saveTimer);\n\n    saveTimer = window.setTimeout(function(){\n      var el = root();\n      if (!el) return;\n\n      var custom = el.querySelector(\n        \"#cctv-micro-custom-topic\"\n      );\n\n      var goal = el.querySelector(\n        \"#cctv-micro-learning-goal\"\n      );\n\n      state.customTopic = custom\n        ? String(custom.value || \"\").trim()\n        : \"\";\n\n      state.learningGoal = goal\n        ? String(goal.value || \"\").trim()\n        : \"\";\n\n      save();\n    },140);\n  }\n\n  function showForRequestType(type){\n    var el = root();\n    if (!el) return;\n    var section = el.querySelector(\"#cctv-micro-intake\");\n    if (!section) return;\n    var isTech=type === \"technical-support\";\n    var isMicro=type === \"micro-learning\";\n    section.hidden=!(isTech || isMicro);\n    if(!isTech && !isMicro) return;\n    section.setAttribute(\"data-intake-mode\",type);\n    var titles={\n      nl:[\"Maak uw Micro-Learning sessie concreet\",\"Beschrijf uw technisch probleem\"],\n      fr:[\"Pr\u00e9cisez votre session de Micro-Learning\",\"D\u00e9crivez votre probl\u00e8me technique\"],\n      en:[\"Make your Micro-Learning session specific\",\"Describe your technical problem\"],\n      de:[\"Beschreiben Sie Ihre Micro-Learning-Einheit\",\"Beschreiben Sie Ihr technisches Problem\"]\n    };\n    var intros={\n      nl:[\"Beschrijf wat u na de sessie zelfstandig wilt kunnen uitvoeren.\",\"Beschrijf uw installatie, configuratie of storing. We zoeken samen een technische oplossing.\"],\n      fr:[\"Indiquez ce que vous souhaitez pouvoir r\u00e9aliser seul apr\u00e8s cette session.\",\"D\u00e9crivez votre installation, votre configuration ou votre panne. Nous chercherons ensemble une solution technique.\"],\n      en:[\"Describe what you want to be able to do independently after the session.\",\"Describe your installation, configuration or fault. We'll work together on a technical solution.\"],\n      de:[\"Beschreiben Sie, was Sie nach der Schulung selbstst\u00e4ndig umsetzen m\u00f6chten.\",\"Beschreiben Sie Ihre Installation, Konfiguration oder St\u00f6rung. Gemeinsam erarbeiten wir eine technische L\u00f6sung.\"]\n    };\n    var statuses={\n      nl:[\"Uw leerdoel wordt automatisch aan uw Micro-Learning-aanvraag toegevoegd.\",\"Uw technische probleem wordt automatisch aan uw aanvraag toegevoegd.\"],\n      fr:[\"Votre objectif est automatiquement ajout\u00e9 \u00e0 votre demande de Micro-Learning.\",\"Votre probl\u00e8me technique est automatiquement ajout\u00e9 \u00e0 votre demande.\"],\n      en:[\"Your learning goal is automatically added to your Micro-Learning request.\",\"Your technical problem is automatically added to your request.\"],\n      de:[\"Ihr Lernziel wird automatisch Ihrer Micro-Learning-Anfrage hinzugef\u00fcgt.\",\"Ihr technisches Problem wird automatisch Ihrer Anfrage hinzugef\u00fcgt.\"]\n    };\n    [\n      [\"#cctv-micro-intake-title\",titles],\n      [\".cctv-micro-intake__head p\",intros],\n      [\".cctv-micro-intake__status [data-i18n]\",statuses]\n    ].forEach(function(item){\n      var parent=section.querySelector(item[0]);\n      if(!parent) return;\n      [\"nl\",\"fr\",\"en\",\"de\"].forEach(function(l){\n        var span=parent.querySelector(\".cctv-lang-copy--\"+l);\n        if(span) span.textContent=item[1][l][isTech?1:0];\n      });\n    });\n    \/* Disabled invisible inputs cannot accidentally block browser validation. *\/\n    var own=section.querySelector(\"#cctv-micro-custom-topic\");\n    var goal=section.querySelector(\"#cctv-micro-learning-goal\");\n    if(own){\n      own.disabled=!isTech;\n      own.closest('.cctv-micro-intake__field').classList.toggle('cctv-v115-field-inactive',!isTech);\n    }\n    if(goal){\n      goal.disabled=!isMicro;\n      goal.closest('.cctv-micro-intake__field').classList.toggle('cctv-v115-field-inactive',!isMicro);\n    }\n  }\n\n  function init(){\n    var el = root();\n    if (!el) return;\n\n    restore();\n\n    var custom = el.querySelector(\"#cctv-micro-custom-topic\");\n    var goal = el.querySelector(\"#cctv-micro-learning-goal\");\n\n    if (custom){\n      custom.value = state.customTopic;\n      custom.addEventListener(\"input\",scheduleSave);\n      custom.addEventListener(\"change\",scheduleSave);\n    }\n\n    if (goal){\n      goal.value = state.learningGoal;\n      goal.addEventListener(\"input\",scheduleSave);\n      goal.addEventListener(\"change\",scheduleSave);\n    }\n\n    var requestType =\n      window.CCTVAcademyRequestType &&\n      typeof window.CCTVAcademyRequestType.get === \"function\"\n        ? window.CCTVAcademyRequestType.get()\n        : \"\";\n\n    showForRequestType(requestType);\n    save();\n  }\n\n  window.addEventListener(\n    \"cctvAcademyRequestTypeChange\",\n    function(event){\n      var type =\n        event && event.detail\n          ? String(event.detail.requestType || \"\")\n          : \"\";\n\n      showForRequestType(type);\n    }\n  );\n\n  window.CCTVAcademyMicroIntake = {\n    get:function(){\n      return {\n        customTopic:state.customTopic,\n        learningGoal:state.learningGoal\n      };\n    },\n\n    clear:function(){\n      state.customTopic = \"\";\n      state.learningGoal = \"\";\n\n      var el = root();\n\n      if (el){\n        var custom = el.querySelector(\n          \"#cctv-micro-custom-topic\"\n        );\n\n        var goal = el.querySelector(\n          \"#cctv-micro-learning-goal\"\n        );\n\n        if (custom) custom.value = \"\";\n        if (goal) goal.value = \"\";\n      }\n\n      save();\n    }\n  };\n\n  if (document.readyState === \"loading\"){\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      init,\n      {once:true}\n    );\n  }else{\n    init();\n  }\n})();\n<\/script>\n<script>\n\/* CCTV Academy v1.8 \u2014 One contact row per selected participant.\n   Personal e-mails live in volatile page state, not localStorage. *\/\n(function(){\n  \"use strict\";\n  var langText = {\n    nl:{title:\"Deelnemergegevens\",person:\"Deelnemer\",first:\"Voornaam\",last:\"Familienaam\",email:\"E-mailadres\",missing:\"Vul voor elke deelnemer minstens de voornaam in.\",bridge:\"De koppeling met het aanvraagformulier ontbreekt. Controleer de drie Forminator Hidden Fields.\",invalid:\"Controleer het e-mailadres van iedere deelnemer.\"},\n    fr:{title:\"Donn\u00e9es des participants\",person:\"Participant\",first:\"Pr\u00e9nom\",last:\"Nom de famille\",email:\"Adresse e-mail\",missing:\"Indiquez au moins le pr\u00e9nom de chaque participant.\",bridge:\"La liaison avec le formulaire est manquante. V\u00e9rifiez les trois champs masqu\u00e9s Forminator.\",invalid:\"V\u00e9rifiez l\u2019adresse e-mail de chaque participant.\"},\n    en:{title:\"Participant details\",person:\"Participant\",first:\"First name\",last:\"Last name\",email:\"E-mail address\",missing:\"Enter at least the first name of every participant.\",bridge:\"The form connection is missing. Check the three Forminator hidden fields.\",invalid:\"Check each participant\u2019s e-mail address.\"},\n    de:{title:\"Angaben zu den Teilnehmenden\",person:\"Person\",first:\"Vorname\",last:\"Nachname\",email:\"E-Mail-Adresse\",missing:\"Geben Sie f\u00fcr jede Person mindestens den Vornamen ein.\",bridge:\"Die Formularverbindung fehlt. Pr\u00fcfen Sie die drei versteckten Forminator-Felder.\",invalid:\"Pr\u00fcfen Sie die E-Mail-Adressen aller Teilnehmenden.\"}\n  };\n  var details = []; \/\/ Do not persist participant email addresses in the browser.\n  function language(){\n    var l = window.CCTVAcademyLanguage && window.CCTVAcademyLanguage.get && window.CCTVAcademyLanguage.get();\n    return langText[l] ? l : \"nl\";\n  }\n  function list(){\n    var obj = window.CCTVAcademyParticipants && window.CCTVAcademyParticipants.get && window.CCTVAcademyParticipants.get();\n    return obj || {count:0,names:[]};\n  }\n  function splitLegacyName(name){\n    var t = String(name || \"\").trim().split(\/\\s+\/).filter(Boolean);\n    return {first:t.shift() || \"\",last:t.join(\" \"),email:\"\"};\n  }\n  function ensure(current){\n    for(var i=0;i<current.count;i++){\n      if(!details[i]) details[i] = splitLegacyName(current.names[i]);\n    }\n  }\n  function updateHidden(){\n    if(window.CCTVAcademyForminatorBridge && window.CCTVAcademyForminatorBridge.sync){\n      window.CCTVAcademyForminatorBridge.sync();\n    }\n  }\n  function norm(t){\n    return String(t || \"\").toLowerCase().normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g,\"\").trim();\n  }\n  function info(col){\n    var label=col.querySelector(\".forminator-label\");\n    var desc=col.querySelector(\".forminator-description\");\n    var field=col.querySelector(\"input:not([type=hidden]),textarea,select\");\n    return {\n      label:norm(label && label.textContent),\n      all:norm([label && label.textContent,desc && desc.textContent,field && field.getAttribute(\"placeholder\")].join(\" \")),\n      field:field\n    };\n  }\n  function legacyParticipantIndex(col){\n    var v=info(col).all;\n    var m=v.match(\/(?:deelnemer|participant|teilnehmer|teilnehmende|personne|person)\\s*(\\d+)\/);\n    return m ? parseInt(m[1],10)-1 : -1;\n  }\n  function legacyParticipantKind(label){\n    if(\/(?:e-?mail|courriel)\/.test(label)) return \"email\";\n    if(\/(?:familienaam|achternaam|last name|surname|nom de famille|nachname)\/.test(label)) return \"last\";\n    if(\/(?:voornaam|first name|prenom|vorname)\/.test(label)) return \"first\";\n    return \"\";\n  }\n  function isPracticalField(col){\n    var t=info(col).label;\n    return \/^(?:aantal installaties per maand:?|number of installations per month:?|nombre d.installations par mois:?|anzahl installationen pro monat:?|date|datum|time|tijd|heure|uhrzeit|hours|minutes|am\\\/pm)$\/i.test(t);\n  }\n  function adaptOldFields(form,active){\n    var bridge = window.CCTVAcademyForminatorBridge;\n    var st = bridge && bridge.status ? bridge.status() : {};\n    var safe = !!(st.participantsFieldFound || st.requestFieldFound);\n    form.querySelectorAll(\".forminator-col\").forEach(function(col){\n      var index=legacyParticipantIndex(col), p=info(col), kind=legacyParticipantKind(p.label);\n      var old = index>=0 && !!kind;\n      col.classList.toggle(\"cctv-v18-legacy-participant\",old && safe);\n      col.classList.toggle(\"cctv-v18-practical\",isPracticalField(col) || col.getAttribute(\"data-cctv-form-group\")===\"planning\");\n      if(old && active && index<active.count && p.field){\n        var v=String((details[index] || {})[kind] || \"\");\n        if(p.field.value !== v){\n          p.field.value=v;\n          p.field.dispatchEvent(new Event(\"input\",{bubbles:true}));\n          p.field.dispatchEvent(new Event(\"change\",{bubbles:true}));\n        }\n      }else if(old && p.field && index>=active.count && p.field.value){\n        p.field.value=\"\";\n      }\n    });\n    return safe;\n  }\n  function makeField(i,key,copy){\n    var label=document.createElement(\"label\");\n    label.className=\"cctv-v18-field\";\n    var caption=document.createElement(\"span\");\n    caption.textContent=copy[key]+(key===\"first\"?\" *\":\"\");\n    label.appendChild(caption);\n    var input=document.createElement(\"input\");\n    input.type=key===\"email\"?\"email\":\"text\";\n    input.autocomplete=\"off\";\n    input.dataset.participantKey=key;\n    input.dataset.participantIndex=String(i);\n    input.required=(key===\"first\");\n    input.value=String(details[i][key] || \"\");\n    input.setAttribute(\"aria-label\",copy.person+\" \"+(i+1)+\" \u2014 \"+copy[key]);\n    input.addEventListener(\"input\",function(){\n      details[i][key]=input.value;\n      if(key===\"first\"||key===\"last\"){\n        var api=window.CCTVAcademyParticipants;\n        if(api && api.setName){\n          api.setName(i,[details[i].first,details[i].last].join(\" \").trim(),false);\n        }\n      }\n      updateHidden();\n    });\n    input.addEventListener(\"change\",function(){\n      if(key===\"first\"||key===\"last\"){\n        var api=window.CCTVAcademyParticipants;\n        if(api && api.setName){\n          api.setName(i,[details[i].first,details[i].last].join(\" \").trim(),true);\n        }\n      }\n      updateHidden();\n    });\n    label.appendChild(input);\n    return label;\n  }\n  function render(form,current){\n    if(!form || !current.ready) return;\n    var active=current.participants || list();\n    var isTraining=current.type!==\"technical-support\" && active.count>0;\n    ensure(active);\n    var ui=langText[language()];\n    var oldSafe=adaptOldFields(form,active);\n    var editor=form.querySelector(\"#cctv-v18-participants\");\n    if(!editor){\n      editor=document.createElement(\"div\");\n      editor.id=\"cctv-v18-participants\";\n      editor.className=\"cctv-v18-participants\";\n      form.appendChild(editor);\n    }\n    editor.hidden=!isTraining;\n    if(!isTraining) return;\n    var signature=language()+\"\/\"+active.count;\n    if(editor.dataset.layout===signature) return;\n    editor.dataset.layout=signature;\n    editor.replaceChildren();\n    var header=document.createElement(\"h3\");\n    header.className=\"cctv-v18-title\";\n    header.textContent=ui.title+\" (\"+active.count+\")\";\n    editor.appendChild(header);\n    for(var i=0;i<active.count;i++){\n      var row=document.createElement(\"div\");\n      row.className=\"cctv-v18-row\";\n      var number=document.createElement(\"strong\");\n      number.className=\"cctv-v18-number\";\n      number.textContent=ui.person+\" \"+(i+1);\n      row.appendChild(number);\n      [\"first\",\"last\",\"email\"].forEach(function(k){row.appendChild(makeField(i,k,ui));});\n      editor.appendChild(row);\n    }\n    var alert=document.createElement(\"p\");\n    alert.className=\"cctv-v18-error\";\n    alert.setAttribute(\"role\",\"alert\");\n    alert.hidden=true;\n    editor.appendChild(alert);\n    if(!oldSafe){\n      \/\/ Fail closed, rather than silently discarding participants.\n      editor.dataset.bridgeMissing=\"yes\";\n    }else{\n      editor.removeAttribute(\"data-bridge-missing\");\n    }\n    updateHidden();\n  }\n  function validate(form){\n    var editor=form.querySelector(\"#cctv-v18-participants\");\n    if(!editor || editor.hidden) return true;\n    var lang=langText[language()];\n    var alert=editor.querySelector(\".cctv-v18-error\");\n    var st=window.CCTVAcademyForminatorBridge && window.CCTVAcademyForminatorBridge.status && window.CCTVAcademyForminatorBridge.status();\n    var firstIssue=\"\";\n    if(!st || !(st.participantsFieldFound || st.requestFieldFound)) firstIssue=\"bridge\";\n    else if(details.slice(0,list().count).some(function(v){return !String(v.first||\"\").trim();})) firstIssue=\"missing\";\n    else if(Array.from(editor.querySelectorAll('input[type=\"email\"]')).some(function(i){return i.value && !i.checkValidity();})) firstIssue=\"invalid\";\n    if(firstIssue){\n      if(alert){alert.textContent=lang[firstIssue];alert.hidden=false;}\n      editor.scrollIntoView({block:\"center\",behavior:\"smooth\"});\n      var first=editor.querySelector('input:invalid') || editor.querySelector('input[value=\"\"]');\n      if(first) first.focus();\n      return false;\n    }\n    if(alert){alert.hidden=true;alert.textContent=\"\";}\n    updateHidden();\n    return true;\n  }\n  document.addEventListener(\"submit\",function(ev){\n    if(ev.target && ev.target.id===\"forminator-module-49521\" && !validate(ev.target)){\n      ev.preventDefault();ev.stopImmediatePropagation();\n    }\n  },true);\n  document.addEventListener(\"click\",function(ev){\n    var submit=ev.target.closest && ev.target.closest('#forminator-module-49521 .forminator-button-submit');\n    if(submit && !validate(submit.closest('#forminator-module-49521'))){\n      ev.preventDefault();ev.stopImmediatePropagation();\n    }\n  },true);\n  window.CCTVAcademyParticipantRows={render:render,getDetails:function(){return details.slice(0,list().count).map(function(v){return {first:v.first,last:v.last,email:v.email};});},validate:validate};\n})();\n<\/script>\n<script>\n(function(){\n  \"use strict\";\n\n  var ROOT_ID = \"cctv-academy-request\";\n  var FORM_ID = \"forminator-module-49521\";\n\n  var copy = {\n    nl:{\n      ready:\"Klaar voor contactgegevens\",\n      confirmWaiting:\"Bevestig eerst het aantal deelnemers. Daarna wordt het contactformulier opnieuw zichtbaar.\",\n      waiting:\"Nog \u00e9\u00e9n keuze nodig\",\n      normalMessage:\"Uw gekozen aanvraagtype en deelnemers worden automatisch meegestuurd. U kunt nu uw contact- en praktische gegevens invullen.\",\n      microWaiting:\"Kies minstens \u00e9\u00e9n Micro-Learning onderwerp of beschrijf uw eigen technische vraag. Daarna verschijnt het contactformulier automatisch.\",\n      microReady:\"Uw gekozen Micro-Learning onderwerpen, intake en deelnemers worden automatisch in de aanvraag meegestuurd.\",\n      carried:\"Reeds ingevuld vanuit uw keuze\",\n      contact:\"Contactgegevens\",\n      planning:\"Praktische organisatie\",\n      context:\"Aanvullende informatie\",\n      confirm:\"Bevestiging & privacy\",\n      ownPrefix:\"Eigen vraag\",\n      goalPrefix:\"Leerdoel\",\n      participantsPrefix:\"Deelnemers\"\n    },\n    fr:{\n      ready:\"Pr\u00eat pour vos coordonn\u00e9es\",\n      confirmWaiting:\"Confirmez d\u2019abord le nombre de participants. Le formulaire de contact r\u00e9appara\u00eetra ensuite.\",\n      waiting:\"Encore un choix n\u00e9cessaire\",\n      normalMessage:\"Le type de demande et les participants sont automatiquement repris. Vous pouvez maintenant compl\u00e9ter vos coordonn\u00e9es et informations pratiques.\",\n      microWaiting:\"Choisissez au moins un sujet Micro-Learning ou d\u00e9crivez votre propre question technique. Le formulaire de contact appara\u00eetra ensuite automatiquement.\",\n      microReady:\"Vos sujets Micro-Learning, votre intake et les participants sont automatiquement repris dans la demande.\",\n      carried:\"D\u00e9j\u00e0 repris depuis votre s\u00e9lection\",\n      contact:\"Coordonn\u00e9es\",\n      planning:\"Organisation pratique\",\n      context:\"Informations compl\u00e9mentaires\",\n      confirm:\"Confirmation & vie priv\u00e9e\",\n      ownPrefix:\"Votre question\",\n      goalPrefix:\"Objectif\",\n      participantsPrefix:\"Participants\"\n    },\n    en:{\n      ready:\"Ready for contact details\",\n      confirmWaiting:\"First confirm the number of participants. The contact form will then reappear.\",\n      waiting:\"One more choice needed\",\n      normalMessage:\"Your selected request type and participants are carried over automatically. You can now complete your contact and practical details.\",\n      microWaiting:\"Choose at least one Micro-Learning topic or describe your own technical question. The contact form will then appear automatically.\",\n      microReady:\"Your selected Micro-Learning topics, intake and participants are automatically carried into the request.\",\n      carried:\"Already filled from your selection\",\n      contact:\"Contact details\",\n      planning:\"Practical organisation\",\n      context:\"Additional information\",\n      confirm:\"Confirmation & privacy\",\n      ownPrefix:\"Your question\",\n      goalPrefix:\"Learning goal\",\n      participantsPrefix:\"Participants\"\n    },\n    de:{\n      ready:\"Bereit f\u00fcr Kontaktdaten\",\n      confirmWaiting:\"Best\u00e4tigen Sie zuerst die Teilnehmerzahl. Danach erscheint das Kontaktformular erneut.\",waiting:\"Noch eine Auswahl erforderlich\",\n      normalMessage:\"Ihr Anfragetyp und Ihre Teilnehmenden werden automatisch \u00fcbernommen. Erg\u00e4nzen Sie jetzt Ihre Kontakt- und Organisationsangaben.\",\n      microWaiting:\"W\u00e4hlen Sie mindestens ein Micro-Learning-Thema oder beschreiben Sie Ihre technische Frage. Danach wird das Kontaktformular angezeigt.\",\n      microReady:\"Ihre Micro-Learning-Themen, Lernziele und Teilnehmenden werden automatisch \u00fcbernommen.\",\n      carried:\"Bereits aus Ihrer Auswahl \u00fcbernommen\",contact:\"Kontaktdaten\",\n      planning:\"Praktische Organisation\",context:\"Weitere Informationen\",confirm:\"Best\u00e4tigung und Datenschutz\",\n      ownPrefix:\"Eigene Frage\",goalPrefix:\"Lernziel\",participantsPrefix:\"Teilnehmende\"\n    }\n  };\n\n  var typeLabels = {\n    nl:{\n      \"basis-cctv\":\"Basis CCTV\",\n      \"basis-ai\":\"Basis AI CCTV\",\n      \"advanced-ai\":\"Advanced AI CCTV\",\n      \"micro-learning\":\"CCTV Micro-Learning\",\n      \"technical-support\":\"Technische ondersteuning\"\n    },\n    fr:{\n      \"basis-cctv\":\"CCTV de base\",\n      \"basis-ai\":\"CCTV IA de base\",\n      \"advanced-ai\":\"CCTV IA avanc\u00e9e\",\n      \"micro-learning\":\"CCTV Micro-Learning\",\n      \"technical-support\":\"Assistance technique\"\n    },\n    en:{\n      \"basis-cctv\":\"CCTV Basics\",\n      \"basis-ai\":\"Basic AI CCTV\",\n      \"advanced-ai\":\"Advanced AI CCTV\",\n      \"micro-learning\":\"CCTV Micro-Learning\",\n      \"technical-support\":\"Technical support\"\n    },\n    de:{\n      \"basis-cctv\":\"CCTV-Grundlagen\", \"basis-ai\":\"KI-CCTV-Grundlagen\",\n      \"advanced-ai\":\"Advanced AI CCTV\", \"micro-learning\":\"CCTV Micro-Learning\",\n      \"technical-support\":\"Technischer Support\"\n    }\n  };\n\n  function root(){\n    return document.getElementById(ROOT_ID);\n  }\n\n  function lang(){\n    if (\n      window.CCTVAcademyLanguage &&\n      typeof window.CCTVAcademyLanguage.get === \"function\"\n    ){\n      var value = String(\n        window.CCTVAcademyLanguage.get() || \"nl\"\n      );\n\n      if (copy[value]) return value;\n    }\n\n    return \"nl\";\n  }\n\n  function type(){\n    if (\n      window.CCTVAcademyRequestType &&\n      typeof window.CCTVAcademyRequestType.get === \"function\"\n    ){\n      return String(\n        window.CCTVAcademyRequestType.get() || \"\"\n      );\n    }\n\n    return \"\";\n  }\n\n  function topics(){\n    if (\n      window.CCTVAcademyMicroLearningTopics &&\n      typeof window.CCTVAcademyMicroLearningTopics.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyMicroLearningTopics.get();\n\n      return Array.isArray(value)\n        ? value\n        : [];\n    }\n\n    return [];\n  }\n\n  function intake(){\n    if (\n      window.CCTVAcademyMicroIntake &&\n      typeof window.CCTVAcademyMicroIntake.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyMicroIntake.get();\n\n      return {\n        customTopic:String(\n          value &&\n          value.customTopic ||\n          \"\"\n        ).trim(),\n\n        learningGoal:String(\n          value &&\n          value.learningGoal ||\n          \"\"\n        ).trim()\n      };\n    }\n\n    return {\n      customTopic:\"\",\n      learningGoal:\"\"\n    };\n  }\n\n  function participants(){\n    if (\n      window.CCTVAcademyParticipants &&\n      typeof window.CCTVAcademyParticipants.get === \"function\"\n    ){\n      var value =\n        window.CCTVAcademyParticipants.get();\n\n      return {\n        type:String(\n          value &&\n          value.type ||\n          \"\"\n        ),\n\n        count:parseInt(\n          value &&\n          value.count,\n          10\n        ) || 0,\n\n        names:Array.isArray(\n          value &&\n          value.names\n        )\n          ? value.names.map(function(name){\n              return String(name || \"\").trim();\n            })\n          : [],\n        confirmed:value && value.confirmed === true\n      };\n    }\n\n    return {\n      type:\"\",\n      count:0,\n      names:[],\n      confirmed:false\n    };\n  }\n\n  function isParticipantType(currentType){\n    return (\n      currentType === \"basis-cctv\" ||\n      currentType === \"basis-ai\" ||\n      currentType === \"advanced-ai\" ||\n      currentType === \"micro-learning\"\n    );\n  }\n\n  function participantCountValid(currentType,data){\n    if (!isParticipantType(currentType)){\n      return true;\n    }\n\n    if (currentType === \"micro-learning\"){\n      return (\n        data.count >= 1 &&\n        data.count <= 5\n      );\n    }\n\n    return (\n      data.count >= 5 &&\n      data.count <= 10\n    );\n  }\n\n  function state(){\n    var currentType = type();\n    var selectedTopics = topics();\n    var currentIntake = intake();\n    var currentParticipants = participants();\n\n    var microHasContent =\n      selectedTopics.length > 0 ||\n      !!currentIntake.learningGoal;\n\n    var needsParticipantConfirmation =\n      isParticipantType(currentType) && !currentParticipants.confirmed;\n\n    var participantReady =\n      participantCountValid(\n        currentType,\n        currentParticipants\n      ) && !needsParticipantConfirmation;\n\n    return {\n      type:currentType,\n      topics:selectedTopics,\n      intake:currentIntake,\n      participants:currentParticipants,\n      needsParticipantConfirmation:needsParticipantConfirmation,\n\n      ready:\n        !!currentType &&\n        participantReady &&\n        (\n          currentType !== \"micro-learning\" ||\n          microHasContent\n        )\n    };\n  }\n\n  function setHidden(el,hidden){\n    if (!el) return;\n    el.hidden = !!hidden;\n  }\n\n  function renderReview(current){\n    var el = root();\n    if (!el) return;\n\n    var language = lang();\n    var ui = copy[language];\n\n    var requestEl =\n      el.querySelector(\n        \"#cctv-review-request\"\n      );\n\n    if (requestEl){\n      requestEl.textContent =\n        typeLabels[language][current.type] ||\n        \"\u2014\";\n    }\n\n    var status =\n      el.querySelector(\n        \"#cctv-review-status\"\n      );\n\n    if (status){\n      status.textContent =\n        current.ready\n          ? ui.ready\n          : current.needsParticipantConfirmation\n            ? ui.confirmWaiting\n            : ui.waiting;\n\n      status.classList.toggle(\n        \"is-waiting\",\n        !current.ready\n      );\n    }\n\n    var participantWrap =\n      el.querySelector(\n        \"#cctv-review-participants-wrap\"\n      );\n\n    var participantCount =\n      el.querySelector(\n        \"#cctv-review-participants-count\"\n      );\n\n    var participantNames =\n      el.querySelector(\n        \"#cctv-review-participants-names\"\n      );\n\n    var hasParticipants =\n      isParticipantType(\n        current.type\n      ) &&\n      current.participants.count > 0;\n\n    setHidden(\n      participantWrap,\n      !hasParticipants\n    );\n\n    if (\n      participantCount &&\n      hasParticipants\n    ){\n      participantCount.textContent =\n        String(\n          current.participants.count\n        );\n    }\n\n    if (participantNames){\n      participantNames.innerHTML = \"\";\n\n      if (hasParticipants){\n        for (\n          var p = 0;\n          p < current.participants.count;\n          p++\n        ){\n          var name =\n            String(\n              current.participants.names[p] ||\n              \"\"\n            ).trim();\n\n          if (!name) continue;\n\n          var participant =\n            document.createElement(\"span\");\n\n          participant.className =\n            \"cctv-selection-review__participant\";\n\n          participant.textContent =\n            (p + 1) +\n            \". \" +\n            name;\n\n          participantNames.appendChild(\n            participant\n          );\n        }\n      }\n    }\n\n    var topicWrap =\n      el.querySelector(\n        \"#cctv-review-topics-wrap\"\n      );\n\n    var topicList =\n      el.querySelector(\n        \"#cctv-review-topics\"\n      );\n\n    var isMicro =\n      current.type === \"micro-learning\";\n\n    setHidden(\n      topicWrap,\n      !isMicro\n    );\n\n    if (topicList){\n      topicList.innerHTML = \"\";\n\n      if (\n        isMicro &&\n        current.topics.length\n      ){\n        current.topics.forEach(function(topic){\n          var chip =\n            document.createElement(\"span\");\n\n          chip.className =\n            \"cctv-selection-review__chip\";\n\n          chip.textContent =\n            String(\n              topic.title || \"\"\n            );\n\n          topicList.appendChild(chip);\n        });\n      }else if (isMicro){\n        var empty =\n          document.createElement(\"span\");\n\n        empty.className =\n          \"cctv-selection-review__chip\";\n\n        empty.textContent = \"\u2014\";\n\n        topicList.appendChild(empty);\n      }\n    }\n\n    var ownWrap =\n      el.querySelector(\n        \"#cctv-review-own-wrap\"\n      );\n\n    var own =\n      el.querySelector(\n        \"#cctv-review-own\"\n      );\n\n    setHidden(\n      ownWrap,\n      !(\n        current.type === \"technical-support\" &&\n        current.intake.customTopic\n      )\n    );\n\n    if (own){\n      own.textContent =\n        current.intake.customTopic;\n    }\n\n    var goalWrap =\n      el.querySelector(\n        \"#cctv-review-goal-wrap\"\n      );\n\n    var goal =\n      el.querySelector(\n        \"#cctv-review-goal\"\n      );\n\n    setHidden(\n      goalWrap,\n      !(\n        isMicro &&\n        current.intake.learningGoal\n      )\n    );\n\n    if (goal){\n      goal.textContent =\n        current.intake.learningGoal;\n    }\n\n    var message =\n      el.querySelector(\n        \"#cctv-review-message\"\n      );\n\n    if (message){\n      message.textContent =\n        current.needsParticipantConfirmation\n          ? ui.confirmWaiting\n          : isMicro\n            ? (current.ready ? ui.microReady : ui.microWaiting)\n            : ui.normalMessage;\n    }\n  }\n\n  function updateExternalFormVisibility(current){\n    document.body.classList.toggle(\n      \"cctv-academy-request-ready\",\n      current.ready\n    );\n\n    var form =\n      document.getElementById(FORM_ID);\n\n    if (!form) return;\n\n    var widget =\n      form.closest(\n        \".elementor-widget-shortcode, .elementor-widget\"\n      );\n\n    if (widget){\n      widget.classList.toggle(\n        \"cctv-forminator-widget-hidden\",\n        !current.ready\n      );\n    }\n\n    form.hidden =\n      !current.ready;\n  }\n\n  function triggerFieldEvents(field){\n    try{\n      field.dispatchEvent(\n        new Event(\n          \"input\",\n          {bubbles:true}\n        )\n      );\n\n      field.dispatchEvent(\n        new Event(\n          \"change\",\n          {bubbles:true}\n        )\n      );\n    }catch(e){}\n  }\n\n  function normalizeText(value){\n    return String(value || \"\")\n      .toLowerCase()\n      .normalize(\"NFD\")\n      .replace(\n        \/[\\u0300-\\u036f]\/g,\n        \"\"\n      )\n      .replace(\/\\s+\/g,\" \")\n      .trim();\n  }\n\n  function containsAny(value,terms){\n    for (\n      var i = 0;\n      i < terms.length;\n      i++\n    ){\n      if (\n        value.indexOf(\n          terms[i]\n        ) !== -1\n      ){\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  function fieldLabel(col){\n    if (!col) return \"\";\n\n    var label =\n      col.querySelector(\n        \".forminator-label\"\n      );\n\n    if (label){\n      return normalizeText(\n        label.textContent\n      );\n    }\n\n    var field =\n      col.querySelector(\n        \"input, textarea, select\"\n      );\n\n    if (!field) return \"\";\n\n    return normalizeText(\n      field.getAttribute(\"name\") ||\n      field.getAttribute(\"id\") ||\n      \"\"\n    );\n  }\n\n  \/* Identify the real existing Forminator VAT column, regardless of the\n     current label language. No synthetic input and no extra submission field. *\/\n  function isVatField(label){\n    return \/\\b(?:btw(?:[- ]*(?:nummer|nr))?|vat(?:[- ]*(?:number|no|nr))?|tva|ust[. -]*(?:id|idnr|nr)|mwst[. -]*(?:nummer|nr)|num[e\u00e9]ro\\s+de\\s+tva)\\b\/i.test(normalizeText(label));\n  }\n  function vatColumn(form){\n    var columns=Array.prototype.slice.call(form.querySelectorAll('.forminator-col'));\n    return columns.find(function(col){\n      if(col.querySelector('[data-cctv-academy-bridge]'))return false;\n      var field=col.querySelector('input:not([type=\"hidden\"]),textarea,select');\n      if(!field)return false;\n      var labelEl=col.querySelector('.forminator-label');\n      var texts=[labelEl&&labelEl.textContent,\n                 col.getAttribute('data-name'),col.getAttribute('data-field-id'),\n                 field.name,field.id,field.getAttribute('placeholder'),\n                 field.getAttribute('aria-label')].filter(Boolean);\n      return texts.some(isVatField);\n    }) || null;\n  }\n  \/* Forminator sometimes places VAT inside a later grouped\/conditionally\n     displayed row. Merely setting CSS order leaves that original parent in\n     charge of visibility. Move its EXISTING column into a normal Forminator\n     row while keeping its input, field ID, name, and listeners intact. *\/\n  function promoteVatField(form){\n    var vat=vatColumn(form);\n    if(!vat)return false; \/* Configure the real VAT field in Forminator. *\/\n    var ownRow=vat.parentElement;\n    if(!ownRow || !ownRow.classList.contains('cctv-v112-vat-row')){\n      var target=form.querySelector('.cctv-v112-vat-row');\n      if(!target){\n        target=document.createElement('div');\n        target.className='forminator-row cctv-v112-vat-row';\n        var firstRow=form.querySelector('.forminator-row');\n        if(firstRow){firstRow.parentNode.insertBefore(target,firstRow);}\n        else{form.appendChild(target);}\n      }\n      target.appendChild(vat);\n    }\n    vat.classList.add('cctv-v112-vat-visible');\n    vat.classList.remove('cctv-v18-practical',\n                         'cctv-v111-course-hidden',\n                         'cctv-form-autofilled-hidden',\n                         'cctv-form-bridge-field');\n    vat.setAttribute('data-cctv-form-group','contact');\n    vat.style.setProperty('order','10','important');\n    return true;\n  }\n  function isStandardCourse(type){\n    return [\"basis-cctv\",\"basis-ai\",\"advanced-ai\"].indexOf(type)!==-1;\n  }\n  \/* v1.13: The old range-based logic hid ANY field between \"Type aanvraag\"\n     and \"Vragen \/ opmerkingen\". Forminator can put contact fields inside\n     that range, so the entire contact section could disappear. Match only\n     explicitly named additional question fields, never whole DOM ranges. *\/\n  function isCoreContactColumn(col){\n    \/* Legacy participant 1 e-mail has the same heading as contact e-mail,\n       but its description\/placeholder identifies the participant. *\/\n    var hint=[\n      col.querySelector('.forminator-description')?.textContent || '',\n      col.querySelector('input,textarea')?.getAttribute('placeholder') || '',\n      col.querySelector('input,textarea')?.getAttribute('aria-label') || ''\n    ].join(' ').toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g,'');\n    if(\/(?:deelnemer|participant|teilnehmende?|personne)\\s*\\d+\/.test(hint))return false;\n    var label=fieldLabel(col);\n    if(isVatField(label))return true;\n    return \/^(?:bedrijfsnaam|nom de l.entreprise|raison sociale|company name|firmenname|unternehmensname|e-?mailadres facturatie|facturatie[- ]?e-?mail|adresse e-?mail de facturation|billing e-?mail|rechnungs[- ]?e-?mail|voornaam contactpersoon|pr[e\u00e9]nom.*contact|contact(?: person)? first name|vorname kontakt|familienaam contactpersoon|achternaam contactpersoon|nom de famille.*contact|contact(?: person)? last name|nachname kontakt|e-?mailadres(?: contactpersoon)?|e-?mail address|adresse e-?mail|telefonnummer|telefoonnummer|num[e\u00e9]ro de t[e\u00e9]l[e\u00e9]phone|phone number|gemeente|ville|city|stadt|ort|postcode|code postal|postal code|zip code|postleitzahl)(?:\\s*\\*)?$\/i.test(label);\n  }\n  \/* Keep each EXISTING contact control (never clone it) in a visible Forminator\n     row. Otherwise promoting VAT alone leaves all sibling contact fields\n     behind if their original group is conditionally hidden. Preserve native\n     inputs, field names\/IDs, required flags, values and attached listeners. *\/\n  function promoteContactFields(form){\n    var target=form.querySelector('.cctv-v112-vat-row');\n    if(!target){\n      target=document.createElement('div');\n      target.className='forminator-row cctv-v112-vat-row';\n      var firstRow=form.querySelector('.forminator-row');\n      if(firstRow)firstRow.parentNode.insertBefore(target,firstRow);\n      else form.appendChild(target);\n    }\n    Array.prototype.slice.call(form.querySelectorAll('.forminator-col')).forEach(function(col){\n      if(!isCoreContactColumn(col))return;\n      if(col.parentElement!==target)target.appendChild(col);\n      col.classList.add('cctv-v113-contact-preserved');\n      col.classList.remove('cctv-v18-practical','cctv-v111-course-hidden','cctv-form-autofilled-hidden');\n    });\n  }\n  function isAdditionalQuestion(col){\n    if(col.querySelector('[data-cctv-academy-bridge]'))return false;\n    if(isCoreContactColumn(col))return false;\n    var label=fieldLabel(col);\n    return \/^(?:type aanvraag|aanvraagtype|type de demande|request type|anfragetyp|onderwerp|sujet|subject|thema|select|selecteer|s[e\u00e9]lection|auswahl|wat wilt u na deze opleiding|what would you like.*(?:course|training|session)|que souhaitez-vous.*(?:formation|session)|was m[o\u00f6]chten sie.*(?:schulung|sitzung)|ervaringsniveau|experience level|niveau d.experience|erfahrungsniveau|functie|function|fonction|funktion|ervaring met cctv|experience with cctv|erfahrung mit cctv|ervaring met het cctv merk dahua|experience with.*dahua|exp[e\u00e9]rience.*dahua|welke relevante opleidingen|relevant training|formations pertinentes|relevante schulungen|met welke cctv.merken|which cctv brands|quelles marques.*cctv|mit welchen cctv.marken)\/i.test(label);\n  }\n  function additionalColumns(cols){\n    return cols.filter(isAdditionalQuestion);\n  }\n  \/* v1.15: redundant Forminator questions are already answered in the\n     Academy selector or are intentionally excluded. Never hide contact,\n     participant rows, preferences, privacy, notes or submit fields. *\/\n  function isRetiredQuestion(col){\n    if(isCoreContactColumn(col) || col.querySelector('[data-cctv-academy-bridge]')) return false;\n    var label=fieldLabel(col);\n    return \/^(?:type aanvraag|aanvraagtype|type de demande|request type|anfragetyp|anfrageart|select|onderwerp|subject|sujet|thema|wat wilt u na deze opleiding of sessie kunnen\\??|what would you like to do after (?:this )?(?:course|training|session)\\??|que souhaitez-vous.*(?:formation|session).*|was mochten sie.*(?:schulung|sitzung).*|ervaringsniveau|experience level|niveau d.experience|erfahrungsniveau)\\s*:?$\/i.test(label);\n  }\n  function applyCourseInformation(form,cols,current){\n    cols.forEach(function(col){\n      var remove=isRetiredQuestion(col);\n      col.classList.remove('cctv-v111-course-hidden');\n      col.classList.toggle('cctv-v115-removed-question',remove);\n      if(!remove) return;\n      col.querySelectorAll('input,textarea,select').forEach(function(field){\n        \/* Retired controls are not submitted; Forminator builder must also\n           disable their server-side required conditions (see staging guide). *\/\n        field.disabled=true;\n        field.removeAttribute('required');\n        field.setAttribute('aria-hidden','true');\n      });\n    });\n  }\n\n  function classifyField(label,col){\n    if (\n      col.querySelector(\n        '[data-cctv-academy-bridge]'\n      )\n    ){\n      return \"bridge\";\n    }\n\n    if(isVatField(label))return \"contact\";\n\n    if (\n      col.querySelector(\n        \".forminator-button-submit, button[type='submit'], input[type='submit']\"\n      )\n    ){\n      return \"submit\";\n    }\n\n    if (\n      containsAny(label,[\n        \"voornaam\",\"first name\",\"prenom\",\n        \"achternaam\",\"last name\",\"surname\",\n        \"naam\",\"name\",\"nom\",\n        \"bedrijf\",\"company\",\"societe\",\n        \"organisation\",\"organisatie\",\n        \"email\",\"e-mail\",\"courriel\",\n        \"telefoon\",\"telephone\",\"phone\",\n        \"gsm\",\"mobile\",\n        \"adres\",\"address\",\"adresse\",\n        \"postcode\",\"postal\",\n        \"gemeente\",\"city\",\"ville\"\n      ])\n    ){\n      return \"contact\";\n    }\n\n    if (\n      containsAny(label,[\n        \"deelnemer\",\"participant\",\n        \"aantal\",\"nombre\",\n        \"datum\",\"date\",\n        \"voorkeur\",\"preference\",\"preferred\",\n        \"locatie\",\"location\",\"lieu\",\n        \"moment\",\"tijd\",\"time\",\"heure\"\n      ])\n    ){\n      return \"planning\";\n    }\n\n    if (\n      containsAny(label,[\n        \"privacy\",\"gdpr\",\"rgpd\",\n        \"consent\",\"toestemming\",\n        \"voorwaarden\",\"conditions\",\n        \"akkoord\",\"agree\"\n      ])\n    ){\n      return \"confirm\";\n    }\n\n    return \"context\";\n  }\n\n  function addSectionTitle(\n    form,\n    section,\n    title,\n    order\n  ){\n    var id =\n      \"cctv-form-section-\" +\n      section;\n\n    var existing =\n      form.querySelector(\n        \"#\" + id\n      );\n\n    if (!existing){\n      existing =\n        document.createElement(\"div\");\n\n      existing.id = id;\n\n      existing.className =\n        \"cctv-form-section-title\";\n\n      existing.setAttribute(\n        \"data-form-section\",\n        section\n      );\n\n      form.insertBefore(\n        existing,\n        form.firstChild\n      );\n    }\n\n    existing.textContent =\n      title;\n\n    existing.style.setProperty(\n      \"order\",\n      String(order),\n      \"important\"\n    );\n\n    return existing;\n  }\n\n  function renderForminatorContext(\n    form,\n    current\n  ){\n    var language = lang();\n    var ui = copy[language];\n\n    var block =\n      form.querySelector(\n        \"#cctv-forminator-context\"\n      );\n\n    if (!block){\n      block =\n        document.createElement(\"div\");\n\n      block.id =\n        \"cctv-forminator-context\";\n\n      block.className =\n        \"cctv-forminator-context\";\n\n      form.insertBefore(\n        block,\n        form.firstChild\n      );\n    }\n\n    block.innerHTML = \"\";\n\n    var heading =\n      document.createElement(\"strong\");\n\n    heading.textContent =\n      typeLabels[language][current.type] ||\n      \"\";\n\n    block.appendChild(heading);\n\n    var details = [];\n\n    if (\n      isParticipantType(\n        current.type\n      )\n    ){\n      details.push(\n        ui.participantsPrefix +\n        \": \" +\n        current.participants.count\n      );\n    }\n\n    if (\n      current.type === \"micro-learning\"\n    ){\n      if (\n        current.intake.customTopic\n      ){\n        details.push(\n          ui.ownPrefix +\n          \": \" +\n          current.intake.customTopic\n        );\n      }\n\n      if (\n        current.intake.learningGoal\n      ){\n        details.push(\n          ui.goalPrefix +\n          \": \" +\n          current.intake.learningGoal\n        );\n      }\n    }\n\n    var description =\n      document.createElement(\"p\");\n\n    description.textContent =\n      details.join(\" \u00b7 \");\n\n    block.appendChild(\n      description\n    );\n\n    if (\n      isParticipantType(\n        current.type\n      )\n    ){\n      var participantList =\n        document.createElement(\"div\");\n\n      participantList.className =\n        \"cctv-forminator-context__topics\";\n\n      for (\n        var i = 0;\n        i < current.participants.count;\n        i++\n      ){\n        var name =\n          String(\n            current.participants.names[i] ||\n            \"\"\n          ).trim();\n\n        if (!name) continue;\n\n        var person =\n          document.createElement(\"span\");\n\n        person.className =\n          \"cctv-forminator-context__topic\";\n\n        person.textContent =\n          (i + 1) +\n          \". \" +\n          name;\n\n        participantList.appendChild(\n          person\n        );\n      }\n\n      if (\n        participantList.children.length\n      ){\n        block.appendChild(\n          participantList\n        );\n      }\n    }\n\n    if (\n      current.type === \"micro-learning\" &&\n      current.topics.length\n    ){\n      var list =\n        document.createElement(\"div\");\n\n      list.className =\n        \"cctv-forminator-context__topics\";\n\n      current.topics.forEach(function(topic){\n        var chip =\n          document.createElement(\"span\");\n\n        chip.className =\n          \"cctv-forminator-context__topic\";\n\n        chip.textContent =\n          String(\n            topic.title || \"\"\n          );\n\n        list.appendChild(chip);\n      });\n\n      block.appendChild(list);\n    }\n  }\n\n  function participantNameIndex(label){\n    var patterns = [\n      \/(?:naam\\s+)?deelnemer\\s*(\\d+)\/,\n      \/participant\\s*(\\d+)(?:\\s+name)?\/,\n      \/nom\\s+(?:du\\s+)?participant\\s*(\\d+)\/\n    ];\n\n    for (\n      var i = 0;\n      i < patterns.length;\n      i++\n    ){\n      var match =\n        label.match(\n          patterns[i]\n        );\n\n      if (match){\n        return parseInt(\n          match[1],\n          10\n        ) - 1;\n      }\n    }\n\n    return -1;\n  }\n\n  function setSmartFieldValue(\n    field,\n    value\n  ){\n    value =\n      String(\n        value == null\n          ? \"\"\n          : value\n      );\n\n    if (\n      field.tagName === \"SELECT\"\n    ){\n      var options =\n        Array.prototype.slice.call(\n          field.options || []\n        );\n\n      var wanted =\n        normalizeText(value);\n\n      var match =\n        options.find(function(option){\n          return (\n            normalizeText(\n              option.value\n            ) === wanted ||\n            normalizeText(\n              option.textContent\n            ) === wanted\n          );\n        });\n\n      if (!match){\n        return false;\n      }\n\n      field.value =\n        match.value;\n\n      triggerFieldEvents(field);\n      return true;\n    }\n\n    if (\n      field.value !== value\n    ){\n      field.value = value;\n      triggerFieldEvents(field);\n    }\n\n    return true;\n  }\n\n  function autoFillVisibleFields(\n    form,\n    current\n  ){\n    var language = lang();\n\n    form.querySelectorAll(\n      \".forminator-col\"\n    ).forEach(function(col){\n      if (col.classList.contains('cctv-v115-removed-question')) return;\n      col.classList.remove(\n        \"cctv-form-autofilled-hidden\"\n      );\n\n      var label =\n        fieldLabel(col);\n\n      var field =\n        col.querySelector(\n          \"input:not([type='hidden']):not([type='checkbox']):not([type='radio']), textarea, select\"\n        );\n\n      if (!field) return;\n\n      var mode = \"\";\n      var value = \"\";\n\n      if (\n        containsAny(label,[\n          \"aanvraagtype\",\n          \"type aanvraag\",\n          \"type de demande\",\n          \"request type\"\n        ])\n      ){\n        mode = \"request\";\n\n        value =\n          typeLabels[language][\n            current.type\n          ] || \"\";\n      }else if (\n        containsAny(label,[\n          \"aantal deelnemers\",\n          \"nombre de participants\",\n          \"number of participants\",\n          \"participant count\"\n        ])\n      ){\n        mode =\n          \"participant-count\";\n\n        value =\n          current.participants.count;\n      }else{\n        var nameIndex =\n          participantNameIndex(\n            label\n          );\n\n        if (\n          nameIndex >= 0 &&\n          nameIndex <\n            current.participants.count\n        ){\n          mode =\n            \"participant-name\";\n\n          value =\n            current.participants.names[\n              nameIndex\n            ] || \"\";\n        }else if (\n          containsAny(label,[\n            \"namen deelnemers\",\n            \"namen van de deelnemers\",\n            \"noms des participants\",\n            \"participant names\"\n          ])\n        ){\n          mode =\n            \"participant-list\";\n\n          value =\n            current.participants.names\n              .slice(\n                0,\n                current.participants.count\n              )\n              .map(function(name,index){\n                return (\n                  (index + 1) +\n                  \". \" +\n                  (\n                    String(\n                      name || \"\"\n                    ).trim() ||\n                    \"\u2014\"\n                  )\n                );\n              })\n              .join(\"\\n\");\n        }else if (\n          containsAny(label,[\n            \"micro-learning onderwerpen\",\n            \"micro learning onderwerpen\",\n            \"sujets micro-learning\",\n            \"sujets micro learning\",\n            \"micro-learning topics\",\n            \"micro learning topics\",\n            \"geselecteerde onderwerpen\",\n            \"selected topics\"\n          ])\n        ){\n          mode = \"topics\";\n\n          value =\n            current.topics\n              .map(function(topic){\n                return String(\n                  topic.title || \"\"\n                );\n              })\n              .join(\", \");\n        }else if (\n          current.type === \"micro-learning\" &&\n          containsAny(label,[\n            \"eigen onderwerp\",\n            \"technisch probleem\",\n            \"propre sujet\",\n            \"probleme technique\",\n            \"own topic\",\n            \"technical problem\"\n          ])\n        ){\n          mode = \"own\";\n\n          value =\n            current.intake.customTopic;\n        }else if (\n          current.type === \"micro-learning\" &&\n          containsAny(label,[\n            \"leerdoel\",\n            \"objectif pratique\",\n            \"objectif\",\n            \"learning goal\"\n          ])\n        ){\n          mode = \"goal\";\n\n          value =\n            current.intake.learningGoal;\n        }\n      }\n\n      if (!mode) return;\n\n      var success =\n        setSmartFieldValue(\n          field,\n          value\n        );\n\n      if (!success) return;\n\n      field.setAttribute(\n        \"data-cctv-autofill\",\n        mode\n      );\n\n      \/*\n       * This information has already been entered in the Academy\n       * interface, so do not ask it again inside Forminator.\n       *\/\n      col.classList.add(\n        \"cctv-form-autofilled-hidden\"\n      );\n    });\n  }\n\n  function arrangeForminator(\n    form,\n    current\n  ){\n    if (\n      !form ||\n      !current.ready\n    ){\n      return;\n    }\n\n    var language = lang();\n    var ui = copy[language];\n\n    form.classList.remove(\n      \"cctv-form-mode--basis-cctv\",\n      \"cctv-form-mode--basis-ai\",\n      \"cctv-form-mode--advanced-ai\",\n      \"cctv-form-mode--micro-learning\",\n      \"cctv-form-mode--technical-support\"\n    );\n\n    form.classList.add(\n      \"cctv-form-mode--\" +\n      current.type\n    );\n\n    renderForminatorContext(\n      form,\n      current\n    );\n\n    \/* Promote VAT BEFORE indexing original conditional question groups. *\/\n    promoteVatField(form);\n\n    var cols =\n      Array.prototype.slice.call(\n        form.querySelectorAll(\n          \".forminator-col\"\n        )\n      );\n\n    var counts = {\n      contact:0,\n      planning:0,\n      context:0,\n      confirm:0\n    };\n\n    cols.forEach(function(\n      col,\n      index\n    ){\n      var label =\n        fieldLabel(col);\n\n      var group =\n        classifyField(\n          label,\n          col\n        );\n\n      col.classList.toggle(\n        \"cctv-form-bridge-field\",\n        group === \"bridge\"\n      );\n      var essentialContact=isCoreContactColumn(col);\n      col.classList.toggle('cctv-v113-contact-preserved',essentialContact);\n      if(essentialContact){\n        col.classList.remove('cctv-v111-course-hidden','cctv-v18-practical','cctv-form-autofilled-hidden');\n      }\n\n      if (\n        Object.prototype\n          .hasOwnProperty.call(\n            counts,\n            group\n          )\n      ){\n        counts[group] += 1;\n      }\n\n      var order =\n        250 + index;\n\n      if (\n        group === \"contact\"\n      ){\n        var billing=containsAny(label,[\"facturatie\",\"facturation\",\"billing\",\"invoice\",\"rechnung\",\"faktur\"]);\n        if(isVatField(label))order=10;                 \/* VAT left, first row *\/\n        else if(containsAny(label,[\"bedrijf\",\"company\",\"societe\",\"organisation\",\"organisatie\",\"entreprise\",\"firma\"]))order=11;\n        else if(billing)order=20;\n        else if(containsAny(label,[\"voornaam\",\"first name\",\"prenom\",\"vorname\"]))order=21;\n        else if(containsAny(label,[\"familienaam\",\"achternaam\",\"last name\",\"surname\",\"nom\",\"nachname\"]))order=30;\n        else if(containsAny(label,[\"emailadres\",\"e-mailadres\",\"email\",\"e-mail\",\"courriel\"]))order=31;\n        else if(containsAny(label,[\"telefoon\",\"telephone\",\"phone\",\"gsm\",\"mobile\",\"telefon\"]))order=40;\n        else if(containsAny(label,[\"gemeente\",\"city\",\"ville\",\"stadt\"]))order=41;\n        else if(containsAny(label,[\"postcode\",\"postal\",\"zip\",\"postleitzahl\"]))order=50;\n        else order=60+index;\n      }else if (\n        group === \"planning\"\n      ){\n        order =\n          current.type ===\n            \"technical-support\"\n              ? 210 + index\n              : 110 + index;\n      }else if (\n        group === \"context\"\n      ){\n        order =\n          current.type ===\n            \"technical-support\"\n              ? 110 + index\n              : 210 + index;\n      }else if (\n        group === \"confirm\"\n      ){\n        order =\n          310 + index;\n      }else if (\n        group === \"bridge\"\n      ){\n        order =\n          900 + index;\n      }else if (\n        group === \"submit\"\n      ){\n        order =\n          1000 + index;\n      }\n\n      col.style.setProperty(\n        \"order\",\n        String(order),\n        \"important\"\n      );\n\n      col.setAttribute(\n        \"data-cctv-form-group\",\n        group\n      );\n    });\n\n    var contactHeader =\n      addSectionTitle(\n        form,\n        \"contact\",\n        ui.contact,\n        0\n      );\n\n    contactHeader.hidden =\n      counts.contact === 0;\n\n    var planningOrder =\n      current.type ===\n        \"technical-support\"\n          ? 200\n          : 100;\n\n    var contextOrder =\n      current.type ===\n        \"technical-support\"\n          ? 100\n          : 200;\n\n    var planningHeader =\n      addSectionTitle(\n        form,\n        \"planning\",\n        ui.planning,\n        planningOrder\n      );\n\n    planningHeader.hidden = true; \/\/ v1.8: practical organisation is deliberately removed.\n\n    var contextHeader =\n      addSectionTitle(\n        form,\n        \"context\",\n        ui.context,\n        contextOrder\n      );\n\n    contextHeader.hidden = true; \/* Retired 'Aanvullende informatie' section title. *\/\n\n    var confirmHeader =\n      addSectionTitle(\n        form,\n        \"confirm\",\n        ui.confirm,\n        300\n      );\n\n    confirmHeader.hidden =\n      counts.confirm === 0;\n\n    autoFillVisibleFields(\n      form,\n      current\n    );\n\n    applyCourseInformation(form,cols,current);\n    promoteVatField(form); \/* guard against a late visibility pass *\/\n\n    if(window.CCTVAcademyParticipantRows){\n      window.CCTVAcademyParticipantRows.render(form,current);\n    }\n\n    if (\n      window.CCTVAcademyForminatorBridge &&\n      typeof window.CCTVAcademyForminatorBridge.sync === \"function\"\n    ){\n      window.CCTVAcademyForminatorBridge.sync();\n    }\n  }\n\n  function updateFollowup(current){\n    var el = root();\n    if (!el) return;\n\n    var followup =\n      el.querySelector(\n        \"#cctv-request-followup\"\n      );\n\n    var show =\n      !!current.type;\n\n    el.classList.toggle(\n      \"has-request-type\",\n      show\n    );\n\n    if (current.type){\n      el.setAttribute(\n        \"data-request-type\",\n        current.type\n      );\n    }else{\n      el.removeAttribute(\n        \"data-request-type\"\n      );\n    }\n\n    if (followup){\n      followup.hidden =\n        !show;\n\n      followup.setAttribute(\n        \"aria-hidden\",\n        show\n          ? \"false\"\n          : \"true\"\n      );\n    }\n  }\n\n  function update(scroll){\n    var current = state();\n\n    updateFollowup(current);\n    renderReview(current);\n    updateExternalFormVisibility(\n      current\n    );\n\n    var form =\n      document.getElementById(\n        FORM_ID\n      );\n\n    if (\n      form &&\n      current.ready\n    ){\n      arrangeForminator(\n        form,\n        current\n      );\n    }\n\n    if (\n      scroll &&\n      current.type\n    ){\n      var el = root();\n\n      var target =\n        current.type === \"micro-learning\"\n          ? el.querySelector(\n              \"#cctv-micro-topics\"\n            )\n          : isParticipantType(\n              current.type\n            )\n            ? el.querySelector(\n                \"#cctv-participants\"\n              )\n            : el.querySelector(\n                \"#cctv-selection-review\"\n              );\n\n      if (target){\n        window.setTimeout(\n          function(){\n            target.scrollIntoView({\n              behavior:\"smooth\",\n              block:\"start\"\n            });\n          },\n          80\n        );\n      }\n    }\n  }\n\n  function init(){\n    update(false);\n\n    [\n      \"cctvAcademyRequestTypeChange\",\n      \"cctvAcademyMicroTopicsChange\",\n      \"cctvAcademyMicroIntakeChange\",\n      \"cctvAcademyParticipantsChange\",\n      \"cctvAcademyLanguageChange\"\n    ].forEach(function(name){\n      window.addEventListener(\n        name,\n        function(){\n          update(\n            name ===\n              \"cctvAcademyRequestTypeChange\"\n          );\n        }\n      );\n    });\n\n    if (\n      typeof MutationObserver !==\n      \"undefined\"\n    ){\n      var timer = 0;\n\n      var observer =\n        new MutationObserver(function(){\n          window.clearTimeout(\n            timer\n          );\n\n          timer =\n            window.setTimeout(\n              function(){\n                var current =\n                  state();\n\n                updateExternalFormVisibility(\n                  current\n                );\n\n                var form =\n                  document.getElementById(\n                    FORM_ID\n                  );\n\n                if (\n                  form &&\n                  current.ready\n                ){\n                  arrangeForminator(\n                    form,\n                    current\n                  );\n                }\n              },\n              80\n            );\n        });\n\n      observer.observe(\n        document.body,\n        {\n          childList:true,\n          subtree:true\n        }\n      );\n    }\n  }\n\n  window.CCTVAcademySmartForm = {\n    refresh:function(){\n      update(false);\n    },\n\n    getState:function(){\n      return state();\n    }\n  };\n\n  if (\n    document.readyState === \"loading\"\n  ){\n    document.addEventListener(\n      \"DOMContentLoaded\",\n      init,\n      {once:true}\n    );\n  }else{\n    init();\n  }\n})();\n<\/script><\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9dfab75 e-flex e-con-boxed e-con e-parent\" data-id=\"9dfab75\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4482c71 elementor-widget elementor-widget-shortcode\" data-id=\"4482c71\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div class=\"forminator-ui forminator-custom-form forminator-custom-form-49521 forminator-design--default  forminator_ajax\" data-forminator-render=\"0\" data-form=\"forminator-module-49521\" data-uid=\"6aeca6cd208cc\"><br\/><\/div><form\n\t\t\t\tid=\"forminator-module-49521\"\n\t\t\t\tclass=\"forminator-ui forminator-custom-form forminator-custom-form-49521 forminator-design--default  forminator_ajax\"\n\t\t\t\tmethod=\"post\"\n\t\t\t\tdata-forminator-render=\"0\"\n\t\t\t\tdata-form-id=\"49521\"\n\t\t\t\t data-color-option=\"theme\" data-design=\"default\" data-grid=\"open\" style=\"display: none;\"\n\t\t\t\tdata-uid=\"6aeca6cd208cc\"\n\t\t\t><div role=\"alert\" aria-live=\"polite\" class=\"forminator-response-message forminator-error\" aria-hidden=\"true\"><\/div><div class=\"forminator-row\"><div id=\"name-1\" class=\"forminator-field-name forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-name-1_6aeca6cd208cc\" id=\"forminator-field-name-1_6aeca6cd208cc-label\" class=\"forminator-label\">Bedrijfsnaam <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"name-1\" value=\"\" placeholder=\"\" id=\"forminator-field-name-1_6aeca6cd208cc\" class=\"forminator-input forminator-name--field\" aria-required=\"true\" autocomplete=\"name\" \/><\/div><\/div><div id=\"text-1\" class=\"forminator-field-text forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-text-1_6aeca6cd208cc\" id=\"forminator-field-text-1_6aeca6cd208cc-label\" class=\"forminator-label\">BTW-nummer <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"text-1\" value=\"\" placeholder=\"BE0123.456.789\" id=\"forminator-field-text-1_6aeca6cd208cc\" class=\"forminator-input forminator-name--field\" data-required=\"1\" \/><\/div><\/div><\/div><div class=\"forminator-row forminator-hidden\"><div id=\"hidden-1\" class=\"forminator-field-hidden  forminator-col-12 \"><input type=\"hidden\" id=\"hidden-1_6aeca6cd208cc\" name=\"hidden-1\" value=\"CCTV_REQUEST_TYPE\" \/><\/div><\/div><div class=\"forminator-row forminator-hidden\"><div id=\"hidden-3\" class=\"forminator-field-hidden  forminator-col-12 \"><input type=\"hidden\" id=\"hidden-3_6aeca6cd208cc\" name=\"hidden-3\" value=\"CCTV_PARTICIPANTS\" \/><\/div><\/div><div class=\"forminator-row forminator-hidden\"><div id=\"hidden-2\" class=\"forminator-field-hidden  forminator-col-12 \"><input type=\"hidden\" id=\"hidden-2_6aeca6cd208cc\" name=\"hidden-2\" value=\"CCTV_MICRO_TOPICS\" \/><\/div><\/div><div class=\"forminator-row\"><div id=\"name-2\" class=\"forminator-field-name forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-name-2_6aeca6cd208cc\" id=\"forminator-field-name-2_6aeca6cd208cc-label\" class=\"forminator-label\">Voornaam contactpersoon <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"name-2\" value=\"\" placeholder=\"\" id=\"forminator-field-name-2_6aeca6cd208cc\" class=\"forminator-input forminator-name--field\" aria-required=\"true\" autocomplete=\"name\" \/><\/div><\/div><div id=\"name-3\" class=\"forminator-field-name forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-name-3_6aeca6cd208cc\" id=\"forminator-field-name-3_6aeca6cd208cc-label\" class=\"forminator-label\">Familienaam contactpersoon <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"name-3\" value=\"\" placeholder=\"\" id=\"forminator-field-name-3_6aeca6cd208cc\" class=\"forminator-input forminator-name--field\" aria-required=\"true\" autocomplete=\"name\" \/><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"textarea-4\" class=\"forminator-field-textarea forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-4_6aeca6cd208cc\" id=\"forminator-field-textarea-4_6aeca6cd208cc-label\" class=\"forminator-label\">Functie<\/label><textarea name=\"textarea-4\" placeholder=\"Installateur, technieker, projectleider, ...\" id=\"forminator-field-textarea-4_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><div id=\"email-1\" class=\"forminator-field-email forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-email-1_6aeca6cd208cc\" id=\"forminator-field-email-1_6aeca6cd208cc-label\" class=\"forminator-label\">E-mailadres contactpersoon <span class=\"forminator-required\">*<\/span><\/label><input type=\"email\" name=\"email-1\" value=\"\" placeholder=\"\" id=\"forminator-field-email-1_6aeca6cd208cc\" class=\"forminator-input forminator-email--field\" data-required=\"1\" aria-required=\"true\" autocomplete=\"email\" \/><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"email-2\" class=\"forminator-field-email forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-email-2_6aeca6cd208cc\" id=\"forminator-field-email-2_6aeca6cd208cc-label\" class=\"forminator-label\">E-mailadres facturatie<\/label><input type=\"email\" name=\"email-2\" value=\"\" placeholder=\"\" id=\"forminator-field-email-2_6aeca6cd208cc\" class=\"forminator-input forminator-email--field\" data-required=\"\" aria-required=\"false\" autocomplete=\"email\" \/><\/div><\/div><div id=\"textarea-6\" class=\"forminator-field-textarea forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-6_6aeca6cd208cc\" id=\"forminator-field-textarea-6_6aeca6cd208cc-label\" class=\"forminator-label\">Interne referentie \/ PO-nummer<\/label><textarea name=\"textarea-6\" placeholder=\"\" id=\"forminator-field-textarea-6_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"phone-1\" class=\"forminator-field-phone forminator-col forminator-col-12 \"><div class=\"forminator-field\"><label for=\"forminator-field-phone-1_6aeca6cd208cc\" id=\"forminator-field-phone-1_6aeca6cd208cc-label\" class=\"forminator-label\">Telefoonnummer <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"phone-1\" value=\"\" placeholder=\"\" id=\"forminator-field-phone-1_6aeca6cd208cc\" class=\"forminator-input forminator-field--phone\" data-required=\"1\" aria-required=\"true\" autocomplete=\"off\" \/><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"address-1\" class=\"forminator-field-address forminator-col forminator-col-12 \"><div class=\"forminator-row\" data-multiple=\"false\"><div id=\"address-1-city\" class=\"forminator-col forminator-col-12\"><div class=\"forminator-field\"><label for=\"forminator-field-address-1-city_6aeca6cd208cc\" id=\"forminator-field-address-1-city_6aeca6cd208cc-label\" class=\"forminator-label\">Gemeente <span class=\"forminator-required\">*<\/span><\/label><input type=\"text\" name=\"address-1-city\" placeholder=\"\" id=\"forminator-field-address-1-city_6aeca6cd208cc\" class=\"forminator-input\" data-required=\"1\" aria-required=\"true\" autocomplete=\"address-level2\" value=\"\" \/><\/div><\/div><\/div><div class=\"forminator-row\" data-multiple=\"false\"><div id=\"address-1-zip\" class=\"forminator-col forminator-col-12\"><div class=\"forminator-field\"><label for=\"forminator-field-address-1-zip_6aeca6cd208cc\" id=\"forminator-field-address-1-zip_6aeca6cd208cc-label\" class=\"forminator-label\">Postcode<\/label><input type=\"text\" name=\"address-1-zip\" placeholder=\"\" id=\"forminator-field-address-1-zip_6aeca6cd208cc\" class=\"forminator-input\" autocomplete=\"postal-code\" value=\"\" \/><\/div><\/div><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"radio-3\" class=\"forminator-field-radio forminator-col forminator-col-12 \"><div role=\"radiogroup\" class=\"forminator-field\" aria-labelledby=\"forminator-radiogroup-radio-3-6aeca6cd208cc-label\" aria-describedby=\"forminator-radiogroup-radio-3-6aeca6cd208cc-description\"><span id=\"forminator-radiogroup-radio-3-6aeca6cd208cc-label\" class=\"forminator-label\">Ervaring met CCTV<\/span><span id=\"forminator-radiogroup-radio-3-6aeca6cd208cc-description\" class=\"forminator-description\">Deelnemer 1<\/span><label id=\"forminator-field-radio-3-label-1\" for=\"forminator-field-radio-3-1-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Starter\"><input type=\"radio\" name=\"radio-3\" value=\"two\" id=\"forminator-field-radio-3-1-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-3-label-1\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-3-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Starter<\/span><\/label><label id=\"forminator-field-radio-3-label-2\" for=\"forminator-field-radio-3-2-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Minder-dan-1-jaar\"><input type=\"radio\" name=\"radio-3\" value=\"Minder-dan-1-jaar\" id=\"forminator-field-radio-3-2-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-3-label-2\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-3-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Minder-dan-1-jaar<\/span><\/label><label id=\"forminator-field-radio-3-label-3\" for=\"forminator-field-radio-3-3-6aeca6cd208cc\" class=\"forminator-radio\" title=\"1-tot-3-jaar\"><input type=\"radio\" name=\"radio-3\" value=\"one\" id=\"forminator-field-radio-3-3-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-3-label-3\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-3-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">1-tot-3-jaar<\/span><\/label><label id=\"forminator-field-radio-3-label-4\" for=\"forminator-field-radio-3-4-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Meer-dan-3-jaar\"><input type=\"radio\" name=\"radio-3\" value=\"Meer-dan-3-jaar\" id=\"forminator-field-radio-3-4-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-3-label-4\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-3-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Meer-dan-3-jaar<\/span><\/label><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"radio-4\" class=\"forminator-field-radio forminator-col forminator-col-12 \"><div role=\"radiogroup\" class=\"forminator-field\" aria-labelledby=\"forminator-radiogroup-radio-4-6aeca6cd208cc-label\" aria-describedby=\"forminator-radiogroup-radio-4-6aeca6cd208cc-description\"><span id=\"forminator-radiogroup-radio-4-6aeca6cd208cc-label\" class=\"forminator-label\">Ervaring met het CCTV merk Dahua<\/span><span id=\"forminator-radiogroup-radio-4-6aeca6cd208cc-description\" class=\"forminator-description\">Maak een keuze<\/span><label id=\"forminator-field-radio-4-label-1\" for=\"forminator-field-radio-4-1-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Geen-ervaring\"><input type=\"radio\" name=\"radio-4\" value=\"one\" id=\"forminator-field-radio-4-1-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-4-label-1\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-4-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Geen-ervaring<\/span><\/label><label id=\"forminator-field-radio-4-label-2\" for=\"forminator-field-radio-4-2-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Basis\"><input type=\"radio\" name=\"radio-4\" value=\"two\" id=\"forminator-field-radio-4-2-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-4-label-2\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-4-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Basis<\/span><\/label><label id=\"forminator-field-radio-4-label-3\" for=\"forminator-field-radio-4-3-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Regelmatig\"><input type=\"radio\" name=\"radio-4\" value=\"Regelmatig\" id=\"forminator-field-radio-4-3-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-4-label-3\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-4-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Regelmatig<\/span><\/label><label id=\"forminator-field-radio-4-label-4\" for=\"forminator-field-radio-4-4-6aeca6cd208cc\" class=\"forminator-radio\" title=\"Ervarene\"><input type=\"radio\" name=\"radio-4\" value=\"Ervarene\" id=\"forminator-field-radio-4-4-6aeca6cd208cc\" aria-labelledby=\"forminator-field-radio-4-label-4\" data-calculation=\"0\"   data-hidden-behavior=\"zero\" aria-describedby=\"forminator-field-radio-4-6aeca6cd208cc-description\"\/><span class=\"forminator-radio-bullet\" aria-hidden=\"true\"><\/span><span class=\"forminator-radio-label\">Ervarene<\/span><\/label><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"textarea-1\" class=\"forminator-field-textarea forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-1_6aeca6cd208cc\" id=\"forminator-field-textarea-1_6aeca6cd208cc-label\" class=\"forminator-label\">Wat wilt u na deze opleiding of sessie kunnen ?<\/label><textarea name=\"textarea-1\" placeholder=\"Bijvoorbeeld: zelfstandig een NVR configureren, betrouwbare perimeterdetectie instellen, een ANPR-project opleveren, beelden sneller terugzoeken, storingen oplossen...\" id=\"forminator-field-textarea-1_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><div id=\"textarea-5\" class=\"forminator-field-textarea forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-5_6aeca6cd208cc\" id=\"forminator-field-textarea-5_6aeca6cd208cc-label\" class=\"forminator-label\">Vragen, verwachtingen of opmerkingen<\/label><textarea name=\"textarea-5\" placeholder=\"Geef hier bijkomende informatie over uw project, gewenste onderwerpen, technische problemen, verwachtingen of praktische vragen.\" id=\"forminator-field-textarea-5_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"textarea-2\" class=\"forminator-field-textarea forminator-col forminator-col-12 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-2_6aeca6cd208cc\" id=\"forminator-field-textarea-2_6aeca6cd208cc-label\" class=\"forminator-label\">Met welke CCTV-merken werkt u ?<\/label><textarea name=\"textarea-2\" placeholder=\"\" id=\"forminator-field-textarea-2_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><\/div><div class=\"forminator-row\"><div id=\"textarea-3\" class=\"forminator-field-textarea forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-field-textarea-3_6aeca6cd208cc\" id=\"forminator-field-textarea-3_6aeca6cd208cc-label\" class=\"forminator-label\">Welke relevante opleidingen heeft u al gevolgd?<\/label><textarea name=\"textarea-3\" placeholder=\"Bijvoorbeeld Basis CCTV, Basis AI CCTV, fabrikant-training...\" id=\"forminator-field-textarea-3_6aeca6cd208cc\" class=\"forminator-textarea\" style=\"--forminator-textarea-min-height:140px;\" ><\/textarea><\/div><\/div><div id=\"select-4\" class=\"forminator-field-select forminator-col forminator-col-6 \"><div class=\"forminator-field\"><label for=\"forminator-form-49521__field--select-4_6aeca6cd208cc\" id=\"forminator-form-49521__field--select-4_6aeca6cd208cc-label\" class=\"forminator-label\">Hoe heeft u CCTV Academy gevonden ?<\/label><select  id=\"forminator-form-49521__field--select-4_6aeca6cd208cc\" class=\"forminator-select--field forminator-select2 forminator-select2-multiple\" data-required=\"\" name=\"select-4\" data-default-value=\"\" data-hidden-behavior=\"zero\" data-placeholder=\"Maak een keuze\" data-search=\"false\" data-search-placeholder=\"Maak een keuze\" data-checkbox=\"false\" data-allow-clear=\"false\" aria-labelledby=\"forminator-form-49521__field--select-4_6aeca6cd208cc-label\"><option value=\"\"  >Maak een keuze<\/option><option value=\"one\"  data-calculation=\"0\">RAS-Security<\/option><option value=\"two\"  data-calculation=\"0\">Google<\/option><option value=\"Social-Media\"  data-calculation=\"0\">Social-Media<\/option><option value=\"Collega-kennis\"  data-calculation=\"0\">Collega-kennis<\/option><option value=\"Reeds-klant\"  data-calculation=\"0\">Reeds-klant<\/option><option value=\"Andere\"  data-calculation=\"0\">Andere<\/option><\/select><\/div><\/div><\/div><input type=\"hidden\" name=\"referer_url\" value=\"\" \/><div class=\"forminator-row forminator-row-last\"><div class=\"forminator-col\"><div class=\"forminator-field\"><button class=\"forminator-button forminator-button-submit\">Submit<\/button><\/div><\/div><\/div><input type=\"hidden\" id=\"forminator_nonce\" name=\"forminator_nonce\" value=\"2cd1d50314\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/nl\/wp-json\/wp\/v2\/pages\/49009\" \/><input type=\"hidden\" name=\"form_id\" value=\"49521\"><input type=\"hidden\" name=\"page_id\" value=\"49009\"><input type=\"hidden\" name=\"form_type\" value=\"default\"><input type=\"hidden\" name=\"current_url\" value=\"https:\/\/cctvacademy.be\/nl\/inschrijven\/\"><input type=\"hidden\" name=\"render_id\" value=\"0\"><input type=\"hidden\" name=\"action\" value=\"forminator_submit_form_custom-forms\"><\/form><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6266cfb e-flex e-con-boxed e-con e-parent\" data-id=\"6266cfb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09aa7f9 elementor-widget elementor-widget-spacer\" data-id=\"09aa7f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-00b49a6 e-flex e-con-boxed e-con e-parent\" data-id=\"00b49a6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-95ee32f elementor-widget elementor-widget-spacer\" data-id=\"95ee32f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>CCTV Academy \u00b7 Opleidingsaanvraag \u00b7 pagina v1.19 \u00b7 STAGING \u2302 HomeAccueilHomeStartseite Taal \u00b7 Langue \u00b7 Language NL FR EN DE CCTV Academy \u00b7 Voor professionele installateursCCTV Academy \u00b7 Pour les installateurs professionnelsCCTV Academy \u00b7 For professional installersCCTV Academy \u00b7 F\u00fcr professionelle Errichter Word zekerder in CCTV. Kies de opleiding die u verder brengt.Ma\u00eetrisez mieux le [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"zakra_page_container_layout":"customizer","zakra_page_sidebar_layout":"customizer","zakra_remove_content_margin":false,"zakra_sidebar":"customizer","zakra_transparent_header":"customizer","zakra_logo":0,"zakra_main_header_style":"default","zakra_menu_item_color":"","zakra_menu_item_hover_color":"","zakra_menu_item_active_color":"","zakra_menu_active_style":"","zakra_page_header":true,"_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"class_list":["post-49009","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>inschrijven - RAS\/AIS CCTV Academy<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cctvacademy.be\/nl\/inschrijven\/\" \/>\n<meta property=\"og:locale\" content=\"nl_BE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"inschrijven - RAS\/AIS CCTV Academy\" \/>\n<meta property=\"og:description\" content=\"CCTV Academy \u00b7 Opleidingsaanvraag \u00b7 pagina v1.19 \u00b7 STAGING \u2302 HomeAccueilHomeStartseite Taal \u00b7 Langue \u00b7 Language NL FR EN DE CCTV Academy \u00b7 Voor professionele installateursCCTV Academy \u00b7 Pour les installateurs professionnelsCCTV Academy \u00b7 For professional installersCCTV Academy \u00b7 F\u00fcr professionelle Errichter Word zekerder in CCTV. Kies de opleiding die u verder brengt.Ma\u00eetrisez mieux le [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cctvacademy.be\/nl\/inschrijven\/\" \/>\n<meta property=\"og:site_name\" content=\"RAS\/AIS CCTV Academy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61576769152561\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-04T20:12:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/\",\"url\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/\",\"name\":\"inschrijven - RAS\\\/AIS CCTV Academy\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/cctvacademy.be\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/rechts.png\",\"datePublished\":\"2026-08-25T11:07:07+00:00\",\"dateModified\":\"2026-10-04T20:12:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/#breadcrumb\"},\"inLanguage\":\"nl-BE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-BE\",\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/#primaryimage\",\"url\":\"https:\\\/\\\/cctvacademy.be\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/rechts.png\",\"contentUrl\":\"https:\\\/\\\/cctvacademy.be\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/rechts.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/inschrijven\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/cctvacademy.be\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"inschrijven\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/cctvacademy.be\\\/#website\",\"url\":\"https:\\\/\\\/cctvacademy.be\\\/\",\"name\":\"CCTV Academy\",\"description\":\"CCTV Opleidingen en CCTV Micro Learning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/cctvacademy.be\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-BE\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"inschrijven - RAS\/AIS CCTV Academy","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cctvacademy.be\/nl\/inschrijven\/","og_locale":"nl_BE","og_type":"article","og_title":"inschrijven - RAS\/AIS CCTV Academy","og_description":"CCTV Academy \u00b7 Opleidingsaanvraag \u00b7 pagina v1.19 \u00b7 STAGING \u2302 HomeAccueilHomeStartseite Taal \u00b7 Langue \u00b7 Language NL FR EN DE CCTV Academy \u00b7 Voor professionele installateursCCTV Academy \u00b7 Pour les installateurs professionnelsCCTV Academy \u00b7 For professional installersCCTV Academy \u00b7 F\u00fcr professionelle Errichter Word zekerder in CCTV. Kies de opleiding die u verder brengt.Ma\u00eetrisez mieux le [&hellip;]","og_url":"https:\/\/cctvacademy.be\/nl\/inschrijven\/","og_site_name":"RAS\/AIS CCTV Academy","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=61576769152561","article_modified_time":"2026-10-04T20:12:39+00:00","og_image":[{"url":"https:\/\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/cctvacademy.be\/inschrijven\/","url":"https:\/\/cctvacademy.be\/inschrijven\/","name":"inschrijven - RAS\/AIS CCTV Academy","isPartOf":{"@id":"https:\/\/cctvacademy.be\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cctvacademy.be\/inschrijven\/#primaryimage"},"image":{"@id":"https:\/\/cctvacademy.be\/inschrijven\/#primaryimage"},"thumbnailUrl":"https:\/\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png","datePublished":"2026-08-25T11:07:07+00:00","dateModified":"2026-10-04T20:12:39+00:00","breadcrumb":{"@id":"https:\/\/cctvacademy.be\/inschrijven\/#breadcrumb"},"inLanguage":"nl-BE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cctvacademy.be\/inschrijven\/"]}]},{"@type":"ImageObject","inLanguage":"nl-BE","@id":"https:\/\/cctvacademy.be\/inschrijven\/#primaryimage","url":"https:\/\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png","contentUrl":"https:\/\/cctvacademy.be\/wp-content\/uploads\/2026\/09\/rechts.png"},{"@type":"BreadcrumbList","@id":"https:\/\/cctvacademy.be\/inschrijven\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cctvacademy.be\/"},{"@type":"ListItem","position":2,"name":"inschrijven"}]},{"@type":"WebSite","@id":"https:\/\/cctvacademy.be\/#website","url":"https:\/\/cctvacademy.be\/","name":"CCTV Academy","description":"CCTV Opleidingen en CCTV Micro Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cctvacademy.be\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-BE"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/pages\/49009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/comments?post=49009"}],"version-history":[{"count":0,"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/pages\/49009\/revisions"}],"wp:attachment":[{"href":"https:\/\/cctvacademy.be\/nl\/wp-json\/wp\/v2\/media?parent=49009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}