{"id":6066,"date":"2026-07-08T02:04:21","date_gmt":"2026-07-08T00:04:21","guid":{"rendered":"https:\/\/app.taekwon-book.com\/?page_id=6066"},"modified":"2026-09-19T00:53:27","modified_gmt":"2026-09-18T22:53:27","slug":"10-commands","status":"publish","type":"page","link":"https:\/\/app.taekwon-book.com\/en\/white-belt-2\/10-commands\/","title":{"rendered":"Did you know"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6066\" class=\"elementor elementor-6066 elementor-6065\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-20bd2920 e-con-full e-flex e-con e-parent\" data-id=\"20bd2920\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1eec0e3b bouton-audio-lien elementor-widget elementor-widget-button\" data-id=\"1eec0e3b\" data-element_type=\"widget\" data-e-type=\"widget\" data-audio=\"https:\/\/taekwon-book.com\/wp-content\/themes\/hello-elementor-child\/app\/sons\/general\/son_click.mp3\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/app.taekwon-book.com\/en\/white-belt-2\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-arrow-left\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-559778a5 btn_reset_star elementor-widget elementor-widget-button\" data-id=\"559778a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-audio=\"https:\/\/taekwon-book.com\/wp-content\/themes\/hello-elementor-child\/app\/sons\/general\/son_click.mp3\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">RESET<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b220e12 e-flex e-con-boxed e-con e-parent\" data-id=\"4b220e12\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-35dbba2f e-con-full e-flex e-con e-child\" data-id=\"35dbba2f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-63525df6 elementor-widget elementor-widget-heading\" data-id=\"63525df6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Did you know<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffdd8f5 elementor-absolute star_page elementor-widget elementor-widget-image\" data-id=\"ffdd8f5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;absolute&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"35\" height=\"33\" src=\"https:\/\/app.taekwon-book.com\/wp-content\/uploads\/2026\/06\/etoile_ecran_off.svg\" class=\"attachment-large size-large wp-image-4320\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c86f972 e-con-full e-flex e-con e-child\" data-id=\"c86f972\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5fa17a6 elementor-widget elementor-widget-shortcode\" data-id=\"5fa17a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">        <div class=\"lst-container\" data-post-id=\"6049\">\n            <div class=\"lst-image\">\n                                    <img decoding=\"async\" src=\"https:\/\/app.taekwon-book.com\/wp-content\/uploads\/2026\/07\/an_grades-1024x724.jpg\" alt=\"Anecdote\" \/>\n                            <\/div>\n\n            <div class=\"lst-content\">\n                \n<p class=\"wp-block-paragraph\">Chon-ji poss\u00e8de 19 mouvements car c&#8217;est le nombre de grades en Taekwon-Do (10 kup et 9 dan)<\/p>\n            <\/div>\n\n            <div class=\"lst-buttons\">\n                <a href=\"#bloc_question_fin\" class=\"lst-vote-btn bouton-click\" data-vote=\"unknown\">Je ne savais pas<\/a>\n                <a href=\"#bloc_question_fin\" class=\"lst-vote-btn bouton-click\" data-vote=\"known\">Je le savais d\u00e9j\u00e0<\/a>\n            <\/div>\n\n            <div class=\"lst-feedback\" style=\"display:none;\">\n                <p>Merci pour ta r\u00e9ponse !<\/p>\n                <button class=\"lst-next\">Anecdote suivante<\/button>\n            <\/div>\n        <\/div>\n        <\/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-1a9b60b6 e-con-full e-flex e-con e-parent\" data-id=\"1a9b60b6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;position&quot;:&quot;absolute&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-443f48a elementor-widget elementor-widget-html\" data-id=\"443f48a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"tkd-progress-bar\">\r\n    <p class=\"progression_text\">Progression<\/p>\r\n  <div id=\"tkd-progress-bar-inner\"><\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12f8a59 bloc_case e-flex e-con-boxed e-con e-parent\" data-id=\"12f8a59\" data-element_type=\"container\" data-e-type=\"container\" id=\"bloc_question_fin\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8013250 elementor-widget elementor-widget-html\" data-id=\"8013250\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"confetti-wrapper\">\r\n  \r\n<\/div>\r\n\r\n\r\n  \/* position:fixed + top:0\/left:0 explicites, z-index tr\u00e8s haut : le\r\n     calque reste cal\u00e9 sur le vrai \u00e9cran visible et toujours au-dessus de\r\n     tout le reste de la page (carte de fin d'exercice comprise), quel que\r\n     soit l'endroit o\u00f9 ce widget HTML est plac\u00e9 dans la mise en page. *\/\r\n  #confetti-wrapper {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100vh;\r\n    overflow: hidden;\r\n    pointer-events: none;\r\n    z-index: 999999;\r\n    background: transparent;\r\n  }\r\n\r\n  #confettiCanvas {\r\n    display: block;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: transparent;\r\n  }\r\n\r\n\r\n\r\n(function () {\r\n  \/\/ =========================================================================\r\n  \/\/ CONFETTI \u2014 reprend fid\u00e8lement le moteur de particules fourni comme\r\n  \/\/ r\u00e9f\u00e9rence (\"c'est cet effet que je veux\") : explosion en forme de\r\n  \/\/ com\u00e8tes (t\u00eate \u00e9toil\u00e9e + tra\u00een\u00e9e dessin\u00e9e directement, dont la longueur\r\n  \/\/ d\u00e9pend de la vitesse COURANTE de la particule \u00e0 chaque image -&gt; elle\r\n  \/\/ s'amenuise naturellement quand la particule ralentit, sans aucun\r\n  \/\/ bricolage de canvas), suivies d'\u00e9toiles simples scintillantes.\r\n  \/\/\r\n  \/\/ Diff\u00e9rences par rapport au fichier de r\u00e9f\u00e9rence (qui \u00e9tait une d\u00e9mo\r\n  \/\/ \"cliquez pour rejouer\") :\r\n  \/\/  - Le canvas est cal\u00e9 en plein \u00e9cran (position fixed) et surveille la\r\n  \/\/    section .taekwon_page_complete comme le reste du site : l'effet se\r\n  \/\/    d\u00e9clenche automatiquement \u00e0 la fin d'un exercice, pas au clic.\r\n  \/\/  - La pluie d'\u00e9toiles est maintenant ILLIMIT\u00c9E : au lieu d'un seul lot\r\n  \/\/    fini de particules, de nouveaux petits lots sont g\u00e9n\u00e9r\u00e9s en continu\r\n  \/\/    (confettiRain rappel\u00e9e \u00e0 intervalle r\u00e9gulier) tant que l'\u00e9cran de\r\n  \/\/    fin d'exercice reste affich\u00e9, et s'arr\u00eatent d\u00e8s qu'il se referme.\r\n  \/\/  - Plus de d\u00e9pendance externe (canvas-confetti) : ce moteur est\r\n  \/\/    autonome, ce qui r\u00e8gle aussi au passage tous les probl\u00e8mes qu'on\r\n  \/\/    avait avec les formes fig\u00e9es\/la rotation impossible par particule\r\n  \/\/    de cette librairie -- ici chaque com\u00e8te est simplement tourn\u00e9e\r\n  \/\/    (ctx.rotate) selon sa propre direction de vol \u00e0 chaque image.\r\n\r\n  var wrapper = document.getElementById('confetti-wrapper');\r\n  var canvas = document.getElementById('confettiCanvas');\r\n  var ctx = canvas.getContext('2d');\r\n\r\n  \/\/ Palette reprise telle quelle du fichier de r\u00e9f\u00e9rence (turquoise \/\r\n  \/\/ jaune \/ corail \/ orange).\r\n  var COLORS = ['#3FC7C1', '#FFCE45', '#F2726B', '#FFA94D'];\r\n\r\n  var W, H, DPR;\r\n  function resize() {\r\n    DPR = Math.min(window.devicePixelRatio || 1, 2);\r\n    W = wrapper.clientWidth || window.innerWidth;\r\n    H = wrapper.clientHeight || window.innerHeight;\r\n    canvas.width = W * DPR;\r\n    canvas.height = H * DPR;\r\n    ctx.setTransform(DPR, 0, 0, DPR, 0, 0);\r\n  }\r\n  window.addEventListener('resize', resize);\r\n  resize();\r\n\r\n  var MAX_PARTICLES = 500; \/\/ garde-fou : jamais un nombre illimit\u00e9 de\r\n                            \/\/ particules \u00e0 l'\u00e9cran, m\u00eame si la pluie\r\n                            \/\/ tourne tr\u00e8s longtemps.\r\n  var particles = [];\r\n  var rand = function (a, b) { return a + Math.random() * (b - a); };\r\n  var pick = function (arr) { return arr[(Math.random() * arr.length) | 0]; };\r\n\r\n  \/\/ Une particule = une \"com\u00e8te\" : une petite \u00e9toile \u00e0 4 branches en t\u00eate,\r\n  \/\/ suivie d'une tra\u00een\u00e9e qui s'amenuise. La tra\u00een\u00e9e est dessin\u00e9e en\r\n  \/\/ fonction de la vitesse courante -&gt; elle r\u00e9tr\u00e9cit naturellement quand\r\n  \/\/ la particule ralentit, exactement comme demand\u00e9 (\"les \u00e9toiles ont\r\n  \/\/ parfois des tra\u00een\u00e9es au d\u00e9but quand elles acc\u00e9l\u00e8rent, ensuite elles\r\n  \/\/ n'en ont plus\"). `delay` retarde le \"vrai\" d\u00e9part de la particule\r\n  \/\/ (utilis\u00e9 par la pluie pour faire appara\u00eetre les \u00e9toiles de fa\u00e7on\r\n  \/\/ \u00e9chelonn\u00e9e plut\u00f4t que toutes d'un coup).\r\n  function spawnParticle(x, y, opts) {\r\n    if (particles.length &gt;= MAX_PARTICLES) particles.shift(); \/\/ \u00e9vite tout emballement\r\n    opts = opts || {};\r\n    var angle = opts.angle !== undefined ? opts.angle : rand(0, Math.PI * 2);\r\n    var speed = opts.speed !== undefined ? opts.speed : rand(340, 780);\r\n    var isComet = Math.random() &lt; 0.72; \/\/ certaines restent de simples \u00e9toiles\r\n\r\n    particles.push({\r\n      x: x, y: y,\r\n      vx: Math.cos(angle) * speed,\r\n      vy: Math.sin(angle) * speed,\r\n      size: opts.size !== undefined ? opts.size : rand(9, 18),\r\n      color: pick(COLORS),\r\n      isComet: isComet,\r\n      age: 0,\r\n      delay: opts.delay || 0,\r\n      \/\/ dur\u00e9e avant de commencer \u00e0 s&#039;estomper, puis dur\u00e9e du fondu\r\n      holdTime: opts.holdTime !== undefined ? opts.holdTime : rand(0.45, 0.9),\r\n      fadeTime: opts.fadeTime !== undefined ? opts.fadeTime : rand(0.7, 1.3),\r\n      \/\/ rotation propre de l&#039;\u00e9toile (ind\u00e9pendante de la trajectoire)\r\n      spin: rand(-4, 4),\r\n      rot: rand(0, Math.PI * 2),\r\n      \/\/ les \u00e9toiles &quot;r\u00e9siduelles&quot; scintillent au lieu de juste dispara\u00eetre\r\n      twinkle: !isComet ? rand(3, 7) : (opts.twinkle || 0),\r\n      gravity: opts.gravity !== undefined ? opts.gravity : 260,\r\n      alpha: 1,\r\n      dead: false\r\n    });\r\n  }\r\n\r\n  function confettiBurst(x, y, count) {\r\n    count = count || 90;\r\n    for (var i = 0; i &lt; count; i++) spawnParticle(x, y);\r\n  }\r\n\r\n  \/\/ Pluie d&#039;\u00e9toiles qui tombent du haut de l&#039;\u00e9cran et s&#039;\u00e9vanouissent en\r\n  \/\/ cours de chute. `originX` centre la zone de chute (facultatif, sinon\r\n  \/\/ toute la largeur).\r\n  function confettiRain(originX, count, spread) {\r\n    count = count || 26;\r\n    var cx = originX === undefined ? W \/ 2 : originX;\r\n    var half = (spread === undefined ? W * 0.85 : spread) \/ 2;\r\n    for (var i = 0; i &lt; count; i++) {\r\n      var x = cx + rand(-half, half);\r\n      var y = rand(-70, -10); \/\/ part juste au-dessus du cadre visible\r\n      spawnParticle(x, y, {\r\n        angle: Math.PI \/ 2 + rand(-0.15, 0.15), \/\/ vers le bas, l\u00e9ger d\u00e9rapage\r\n        speed: rand(50, 130),                    \/\/ vitesse initiale faible...\r\n        gravity: 220,                            \/\/ ...qui s&#039;acc\u00e9l\u00e8re en tombant\r\n        size: rand(7, 14),\r\n        delay: rand(0, 1.3),                     \/\/ apparition \u00e9chelonn\u00e9e\r\n        holdTime: rand(0.8, 1.5),\r\n        fadeTime: rand(0.5, 0.9),\r\n        twinkle: rand(4, 8)\r\n      });\r\n    }\r\n  }\r\n\r\n  \/\/ Vide instantan\u00e9ment toutes les particules \u00e0 l&#039;\u00e9cran.\r\n  function confettiStop() {\r\n    particles.length = 0;\r\n  }\r\n\r\n  function drawStar(cx, cy, outerR, innerR, rotation, color, alpha) {\r\n    ctx.save();\r\n    ctx.translate(cx, cy);\r\n    ctx.rotate(rotation);\r\n    ctx.beginPath();\r\n    var spikes = 4;\r\n    for (var i = 0; i  2) {\r\n      var grad = ctx.createLinearGradient(0, 0, -tailLen, 0);\r\n      grad.addColorStop(0, p.color);\r\n      grad.addColorStop(1, 'transparent');\r\n      ctx.beginPath();\r\n      ctx.moveTo(0, -p.size * 0.35);\r\n      ctx.lineTo(-tailLen, 0);\r\n      ctx.lineTo(0, p.size * 0.35);\r\n      ctx.closePath();\r\n      ctx.fillStyle = grad;\r\n      ctx.fill();\r\n    }\r\n    ctx.restore();\r\n\r\n    \/\/ petite \u00e9toile \u00e0 la t\u00eate de la com\u00e8te\r\n    drawStar(p.x, p.y, p.size, p.size * 0.42, p.rot, p.color, p.alpha);\r\n  }\r\n\r\n  var boucleActive = false;\r\n  var last = 0;\r\n  function frame(now) {\r\n    if (!boucleActive) return;\r\n    if (!last) last = now;\r\n    var dt = Math.min((now - last) \/ 1000, 0.05);\r\n    last = now;\r\n\r\n    ctx.clearRect(0, 0, W, H); \/\/ reste transparent, pas de fillRect\r\n\r\n    for (var i = particles.length - 1; i &gt;= 0; i--) {\r\n      var p = particles[i];\r\n      p.age += dt;\r\n\r\n      \/\/ particule en attente (delay pas encore \u00e9coul\u00e9) : invisible, immobile\r\n      if (p.age <p> p.holdTime) {\r\n        var t = (localAge - p.holdTime) \/ p.fadeTime;\r\n        baseAlpha = Math.max(0, 1 - t);\r\n      }\r\n      if (localAge &gt; p.holdTime + p.fadeTime || baseAlpha &lt;= 0.01) {\r\n        particles.splice(i, 1);\r\n        continue;\r\n      }\r\n      \/\/ le scintillement module juste l&#039;alpha affich\u00e9 \u00e0 l&#039;instant t, sans\r\n      \/\/ jamais s&#039;accumuler d&#039;une image \u00e0 l&#039;autre\r\n      p.alpha = p.twinkle\r\n        ? baseAlpha * (0.55 + 0.45 * Math.sin(localAge * p.twinkle))\r\n        : baseAlpha;\r\n\r\n      if (p.isComet &amp;&amp; localAge &lt;p.holdTime * 0.9) { drawComet(p); } else { drawStar(p.x, p.y, p.size, p.size * 0.42, p.rot, p.color, p.alpha); } } requestAnimationFrame(frame); } function demarrerBoucle() { if (boucleActive) return; boucleActive = true; last = 0; requestAnimationFrame(frame); } function arreterBoucle() { boucleActive = false; } \/\/ \u2705 Pluie continue : au lieu d&#039;un seul lot fini de particules, on \/\/ relance confettiRain() \u00e0 intervalle r\u00e9gulier tant que l&#039;\u00e9cran de fin \/\/ d&#039;exercice reste affich\u00e9 -- elle ne s&#039;arr\u00eate donc jamais d&#039;elle-m\u00eame. var pluieInterval = null; function demarrerPluie() { arreterPluie(); \/\/ s\u00e9curit\u00e9 : jamais deux pluies en m\u00eame temps pluieInterval = setInterval(function () { confettiRain(undefined, 3 + Math.floor(Math.random() * 3), W * 0.9); }, 320); } function arreterPluie() { if (pluieInterval) { clearInterval(pluieInterval); pluieInterval = null; } } var sectionVisible = false; function tirerConfettis() { resize(); demarrerBoucle(); \/\/ Explosion pr\u00e8s du haut de l&#039;\u00e9cran (&quot;centre haut&quot;). confettiBurst(W \/ 2, H * 0.2); \/\/ La pluie encha\u00eene tout de suite : chaque \u00e9toile de pluie a son \/\/ propre d\u00e9lai d&#039;apparition \u00e9chelonn\u00e9 (voir confettiRain), donc la \/\/ transition avec l&#039;explosion reste douce m\u00eame sans attendre ici. demarrerPluie(); } function arreterTout() { arreterPluie(); confettiStop(); arreterBoucle(); ctx.clearRect(0, 0, W, H); } \/\/ \u2705 On surveille la section .taekwon_page_complete (voir \/\/ showCompletionSection() dans taekwon-progress.js, qui passe sa \/\/ visibilit\u00e9 \u00e0 &quot;visible&quot; quand l&#039;exercice est termin\u00e9) et on tire \/\/ l&#039;explosion exactement \u00e0 ce moment-l\u00e0, \u00e0 chaque fois qu&#039;elle \/\/ r\u00e9appara\u00eet -- et on arr\u00eate tout (boucle + pluie continue) d\u00e8s qu&#039;elle \/\/ se referme. function surveillerSection() { var section = document.querySelector(&#039;[class*=&quot;taekwon_page_complete&quot;]&#039;); if (!section) { setTimeout(surveillerSection, 200); return; } var arretDiff\u00e9r\u00e9 = null; var observer = new MutationObserver(function () { var visible = section.style.visibility === &#039;visible&#039;; if (visible) { \/\/ La section redevient (ou reste) visible : on annule un arr\u00eat \/\/ qui aurait pu \u00eatre programm\u00e9 juste avant (voir ci-dessous). if (arretDiff\u00e9r\u00e9) { clearTimeout(arretDiff\u00e9r\u00e9); arretDiff\u00e9r\u00e9 = null; } if (!sectionVisible) { sectionVisible = true; tirerConfettis(); } } else if (sectionVisible &amp;&amp; !arretDiff\u00e9r\u00e9) { \/\/ On n&#039;arr\u00eate pas tout de suite : le chargement du r\u00e9sum\u00e9 de fin \/\/ d&#039;exercice (badges, score, bouton &quot;Rejouer&quot;...) peut modifier \/\/ bri\u00e8vement le style de la section pendant son rendu, ce qui \/\/ d\u00e9clenche cet observer sans que la section ait vraiment \u00e9t\u00e9 \/\/ referm\u00e9e. Un arr\u00eat imm\u00e9diat sur ce simple &quot;scintillement&quot; \/\/ coupait la pluie de confettis en plein milieu. On attend donc \/\/ un court instant : si la section n&#039;est toujours pas visible \/\/ pass\u00e9 ce d\u00e9lai, on arr\u00eate pour de bon. arretDiff\u00e9r\u00e9 = setTimeout(function () { arretDiff\u00e9r\u00e9 = null; if (section.style.visibility !== &#039;visible&#039;) { sectionVisible = false; arreterTout(); } }, 500); } }); observer.observe(section, { attributes: true, attributeFilter: [&#039;style&#039;] }); \/\/ La pluie pouvant durer longtemps, on garde le canvas \u00e0 la bonne \/\/ taille si l&#039;\u00e9cran change (rotation du t\u00e9l\u00e9phone, etc.) pendant \/\/ qu&#039;elle est affich\u00e9e. window.addEventListener(&#039;resize&#039;, function () { if (sectionVisible) resize(); }); } surveillerSection(); })(); \r\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a312711 e-con-full e-flex e-con e-child\" data-id=\"a312711\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-96a790f elementor-widget elementor-widget-heading\" data-id=\"96a790f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Well done!<\/h2>\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7dad0c8 e-con-full e-flex e-con e-child\" data-id=\"7dad0c8\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c09d2a complete_img elementor-widget elementor-widget-image\" data-id=\"6c09d2a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"500\" height=\"347\" src=\"https:\/\/app.taekwon-book.com\/wp-content\/uploads\/2026\/06\/TAEKWON_abonnement.png\" class=\"attachment-large size-large wp-image-4353\" alt=\"\" srcset=\"https:\/\/app.taekwon-book.com\/wp-content\/uploads\/2026\/06\/TAEKWON_abonnement.png 500w, https:\/\/app.taekwon-book.com\/wp-content\/uploads\/2026\/06\/TAEKWON_abonnement-300x208.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-40db791 e-con-full e-flex e-con e-child\" data-id=\"40db791\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6b16925 text_savais_valeur elementor-widget elementor-widget-text-editor\" data-id=\"6b16925\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Well done! You know a lot!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8094eca e-con-full e-flex e-con e-child\" data-id=\"8094eca\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bd3c7f2 elementor-align-justify elementor-mobile-align-justify bouton-son btn_close_section btn_quiz elementor-widget-mobile__width-inherit elementor-widget elementor-widget-button\" data-id=\"bd3c7f2\" data-element_type=\"widget\" data-e-type=\"widget\" data-audio=\"https:\/\/taekwon-book.com\/wp-content\/themes\/hello-elementor-child\/app\/sons\/general\/son_click.mp3\" data-widget_type=\"button.default\">\n\t\t\t\t\t\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/app.taekwon-book.com\/en\/white-belt-2\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Back<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\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>Back RESET Progression \/* position:fixed + top:0\/left:0 explicites, z-index tr\u00e8s haut : le calque reste cal\u00e9 sur le vrai \u00e9cran visible et toujours au-dessus de tout le reste de la page (carte de fin d&#8217;exercice comprise), quel que soit l&#8217;endroit o\u00f9 ce widget HTML est plac\u00e9 dans la mise en page. *\/ #confetti-wrapper { position: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":6052,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"categorie-technique":[],"ceinture":[],"class_list":["post-6066","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/pages\/6066","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/comments?post=6066"}],"version-history":[{"count":7,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/pages\/6066\/revisions"}],"predecessor-version":[{"id":6719,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/pages\/6066\/revisions\/6719"}],"up":[{"embeddable":true,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/pages\/6052"}],"wp:attachment":[{"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/media?parent=6066"}],"wp:term":[{"taxonomy":"categorie-technique","embeddable":true,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/categorie-technique?post=6066"},{"taxonomy":"ceinture","embeddable":true,"href":"https:\/\/app.taekwon-book.com\/en\/wp-json\/wp\/v2\/ceinture?post=6066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}