{"id":3585,"date":"2026-09-13T00:37:21","date_gmt":"2026-09-13T00:37:21","guid":{"rendered":"https:\/\/jiris.ca\/?page_id=3585"},"modified":"2026-09-13T00:38:08","modified_gmt":"2026-09-13T00:38:08","slug":"fiche-sortir-de-la-procrastination","status":"publish","type":"page","link":"https:\/\/jiris.ca\/en\/fiche-sortir-de-la-procrastination\/","title":{"rendered":"Fiche-Sortir de la procrastination"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3585\" class=\"elementor elementor-3585\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6e89b5e9 e-flex e-con-boxed e-con e-parent\" data-id=\"6e89b5e9\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d02bb27 e-con-full e-flex e-con e-child\" data-id=\"d02bb27\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b562688 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"2b562688\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;,&quot;_animation_delay&quot;:200}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Sortir de la procrastination\n<\/h1>\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-98aeed2 e-flex e-con-boxed e-con e-parent\" data-id=\"98aeed2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50e53c9 elementor-widget elementor-widget-html\" data-id=\"50e53c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Sortir de la procrastination \u2014 Outil d'accompagnement JIRIS<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,400&family=Work+Sans:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --bg: #F4F2F8;\n    --surface: #FFFFFF;\n    --surface-soft: #FAF8FE;\n    --ink: #2A2438;\n    --muted: #756E8C;\n    --divider: #E1DCEC;\n    --primary: #453876;\n    --primary-light: #6D5AA0;\n    --primary-soft: #ECE8F8;\n    --primary-shadow: rgba(69, 56, 118, 0.14);\n    --accent: #2F8F5B;\n    --accent-soft: #E6F5EE;\n    --accent-shadow: rgba(47, 143, 91, 0.16);\n    --warm: #D97706;\n    --warm-soft: #FEF3C7;\n    --warm-border: #FDE68A;\n    --danger: #DC2626;\n    --danger-soft: #FEF2F2;\n    --danger-border: #FCA5A5;\n    --radius: 18px;\n    --radius-sm: 12px;\n    --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n\n  body {\n    background: var(--bg);\n    color: var(--ink);\n    font-family: \"Work Sans\", sans-serif;\n    line-height: 1.6;\n    -webkit-font-smoothing: antialiased;\n    min-height: 100vh;\n    background-image:\n      radial-gradient(circle at 15% 0%, rgba(109, 90, 160, 0.08) 0%, transparent 45%),\n      radial-gradient(circle at 85% 100%, rgba(47, 143, 91, 0.06) 0%, transparent 45%);\n    background-attachment: fixed;\n  }\n\n  .wrap {\n    max-width: 780px;\n    margin: 0 auto;\n    padding: 40px 20px 80px;\n  }\n\n  \/* ===== HERO ===== *\/\n  .hero {\n    text-align: center;\n    margin-bottom: 32px;\n  }\n\n  .hero-frame {\n    width: 72px;\n    height: 72px;\n    margin: 0 auto 20px;\n    border-radius: 22px;\n    background: linear-gradient(135deg, var(--primary-soft), var(--accent-soft));\n    border: 1.5px solid var(--divider);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 34px;\n    box-shadow: 0 12px 32px var(--primary-shadow);\n    animation: float 4s ease-in-out infinite;\n  }\n\n  @keyframes float {\n    0%, 100% { transform: translateY(0); }\n    50% { transform: translateY(-6px); }\n  }\n\n  .hero h1 {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: clamp(28px, 5.5vw, 40px);\n    color: var(--primary);\n    margin-bottom: 10px;\n    letter-spacing: -0.02em;\n  }\n\n  .hero .subtitle {\n    font-family: \"Fraunces\", serif;\n    font-style: italic;\n    color: var(--muted);\n    font-size: 17px;\n    max-width: 620px;\n    margin: 0 auto;\n  }\n\n  \/* ===== INTRO CARD ===== *\/\n  .intro-card {\n    background: var(--surface);\n    border-radius: var(--radius);\n    padding: 30px 32px;\n    margin-bottom: 32px;\n    box-shadow: 0 10px 30px rgba(42, 36, 56, 0.06);\n    border: 1px solid var(--divider);\n    border-left: 5px solid var(--primary);\n  }\n\n  .intro-card h2 {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 20px;\n    color: var(--primary);\n    margin-bottom: 14px;\n  }\n\n  .intro-card p {\n    font-size: 15.5px;\n    color: var(--ink);\n    margin-bottom: 12px;\n    line-height: 1.7;\n  }\n\n  .intro-card p:last-child { margin-bottom: 0; }\n  .intro-card strong { color: var(--primary); font-weight: 600; }\n\n  .intro-note {\n    margin-top: 18px;\n    padding: 14px 18px;\n    background: var(--primary-soft);\n    border-left: 4px solid var(--primary);\n    border-radius: 0 10px 10px 0;\n    font-size: 14px;\n    color: var(--primary);\n    line-height: 1.6;\n  }\n\n  .intro-note strong { color: var(--primary); }\n\n  \/* ===== AVERTISSEMENT (dans l'intro) ===== *\/\n  .warning-card {\n    background: var(--warm-soft);\n    border: 1.5px solid var(--warm-border);\n    border-radius: var(--radius-sm);\n    padding: 20px 22px;\n    margin-bottom: 22px;\n    display: flex;\n    gap: 14px;\n    align-items: flex-start;\n  }\n\n  .warning-card .warning-icon {\n    font-size: 24px;\n    line-height: 1;\n    flex-shrink: 0;\n    margin-top: 2px;\n  }\n\n  .warning-card .warning-content h3 {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 16px;\n    color: #92400E;\n    margin-bottom: 8px;\n  }\n\n  .warning-card .warning-content p {\n    font-size: 14px;\n    color: #78350F;\n    line-height: 1.6;\n    margin-bottom: 6px;\n  }\n\n  .warning-card .warning-content p:last-child { margin-bottom: 0; }\n\n  .warning-card strong {\n    color: #78350F;\n    font-weight: 700;\n  }\n\n  \/* ===== AVIS DE COMPL\u00c9TION ===== *\/\n  .completed-notice {\n    background: var(--accent-soft);\n    border-left: 4px solid var(--accent);\n    border-radius: 0 10px 10px 0;\n    padding: 16px 20px;\n    margin-bottom: 18px;\n    display: flex;\n    gap: 14px;\n    align-items: flex-start;\n  }\n  .completed-notice .completed-icon {\n    font-size: 22px;\n    line-height: 1;\n    flex-shrink: 0;\n    margin-top: 2px;\n  }\n  .completed-notice .completed-text { flex: 1; }\n  .completed-notice .completed-text strong {\n    display: block;\n    color: var(--accent);\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 15px;\n    margin-bottom: 6px;\n  }\n  .completed-notice .completed-text p {\n    font-size: 14px;\n    color: var(--ink);\n    line-height: 1.6;\n    margin: 0;\n  }\n\n  .restart-hint {\n    text-align: center;\n    font-size: 13px;\n    color: var(--muted);\n    font-style: italic;\n    margin-top: 16px;\n    line-height: 1.6;\n  }\n\n  \/* ===== PROGRESSION ===== *\/\n  .progress-wrapper {\n    margin-bottom: 28px;\n  }\n\n  .progress-text {\n    display: flex;\n    justify-content: space-between;\n    font-size: 13.5px;\n    font-weight: 600;\n    color: var(--muted);\n    margin-bottom: 8px;\n    letter-spacing: 0.02em;\n  }\n\n  .progress-bar {\n    width: 100%;\n    height: 8px;\n    background: var(--primary-soft);\n    border-radius: 99px;\n    overflow: hidden;\n  }\n\n  .progress-fill {\n    height: 100%;\n    background: linear-gradient(90deg, var(--primary), var(--accent));\n    border-radius: 99px;\n    transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1);\n    width: 0%;\n  }\n\n  \/* ===== \u00c9TAPE ===== *\/\n  .step {\n    display: none;\n    background: var(--surface);\n    border-radius: var(--radius);\n    padding: 34px 32px;\n    margin-bottom: 24px;\n    box-shadow: 0 10px 30px rgba(42, 36, 56, 0.06);\n    border: 1px solid var(--divider);\n    animation: fadeInUp 0.4s ease;\n  }\n\n  .step.active { display: block; }\n\n  @keyframes fadeInUp {\n    from { opacity: 0; transform: translateY(12px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  .step-badge {\n    display: inline-block;\n    padding: 5px 14px;\n    background: var(--primary-soft);\n    color: var(--primary);\n    border-radius: 99px;\n    font-size: 11.5px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n    margin-bottom: 14px;\n  }\n\n  .step-title {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 24px;\n    color: var(--primary);\n    margin-bottom: 8px;\n    line-height: 1.3;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n  }\n\n  .step-title .step-emoji {\n    font-size: 26px;\n    line-height: 1;\n  }\n\n  .step-hint {\n    font-size: 14.5px;\n    color: var(--muted);\n    margin-bottom: 22px;\n    font-style: italic;\n    line-height: 1.6;\n  }\n\n  .field-group {\n    margin-bottom: 18px;\n  }\n\n  .field-label {\n    display: block;\n    font-size: 14.5px;\n    font-weight: 600;\n    color: var(--ink);\n    margin-bottom: 8px;\n    line-height: 1.5;\n  }\n\n  .field-label .field-example {\n    display: block;\n    font-weight: 400;\n    font-style: italic;\n    font-size: 13px;\n    color: var(--muted);\n    margin-top: 4px;\n  }\n\n  textarea,\n  input[type=\"text\"] {\n    width: 100%;\n    border: 1.5px solid var(--divider);\n    background: var(--surface);\n    border-radius: 12px;\n    padding: 14px 16px;\n    font-family: \"Work Sans\", sans-serif;\n    font-size: 15px;\n    color: var(--ink);\n    transition: all var(--transition);\n    resize: vertical;\n    line-height: 1.6;\n    min-height: 90px;\n  }\n\n  input[type=\"text\"] { min-height: auto; }\n\n  textarea:focus,\n  input[type=\"text\"]:focus {\n    outline: none;\n    border-color: var(--primary-light);\n    box-shadow: 0 0 0 4px rgba(69, 56, 118, 0.08);\n  }\n\n  textarea::placeholder,\n  input::placeholder {\n    color: var(--muted);\n    opacity: 0.7;\n  }\n\n  .helper-text {\n    font-size: 13px;\n    color: var(--muted);\n    margin-top: 8px;\n    line-height: 1.6;\n    font-style: italic;\n  }\n\n  .guided-list {\n    display: flex;\n    flex-direction: column;\n    gap: 12px;\n    margin-bottom: 18px;\n  }\n\n  .guided-item {\n    background: var(--surface-soft);\n    border: 1.5px solid var(--divider);\n    border-radius: var(--radius-sm);\n    padding: 14px 18px;\n    transition: all var(--transition);\n  }\n\n  .guided-item:focus-within {\n    border-color: var(--primary);\n    background: var(--surface);\n    box-shadow: 0 0 0 4px rgba(69, 56, 118, 0.06);\n  }\n\n  .guided-item .item-label {\n    font-size: 13.5px;\n    font-weight: 600;\n    color: var(--primary);\n    margin-bottom: 8px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .guided-item .item-num {\n    display: inline-flex;\n    width: 22px;\n    height: 22px;\n    border-radius: 50%;\n    background: var(--primary-soft);\n    color: var(--primary);\n    align-items: center;\n    justify-content: center;\n    font-size: 11px;\n    font-weight: 700;\n    flex-shrink: 0;\n  }\n\n  .guided-item textarea {\n    min-height: 64px;\n    padding: 10px 14px;\n    font-size: 14.5px;\n    border: 1px solid var(--divider);\n    background: var(--surface);\n  }\n\n  \/* ===== DEUX COLONNES ===== *\/\n  .control-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 16px;\n    margin-bottom: 8px;\n  }\n\n  .control-box {\n    background: var(--surface-soft);\n    border: 1.5px solid var(--divider);\n    border-radius: var(--radius-sm);\n    padding: 16px 18px;\n    transition: all var(--transition);\n  }\n\n  .control-box:focus-within {\n    border-color: var(--primary);\n    background: var(--surface);\n    box-shadow: 0 0 0 4px rgba(69, 56, 118, 0.06);\n  }\n\n  .control-box.facts {\n    border-left: 4px solid var(--accent);\n  }\n\n  .control-box.fears {\n    border-left: 4px solid var(--warm);\n  }\n\n  .control-box .control-header {\n    font-size: 13.5px;\n    font-weight: 700;\n    margin-bottom: 10px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    line-height: 1.4;\n  }\n\n  .control-box.facts .control-header { color: var(--accent); }\n  .control-box.fears .control-header { color: var(--warm); }\n\n  .control-box .control-icon {\n    font-size: 16px;\n    line-height: 1;\n  }\n\n  .control-box textarea {\n    min-height: 120px;\n    font-size: 14.5px;\n    padding: 12px 14px;\n    border: 1px solid var(--divider);\n    background: var(--surface);\n  }\n\n  .control-box .control-help {\n    font-size: 12px;\n    color: var(--muted);\n    font-style: italic;\n    margin-top: 8px;\n    line-height: 1.5;\n  }\n\n  @media (max-width: 640px) {\n    .control-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  \/* ===== CHIPS ===== *\/\n  .chips-row {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n    margin-bottom: 14px;\n  }\n\n  .chip {\n    padding: 8px 16px;\n    background: var(--surface);\n    border: 1.5px solid var(--divider);\n    border-radius: 99px;\n    font-size: 13.5px;\n    font-weight: 500;\n    color: var(--ink);\n    cursor: pointer;\n    transition: all var(--transition);\n    font-family: inherit;\n  }\n\n  .chip:hover {\n    border-color: var(--primary);\n    color: var(--primary);\n    background: var(--primary-soft);\n  }\n\n  .chip.selected {\n    background: var(--primary);\n    border-color: var(--primary);\n    color: #FFFFFF;\n  }\n\n  \/* ===== GRILLE MULTI-S\u00c9LECTION ===== *\/\n  .multi-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));\n    gap: 10px;\n    margin-bottom: 8px;\n  }\n\n  .multi-chip {\n    padding: 12px 16px;\n    background: var(--surface-soft);\n    border: 1.5px solid var(--divider);\n    border-radius: var(--radius-sm);\n    font-size: 13.5px;\n    font-weight: 500;\n    color: var(--ink);\n    cursor: pointer;\n    transition: all var(--transition);\n    text-align: left;\n    font-family: inherit;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    line-height: 1.4;\n  }\n\n  .multi-chip::before {\n    content: \"\";\n    width: 18px;\n    height: 18px;\n    border-radius: 5px;\n    border: 1.5px solid var(--divider);\n    background: var(--surface);\n    flex-shrink: 0;\n    transition: all var(--transition);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n  }\n\n  .multi-chip:hover {\n    border-color: var(--primary);\n    background: var(--primary-soft);\n  }\n\n  .multi-chip.selected {\n    border-color: var(--primary);\n    background: var(--primary-soft);\n    color: var(--primary);\n    font-weight: 600;\n  }\n\n  .multi-chip.selected::before {\n    background: var(--primary);\n    border-color: var(--primary);\n    content: \"\u2713\";\n    color: #FFFFFF;\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  \/* ===== INFO ENCADR\u00c9 ===== *\/\n  .info-callout {\n    background: var(--accent-soft);\n    border-left: 4px solid var(--accent);\n    border-radius: 0 12px 12px 0;\n    padding: 16px 20px;\n    margin: 16px 0;\n    font-size: 14px;\n    color: var(--ink);\n    line-height: 1.65;\n  }\n\n  .info-callout strong {\n    color: var(--accent);\n    font-weight: 700;\n  }\n\n  .info-emphasis {\n    background: var(--primary-soft);\n    border-left: 4px solid var(--primary);\n    border-radius: 0 12px 12px 0;\n    padding: 16px 20px;\n    margin: 16px 0;\n    font-size: 14px;\n    color: var(--ink);\n    line-height: 1.65;\n  }\n\n  .info-emphasis strong {\n    color: var(--primary);\n    font-weight: 700;\n  }\n\n  \/* ===== BOUTONS ===== *\/\n  .btn-group {\n    display: flex;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin-top: 26px;\n    justify-content: space-between;\n  }\n\n  .btn {\n    padding: 14px 28px;\n    border: none;\n    border-radius: var(--radius-sm);\n    font-family: \"Work Sans\", sans-serif;\n    font-weight: 600;\n    font-size: 15px;\n    cursor: pointer;\n    transition: all var(--transition);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    white-space: nowrap;\n  }\n\n  .btn-primary {\n    background: var(--primary);\n    color: #FFFFFF;\n    box-shadow: 0 6px 20px var(--primary-shadow);\n  }\n\n  .btn-primary:hover {\n    background: var(--primary-light);\n    transform: translateY(-2px);\n    box-shadow: 0 10px 28px var(--primary-shadow);\n  }\n\n  .btn-accent {\n    background: var(--accent);\n    color: #FFFFFF;\n    box-shadow: 0 6px 20px var(--accent-shadow);\n  }\n\n  .btn-accent:hover {\n    background: #27794d;\n    transform: translateY(-2px);\n    box-shadow: 0 10px 28px var(--accent-shadow);\n  }\n\n  .btn-secondary {\n    background: var(--surface);\n    color: var(--ink);\n    border: 1.5px solid var(--divider);\n  }\n\n  .btn-secondary:hover {\n    background: var(--primary-soft);\n    border-color: var(--primary);\n    color: var(--primary);\n  }\n\n  \/* ===== R\u00c9SUM\u00c9 ===== *\/\n  .summary-section {\n    background: var(--surface);\n    border-radius: var(--radius);\n    padding: 34px 32px;\n    margin-bottom: 24px;\n    box-shadow: 0 16px 40px rgba(42, 36, 56, 0.08);\n    border: 1px solid var(--divider);\n    border-top: 5px solid var(--accent);\n    display: none;\n  }\n\n  .summary-section.active { display: block; animation: fadeInUp 0.5s ease; }\n\n  .summary-hero {\n    text-align: center;\n    margin-bottom: 28px;\n    padding-bottom: 24px;\n    border-bottom: 1px dashed var(--divider);\n  }\n\n  .summary-hero .summary-emoji {\n    font-size: 44px;\n    line-height: 1;\n    margin-bottom: 12px;\n  }\n\n  .summary-hero h2 {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 26px;\n    color: var(--primary);\n    margin-bottom: 10px;\n  }\n\n  .summary-hero p {\n    font-size: 15px;\n    color: var(--muted);\n    font-style: italic;\n    max-width: 520px;\n    margin: 0 auto;\n  }\n\n  .summary-block {\n    margin-bottom: 22px;\n    padding-bottom: 22px;\n    border-bottom: 1px solid var(--divider);\n  }\n\n  .summary-block:last-child {\n    border-bottom: none;\n    padding-bottom: 0;\n    margin-bottom: 0;\n  }\n\n  .summary-block h3 {\n    font-family: \"Fraunces\", serif;\n    font-weight: 600;\n    font-size: 17px;\n    color: var(--primary);\n    margin-bottom: 10px;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .summary-block p {\n    font-size: 15px;\n    color: var(--ink);\n    line-height: 1.7;\n    white-space: pre-wrap;\n  }\n\n  .summary-block ul {\n    list-style: none;\n    padding-left: 0;\n  }\n\n  .summary-block ul li {\n    position: relative;\n    padding-left: 22px;\n    font-size: 14.5px;\n    color: var(--ink);\n    line-height: 1.65;\n    margin-bottom: 8px;\n  }\n\n  .summary-block ul li::before {\n    content: \"\u2726\";\n    position: absolute;\n    left: 0;\n    color: var(--accent);\n    font-size: 13px;\n    top: 1px;\n  }\n\n  .summary-control-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 14px;\n    margin-top: 8px;\n  }\n\n  .summary-control-box {\n    padding: 14px 16px;\n    border-radius: 10px;\n    border: 1px solid var(--divider);\n    font-size: 14.5px;\n    line-height: 1.65;\n  }\n\n  .summary-control-box.facts {\n    background: var(--accent-soft);\n    border-left: 4px solid var(--accent);\n  }\n\n  .summary-control-box.fears {\n    background: var(--warm-soft);\n    border-left: 4px solid var(--warm);\n  }\n\n  .summary-control-box .summary-control-label {\n    font-weight: 700;\n    font-size: 12.5px;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    margin-bottom: 6px;\n    display: block;\n  }\n\n  .summary-control-box.facts .summary-control-label { color: var(--accent); }\n  .summary-control-box.fears .summary-control-label { color: #92400E; }\n\n  @media (max-width: 640px) {\n    .summary-control-grid {\n      grid-template-columns: 1fr;\n    }\n  }\n\n  .summary-resources {\n    background: var(--accent-soft);\n    border-left: 4px solid var(--accent);\n    border-radius: 0 10px 10px 0;\n    padding: 16px 20px;\n    margin-top: 10px;\n    font-size: 14.5px;\n    color: var(--ink);\n    line-height: 1.7;\n  }\n\n  .summary-resources strong {\n    color: var(--accent);\n    display: block;\n    margin-bottom: 6px;\n  }\n\n  .summary-actions {\n    display: flex;\n    gap: 12px;\n    flex-wrap: wrap;\n    justify-content: center;\n    margin-top: 26px;\n    padding-top: 24px;\n    border-top: 1px solid var(--divider);\n  }\n\n  \/* ===== FOOTER ===== *\/\n  .footer {\n    text-align: center;\n    margin-top: 56px;\n    padding-top: 28px;\n    border-top: 1px solid var(--divider);\n    color: var(--muted);\n    font-size: 13px;\n    line-height: 1.7;\n  }\n\n  .footer strong {\n    color: var(--primary);\n    font-weight: 600;\n  }\n\n  \/* ===== RESPONSIVE ===== *\/\n  @media (max-width: 640px) {\n    .wrap { padding: 28px 16px 60px; }\n    .step { padding: 24px 20px; }\n    .intro-card { padding: 22px 20px; }\n    .summary-section { padding: 24px 20px; }\n    .step-title { font-size: 20px; }\n    .step-title .step-emoji { font-size: 22px; }\n    .btn-group { flex-direction: column-reverse; }\n    .btn-group .btn { width: 100%; }\n    .summary-actions { flex-direction: column; }\n    .summary-actions .btn { width: 100%; }\n    .warning-card { padding: 16px 16px; flex-direction: column; gap: 10px; }\n    .completed-notice { padding: 14px 16px; flex-direction: column; gap: 10px; }\n    .multi-grid { grid-template-columns: 1fr; }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    *, *::before, *::after {\n      animation-duration: 0.01ms !important;\n      transition-duration: 0.01ms !important;\n    }\n  }\n\n  @media print {\n    body { background: white; }\n    .wrap { padding: 0; }\n    .hero-frame, .btn, .intro-note, .footer, .progress-wrapper, .restart-hint { display: none !important; }\n    .summary-section { box-shadow: none; border: 1px solid #ccc; page-break-inside: avoid; }\n    .step { display: none !important; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"wrap\">\n\n  <!-- HERO -->\n  <header class=\"hero\">\n    <div class=\"hero-frame\">\u23f3<\/div>\n    <h1>Sortir de la procrastination<\/h1>\n    <p class=\"subtitle\">Un outil d'accompagnement pour comprendre ce qui se cache derri\u00e8re l'\u00e9vitement, et retrouver le chemin d'un premier geste.<\/p>\n  <\/header>\n\n  <!-- INTRO -->\n  <div class=\"intro-card\" id=\"introCard\">\n    <h2>Avant de commencer<\/h2>\n\n    <!-- AVERTISSEMENT -->\n    <div class=\"warning-card\">\n      <div class=\"warning-icon\">\u26a0\ufe0f<\/div>\n      <div class=\"warning-content\">\n        <h3>Procrastiner n'est pas de la paresse<\/h3>\n        <p>La procrastination est rarement un probl\u00e8me de \u00ab volont\u00e9 \u00bb. C'est un <strong>m\u00e9canisme \u00e9motionnel<\/strong> : on \u00e9vite une t\u00e2che parce qu'elle d\u00e9clenche quelque chose de d\u00e9sagr\u00e9able \u2014 peur, ennui, fatigue, perfectionnisme, sentiment d'\u00eatre submerg\u00e9\u00b7e.<\/p>\n        <p>Cet outil ne pose aucun diagnostic et ne remplace pas un accompagnement professionnel. Si l'\u00e9vitement s'accompagne d'une <strong>d\u00e9tresse importante, d'anxi\u00e9t\u00e9 envahissante ou de sympt\u00f4mes d\u00e9pressifs<\/strong>, il est utile d'en parler \u00e0 un professionnel : <strong>811<\/strong> (Info-Social, 24\/7, Qu\u00e9bec) ou votre m\u00e9decin de famille.<\/p>\n      <\/div>\n    <\/div>\n\n    <p>Repousser une t\u00e2che, ce n'est pas un \u00e9chec moral. C'est souvent le signe qu'il y a <strong>quelque chose de difficile \u00e0 traverser<\/strong> \u2014 une \u00e9motion, une crainte, un besoin non entendu. Comprendre ce qui se joue est la premi\u00e8re \u00e9tape pour en sortir autrement.<\/p>\n    <p>Cet outil vous guide \u00e0 travers 6 \u00e9tapes pour <strong>situer les t\u00e2ches \u00e9vit\u00e9es, comprendre les \u00e9motions derri\u00e8re l'\u00e9vitement, distinguer les faits des craintes, identifier vos besoins, explorer des strat\u00e9gies, et poser un premier micro-pas<\/strong> \u2014 assez petit pour \u00eatre vraiment faisable.<\/p>\n    <p><em>Compl\u00e8te votre quiz \u00ab Motivation \u00bb.<\/em><\/p>\n    <div class=\"intro-note\">\n      <strong>\u23f1\ufe0f Dur\u00e9e estim\u00e9e :<\/strong> 15 \u00e0 25 minutes. Prenez le temps qu'il vous faut. Vos r\u00e9ponses sont enregistr\u00e9es automatiquement dans votre navigateur et restent confidentielles.\n    <\/div>\n\n    <!-- AVIS DE COMPL\u00c9TION -->\n    <div class=\"completed-notice\" id=\"completedNotice\" style=\"display: none;\">\n      <div class=\"completed-icon\">\u2705<\/div>\n      <div class=\"completed-text\">\n        <strong>Vous avez termin\u00e9 cette exploration.<\/strong>\n        <p>Votre synth\u00e8se est pr\u00eate. Vous pouvez la revoir ou recommencer une nouvelle exploration.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-group\" style=\"justify-content: flex-start;\">\n      <button class=\"btn btn-primary\" id=\"startBtn\" type=\"button\">Commencer \u2192<\/button>\n      <button class=\"btn btn-accent\" id=\"reviewBtn\" type=\"button\" style=\"display: none;\">\u2728 Revoir ma synth\u00e8se<\/button>\n      <button class=\"btn btn-secondary\" id=\"resetBtn\" type=\"button\">R\u00e9initialiser<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- PROGRESSION -->\n  <div class=\"progress-wrapper\" id=\"progressWrapper\" style=\"display: none;\">\n    <div class=\"progress-text\">\n      <span id=\"progressLabel\">\u00c9tape 1 sur 6<\/span>\n      <span id=\"progressPercent\">0%<\/span>\n    <\/div>\n    <div class=\"progress-bar\">\n      <div class=\"progress-fill\" id=\"progressFill\"><\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== \u00c9TAPE 1 ===== -->\n  <section class=\"step\" id=\"step1\" data-step=\"1\">\n    <span class=\"step-badge\">\u00c9tape 1 \u00b7 Situer<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83d\udccb<\/span> Les t\u00e2ches que j'\u00e9vite<\/h2>\n    <p class=\"step-hint\">Commen\u00e7ons par identifier concr\u00e8tement ce qui est repouss\u00e9. Pas pour se juger \u2014 juste pour voir clairement de quoi on parle.<\/p>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">\n        Quelles t\u00e2ches repoussez-vous en ce moment ?\n        <span class=\"field-example\">Cochez ce qui r\u00e9sonne, ou notez-les directement plus bas.<\/span>\n      <\/label>\n      <div class=\"multi-grid\" id=\"tasksGrid\"><\/div>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"mainTask\">\n        Quelle est LA t\u00e2che qui vous p\u00e8se le plus en ce moment ?\n        <span class=\"field-example\">D\u00e9crivez-la pr\u00e9cis\u00e9ment. Ex. : \u00ab Appeler pour prendre rendez-vous chez le dentiste \u00bb, \u00ab Commencer le rapport qui est d\u00fb vendredi \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"mainTask\" placeholder=\"La t\u00e2che que je repousse le plus\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"duration\">\n        Depuis combien de temps cette t\u00e2che est-elle repouss\u00e9e ?\n        <span class=\"field-example\">Ex. : \u00ab Depuis 3 jours \u00bb, \u00ab Depuis 6 mois \u00bb, \u00ab Depuis des ann\u00e9es \u00bb.<\/span>\n      <\/label>\n      <input type=\"text\" id=\"duration\" placeholder=\"Depuis\u2026\">\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">Sur une \u00e9chelle de 0 \u00e0 10, quel est le poids que cette procrastination fait peser sur vous en ce moment ?<\/label>\n      <div class=\"chips-row\" id=\"weightChips\"><\/div>\n      <div class=\"helper-text\">0 = tr\u00e8s l\u00e9ger \u00b7 10 = tr\u00e8s lourd (culpabilit\u00e9, stress, sentiment d'\u00eatre bloqu\u00e9\u00b7e). Aucun jugement.<\/div>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"intro\">\u2190 Retour<\/button>\n      <button class=\"btn btn-primary\" type=\"button\" data-action=\"step\" data-target=\"2\">Continuer \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== \u00c9TAPE 2 ===== -->\n  <section class=\"step\" id=\"step2\" data-step=\"2\">\n    <span class=\"step-badge\">\u00c9tape 2 \u00b7 Explorer<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83d\udcad<\/span> L'\u00e9motion derri\u00e8re l'\u00e9vitement<\/h2>\n    <p class=\"step-hint\">On ne procrastine pas \u00ab pour rien \u00bb. Il y a souvent une \u00e9motion \u2014 parfois discr\u00e8te, parfois tr\u00e8s pr\u00e9sente \u2014 qui rend la t\u00e2che insupportable \u00e0 aborder. Explorons-la sans jugement.<\/p>\n\n    <div class=\"info-callout\">\n      <strong>\ud83d\udca1 Ce que disent les recherches<\/strong><br>\n      La procrastination est souvent li\u00e9e \u00e0 la difficult\u00e9 \u00e0 <strong>r\u00e9guler une \u00e9motion d\u00e9sagr\u00e9able<\/strong> li\u00e9e \u00e0 la t\u00e2che \u2014 pas \u00e0 un manque de discipline. \u00c9viter apporte un soulagement imm\u00e9diat\u2026 mais augmente la charge \u00e0 long terme. Comprendre l'\u00e9motion, c'est d\u00e9j\u00e0 desserrer son emprise.\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">\n        Qu'est-ce que cette t\u00e2che d\u00e9clenche en vous, quand vous y pensez ?\n        <span class=\"field-example\">Cochez tout ce qui r\u00e9sonne, m\u00eame partiellement.<\/span>\n      <\/label>\n      <div class=\"multi-grid\" id=\"emotionsGrid\"><\/div>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"emotionText\">\n        D\u00e9crivez plus pr\u00e9cis\u00e9ment ce que vous ressentez quand vous essayez de vous y mettre :\n        <span class=\"field-example\">Ex. : \u00ab Une boule au ventre \u00bb, \u00ab Un vide, comme si j'\u00e9tais paralys\u00e9\u00b7e \u00bb, \u00ab Une vague envie de faire autre chose \u00bb, \u00ab Une voix qui dit : pas maintenant \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"emotionText\" placeholder=\"Ce que je ressens quand j'y pense\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"avoidanceStrategy\">\n        Que faites-vous concr\u00e8tement \u00e0 la place, quand vous \u00e9vitez ?\n        <span class=\"field-example\">Ex. : \u00ab Je scrolle \u00bb, \u00ab Je range autre chose \u00bb, \u00ab Je m'occupe des autres \u00bb, \u00ab Je regarde des s\u00e9ries \u00bb, \u00ab Je dors \u00bb, \u00ab Je mange \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"avoidanceStrategy\" placeholder=\"\u00c0 la place, je\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"step\" data-target=\"1\">\u2190 Pr\u00e9c\u00e9dent<\/button>\n      <button class=\"btn btn-primary\" type=\"button\" data-action=\"step\" data-target=\"3\">Continuer \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== \u00c9TAPE 3 ===== -->\n  <section class=\"step\" id=\"step3\" data-step=\"3\">\n    <span class=\"step-badge\">\u00c9tape 3 \u00b7 Distinguer<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83d\udd0d<\/span> Faits et craintes<\/h2>\n    <p class=\"step-hint\">Derri\u00e8re l'\u00e9vitement, il y a souvent des <em>croyances anticip\u00e9es<\/em> \u2014 sur la t\u00e2che, sur soi, sur les cons\u00e9quences. Les distinguer des faits permet de desserrer l'\u00e9tau.<\/p>\n\n    <div class=\"control-grid\">\n      <div class=\"control-box facts\">\n        <div class=\"control-header\">\n          <span class=\"control-icon\">\u2705<\/span>\n          <span>Ce que je sais (faits)<\/span>\n        <\/div>\n        <textarea id=\"facts\" placeholder=\"Ce que la t\u00e2che demande concr\u00e8tement, ce qui est vraiment attendu, ce qui est en mon contr\u00f4le\u2026\"><\/textarea>\n        <div class=\"control-help\">Ce qui est observable, v\u00e9rifiable.<\/div>\n      <\/div>\n\n      <div class=\"control-box fears\">\n        <div class=\"control-header\">\n          <span class=\"control-icon\">\ud83d\udcad<\/span>\n          <span>Ce que je crains (pens\u00e9es)<\/span>\n        <\/div>\n        <textarea id=\"fears\" placeholder=\"Ex. : \u00ab Je vais \u00e9chouer \u00bb, \u00ab Ce ne sera jamais assez bon \u00bb, \u00ab Je ne suis pas capable \u00bb, \u00ab \u00c7a va \u00eatre interminable \u00bb\u2026\"><\/textarea>\n        <div class=\"control-help\">Ce qui est anticip\u00e9, imagin\u00e9, redout\u00e9.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"field-group\" style=\"margin-top: 18px;\">\n      <label class=\"field-label\" for=\"perfectTrap\">\n        Y a-t-il une exigence de perfection ou un \u00ab tout ou rien \u00bb qui bloque le d\u00e9marrage ?\n        <span class=\"field-example\">Ex. : \u00ab Si je ne peux pas le faire parfaitement, autant ne pas commencer \u00bb, \u00ab Il faudrait que je bloque 4 heures, sinon \u00e7a ne vaut pas la peine \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"perfectTrap\" placeholder=\"Ce qui me bloque \u00e0 cause de l'exigence\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"pastSuccess\">\n        Avez-vous d\u00e9j\u00e0 r\u00e9ussi \u00e0 faire quelque chose de similaire par le pass\u00e9, m\u00eame imparfaitement ?\n        <span class=\"field-example\">Rappeler un moment o\u00f9 vous avez commenc\u00e9 \u00ab petit \u00bb et o\u00f9 \u00e7a s'est d\u00e9bloqu\u00e9.<\/span>\n      <\/label>\n      <textarea id=\"pastSuccess\" placeholder=\"Une exp\u00e9rience pass\u00e9e o\u00f9\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"step\" data-target=\"2\">\u2190 Pr\u00e9c\u00e9dent<\/button>\n      <button class=\"btn btn-primary\" type=\"button\" data-action=\"step\" data-target=\"4\">Continuer \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== \u00c9TAPE 4 ===== -->\n  <section class=\"step\" id=\"step4\" data-step=\"4\">\n    <span class=\"step-badge\">\u00c9tape 4 \u00b7 Besoins<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83c\udf31<\/span> Ce dont j'ai besoin<\/h2>\n    <p class=\"step-hint\">Sous l'\u00e9vitement, il y a souvent un besoin qui n'a pas \u00e9t\u00e9 entendu. Identifier ce besoin aide \u00e0 sortir du rapport de force avec soi-m\u00eame.<\/p>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">\n        De quoi auriez-vous besoin pour aborder cette t\u00e2che autrement ?\n        <span class=\"field-example\">Cochez tout ce qui r\u00e9sonne, m\u00eame partiellement.<\/span>\n      <\/label>\n      <div class=\"chips-row\" id=\"needsChips\"><\/div>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"needText\">\n        Ce besoin, formul\u00e9 plus pr\u00e9cis\u00e9ment :\n      <\/label>\n      <textarea id=\"needText\" placeholder=\"J'aurais besoin de\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"selfTalk\">\n        Comment pourriez-vous vous parler avec plus de bienveillance \u00e0 propos de cette t\u00e2che ?\n        <span class=\"field-example\">Ex. : \u00ab Je n'ai pas \u00e0 le faire parfaitement, juste \u00e0 commencer \u00bb, \u00ab Un petit pas suffit \u00bb, \u00ab Je fais ce que je peux avec mon \u00e9nergie du moment \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"selfTalk\" placeholder=\"Ce que je pourrais me dire\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"step\" data-target=\"3\">\u2190 Pr\u00e9c\u00e9dent<\/button>\n      <button class=\"btn btn-primary\" type=\"button\" data-action=\"step\" data-target=\"5\">Continuer \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== \u00c9TAPE 5 ===== -->\n  <section class=\"step\" id=\"step5\" data-step=\"5\">\n    <span class=\"step-badge\">\u00c9tape 5 \u00b7 Strat\u00e9gies<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83d\udee0\ufe0f<\/span> Strat\u00e9gies possibles<\/h2>\n    <p class=\"step-hint\">Il n'y a pas une seule bonne m\u00e9thode. Explorer plusieurs strat\u00e9gies permet de trouver celle qui convient \u00e0 votre fonctionnement \u2014 et \u00e0 votre \u00e9nergie du moment.<\/p>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">\n        Parmi ces strat\u00e9gies, lesquelles vous semblent accessibles ?\n        <span class=\"field-example\">Cochez ce que vous pourriez essayer, sans pression.<\/span>\n      <\/label>\n      <div class=\"multi-grid\" id=\"strategiesGrid\"><\/div>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"chosenStrategy\">\n        Laquelle souhaitez-vous essayer en premier ?\n        <span class=\"field-example\">Choisissez celle qui vous para\u00eet la plus douce, la plus r\u00e9aliste, ou la plus motivante.<\/span>\n      <\/label>\n      <textarea id=\"chosenStrategy\" placeholder=\"La strat\u00e9gie que je veux essayer\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"obstacles\">\n        Y a-t-il des obstacles qui pourraient se mettre en travers ?\n        <span class=\"field-example\">Ex. : \u00ab Je risque d'oublier \u00bb, \u00ab Je vais me d\u00e9courager au premier obstacle \u00bb, \u00ab Je n'ai pas de plage de temps claire \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"obstacles\" placeholder=\"Ce qui pourrait m'emp\u00eacher\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"ifStuck\">\n        Si vous vous retrouvez bloqu\u00e9\u00b7e malgr\u00e9 tout, que pourriez-vous faire ?\n        <span class=\"field-example\">Ex. : \u00ab R\u00e9duire encore la t\u00e2che \u00bb, \u00ab Demander de l'aide \u00bb, \u00ab Me donner la permission de m'arr\u00eater et reprendre demain \u00bb, \u00ab Me rappeler que le mieux est l'ennemi du fait \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"ifStuck\" placeholder=\"Si je suis bloqu\u00e9\u00b7e, je pourrais\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"step\" data-target=\"4\">\u2190 Pr\u00e9c\u00e9dent<\/button>\n      <button class=\"btn btn-primary\" type=\"button\" data-action=\"step\" data-target=\"6\">Continuer \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== \u00c9TAPE 6 ===== -->\n  <section class=\"step\" id=\"step6\" data-step=\"6\">\n    <span class=\"step-badge\">\u00c9tape 6 \u00b7 Agir<\/span>\n    <h2 class=\"step-title\"><span class=\"step-emoji\">\ud83d\udc63<\/span> Le premier micro-pas<\/h2>\n    <p class=\"step-hint\">Un micro-pas, c'est un geste si petit qu'il est presque impossible de refuser. Deux minutes, pas plus. Le but n'est pas de finir, c'est de <em>commencer<\/em>.<\/p>\n\n    <div class=\"info-emphasis\">\n      <strong>\ud83d\udca1 La r\u00e8gle du micro-pas<\/strong><br>\n      Formulez un geste qui prend <strong>moins de 5 minutes<\/strong> et qui est <strong>concret, pr\u00e9cis, et faisable maintenant<\/strong>. Ex. : \u00ab Ouvrir le document \u00bb, \u00ab \u00c9crire une phrase \u00bb, \u00ab Chercher le num\u00e9ro de t\u00e9l\u00e9phone \u00bb, \u00ab Poser le carnet sur la table \u00bb.\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"firstStep\">\n        Quel serait votre premier micro-pas ?\n        <span class=\"field-example\">Il doit \u00eatre minuscule. Ex. : \u00ab Ouvrir le fichier \u00bb, \u00ab \u00c9crire seulement l'en-t\u00eate \u00bb, \u00ab Prendre rendez-vous en ligne \u00bb, \u00ab Mettre le r\u00e9veil \u00e0 9h \u00bb, \u00ab Sortir le dossier de l'armoire \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"firstStep\" placeholder=\"Mon micro-pas serait\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"whenStep\">\n        Quand pourriez-vous le faire ?\n        <span class=\"field-example\">Un moment pr\u00e9cis, dans un d\u00e9lai tr\u00e8s r\u00e9aliste.<\/span>\n      <\/label>\n      <input type=\"text\" id=\"whenStep\" placeholder=\"Ex. : dans les 10 prochaines minutes, ce soir apr\u00e8s souper, demain matin\u2026\">\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"supportStep\">\n        De qui ou de quoi auriez-vous besoin pour vous y tenir ?\n        <span class=\"field-example\">Optionnel \u2014 mais souvent utile.<\/span>\n      <\/label>\n      <textarea id=\"supportStep\" placeholder=\"Pour m'aider \u00e0 faire ce micro-pas, je pourrais\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\" for=\"reward\">\n        Comment allez-vous vous reconna\u00eetre le droit d'avoir fait ce petit pas ?\n        <span class=\"field-example\">Ex. : \u00ab Me dire bravo \u00bb, \u00ab Prendre un caf\u00e9 tranquille \u00bb, \u00ab Le noter quelque part \u00bb, \u00ab Rien, juste remarquer que je l'ai fait \u00bb.<\/span>\n      <\/label>\n      <textarea id=\"reward\" placeholder=\"Apr\u00e8s ce micro-pas, je pourrais\u2026\"><\/textarea>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">\n        Apr\u00e8s ce travail, quel est le poids de la procrastination <em>maintenant<\/em> ?\n      <\/label>\n      <div class=\"chips-row\" id=\"weightChipsAfter\"><\/div>\n      <div class=\"helper-text\">Aucun jugement. Simplement observer, m\u00eame un l\u00e9ger changement.<\/div>\n    <\/div>\n\n    <div class=\"btn-group\">\n      <button class=\"btn btn-secondary\" type=\"button\" data-action=\"step\" data-target=\"5\">\u2190 Pr\u00e9c\u00e9dent<\/button>\n      <button class=\"btn btn-accent\" type=\"button\" data-action=\"summary\">Voir ma synth\u00e8se \u2728<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- ===== R\u00c9SUM\u00c9 ===== -->\n  <section class=\"summary-section\" id=\"summarySection\">\n    <div class=\"summary-hero\">\n      <div class=\"summary-emoji\">\ud83c\udf3f<\/div>\n      <h2>Votre synth\u00e8se<\/h2>\n      <p>Voici ce que vous avez mis en ordre. Ce document vous appartient \u2014 vous pouvez le relire, l'imprimer, ou en parler \u00e0 une personne de confiance.<\/p>\n    <\/div>\n\n    <div id=\"summaryContent\"><\/div>\n\n    <div class=\"summary-resources\">\n      <strong>\ud83e\udded Ressources \u00e0 garder sous la main<\/strong>\n      \u2022 <strong>811 (Info-Social)<\/strong> \u2014 Soutien psychosocial 24\/7 (Qu\u00e9bec)<br>\n      \u2022 <strong>Votre m\u00e9decin de famille<\/strong> ou <strong>CLSC<\/strong> \u2014 Pour un accompagnement suivi<br>\n      \u2022 <strong>Psychologue ou travailleur\u00b7se social\u00b7e<\/strong> \u2014 Pour un soutien plus approfondi<br>\n      \u2022 <strong>Programme d'aide aux employ\u00e9s (PAE)<\/strong> \u2014 Si vous \u00eates en emploi<br>\n      \u2022 <strong>Services d'aide aux \u00e9tudes<\/strong> \u2014 Si vous \u00eates \u00e9tudiant\u00b7e<br>\n      \u2022 <strong>Revivre, AMI-Qu\u00e9bec<\/strong> \u2014 Organismes communautaires en sant\u00e9 mentale\n    <\/div>\n\n    <div class=\"summary-actions\">\n      <button class=\"btn btn-primary\" id=\"printBtn\" type=\"button\">\ud83d\udda8\ufe0f Imprimer<\/button>\n      <button class=\"btn btn-secondary\" id=\"downloadBtn\" type=\"button\">\ud83d\udce5 T\u00e9l\u00e9charger<\/button>\n      <button class=\"btn btn-secondary\" id=\"restartBtn\" type=\"button\">\ud83d\udd04 Nouvelle exploration<\/button>\n    <\/div>\n    <p class=\"restart-hint\">Envie de refaire l'exercice ? Vos r\u00e9ponses actuelles seront effac\u00e9es \u2014 pensez \u00e0 imprimer ou t\u00e9l\u00e9charger votre synth\u00e8se avant.<\/p>\n  <\/section>\n\n  <!-- FOOTER -->\n  <footer class=\"footer\">\n    <p>\u23f3 <strong>Outil d'accompagnement JIRIS<\/strong> \u2014 Justice \u00b7 Inclusion \u00b7 R\u00e9int\u00e9gration \u00b7 Innovation Sociale<\/p>\n    <p style=\"margin-top: 8px; opacity: 0.8;\">Cet outil ne pose aucun diagnostic et ne remplace pas un accompagnement professionnel. Vos r\u00e9ponses restent dans votre navigateur.<\/p>\n  <\/footer>\n\n<\/div>\n\n<script>\n(function () {\n  \"use strict\";\n\n  const STORAGE_KEY = 'jiris-procrastination-outil';\n  const TOTAL_STEPS = 6;\n\n  const state = {\n    currentStep: 0,\n    tasks: [],\n    mainTask: '',\n    duration: '',\n    weightBefore: null,\n    emotions: [],\n    emotionText: '',\n    avoidanceStrategy: '',\n    facts: '',\n    fears: '',\n    perfectTrap: '',\n    pastSuccess: '',\n    needs: [],\n    needText: '',\n    selfTalk: '',\n    strategies: [],\n    chosenStrategy: '',\n    obstacles: '',\n    ifStuck: '',\n    firstStep: '',\n    whenStep: '',\n    supportStep: '',\n    reward: '',\n    weightAfter: null,\n    completed: false\n  };\n\n  const WEIGHT_LEVELS = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\n  const TASKS_LIST = [\n    'Prendre un rendez-vous (m\u00e9dical, administratif\u2026)',\n    'Appeler quelqu\\'un (t\u00e9l\u00e9phone, d\u00e9marche)',\n    'Commencer ou finir un travail \/ une \u00e9tude',\n    'R\u00e9pondre \u00e0 un courriel ou un message',\n    'Faire une t\u00e2che m\u00e9nag\u00e8re (ranger, laver, trier)',\n    'Payer une facture ou faire une d\u00e9marche administrative',\n    'Pr\u00e9parer un document important',\n    'Parler d\\'un sujet difficile \u00e0 quelqu\\'un',\n    'Commencer un projet personnel',\n    'Faire une activit\u00e9 de soin (sport, rendez-vous sant\u00e9)',\n    'Ouvrir un courrier que je redoute',\n    'Demander de l\\'aide',\n    'Prendre une d\u00e9cision importante',\n    'R\u00e9server quelque chose (transport, logement)',\n    'M\\'inscrire \u00e0 quelque chose (formation, activit\u00e9)',\n    'Faire une recherche qui m\\'angoisse'\n  ];\n\n  const EMOTIONS_LIST = [\n    'Une peur d\\'\u00e9chouer',\n    'Une peur du jugement',\n    'Un sentiment d\\'\u00eatre submerg\u00e9\u00b7e',\n    'De l\\'ennui, un manque d\\'int\u00e9r\u00eat',\n    'De la fatigue, un manque d\\'\u00e9nergie',\n    'Un perfectionnisme qui paralyse',\n    'Une peur de ne pas \u00eatre \u00e0 la hauteur',\n    'Un sentiment d\\'ill\u00e9gitimit\u00e9',\n    'De la col\u00e8re, une r\u00e9sistance',\n    'De la tristesse, un d\u00e9couragement',\n    'Une peur de ce qui va se passer apr\u00e8s',\n    'Une angoisse diffuse, sans mot',\n    'Un sentiment d\\'impuissance',\n    'Une peur de l\\'engagement'\n  ];\n\n  const NEEDS_LIST = [\n    'De la clart\u00e9 sur la t\u00e2che',\n    'Un environnement calme et rang\u00e9',\n    'Du soutien, de l\\'accompagnement',\n    'Un d\u00e9lai r\u00e9aliste',\n    'Une permission d\\'\u00eatre imparfait\u00b7e',\n    'Du repos, de l\\'\u00e9nergie',\n    'Un espace pour ne pas \u00eatre d\u00e9rang\u00e9\u00b7e',\n    'Une d\u00e9composition en petites \u00e9tapes',\n    'Une reconnaissance, un encouragement',\n    'Le droit de dire non \u00e0 certaines choses',\n    'Un peu de plaisir dans la t\u00e2che',\n    'La certitude que je peux m\\'arr\u00eater en cours'\n  ];\n\n  const STRATEGIES_LIST = [\n    'D\u00e9couper la t\u00e2che en sous-\u00e9tapes tr\u00e8s petites',\n    'Travailler par intervalles courts (5, 10 ou 25 minutes)',\n    'Faire \u00ab juste 2 minutes \u00bb de la t\u00e2che',\n    'Commencer par la partie la plus facile',\n    'Fixer un moment pr\u00e9cis dans la journ\u00e9e',\n    '\u00c9liminer les distractions (t\u00e9l\u00e9phone, notifications)',\n    'Demander \u00e0 quelqu\\'un de m\\'accompagner ou de m\\'encourager',\n    'Annoncer publiquement l\\'intention',\n    'Me r\u00e9compenser apr\u00e8s un pas',\n    'Accepter un r\u00e9sultat \u00ab suffisamment bon \u00bb',\n    '\u00c9crire la premi\u00e8re \u00e9tape sur un papier visible',\n    'Travailler \u00e0 c\u00f4t\u00e9 de quelqu\\'un qui fait ses propres choses',\n    'Utiliser un minuteur visible',\n    'Changer de lieu (caf\u00e9, biblioth\u00e8que)',\n    'Commencer par le rituel d\\'installation (s\\'asseoir, ouvrir, pr\u00e9parer)'\n  ];\n\n  const introCard = document.getElementById('introCard');\n  const progressWrapper = document.getElementById('progressWrapper');\n  const progressLabel = document.getElementById('progressLabel');\n  const progressPercent = document.getElementById('progressPercent');\n  const progressFill = document.getElementById('progressFill');\n  const summarySection = document.getElementById('summarySection');\n  const summaryContent = document.getElementById('summaryContent');\n\n  function renderWeightChips(containerId, keyName) {\n    const container = document.getElementById(containerId);\n    if (!container) return;\n    container.innerHTML = '';\n    WEIGHT_LEVELS.forEach(n => {\n      const btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'chip';\n      btn.textContent = n;\n      if (state[keyName] === n) btn.classList.add('selected');\n      btn.addEventListener('click', () => {\n        state[keyName] = n;\n        container.querySelectorAll('.chip').forEach(c => c.classList.remove('selected'));\n        btn.classList.add('selected');\n        saveState();\n      });\n      container.appendChild(btn);\n    });\n  }\n\n  function renderMultiGrid(containerId, keyName, list) {\n    const container = document.getElementById(containerId);\n    if (!container) return;\n    container.innerHTML = '';\n    list.forEach(item => {\n      const btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'multi-chip';\n      btn.textContent = item;\n      if (state[keyName].includes(item)) btn.classList.add('selected');\n      btn.addEventListener('click', () => {\n        const idx = state[keyName].indexOf(item);\n        if (idx >= 0) {\n          state[keyName].splice(idx, 1);\n          btn.classList.remove('selected');\n        } else {\n          state[keyName].push(item);\n          btn.classList.add('selected');\n        }\n        saveState();\n      });\n      container.appendChild(btn);\n    });\n  }\n\n  function renderChipsRow(containerId, keyName, list) {\n    const container = document.getElementById(containerId);\n    if (!container) return;\n    container.innerHTML = '';\n    list.forEach(item => {\n      const btn = document.createElement('button');\n      btn.type = 'button';\n      btn.className = 'chip';\n      btn.textContent = item;\n      if (state[keyName].includes(item)) btn.classList.add('selected');\n      btn.addEventListener('click', () => {\n        const idx = state[keyName].indexOf(item);\n        if (idx >= 0) {\n          state[keyName].splice(idx, 1);\n          btn.classList.remove('selected');\n        } else {\n          state[keyName].push(item);\n          btn.classList.add('selected');\n        }\n        saveState();\n      });\n      container.appendChild(btn);\n    });\n  }\n\n  function saveState() {\n    try {\n      localStorage.setItem(STORAGE_KEY, JSON.stringify(state));\n    } catch (e) {\n      console.warn('Sauvegarde impossible :', e);\n    }\n  }\n\n  function loadState() {\n    try {\n      const raw = localStorage.getItem(STORAGE_KEY);\n      if (!raw) return false;\n      const saved = JSON.parse(raw);\n      Object.keys(state).forEach(k => {\n        if (saved[k] !== undefined) state[k] = saved[k];\n      });\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  function bindInputs() {\n    const bind = (id, key) => {\n      const el = document.getElementById(id);\n      if (!el) return;\n      el.addEventListener('input', e => {\n        state[key] = e.target.value;\n        saveState();\n      });\n    };\n    bind('mainTask', 'mainTask');\n    bind('duration', 'duration');\n    bind('emotionText', 'emotionText');\n    bind('avoidanceStrategy', 'avoidanceStrategy');\n    bind('facts', 'facts');\n    bind('fears', 'fears');\n    bind('perfectTrap', 'perfectTrap');\n    bind('pastSuccess', 'pastSuccess');\n    bind('needText', 'needText');\n    bind('selfTalk', 'selfTalk');\n    bind('chosenStrategy', 'chosenStrategy');\n    bind('obstacles', 'obstacles');\n    bind('ifStuck', 'ifStuck');\n    bind('firstStep', 'firstStep');\n    bind('whenStep', 'whenStep');\n    bind('supportStep', 'supportStep');\n    bind('reward', 'reward');\n  }\n\n  function fillInputs() {\n    const fill = (id, val) => {\n      const el = document.getElementById(id);\n      if (el) el.value = val || '';\n    };\n    fill('mainTask', state.mainTask);\n    fill('duration', state.duration);\n    fill('emotionText', state.emotionText);\n    fill('avoidanceStrategy', state.avoidanceStrategy);\n    fill('facts', state.facts);\n    fill('fears', state.fears);\n    fill('perfectTrap', state.perfectTrap);\n    fill('pastSuccess', state.pastSuccess);\n    fill('needText', state.needText);\n    fill('selfTalk', state.selfTalk);\n    fill('chosenStrategy', state.chosenStrategy);\n    fill('obstacles', state.obstacles);\n    fill('ifStuck', state.ifStuck);\n    fill('firstStep', state.firstStep);\n    fill('whenStep', state.whenStep);\n    fill('supportStep', state.supportStep);\n    fill('reward', state.reward);\n  }\n\n  function goToIntro() {\n    state.currentStep = 0;\n    introCard.style.display = 'block';\n    progressWrapper.style.display = 'none';\n    summarySection.classList.remove('active');\n    document.querySelectorAll('.step').forEach(s => s.classList.remove('active'));\n    updateIntroForCompleted();\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n    saveState();\n  }\n\n  function goToStep(n) {\n    if (n < 1 || n > TOTAL_STEPS) return;\n    state.currentStep = n;\n    introCard.style.display = 'none';\n    progressWrapper.style.display = 'block';\n    summarySection.classList.remove('active');\n    document.querySelectorAll('.step').forEach(s => s.classList.remove('active'));\n    const target = document.getElementById('step' + n);\n    if (target) target.classList.add('active');\n    updateProgress();\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n    saveState();\n  }\n\n  function updateProgress() {\n    const pct = Math.round((state.currentStep \/ TOTAL_STEPS) * 100);\n    progressLabel.textContent = '\u00c9tape ' + state.currentStep + ' sur ' + TOTAL_STEPS;\n    progressPercent.textContent = pct + '%';\n    progressFill.style.width = pct + '%';\n  }\n\n  function escapeHtml(s) {\n    const div = document.createElement('div');\n    div.textContent = s || '';\n    return div.innerHTML;\n  }\n\n  function buildSummaryHtml() {\n    const blocks = [];\n\n    if (state.tasks.length > 0 || state.mainTask || state.duration || state.weightBefore !== null) {\n      let inner = '';\n      if (state.tasks.length > 0) {\n        inner += '<p><strong>T\u00e2ches repouss\u00e9es :<\/strong><\/p>';\n        inner += '<ul>' + state.tasks.map(t => '<li>' + escapeHtml(t) + '<\/li>').join('') + '<\/ul>';\n      }\n      if (state.mainTask) {\n        inner += '<p style=\"margin-top: 12px;\"><strong>La plus pesante :<\/strong><br>' + escapeHtml(state.mainTask) + '<\/p>';\n      }\n      if (state.duration) {\n        inner += '<p style=\"margin-top: 10px;\"><strong>Depuis :<\/strong> ' + escapeHtml(state.duration) + '<\/p>';\n      }\n      if (state.weightBefore !== null) {\n        inner += '<p style=\"margin-top: 10px; font-size: 14px; color: var(--muted);\">Poids ressenti au d\u00e9part : <strong style=\"color: var(--primary);\">' + state.weightBefore + '\/10<\/strong><\/p>';\n      }\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udccb Les t\u00e2ches que j\\'\u00e9vite<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.emotions.length > 0 || state.emotionText || state.avoidanceStrategy) {\n      let inner = '';\n      if (state.emotions.length > 0) {\n        inner += '<p><strong>Ce que la t\u00e2che d\u00e9clenche :<\/strong><\/p>';\n        inner += '<ul>' + state.emotions.map(e => '<li>' + escapeHtml(e) + '<\/li>').join('') + '<\/ul>';\n      }\n      if (state.emotionText) {\n        inner += '<p style=\"margin-top: 12px;\"><strong>Ce que je ressens :<\/strong><br>' + escapeHtml(state.emotionText) + '<\/p>';\n      }\n      if (state.avoidanceStrategy) {\n        inner += '<p style=\"margin-top: 10px;\"><strong>Ce que je fais \u00e0 la place :<\/strong><br>' + escapeHtml(state.avoidanceStrategy) + '<\/p>';\n      }\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udcad L\\'\u00e9motion derri\u00e8re l\\'\u00e9vitement<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.facts || state.fears || state.perfectTrap || state.pastSuccess) {\n      let inner = '<div class=\"summary-control-grid\">';\n      if (state.facts) {\n        inner += '<div class=\"summary-control-box facts\">' +\n          '<span class=\"summary-control-label\">\u2705 Faits<\/span>' +\n          escapeHtml(state.facts) +\n          '<\/div>';\n      }\n      if (state.fears) {\n        inner += '<div class=\"summary-control-box fears\">' +\n          '<span class=\"summary-control-label\">\ud83d\udcad Craintes<\/span>' +\n          escapeHtml(state.fears) +\n          '<\/div>';\n      }\n      inner += '<\/div>';\n      if (state.perfectTrap) {\n        inner += '<p style=\"margin-top: 14px;\"><strong>L\\'exigence de perfection :<\/strong><br>' + escapeHtml(state.perfectTrap) + '<\/p>';\n      }\n      if (state.pastSuccess) {\n        inner += '<p style=\"margin-top: 10px;\"><strong>Exp\u00e9rience pass\u00e9e :<\/strong><br>' + escapeHtml(state.pastSuccess) + '<\/p>';\n      }\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udd0d Faits et craintes<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.needs.length > 0 || state.needText || state.selfTalk) {\n      let inner = '';\n      if (state.needs.length > 0) {\n        inner += '<ul>' + state.needs.map(n => '<li>' + escapeHtml(n) + '<\/li>').join('') + '<\/ul>';\n      }\n      if (state.needText) {\n        inner += '<p style=\"margin-top: 10px;\">' + escapeHtml(state.needText) + '<\/p>';\n      }\n      if (state.selfTalk) {\n        inner += '<p style=\"margin-top: 12px;\"><strong>Ce que je peux me dire :<\/strong><br>' + escapeHtml(state.selfTalk) + '<\/p>';\n      }\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83c\udf31 Mes besoins<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.strategies.length > 0 || state.chosenStrategy || state.obstacles || state.ifStuck) {\n      let inner = '';\n      if (state.strategies.length > 0) {\n        inner += '<p><strong>Strat\u00e9gies envisag\u00e9es :<\/strong><\/p>';\n        inner += '<ul>' + state.strategies.map(s => '<li>' + escapeHtml(s) + '<\/li>').join('') + '<\/ul>';\n      }\n      if (state.chosenStrategy) {\n        inner += '<p style=\"margin-top: 12px;\"><strong>Ma strat\u00e9gie principale :<\/strong><br>' + escapeHtml(state.chosenStrategy) + '<\/p>';\n      }\n      if (state.obstacles) {\n        inner += '<p style=\"margin-top: 10px;\"><strong>Obstacles possibles :<\/strong><br>' + escapeHtml(state.obstacles) + '<\/p>';\n      }\n      if (state.ifStuck) {\n        inner += '<p style=\"margin-top: 10px;\"><strong>Si je suis bloqu\u00e9\u00b7e :<\/strong><br>' + escapeHtml(state.ifStuck) + '<\/p>';\n      }\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udee0\ufe0f Strat\u00e9gies<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.firstStep || state.whenStep || state.supportStep || state.reward) {\n      let inner = '';\n      if (state.firstStep) inner += '<p><strong>Mon micro-pas :<\/strong><br>' + escapeHtml(state.firstStep) + '<\/p>';\n      if (state.whenStep) inner += '<p style=\"margin-top: 10px;\"><strong>Quand :<\/strong> ' + escapeHtml(state.whenStep) + '<\/p>';\n      if (state.supportStep) inner += '<p style=\"margin-top: 10px;\"><strong>Soutien pr\u00e9vu :<\/strong> ' + escapeHtml(state.supportStep) + '<\/p>';\n      if (state.reward) inner += '<p style=\"margin-top: 10px;\"><strong>Apr\u00e8s le micro-pas :<\/strong><br>' + escapeHtml(state.reward) + '<\/p>';\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udc63 Mon premier micro-pas<\/h3>' +\n        inner +\n        '<\/div>'\n      );\n    }\n\n    if (state.weightBefore !== null && state.weightAfter !== null) {\n      const diff = state.weightBefore - state.weightAfter;\n      let evoText = '';\n      if (diff > 0) evoText = 'Le poids ressenti a <strong style=\"color: var(--accent);\">diminu\u00e9 de ' + diff + ' point' + (diff > 1 ? 's' : '') + '<\/strong> apr\u00e8s ce travail. C\\'est une belle observation.';\n      else if (diff === 0) evoText = 'Le poids est rest\u00e9 <strong>stable<\/strong>. Le simple fait d\\'avoir pris ce temps compte d\u00e9j\u00e0.';\n      else evoText = 'Le poids a <strong>augment\u00e9<\/strong> de ' + Math.abs(diff) + ' point' + (Math.abs(diff) > 1 ? 's' : '') + '. Mettre des mots sur ce qu\\'on \u00e9vite peut parfois raviver la tension \u2014 c\\'est humain. Allez-y en douceur.';\n\n      blocks.push(\n        '<div class=\"summary-block\">' +\n        '<h3>\ud83d\udcca \u00c9volution du poids ressenti<\/h3>' +\n        '<p>Avant : <strong>' + state.weightBefore + '\/10<\/strong> \u00b7 Apr\u00e8s : <strong>' + state.weightAfter + '\/10<\/strong><\/p>' +\n        '<p style=\"margin-top: 8px;\">' + evoText + '<\/p>' +\n        '<\/div>'\n      );\n    }\n\n    if (blocks.length === 0) {\n      return '<p style=\"text-align: center; color: var(--muted); font-style: italic;\">Vous n\\'avez encore rien not\u00e9. Revenez en arri\u00e8re pour compl\u00e9ter quelques \u00e9tapes \u2014 \u00e0 votre rythme.<\/p>';\n    }\n\n    return blocks.join('');\n  }\n\n  function showSummary() {\n    state.completed = true;\n    summaryContent.innerHTML = buildSummaryHtml();\n    document.querySelectorAll('.step').forEach(s => s.classList.remove('active'));\n    summarySection.classList.add('active');\n    progressWrapper.style.display = 'none';\n    progressLabel.textContent = 'Synth\u00e8se';\n    progressPercent.textContent = '100%';\n    progressFill.style.width = '100%';\n    window.scrollTo({ top: 0, behavior: 'smooth' });\n    saveState();\n  }\n\n  function printSummary() {\n    try {\n      if (typeof window.print === 'function') {\n        window.print();\n      } else {\n        throw new Error('window.print non disponible');\n      }\n    } catch (err) {\n      console.warn('Impression non disponible :', err);\n      alert('L\\'impression n\\'est pas disponible dans cet environnement.\\n\\nVous pouvez utiliser la fonction \"T\u00e9l\u00e9charger\" pour sauvegarder votre synth\u00e8se.');\n    }\n  }\n\n  function buildPlainTextSummary() {\n    let t = '\u23f3 SORTIR DE LA PROCRASTINATION\\n';\n    t += '================================================\\n';\n    t += 'Outil JIRIS \u2014 Justice \u00b7 Inclusion \u00b7 R\u00e9int\u00e9gration \u00b7 Innovation Sociale\\n';\n    t += 'Compl\u00e8te votre quiz \u00ab Motivation \u00bb.\\n\\n';\n\n    t += '\u26a0\ufe0f RAPPEL\\n';\n    t += 'La procrastination est un m\u00e9canisme \u00e9motionnel, pas un manque de volont\u00e9.\\n';\n    t += 'Cet outil ne remplace pas un accompagnement professionnel.\\n';\n    t += 'Ressources : 811 Info-Social \u00b7 votre m\u00e9decin de famille\\n\\n';\n\n    if (state.tasks.length > 0 || state.mainTask || state.duration || state.weightBefore !== null) {\n      t += '\ud83d\udccb LES T\u00c2CHES QUE J\\'\u00c9VITE\\n';\n      state.tasks.forEach((item, i) => t += (i + 1) + '. ' + item + '\\n');\n      if (state.mainTask) t += 'La plus pesante : ' + state.mainTask + '\\n';\n      if (state.duration) t += 'Depuis : ' + state.duration + '\\n';\n      if (state.weightBefore !== null) t += 'Poids ressenti : ' + state.weightBefore + '\/10\\n';\n      t += '\\n';\n    }\n\n    if (state.emotions.length > 0 || state.emotionText || state.avoidanceStrategy) {\n      t += '\ud83d\udcad L\\'\u00c9MOTION DERRI\u00c8RE L\\'\u00c9VITEMENT\\n';\n      state.emotions.forEach((e, i) => t += (i + 1) + '. ' + e + '\\n');\n      if (state.emotionText) t += 'Ce que je ressens : ' + state.emotionText + '\\n';\n      if (state.avoidanceStrategy) t += 'Ce que je fais \u00e0 la place : ' + state.avoidanceStrategy + '\\n';\n      t += '\\n';\n    }\n\n    if (state.facts || state.fears || state.perfectTrap || state.pastSuccess) {\n      t += '\ud83d\udd0d FAITS ET CRAINTES\\n';\n      if (state.facts) t += 'Faits : ' + state.facts + '\\n';\n      if (state.fears) t += 'Craintes : ' + state.fears + '\\n';\n      if (state.perfectTrap) t += 'L\\'exigence de perfection : ' + state.perfectTrap + '\\n';\n      if (state.pastSuccess) t += 'Exp\u00e9rience pass\u00e9e : ' + state.pastSuccess + '\\n';\n      t += '\\n';\n    }\n\n    if (state.needs.length > 0 || state.needText || state.selfTalk) {\n      t += '\ud83c\udf31 MES BESOINS\\n';\n      if (state.needs.length > 0) t += 'Besoins identifi\u00e9s : ' + state.needs.join(', ') + '\\n';\n      if (state.needText) t += state.needText + '\\n';\n      if (state.selfTalk) t += 'Ce que je peux me dire : ' + state.selfTalk + '\\n';\n      t += '\\n';\n    }\n\n    if (state.strategies.length > 0 || state.chosenStrategy || state.obstacles || state.ifStuck) {\n      t += '\ud83d\udee0\ufe0f STRAT\u00c9GIES\\n';\n      state.strategies.forEach((s, i) => t += (i + 1) + '. ' + s + '\\n');\n      if (state.chosenStrategy) t += 'Strat\u00e9gie principale : ' + state.chosenStrategy + '\\n';\n      if (state.obstacles) t += 'Obstacles possibles : ' + state.obstacles + '\\n';\n      if (state.ifStuck) t += 'Si je suis bloqu\u00e9\u00b7e : ' + state.ifStuck + '\\n';\n      t += '\\n';\n    }\n\n    if (state.firstStep || state.whenStep || state.supportStep || state.reward) {\n      t += '\ud83d\udc63 MON PREMIER MICRO-PAS\\n';\n      if (state.firstStep) t += 'Micro-pas : ' + state.firstStep + '\\n';\n      if (state.whenStep) t += 'Quand : ' + state.whenStep + '\\n';\n      if (state.supportStep) t += 'Soutien pr\u00e9vu : ' + state.supportStep + '\\n';\n      if (state.reward) t += 'Apr\u00e8s : ' + state.reward + '\\n';\n      t += '\\n';\n    }\n\n    if (state.weightBefore !== null && state.weightAfter !== null) {\n      t += '\ud83d\udcca \u00c9VOLUTION DU POIDS RESSENTI\\n';\n      t += 'Avant : ' + state.weightBefore + '\/10 \u00b7 Apr\u00e8s : ' + state.weightAfter + '\/10\\n\\n';\n    }\n\n    t += '================================================\\n';\n    t += 'G\u00e9n\u00e9r\u00e9 le ' + new Date().toLocaleDateString('fr-CA', { weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' }) + '\\n';\n    t += 'Cet outil ne pose aucun diagnostic et ne remplace pas un accompagnement professionnel.';\n\n    return t;\n  }\n\n  function downloadSummary() {\n    const text = buildPlainTextSummary();\n    const filename = 'procrastination-jiris-' + new Date().toISOString().slice(0, 10) + '.txt';\n\n    try {\n      const blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement('a');\n      a.href = url;\n      a.download = filename;\n      a.style.display = 'none';\n      document.body.appendChild(a);\n      a.click();\n      setTimeout(() => {\n        document.body.removeChild(a);\n        URL.revokeObjectURL(url);\n      }, 500);\n      console.log('\u2705 T\u00e9l\u00e9chargement lanc\u00e9 via Blob');\n      return;\n    } catch (err1) {\n      console.warn('M\u00e9thode Blob \u00e9chou\u00e9e :', err1);\n    }\n\n    try {\n      const dataUri = 'data:text\/plain;charset=utf-8,' + encodeURIComponent(text);\n      const a = document.createElement('a');\n      a.href = dataUri;\n      a.download = filename;\n      a.style.display = 'none';\n      document.body.appendChild(a);\n      a.click();\n      setTimeout(() => document.body.removeChild(a), 500);\n      console.log('\u2705 T\u00e9l\u00e9chargement lanc\u00e9 via data URI');\n      return;\n    } catch (err2) {\n      console.warn('M\u00e9thode data URI \u00e9chou\u00e9e :', err2);\n    }\n\n    try {\n      const blob = new Blob([text], { type: 'text\/plain;charset=utf-8' });\n      const url = URL.createObjectURL(blob);\n      const newWindow = window.open(url, '_blank');\n      if (!newWindow) throw new Error('Popup bloqu\u00e9e');\n      console.log('\u2705 Ouverture dans un nouvel onglet');\n      return;\n    } catch (err3) {\n      console.warn('Ouverture nouvel onglet \u00e9chou\u00e9e :', err3);\n    }\n\n    alert('Le t\u00e9l\u00e9chargement automatique n\\'est pas disponible dans cet environnement.\\n\\nLe texte de votre synth\u00e8se va s\\'afficher dans une nouvelle fen\u00eatre.');\n    const w = window.open('', '_blank');\n    if (w) {\n      w.document.write('<pre style=\"font-family: monospace; white-space: pre-wrap; padding: 20px; line-height: 1.5;\">' + escapeHtml(text) + '<\/pre>');\n      w.document.title = 'Synth\u00e8se \u2014 Sortir de la procrastination';\n    }\n  }\n\n  function restart() {\n    if (!confirm('Effacer toutes vos r\u00e9ponses et recommencer ?')) return;\n    try { localStorage.removeItem(STORAGE_KEY); } catch (e) {}\n    Object.keys(state).forEach(k => {\n      if (k === 'tasks' || k === 'emotions' || k === 'needs' || k === 'strategies') state[k] = [];\n      else if (k === 'weightBefore' || k === 'weightAfter') state[k] = null;\n      else if (k === 'completed') state[k] = false;\n      else if (k === 'currentStep') state[k] = 0;\n      else state[k] = '';\n    });\n    saveState();\n    location.reload();\n  }\n\n  function updateIntroForCompleted() {\n    const notice = document.getElementById('completedNotice');\n    const startBtn = document.getElementById('startBtn');\n    const reviewBtn = document.getElementById('reviewBtn');\n    const resetBtn = document.getElementById('resetBtn');\n\n    if (state.completed) {\n      if (notice) notice.style.display = 'flex';\n      if (startBtn) startBtn.style.display = 'none';\n      if (reviewBtn) reviewBtn.style.display = 'inline-flex';\n      if (resetBtn) resetBtn.textContent = '\ud83d\udd04 Recommencer une nouvelle exploration';\n    } else {\n      if (notice) notice.style.display = 'none';\n      if (startBtn) startBtn.style.display = 'inline-flex';\n      if (reviewBtn) reviewBtn.style.display = 'none';\n      if (resetBtn) resetBtn.textContent = 'R\u00e9initialiser';\n    }\n  }\n\n  function init() {\n    const hasSaved = loadState();\n    fillInputs();\n    bindInputs();\n\n    renderWeightChips('weightChips', 'weightBefore');\n    renderWeightChips('weightChipsAfter', 'weightAfter');\n    renderMultiGrid('tasksGrid', 'tasks', TASKS_LIST);\n    renderMultiGrid('emotionsGrid', 'emotions', EMOTIONS_LIST);\n    renderMultiGrid('strategiesGrid', 'strategies', STRATEGIES_LIST);\n    renderChipsRow('needsChips', 'needs', NEEDS_LIST);\n\n    const printBtn = document.getElementById('printBtn');\n    const downloadBtn = document.getElementById('downloadBtn');\n    const restartBtn = document.getElementById('restartBtn');\n    const reviewBtn = document.getElementById('reviewBtn');\n\n    if (printBtn) {\n      printBtn.addEventListener('click', function (e) {\n        e.preventDefault();\n        printSummary();\n      });\n    }\n    if (downloadBtn) {\n      downloadBtn.addEventListener('click', function (e) {\n        e.preventDefault();\n        downloadSummary();\n      });\n    }\n    if (restartBtn) {\n      restartBtn.addEventListener('click', function (e) {\n        e.preventDefault();\n        restart();\n      });\n    }\n    if (reviewBtn) {\n      reviewBtn.addEventListener('click', function (e) {\n        e.preventDefault();\n        showSummary();\n      });\n    }\n\n    const startBtn = document.getElementById('startBtn');\n    const resetBtn = document.getElementById('resetBtn');\n    if (startBtn) {\n      startBtn.addEventListener('click', function () {\n        if (hasSaved && state.currentStep > 0 && state.currentStep <= TOTAL_STEPS) {\n          goToStep(state.currentStep);\n        } else {\n          goToStep(1);\n        }\n      });\n    }\n    if (resetBtn) {\n      resetBtn.addEventListener('click', restart);\n    }\n\n    document.querySelectorAll('[data-action]').forEach(btn => {\n      btn.addEventListener('click', function () {\n        const action = this.dataset.action;\n        const target = this.dataset.target;\n        if (action === 'intro') goToIntro();\n        else if (action === 'step') goToStep(parseInt(target, 10));\n        else if (action === 'summary') showSummary();\n      });\n    });\n\n    if (state.completed) {\n      updateIntroForCompleted();\n    } else if (hasSaved && state.currentStep > 0 && state.currentStep <= TOTAL_STEPS && startBtn) {\n      startBtn.textContent = 'Reprendre o\u00f9 j\\'en \u00e9tais \u2192';\n    }\n\n    console.log('\u2705 Outil \u00ab Sortir de la procrastination \u00bb initialis\u00e9');\n  }\n\n  window.jirisProcrastination = {\n    state,\n    goToStep,\n    showSummary,\n    printSummary,\n    downloadSummary,\n    restart\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\n\n<\/body>\n<\/html>\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>Sortir de la procrastination Sortir de la procrastination \u2014 Outil d&rsquo;accompagnement JIRIS \u23f3 Sortir de la procrastination Un outil d&rsquo;accompagnement pour comprendre ce qui se cache derri\u00e8re l&rsquo;\u00e9vitement, et retrouver le chemin d&rsquo;un premier geste. Avant de commencer \u26a0\ufe0f Procrastiner n&rsquo;est pas de la paresse La procrastination est rarement un probl\u00e8me de \u00ab volont\u00e9 \u00bb. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"iawp_total_views":0,"footnotes":""},"class_list":["post-3585","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/pages\/3585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/comments?post=3585"}],"version-history":[{"count":4,"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/pages\/3585\/revisions"}],"predecessor-version":[{"id":3589,"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/pages\/3585\/revisions\/3589"}],"wp:attachment":[{"href":"https:\/\/jiris.ca\/en\/wp-json\/wp\/v2\/media?parent=3585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}