{"id":2595,"date":"2025-12-22T17:09:26","date_gmt":"2025-12-22T17:09:26","guid":{"rendered":"https:\/\/healthworkforce.ca\/?page_id=2595"},"modified":"2026-04-01T14:43:03","modified_gmt":"2026-04-01T14:43:03","slug":"effectif-pssp","status":"publish","type":"page","link":"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/","title":{"rendered":"Effectif PSSP"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2595\" class=\"elementor elementor-2595 elementor-2593\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b14f6b e-flex e-con-boxed e-con e-parent\" data-id=\"1b14f6b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;sticky&quot;:&quot;top&quot;,&quot;sticky_offset_mobile&quot;:50,&quot;sticky_on&quot;:[&quot;tablet&quot;,&quot;mobile&quot;],&quot;sticky_offset&quot;:0,&quot;sticky_effects_offset&quot;:0,&quot;sticky_anchor_link_offset&quot;:0}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-1afd397 e-con-full e-flex e-con e-child\" data-id=\"1afd397\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0a04d41 elementor-widget elementor-widget-text-editor\" data-id=\"0a04d41\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Mod\u00e9lisation et pr\u00e9vision<\/p>\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-578e848 e-con-full e-flex e-con e-child\" data-id=\"578e848\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5506861 elementor-icon-list--layout-inline elementor-align-end elementor-widget-tablet__width-initial elementor-mobile-align-end elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"5506861\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/hwcpublicbucket.s3.ca-central-1.amazonaws.com\/PSW\/Documents\/PSW+User+Guide+V2+-+FR+-+Feb+13%2C+2026.pdf\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-icon\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-download\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Guide de l'utilisateur<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/hwcpublicbucket.s3.ca-central-1.amazonaws.com\/PSW\/Documents\/PSW+V2+FAQ+FR+Final+-+Dec+4%2C+2025.pdf\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">FAQ<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/hwcpublicbucket.s3.ca-central-1.amazonaws.com\/PSW\/PSW+Model.zip\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Code source<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision-du-retour-dinformation\/\" target=\"_blank\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">Donner son avis<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"tmintro-wrapper elementor-element elementor-element-b3f2b96 elementor-widget elementor-widget-spacer\" data-intro=\"Click the Tutorial button for a quick step-by-step guide to using the Digital Front Door.\" data-title=\"Need a walkthrough?\" data-position=\"bottom-left-aligned\" data-step=\"6\" data-id=\"b3f2b96\" 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<\/div>\n\t\t<div class=\"elementor-element elementor-element-beded0b e-con-full e-flex e-con e-child\" data-id=\"beded0b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cb20098 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"cb20098\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\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-9a0d77f e-flex e-con-boxed e-con e-parent\" data-id=\"9a0d77f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-2c21b6b e-con-full e-flex e-con e-child\" data-id=\"2c21b6b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3029970 elementor-widget elementor-widget-heading\" data-id=\"3029970\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Outil de mod\u00e9lisation relatif aux pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne\u202f\u2013 Effectif <\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1fcb220 elementor-widget elementor-widget-text-editor\" data-id=\"1fcb220\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Voici notre outil de mod\u00e9lisation et de simulation de l\u2019effectif des pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne (PSSP). Con\u00e7u selon une approche \u00e0 code source ouvert, l\u2019outil peut \u00eatre exploit\u00e9 et enrichi par les mod\u00e9lisateurs de la main-d\u2019\u0153uvre en sant\u00e9 pour permettre aux dirigeants des syst\u00e8mes de sant\u00e9 et aux planificateurs de programmes de formation de pr\u00e9voir le nombre de PSSP n\u00e9cessaires pour prendre soin de la population canadienne.<\/p><p>L\u2019outil permet aux utilisateurs de tester l\u2019incidence relative de diff\u00e9rents sc\u00e9narios de croissance de la population sur le nombre de PSSP requis par r\u00e9gion et par milieu de soins, jusqu\u2019en\u202f2048. Il existe deux versions de cet outil. La version sur cette page estime les effectifs (personnes). La seconde version, disponible <a href=\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/etf-pssp\/\">ici<\/a>, estime les \u00e9quivalents temps plein (ETP).<\/p><p>Vous avez des questions ou cherchez \u00e0 vous renseigner sur la fa\u00e7on d\u2019utiliser cet outil? Veuillez visiter la <a href=\"https:\/\/hwcpublicbucket.s3.ca-central-1.amazonaws.com\/PSW\/Documents\/PSW+V2+FAQ+FR+Final+-+Dec+4%2C+2025.pdf\">FAQ<\/a> ou le <a href=\"https:\/\/hwcpublicbucket.s3.ca-central-1.amazonaws.com\/PSW\/Documents\/PSW+User+Guide+V2+-+FR+-+Feb+13%2C+2026.pdf\">Guide de l\u2019utilisateur<\/a>. Un tutoriel sera disponible d\u2019ici peu.<\/p><p><em>Pour un fonctionnement optimal, nous recommandons d\u2019utiliser cette plateforme sur un navigateur Web plut\u00f4t que sur un appareil mobile.<\/em><\/p>\t\t\t\t\t\t\t\t<\/div>\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-a45d13b e-flex e-con-boxed e-con e-parent\" data-id=\"a45d13b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a84ae2a e-con-full e-flex e-con e-child\" data-id=\"a84ae2a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6b76f0c elementor-widget elementor-widget-html\" data-id=\"6b76f0c\" 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<div>\r\n  <meta charset=\"UTF-8\" \/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\r\n  <title>PSW Target Ratios by Province and Territory<\/title>\r\n  <style>\r\n    .container {\r\n      overflow-x: auto;\r\n    }\r\n\r\n    .header-row {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) auto;\r\n      align-items: start;\r\n      column-gap: 16px;\r\n      row-gap: 10px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .scenario-selector {\r\n      display: flex;\r\n      align-items: start;\r\n      gap: 15px;\r\n    }\r\n\r\n    .scenario-selector label {\r\n      margin-top: 12px;\r\n      font-weight: bold;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .scenario-selector select {\r\n      width: 170px;\r\n      max-width: 170px;\r\n      padding: 10px;\r\n      border-radius: 4px;\r\n      border: 1px solid #ddd;\r\n    }\r\n\r\n    .scenario-descriptor {\r\n      min-width: 200px;\r\n      display: flex;\r\n      flex-direction: column;\r\n    }\r\n\r\n    table {\r\n      width: 100%;\r\n      border-collapse: collapse;\r\n      border-spacing: 0;\r\n    }\r\n\r\n    th {\r\n      background-color: #851f64;\r\n      color: white;\r\n      padding: 14px 16px;\r\n      text-align: center;\r\n      font-weight: bold;\r\n      border-bottom: 2px solid #dee2e6;\r\n      border-right: 1px solid #5d6c7d;\r\n    }\r\n\r\n    th[colspan=\"3\"] {\r\n      background-color: #651050;\r\n    }\r\n\r\n    th:first-child,\r\n    th:last-child {\r\n      text-align: center;\r\n      vertical-align: middle;\r\n    }\r\n\r\n    td {\r\n      padding: 14px 16px;\r\n      text-align: center;\r\n      border-bottom: 1px solid #e9ecef;\r\n      border-right: 1px solid #e9ecef;\r\n      vertical-align: middle;\r\n    }\r\n\r\n    \/* Add alternating row colors *\/\r\n    tr:nth-child(even) {\r\n      background-color: #f2f2f2;\r\n    }\r\n\r\n    tr:hover {\r\n      background-color: #e9ecef;\r\n    }\r\n\r\n    \/* Comparison table styles *\/\r\n    .comparison-scenario {\r\n      position: relative;\r\n      min-width: 150px;\r\n      padding: 12px 10px;\r\n      text-align: left;\r\n      vertical-align: top;\r\n      border-bottom: 1px solid #e0e0e0;\r\n    }\r\n\r\n    .scenario-header {\r\n      display: flex;\r\n      flex-direction: row;\r\n      justify-content: center;\r\n      align-items: center;\r\n      gap: 8px;\r\n    }\r\n\r\n    .scenario-name {\r\n      font-weight: 600;\r\n      display: block;\r\n      word-break: break-word;\r\n    }\r\n\r\n    .scenario-controls {\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      gap: 8px;\r\n    }\r\n\r\n    .scenario-delete {\r\n      flex: 0.36;\r\n      justify-content: end;\r\n      display: flex;\r\n      align-items: center;\r\n      color: white;\r\n      user-select: none;\r\n      cursor: pointer;\r\n    }\r\n\r\n    \/* Toggle switch styling *\/\r\n    .compare-toggle-switch {\r\n      position: relative;\r\n      display: inline-block;\r\n      width: 36px;\r\n      height: 20px;\r\n      margin: 0;\r\n    }\r\n\r\n    .compare-toggle-switch input {\r\n      opacity: 0;\r\n      width: 0;\r\n      height: 0;\r\n    }\r\n\r\n    .compare-slider {\r\n      position: absolute;\r\n      cursor: pointer;\r\n      top: 0;\r\n      left: 0;\r\n      right: 0;\r\n      bottom: 0;\r\n      background-color: #ccc;\r\n      transition: 0.3s;\r\n    }\r\n\r\n    .compare-slider:before {\r\n      position: absolute;\r\n      content: \"\";\r\n      height: 16px;\r\n      width: 16px;\r\n      left: 2px;\r\n      bottom: 2px;\r\n      background-color: white;\r\n      transition: 0.3s;\r\n      box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\r\n    }\r\n\r\n    input:checked + .compare-slider {\r\n      background-color: #95ca77;\r\n    }\r\n\r\n    input:focus + .compare-slider {\r\n      box-shadow: 0 0 1px #3eaf9d;\r\n    }\r\n\r\n    input:checked + .compare-slider:before {\r\n      transform: translateX(16px);\r\n    }\r\n\r\n    .province-name {\r\n      text-align: left;\r\n      font-weight: bold;\r\n      min-width: 180px;\r\n    }\r\n\r\n    .slider-container {\r\n      position: relative;\r\n      width: 200px;\r\n      margin: 0 auto;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 10px;\r\n    }\r\n\r\n    .slider-values {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      font-size: 12px;\r\n      color: #6c757d;\r\n      width: 100%;\r\n      position: absolute;\r\n      bottom: -15px;\r\n    }\r\n\r\n    .current-value {\r\n      background-color: #002554;\r\n      color: white;\r\n      padding: 3px 10px;\r\n      border-radius: 12px;\r\n      font-size: 13px;\r\n      order: 2; \/* This will place it after the slider *\/\r\n      white-space: nowrap;\r\n    }\r\n\r\n    input[type=\"range\"] {\r\n      width: 100%;\r\n      cursor: pointer;\r\n      accent-color: #002554;\r\n      order: 1; \/* This will place it before the current value *\/\r\n    }\r\n\r\n    input[type=\"number\"] {\r\n      width: 100%;\r\n      padding: 10px;\r\n      border: 1px solid #ddd;\r\n      border-radius: 4px;\r\n      text-align: center;\r\n    }\r\n\r\n    h1,\r\n    h2,\r\n    h3 {\r\n      color: #000;\r\n      font-weight: bold;\r\n    }\r\n\r\n    h1 {\r\n      font-size: 2.5rem;\r\n      margin-bottom: 1rem;\r\n    }\r\n\r\n    h2 {\r\n      font-size: 1.8rem;\r\n      margin-bottom: 0.8rem;\r\n    }\r\n\r\n    a {\r\n      color: #002d62; \/* Dark navy blue from the dashboard background *\/\r\n      text-decoration: none;\r\n    }\r\n\r\n    a:hover {\r\n      text-decoration: underline;\r\n    }\r\n\r\n    @media (max-width: 992px) {\r\n      .slider-container {\r\n        width: 150px;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 768px) {\r\n      .container {\r\n        padding: 15px;\r\n      }\r\n\r\n      th,\r\n      td {\r\n        padding: 10px;\r\n      }\r\n\r\n      .slider-container {\r\n        width: 120px;\r\n      }\r\n    }\r\n\r\n    .tabs {\r\n      display: flex;\r\n      margin-bottom: 20px;\r\n      border-bottom: none;\r\n    }\r\n    .tab {\r\n      padding: 10px 20px;\r\n      margin-right: 5px;\r\n      cursor: pointer;\r\n      border: none;\r\n      border-radius: 4px 4px 0 0;\r\n      color: #555;\r\n      font-weight: bold;\r\n      position: relative;\r\n      background-color: transparent;\r\n      user-select: none;\r\n    }\r\n    .tab.active {\r\n      color: #8882cd;\r\n      font-weight: bold;\r\n      background-color: transparent;\r\n    }\r\n    .tab.active::after {\r\n      content: \"\";\r\n      position: absolute;\r\n      left: 0;\r\n      bottom: 0;\r\n      width: 100%;\r\n      height: 3px;\r\n      background-color: #8882cd;\r\n    }\r\n    .tab-content {\r\n      display: none;\r\n      padding: 20px;\r\n    }\r\n    .tab-content.active {\r\n      display: block;\r\n    }\r\n\r\n    .comparison-table th {\r\n      min-width: 120px;\r\n    }\r\n    .comparison-table td.diff-from-default {\r\n      background-color: #fff3cd;\r\n      font-weight: 600;\r\n    }\r\n    .comparison-scenario {\r\n      position: relative;\r\n      padding-right: 20px;\r\n    }\r\n\r\n    .compare-slider.round {\r\n      border-radius: 34px;\r\n    }\r\n\r\n    .compare-slider.round:before {\r\n      border-radius: 50%;\r\n    }\r\n\r\n    \/* Responsive adjustments *\/\r\n    @media (max-width: 768px) {\r\n      .comparison-scenario {\r\n        min-width: 120px;\r\n      }\r\n\r\n      .scenario-name {\r\n        font-size: 14px;\r\n      }\r\n    }\r\n\r\n    .toast-container {\r\n      position: fixed;\r\n      top: 50px;\r\n      right: 20px;\r\n      z-index: 1000;\r\n    }\r\n\r\n    .toast {\r\n      min-width: 250px;\r\n      margin-bottom: 10px;\r\n      padding: 15px;\r\n      border-radius: 4px;\r\n      color: white;\r\n      display: flex;\r\n      align-items: center;\r\n      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\r\n      transform: translateY(-100px);\r\n      opacity: 0;\r\n      transition:\r\n        transform 0.5s ease,\r\n        opacity 0.5s ease;\r\n    }\r\n\r\n    .toast.show {\r\n      transform: translateY(0);\r\n      opacity: 1;\r\n    }\r\n\r\n    .toast.success {\r\n      background-color: #4caf50;\r\n    }\r\n\r\n    .toast.warning {\r\n      background-color: #ff9800;\r\n    }\r\n\r\n    .toast.error {\r\n      background-color: #f44336;\r\n    }\r\n\r\n    .toast-icon {\r\n      margin-right: 10px;\r\n      font-weight: bold;\r\n    }\r\n\r\n    .toast-message {\r\n      flex-grow: 1;\r\n    }\r\n\r\n    .toast-close {\r\n      background: transparent;\r\n      border: none;\r\n      color: white;\r\n      font-size: 16px;\r\n      cursor: pointer;\r\n      padding: 0 5px;\r\n    }\r\n\r\n    #territory-note {\r\n      font-size: 0.9rem;\r\n      color: #515962;\r\n      margin-top: 1rem;\r\n    }\r\n\r\n    .scenario-info-col {\r\n      display: flex;\r\n      flex-direction: column;\r\n      align-items: flex-start;\r\n      flex: 1 1 auto;\r\n      min-width: 0;\r\n    }\r\n\r\n    .scenario-info-link {\r\n      font-size: 14px;\r\n      color: #1f2937;\r\n      text-decoration: underline;\r\n      text-underline-offset: 2px;\r\n      cursor: pointer;\r\n      background: none;\r\n      border: 0;\r\n      padding: 0;\r\n      line-height: 1.6;\r\n      margin-top: 10px;\r\n    }\r\n\r\n    .scenario-info-link:hover {\r\n      color: #0f172a;\r\n    }\r\n\r\n    .scenario-info-link:focus-visible {\r\n      outline: 2px solid #8882cd;\r\n      outline-offset: 2px;\r\n      border-radius: 4px;\r\n    }\r\n\r\n    \/* The description panel shown under the button *\/\r\n    .scenario-panel {\r\n      grid-column: 1 \/ -1;\r\n      margin-top: 4px;\r\n      margin-left: var(--panel-indent, 0px); \/* align left edge to the button *\/\r\n      width: calc(100% - var(--panel-indent, 0px)); \/* fill to the right *\/\r\n      overflow: hidden;\r\n      height: 0;\r\n      opacity: 0;\r\n\r\n      background-color: #f8f9fa;\r\n      border-left: 4px solid #002554;\r\n      border-radius: 6px;\r\n      box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);\r\n\r\n      transition:\r\n        height 480ms cubic-bezier(0.22, 0.61, 0.36, 1),\r\n        opacity 360ms linear;\r\n      will-change: height;\r\n    }\r\n\r\n    .scenario-panel[hidden] {\r\n      display: none;\r\n    }\r\n\r\n    .scenario-panel.is-open {\r\n      opacity: 1;\r\n    }\r\n\r\n    .scenario-panel__inner {\r\n      padding: 12px 14px;\r\n    }\r\n\r\n    .scenario-panel-title {\r\n      margin: 0 0 6px 0;\r\n      font-size: 15px;\r\n    }\r\n\r\n    .scenario-panel-body {\r\n      font-size: 14px;\r\n      line-height: 1.45;\r\n      max-height: 50vh;\r\n      overflow: auto;\r\n    }\r\n\r\n    @media (max-width: 768px) {\r\n      .scenario-selector {\r\n        align-items: flex-start;\r\n        flex-wrap: wrap;\r\n      }\r\n      .scenario-info-col {\r\n        width: 100%;\r\n      }\r\n      .scenario-panel {\r\n        position: static;\r\n        width: 100%;\r\n        margin-left: 0;\r\n        z-index: auto;\r\n      }\r\n    }\r\n\r\n    \/* Unique Canada row styles *\/\r\n    #unique-scenario-table\r\n      tbody\r\n      tr:has(.province-name[data-province=\"Canada\"])\r\n      > td {\r\n      background-color: #e0e0e0;\r\n      font-weight: 700;\r\n      border-top: 2px solid #002554 !important;\r\n      border-bottom: 2px solid #002554 !important;\r\n    }\r\n\r\n    #unique-scenario-table\r\n      tbody\r\n      tr:has(.province-name[data-province=\"Canada\"])\r\n      > td:first-child {\r\n      border-left: 2px solid #002554 !important;\r\n    }\r\n\r\n    #unique-scenario-table\r\n      tbody\r\n      tr:has(.province-name[data-province=\"Canada\"])\r\n      > td:last-child {\r\n      border-right: 2px solid #002554 !important;\r\n    }\r\n\r\n    #unique-scenario-table\r\n      tbody\r\n      tr:has(.province-name[data-province=\"Canada\"])\r\n      input[type=\"number\"] {\r\n      font-weight: 700;\r\n      color: #000;\r\n      background-color: #e0e0e0;\r\n      border: none;\r\n    }\r\n\r\n    #unique-scenario-table\r\n      tbody\r\n      tr:has(.province-name[data-province=\"Canada\"])\r\n      .current-value {\r\n      background: #d1d5db;\r\n      color: #111827;\r\n      font-weight: 700;\r\n      border: 1px solid #c5c9cf;\r\n    }\r\n  <\/style>\r\n  <script>\r\n    \/\/ This function will be called by the AnyLogic plugin to collect data\r\n    window.collectAnyLogicData = function () {\r\n      var formData = {\r\n        provinces: [],\r\n        scenario: document.getElementById(\"scenario\").value,\r\n      };\r\n\r\n      \/\/ Iterate through each province row\r\n      var rows = document.querySelectorAll(\r\n        \"table#unique-scenario-table tbody tr\",\r\n      );\r\n      for (var i = 0; i < rows.length; i++) {\r\n        var row = rows[i];\r\n        var provinceName = row\r\n          .querySelector(\".province-name\")\r\n          .getAttribute(\"data-province\")\r\n          .trim();\r\n\r\n        var provinceData = {\r\n          name: provinceName,\r\n          homeCare: parseFloat(\r\n            row.querySelector('td:nth-child(2) input[type=\"range\"]').value,\r\n          ),\r\n          residentialCare: parseFloat(\r\n            row.querySelector('td:nth-child(3) input[type=\"range\"]').value,\r\n          ),\r\n          hospital: parseFloat(\r\n            row.querySelector('td:nth-child(4) input[type=\"range\"]').value,\r\n          ),\r\n          pswCount: parseInt(\r\n            row.querySelector('td:nth-child(5) input[type=\"number\"]').value,\r\n          ),\r\n        };\r\n\r\n        formData.provinces.push(provinceData);\r\n      }\r\n\r\n      console.log(\"Form data from HTML\", formData);\r\n\r\n      return formData;\r\n    };\r\n  <\/script>\r\n\r\n  <div class=\"container\">\r\n    <div class=\"toast-container\" id=\"toastContainer\"><\/div>\r\n\r\n    <!-- Tab navigation -->\r\n    <div class=\"tabs\">\r\n      <div class=\"tab active\" data-tab=\"unique-scenario\">Sc\u00e9nario unique<\/div>\r\n      <div class=\"tab\" data-tab=\"comparison-scenario\" id=\"compare-scenario-tab\">\r\n        Sc\u00e9nario de comparaison\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Unique Scenario Tab Content -->\r\n    <div\r\n      id=\"unique-scenario\"\r\n      class=\"tab-content active\"\r\n      style=\"border-top: 2px solid #ddd\"\r\n    >\r\n      <div class=\"header-row\">\r\n        <div class=\"scenario-selector\">\r\n          <label for=\"scenario\">Sc\u00e9nario de projection d\u00e9mographique:<\/label>\r\n          <select id=\"scenario\" name=\"scenario\">\r\n            <option value=\"Low-growth\">Faible croissance<\/option>\r\n            <option value=\"Medium-growth 1\">Croissance moyenne 1<\/option>\r\n            <option value=\"Medium-growth 2\">Croissance moyenne 2<\/option>\r\n            <option value=\"Medium-growth 3\">Croissance moyenne 3<\/option>\r\n            <option selected value=\"Medium-growth 4\">\r\n              Croissance moyenne 4\r\n            <\/option>\r\n            <option value=\"Medium-growth 5\">Croissance moyenne 5<\/option>\r\n            <option value=\"Medium-growth 6\">Croissance moyenne 6<\/option>\r\n            <option value=\"High-growth\">Forte croissance<\/option>\r\n            <option value=\"Slow-aging\">Vieillissement lent<\/option>\r\n            <option value=\"Fast-aging\">Vieillissement rapide<\/option>\r\n          <\/select>\r\n\r\n          <div class=\"scenario-info-col\">\r\n            <a\r\n              id=\"scenarioInfoBtn\"\r\n              class=\"scenario-info-link\"\r\n              href=\"#\"\r\n              role=\"button\"\r\n              aria-expanded=\"false\"\r\n              aria-controls=\"scenarioInfoPanel\"\r\n              >Voir les descriptions des sc\u00e9narios<\/a\r\n            >\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"psw-button\" id=\"resetDefaults\">\r\n          R\u00e9initialiser aux param\u00e8tres par d\u00e9faut\r\n        <\/div>\r\n\r\n        <!-- Full description appears directly below the button, left-aligned with it -->\r\n        <section\r\n          id=\"scenarioInfoPanel\"\r\n          class=\"scenario-panel\"\r\n          role=\"region\"\r\n          aria-labelledby=\"scenarioInfoHeading\"\r\n        >\r\n          <div class=\"scenario-panel__inner\">\r\n            <h3 id=\"scenarioInfoHeading\" class=\"scenario-panel-title\">\r\n              Croissance moyenne 4\r\n            <\/h3>\r\n            <div id=\"scenarioInfoText\" class=\"scenario-panel-body\"><\/div>\r\n          <\/div>\r\n        <\/section>\r\n      <\/div>\r\n\r\n      <table id=\"unique-scenario-table\">\r\n        <thead>\r\n          <tr>\r\n            <th rowspan=\"2\" scope=\"col\">Province\/Territoire<\/th>\r\n\r\n            <th colspan=\"3\" id=\"psw-rate-header\">\r\n              Taux de PSSP (nombre de PSSP pour 100 personnes \u00e2g\u00e9es de 75 ans et\r\n              plus)\r\n            <\/th>\r\n\r\n            <th rowspan=\"2\" scope=\"col\">Nombre de PSSP<\/th>\r\n          <\/tr>\r\n          <tr>\r\n            <th scope=\"col\">Soins \u00e0 domicile<\/th>\r\n            <th scope=\"col\">Soins en \u00e9tablissement<\/th>\r\n            <th scope=\"col\">H\u00f4pital<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody>\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Alberta\">Alberta<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">6.4<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"6.4\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">2.9<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"2.9\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"36400\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"British Columbia\">\r\n              Colombie-Britannique\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">2.3<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"2.3\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">4.4<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"4.4\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"48500\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Manitoba\">Manitoba<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.9<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.9\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.6<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.6\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">6.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"6.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"18833\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"New Brunswick\">\r\n              Nouveau-Brunswick\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">4.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"4.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">6.7<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"6.7\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">2.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"2.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"10700\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Newfoundland and Labrador\">\r\n              Terre-Neuve-et-Labrador\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">12.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"12.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.6<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.6\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.2<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.2\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"10400\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Nova Scotia\">\r\n              Nouvelle-\u00c9cosse\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.7<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.7\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.7<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.7\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">1.9<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"1.9\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"13600\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Ontario\">Ontario<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">2.4<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"2.4\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">5.3<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"5.3\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">1.4<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"1.4\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"118400\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Prince Edward Island\">\r\n              \u00cele-du-Prince-\u00c9douard\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">1.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"1.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">8.2<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"8.2\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.4<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.4\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"2067\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Quebec\">Qu\u00e9bec<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">1.9<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"1.9\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">4.9<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"4.9\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"83467\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Saskatchewan\">\r\n              Saskatchewan\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">1.7<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"1.7\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">8.6<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"8.6\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">5.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"5.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"13967\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Yukon\">Yukon *<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.8<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.8\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"433\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Nunavut\">Nunavut *<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.8<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.8\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"233\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Northwest Territories\">\r\n              Territoires du Nord-Ouest *\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.8<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.8\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">7.1<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"7.1\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"233\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n\r\n          <tr>\r\n            <td class=\"province-name\" data-province=\"Canada\">Canada<\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">2.6<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"2.6\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">5.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"5.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <div class=\"slider-container\">\r\n                <span class=\"current-value\">3.0<\/span>\r\n                <div class=\"slider-values\">\r\n                  <!--<span>0<\/span>-->\r\n                  <!--<span>10<\/span>-->\r\n                <\/div>\r\n                <input\r\n                  type=\"range\"\r\n                  min=\"0\"\r\n                  max=\"15\"\r\n                  step=\"0.1\"\r\n                  value=\"3.0\"\r\n                  class=\"slider\"\r\n                  oninput=\"\r\n                    this.previousElementSibling.previousElementSibling.textContent =\r\n                      this.value\r\n                  \"\r\n                \/>\r\n              <\/div>\r\n            <\/td>\r\n            <td>\r\n              <input type=\"number\" value=\"357233\" min=\"0\" \/>\r\n            <\/td>\r\n          <\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n\r\n      <div class=\"footnote\" role=\"note\" id=\"territory-note\">\r\n        <p lang=\"en\">\r\n          * Les ratios PSSP-population des territoires refl\u00e8tent les estimations\r\n          agr\u00e9g\u00e9es des PSSP dans les territoires, car les valeurs relatives au\r\n          nombre de PSSP dans les trois territoires n\u2019ont pas pu \u00eatre publi\u00e9es\r\n          pour des raisons de confidentialit\u00e9 et de qualit\u00e9 des donn\u00e9es. Ainsi,\r\n          les ratios PSSP-population pour chaque territoire ont \u00e9t\u00e9 fix\u00e9s au\r\n          m\u00eame niveau que les ratios pour les trois territoires combin\u00e9s. Le\r\n          nombre total de PSSP pour chaque territoire est bas\u00e9 sur l\u2019EPA qui\r\n          \u00e9tait disponible et diffusable en 2024.\r\n        <\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- Comparison Scenario Tab Content -->\r\n    <div\r\n      id=\"comparison-scenario\"\r\n      class=\"tab-content\"\r\n      style=\"border-top: 2px solid #ddd\"\r\n    >\r\n      <div id=\"comparison-container\">\r\n        <div\r\n          id=\"no-comparisons\"\r\n          style=\"\r\n            display: block;\r\n            background-color: #f8f9fa;\r\n            border-left: 4px solid #002554;\r\n            padding: 16px 20px;\r\n            margin: 20px 0;\r\n            border-radius: 4px;\r\n            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\r\n            color: #495057;\r\n            font-size: 15px;\r\n            line-height: 1.5;\r\n          \"\r\n        >\r\n          <p style=\"margin: 0; display: flex; align-items: center\">\r\n            <svg\r\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\r\n              width=\"20\"\r\n              height=\"20\"\r\n              viewbox=\"0 0 24 24\"\r\n              fill=\"none\"\r\n              stroke=\"#002554\"\r\n              stroke-width=\"2\"\r\n              stroke-linecap=\"round\"\r\n              stroke-linejoin=\"round\"\r\n              style=\"margin-right: 12px\"\r\n            >\r\n              <circle cx=\"12\" cy=\"12\" r=\"10\" \/>\r\n              <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" \/>\r\n              <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" \/>\r\n            <\/svg>\r\n            <span style=\"user-select: none\"\r\n              ><strong>Aucune comparaison pour l'instant.<\/strong> Allez \u00e0\r\n              l'onglet \"Sc\u00e9nario unique\", ex\u00e9cutez une simulation et cliquez sur\r\n              \"Ajouter \u00e0 la comparaison\".<\/span\r\n            >\r\n          <\/p>\r\n        <\/div>\r\n\r\n        <table\r\n          id=\"comparison-table\"\r\n          class=\"comparison-table\"\r\n          style=\"display: none\"\r\n        >\r\n          <thead>\r\n            <tr id=\"comparison-header\">\r\n              <th>Parameter<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody id=\"comparison-body\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <script>\r\n    \/* scenario descriptors *\/\r\n    document.addEventListener(\"DOMContentLoaded\", () => {\r\n      \/\/ Keep your Canada row disabling (unchanged behavior)\r\n      const canadaRow = Array.from(\r\n        document.querySelectorAll(\"#unique-scenario-table tbody tr\"),\r\n      ).find(\r\n        (tr) =>\r\n          tr.querySelector(\".province-name\")?.getAttribute(\"data-province\") ===\r\n          \"Canada\",\r\n      );\r\n      if (canadaRow) {\r\n        canadaRow.querySelectorAll('input[type=\"range\"]').forEach((r) => {\r\n          r.disabled = true;\r\n          r.setAttribute(\"aria-disabled\", \"true\");\r\n          r.title = \"Canada totals are read-only\";\r\n        });\r\n        const canadaCountInput = canadaRow.querySelector(\r\n          'input[type=\"number\"]',\r\n        );\r\n        if (canadaCountInput) {\r\n          canadaCountInput.disabled = true;\r\n          canadaCountInput.setAttribute(\"aria-disabled\", \"true\");\r\n          canadaCountInput.title = \"Canada total is calculated automatically\";\r\n        }\r\n      }\r\n\r\n      const select = document.getElementById(\"scenario\");\r\n      const btn = document.getElementById(\"scenarioInfoBtn\");\r\n      const panel = document.getElementById(\"scenarioInfoPanel\");\r\n      const titleEl = document.getElementById(\"scenarioInfoHeading\");\r\n      const textEl = document.getElementById(\"scenarioInfoText\");\r\n      const headerRow = document.querySelector(\".header-row\");\r\n      if (!select || !btn || !panel || !titleEl || !textEl || !headerRow)\r\n        return;\r\n\r\n      \/\/ ==== CONFIG: paste your real URLs below ====\r\n      const I18N_URLS = {\r\n        en: \"https:\/\/healthworkforce.ca\/wp-content\/themes\/hello-elementor-child\/assets\/i18n\/psw-scenarios.en.json?v=2025-09-29\",\r\n        fr: \"https:\/\/healthworkforce.ca\/wp-content\/themes\/hello-elementor-child\/assets\/i18n\/psw-scenarios.fr.json?v=2025-09-29\",\r\n        \/\/ If using Media Library, paste the two file URLs here instead.\r\n      };\r\n      \/\/ ===========================================\r\n\r\n      \/\/ Locale detection (relies on <html lang=\"en|fr\">)\r\n      const LOCALE = (document.documentElement.lang || \"en\")\r\n        .toLowerCase()\r\n        .startsWith(\"fr\")\r\n        ? \"fr\"\r\n        : \"en\";\r\n\r\n      \/\/ Canonical scenario codes we support\r\n      const CODES = [\r\n        \"low_growth\",\r\n        \"m1\",\r\n        \"m2\",\r\n        \"m3\",\r\n        \"m4\",\r\n        \"m5\",\r\n        \"m6\",\r\n        \"high_growth\",\r\n        \"slow_aging\",\r\n        \"fast_aging\",\r\n      ];\r\n\r\n      \/\/ Map many possible EN\/FR labels\/values \u2192 canonical codes (robust to dashes\/casing)\r\n      const KEY_ALIASES = new Map([\r\n        \/\/ Low\r\n        [\"low-growth\", \"low_growth\"],\r\n        [\"faible croissance\", \"low_growth\"],\r\n        [\"faible-croissance\", \"low_growth\"],\r\n        \/\/ Medium (M1..M6)\r\n        [\"medium-growth 1\", \"m1\"],\r\n        [\"m1\", \"m1\"],\r\n        [\"croissance moyenne 1\", \"m1\"],\r\n        [\"medium-growth 2\", \"m2\"],\r\n        [\"m2\", \"m2\"],\r\n        [\"croissance moyenne 2\", \"m2\"],\r\n        [\"medium-growth 3\", \"m3\"],\r\n        [\"m3\", \"m3\"],\r\n        [\"croissance moyenne 3\", \"m3\"],\r\n        [\"medium-growth 4\", \"m4\"],\r\n        [\"m4\", \"m4\"],\r\n        [\"croissance moyenne 4\", \"m4\"],\r\n        [\"medium-growth 5\", \"m5\"],\r\n        [\"m5\", \"m5\"],\r\n        [\"croissance moyenne 5\", \"m5\"],\r\n        [\"medium-growth 6\", \"m6\"],\r\n        [\"m6\", \"m6\"],\r\n        [\"croissance moyenne 6\", \"m6\"],\r\n        \/\/ High\r\n        [\"high-growth\", \"high_growth\"],\r\n        [\"forte croissance\", \"high_growth\"],\r\n        [\"haute croissance\", \"high_growth\"],\r\n        \/\/ Slow aging \/ Fast aging\r\n        [\"slow-aging\", \"slow_aging\"],\r\n        [\"vieillissement lent\", \"slow_aging\"],\r\n        [\"fast-aging\", \"fast_aging\"],\r\n        [\"vieillissement rapide\", \"fast_aging\"],\r\n      ]);\r\n\r\n      function normalize(str) {\r\n        return (str || \"\")\r\n          .toString()\r\n          .replace(\/[\u2013\u2014\u2212]\/g, \"-\")\r\n          .replace(\/\\s+\/g, \" \")\r\n          .trim()\r\n          .toLowerCase();\r\n      }\r\n      function resolveCode(opt) {\r\n        if (opt?.dataset?.key && CODES.includes(opt.dataset.key))\r\n          return opt.dataset.key;\r\n        const candidates = [opt?.value, opt?.textContent]\r\n          .map(normalize)\r\n          .filter(Boolean);\r\n        for (const c of candidates) {\r\n          if (KEY_ALIASES.has(c)) return KEY_ALIASES.get(c);\r\n          if (\/^m[1-6]$\/.test(c)) return c; \/\/ accept raw m1..m6\r\n        }\r\n        return null;\r\n      }\r\n      \/\/ Annotate options at runtime (no HTML changes needed)\r\n      Array.from(select.options).forEach((opt) => {\r\n        const code = resolveCode(opt);\r\n        if (code) opt.dataset.key = code;\r\n      });\r\n\r\n      \/\/ Load per-locale descriptions with EN fallback\r\n      let SCEN_DESC = {}; \/\/ { code: description }\r\n      async function loadDescriptions() {\r\n        const primary = I18N_URLS[LOCALE] || I18N_URLS.en;\r\n        async function fetchJSON(url) {\r\n          const res = await fetch(url, { credentials: \"same-origin\" });\r\n          if (!res.ok) throw new Error(\"HTTP \" + res.status);\r\n          return res.json();\r\n        }\r\n        try {\r\n          SCEN_DESC = await fetchJSON(primary);\r\n        } catch (e) {\r\n          \/\/ Fallback to EN if FR fails\r\n          try {\r\n            SCEN_DESC = await fetchJSON(I18N_URLS.en);\r\n          } catch (_) {\r\n            SCEN_DESC = {};\r\n          }\r\n        }\r\n      }\r\n\r\n      function getDescription(code) {\r\n        return ((SCEN_DESC && SCEN_DESC[code]) || \"\").trim();\r\n      }\r\n\r\n      function renderScenario() {\r\n        const opt = select.selectedOptions[0];\r\n        const code = resolveCode(opt);\r\n        titleEl.textContent = (opt?.textContent || \"\").trim() || code || \"\";\r\n        const desc = code ? getDescription(code) : \"\";\r\n        textEl.textContent =\r\n          desc ||\r\n          (LOCALE === \"fr\"\r\n            ? \"Aucune description disponible pour ce sc\u00e9nario.\"\r\n            : \"No description available for this scenario.\");\r\n      }\r\n\r\n      function placePanelIndent() {\r\n        const btnRect = btn.getBoundingClientRect();\r\n        const rowRect = headerRow.getBoundingClientRect();\r\n        const indent = Math.max(0, btnRect.left - rowRect.left);\r\n        panel.style.setProperty(\"--panel-indent\", `${indent}px`);\r\n      }\r\n      function setBtnLabel(isOpen) {\r\n        btn.textContent = isOpen\r\n          ? LOCALE === \"fr\"\r\n            ? \"Masquer les d\u00e9tails\"\r\n            : \"Hide details\"\r\n          : LOCALE === \"fr\"\r\n            ? \"Voir tous les d\u00e9tails du sc\u00e9nario\"\r\n            : \"See full scenario details\";\r\n      }\r\n      function openPanel() {\r\n        renderScenario();\r\n        placePanelIndent();\r\n        panel.classList.add(\"is-open\");\r\n        panel.setAttribute(\"aria-hidden\", \"false\");\r\n        btn.setAttribute(\"aria-expanded\", \"true\");\r\n        setBtnLabel(true);\r\n        panel.style.height = \"0px\";\r\n        requestAnimationFrame(() => {\r\n          const target = panel.scrollHeight;\r\n          panel.style.height = target + \"px\";\r\n          panel.addEventListener(\"transitionend\", function onEnd(e) {\r\n            if (e.propertyName === \"height\") {\r\n              panel.style.height = \"auto\";\r\n              panel.removeEventListener(\"transitionend\", onEnd);\r\n            }\r\n          });\r\n        });\r\n        window.addEventListener(\"resize\", placePanelIndent);\r\n      }\r\n      function closePanel() {\r\n        btn.setAttribute(\"aria-expanded\", \"false\");\r\n        setBtnLabel(false);\r\n        const current = panel.getBoundingClientRect().height;\r\n        panel.style.height = current + \"px\";\r\n        requestAnimationFrame(() => {\r\n          panel.style.height = \"0px\";\r\n        });\r\n        panel.addEventListener(\"transitionend\", function onEnd(e) {\r\n          if (e.propertyName === \"height\") {\r\n            panel.classList.remove(\"is-open\");\r\n            panel.setAttribute(\"aria-hidden\", \"true\");\r\n            panel.removeEventListener(\"transitionend\", onEnd);\r\n          }\r\n        });\r\n        window.removeEventListener(\"resize\", placePanelIndent);\r\n      }\r\n      function togglePanel() {\r\n        panel.classList.contains(\"is-open\") ? closePanel() : openPanel();\r\n      }\r\n\r\n      btn.addEventListener(\"click\", (e) => {\r\n        e.preventDefault();\r\n        togglePanel();\r\n      });\r\n      select.addEventListener(\"change\", () => {\r\n        if (!panel.classList.contains(\"is-open\")) return;\r\n        renderScenario();\r\n        const from = panel.getBoundingClientRect().height;\r\n        panel.style.height = from + \"px\";\r\n        requestAnimationFrame(() => {\r\n          panel.style.height = panel.scrollHeight + \"px\";\r\n        });\r\n      });\r\n\r\n      \/\/ Load once on page load\r\n      loadDescriptions();\r\n    });\r\n\r\n    const defaultValues = {\r\n      Alberta: [3.0, 6.4, 2.9, 36400],\r\n      \"British Columbia\": [2.3, 4.4, 3.1, 48500],\r\n      Manitoba: [3.9, 7.6, 6.0, 18833],\r\n      \"New Brunswick\": [4.1, 6.7, 2.0, 10700],\r\n      \"Newfoundland and Labrador\": [12.1, 3.6, 3.2, 10400],\r\n      \"Nova Scotia\": [3.7, 7.7, 1.9, 13600],\r\n      Ontario: [2.4, 5.3, 1.4, 118400],\r\n      \"Prince Edward Island\": [1.0, 8.2, 3.4, 2067],\r\n      Quebec: [1.9, 3.1, 4.9, 83467],\r\n      Saskatchewan: [1.7, 8.6, 5.1, 13967],\r\n      Yukon: [7.8, 7.1, 7.1, 433],\r\n      Nunavut: [7.8, 7.1, 7.1, 233],\r\n      \"Northwest Territories\": [7.8, 7.1, 7.1, 233],\r\n      Canada: [2.6, 5.0, 3.0, 357233],\r\n    };\r\n\r\n    document\r\n      .getElementById(\"resetDefaults\")\r\n      .addEventListener(\"click\", function () {\r\n        \/\/ Reset the dropdown to the canonical M4 option\r\n        const selectEl = document.getElementById(\"scenario\");\r\n        const defaultOpt = Array.from(selectEl.options).find(\r\n          (o) => (o.dataset.key || \"\").toLowerCase() === \"m4\",\r\n        );\r\n        selectEl.value = defaultOpt ? defaultOpt.value : \"Medium-growth 4\";\r\n\r\n        \/\/ Refresh the description panel if it's open\r\n        selectEl.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n\r\n        \/\/ Reset all rows to defaults\r\n        const rows = document.querySelectorAll(\r\n          \"#unique-scenario-table tbody tr\",\r\n        );\r\n        rows.forEach((row) => {\r\n          const province = row\r\n            .querySelector(\".province-name\")\r\n            .getAttribute(\"data-province\");\r\n          const defaults = defaultValues[province];\r\n\r\n          const sliders = row.querySelectorAll('input[type=\"range\"]');\r\n          sliders.forEach((slider, i) => {\r\n            slider.value = defaults[i];\r\n            slider.previousElementSibling.previousElementSibling.textContent =\r\n              defaults[i];\r\n          });\r\n\r\n          const countInput = row.querySelector('input[type=\"number\"]');\r\n          countInput.value = defaults[3];\r\n        });\r\n\r\n        \/\/ Keep Canada aggregates in sync immediately\r\n        if (typeof updateCanadaAggregates === \"function\")\r\n          updateCanadaAggregates();\r\n      });\r\n\r\n    \/\/ ** PSW Rate slider sync with PSW Counts by province - START ** \/\/\r\n\r\n    const populationData = {\r\n      Alberta: 294220,\r\n      \"British Columbia\": 494119,\r\n      Manitoba: 107683,\r\n      \"New Brunswick\": 83333,\r\n      \"Newfoundland and Labrador\": 55038,\r\n      \"Nova Scotia\": 102744,\r\n      \"Northwest Territories\": 1721,\r\n      Nunavut: 528,\r\n      Ontario: 1312822,\r\n      \"Prince Edward Island\": 15882,\r\n      Quebec: 843323,\r\n      Saskatchewan: 90982,\r\n      Yukon: 2457,\r\n    };\r\n\r\n    function updateCanadaAggregates() {\r\n      const table = document.getElementById(\"unique-scenario-table\");\r\n      const rows = table.querySelectorAll(\"tbody tr\");\r\n\r\n      let nationalCountSum = 0;\r\n\r\n      let sumPop75 = 0;\r\n      let sumHC = 0; \/\/ Home care\r\n      let sumRC = 0; \/\/ Residential Rate\r\n      let sumHS = 0; \/\/ Hospital\r\n\r\n      rows.forEach((row) => {\r\n        const pname = row\r\n          .querySelector(\".province-name\")\r\n          ?.getAttribute(\"data-province\");\r\n        if (!pname || pname === \"Canada\") return;\r\n\r\n        const pop = populationData[pname] || 0;\r\n        const sliders = row.querySelectorAll('input[type=\"range\"]');\r\n        const rateHC = parseFloat(sliders[0].value) || 0;\r\n        const rateRC = parseFloat(sliders[1].value) || 0;\r\n        const rateHS = parseFloat(sliders[2].value) || 0;\r\n\r\n        const countInput = row.querySelector('input[type=\"number\"]');\r\n        nationalCountSum += parseInt(countInput.value) || 0;\r\n\r\n        \/\/ Accumulate for weighted averages\r\n        sumPop75 += pop;\r\n        sumHC += rateHC * pop;\r\n        sumRC += rateRC * pop;\r\n        sumHS += rateHS * pop;\r\n      });\r\n\r\n      const canadaRow = Array.from(rows).find(\r\n        (r) =>\r\n          r.querySelector(\".province-name\")?.getAttribute(\"data-province\") ===\r\n          \"Canada\",\r\n      );\r\n\r\n      if (!canadaRow) return;\r\n\r\n      \/\/ Update Canada total count (sum of 13)\r\n      const canadaCountInput = canadaRow.querySelector('input[type=\"number\"]');\r\n      if (canadaCountInput) {\r\n        canadaCountInput.value = Math.round(nationalCountSum);\r\n      }\r\n\r\n      \/\/ Update Canada rates\r\n      if (sumPop75 > 0) {\r\n        const canadaSliders = canadaRow.querySelectorAll('input[type=\"range\"]');\r\n        const canadaValueChips = canadaRow.querySelectorAll(\".current-value\");\r\n\r\n        const natHC = sumHC \/ sumPop75;\r\n        const natRC = sumRC \/ sumPop75;\r\n        const natHS = sumHS \/ sumPop75;\r\n\r\n        const setOne = (slider, chip, val) => {\r\n          const v = Math.max(0, Math.min(15, val));\r\n          slider.value = v.toFixed(1);\r\n          chip.textContent = v.toFixed(1);\r\n        };\r\n\r\n        if (canadaSliders.length === 3 && canadaValueChips.length === 3) {\r\n          setOne(canadaSliders[0], canadaValueChips[0], natHC); \/\/ Home Care\r\n          setOne(canadaSliders[1], canadaValueChips[1], natRC); \/\/ Residential Care\r\n          setOne(canadaSliders[2], canadaValueChips[2], natHS); \/\/ Hospital\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ Flag to prevent infinite loops between slider and count updates\r\n    let isUpdatingFromCount = false;\r\n    let isUpdatingFromSlider = false;\r\n\r\n    \/\/ Function to calculate PSW count from rates\r\n    function calculateCountFromRates(\r\n      homeCareRate,\r\n      residentialCareRate,\r\n      hospitalRate,\r\n      province,\r\n    ) {\r\n      const population75Plus = populationData[province];\r\n      if (!population75Plus) return 0;\r\n\r\n      \/\/ Convert each rate to count by dividing by 100, then multiply by population\r\n      const homeCareCount = (homeCareRate \/ 100) * population75Plus;\r\n      const residentialCareCount =\r\n        (residentialCareRate \/ 100) * population75Plus;\r\n      const hospitalCount = (hospitalRate \/ 100) * population75Plus;\r\n\r\n      \/\/ Sum all three counts\r\n      return Math.round(homeCareCount + residentialCareCount + hospitalCount);\r\n    }\r\n\r\n    \/\/ Function to update PSW count when sliders change\r\n    function updateCountFromSliders(row) {\r\n      if (isUpdatingFromCount) return; \/\/ Prevent infinite loop\r\n\r\n      isUpdatingFromSlider = true;\r\n      const province = row\r\n        .querySelector(\".province-name\")\r\n        .getAttribute(\"data-province\");\r\n      const sliders = row.querySelectorAll('input[type=\"range\"]');\r\n      const countInput = row.querySelector('input[type=\"number\"]');\r\n\r\n      const rates = Array.from(sliders).map((slider) =>\r\n        parseFloat(slider.value),\r\n      );\r\n      const newCount = calculateCountFromRates(\r\n        rates[0],\r\n        rates[1],\r\n        rates[2],\r\n        province,\r\n      );\r\n\r\n      countInput.value = newCount;\r\n      isUpdatingFromSlider = false;\r\n    }\r\n\r\n    \/\/ Function to calculate new rate distributions when count changes\r\n    function getNewRateDistributions(\r\n      newCount,\r\n      currentRateHC,\r\n      currentRateRC,\r\n      currentRateHS,\r\n      population,\r\n    ) {\r\n      const rateTotal = currentRateHC + currentRateRC + currentRateHS;\r\n\r\n      \/\/ If all rates are 0, return 0 for all (shouldn't happen based on user requirement)\r\n      if (rateTotal === 0) {\r\n        return { HC: 0, RC: 0, HS: 0 };\r\n      }\r\n\r\n      \/\/ Calculate percentage each rate contributes\r\n      const percentRateHC = currentRateHC \/ rateTotal;\r\n      const percentRateRC = currentRateRC \/ rateTotal;\r\n      const percentRateHS = currentRateHS \/ rateTotal;\r\n\r\n      \/\/ Distribute new count proportionally\r\n      const countHC = percentRateHC * newCount;\r\n      const countRC = percentRateRC * newCount;\r\n      const countHS = percentRateHS * newCount;\r\n\r\n      \/\/ Convert back to rates\r\n      const newRateHC = Math.min((countHC \/ population) * 100.0, 15);\r\n      const newRateRC = Math.min((countRC \/ population) * 100.0, 15);\r\n      const newRateHS = Math.min((countHS \/ population) * 100.0, 15);\r\n\r\n      return {\r\n        HC: newRateHC,\r\n        RC: newRateRC,\r\n        HS: newRateHS,\r\n      };\r\n    }\r\n\r\n    \/\/ Function to update sliders when count changes\r\n    function updateSlidersFromCount(row) {\r\n      if (isUpdatingFromSlider) return; \/\/ Prevent infinite loop\r\n\r\n      isUpdatingFromCount = true;\r\n\r\n      const province = row\r\n        .querySelector(\".province-name\")\r\n        .getAttribute(\"data-province\");\r\n      const countInput = row.querySelector('input[type=\"number\"]');\r\n      const sliders = row.querySelectorAll('input[type=\"range\"]');\r\n      const valueDisplays = row.querySelectorAll(\".current-value\");\r\n\r\n      const newCount = parseInt(countInput.value) || 0;\r\n      const population75Plus = populationData[province];\r\n\r\n      if (!population75Plus) {\r\n        isUpdatingFromCount = false;\r\n        return;\r\n      }\r\n\r\n      \/\/ Get current rates\r\n      const currentRateHC = defaultValues[province][0];\r\n      const currentRateRC = defaultValues[province][1];\r\n      const currentRateHS = defaultValues[province][2];\r\n\r\n      \/\/ Calculate new rates\r\n      const newRates = getNewRateDistributions(\r\n        newCount,\r\n        currentRateHC,\r\n        currentRateRC,\r\n        currentRateHS,\r\n        population75Plus,\r\n      );\r\n\r\n      \/\/ Update sliders and their display values\r\n      sliders[0].value = newRates.HC.toFixed(1);\r\n      sliders[1].value = newRates.RC.toFixed(1);\r\n      sliders[2].value = newRates.HS.toFixed(1);\r\n\r\n      valueDisplays[0].textContent = newRates.HC.toFixed(1);\r\n      valueDisplays[1].textContent = newRates.RC.toFixed(1);\r\n      valueDisplays[2].textContent = newRates.HS.toFixed(1);\r\n\r\n      isUpdatingFromCount = false;\r\n    }\r\n\r\n    const table = document.getElementById(\"unique-scenario-table\");\r\n    const rows = table.querySelectorAll(\"tbody tr\");\r\n\r\n    rows.forEach((row) => {\r\n      \/\/ Add event listeners to sliders\r\n      const sliders = row.querySelectorAll('input[type=\"range\"]');\r\n      sliders.forEach((slider) => {\r\n        slider.addEventListener(\"input\", function () {\r\n          \/\/ Update the display value\r\n          this.previousElementSibling.previousElementSibling.textContent =\r\n            this.value;\r\n          \/\/ Update the PSW count\r\n          updateCountFromSliders(row);\r\n          updateCanadaAggregates();\r\n        });\r\n      });\r\n      \/\/ Add event listener to PSW count input\r\n      const countInput = row.querySelector('input[type=\"number\"]');\r\n      countInput.addEventListener(\"input\", function () {\r\n        this.value = this.value.replace(\/[^0-9]\/g, \"\");\r\n        \/\/ Update the sliders\r\n        updateSlidersFromCount(row);\r\n        updateCanadaAggregates();\r\n      });\r\n    });\r\n    \/\/ ** PSW Rate slider sync with PSW Counts by province - END ** \/\/\r\n\r\n    \/\/ Tab switching functionality\r\n    document.querySelectorAll(\".tab\").forEach((tab) => {\r\n      tab.addEventListener(\"click\", function () {\r\n        \/\/ Remove active class from all tabs\r\n        document\r\n          .querySelectorAll(\".tab\")\r\n          .forEach((t) => t.classList.remove(\"active\"));\r\n        document\r\n          .querySelectorAll(\".tab-content\")\r\n          .forEach((content) => content.classList.remove(\"active\"));\r\n\r\n        \/\/ Add active class to current tab\r\n        this.classList.add(\"active\");\r\n\r\n        \/\/ Get the tab name from data-tab attribute\r\n        const selectedTab = this.dataset.tab;\r\n        const modelId = window.getModelId();\r\n        window.modelVisualizations[modelId].setTabSelected(selectedTab);\r\n        if (selectedTab == \"comparison-scenario\") {\r\n          const comparisonScenarios =\r\n            window.modelVisualizations[modelId].getComparisons();\r\n\r\n          console.log(comparisonScenarios);\r\n          \/\/ Update the comparison table\r\n          updateComparisonTable(comparisonScenarios);\r\n        }\r\n\r\n        document.getElementById(this.dataset.tab).classList.add(\"active\");\r\n      });\r\n    });\r\n\r\n    \/\/ Default values to display in Parameters table in comparison tab\r\n\r\n    function normalizeProvinceKey(name) {\r\n      \/\/ Handles \"Yukon *\" display text vs \"Yukon\" defaultValues key\r\n      return (name || \"\").replace(\/\\s*\\*+$\/g, \"\").trim();\r\n    }\r\n\r\n    function getDefaultProvinceValue(provinceName, property) {\r\n      const key = normalizeProvinceKey(provinceName);\r\n      const defaults = defaultValues[key];\r\n      if (!defaults) return null;\r\n\r\n      const idx =\r\n        property === \"homeCare\"\r\n          ? 0\r\n          : property === \"residentialCare\"\r\n            ? 1\r\n            : property === \"hospital\"\r\n              ? 2\r\n              : property === \"pswCount\"\r\n                ? 3\r\n                : null;\r\n\r\n      return idx === null ? null : defaults[idx];\r\n    }\r\n\r\n    function formatValue(property, value) {\r\n      if (value === null || typeof value === \"undefined\") return \"\";\r\n      if (\r\n        property === \"homeCare\" ||\r\n        property === \"residentialCare\" ||\r\n        property === \"hospital\"\r\n      ) {\r\n        return Number(value).toFixed(1);\r\n      }\r\n      if (property === \"pswCount\") return String(parseInt(value, 10));\r\n      return String(value);\r\n    }\r\n\r\n    function getDefaultScenarioValue() {\r\n      return \"Medium-growth 4\";\r\n    }\r\n\r\n    \/\/ Locale\r\n    const LOCALE = (document.documentElement.lang || \"en\")\r\n      .toLowerCase()\r\n      .startsWith(\"fr\")\r\n      ? \"fr\"\r\n      : \"en\";\r\n\r\n    const I18N = {\r\n      en: {\r\n        parameter: \"Parameter\",\r\n        default: \"Default\",\r\n        populationScenario: \"Population Projection Scenario\",\r\n        homeCare: \"Home Care\",\r\n        residentialCare: \"Residential Care\",\r\n        hospital: \"Hospital\",\r\n        pswCount: \"PSW Count\",\r\n      },\r\n      fr: {\r\n        parameter: \"Param\u00e8tre\",\r\n        default: \"Par d\u00e9faut\",\r\n        populationScenario: \"Sc\u00e9nario de projection d\u00e9mographique\",\r\n        homeCare: \"Soins \u00e0 domicile\",\r\n        residentialCare: \"Soins en \u00e9tablissement\",\r\n        hospital: \"H\u00f4pital\",\r\n        pswCount: \"Nombre de PSSP\",\r\n      },\r\n    };\r\n\r\n    function t(key) {\r\n      return (I18N[LOCALE] && I18N[LOCALE][key]) || I18N.en[key] || key;\r\n    }\r\n\r\n    \/\/ XSS-safe escaper\r\n    function escHTML(value) {\r\n      return String(value ?? \"\")\r\n        .replace(\/&\/g, \"&amp;\")\r\n        .replace(\/<\/g, \"&lt;\")\r\n        .replace(\/>\/g, \"&gt;\")\r\n        .replace(\/\"\/g, \"&quot;\")\r\n        .replace(\/'\/g, \"&#39;\");\r\n    }\r\n\r\n    \/\/ Safe selector escaping\r\n    const cssEscape =\r\n      window.CSS && CSS.escape\r\n        ? CSS.escape\r\n        : (s) => String(s).replace(\/[\"\\\\]\/g, \"\\\\$&\");\r\n\r\n    \/\/ Localized *display* label for scenario value (e.g., \"Medium-growth 4\" -> \"Croissance moyenne 4\" on FR page)\r\n    function scenarioLabel(rawValue) {\r\n      const opt = document.querySelector(\r\n        `#scenario option[value=\"${cssEscape(rawValue)}\"]`,\r\n      );\r\n      return opt ? opt.textContent.trim() : String(rawValue ?? \"\");\r\n    }\r\n\r\n    \/\/ Localized *display* label for province key (e.g., \"British Columbia\" -> \"Colombie-Britannique\" on FR page)\r\n    function provinceLabel(enProvinceKey) {\r\n      const cell = document.querySelector(\r\n        `#unique-scenario-table .province-name[data-province=\"${cssEscape(enProvinceKey)}\"]`,\r\n      );\r\n      return cell ? cell.textContent.trim() : String(enProvinceKey ?? \"\");\r\n    }\r\n\r\n    \/\/ Function to update the comparison table\r\n    function updateComparisonTable(comparisonScenarios) {\r\n      if (comparisonScenarios.length === 0) {\r\n        document.getElementById(\"no-comparisons\").style.display = \"block\";\r\n        document.getElementById(\"comparison-table\").style.display = \"none\";\r\n        return;\r\n      }\r\n\r\n      document.getElementById(\"no-comparisons\").style.display = \"none\";\r\n      document.getElementById(\"comparison-table\").style.display = \"table\";\r\n\r\n      \/\/ Clear current table\r\n      const headerRow = document.getElementById(\"comparison-header\");\r\n\r\n      headerRow.innerHTML = `<th>${escHTML(t(\"parameter\"))}<\/th><th>${escHTML(t(\"default\"))}<\/th>`;\r\n\r\n      const modelId = window.getModelId();\r\n\r\n      comparisonScenarios.forEach((scenario) => {\r\n        const isChecked = window.modelVisualizations[\r\n          modelId\r\n        ].getComparisonActive(scenario.id);\r\n        headerRow.innerHTML += `\r\n                    <th class=\"comparison-scenario\">\r\n                        <div class=\"scenario-header\">\r\n                        <div style=\"display: flex; gap: 10px; flex: 0.7;justify-content: end;flex-wrap:wrap\"\">\r\n                            <span class=\"scenario-name\">${escHTML(scenario.name)}<\/span>\r\n                            <div class=\"scenario-controls\">\r\n                                <label class=\"compare-toggle-switch\">\r\n                                    <input type=\"checkbox\" class=\"scenario-toggle\" data-id=\"${scenario.id}\" ${isChecked ? \"checked\" : \"\"}>\r\n                                    <span class=\"compare-slider round\"><\/span>\r\n                                <\/label>\r\n                            <\/div>\r\n                            <\/div>\r\n                            <div class=\"scenario-delete\" data-scenario-id=\"${scenario.id}\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n                              <path d=\"M3 6h18\"><\/path>\r\n                              <path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"><\/path>\r\n                              <path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"><\/path>\r\n                              <line x1=\"10\" y1=\"11\" x2=\"10\" y2=\"17\"><\/line>\r\n                              <line x1=\"14\" y1=\"11\" x2=\"14\" y2=\"17\"><\/line>\r\n                                <\/svg>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/th>\r\n                `;\r\n      });\r\n\r\n      \/\/ Rebuild comparison body\r\n      const comparisonBody = document.getElementById(\"comparison-body\");\r\n      comparisonBody.innerHTML = \"\";\r\n\r\n      \/\/ Function to check if a value differs across scenarios\r\n      function valuesDiffer(provinceIndex, property) {\r\n        const firstValue =\r\n          comparisonScenarios[0].input.provinces[provinceIndex][property];\r\n        return comparisonScenarios.some(\r\n          (s) => s.input.provinces[provinceIndex][property] !== firstValue,\r\n        );\r\n      }\r\n\r\n      function differsFromDefault(provinceIndex, property) {\r\n        const provinceName =\r\n          comparisonScenarios[0].input.provinces[provinceIndex].name;\r\n        const defVal = getDefaultProvinceValue(provinceName, property);\r\n        if (defVal === null) return false;\r\n        return comparisonScenarios.some(\r\n          (s) => s.input.provinces[provinceIndex][property] !== defVal,\r\n        );\r\n      }\r\n\r\n      const defaultScenario = getDefaultScenarioValue();\r\n\r\n      const row = document.createElement(\"tr\");\r\n      row.innerHTML = `<td>${escHTML(t(\"populationScenario\"))}<\/td>`;\r\n      row.innerHTML += `<td>${escHTML(scenarioLabel(defaultScenario))}<\/td>`;\r\n\r\n      comparisonScenarios.forEach((scenario) => {\r\n        const shown = scenarioLabel(scenario.input.scenario);\r\n        const isDiff = scenario.input.scenario !== defaultScenario;\r\n        row.innerHTML += `<td class=\"${isDiff ? \"diff-from-default\" : \"\"}\">${escHTML(shown)}<\/td>`;\r\n      });\r\n\r\n      document.getElementById(\"comparison-body\").appendChild(row);\r\n\r\n      \/\/ Only display rows where values differ\r\n      for (let i = 0; i < comparisonScenarios[0].input.provinces.length; i++) {\r\n        const provinceKey = comparisonScenarios[0].input.provinces[i].name;\r\n        const provinceShown = provinceLabel(provinceKey);\r\n\r\n        const homeDiffers =\r\n          differsFromDefault(i, \"homeCare\") || valuesDiffer(i, \"homeCare\");\r\n        const residentialDiffers =\r\n          differsFromDefault(i, \"residentialCare\") ||\r\n          valuesDiffer(i, \"residentialCare\");\r\n        const hospitalDiffers =\r\n          differsFromDefault(i, \"hospital\") || valuesDiffer(i, \"hospital\");\r\n        const pswDiffers =\r\n          differsFromDefault(i, \"pswCount\") || valuesDiffer(i, \"pswCount\");\r\n\r\n        \/\/ Add rows for each differing parameter\r\n        if (homeDiffers)\r\n          addComparisonRow(\r\n            comparisonScenarios,\r\n            `${provinceShown} - ${t(\"homeCare\")}`,\r\n            i,\r\n            \"homeCare\",\r\n          );\r\n        if (residentialDiffers)\r\n          addComparisonRow(\r\n            comparisonScenarios,\r\n            `${provinceShown} - ${t(\"residentialCare\")}`,\r\n            i,\r\n            \"residentialCare\",\r\n          );\r\n        if (hospitalDiffers)\r\n          addComparisonRow(\r\n            comparisonScenarios,\r\n            `${provinceShown} - ${t(\"hospital\")}`,\r\n            i,\r\n            \"hospital\",\r\n          );\r\n        if (pswDiffers)\r\n          addComparisonRow(\r\n            comparisonScenarios,\r\n            `${provinceShown} - ${t(\"pswCount\")}`,\r\n            i,\r\n            \"pswCount\",\r\n          );\r\n      }\r\n\r\n      \/\/ Add event listeners for toggle switches\r\n      document.querySelectorAll(\".scenario-toggle\").forEach((toggle) => {\r\n        toggle.addEventListener(\"change\", function () {\r\n          const id = parseInt(this.dataset.id);\r\n          const isVisible = this.checked;\r\n\r\n          const modelId = window.getModelId();\r\n          const isToggleSuccessful = window.modelVisualizations[\r\n            modelId\r\n          ].setComparisonActive(id, isVisible);\r\n\r\n          if (!isToggleSuccessful) {\r\n            \/\/ Revert the toggle state to its original state\r\n            this.checked = !isVisible;\r\n          }\r\n        });\r\n      });\r\n\r\n      document.querySelectorAll(\".scenario-delete\").forEach((deleteButton) => {\r\n        deleteButton.addEventListener(\"click\", function () {\r\n          const scenarioId = this.getAttribute(\"data-scenario-id\");\r\n          const modelId = window.getModelId();\r\n          const deleteScenario =\r\n            window.modelVisualizations[modelId].deleteScenario(scenarioId);\r\n          console.log(\"deleted\");\r\n          const comparisonScenarios =\r\n            window.modelVisualizations[modelId].getComparisons();\r\n          console.log(comparisonScenarios);\r\n\r\n          updateComparisonTable(comparisonScenarios);\r\n        });\r\n      });\r\n    }\r\n\r\n    \/\/ Helper function to add a row to the comparison table\r\n    function addComparisonRow(\r\n      comparisonScenarios,\r\n      label,\r\n      provinceIndex,\r\n      property,\r\n    ) {\r\n      const row = document.createElement(\"tr\");\r\n      row.innerHTML = `<td>${escHTML(label)}<\/td>`;\r\n\r\n      const provinceName =\r\n        comparisonScenarios[0].input.provinces[provinceIndex].name;\r\n      const defVal = getDefaultProvinceValue(provinceName, property);\r\n\r\n      \/\/ Default column\r\n      row.innerHTML += `<td>${escHTML(formatValue(property, defVal))}<\/td>`;\r\n\r\n      \/\/ Scenario columns (highlight if differs from default)\r\n      comparisonScenarios.forEach((scenario) => {\r\n        const val = scenario.input.provinces[provinceIndex][property];\r\n        const isDiff = defVal !== null && val !== defVal;\r\n        row.innerHTML += `<td class=\"${isDiff ? \"diff-from-default\" : \"\"}\">${escHTML(formatValue(property, val))}<\/td>`;\r\n      });\r\n\r\n      document.getElementById(\"comparison-body\").appendChild(row);\r\n    }\r\n  <\/script>\r\n<\/div>\r\n\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-61f7c94 e-con-full e-flex e-con e-child\" data-id=\"61f7c94\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b41cc4 elementor-widget elementor-widget-shortcode\" data-id=\"2b41cc4\" 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=\"anylogic-simulation-container\"><div class=\"anylogic-run-btn psw-button\" data-model-id=\"f84cb6b8-d94a-4df8-a02a-6842fc8012c3\">Lancer la simulation<\/div><div id=\"anylogic-simulation-f84cb6b8-d94a-4df8-a02a-6842fc8012c3\" class=\"anylogic-simulation\" data-model-id=\"f84cb6b8-d94a-4df8-a02a-6842fc8012c3\"><div id=\"anylogic-loader-f84cb6b8-d94a-4df8-a02a-6842fc8012c3\" class=\"anylogic-progress-container\"><div class=\"anylogic-progress-bar\" id=\"anylogic-progressBar\"><\/div><div class=\"anylogic-progress-text\">0%<\/div><\/div><\/div><\/div><\/div>\n\t\t\t\t\t\t<\/div>\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\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Mod\u00e9lisation et pr\u00e9vision Guide de l&#8217;utilisateur FAQ Code source Donner son avis Outil de mod\u00e9lisation relatif aux pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne\u202f\u2013 Effectif Voici notre outil de mod\u00e9lisation et de simulation de l\u2019effectif des pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne (PSSP). Con\u00e7u selon une approche \u00e0 code source ouvert, l\u2019outil [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"parent":2344,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2595","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Effectif PSSP - Health Workforce Canada<\/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:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Effectif PSSP - Health Workforce Canada\" \/>\n<meta property=\"og:description\" content=\"Mod\u00e9lisation et pr\u00e9vision Guide de l&#8217;utilisateur FAQ Code source Donner son avis Outil de mod\u00e9lisation relatif aux pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne\u202f\u2013 Effectif Voici notre outil de mod\u00e9lisation et de simulation de l\u2019effectif des pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne (PSSP). Con\u00e7u selon une approche \u00e0 code source ouvert, l\u2019outil [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/\" \/>\n<meta property=\"og:site_name\" content=\"Health Workforce Canada\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-01T14:43:03+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/\",\"url\":\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/\",\"name\":\"Effectif PSSP - Health Workforce Canada\",\"isPartOf\":{\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#website\"},\"datePublished\":\"2025-12-22T17:09:26+00:00\",\"dateModified\":\"2026-04-01T14:43:03+00:00\",\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#website\",\"url\":\"https:\/\/healthworkforce.ca\/fr\/\",\"name\":\"Health Workforce Canada\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/healthworkforce.ca\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#organization\",\"name\":\"Health Workforce Canada\",\"alternateName\":\"HWC\",\"url\":\"https:\/\/healthworkforce.ca\/fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/healthworkforce.ca\/wp-content\/uploads\/2024\/06\/HWC-logo.svg\",\"contentUrl\":\"https:\/\/healthworkforce.ca\/wp-content\/uploads\/2024\/06\/HWC-logo.svg\",\"width\":1871,\"height\":344,\"caption\":\"Health Workforce Canada\"},\"image\":{\"@id\":\"https:\/\/healthworkforce.ca\/fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/health-workforce-canada\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Effectif PSSP - Health Workforce Canada","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:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/","og_locale":"fr_FR","og_type":"article","og_title":"Effectif PSSP - Health Workforce Canada","og_description":"Mod\u00e9lisation et pr\u00e9vision Guide de l&#8217;utilisateur FAQ Code source Donner son avis Outil de mod\u00e9lisation relatif aux pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne\u202f\u2013 Effectif Voici notre outil de mod\u00e9lisation et de simulation de l\u2019effectif des pr\u00e9pos\u00e9s aux services de soutien \u00e0 la personne (PSSP). Con\u00e7u selon une approche \u00e0 code source ouvert, l\u2019outil [&hellip;]","og_url":"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/","og_site_name":"Health Workforce Canada","article_modified_time":"2026-04-01T14:43:03+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/","url":"https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/","name":"Effectif PSSP - Health Workforce Canada","isPartOf":{"@id":"https:\/\/healthworkforce.ca\/fr\/#website"},"datePublished":"2025-12-22T17:09:26+00:00","dateModified":"2026-04-01T14:43:03+00:00","inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/healthworkforce.ca\/fr\/modelisation-et-prevision\/effectif-pssp\/"]}]},{"@type":"WebSite","@id":"https:\/\/healthworkforce.ca\/fr\/#website","url":"https:\/\/healthworkforce.ca\/fr\/","name":"Health Workforce Canada","description":"","publisher":{"@id":"https:\/\/healthworkforce.ca\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/healthworkforce.ca\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/healthworkforce.ca\/fr\/#organization","name":"Health Workforce Canada","alternateName":"HWC","url":"https:\/\/healthworkforce.ca\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/healthworkforce.ca\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/healthworkforce.ca\/wp-content\/uploads\/2024\/06\/HWC-logo.svg","contentUrl":"https:\/\/healthworkforce.ca\/wp-content\/uploads\/2024\/06\/HWC-logo.svg","width":1871,"height":344,"caption":"Health Workforce Canada"},"image":{"@id":"https:\/\/healthworkforce.ca\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/health-workforce-canada\/"]}]}},"_links":{"self":[{"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/pages\/2595","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/comments?post=2595"}],"version-history":[{"count":0,"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/pages\/2595\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/pages\/2344"}],"wp:attachment":[{"href":"https:\/\/healthworkforce.ca\/fr\/wp-json\/wp\/v2\/media?parent=2595"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}