





{"id":206,"date":"2025-07-25T16:25:34","date_gmt":"2025-07-25T16:25:34","guid":{"rendered":"https:\/\/iptv.directory\/?page_id=206"},"modified":"2026-01-28T13:14:08","modified_gmt":"2026-01-28T13:14:08","slug":"reddit-success-wizard","status":"publish","type":"page","link":"https:\/\/iptv.directory\/index.php\/reddit-success-wizard\/","title":{"rendered":"Reddit Success Wizard"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"206\" class=\"elementor elementor-206\">\n\t\t\t\t<div class=\"elementor-element elementor-element-002a566 e-flex e-con-boxed e-con e-parent\" data-id=\"002a566\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51fa3d5 elementor-widget elementor-widget-html\" data-id=\"51fa3d5\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <title>Microworkers Reddit Success Wizard<\/title>\r\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/papaparse@5.4.1\/papaparse.min.js\" defer><\/script>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/canvas-confetti@1.9.2\/dist\/confetti.browser.min.js\" defer><\/script>\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.1.1\/css\/all.min.css\" integrity=\"sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\" \/>\r\n    <style>\r\n        \/* ================================================ *\/\r\n        \/* ==         VARIABLES & STYLES DE BASE         == *\/\r\n        \/* ================================================ *\/\r\n        :root{\r\n            --accent:#ff4500;\r\n            --accent-dark:#e03d00;\r\n            --ok:#28a745;\r\n            --ok-dark:#218838;\r\n            --warn:#ffc107;\r\n            --warn-dark: #d39e00;\r\n            --danger:#dc3545;\r\n            --info:#0d6efd;\r\n            --info-dark:#0b5ed7;\r\n            \/* NOUVEAU: Couleur pour les astuces (Tips) *\/\r\n            --tip: #6f42c1; \r\n            --tip-dark: #59359a;\r\n            --tip-light-bg: #f4f0f9;\r\n\r\n            --bg:#f5f7fa;\r\n            --panel:#ffffff;\r\n            --border:#e9eef3;\r\n            --text:#222;\r\n            --border-radius:12px;\r\n            --transition-speed: 0.2s;\r\n            \r\n            --helper-green: #20c997;\r\n            --helper-green-dark: #19a179;\r\n            --helper-purple: #6f42c1;\r\n            --helper-purple-dark: #59359a;\r\n\r\n            \/* \u00c9chelle typographique *\/\r\n            --font-size-sm: 0.8rem;\r\n            --font-size-base: 1rem;\r\n            --font-size-md: 1.1rem;\r\n            --font-size-lg: 1.5rem;\r\n            --font-size-xl: 2.5rem;\r\n            \r\n            --font-weight-regular: 400;\r\n            --font-weight-medium: 500;\r\n            --font-weight-semibold: 600;\r\n            --font-weight-bold: 800;\r\n        }\r\n\r\n        *{box-sizing:border-box;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;}\r\n        \r\n        body{\r\n            margin:0;\r\n            background:linear-gradient(180deg, #f5f7fa 0%, #e9eef3 100%);\r\n            color:var(--text);\r\n            font-size: var(--font-size-base);\r\n            font-weight: var(--font-weight-regular);\r\n            min-height: 100vh;\r\n            padding-bottom: 60px;\r\n        }\r\n\r\n        a{color:var(--accent);} a:hover{text-decoration:none;}\r\n\r\n        \/* Hi\u00e9rarchie des titres *\/\r\n        .tool-title-main {\r\n            font-size: var(--font-size-xl);\r\n            font-weight: var(--font-weight-bold);\r\n            margin:0;\r\n            background:linear-gradient(90deg,var(--accent),var(--accent-dark));\r\n            -webkit-background-clip:text;\r\n            -webkit-text-fill-color:transparent;\r\n            background-clip:text;\r\n            color:transparent;\r\n        }\r\n        .tool-title-subtitle {\r\n            font-size: var(--font-size-base);\r\n            font-weight: var(--font-weight-medium);\r\n            margin:5px 0 0;\r\n            color:#555;\r\n        }\r\n        h2{\r\n            margin-top:0;\r\n            margin-bottom: 12px;\r\n            font-size: var(--font-size-lg);\r\n            font-weight: var(--font-weight-semibold);\r\n        }\r\n        h3 { \r\n            font-size: var(--font-size-md);\r\n            font-weight: var(--font-weight-semibold);\r\n            color: var(--accent);\r\n            border-bottom: 2px solid var(--border);\r\n            padding-bottom: 8px;\r\n            margin-bottom: 15px;\r\n            margin-top: 25px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n\r\n        h3:first-child { margin-top: 0; }\r\n        h3 .fa-solid { color: var(--accent); }\r\n\r\n        .container{max-width:980px;margin:30px auto;background:var(--panel);border:none;border-radius:16px;padding:30px;position:relative; box-shadow: 0 10px 40px rgba(0,0,0,0.08);}\r\n        \r\n        \/* ================================================ *\/\r\n        \/* ==         STYLES DES COMPOSANTS              == *\/\r\n        \/* ================================================ *\/\r\n        \r\n        \/* Barre de statut du compte *\/\r\n        #account-status-bar {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n            padding: 10px 15px;\r\n            border-radius: var(--border-radius);\r\n            margin-bottom: 20px;\r\n            font-size: 0.8rem;\r\n            font-weight: 500;\r\n            border: 1px solid transparent;\r\n        }\r\n        #account-status-bar.ok {\r\n            background-color: #e6f9eb;\r\n            border-color: #bfe8c9;\r\n            color: var(--ok-dark);\r\n        }\r\n        #account-status-bar.warn {\r\n            background-color: #fffbe6;\r\n            border-color: #ffe58f;\r\n            color: #b26a00;\r\n        }\r\n        #account-status-bar img {\r\n            width: 30px;\r\n            height: 30px;\r\n            border-radius: 50%;\r\n        }\r\n        #account-status-bar strong {\r\n            font-weight: 700;\r\n        }\r\n        #account-status-bar .status-message {\r\n            margin-right: auto; \/* Pousse les stats \u00e0 droite *\/\r\n        }\r\n        #account-status-bar .status-message .fa-solid {\r\n            margin-right: 5px;\r\n        }\r\n        #account-status-bar .stats {\r\n            display: flex;\r\n            gap: 15px;\r\n        }\r\n        #account-status-bar .stats .fa-solid {\r\n            margin-right: 4px;\r\n        }\r\n        #account-status-bar.warn .stats .is-problem {\r\n            font-weight: 700;\r\n            text-decoration: underline;\r\n            text-decoration-color: var(--danger);\r\n            text-decoration-thickness: 2px;\r\n        }\r\n\r\n\r\n        \/* Navigation par \u00e9tapes *\/\r\n        nav.steps{border-bottom: 1px solid var(--border); padding-bottom: 10px; margin-bottom: 25px; display:flex;gap:6px;flex-wrap:wrap;}\r\n        nav.steps button{flex:1 1 140px; border: none; background: transparent; color: #888; border-bottom: 3px solid transparent; border-radius: 6px 6px 0 0; font-weight: 600; padding: 10px 6px 8px 6px; font-size:.8rem; transition: all 0.2s ease;}\r\n        nav.steps button.active{background: var(--bg); color: var(--info); border-bottom: 3px solid var(--info);}\r\n        nav.steps i { margin-right: 6px; }\r\n        .step{display:none;} .step.active{display:block;}\r\n\r\n        \/* Animations de transition *\/\r\n        @keyframes slide-in-right { from { transform: translateX(30px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }\r\n        @keyframes slide-out-left { from { transform: translateX(0); opacity: 1; } to { transform: translateX(-30px); opacity: 0; } }\r\n        .slide-in { animation: slide-in-right 0.3s forwards ease-out; }\r\n        .slide-out { animation: slide-out-left 0.3s forwards ease-out; }\r\n        \r\n        \/* Animation du countdown *\/\r\n        @keyframes pulse-countdown { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } }\r\n        @keyframes glow { 0%, 100% { box-shadow: 0 0 20px rgba(13, 110, 253, 0.3); } 50% { box-shadow: 0 0 40px rgba(13, 110, 253, 0.6); } }\r\n        .countdown-container { animation: glow 2s infinite ease-in-out; }\r\n        \r\n        \/* LOCK SCREEN *\/\r\n        #lock-screen {\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100vh;\r\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\r\n            z-index: 10000;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            transition: opacity 0.5s ease, visibility 0.5s ease;\r\n        }\r\n        \r\n        #lock-screen.hidden {\r\n            opacity: 0;\r\n            visibility: hidden;\r\n            pointer-events: none;\r\n        }\r\n        \r\n        .lock-container {\r\n            background: white;\r\n            border-radius: 20px;\r\n            padding: 50px 40px;\r\n            box-shadow: 0 20px 60px rgba(0,0,0,0.3);\r\n            max-width: 500px;\r\n            width: 90%;\r\n            text-align: center;\r\n            animation: slideDown 0.5s ease-out;\r\n        }\r\n        \r\n        @keyframes slideDown {\r\n            from { transform: translateY(-50px); opacity: 0; }\r\n            to { transform: translateY(0); opacity: 1; }\r\n        }\r\n        \r\n        .lock-icon {\r\n            font-size: 4rem;\r\n            color: #667eea;\r\n            margin-bottom: 20px;\r\n            animation: pulse 2s infinite;\r\n        }\r\n        \r\n        @keyframes pulse {\r\n            0%, 100% { transform: scale(1); opacity: 1; }\r\n            50% { transform: scale(1.2); opacity: 0.7; }\r\n        }\r\n        \r\n        \/* Success Validation Box - Option 3 *\/\r\n        .success-validation-box {\r\n            background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%);\r\n            border: 4px solid #28a745;\r\n            border-radius: 16px;\r\n            padding: 35px 30px;\r\n            text-align: center;\r\n            max-width: 550px;\r\n            box-shadow: 0 15px 50px rgba(40, 167, 69, 0.3);\r\n            animation: slideInScale 0.5s ease-out;\r\n            position: relative;\r\n            overflow: hidden;\r\n        }\r\n        \r\n        @keyframes slideInScale {\r\n            from {\r\n                transform: scale(0.8) translateY(30px);\r\n                opacity: 0;\r\n            }\r\n            to {\r\n                transform: scale(1) translateY(0);\r\n                opacity: 1;\r\n            }\r\n        }\r\n        \r\n        @keyframes bounceIn {\r\n            0% { transform: scale(0); }\r\n            50% { transform: scale(1.2); }\r\n            100% { transform: scale(1); }\r\n        }\r\n        \r\n        \/* Effet de brillance anim\u00e9e *\/\r\n        .success-validation-box::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: -50%;\r\n            left: -50%;\r\n            width: 200%;\r\n            height: 200%;\r\n            background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);\r\n            animation: shine 3s infinite;\r\n        }\r\n        \r\n        @keyframes shine {\r\n            0% { transform: translateX(-100%) translateY(-100%); }\r\n            100% { transform: translateX(100%) translateY(100%); }\r\n        }\r\n        \r\n        .next-step-inner-box {\r\n            background: white;\r\n            border: 3px solid #28a745;\r\n            border-radius: 12px;\r\n            padding: 20px;\r\n            margin-top: 20px;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n        \r\n        @keyframes bounce {\r\n            0%, 20%, 50%, 80%, 100% { transform: translateY(0); }\r\n            40% { transform: translateY(-10px); }\r\n            60% { transform: translateY(-5px); }\r\n        }\r\n        \r\n        .lock-container h1 {\r\n            font-size: 2rem;\r\n            font-weight: 800;\r\n            margin: 0 0 10px 0;\r\n            background: linear-gradient(90deg, #667eea, #764ba2);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n        }\r\n        \r\n        .lock-container p {\r\n            color: #666;\r\n            margin-bottom: 30px;\r\n            font-size: 0.95rem;\r\n        }\r\n        \r\n        .lock-requirements {\r\n            background: #f8f9fa;\r\n            border-radius: 12px;\r\n            padding: 15px;\r\n            margin: 20px 0;\r\n            text-align: left;\r\n        }\r\n        \r\n        .lock-requirements h4 {\r\n            margin: 0 0 10px 0;\r\n            font-size: 0.9rem;\r\n            color: #333;\r\n            font-weight: 600;\r\n        }\r\n        \r\n        .lock-requirements ul {\r\n            margin: 0;\r\n            padding-left: 20px;\r\n            font-size: 0.85rem;\r\n            color: #666;\r\n        }\r\n        \r\n        .lock-requirements li {\r\n            margin-bottom: 5px;\r\n        }\r\n        \r\n        .lock-input-group {\r\n            position: relative;\r\n            margin-bottom: 20px;\r\n        }\r\n        \r\n        .lock-input-group input {\r\n            width: 100%;\r\n            padding: 15px 45px 15px 15px;\r\n            border: 2px solid #e9eef3;\r\n            border-radius: 12px;\r\n            font-size: 1rem;\r\n            transition: all 0.3s ease;\r\n        }\r\n        \r\n        .lock-input-group input:focus {\r\n            outline: none;\r\n            border-color: #667eea;\r\n            box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\r\n        }\r\n        \r\n        .lock-input-group .input-icon {\r\n            position: absolute;\r\n            right: 15px;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n            color: #999;\r\n            font-size: 1.2rem;\r\n        }\r\n        \r\n        .lock-btn {\r\n            width: 100%;\r\n            padding: 15px;\r\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 12px;\r\n            font-size: 1rem;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);\r\n        }\r\n        \r\n        .lock-btn:hover:not(:disabled) {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 6px 20px rgba(102, 126, 234, 0.5);\r\n        }\r\n        \r\n        .lock-btn:disabled {\r\n            opacity: 0.6;\r\n            cursor: not-allowed;\r\n            transform: none;\r\n        }\r\n        \r\n        .lock-error {\r\n            background: #ffe6e6;\r\n            border: 2px solid #dc3545;\r\n            border-radius: 12px;\r\n            padding: 15px;\r\n            margin-top: 20px;\r\n            text-align: left;\r\n            display: none;\r\n        }\r\n        \r\n        .lock-error.show {\r\n            display: block;\r\n            animation: shake 0.5s;\r\n        }\r\n        \r\n        @keyframes shake {\r\n            0%, 100% { transform: translateX(0); }\r\n            10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }\r\n            20%, 40%, 60%, 80% { transform: translateX(5px); }\r\n        }\r\n        \r\n        .lock-error h4 {\r\n            margin: 0 0 10px 0;\r\n            color: #dc3545;\r\n            font-size: 0.95rem;\r\n        }\r\n        \r\n        .lock-error p {\r\n            margin: 0;\r\n            color: #721c24;\r\n            font-size: 0.85rem;\r\n        }\r\n        \r\n        .lock-error ul {\r\n            margin: 10px 0 0 0;\r\n            padding-left: 20px;\r\n            font-size: 0.85rem;\r\n            color: #721c24;\r\n        }\r\n        \r\n        \/* Scroll Indicator *\/\r\n        .scroll-indicator {\r\n            position: fixed;\r\n            bottom: 30px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            z-index: 1000;\r\n            background: linear-gradient(135deg, #667eea, #764ba2);\r\n            color: white;\r\n            padding: 15px 25px;\r\n            border-radius: 50px;\r\n            box-shadow: 0 8px 20px rgba(102, 126, 234, 0.4);\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n            font-weight: 600;\r\n            font-size: 0.9rem;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n            transition: opacity 0.3s ease;\r\n        }\r\n        .scroll-indicator.visible {\r\n            opacity: 1;\r\n            pointer-events: auto;\r\n            animation: bounce 2s infinite;\r\n        }\r\n        @keyframes bounce {\r\n            0%, 20%, 50%, 80%, 100% { transform: translateX(-50%) translateY(0); }\r\n            40% { transform: translateX(-50%) translateY(-10px); }\r\n            60% { transform: translateX(-50%) translateY(-5px); }\r\n        }\r\n        .scroll-indicator i {\r\n            animation: pulse 1.5s infinite;\r\n        }\r\n        @keyframes pulse {\r\n            0%, 100% { transform: scale(1); }\r\n            50% { transform: scale(1.2); }\r\n        }\r\n        \r\n        \r\n        \/* Panel Examples Flottant *\/\r\n        #floating-examples-panel {\r\n            position: fixed;\r\n            top: 0;\r\n            right: -380px;\r\n            width: 380px;\r\n            height: 100vh;\r\n            background: #fff;\r\n            box-shadow: -4px 0 20px rgba(0,0,0,0.15);\r\n            z-index: 998;\r\n            transition: right 0.4s ease;\r\n            overflow-y: auto;\r\n            padding: 20px;\r\n        }\r\n        #floating-examples-panel.open {\r\n            right: 0;\r\n        }\r\n        \r\n        \/* Panel Mission Flottant (LEFT) *\/\r\n        #floating-mission-panel {\r\n            position: fixed;\r\n            top: 0;\r\n            left: -420px;\r\n            width: 400px;\r\n            height: 100vh;\r\n            background: #fff;\r\n            box-shadow: 4px 0 20px rgba(0,0,0,0.15);\r\n            z-index: 997;\r\n            transition: left 0.4s ease;\r\n            overflow-y: auto;\r\n            padding: 20px;\r\n        }\r\n        #floating-mission-panel.open {\r\n            left: 0;\r\n        }\r\n        #floating-mission-panel h3 {\r\n            margin-top: 0;\r\n            color: #667eea;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n        }\r\n        #floating-mission-panel .close-panel {\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n            background: transparent;\r\n            border: none;\r\n            font-size: 1.5rem;\r\n            cursor: pointer;\r\n            color: #999;\r\n            transition: color 0.2s;\r\n            z-index: 10;\r\n        }\r\n        #floating-mission-panel .close-panel:hover { color: #667eea; }\r\n        \r\n        \/* Bouton pour r\u00e9ouvrir le panel mission *\/\r\n        #show-mission-btn {\r\n            position: fixed;\r\n            left: -50px;\r\n            top: 50%;\r\n            transform: translateY(-50%);\r\n            z-index: 996;\r\n            transition: left 0.4s ease;\r\n        }\r\n        #show-mission-btn.visible {\r\n            left: 20px;\r\n        }\r\n        #floating-examples-panel .example {\r\n            padding: 12px;\r\n            border: 1px solid #e2d9f2;\r\n            background: #f3eff8;\r\n            margin-bottom: 10px;\r\n            border-radius: 8px;\r\n            cursor: pointer;\r\n            font-size: 0.85rem;\r\n            line-height: 1.4;\r\n            transition: all 0.2s;\r\n        }\r\n        #floating-examples-panel .example:hover {\r\n            background: var(--helper-purple);\r\n            color: #fff;\r\n            transform: translateX(-5px);\r\n        }\r\n        \r\n        \/* Panel Posts Flottant *\/\r\n        #floating-posts-panel {\r\n            position: fixed;\r\n            top: 0;\r\n            right: -450px;\r\n            width: 430px;\r\n            height: 100vh;\r\n            background: #fff;\r\n            box-shadow: -4px 0 20px rgba(0,0,0,0.15);\r\n            z-index: 999;\r\n            transition: right 0.4s ease;\r\n            overflow-y: auto;\r\n            padding: 20px;\r\n            display: none;\r\n        }\r\n        #floating-posts-panel.open { \r\n            right: 0; \r\n            display: block;\r\n        }\r\n        #floating-posts-panel .close-panel {\r\n            position: absolute;\r\n            top: 15px;\r\n            right: 15px;\r\n            background: transparent;\r\n            border: none;\r\n            font-size: 1.5rem;\r\n            cursor: pointer;\r\n            color: #999;\r\n            transition: color 0.2s;\r\n        }\r\n        #floating-posts-panel .close-panel:hover { color: var(--danger); }\r\n        #floating-posts-panel h3 {\r\n            margin-top: 0;\r\n            color: #667eea;\r\n            padding-right: 40px;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 10px;\r\n        }\r\n        \r\n        \/* Responsive Mobile Posts *\/\r\n        @media(max-width:700px) {\r\n            #floating-posts-panel {\r\n                width: 100%;\r\n                right: -100%;\r\n            }\r\n            #floating-posts-panel.open { \r\n                right: 0; \r\n            }\r\n        }\r\n        \r\n        .action-panel { background-color: var(--bg); border: 1px solid var(--border); border-radius: var(--border-radius); padding: 25px; margin-top: 20px; }\r\n        \r\n        \/* Styles des champs de formulaire et validation *\/\r\n        .field{position: relative; margin-bottom:18px;}\r\n        .field label{display:block; font-size: 0.9rem; font-weight: var(--font-weight-semibold); margin-bottom:4px;}\r\n        input[type=text],textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--border-radius);font-size:.85rem;background:#fff; transition: box-shadow 0.2s, border-color 0.2s;}\r\n        input[type=text]:focus,textarea:focus { border-color: var(--info); box-shadow: 0 0 0 3px rgba(13, 110, 253, 0.15); outline: none; }\r\n        textarea{min-height:120px;resize:vertical;}\r\n\r\n        @keyframes shake-horizontal {\r\n            0%, 100% { transform: translateX(0); }\r\n            10%, 30%, 50%, 70% { transform: translateX(-5px); }\r\n            20%, 40%, 60%, 80% { transform: translateX(5px); }\r\n        }\r\n\r\n        .is-invalid {\r\n            border-color: var(--danger) !important;\r\n            animation: shake-horizontal 0.5s ease-in-out;\r\n        }\r\n        \r\n        .is-valid {\r\n            border-color: var(--ok) !important;\r\n            padding-right: 30px;\r\n        }\r\n\r\n        .is-valid::after {\r\n            content: '\u2705';\r\n            position: absolute;\r\n            top: 50%;\r\n            right: 12px;\r\n            transform: translateY(-50%);\r\n            font-size: 0.9rem;\r\n        }\r\n\r\n        \/* Styles des boutons (version am\u00e9lior\u00e9e) *\/\r\n        button { cursor: pointer; transition: all var(--transition-speed) ease-out; }\r\n        button:disabled { cursor: not-allowed; opacity: 0.65; background-color: #cccccc !important; transform: none !important; box-shadow: none !important; border-color: #cccccc !important; background-image: none !important; }\r\n        button.outline:disabled { background: #fff !important; color: #ccc !important; border-color: #ccc !important; }\r\n        .btn { background: var(--accent); color: #fff; border: 1px solid transparent; padding: 12px 24px; border-radius: var(--border-radius); font-weight: var(--font-weight-semibold); font-size: 0.9rem; transition: all var(--transition-speed) ease-out; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.07); }\r\n        .btn i { margin-right: 8px; margin-left: 0; }\r\n        .btn .fa-arrow-right, .btn .fa-triangle-exclamation { margin-left: 8px; margin-right: 0; }\r\n        .btn:hover:not(:disabled) { background: var(--accent-dark); transform: translateY(-1px); box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); }\r\n        .btn:active:not(:disabled) { transform: scale(0.98); box-shadow: 0 2px 4px rgba(0,0,0,0.07); }\r\n        .btn.outline { background: #fff; color: var(--accent); border: 1px solid var(--accent); }\r\n        .btn.outline:hover:not(:disabled) { background: var(--accent); color: #fff; }\r\n        .btn.outline.info { color: var(--info); border-color: var(--info); }\r\n        .btn.outline.info:hover:not(:disabled) { background: var(--info); color: #fff; }\r\n        .btn.subtle { background-color: #f8f9fa; color: #495057; border: 1px solid #dee2e6; font-weight: 500; }\r\n        .btn.subtle:hover:not(:disabled) { background-color: #e9ecef; border-color: #ced4da; color: #212529; transform: translateY(-1px); }\r\n        .btn.sm { padding: 6px 12px; font-size: .75rem; font-weight: 500; border-radius: 8px; }\r\n        .btn-alt { background-color: #fffbe6; color: #b26a00; border: 1px solid #ffe58f; font-weight: 600; }\r\n        .btn-alt:hover { background-color: #fff2cc; border-color: #ffd590; color: #b26a00; }\r\n\r\n        \/* Squelettes de chargement *\/\r\n        @keyframes pulse-skeleton { 0% { background-color: #eee; } 50% { background-color: #e0e0e0; } 100% { background-color: #eee; } }\r\n        .skeleton { background-color: #eee; animation: pulse-skeleton 1.5s infinite ease-in-out; color: transparent !important; }\r\n        .skeleton .profile-avatar { background-color: #e0e0e0; }\r\n        .skeleton h4, .skeleton p { background-color: #e0e0e0; border-radius: 4px; color: transparent; user-select: none; }\r\n        .comment-history-item.skeleton { display: flex; flex-direction: column; gap: 8px; background-color: transparent; animation: none; }\r\n        .comment-history-item.skeleton .line { height: 12px; border-radius: 4px; background-color: #eee; animation: pulse-skeleton 1.5s infinite ease-in-out; }\r\n        .comment-history-item.skeleton .line.short { width: 60%; }\r\n\r\n        \/* MODIFI\u00c9: Logique des couleurs pour les bo\u00eetes d'information *\/\r\n        .msg{margin-top:6px;font-size:var(--font-size-sm); padding: 10px; border-radius: var(--border-radius);}\r\n        .msg .ok{color:var(--ok);font-weight:600; background-color: #e6f9eb; border: 1px solid #bfe8c9; display: block; }\r\n        .msg .err{color:var(--danger);font-weight:600; background-color: #ffe6e6; border: 1px solid #ffb3b3; display: block;}\r\n        .note, #quality-box, .result-card-details, .badge{font-size: var(--font-size-sm);}\r\n        #card-list .post{border:1px solid var(--border);padding:12px;border-radius:var(--border-radius);margin-bottom:10px;font-size:.75rem;background:#fff;display:flex;justify-content:space-between;gap:10px;align-items:center;position:relative; transition: transform 0.2s, box-shadow 0.2s, background-color 0.2s; box-shadow: 0 2px 8px rgba(0,0,0,0.06);}\r\n        \r\n        .actions-bottom{margin-top:25px;display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end;align-items:center;}\r\n        .instruction-box { background-color: #eef7ff; border: 1px solid #b3d9ff; border-left: 5px solid var(--info); border-radius: var(--border-radius); padding: 15px; margin-bottom: 20px; font-size: 0.9rem; line-height: 1.5; }\r\n        .instruction-box h4 { margin: 0 0 10px 0; font-size: 0.9rem; color: #005a7d; }\r\n        .instruction-box.with-action { display: flex; justify-content: space-between; align-items: center; }\r\n        .instruction-box.with-action p { margin: 0; }\r\n        #task-checklist-box { background-color: var(--panel); border-radius: var(--border-radius); padding: 20px 25px; max-width: 980px; margin: 30px auto 20px auto; border-top: 4px solid var(--accent); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08); }\r\n        footer { text-align: center; padding: 20px; font-size: 0.8rem; color: #888; margin-top: 30px; }\r\n        .faq-float, .contact-float { width: 50px; height: 50px; border-radius: 50%; text-align: center; font-size: 24px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all var(--transition-speed) ease-in-out; }\r\n        .faq-float { position: fixed; bottom: 25px; right: 25px; background-color: var(--info); color: #FFF; z-index: 100; }\r\n        .contact-float { position: fixed; bottom: 90px; right: 25px; background-color: #0088cc; color: #FFF; z-index: 100; }\r\n        .faq-float:hover, .contact-float:hover { transform: scale(1.1) translateY(-2px); box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2); }\r\n        .tool-title-container{text-align:center;padding:10px 0 20px 0;}\r\n        #progress-wrapper{display: flex; gap: 4px; width: 100%; height: 8px; margin-bottom: 20px;}\r\n        .progress-segment { flex: 1; background-color: #eee; border-radius: 4px; transition: background-color 0.4s ease-out; transform: scaleX(0); transform-origin: left; animation: fill-in 0.4s forwards; }\r\n        .progress-segment.filled { background: linear-gradient(90deg,var(--info),var(--accent)); }\r\n        @keyframes fill-in { from { transform: scaleX(0); } to { transform: scaleX(1); } }\r\n        .example{padding:8px 10px;border:1px solid #d4e9ff;background:#fff;margin-bottom:8px;border-radius:6px;cursor:pointer;font-size:.75rem;line-height:1.3;}\r\n        .example:hover{background:#f0f7ff;}\r\n        .note{font-size:.7rem;color:#666;margin-top:4px;}\r\n        #validated-comment-display blockquote, #task-recap blockquote { background: #fff; border-left: 4px solid var(--ok); padding: 15px; margin: 10px 0; font-style: italic; font-size: 0.85rem; }\r\n        .post-list-wrapper { background-color: transparent; border: none; padding: 0; margin-top: 0; }\r\n        #floating-posts-panel::-webkit-scrollbar { width: 8px; }\r\n        #floating-posts-panel::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 4px; }\r\n        #floating-posts-panel::-webkit-scrollbar-thumb { background: #667eea; border-radius: 4px; }\r\n        \r\n        \/* NEW POST CARD DESIGN *\/\r\n        #card-list .post{border:2px solid #e0e0e0;border-radius:12px;padding:16px;margin-bottom:12px;background:white;transition: all 0.3s ease;position:relative;display:block;}\r\n        #card-list .post:hover{transform: translateY(-2px);box-shadow: 0 6px 20px rgba(102, 126, 234, 0.15);border-color: #667eea;}\r\n        #card-list .post.opened{border-color: #3498db;background: #f0f8ff;}\r\n        #card-list .post.selected{border-color: #28a745;background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%);box-shadow: 0 4px 15px rgba(40, 167, 69, 0.3);}\r\n        \r\n        .post-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;}\r\n        .subreddit-icon{width:36px;height:36px;background:linear-gradient(135deg, #667eea, #764ba2);border-radius:50%;display:flex;align-items:center;justify-content:center;color:white;font-size:1rem;flex-shrink:0;}\r\n        .post-subreddit{font-size:0.85rem;color:#667eea;font-weight:600;}\r\n        .post-status-badge{margin-left:auto;padding:4px 10px;border-radius:12px;font-size:0.75rem;font-weight:600;}\r\n        .badge-not-opened{background:#e9ecef;color:#6c757d;}\r\n        .badge-opened{background:#cfe2ff;color:#084298;}\r\n        .badge-selected{background:#28a745;color:white;}\r\n        \r\n        .post-title{font-weight:600;color:#333;margin-bottom:8px;line-height:1.4;font-size:0.95rem;}\r\n        #card-list .post.selected .post-title{color:#155724;}\r\n        \r\n        .post-url{font-size:0.75rem;color:#999;margin-bottom:12px;word-break:break-all;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}\r\n        \r\n        .post-actions{display:flex;gap:8px;margin-top:12px;}\r\n        .post-btn{padding:8px 16px;border:none;border-radius:8px;font-size:0.85rem;font-weight:600;cursor:pointer;transition:all 0.2s;display:inline-flex;align-items:center;gap:6px;}\r\n        .btn-open{background:linear-gradient(135deg, #667eea, #764ba2);color:white;}\r\n        .btn-open:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px rgba(102, 126, 234, 0.4);}\r\n        .btn-open:disabled{background:#e9ecef;color:#adb5bd;cursor:not-allowed;transform:none;}\r\n        \r\n        \/* NOUVEAU: Bouton Select avec gradient vert + emoji pointeur *\/\r\n        .btn-select{\r\n            background:linear-gradient(135deg, #28a745, #20c997);\r\n            color:white;\r\n            border:none;\r\n            box-shadow:0 4px 15px rgba(40, 167, 69, 0.3);\r\n            text-shadow:0 1px 2px rgba(0,0,0,0.1);\r\n            position:relative;\r\n            padding-right:40px;\r\n        }\r\n        .btn-select::after{\r\n            content:'\ud83d\udc46';\r\n            position:absolute;\r\n            right:10px;\r\n            font-size:1rem;\r\n            animation:bounce-emoji 1s infinite;\r\n        }\r\n        @keyframes bounce-emoji{\r\n            0%, 100%{transform:translateY(0);}\r\n            50%{transform:translateY(-5px);}\r\n        }\r\n        .btn-select:hover:not(:disabled){\r\n            transform:translateY(-2px);\r\n            box-shadow:0 6px 20px rgba(40, 167, 69, 0.4);\r\n            background:linear-gradient(135deg, #20c997, #28a745);\r\n        }\r\n        .btn-select:disabled{\r\n            background:#e9ecef !important;\r\n            color:#adb5bd !important;\r\n            cursor:not-allowed;\r\n            box-shadow:none !important;\r\n            text-shadow:none !important;\r\n        }\r\n        .btn-select:disabled::after{\r\n            display:none;\r\n        }\r\n        #card-list .post.selected .post-btn{opacity:0.7;pointer-events:none;}\r\n        .status-ok{color:var(--ok);font-weight:600;}\r\n        .status-bad{color:var(--danger);font-weight:600;}\r\n        .suggestions{background:#fff6e0;border:1px solid #ffd590;padding:10px;border-radius:var(--border-radius);margin-top:16px;font-size:.75rem;}\r\n        .badge.parfait{background:var(--ok);color:#fff;}\r\n        .badge.correct{background:var(--info);color:#fff;}\r\n        .badge.acorriger{background:var(--warn);color:#333;}\r\n        .badge.rejet{background:var(--danger);color:#fff;}\r\n        #quality-box .warn{color:#b26a00;font-weight:600;}\r\n        #quality-box .ok{color:var(--ok);font-weight:600;}\r\n        #score-canvas{width:150px;height:150px;}\r\n        .scorewrap{display:flex;align-items:center;gap:25px;margin-top:12px;flex-wrap:wrap;}\r\n        #idle-warning{position:fixed;bottom:12px;right:12px;background:#fffbe6;border:1px solid #ffe58f;padding:10px 14px;border-radius:8px;font-size:.65rem;display:none;box-shadow:0 2px 6px rgba(0,0,0,.15);z-index:99;}\r\n        .hidden{display:none !important;}\r\n        #final-page{max-width:680px;margin:40px auto;text-align:center;}\r\n        #final-page h1{font-size:2rem;margin-bottom:10px;}\r\n        .final-pass{color:var(--ok);} .final-fail{color:var(--danger);}\r\n        .ok-hint{background:#e6f9eb;border:1px solid #bfe8c9;padding:10px 14px;border-radius:var(--border-radius);margin-top:12px;font-size:.7rem;font-weight:500;}\r\n        .instruction-box p, .instruction-box ol, .instruction-box ul { margin: 0; padding-left: 18px; }\r\n        .instruction-box p { padding-left: 0; }\r\n        .instruction-box b { color: #005a7d; }\r\n        .instruction-box.warn { background-color: #fffbe6; border-color: #ffe58f; border-left-color: var(--warn); }\r\n        .instruction-box.warn h4, .instruction-box.warn b { color: #b26a00; }\r\n        .instruction-box.tip { background-color: var(--tip-light-bg); border-color: #dcd1ec; border-left-color: var(--tip); }\r\n        .instruction-box.tip h4, .instruction-box.tip b { color: var(--tip-dark); }\r\n        .scrollable-box { max-height: 250px; overflow-y: auto; }\r\n        #comment-checklist { list-style-type: none; padding: 0; font-size: 0.8rem; margin-top: 8px; }\r\n        #comment-checklist li { margin-bottom: 4px; transition: color 0.3s; }\r\n        #comment-checklist li.ok { color: var(--ok); font-weight: 600; }\r\n        #comment-checklist li.ok::before { content: '\u2705 '; }\r\n        #comment-checklist li.not-ok::before { content: '\u274c '; }\r\n        @keyframes pop-in { 0% { transform: scale(0.8); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }\r\n        @keyframes slide-in-down { from { opacity: 0; transform: translateY(-15px); } to { opacity: 1; transform: translateY(0); } }\r\n        #comment-checklist li.pop-in { animation: pop-in 0.3s forwards; }\r\n        #find-comment-helper { margin-top: 15px; padding: 10px; background: #eef7ff; border-radius: var(--border-radius); border: 1px solid #b3d9ff; }\r\n        #result-box { position: relative; }\r\n        #watermark {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%) rotate(-30deg);font-size: 3vw;font-weight: 800;color: rgba(0, 0, 0, 0.07);pointer-events: none;white-space: nowrap;z-index: 10;}\r\n        .modal-container {display: none; position: fixed;z-index: 10001;left: 0;top: 0;width: 100%;height: 100%;overflow: auto;background-color: rgba(0,0,0,0.6); animation: fadeIn .3s ease-in;}\r\n        .modal-content {background-color: #fefefe;margin: 5% auto;padding: 0;border: none;width: 90%;max-width: 700px;border-radius: 16px;position: relative; box-shadow: 0 20px 60px rgba(0,0,0,0.3); animation: slideInModal 0.3s ease-out;}\r\n        @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\r\n        @keyframes slideInModal { from { transform: translateY(-30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }\r\n        .modal-close {color: #999;position: absolute;top: 15px;right: 20px;font-size: 28px;font-weight: bold; z-index: 10; transition: color 0.2s;}\r\n        .modal-close:hover,.modal-close:focus {color: var(--danger);text-decoration: none;cursor: pointer;}\r\n        \r\n        .modal-header {\r\n            background: linear-gradient(135deg, #667eea, #764ba2);\r\n            color: white;\r\n            padding: 25px 30px;\r\n            border-radius: 16px 16px 0 0;\r\n        }\r\n        .modal-header h2 {\r\n            margin: 0;\r\n            font-size: 1.5rem;\r\n            color: white;\r\n            border: none;\r\n            padding: 0;\r\n        }\r\n        .modal-header p {\r\n            margin: 8px 0 0 0;\r\n            opacity: 0.9;\r\n            font-size: 0.9rem;\r\n        }\r\n        .modal-body {\r\n            padding: 30px;\r\n        }\r\n        .modal-section {\r\n            margin-bottom: 25px;\r\n            padding: 20px;\r\n            background: #f8f9fa;\r\n            border-radius: 12px;\r\n            border: 2px solid #e9eef3;\r\n        }\r\n        .modal-section h3 {\r\n            margin: 0 0 12px 0;\r\n            font-size: 1rem;\r\n            color: #333;\r\n            border: none;\r\n            padding: 0;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 8px;\r\n        }\r\n        .modal-comment-box {\r\n            background: white;\r\n            padding: 15px;\r\n            border-radius: 8px;\r\n            border: 2px solid #28a745;\r\n            margin-top: 10px;\r\n            position: relative;\r\n        }\r\n        .modal-comment-text {\r\n            font-size: 0.9rem;\r\n            line-height: 1.6;\r\n            color: #333;\r\n            margin: 0;\r\n            max-height: 150px;\r\n            overflow-y: auto;\r\n        }\r\n        .modal-post-box {\r\n            background: white;\r\n            padding: 15px;\r\n            border-radius: 8px;\r\n            border: 2px solid #667eea;\r\n            margin-top: 10px;\r\n        }\r\n        .modal-post-title {\r\n            font-weight: 600;\r\n            color: #333;\r\n            margin-bottom: 8px;\r\n            font-size: 0.95rem;\r\n        }\r\n        .modal-post-url {\r\n            font-size: 0.8rem;\r\n            color: #999;\r\n            word-break: break-all;\r\n        }\r\n        .modal-steps {\r\n            background: #fff3cd;\r\n            border: 2px solid #ffc107;\r\n            border-radius: 12px;\r\n            padding: 20px;\r\n            margin-bottom: 25px;\r\n        }\r\n        .modal-steps h4 {\r\n            margin: 0 0 12px 0;\r\n            color: #b26a00;\r\n            font-size: 0.95rem;\r\n        }\r\n        .modal-steps ol {\r\n            margin: 0;\r\n            padding-left: 20px;\r\n            font-size: 0.9rem;\r\n            line-height: 1.8;\r\n        }\r\n        .modal-steps li {\r\n            margin-bottom: 8px;\r\n        }\r\n        .modal-steps li strong {\r\n            color: #b26a00;\r\n        }\r\n        .modal-footer {\r\n            padding: 20px 30px;\r\n            border-top: 1px solid #e9eef3;\r\n            display: flex;\r\n            gap: 12px;\r\n            justify-content: space-between;\r\n        }\r\n        \r\n        .profile-card { display: flex; align-items: center; gap: 15px; padding: 12px; border-radius: var(--border-radius); margin-top: 10px; }\r\n        .profile-card.skeleton { min-height: 76px; }\r\n        .profile-card.ok { background: #e6f9eb; border: 1px solid #bfe8c9; }\r\n        .profile-card.bad { background: #ffe6e6; border: 1px solid #ffb3b3; }\r\n        .profile-card.warn { background: #fffbe6; border: 1px solid #ffe58f; }\r\n        .profile-avatar { width: 50px; height: 50px; border-radius: 50%; }\r\n        .profile-info h4 { margin: 0 0 4px 0; font-size: 1rem; }\r\n        .profile-info p { margin: 0; font-size: 0.8rem; }\r\n        .result-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin-top: 20px; }\r\n        .result-card { background-color: #f8f9fa; border: 1px solid var(--border); border-radius: var(--border-radius); padding: 15px; }\r\n        .result-card-header { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }\r\n        .result-card-header h4 { margin: 0; font-size: 0.9rem; }\r\n        .result-card-icon { font-size: 1.2rem; }\r\n        .result-card-details a {font-weight: 600;}\r\n        .tooltip-icon { cursor: help; color: #aaa; margin-left: auto; font-weight: bold; border: 1px solid #ccc; border-radius: 50%; width: 18px; height: 18px; display: inline-flex; justify-content: center; align-items: center; font-size: 0.7rem; }\r\n        #comment-history-list { max-height: 250px; overflow-y: auto; border: 1px solid var(--border); border-radius: var(--border-radius); padding: 8px; }\r\n        .comment-history-item { padding: 10px; border-radius: 8px; cursor: pointer; border: 2px solid transparent; transition: background-color 0.2s, border-color 0.2s; }\r\n        .comment-history-item:hover { background-color: #f5f7fa; }\r\n        .comment-history-item p { margin: 0; font-size: 0.8rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\r\n        .comment-history-item small { font-size: 0.7rem; color: #6c757d; }\r\n        #manual-verify-toggle { margin-top: 15px; width: 100%; }\r\n        #comment-found-box { border: 1px solid var(--border); padding: 12px; border-radius: var(--border-radius); background: #f8f9fa; font-size: 0.8rem; margin-top: 10px; }\r\n        #comment-found-box blockquote { margin: 8px 0; padding: 8px; background: #fff; border-left: 3px solid var(--info); }\r\n        #confirm-zone { display:flex; gap: 12px; }\r\n        @keyframes pulse-border { 0% { box-shadow: 0 0 0 0 rgba(255, 69, 0, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(255, 69, 0, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 69, 0, 0); } }\r\n        .pulse-select-button { animation: pulse-border 2s infinite; }\r\n        #task-checklist { list-style: none; padding: 0; margin: 10px 0 0 0; }\r\n        #task-checklist li { display: flex; align-items: center; padding: 8px 0; font-size: 0.9rem; transition: all 0.3s ease; border-top: 1px solid var(--border); }\r\n        #task-checklist li:first-child { border-top: none; }\r\n        #task-checklist li span { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--border); margin-right: 12px; transition: all 0.3s ease; }\r\n        #task-checklist li.active { font-weight: 700; color: var(--info); }\r\n        #task-checklist li.active span { border-color: var(--info); }\r\n        #task-checklist li.active span::before { content: '\u25b6'; color: var(--info); font-size: 10px; animation: pop-in 0.3s; }\r\n        #task-checklist li.completed { color: #888; text-decoration: line-through; opacity: 0.7; }\r\n        #task-checklist li.completed span { background-color: var(--ok); border-color: var(--ok); }\r\n        #task-checklist li.completed span::before { content: '\u2714'; color: white; font-size: 12px; animation: pop-in 0.3s; }\r\n        .diff-box{background:#f8f9fa;padding:10px;border-radius:4px;font-family:monospace;white-space:pre-wrap;word-break:break-all;}\r\n        .diff-box del{color:#dc3545;background:#f8d7da;text-decoration:none;}\r\n        .diff-box ins{color:#28a745;background:#d4edda;text-decoration:none;}\r\n\r\n        .btn-toggle {\r\n            border-radius: 50px;\r\n            font-weight: 600;\r\n            padding: 10px 20px;\r\n            width: 100%;\r\n            max-width: 250px;\r\n            text-align: left;\r\n            display: inline-flex;\r\n            align-items: center;\r\n            box-shadow: 0 2px 4px rgba(0,0,0, 0.1);\r\n        }\r\n        #tips-toggle-btn { \r\n            background-color: var(--helper-green);\r\n            border-color: var(--helper-green);\r\n            color: #fff;\r\n        }\r\n        #tips-toggle-btn:hover:not(:disabled) {\r\n            background-color: var(--helper-green-dark);\r\n            border-color: var(--helper-green-dark);\r\n        }\r\n        #examples-toggle-btn { \r\n            background-color: var(--helper-purple);\r\n            border-color: var(--helper-purple);\r\n            color: #fff;\r\n        }\r\n        #examples-toggle-btn:hover:not(:disabled) {\r\n            background-color: var(--helper-purple-dark);\r\n            border-color: var(--helper-purple-dark);\r\n        }\r\n        .btn-toggle:hover:not(:disabled) {\r\n            transform: translateY(-1px);\r\n            box-shadow: 0 4px 10px rgba(0,0,0, 0.15);\r\n        }\r\n        .btn-toggle.outline {\r\n            background-color: #eef7ff;\r\n            font-weight: 500;\r\n            box-shadow: none;\r\n        }\r\n        #tips-toggle-btn.outline { color: var(--helper-green-dark); border-color: #d3f3e9; background-color: #e9f9f4; }\r\n        #examples-toggle-btn.outline { color: var(--helper-purple-dark); border-color: #e2d9f2; background-color: #f3eff8; }\r\n\r\n        .btn-toggle.outline:hover:not(:disabled) {\r\n             transform: translateY(-1px);\r\n             box-shadow: 0 4px 8px rgba(0,0,0,0.05);\r\n        }\r\n        .btn-toggle::after {\r\n            font-family: \"Font Awesome 6 Free\";\r\n            font-weight: 900;\r\n            margin-left: auto;\r\n            padding-left: 10px;\r\n            transition: transform 0.2s ease-in-out;\r\n        }\r\n        .btn-toggle:not(.outline)::after { content: '\\f077'; } \/* up arrow *\/\r\n        .btn-toggle.outline::after { content: '\\f078'; } \/* down arrow *\/\r\n        \r\n        .error-explanation-box {\r\n            border: 1px solid #ffb3b3;\r\n            border-left: 5px solid var(--danger);\r\n            background-color: #ffe6e6;\r\n            padding: 15px;\r\n            margin-top: 15px;\r\n            border-radius: var(--border-radius);\r\n            font-size: 0.85rem;\r\n            color: #333;\r\n            text-align: left;\r\n        }\r\n        .error-explanation-box h4 {\r\n            margin: 0 0 10px 0;\r\n            font-size: 0.9rem;\r\n            color: var(--danger);\r\n            border-bottom: none;\r\n            padding-bottom: 0;\r\n        }\r\n        .error-explanation-box ol { padding-left: 20px; margin: 0; }\r\n        .error-explanation-box li { margin-bottom: 8px; }\r\n        .error-explanation-box li:last-child { margin-bottom: 0; }\r\n        \r\n        #validate-comment-btn {\r\n            width: 100%;\r\n            padding: 14px 24px;\r\n            font-size: 1rem;\r\n            font-weight: var(--font-weight-semibold);\r\n            color: #fff;\r\n            background-color: var(--ok);\r\n            border: none;\r\n            border-radius: var(--border-radius);\r\n            margin-top: 15px;\r\n            margin-bottom: 0;\r\n            box-shadow: 0 4px 15px rgba(40, 167, 69, 0.25);\r\n            transition: all 0.2s ease-out;\r\n        }\r\n        #validate-comment-btn:hover:not(:disabled) {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 6px 20px rgba(40, 167, 69, 0.35);\r\n            background-color: var(--ok-dark);\r\n        }\r\n        #validate-comment-btn:active:not(:disabled) {\r\n            transform: scale(0.98);\r\n            box-shadow: 0 2px 10px rgba(40, 167, 69, 0.2);\r\n        }\r\n        \r\n        @keyframes slideDown {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(-20px);\r\n            }\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n        \r\n        @keyframes ping {\r\n            0% { transform: scale(1); opacity: 1; }\r\n            75%, 100% { transform: scale(2); opacity: 0; }\r\n        }\r\n        \r\n        @keyframes pointRight {\r\n            0%, 100% { transform: translateX(0); }\r\n            50% { transform: translateX(10px); }\r\n        }\r\n        \r\n        \/* Tooltip warning pour les boutons pendant la v\u00e9rification *\/\r\n        .verification-warning-tooltip {\r\n            position: relative;\r\n        }\r\n        .verification-warning-tooltip::before {\r\n            content: '\u26a0\ufe0f Please wait for verification to complete (approx. 5 min)';\r\n            position: absolute;\r\n            bottom: 100%;\r\n            left: 0;\r\n            right: 0;\r\n            background: #ffc107;\r\n            color: #856404;\r\n            padding: 10px 15px;\r\n            border-radius: 8px;\r\n            font-size: 0.85rem;\r\n            font-weight: 600;\r\n            margin-bottom: 10px;\r\n            text-align: center;\r\n            box-shadow: 0 -2px 8px rgba(0,0,0,0.15);\r\n            animation: bounce 1s infinite;\r\n            z-index: 100;\r\n            white-space: nowrap;\r\n        }\r\n        .verification-warning-tooltip::after {\r\n            content: '';\r\n            position: absolute;\r\n            top: -8px;\r\n            left: 50%;\r\n            transform: translateX(-50%);\r\n            border: 8px solid transparent;\r\n            border-top-color: #ffc107;\r\n            z-index: 100;\r\n        }\r\n        @keyframes bounce {\r\n            0%, 100% { transform: translateY(0); }\r\n            50% { transform: translateY(-5px); }\r\n        }\r\n\r\n        @media(max-width:700px){.container{padding:22px;} nav.steps button{flex:1 1 46%;font-size:.7rem;} #score-canvas{width:130px;height:130px;} #account-status-bar{flex-wrap: wrap;}}\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- LOCK SCREEN - Shows immediately with loading -->\r\n<div id=\"lock-screen\">\r\n    <div class=\"lock-container\">\r\n        <div class=\"lock-icon\">\r\n            <i class=\"fa-solid fa-spinner fa-spin\" id=\"lock-icon-spinner\"><\/i>\r\n            <i class=\"fa-solid fa-lock\" id=\"lock-icon-lock\" style=\"display: none;\"><\/i>\r\n        <\/div>\r\n        <h1>Reddit Success Wizard<\/h1>\r\n        <p id=\"lock-subtitle\">Loading mission data...<\/p>\r\n        \r\n        <!-- Loading Progress -->\r\n        <div id=\"lock-loading\" style=\"width: 100%; margin: 20px 0;\">\r\n            <div style=\"width: 100%; background: #e9eef3; border-radius: 8px; overflow: hidden; margin-bottom: 15px;\">\r\n                <div id=\"lock-loading-progress\" style=\"height: 8px; width: 0%; background: linear-gradient(90deg, #667eea, #764ba2); transition: width 0.5s ease-in-out;\"><\/div>\r\n            <\/div>\r\n            <div id=\"lock-loading-text\" style=\"text-align: center; font-size: 0.9rem; color: #666;\">\r\n                <i class=\"fa-solid fa-spinner fa-spin\"><\/i> Preparing your mission...\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <form id=\"lock-form\" onsubmit=\"unlockTool(event)\" style=\"display: none;\">\r\n            <!-- Instruction box -->\r\n            <div style=\"background: linear-gradient(135deg, #fff5f5 0%, #ffe6e6 100%); border: 2px solid #ff4500; border-radius: 12px; padding: 15px; margin-bottom: 20px; text-align: center;\">\r\n                <div style=\"font-size: 0.9rem; color: #333; line-height: 1.6;\">\r\n                    <i class=\"fa-solid fa-info-circle\" style=\"color: #ff4500; font-size: 1.2rem; margin-bottom: 8px;\"><\/i>\r\n                    <p style=\"margin: 8px 0 0 0; font-weight: 600; color: #ff4500;\">\r\n                        <i class=\"fa-solid fa-arrow-right\"><\/i> First, log in to Reddit in another tab\r\n                    <\/p>\r\n                    <p style=\"margin: 5px 0 0 0; font-size: 0.85rem; color: #666;\">\r\n                        Then copy your <strong>username<\/strong> or <strong>profile URL<\/strong> and paste it below\r\n                    <\/p>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div style=\"margin-bottom: 20px;\">\r\n                <label style=\"font-weight: 600; margin-bottom: 8px; display: block; font-size: 1rem; text-align: center;\">\r\n                    <i class=\"fa-brands fa-reddit\" style=\"color: #ff4500;\"><\/i> Enter Your Reddit Username\r\n                <\/label>\r\n                <div class=\"lock-input-group\">\r\n                    <input \r\n                        type=\"text\" \r\n                        id=\"lock-reddit-username\" \r\n                        placeholder=\"username or reddit.com\/user\/username\" \r\n                        autocomplete=\"off\"\r\n                        required\r\n                        style=\"font-size: 1rem; padding: 14px 45px 14px 15px;\"\r\n                    \/>\r\n                    <i class=\"fa-brands fa-reddit input-icon\"><\/i>\r\n                <\/div>\r\n                <p style=\"font-size: 0.75rem; color: #999; margin: 8px 0 0 0; text-align: center;\">\r\n                    Account must be 45+ days old with 50+ karma\r\n                <\/p>\r\n            <\/div>\r\n            \r\n            <div id=\"lock-mw-field\" style=\"margin-bottom: 20px; display: none;\">\r\n                <!-- Instruction box for Microworkers -->\r\n                <div style=\"background: linear-gradient(135deg, #f5f7ff 0%, #e6ebff 100%); border: 2px solid #667eea; border-radius: 12px; padding: 15px; margin-bottom: 20px; text-align: center;\">\r\n                    <div style=\"font-size: 0.9rem; color: #333; line-height: 1.6;\">\r\n                        <i class=\"fa-solid fa-info-circle\" style=\"color: #667eea; font-size: 1.2rem; margin-bottom: 8px;\"><\/i>\r\n                        <p style=\"margin: 8px 0 0 0; font-weight: 600; color: #667eea;\">\r\n                            <i class=\"fa-solid fa-arrow-right\"><\/i> Log in to Microworkers in another tab\r\n                        <\/p>\r\n                        <p style=\"margin: 5px 0 0 0; font-size: 0.85rem; color: #666;\">\r\n                            Find your username at the <strong>bottom of the menu<\/strong> (next to balance)<br>\r\n                            or visit: <a href=\"https:\/\/www.microworkers.com\/account_nickname_change.php\" target=\"_blank\" style=\"color: #667eea; font-weight: 600; text-decoration: underline;\">microworkers.com\/account_nickname_change.php<\/a>\r\n                        <\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <label style=\"font-weight: 600; margin-bottom: 8px; display: block; font-size: 1rem; text-align: center;\">\r\n                    <i class=\"fa-solid fa-briefcase\" style=\"color: #667eea;\"><\/i> Microworkers Username\r\n                <\/label>\r\n                <div class=\"lock-input-group\">\r\n                    <input \r\n                        type=\"text\" \r\n                        id=\"lock-mw-username\" \r\n                        placeholder=\"Your Microworkers username\" \r\n                        autocomplete=\"off\"\r\n                        style=\"font-size: 1rem; padding: 14px 45px 14px 15px;\"\r\n                    \/>\r\n                    <i class=\"fa-solid fa-user input-icon\"><\/i>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <button type=\"submit\" class=\"lock-btn\" id=\"lock-verify-btn\">\r\n                <i class=\"fa-solid fa-unlock\"><\/i> Verify & Continue\r\n            <\/button>\r\n        <\/form>\r\n        \r\n        <div id=\"lock-error\" class=\"lock-error\">\r\n            <!-- Error message will be injected here -->\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<a href=\"https:\/\/t.me\/XCmarketing\" target=\"_blank\" class=\"contact-float\" title=\"Contact us on Telegram\">\r\n    <i class=\"fa-brands fa-telegram\"><\/i>\r\n<\/a>\r\n<button id=\"faq-button\" class=\"faq-float\" aria-label=\"Open FAQ\">?<\/button>\r\n<div id=\"faq-modal\" class=\"modal-container\">\r\n    <div class=\"modal-content\">\r\n        <span id=\"faq-close\" class=\"modal-close\" aria-label=\"Close\">&times;<\/span>\r\n        <h2>Frequently Asked Questions (FAQ) \ud83e\udd14<\/h2>\r\n        <details>\r\n            <summary>What are the most common mistakes?<\/summary>\r\n            <div>\r\n                <p>To ensure success, avoid these errors:<\/p>\r\n                <ul>\r\n                    <li><strong>Copying an example word-for-word:<\/strong> Always personalize the examples.<\/li>\r\n                    <li><strong>Copying the post link instead of the comment link:<\/strong> Make sure to use the \"Share\" -> \"Copy Link\" option on YOUR comment.<\/li>\r\n                    <li><strong>Not waiting long enough:<\/strong> Sometimes, a comment takes 1-2 minutes to become public.<\/li>\r\n                <\/ul>\r\n            <\/div>\r\n        <\/details>\r\n        <details>\r\n            <summary>Why does my account need to be 45+ days old?<\/summary>\r\n            <div>\r\n                <p>Reddit has strict anti-spam filters. Accounts under <strong>45 days old<\/strong> with less than <strong>50 karma<\/strong> are very likely to have their comments automatically hidden (shadowbanned) by Reddit, even if the comment appears normal to you. This tool blocks ineligible accounts to protect you from wasting time on a task that will be rejected.<\/p>\r\n            <\/div>\r\n        <\/details>\r\n        <details>\r\n            <summary>The tool can't find my comment during verification.<\/summary>\r\n            <div>\r\n                <p>Possible reasons:<\/p>\r\n                <ul>\r\n                    <li><strong>Wait a minute:<\/strong> It can take 30-60 seconds for a comment to be public on Reddit. Click the \"Reload\" button to try again.<\/li>\r\n                    <li><strong>Check the URL:<\/strong> Ensure you copied the direct link to the comment (\"Share\" -> \"Copy Link\") and not the URL of the post itself.<\/li>\r\n                    <li><strong>Your account was shadowbanned:<\/strong> If your account just turned 45 days old, Reddit might still filter your comments. Try posting on your own profile first to test visibility.<\/li>\r\n                <\/ul>\r\n            <\/div>\r\n        <\/details>\r\n        <details>\r\n            <summary>Why does the tool wait 5 minutes before letting me continue?<\/summary>\r\n            <div>\r\n                <p>After finding your comment, the tool automatically waits <strong>5 minutes<\/strong> and then re-checks if your comment is still publicly visible.<\/p>\r\n                <p><strong>Why?<\/strong> Reddit often removes comments 2-5 minutes after posting due to spam filters or AutoModerator rules. This verification ensures your comment truly survives, so you don't waste time on a task that will be rejected.<\/p>\r\n                <p><strong>What happens if it gets removed?<\/strong> The tool will tell you and suggest choosing a different post from the list. Some subreddits have stricter filters than others.<\/p>\r\n            <\/div>\r\n        <\/details>\r\n        <details>\r\n            <summary>Can I do this task multiple times?<\/summary>\r\n            <div>\r\n                <p>Please refer to the task instructions on the Microworkers platform. The rules for participation (once only, once per day, etc.) are specified there.<\/p>\r\n            <\/div>\r\n        <\/details>\r\n    <\/div>\r\n<\/div>\r\n\r\n<div class=\"tool-title-container\">\r\n    <h1 class=\"tool-title-main\">Reddit Success Wizard \ud83e\ude84<\/h1>\r\n    <p class=\"tool-title-subtitle\">Your assistant for a flawless submission<\/p>\r\n<\/div>\r\n\r\n<div id=\"modern-progress-bar\" style=\"max-width: 900px; margin: 20px auto; padding: 15px 20px; background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1);\">\r\n    <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;\">\r\n        <div style=\"font-size: 0.85rem; color: #666;\">\r\n            <i class=\"fa-solid fa-route\"><\/i> Your Progress\r\n        <\/div>\r\n        <div id=\"progress-step-text\" style=\"font-size: 0.85rem; font-weight: 600; color: #667eea;\">\r\n            Step 1 of 3\r\n        <\/div>\r\n    <\/div>\r\n    <div style=\"width: 100%; height: 8px; background: #e9eef3; border-radius: 10px; overflow: hidden;\">\r\n        <div id=\"progress-bar-fill\" style=\"width: 33%; height: 100%; background: linear-gradient(90deg, #667eea, #764ba2); transition: width 0.5s ease-in-out; border-radius: 10px;\"><\/div>\r\n    <\/div>\r\n    <div style=\"display: flex; justify-content: space-between; margin-top: 8px; font-size: 0.75rem; color: #999;\">\r\n        <span id=\"progress-label-current\" style=\"color: #667eea; font-weight: 600;\">Write Comment<\/span>\r\n        <span id=\"progress-label-next\" style=\"opacity: 0.7;\">Next: Verify Comment<\/span>\r\n    <\/div>\r\n<\/div>\r\n\r\n<div id=\"idle-warning\">Inactivity detected... session will reset in 1 minute.<\/div>\r\n<div class=\"container\" id=\"wizard\" data-current-step=\"0\">\r\n    \r\n    <div id=\"account-status-bar\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"account_status_bar\" class=\"hidden\"><\/div>\r\n    \r\n    <div id=\"progress-wrapper\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"progress_bar\">\r\n        <div class=\"progress-segment\"><\/div>\r\n        <div class=\"progress-segment\"><\/div>\r\n        <div class=\"progress-segment\"><\/div>\r\n        <div class=\"progress-segment\"><\/div>\r\n        <div class=\"progress-segment\"><\/div>\r\n    <\/div>\r\n    <nav class=\"steps\" aria-label=\"steps\">\r\n        <button id=\"nav0\" data-xcw-event=\"goto_0\" class=\"active\" onclick=\"goto(0)\"><i class=\"fa-solid fa-spinner fa-fw fa-spin\"><\/i> Loading<\/button>\r\n        <button id=\"nav1\" data-xcw-event=\"goto_1\" onclick=\"goto(1)\"><i class=\"fa-solid fa-user-shield fa-fw\"><\/i> 1. Accounts<\/button>\r\n        <button id=\"nav2\" data-xcw-event=\"goto_2\" onclick=\"goto(2)\"><i class=\"fa-solid fa-pen-to-square fa-fw\"><\/i> 2. Task & Verification<\/button>\r\n        <button id=\"nav4\" data-xcw-event=\"goto_4\" onclick=\"goto(4)\"><i class=\"fa-solid fa-flag-checkered fa-fw\"><\/i> 3. Result<\/button>\r\n    <\/nav>\r\n\r\n    <div class=\"step active\" id=\"step0\" data-status=\"initializing\" style=\"display: none;\">\r\n        <h2><i class=\"fa-solid fa-cogs\"><\/i> Initializing & Setup<\/h2>\r\n        <div class=\"action-panel\">\r\n            <div class=\"progress-bar-container\" style=\"width: 100%; background: #e9eef3; border-radius: 4px; overflow: hidden; margin-bottom: 20px;\">\r\n                <div id=\"loading-progress\" style=\"height: 12px; width: 0%; background: linear-gradient(90deg, var(--info), var(--accent)); transition: width 0.5s ease-in-out;\"><\/div>\r\n            <\/div>\r\n            <ul id=\"loading-tasks\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"loading_tasks\" style=\"list-style-type: none; padding: 0;\"><\/ul>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"step\" id=\"step1\" data-account-status=\"verified-ok\">\r\n        <h2><i class=\"fa-solid fa-user-shield\"><\/i> Step 1 \u2013 Account Validation<\/h2>\r\n        <div class=\"instruction-box\" style=\"background: linear-gradient(135deg, #d4edda 0%, #c3e6cb 100%); border-left: 4px solid #28a745;\">\r\n            <h4><i class=\"fa-solid fa-circle-check\" style=\"color: #28a745;\"><\/i> Account Verified Successfully<\/h4>\r\n            <p style=\"margin: 5px 0 0 0;\">\r\n                Your Reddit account meets all requirements. Review your information below and continue to the task.\r\n            <\/p>\r\n        <\/div>\r\n        <div class=\"action-panel\">\r\n            <div id=\"account-info-display\" style=\"margin-bottom: 20px;\"><\/div>\r\n            <div class=\"field\">\r\n                <label for=\"microworkers-username\"><i class=\"fa-solid fa-briefcase\"><\/i> Microworkers Username<\/label>\r\n                <input type=\"text\" id=\"microworkers-username\" data-xcw-field=\"mw_username\" placeholder=\"Your Microworkers username\" readonly style=\"background: #f5f5f5;\">\r\n            <\/div>\r\n            <button id=\"next-step1-btn\" class=\"btn\" data-xcw-event=\"continue_to_task\" onclick=\"next(1)\" style=\"background: linear-gradient(135deg, #28a745 0%, #20c997 100%);\">\r\n                Next <i class=\"fa-solid fa-arrow-right\"><\/i>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"step\" id=\"step2\" data-comment-status=\"editing\">\r\n        <div id=\"task-phase\">\r\n            <h2><i class=\"fa-solid fa-pen-to-square\"><\/i> Step 2 \u2013 Write Comment & Post It<\/h2>\r\n            \r\n            <!-- Mini progress tracker -->\r\n            <div style=\"display: flex; gap: 20px; margin-bottom: 25px; padding: 15px; background: #f8f9fa; border-radius: 8px; border-left: 4px solid #667eea;\">\r\n                <div id=\"mini-progress-1\" style=\"display: flex; align-items: center; gap: 8px;\">\r\n                    <div style=\"width: 28px; height: 28px; border-radius: 50%; background: #e9eef3; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.9rem; color: #999;\">\r\n                        1\r\n                    <\/div>\r\n                    <span style=\"font-size: 0.85rem; color: #999;\">Write comment<\/span>\r\n                <\/div>\r\n                <div style=\"color: #ddd; font-size: 1.2rem;\">\u2192<\/div>\r\n                <div id=\"mini-progress-2\" style=\"display: flex; align-items: center; gap: 8px;\">\r\n                    <div style=\"width: 28px; height: 28px; border-radius: 50%; background: #e9eef3; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.9rem; color: #999;\">\r\n                        2\r\n                    <\/div>\r\n                    <span style=\"font-size: 0.85rem; color: #999;\">Choose & post<\/span>\r\n                <\/div>\r\n                <div style=\"color: #ddd; font-size: 1.2rem;\">\u2192<\/div>\r\n                <div id=\"mini-progress-3\" style=\"display: flex; align-items: center; gap: 8px;\">\r\n                    <div style=\"width: 28px; height: 28px; border-radius: 50%; background: #e9eef3; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.9rem; color: #999;\">\r\n                        3\r\n                    <\/div>\r\n                    <span style=\"font-size: 0.85rem; color: #999;\">Confirm<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div id=\"step2-part1\">\r\n                <h3><i class=\"fa-solid fa-pencil\"><\/i> 2.1: Write Your Comment<\/h3>\r\n                \r\n                <div class=\"action-panel\">\r\n                    <div class=\"field\">\r\n                        <label for=\"comment\">Your Comment *<\/label>\r\n                        <textarea id=\"comment\" data-xcw-field=\"comment_text\" oninput=\"checkCommentRealtime();runQualityLive()\" placeholder=\"Be personal and authentic! Talk about a real experience...\"><\/textarea>\r\n                        <ul id=\"comment-checklist\">\r\n                            <li id=\"check-length\" class=\"not-ok\">At least 80 characters<\/li>\r\n                            <li id=\"check-keyword\" class=\"not-ok\">Contains the word \"XtreamCube\"<\/li>\r\n                        <\/ul>\r\n                        <div id=\"msg3\" class=\"msg\"><\/div>\r\n                        <div id=\"quality-box\"><\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"helper-section\">\r\n                        <div id=\"tips\" class=\"instruction-box tip hidden\">\r\n                            <h4><i class=\"fa-solid fa-lightbulb\"><\/i> Pro-Tips for a Great Comment<\/h4>\r\n                            <ul style=\"margin:8px 0 0 18px;padding:0;font-size:.8rem;line-height:1.5;\">\r\n                                <li><b>Be personal:<\/b> Mention a real experience. Talk about the \"last football game without any buffering\" or \"that series you could finally watch in HD.\"<\/li>\r\n                                <li><b>Highlight a strong point:<\/b> Besides the free trial, mention the huge VOD library, the easy setup, or the responsive customer service.<\/li>\r\n                                <li><b>Ask a question:<\/b> Ending with \"Has anyone else tried it?\" can encourage interaction and make the comment feel more natural.<\/li>\r\n                                <li><b>Avoid marketing language:<\/b> Phrases like \"This is an incredible offer!\" can seem suspicious. Prefer an authentic, conversational tone.<\/li>\r\n                            <\/ul>\r\n                        <\/div>\r\n                        \r\n                        <div id=\"examples\" class=\"instruction-box scrollable-box hidden\">\r\n                            <h4>Click an example to copy and customize it:<\/h4>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Hey everyone, just found XtreamCube and it's a game-changer! They offer a 24h free trial with no strings attached. Go for it!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I've been using XtreamCube for a while, and honestly, it's the best IPTV service I've tried. You can test it for free for 24h, no credit card required!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">If you're tired of buffering and low-quality streams, check out XtreamCube. They're offering a 24h free trial right now. Nothing to lose, everything to gain!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Just started my free trial with XtreamCube and I'm blown away by the huge VOD library and channel list. Everything works perfectly. I highly recommend giving it a try!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I was skeptical about another IPTV service, but XtreamCube has proven to be very stable. No freezing during the big game last night, which is a huge win. The 24h free trial convinced me.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">A big thank you to XtreamCube for making the setup process so simple. I was up and running in minutes on multiple devices. Their support was also super helpful. Check them out!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I wasted so much time with laggy setups until I found XtreamCube on Google. Honestly, it's a total game-changer.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">If you're looking for reliability, just search for XtreamCube. It's way better than the mainstream services I've tried.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I've tested almost every provider this year, but nothing beats the stability of XtreamCube. Just look them up!<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Forget the rest, XtreamCube is where it's at. One quick Google search and you'll see why everyone is switching.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Stop settling for average quality. I switched to XtreamCube recently (found them via Google) and the difference is night and day.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">To be honest, XtreamCube is the only one that actually works without buffering every 5 minutes. Google it, you'll see.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">After trying 3 different services, I finally found XtreamCube. Definitely worth a quick search if you're struggling.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Does anyone else use XtreamCube? I found them on Google last month and I'm never going back to my old provider.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I was about to give up on these services until I came across XtreamCube. Search them up, the quality is insane.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">If you want something that actually stays up during big events, XtreamCube is the way to go. Just Google the name.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">The setup for XtreamCube was so much easier than the others I've used. Found everything I needed on their site via Google.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Finally a service that lives up to the hype. Just search XtreamCube on Google, you won't regret it.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">I've been using XtreamCube for a while now and it's easily the most stable one out there. Worth checking out.<\/div>\r\n                            <div class=\"example\" onclick=\"copyExample(this)\">Just a heads up for anyone looking for a solid provider: XtreamCube is currently the best. Do a quick Google search!<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <button id=\"validate-comment-btn\" data-xcw-event=\"validate_comment\" class=\"btn\" onclick=\"validateCommentAndUnlockPosts()\"><i class=\"fa-solid fa-check\"><\/i> Validate Comment<\/button>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div id=\"step2-part2\" class=\"hidden\">\r\n                <!-- Next Step Instructions - Compact -->\r\n                <div style=\"max-width: 700px; margin: 0 auto; padding: 20px;\">\r\n                    <div style=\"background: white; border: 3px solid #667eea; border-radius: 16px; padding: 30px; box-shadow: 0 4px 20px rgba(102, 126, 234, 0.15);\">\r\n                        <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 2px solid #e9eef3;\">\r\n                            <div style=\"width: 45px; height: 45px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 1.4rem; color: white; flex-shrink: 0;\">\r\n                                2\r\n                            <\/div>\r\n                            <div style=\"text-align: left;\">\r\n                                <h3 style=\"font-size: 1.3rem; margin: 0; color: #333; font-weight: 700;\">Next: Select a Post<\/h3>\r\n                                <p style=\"font-size: 0.85rem; color: #666; margin: 3px 0 0 0;\">You must choose a Reddit post to continue<\/p>\r\n                            <\/div>\r\n                        <\/div>\r\n                        \r\n                        <div style=\"background: #f8f9fa; border-radius: 10px; padding: 20px; margin-bottom: 20px;\">\r\n                            <ol style=\"margin: 0; padding-left: 20px; line-height: 2; font-size: 0.95rem; color: #333;\">\r\n                                <li><strong>Look at the panel on the right<\/strong> \u279c<\/li>\r\n                                <li><strong>Click \"Open Post\"<\/strong> to preview any post<\/li>\r\n                                <li><strong>Click \"Select Post\"<\/strong> to confirm your choice<\/li>\r\n                            <\/ol>\r\n                        <\/div>\r\n                        \r\n                        <!-- Arrow Indicator -->\r\n                        <div style=\"display: flex; align-items: center; justify-content: center; gap: 12px; padding: 15px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 10px;\">\r\n                            <div style=\"font-size: 2.5rem; animation: pointRight 1.5s infinite;\">\r\n                                \ud83d\udc49\r\n                            <\/div>\r\n                            <p style=\"margin: 0; font-size: 1rem; color: white; font-weight: 600;\">\r\n                                Posts panel is on your right!\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div id=\"msg4\" class=\"msg\" style=\"margin-top: 15px;\"><\/div>\r\n            <\/div>\r\n\r\n            <div class=\"actions-bottom\">\r\n                <button class=\"btn subtle\" onclick=\"prev()\"><i class=\"fa-solid fa-arrow-left\"><\/i> Back to Step 1<\/button>\r\n                <button id=\"confirm-publication-btn\" data-xcw-event=\"confirm_publication\" class=\"btn hidden\" onclick=\"initiateVerificationPhase()\" disabled><i class=\"fa-solid fa-upload\"><\/i> I have posted<\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div id=\"verification-sub-step\" class=\"hidden\" data-verification-status=\"pending\">\r\n            <h2><i class=\"fa-solid fa-link\"><\/i> Step 3 \u2013 Verify Your Reddit Comment<\/h2>\r\n\r\n            <!-- Toggle between Auto and Manual -->\r\n            <div style=\"display: flex; gap: 10px; margin-bottom: 20px; background: #f8f9fa; padding: 15px; border-radius: 12px; border: 2px solid #e9eef3;\">\r\n                <button id=\"btn-auto-verify\" class=\"btn\" style=\"flex: 1; background: linear-gradient(135deg, #667eea, #764ba2); color: white;\" onclick=\"switchToAutoVerify()\">\r\n                    <i class=\"fa-solid fa-wand-magic-sparkles\"><\/i> Automatic Search\r\n                <\/button>\r\n                <button id=\"btn-manual-verify\" class=\"btn outline\" style=\"flex: 1; background: white; color: #667eea; border: 2px solid #667eea;\" onclick=\"switchToManualVerify()\">\r\n                    <i class=\"fa-solid fa-keyboard\"><\/i> Manual URL Entry\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div id=\"auto-verify-zone\">\r\n                <div class=\"instruction-box with-action\" style=\"display: flex; justify-content: space-between; align-items: center; gap: 12px;\">\r\n                    <p id=\"auto-verify-status\" style=\"margin: 0; flex: 1;\"><\/p>\r\n                    <button class=\"btn hidden\" id=\"reload-btn\" data-xcw-event=\"reload_comments\" onclick=\"reloadComment()\" style=\"background: linear-gradient(135deg, #667eea, #764ba2); color: white; padding: 10px 18px; font-size: 0.9rem; flex-shrink: 0;\">\r\n                        <i class=\"fa-solid fa-rotate-right\"><\/i> Reload Comments\r\n                    <\/button>\r\n                <\/div>\r\n                <div class=\"action-panel\">\r\n                    <div id=\"comment-history-list\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"comment_history_list\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div id=\"manual-verify-zone\" class=\"hidden\">\r\n                <div class=\"instruction-box\">\r\n                    <h4 style=\"margin: 0 0 10px 0; color: #667eea;\"><i class=\"fa-solid fa-link\"><\/i> Manual Verification<\/h4>\r\n                    <p style=\"margin: 0;\">Paste the <b>direct URL<\/b> of your comment (<code>\u2026\/comment\/&lt;id&gt;\/<\/code>)<\/p>\r\n                <\/div>\r\n                <div class=\"action-panel\">\r\n                    <div id=\"find-comment-helper\"><\/div>\r\n                    <div class=\"field\" style=\"max-width:100%; margin-top: 15px;\">\r\n                        <input type=\"text\" id=\"comment-url\" data-xcw-field=\"comment_url\" placeholder=\"https:\/\/www.reddit.com\/r\/...\/comments\/...\/comment\/xxxxx\/\" style=\"font-size: 0.9rem;\">\r\n                    <\/div>\r\n                    <button class=\"btn\" data-xcw-event=\"verify_url\" onclick=\"verifyComment(document.getElementById('comment-url').value)\" style=\"margin-top: 12px; background: linear-gradient(135deg, #28a745, #20c997); width: 100%;\">\r\n                        <i class=\"fa-solid fa-check-double\"><\/i> Verify This URL\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n            <div id=\"verif\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"verification_box\" class=\"msg\" style=\"margin-top:8px;\"><\/div>\r\n            <div class=\"actions-bottom\">\r\n                <button class=\"btn subtle\" onclick=\"returnToTaskPhase()\"><i class=\"fa-solid fa-arrow-left\"><\/i> Back to Posting<\/button>\r\n                <button class=\"btn\" style=\"background: white; color: #667eea; border: 2px solid #667eea;\" onclick=\"goBackToEditComment()\"><i class=\"fa-solid fa-pen\"><\/i> Edit Comment<\/button>\r\n                <div id=\"confirm-zone\" class=\"hidden\">\r\n                    <button class=\"btn\" data-xcw-event=\"confirm_verification\" style=\"background-color: var(--info);\" onclick=\"confirm()\">Next \u2192 Result <i class=\"fa-solid fa-arrow-right\"><\/i><\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"step\" id=\"step4\">\r\n        <h2><i class=\"fa-solid fa-flag-checkered\"><\/i> Step 4 \u2013 Final Validation & Comparison<\/h2>\r\n        <div id=\"result-box\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"result_box\"><\/div>\r\n        <div class=\"actions-bottom\">\r\n            <button class=\"btn subtle\" id=\"back-fix\" onclick=\"returnToVerificationPhase()\"><i class=\"fa-solid fa-wrench\"><\/i> Go Back to Fix<\/button>\r\n            <button class=\"btn\" id=\"finish-btn\" data-xcw-event=\"finish_job\" onclick=\"finishJob()\"><i class=\"fa-solid fa-paper-plane\"><\/i> Finish & Submit<\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<div id=\"final-page\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"final_page\" class=\"hidden\"><\/div>\r\n\r\n<!-- Panel Examples Flottant -->\r\n<div id=\"floating-examples-panel\">\r\n    <h3 style=\"color: var(--helper-purple); margin-top: 0;\">\r\n        <i class=\"fa-solid fa-lightbulb\"><\/i> Quick Examples\r\n    <\/h3>\r\n    <p style=\"font-size: 0.8rem; color: #666; margin-bottom: 15px; line-height: 1.4;\">\r\n        <i class=\"fa-solid fa-circle-info\"><\/i> Click any example to copy it to your comment field\r\n    <\/p>\r\n    <div id=\"floating-examples-list\"><\/div>\r\n<\/div>\r\n\r\n<!-- Bouton pour afficher le panel mission\/recap (quand ferm\u00e9) -->\r\n<button id=\"show-mission-btn\" class=\"btn\" onclick=\"toggleMissionPanel()\" style=\"background: linear-gradient(135deg, #667eea, #764ba2); padding: 12px 16px; font-size: 0.95rem; box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); border-radius: 12px;\">\r\n    <i class=\"fa-solid fa-bullseye\"><\/i> <span id=\"show-btn-text\">Mission<\/span>\r\n<\/button>\r\n\r\n<!-- Panel Mission Flottant (LEFT) -->\r\n<div id=\"floating-mission-panel\">\r\n    <button class=\"close-panel\" onclick=\"toggleMissionPanel()\" aria-label=\"Close\">\r\n        <i class=\"fa-solid fa-xmark\"><\/i>\r\n    <\/button>\r\n    <h3>\r\n        <i class=\"fa-solid fa-bullseye\"><\/i> Mission Instructions\r\n    <\/h3>\r\n    \r\n    <div style=\"background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); border-radius: 12px; padding: 20px; margin-bottom: 20px; border: 2px solid #667eea;\">\r\n        <div style=\"text-align: center; margin-bottom: 20px;\">\r\n            <div style=\"font-size: 3rem; color: #667eea;\">\r\n                <i class=\"fa-solid fa-bullseye\"><\/i>\r\n            <\/div>\r\n            <h2 style=\"margin: 10px 0; font-size: 1.3rem; color: #667eea;\">Your Mission<\/h2>\r\n            <p style=\"color: #666; font-size: 0.9rem; margin: 0;\">Write and post a comment about XtreamCube IPTV<\/p>\r\n        <\/div>\r\n        \r\n        <div id=\"mission-steps-list\" style=\"background: white; border-radius: 10px; padding: 18px; margin-bottom: 15px; border: 1px solid #e0e0e0;\">\r\n            <div id=\"mission-step-1\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 12px;\">\r\n                <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">1<\/div>\r\n                <div style=\"flex: 1;\">\r\n                    <strong style=\"color: #333; font-size: 0.9rem;\">Write your comment<\/strong>\r\n                    <p style=\"margin: 4px 0 8px 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Write about <strong>XtreamCube IPTV<\/strong> (80+ chars). You can mention:<\/p>\r\n                    <ul style=\"margin: 0; padding-left: 20px; font-size: 0.75rem; line-height: 1.5; color: #666;\">\r\n                        <li>The 24h free trial<\/li>\r\n                        <li>Stable streaming without buffering<\/li>\r\n                        <li>Large VOD library or channel list<\/li>\r\n                        <li>Easy setup or good support<\/li>\r\n                    <\/ul>\r\n                    <p style=\"margin: 6px 0 0 0; font-size: 0.75rem; color: #667eea; font-style: italic;\">\r\n                        \ud83d\udca1 Use the examples and personalize them!\r\n                    <\/p>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div id=\"mission-step-2\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 12px;\">\r\n                <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">2<\/div>\r\n                <div style=\"flex: 1;\">\r\n                    <strong style=\"color: #333; font-size: 0.9rem;\">Choose a Reddit post<\/strong>\r\n                    <p style=\"margin: 4px 0 6px 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Browse the posts on the right panel:<\/p>\r\n                    <ul style=\"margin: 0; padding-left: 20px; font-size: 0.75rem; line-height: 1.5; color: #666;\">\r\n                        <li>Click <strong>\"Open Post\"<\/strong> to preview any post<\/li>\r\n                        <li>Click <strong>\"Click to Select\"<\/strong> to choose where you'll comment<\/li>\r\n                    <\/ul>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div id=\"mission-step-3\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px;\">\r\n                <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">3<\/div>\r\n                <div style=\"flex: 1;\">\r\n                    <strong style=\"color: #333; font-size: 0.9rem;\">Post on Reddit<\/strong>\r\n                    <p style=\"margin: 4px 0 0 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Submit your comment as a reply to the chosen thread<\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div style=\"background: #fff3cd; border: 2px solid #ffc107; border-radius: 10px; padding: 12px;\">\r\n            <p style=\"margin: 0; font-size: 0.8rem; color: #856404; line-height: 1.4;\">\r\n                <i class=\"fa-solid fa-lightbulb\"><\/i> <strong>Tip:<\/strong> Use the example comments provided, but personalize them - don't copy exactly!\r\n            <\/p>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Panel Posts Flottant -->\r\n<div id=\"floating-posts-panel\">\r\n    <h3>\r\n        <i class=\"fa-solid fa-newspaper\"><\/i> Available Posts\r\n        <span style=\"font-size: 0.85rem; color: #999; font-weight: 400;\">(<span id=\"posts-count-header\">0<\/span>)<\/span>\r\n    <\/h3>\r\n    \r\n    <!-- Scroll indicator dynamique -->\r\n    <div id=\"posts-scroll-indicator\" class=\"hidden\" style=\"background: linear-gradient(135deg, #667eea, #764ba2); color: white; padding: 12px; border-radius: 10px; margin-bottom: 15px; text-align: center; font-size: 0.85rem; font-weight: 600;\">\r\n        <i class=\"fa-solid fa-arrow-down\" style=\"animation: bounce 2s infinite;\"><\/i>\r\n        <span id=\"scroll-indicator-text\">Scroll down to see all posts<\/span>\r\n        <i class=\"fa-solid fa-arrow-down\" style=\"animation: bounce 2s infinite;\"><\/i>\r\n    <\/div>\r\n    \r\n    <p style=\"font-size: 0.8rem; color: #666; margin-bottom: 15px; line-height: 1.4;\">\r\n        <i class=\"fa-solid fa-circle-info\"><\/i> <strong>Instructions:<\/strong><br>\r\n        1. Click \"Open Post\" to view it<br>\r\n        2. Post your comment on Reddit<br>\r\n        3. Click \"Select Post\" when done\r\n    <\/p>\r\n    <div class=\"post-list-wrapper\">\r\n        <div id=\"card-list\" data-xcw-observe=\"mutations\" data-xcw-snapshot=\"post_list\">Loading\u2026<\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Modal: Mission Explanation -->\r\n<div id=\"mission-explanation-modal\" class=\"modal-container\" style=\"display: none;\">\r\n    <div class=\"modal-content\" style=\"max-width: 500px;\">\r\n        <div style=\"background: white; border-radius: 20px; padding: 40px 35px; box-shadow: 0 20px 60px rgba(0,0,0,0.3); text-align: center;\">\r\n            <div style=\"font-size: 3.5rem; color: #667eea; margin-bottom: 20px;\">\r\n                <i class=\"fa-solid fa-bullseye\"><\/i>\r\n            <\/div>\r\n            \r\n            <h1 style=\"margin: 0 0 10px 0; font-size: 1.8rem; font-weight: 800; background: linear-gradient(90deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent;\">\r\n                Your Mission\r\n            <\/h1>\r\n            \r\n            <p style=\"color: #666; margin-bottom: 25px; font-size: 0.9rem;\">\r\n                Write and post a comment about XtreamCube IPTV\r\n            <\/p>\r\n            \r\n            <div style=\"background: #f8f9fa; border-radius: 12px; padding: 20px; margin-bottom: 20px; text-align: left;\">\r\n                <div style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 15px;\">\r\n                    <div style=\"width: 32px; height: 32px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0;\">1<\/div>\r\n                    <div>\r\n                        <strong style=\"color: #333; font-size: 0.95rem;\">Write your comment<\/strong>\r\n                        <p style=\"margin: 4px 0 0 0; font-size: 0.85rem; color: #666; line-height: 1.4;\">Write about XtreamCube IPTV (80+ chars). Use examples and personalize them!<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 15px;\">\r\n                    <div style=\"width: 32px; height: 32px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0;\">2<\/div>\r\n                    <div>\r\n                        <strong style=\"color: #333; font-size: 0.95rem;\">Choose a Reddit post<\/strong>\r\n                        <p style=\"margin: 4px 0 0 0; font-size: 0.85rem; color: #666; line-height: 1.4;\">Select from the available list on the right panel<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div style=\"display: flex; align-items: start; gap: 12px;\">\r\n                    <div style=\"width: 32px; height: 32px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0;\">3<\/div>\r\n                    <div>\r\n                        <strong style=\"color: #333; font-size: 0.95rem;\">Post on Reddit<\/strong>\r\n                        <p style=\"margin: 4px 0 0 0; font-size: 0.85rem; color: #666; line-height: 1.4;\">Submit your comment as a reply to the chosen thread<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div style=\"background: #fff3cd; border: 2px solid #ffc107; border-radius: 12px; padding: 15px; margin-bottom: 25px;\">\r\n                <p style=\"margin: 0; font-size: 0.85rem; color: #856404; line-height: 1.5;\">\r\n                    <i class=\"fa-solid fa-lightbulb\"><\/i> <strong>Tip:<\/strong> Use the example comments provided, but personalize them - don't copy exactly!\r\n                <\/p>\r\n            <\/div>\r\n            \r\n            <button class=\"lock-btn\" onclick=\"closeMissionModal()\">\r\n                <i class=\"fa-solid fa-rocket\"><\/i> I Understand - Let's Start!\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<!-- Modal: Posting Instructions -->\r\n<div id=\"posting-modal\" class=\"modal-container\">\r\n    <div class=\"modal-content\">\r\n        <span class=\"modal-close\" onclick=\"closePostingModal()\">&times;<\/span>\r\n        \r\n        <div class=\"modal-header\">\r\n            <h2><i class=\"fa-solid fa-rocket\"><\/i> Ready to Post!<\/h2>\r\n            <p>Follow these simple steps to complete your task<\/p>\r\n        <\/div>\r\n        \r\n        <div class=\"modal-body\">\r\n            <!-- Section Comment avec instruction int\u00e9gr\u00e9e -->\r\n            <div class=\"modal-section\">\r\n                <div style=\"display: flex; align-items: center; gap: 10px; margin-bottom: 12px;\">\r\n                    <div style=\"width: 35px; height: 35px; background: #667eea; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0;\">1<\/div>\r\n                    <div>\r\n                        <h3 style=\"margin: 0; font-size: 1rem; color: #333; border: none; padding: 0;\"><i class=\"fa-solid fa-comment\"><\/i> Copy Your Comment<\/h3>\r\n                        <p style=\"margin: 0; font-size: 0.8rem; color: #666;\">Select and copy the text below<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"modal-comment-box\">\r\n                    <p class=\"modal-comment-text\" id=\"modal-comment-text\"><\/p>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <!-- Section Post avec instruction int\u00e9gr\u00e9e -->\r\n            <div class=\"modal-section\">\r\n                <div style=\"display: flex; align-items: center; gap: 10px; margin-bottom: 12px;\">\r\n                    <div style=\"width: 35px; height: 35px; background: #667eea; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0;\">2<\/div>\r\n                    <div>\r\n                        <h3 style=\"margin: 0; font-size: 1rem; color: #333; border: none; padding: 0;\"><i class=\"fa-solid fa-external-link-alt\"><\/i> Open Reddit Post<\/h3>\r\n                        <p style=\"margin: 0; font-size: 0.8rem; color: #666;\">Click below to open in a new tab<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n                <div class=\"modal-post-box\">\r\n                    <div class=\"modal-post-title\" id=\"modal-post-title\"><\/div>\r\n                    <div class=\"modal-post-url\" id=\"modal-post-url\"><\/div>\r\n                <\/div>\r\n                <a id=\"modal-post-link\" href=\"#\" target=\"_blank\" class=\"btn\" style=\"margin-top: 10px; background: linear-gradient(135deg, #667eea, #764ba2); width: 100%;\">\r\n                    <i class=\"fa-solid fa-external-link-alt\"><\/i> Open Post on Reddit\r\n                <\/a>\r\n            <\/div>\r\n            \r\n            <!-- Step 3 instruction -->\r\n            <div style=\"background: linear-gradient(135deg, #fff3cd, #ffe8a1); border: 2px solid #ffc107; border-radius: 12px; padding: 18px; display: flex; align-items: center; gap: 12px; margin-top: 25px;\">\r\n                <div style=\"width: 35px; height: 35px; background: #ffc107; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0;\">3<\/div>\r\n                <div>\r\n                    <strong style=\"color: #856404; font-size: 0.95rem;\">Post your comment on Reddit<\/strong>\r\n                    <p style=\"margin: 3px 0 0 0; font-size: 0.8rem; color: #856404;\">Paste and submit, then return here to confirm<\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        \r\n        <div class=\"modal-footer\">\r\n            <button class=\"btn subtle\" onclick=\"closePostingModal()\">\r\n                <i class=\"fa-solid fa-arrow-left\"><\/i> Change Post Selection\r\n            <\/button>\r\n            <button class=\"btn\" style=\"background: var(--ok);\" onclick=\"confirmPostingAndContinue()\">\r\n                <i class=\"fa-solid fa-check\"><\/i> I have posted - Continue\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n<\/div>\r\n\r\n<footer>\r\n    <p>Reddit Success Wizard v14.0 LOCKSCREEN | Account Gate + 5-Min Re-Verification + All v13 Features<\/p>\r\n<\/footer>\r\n\r\n<script>\r\n    \/\/ SCRIPT PRINCIPAL DE L'APPLICATION\r\n    let current = 0;\r\n    let redditData = {}, mwUser = '', commentText = '', selectedPost = '';\r\n    let allowedPosts = [];\r\n    let verifiedData = null, threadInfo = null, lastURL = '';\r\n    let exampleTexts = [];\r\n    let lastResultContext = null;\r\n    const openedPosts = new Set();\r\n    let taskLog = {};\r\n    \r\n    \/\/ ====== NOUVEAU: Variables pour la re-v\u00e9rification de 5 minutes ======\r\n    let reverifyInterval = null;\r\n    let initialProof = null;\r\n\r\n    if (typeof AbortSignal !== 'undefined' && !AbortSignal.prototype.timeout) {\r\n        AbortSignal.timeout = ms => {\r\n            const c = new AbortController();\r\n            setTimeout(() => c.abort(), ms);\r\n            return c.signal;\r\n        };\r\n    }\r\n\r\n    \/\/ onUsernameInput and checkAccount removed - verification now handled by lock screen\r\n    \r\n    function continueTool() {\r\n        const lockScreen = document.getElementById('lock-screen');\r\n        const accountInfoDisplay = document.getElementById('account-info-display');\r\n        \r\n        \/\/ Fill Step 1 account display for reference\r\n        if (accountInfoDisplay && redditData) {\r\n            accountInfoDisplay.innerHTML = `\r\n                <div style=\"display: flex; align-items: center; gap: 15px; padding: 15px; background: #f8f9fa; border-radius: 8px; border: 1px solid #e0e0e0;\">\r\n                    <img decoding=\"async\" src=\"${redditData.avatar}\" alt=\"Avatar\" style=\"width: 60px; height: 60px; border-radius: 50%; border: 3px solid #28a745;\" \/>\r\n                    <div style=\"flex: 1;\">\r\n                        <h3 style=\"margin: 0 0 5px 0; color: #333;\">\r\n                            <i class=\"fa-brands fa-reddit\" style=\"color: #ff4500;\"><\/i> u\/${redditData.name}\r\n                        <\/h3>\r\n                        <div style=\"display: flex; gap: 20px; font-size: 0.9rem; color: #666;\">\r\n                            <span><i class=\"fa-solid fa-cake-candles\"><\/i> <strong>${redditData.age}<\/strong> days old<\/span>\r\n                            <span><i class=\"fa-solid fa-arrow-up-right-dots\"><\/i> <strong>${redditData.karma}<\/strong> karma<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div style=\"color: #28a745; font-size: 2rem;\">\r\n                        <i class=\"fa-solid fa-circle-check\"><\/i>\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n        \r\n        \/\/ Hide Loading and Accounts nav buttons\r\n        const nav0 = document.getElementById('nav0');\r\n        const nav1 = document.getElementById('nav1');\r\n        if (nav0) nav0.style.display = 'none';\r\n        if (nav1) nav1.style.display = 'none';\r\n        \r\n        \/\/ Animate lock screen out\r\n        lockScreen.classList.add('hidden');\r\n        setTimeout(() => {\r\n            lockScreen.style.display = 'none';\r\n            \r\n            \/\/ Show mission modal immediately after lock screen closes\r\n            const missionModal = document.getElementById('mission-explanation-modal');\r\n            if (missionModal) {\r\n                missionModal.style.display = 'block';\r\n                document.body.style.overflow = 'hidden';\r\n            }\r\n            \r\n            \/\/ Open mission panel on the left when entering Step 2\r\n            setTimeout(() => {\r\n                const missionPanel = document.getElementById('floating-mission-panel');\r\n                if (missionPanel && !missionPanel.classList.contains('open')) {\r\n                    missionPanel.classList.add('open');\r\n                    document.body.classList.add('mission-panel-open');\r\n                }\r\n            }, 1000);\r\n            \r\n            \/\/ Go directly to Step 2 (skip Step 1) but don't show modal in goto\r\n            current = 2;\r\n            const newStepEl = document.getElementById('step2');\r\n            const oldStepEl = document.querySelector('.step.active');\r\n            if(oldStepEl) oldStepEl.classList.remove('active');\r\n            if(newStepEl) newStepEl.classList.add('active');\r\n            renderNav();\r\n            updateTaskChecklist();\r\n            \r\n            \/\/ Initialize mini-progress to step 1\r\n            if (typeof updateMiniProgress === 'function') updateMiniProgress(1);\r\n        }, 500);\r\n    }\r\n\r\n    \/\/ ====== LOCK SCREEN UNLOCK FUNCTION ======\r\n    let lockScreenStep = 1; \/\/ 1 = Reddit verification, 2 = MW username\r\n    \r\n    async function unlockTool(event) {\r\n        event.preventDefault();\r\n        \r\n        const lockScreen = document.getElementById('lock-screen');\r\n        const lockError = document.getElementById('lock-error');\r\n        const lockBtn = document.getElementById('lock-verify-btn');\r\n        const lockRedditInput = document.getElementById('lock-reddit-username');\r\n        const lockMwInput = document.getElementById('lock-mw-username');\r\n        const lockMwField = document.getElementById('lock-mw-field');\r\n        \r\n        if (lockScreenStep === 1) {\r\n            \/\/ ===== STEP 1: Verify Reddit account =====\r\n            const username = lockRedditInput.value.trim();\r\n            \r\n            if (!username) {\r\n                lockError.innerHTML = '<i class=\"fa-solid fa-triangle-exclamation\"><\/i> Please enter your Reddit username.';\r\n                lockError.classList.add('show');\r\n                return;\r\n            }\r\n            \r\n            \/\/ Show loading state\r\n            lockBtn.disabled = true;\r\n            lockBtn.innerHTML = '<i class=\"fa-solid fa-spinner fa-spin\"><\/i> Verifying Reddit Account...';\r\n            lockError.classList.remove('show');\r\n            \r\n            try {\r\n                \/\/ Fetch Reddit account data\r\n                let user = username.match(\/\\\/u(?:ser)?\\\/([a-zA-Z0-9_-]+)\/)?.[1] || username.replace(\/^(u\\\/|user\\\/)\/, '');\r\n                const redditApiUrl = `https:\/\/www.reddit.com\/user\/${user}\/about.json`;\r\n                const j = await fetchWithProxies(redditApiUrl, AbortSignal.timeout(10000));\r\n                \r\n                const age = Math.floor((Date.now() \/ 1000 - j.data.created_utc) \/ 86400);\r\n                const karma = j.data.total_karma;\r\n                const isSuspended = j.data.is_suspended || false;\r\n                \r\n                \/\/ Check requirements\r\n                const MIN_AGE_REQUIRED = 45;\r\n                const MIN_KARMA_REQUIRED = 50;\r\n                const ageOk = age >= MIN_AGE_REQUIRED;\r\n                const karmaOk = karma >= MIN_KARMA_REQUIRED;\r\n                \r\n                if (isSuspended) {\r\n                    throw new Error('suspended');\r\n                }\r\n                \r\n                if (!ageOk || !karmaOk) {\r\n                    \/\/ Account does not meet requirements\r\n                    let problems = [];\r\n                    if (!ageOk) problems.push(`Account is only <strong>${age} days old<\/strong> (minimum: ${MIN_AGE_REQUIRED} days)`);\r\n                    if (!karmaOk) problems.push(`Account has only <strong>${karma} karma<\/strong> (minimum: ${MIN_KARMA_REQUIRED})`);\r\n                    \r\n                    lockError.innerHTML = `\r\n                        <h4><i class=\"fa-solid fa-ban\"><\/i> Account Not Eligible<\/h4>\r\n                        <p>Your Reddit account does not meet the minimum requirements:<\/p>\r\n                        <ul>\r\n                            ${problems.map(p => `<li>${p}<\/li>`).join('')}\r\n                        <\/ul>\r\n                        <p style=\"margin-top: 10px; font-size: 0.8rem;\">\r\n                            <strong>Solution:<\/strong> Use an older account with more karma, or increase your karma by participating normally on Reddit.\r\n                        <\/p>\r\n                    `;\r\n                    lockError.classList.add('show');\r\n                    lockBtn.disabled = false;\r\n                    lockBtn.innerHTML = '<i class=\"fa-solid fa-unlock\"><\/i> Try Another Account';\r\n                    \r\n                    \/\/ Play error sound\r\n                    if (typeof playSound === 'function') playSound('error');\r\n                    return;\r\n                }\r\n                \r\n                \/\/ SUCCESS - Account is eligible! Save data and move to step 2\r\n                redditData = { \r\n                    name: j.data.name, \r\n                    createdUTC: j.data.created_utc, \r\n                    age, \r\n                    karma, \r\n                    avatar: j.data.icon_img.split('?')[0] \r\n                };\r\n                \r\n                \/\/ Play success sound\r\n                if (typeof playSound === 'function') playSound('success');\r\n                \r\n                \/\/ Show success animation\r\n                lockBtn.innerHTML = '<i class=\"fa-solid fa-check\"><\/i> Reddit Account Verified!';\r\n                lockBtn.style.background = 'linear-gradient(135deg, #28a745 0%, #20c997 100%)';\r\n                \r\n                \/\/ After short delay, show Microworkers field\r\n                setTimeout(() => {\r\n                    lockMwField.style.display = 'block';\r\n                    lockMwInput.setAttribute('required', 'required');\r\n                    lockBtn.innerHTML = '<i class=\"fa-solid fa-unlock\"><\/i> Continue to Tool';\r\n                    lockBtn.style.background = 'linear-gradient(135deg, #667eea, #764ba2)';\r\n                    lockBtn.disabled = false;\r\n                    lockScreenStep = 2;\r\n                    lockMwInput.focus();\r\n                }, 1000);\r\n                \r\n            } catch (error) {\r\n                console.error('Lock screen verification error:', error);\r\n                \r\n                let errorMessage = 'Unable to verify your account. Please check your username and try again.';\r\n                \r\n                if (error.message === 'suspended') {\r\n                    errorMessage = 'This Reddit account is <strong>suspended<\/strong> and cannot be used for this task.';\r\n                } else if (error.message.includes('proxy')) {\r\n                    errorMessage = 'Network error. Please check your internet connection and try again.';\r\n                } else if (error.message.includes('not found')) {\r\n                    errorMessage = `The Reddit account <strong>u\/${username}<\/strong> was not found. Please check the username.`;\r\n                }\r\n                \r\n                lockError.innerHTML = `\r\n                    <h4><i class=\"fa-solid fa-triangle-exclamation\"><\/i> Verification Failed<\/h4>\r\n                    <p>${errorMessage}<\/p>\r\n                `;\r\n                lockError.classList.add('show');\r\n                \r\n                lockBtn.disabled = false;\r\n                lockBtn.innerHTML = '<i class=\"fa-solid fa-unlock\"><\/i> Try Again';\r\n                \r\n                \/\/ Play error sound\r\n                if (typeof playSound === 'function') playSound('error');\r\n            }\r\n            \r\n        } else if (lockScreenStep === 2) {\r\n            \/\/ ===== STEP 2: Get Microworkers username and show account summary =====\r\n            const mwUsername = lockMwInput.value.trim();\r\n            \r\n            if (!mwUsername) {\r\n                lockError.innerHTML = '<i class=\"fa-solid fa-triangle-exclamation\"><\/i> Please enter your Microworkers username.';\r\n                lockError.classList.add('show');\r\n                return;\r\n            }\r\n            \r\n            lockError.classList.remove('show');\r\n            \r\n            \/\/ Save Microworkers username\r\n            mwUser = mwUsername;\r\n            \r\n            \/\/ Pre-fill Step 1 (hidden) with account display\r\n            document.getElementById('microworkers-username').value = mwUsername;\r\n            \r\n            \/\/ Show success state in lock screen\r\n            lockBtn.innerHTML = '<i class=\"fa-solid fa-check\"><\/i> Verified!';\r\n            lockBtn.style.background = 'linear-gradient(135deg, #28a745 0%, #20c997 100%)';\r\n            lockBtn.disabled = true;\r\n            \r\n            \/\/ Hide form, show account summary card\r\n            setTimeout(() => {\r\n                document.getElementById('lock-form').style.display = 'none';\r\n                document.getElementById('lock-icon-lock').innerHTML = '<i class=\"fa-solid fa-circle-check\"><\/i>';\r\n                document.getElementById('lock-icon-lock').style.color = '#28a745';\r\n                document.getElementById('lock-subtitle').innerHTML = '<span style=\"color: #28a745; font-weight: 600;\">\u2705 Account Verified Successfully<\/span>';\r\n                \r\n                \/\/ Create account summary card\r\n                const summaryCard = document.createElement('div');\r\n                summaryCard.id = 'lock-summary-card';\r\n                summaryCard.style.cssText = 'margin: 20px 0; animation: slideDown 0.5s ease-out;';\r\n                summaryCard.innerHTML = `\r\n                    <div style=\"background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); border-radius: 12px; padding: 20px; border: 2px solid #28a745; box-shadow: 0 4px 15px rgba(40, 167, 69, 0.2);\">\r\n                        <p style=\"text-align: center; color: #666; margin: 0 0 15px 0; font-size: 0.9rem;\">\r\n                            Your information has been verified. Review below:\r\n                        <\/p>\r\n                        \r\n                        <div style=\"display: flex; align-items: center; gap: 15px; padding: 15px; background: white; border-radius: 8px; margin-bottom: 15px; border: 1px solid #e0e0e0;\">\r\n                            <img decoding=\"async\" src=\"${redditData.avatar}\" alt=\"Avatar\" style=\"width: 60px; height: 60px; border-radius: 50%; border: 3px solid #28a745;\" \/>\r\n                            <div style=\"flex: 1;\">\r\n                                <h3 style=\"margin: 0 0 8px 0; color: #333; font-size: 1.1rem;\">\r\n                                    <i class=\"fa-brands fa-reddit\" style=\"color: #ff4500;\"><\/i> u\/${redditData.name}\r\n                                <\/h3>\r\n                                <div style=\"display: flex; gap: 15px; font-size: 0.85rem; color: #666;\">\r\n                                    <span><i class=\"fa-solid fa-cake-candles\"><\/i> <strong>${redditData.age}<\/strong> days<\/span>\r\n                                    <span><i class=\"fa-solid fa-arrow-up-right-dots\"><\/i> <strong>${redditData.karma}<\/strong> karma<\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div style=\"color: #28a745; font-size: 2rem;\">\r\n                                <i class=\"fa-solid fa-circle-check\"><\/i>\r\n                            <\/div>\r\n                        <\/div>\r\n                        \r\n                        <div style=\"padding: 12px; background: white; border-radius: 8px; border: 1px solid #e0e0e0; text-align: center;\">\r\n                            <div style=\"font-size: 0.85rem; color: #666; margin-bottom: 5px;\">\r\n                                <i class=\"fa-solid fa-briefcase\"><\/i> Microworkers Username\r\n                            <\/div>\r\n                            <div style=\"font-size: 1rem; font-weight: 600; color: #333;\">\r\n                                ${mwUsername}\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <button id=\"lock-continue-btn\" class=\"lock-btn\" style=\"margin-top: 20px; background: linear-gradient(135deg, #667eea, #764ba2);\" onclick=\"continueTool()\">\r\n                        <i class=\"fa-solid fa-rocket\"><\/i> Continue to Mission\r\n                    <\/button>\r\n                `;\r\n                \r\n                \/\/ Insert before lock-error div\r\n                const lockError = document.getElementById('lock-error');\r\n                lockError.parentElement.insertBefore(summaryCard, lockError);\r\n                lockBtn.style.display = 'none';\r\n                \r\n                \/\/ Play success sound\r\n                if (typeof playSound === 'function') playSound('success');\r\n            }, 500);\r\n        }\r\n    }\r\n    \r\n    async function fetchWithProxies(url, signal) {\r\n        const endpoints = [\r\n            { name: 'Proxy 1', url: `https:\/\/iptv.directory\/proxy.php?url=${encodeURIComponent(url)}` },\r\n            { name: 'Proxy 2', url: `https:\/\/corsproxy.io\/?${encodeURIComponent(url)}` },\r\n            { name: 'Proxy 3 (fallback)', url: `https:\/\/api.allorigins.win\/get?url=${encodeURIComponent(url)}` }\r\n        ];\r\n        for (const endpoint of endpoints) {\r\n            try {\r\n                const response = await fetch(endpoint.url, { signal });\r\n                if (!response.ok) throw new Error(`Request failed with status ${response.status}`);\r\n                const text = await response.text();\r\n                try {\r\n                    const json = JSON.parse(text);\r\n                    return json.contents || json;\r\n                } catch (e) {\r\n                    return text;\r\n                }\r\n            } catch (e) {\r\n                console.error(`Fetch from ${endpoint.name} failed:`, e);\r\n            }\r\n        }\r\n        throw new Error('All proxy attempts failed.');\r\n    }\r\n\r\n    function validateCommentAndUnlockPosts() {\r\n        const commentInput = document.getElementById('comment');\r\n        const txt = commentInput.value.trim();\r\n        const msg3 = document.getElementById('msg3');\r\n        const isExact = exampleTexts.some(ex => normalizePlain(ex) === normalizePlain(txt));\r\n        if (isExact) {\r\n            msg3.innerHTML = '<span class=\"err\">Do not copy an example exactly. Please personalize it.<\/span>';\r\n            return;\r\n        }\r\n        const lengthOk = txt.length >= 80;\r\n        const keywordOk = \/xtreamcube\/i.test(txt);\r\n        if (!lengthOk || !keywordOk) {\r\n            msg3.innerHTML = '<span class=\"err\">Comment must be at least 80 characters long and contain \"XtreamCube\".<\/span>';\r\n            return;\r\n        }\r\n        msg3.innerHTML = '';\r\n        commentText = txt;\r\n        \r\n        taskLog.validatedComment = {\r\n            text: commentText,\r\n            length: commentText.length,\r\n            uniquenessScore: uniquenessScore(commentText)\r\n        };\r\n        \r\n        \/\/ \ud83d\udd0a Play success sound\r\n        if (typeof playSound === 'function') playSound('success');\r\n\r\n        document.getElementById('step2').setAttribute('data-comment-status', 'validated');\r\n        document.getElementById('step2-part1').classList.add('hidden');\r\n        document.getElementById('step2-part2').classList.remove('hidden');\r\n        \r\n        \/\/ Hide mission box and mini-progress tracker to reduce clutter\r\n        const missionBox = document.querySelector('#step2-part2').previousElementSibling?.previousElementSibling;\r\n        if (missionBox && missionBox.classList.contains('instruction-box')) {\r\n            missionBox.classList.add('hidden');\r\n        }\r\n        \r\n        \/\/ Hide mini-progress tracker\r\n        const miniProgress = document.querySelector('[id^=\"mini-progress\"]')?.closest('div[style*=\"display: flex\"]');\r\n        if (miniProgress) {\r\n            miniProgress.classList.add('hidden');\r\n        }\r\n        \r\n        \/\/ Open posts panel automatically and keep it open\r\n        document.getElementById('floating-posts-panel').classList.add('open');\r\n        document.body.classList.add('posts-panel-open');\r\n        \r\n        \/\/ Open mission panel on the left automatically\r\n        document.getElementById('floating-mission-panel').classList.add('open');\r\n        document.body.classList.add('mission-panel-open');\r\n        \r\n        \/\/ Scroll to top to see success box\r\n        window.scrollTo({ top: 0, behavior: 'smooth' });\r\n        \r\n        \/\/ Mark mission step 1 as completed\r\n        markMissionStepComplete(1);\r\n        \r\n        \/\/ Update mini-progress to step 2 (choose post)\r\n        updateMiniProgress(2);\r\n    }\r\n    \r\n    function markMissionStepComplete(stepNumber) {\r\n        const stepEl = document.getElementById(`mission-step-${stepNumber}`);\r\n        if (!stepEl) return;\r\n        \r\n        const badge = stepEl.querySelector('.mission-step-badge');\r\n        if (!badge) return;\r\n        \r\n        \/\/ Animate to green with checkmark\r\n        badge.style.background = '#28a745';\r\n        badge.style.transform = 'scale(1.1)';\r\n        \r\n        setTimeout(() => {\r\n            badge.innerHTML = '<i class=\"fa-solid fa-check\" style=\"font-size: 0.9rem;\"><\/i>';\r\n            badge.style.transform = 'scale(1)';\r\n            \r\n            \/\/ Add checkmark animation\r\n            badge.style.animation = 'bounceIn 0.5s ease-out';\r\n        }, 150);\r\n        \r\n        \/\/ Fade out the step slightly\r\n        stepEl.style.opacity = '0.7';\r\n    }\r\n\r\n    function editComment() {\r\n        document.getElementById('step2').setAttribute('data-comment-status', 'editing');\r\n        document.getElementById('step2-part1').classList.remove('hidden');\r\n        document.getElementById('step2-part2').classList.add('hidden');\r\n        const confirmBtn = document.getElementById('confirm-publication-btn');\r\n        confirmBtn.classList.add('hidden');\r\n        confirmBtn.disabled = true;\r\n        openedPosts.clear();\r\n        selectedPost = '';\r\n        document.getElementById('msg4').innerHTML = '';\r\n        \r\n        \/\/ Close floating posts panel\r\n        const postsPanel = document.getElementById('floating-posts-panel');\r\n        if (postsPanel) {\r\n            postsPanel.classList.remove('open');\r\n            document.body.classList.remove('posts-panel-open');\r\n        }\r\n        \r\n        \/\/ Open examples panel\r\n        const examplesPanel = document.getElementById('floating-examples-panel');\r\n        if (examplesPanel) {\r\n            examplesPanel.classList.add('open');\r\n        }\r\n        \r\n        document.querySelectorAll('#card-list .post').forEach(card => {\r\n            card.classList.remove('selected');\r\n            const openButton = card.querySelector('.btn-open');\r\n            if (openButton) {\r\n                openButton.disabled = false;\r\n                openButton.innerHTML = 'Open';\r\n            }\r\n            const selectButton = card.querySelector('.btn-select');\r\n            if (selectButton) {\r\n                selectButton.disabled = true;\r\n            }\r\n        });\r\n    }\r\n\r\n    function handleOpenClick(openButton, url) {\r\n        window.open(url, '_blank');\r\n        openedPosts.add(url);\r\n        \r\n        const postCard = openButton.closest('.post');\r\n        const badge = postCard.querySelector('.post-status-badge');\r\n        const selectButton = openButton.closest('.post-actions').querySelector('.btn-select');\r\n        \r\n        \/\/ Update badge\r\n        if (badge) {\r\n            badge.className = 'post-status-badge badge-opened';\r\n            badge.textContent = 'Opened';\r\n        }\r\n        \r\n        \/\/ Update card state\r\n        postCard.classList.add('opened');\r\n        \r\n        \/\/ Enable select button\r\n        if (selectButton) {\r\n            selectButton.disabled = false;\r\n        }\r\n        \r\n        \/\/ Update open button\r\n        openButton.innerHTML = '<i class=\"fa-solid fa-check\"><\/i> Opened';\r\n        openButton.disabled = true;\r\n    }\r\n\r\n    function selectPost(selectButton, url) {\r\n        selectedPost = url;\r\n        taskLog.selectedPost = { url: selectedPost };\r\n        \r\n        \/\/ Remove selected state from all posts\r\n        document.querySelectorAll('#card-list .post').forEach(p => {\r\n            p.classList.remove('selected');\r\n            const badge = p.querySelector('.post-status-badge');\r\n            if (badge && badge.classList.contains('badge-selected')) {\r\n                badge.className = 'post-status-badge badge-opened';\r\n                badge.textContent = 'Opened';\r\n            }\r\n        });\r\n        \r\n        \/\/ Add selected state to current post\r\n        const postCard = selectButton.closest('.post');\r\n        postCard.classList.add('selected');\r\n        \r\n        \/\/ Update badge to selected\r\n        const badge = postCard.querySelector('.post-status-badge');\r\n        if (badge) {\r\n            badge.className = 'post-status-badge badge-selected';\r\n            badge.textContent = 'Selected';\r\n        }\r\n        \r\n        \/\/ Get post title\r\n        const postTitle = postCard.querySelector('.post-title').textContent;\r\n        \r\n        \/\/ Open modal with comment and post info\r\n        openPostingModal(commentText, postTitle, url);\r\n        \r\n        \/\/ Mark mission step 2 as completed\r\n        markMissionStepComplete(2);\r\n        \r\n        \/\/ Update mini-progress - step 3 active\r\n        updateMiniProgress(3);\r\n        \r\n        document.getElementById('msg4').innerHTML = '';\r\n        document.getElementById('confirm-publication-btn').disabled = false;\r\n    }\r\n    \r\n    function changePostSelection() {\r\n        document.getElementById('selected-post-card').classList.add('hidden');\r\n        selectedPost = '';\r\n        document.querySelectorAll('#card-list .post').forEach(p => p.classList.remove('selected'));\r\n        document.getElementById('confirm-publication-btn').disabled = true;\r\n        updateMiniProgress(2);\r\n    }\r\n    \r\n    function updateMiniProgress(activeStep) {\r\n        for (let i = 1; i <= 3; i++) {\r\n            const progressDiv = document.getElementById(`mini-progress-${i}`);\r\n            if (!progressDiv) continue;\r\n            \r\n            const circle = progressDiv.querySelector('div');\r\n            const text = progressDiv.querySelector('span');\r\n            \r\n            if (i < activeStep) {\r\n                \/\/ Completed\r\n                circle.style.background = '#28a745';\r\n                circle.style.color = 'white';\r\n                circle.innerHTML = '<i class=\"fa-solid fa-check\" style=\"font-size: 0.8rem;\"><\/i>';\r\n                text.style.color = '#28a745';\r\n                text.style.fontWeight = '600';\r\n            } else if (i === activeStep) {\r\n                \/\/ Active\r\n                circle.style.background = 'linear-gradient(135deg, #667eea, #764ba2)';\r\n                circle.style.color = 'white';\r\n                circle.textContent = i;\r\n                text.style.color = '#667eea';\r\n                text.style.fontWeight = '600';\r\n            } else {\r\n                \/\/ Pending\r\n                circle.style.background = '#e9eef3';\r\n                circle.style.color = '#999';\r\n                circle.textContent = i;\r\n                text.style.color = '#999';\r\n                text.style.fontWeight = '400';\r\n            }\r\n        }\r\n    }\r\n\r\n    function handlePostsData(csvText) {\r\n        const list = document.getElementById('card-list');\r\n        list.innerHTML = '';\r\n        const parsed = Papa.parse(csvText || \"\", { header: true }).data;\r\n        allowedPosts = [];\r\n        \r\n        \/\/ Extract subreddit name from URL\r\n        function getSubredditFromUrl(url) {\r\n            const match = url.match(\/\\\/r\\\/([^\/]+)\/);\r\n            return match ? match[1] : 'reddit';\r\n        }\r\n        \r\n        \/\/ Get icon for subreddit\r\n        function getSubredditIcon(subreddit) {\r\n            const icons = {\r\n                'iptvresellers': 'fa-solid fa-tv',\r\n                'iptvreviews': 'fa-solid fa-star',\r\n                'iptv4us': 'fa-solid fa-flag',\r\n                'cordcutters': 'fa-solid fa-scissors',\r\n                'iptv': 'fa-solid fa-signal',\r\n                'default': 'fa-brands fa-reddit'\r\n            };\r\n            return icons[subreddit.toLowerCase()] || icons['default'];\r\n        }\r\n        \r\n        parsed.filter(r => r.Actif && r.Actif.toLowerCase() === 'oui').forEach(p => {\r\n            if (p.Titre && p.URL) {\r\n                const postId = (p.URL.match(\/\\\/comments\\\/([^\/]+)\/) || [])[1];\r\n                if (postId) allowedPosts.push({ postId, url: p.URL, title: p.Titre });\r\n                \r\n                const subreddit = getSubredditFromUrl(p.URL);\r\n                const icon = getSubredditIcon(subreddit);\r\n                \r\n                const div = document.createElement('div');\r\n                div.className = 'post';\r\n                div.innerHTML = `\r\n                    <div class=\"post-header\">\r\n                        <div class=\"subreddit-icon\"><i class=\"${icon}\"><\/i><\/div>\r\n                        <span class=\"post-subreddit\">r\/${subreddit}<\/span>\r\n                        <span class=\"post-status-badge badge-not-opened\">Not Opened<\/span>\r\n                    <\/div>\r\n                    <div class=\"post-title\">${safeHTML(p.Titre)}<\/div>\r\n                    <div class=\"post-url\">${safeHTML(p.URL)}<\/div>\r\n                    <div class=\"post-actions\">\r\n                        <button class=\"post-btn btn-open\" data-xcw-event=\"post_open_click\" onclick=\"handleOpenClick(this, '${p.URL}')\">\r\n                            <i class=\"fa-solid fa-external-link-alt\"><\/i> Open Post\r\n                        <\/button>\r\n                        <button class=\"post-btn btn-select\" data-xcw-event=\"post_select_click\" onclick=\"selectPost(this, '${p.URL}')\" disabled>\r\n                            <i class=\"fa-solid fa-hand-pointer\"><\/i> Click to Select\r\n                        <\/button>\r\n                    <\/div>\r\n                `;\r\n                list.appendChild(div);\r\n            }\r\n        });\r\n        \r\n        if (!allowedPosts.length) {\r\n             const errorHtml = `\r\n                <div style=\"text-align:center; padding: 20px;\">\r\n                    <p class=\"status-bad\" style=\"margin-bottom: 15px;\">No active posts available at the moment.<\/p>\r\n                    <button class=\"btn outline info sm\" data-xcw-event=\"manual_refresh_posts\" onclick=\"refreshPostList()\">\r\n                        <i class=\"fa-solid fa-rotate-right\"><\/i> Refresh List\r\n                    <\/button>\r\n                <\/div>`;\r\n            list.innerHTML = errorHtml;\r\n        }\r\n        \r\n        \/\/ Update posts count\r\n        updatePostsCount(allowedPosts.length);\r\n    }\r\n    \r\n    async function refreshPostList() {\r\n        const list = document.getElementById('card-list');\r\n        list.innerHTML = '<p style=\"text-align:center; padding: 20px;\"><i class=\"fa-solid fa-spinner fa-spin\"><\/i> Checking for new posts...<\/p>';\r\n        try {\r\n            const csvUrls = [\r\n                `https:\/\/n8n.srv749745.hstgr.cloud\/webhook\/c3434e96-6b67-42ef-bdda-ca65c86894f0?t=${Date.now()}`,\r\n                `https:\/\/gist.githubusercontent.com\/youneskh\/13054179313a01129b6f4817a3a3b04c\/raw\/posts.csv?t=${Date.now()}`\r\n            ];\r\n            let csvData;\r\n            try {\r\n                csvData = await fetchWithProxies(csvUrls[0], AbortSignal.timeout(8000));\r\n            } catch (e) {\r\n                console.warn(\"Manual refresh: Primary URL failed, trying fallback.\", e);\r\n                csvData = await fetchWithProxies(csvUrls[1], AbortSignal.timeout(8000));\r\n            }\r\n            handlePostsData(csvData);\r\n        } catch (error) {\r\n            console.error(\"Manual post list refresh failed:\", error);\r\n            handlePostsData('');\r\n        }\r\n    }\r\n\r\n    function checkCommentRealtime() {\r\n        const txt = document.getElementById('comment').value.trim();\r\n        const lengthOk = txt.length >= 80;\r\n        const keywordOk = \/xtreamcube\/i.test(txt);\r\n        document.getElementById('check-length').className = lengthOk ? 'ok' : 'not-ok';\r\n        document.getElementById('check-keyword').className = keywordOk ? 'ok' : 'not-ok';\r\n    }\r\n    \r\n    let idleTimer = null, idleWarningTimer = null;\r\n    function resetIdle() { clearTimeout(idleTimer); clearTimeout(idleWarningTimer); document.getElementById('idle-warning').style.display = 'none'; idleWarningTimer = setTimeout(() => { document.getElementById('idle-warning').style.display = 'block'; }, 9 * 60 * 1000); idleTimer = setTimeout(() => { alert('Session expired due to inactivity. The page will reload.'); location.reload(); }, 10 * 60 * 1000); }\r\n    ['mousemove', 'keydown', 'click', 'scroll', 'touchstart'].forEach(ev => window.addEventListener(ev, resetIdle));\r\n\r\n    function updateTaskChecklist() {\r\n        \/\/ Modern progress bar update\r\n        const progressSteps = [\r\n            { step: 0, label: 'Loading', next: 'Account Verification', width: 0 },\r\n            { step: 1, label: 'Account Verified', next: 'Write Comment', width: 33 },\r\n            { step: 2, label: 'Write Comment', next: 'Verify Comment', width: 50 },\r\n            { step: 3, label: 'Verify Comment', next: 'Final Review', width: 75 },\r\n            { step: 4, label: 'Final Review', next: 'Complete!', width: 100 }\r\n        ];\r\n        \r\n        const currentProgress = progressSteps.find(p => p.step === current) || progressSteps[0];\r\n        const actualStep = current === 0 ? 0 : (current === 1 ? 1 : (current <= 3 ? 2 : 3));\r\n        \r\n        const progressBarFill = document.getElementById('progress-bar-fill');\r\n        const progressStepText = document.getElementById('progress-step-text');\r\n        const progressLabelCurrent = document.getElementById('progress-label-current');\r\n        const progressLabelNext = document.getElementById('progress-label-next');\r\n        \r\n        if (progressBarFill) progressBarFill.style.width = currentProgress.width + '%';\r\n        if (progressStepText) progressStepText.textContent = `Step ${actualStep} of 3`;\r\n        if (progressLabelCurrent) progressLabelCurrent.textContent = currentProgress.label;\r\n        if (progressLabelNext) progressLabelNext.textContent = 'Next: ' + currentProgress.next;\r\n    }\r\n\r\n    function goto(step) {\r\n        if (step === current) return;\r\n        document.getElementById('wizard').setAttribute('data-current-step', step);\r\n        const newStepEl = document.getElementById('step' + step);\r\n        const oldStepEl = document.querySelector('.step.active');\r\n\r\n        if(oldStepEl) oldStepEl.classList.add('slide-out');\r\n        \r\n        setTimeout(() => {\r\n            if(oldStepEl) oldStepEl.classList.remove('active', 'slide-out');\r\n            if(newStepEl) {\r\n                newStepEl.classList.add('active', 'slide-in');\r\n                setTimeout(() => newStepEl.classList.remove('slide-in'), 300);\r\n            }\r\n            current = step;\r\n            renderNav();\r\n            updateTaskChecklist();\r\n            \r\n            \/\/ G\u00e9rer les panneaux flottants selon l'\u00e9tape\r\n            const floatingPanel = document.getElementById('floating-examples-panel');\r\n            const postsPanel = document.getElementById('floating-posts-panel');\r\n            const missionPanel = document.getElementById('floating-mission-panel');\r\n            \r\n            \/\/ Fermer les panneaux si on quitte le Step 2\r\n            if (step !== 2) {\r\n                if (floatingPanel) floatingPanel.classList.remove('open');\r\n                if (postsPanel) {\r\n                    postsPanel.classList.remove('open');\r\n                    document.body.classList.remove('posts-panel-open');\r\n                }\r\n                if (missionPanel) {\r\n                    missionPanel.classList.remove('open');\r\n                    document.body.classList.remove('mission-panel-open');\r\n                }\r\n            }\r\n        }, 300);\r\n    }\r\n    \r\n    function toggleFloatingExamples() {\r\n        const panel = document.getElementById('floating-examples-panel');\r\n        panel.classList.toggle('open');\r\n    }\r\n    \r\n    function closeFloatingExamples() {\r\n        const panel = document.getElementById('floating-examples-panel');\r\n        panel.classList.remove('open');\r\n    }\r\n    \r\n    function copyExampleFromFloating(text) {\r\n        const commentInput = document.getElementById('comment');\r\n        if (commentInput && !commentInput.readOnly) {\r\n            commentInput.value = text;\r\n            checkCommentRealtime();\r\n            runQualityLive();\r\n            \r\n            \/\/ Fermer le panel\r\n            closeFloatingExamples();\r\n            \r\n            \/\/ Scroll vers le textarea\r\n            commentInput.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n            commentInput.focus();\r\n            \r\n            \/\/ Afficher message de confirmation\r\n            const msg3 = document.getElementById('msg3');\r\n            msg3.innerHTML = '<span class=\"ok\">Example copied! Please customize it before validating.<\/span>';\r\n            setTimeout(() => { msg3.innerHTML = ''; }, 3000);\r\n        }\r\n    }\r\n    function prev() { goto(Math.max(1, current - 1)); }\r\n    function next(checkStep) {\r\n        if (checkStep === 1) {\r\n            \/\/ Data already validated in lock screen, just verify it's present\r\n            if (!redditData || !redditData.name) {\r\n                alert('Error: Reddit account data missing. Please refresh the page.');\r\n                return;\r\n            }\r\n            if (!mwUser || mwUser.length < 3) {\r\n                alert('Error: Microworkers username missing. Please refresh the page.');\r\n                return;\r\n            }\r\n            taskLog.microworkersUsername = mwUser;\r\n            taskLog.redditAccount = { ...redditData, status: 'verified-ok' };\r\n        }\r\n        goto(current + 1);\r\n    }\r\n\r\n    function renderNav() {\r\n        const navMap = { 0:0, 1:1, 2:2, 3:2, 4:4 };\r\n        const stepNavs = document.querySelectorAll('nav.steps button');\r\n        stepNavs.forEach(btn => {\r\n            const btnStep = parseInt(btn.id.replace('nav',''));\r\n            const isActive = (navMap[current] === btnStep);\r\n            btn.classList.toggle('active', isActive);\r\n            btn.querySelector('i')?.classList.toggle('fa-beat-fade', isActive);\r\n        });\r\n\r\n        \/\/ Old progress segments (kept for compatibility but not used with new progress bar)\r\n        const segments = document.querySelectorAll('.progress-segment');\r\n        segments.forEach((segment, index) => {\r\n            segment.classList.toggle('filled', index < current);\r\n        });\r\n    }\r\n\r\n    function render() { renderNav(); updateTaskChecklist(); }\r\n\r\n    function initiateVerificationPhase() {\r\n        \/\/ Mark mission step 3 as completed\r\n        markMissionStepComplete(3);\r\n        \r\n        \/\/ Close posts panel\r\n        const postsPanel = document.getElementById('floating-posts-panel');\r\n        if (postsPanel) {\r\n            postsPanel.classList.remove('open');\r\n            document.body.classList.remove('posts-panel-open');\r\n        }\r\n        \r\n        \/\/ Close examples panel\r\n        const examplesPanel = document.getElementById('floating-examples-panel');\r\n        if (examplesPanel) {\r\n            examplesPanel.classList.remove('open');\r\n        }\r\n        \r\n        \/\/ Transform mission panel to Task Recap\r\n        transformMissionToRecap();\r\n        \r\n        document.getElementById('task-phase').classList.add('hidden');\r\n        document.getElementById('verification-sub-step').classList.remove('hidden');\r\n\r\n        current = 3;\r\n        render(); \r\n        startAutomaticVerification();\r\n    }\r\n\r\n    function returnToTaskPhase() {\r\n        document.getElementById('verification-sub-step').classList.add('hidden');\r\n        document.getElementById('task-phase').classList.remove('hidden');\r\n        document.getElementById('verification-sub-step').setAttribute('data-verification-status', 'pending');\r\n        current = 2;\r\n        render();\r\n        \r\n        \/\/ Restore mission panel (revert from recap)\r\n        restoreMissionPanel();\r\n        \r\n        \/\/ Open mission panel\r\n        const missionPanel = document.getElementById('floating-mission-panel');\r\n        if (missionPanel) {\r\n            missionPanel.classList.add('open');\r\n            document.body.classList.add('mission-panel-open');\r\n            \r\n            \/\/ Update show button\r\n            const showBtn = document.getElementById('show-mission-btn');\r\n            if (showBtn) showBtn.classList.remove('visible');\r\n        }\r\n        \r\n        \/\/ Check which part of Step 2 we're in\r\n        const part1Visible = !document.getElementById('step2-part1').classList.contains('hidden');\r\n        const part2Visible = !document.getElementById('step2-part2').classList.contains('hidden');\r\n        \r\n        \/\/ If part1 (writing comment) is visible, open examples panel\r\n        if (part1Visible) {\r\n            const examplesPanel = document.getElementById('floating-examples-panel');\r\n            if (examplesPanel) {\r\n                examplesPanel.classList.add('open');\r\n            }\r\n        }\r\n        \r\n        \/\/ If part2 (select post) is visible, open posts panel\r\n        if (part2Visible) {\r\n            document.getElementById('floating-posts-panel').classList.add('open');\r\n            document.body.classList.add('posts-panel-open');\r\n        }\r\n    }\r\n    \r\n    function goBackToEditComment() {\r\n        \/\/ Hide verification phase\r\n        document.getElementById('verification-sub-step').classList.add('hidden');\r\n        document.getElementById('task-phase').classList.remove('hidden');\r\n        \r\n        \/\/ Go back to editing comment (part1)\r\n        editComment();\r\n        \r\n        \/\/ Restore mission panel\r\n        restoreMissionPanel();\r\n        \r\n        \/\/ Open mission panel\r\n        const missionPanel = document.getElementById('floating-mission-panel');\r\n        if (missionPanel) {\r\n            missionPanel.classList.add('open');\r\n            document.body.classList.add('mission-panel-open');\r\n            \r\n            \/\/ Update show button\r\n            const showBtn = document.getElementById('show-mission-btn');\r\n            if (showBtn) showBtn.classList.remove('visible');\r\n        }\r\n        \r\n        current = 2;\r\n        render();\r\n    }\r\n    \r\n    function returnToVerificationPhase() {\r\n        goto(2); \r\n        document.getElementById('task-phase').classList.add('hidden');\r\n        document.getElementById('verification-sub-step').classList.remove('hidden');\r\n        current = 3;\r\n        render();\r\n    }\r\n\r\n    function safeHTML(str) { return str.replace(\/[<>&\"'`]\/g, c => ({ '<': '&lt;', '>': '&gt;', '&': '&amp;', '\"': '&quot;', \"'\": '&#39;', '`': '&#96;' }[c])); }\r\n    function normalizePlain(txt) { return txt.toLowerCase().replace(\/<[^>]+>\/g, '').replace(\/[^\\p{L}\\p{N}\\s]\/gu, '').replace(\/\\s+\/g, ' ').trim(); }\r\n    function uniquenessScore(txt) { const w = normalizePlain(txt).split(' ').filter(Boolean); const u = new Set(w); return (u.size \/ Math.max(w.length, 1)) * 100; }\r\n    function readability(txt) { const sentences = (txt.match(\/[.!?]\/g) || []).length || 1; const words = (txt.match(\/\\b[\\p{L}\\p{N}]+\\b\/gu) || []).length; return words \/ sentences; }\r\n\r\n    \/\/ checkAccount() removed - verification now handled by lock screen before tool unlocks\r\n\r\n    function toggleHelper(elementId, button) {\r\n        const element = document.getElementById(elementId);\r\n        if (!element || !button) return;\r\n        const isNowHidden = element.classList.toggle('hidden');\r\n        if (!isNowHidden) { element.style.animation = 'slide-in-down 0.3s ease-out forwards'; } else { element.style.animation = ''; }\r\n        \r\n        button.classList.toggle('outline', isNowHidden);\r\n        \r\n        const action = isNowHidden ? 'Show' : 'Hide';\r\n        const name = elementId === 'tips' ? 'Tips' : 'Examples';\r\n        const iconClass = elementId === 'tips' ? 'fa-lightbulb' : 'fa-file-lines';\r\n        button.innerHTML = `<i class=\"fa-solid ${iconClass}\"><\/i> ${action} ${name}`;\r\n    }\r\n\r\n    function runQualityLive() {\r\n        const txt = document.getElementById('comment').value.trim();\r\n        if (!txt) { document.getElementById('quality-box').innerHTML = ''; return; }\r\n        const score = uniquenessScore(txt);\r\n        const isExact = exampleTexts.some(ex => normalizePlain(ex) === normalizePlain(txt));\r\n        let html = `<b>Originality:<\/b> ${score.toFixed(1)}% `;\r\n        if (isExact) html += '<span class=\"warn\">\u26a0 Exact copy.<\/span>'; else if (score < 50) html += '<span class=\"warn\">\u26a0 Low.<\/span>'; else html += '<span class=\"ok\">\u2714 Good.<\/span>';\r\n        html += ` | <b>Readability:<\/b> ${readability(txt).toFixed(1)} words\/sentence`;\r\n        document.getElementById('quality-box').innerHTML = html;\r\n    }\r\n    \r\n    function copyExample(el) {\r\n        const commentInput = document.getElementById('comment');\r\n        if (commentInput.readOnly) return;\r\n        commentInput.value = el.textContent.trim();\r\n        checkCommentRealtime();\r\n        runQualityLive();\r\n        document.getElementById('msg3').innerHTML = '<span class=\"ok\">Example copied \u2013 please customize it before validating.<\/span>';\r\n        \r\n        const examplesPanel = document.getElementById('examples');\r\n        const examplesButton = document.getElementById('examples-toggle-btn');\r\n        if (!examplesPanel.classList.contains('hidden')) {\r\n            toggleHelper('examples', examplesButton);\r\n        }\r\n    }\r\n    \r\n    \/\/ Floating Posts Panel Functions\r\n    function updatePostsCount(count) {\r\n        document.getElementById('posts-count-header').textContent = count;\r\n        \r\n        \/\/ Show scroll indicator if more than 4 posts\r\n        const scrollIndicator = document.getElementById('posts-scroll-indicator');\r\n        const scrollText = document.getElementById('scroll-indicator-text');\r\n        if (count > 4) {\r\n            scrollIndicator.classList.remove('hidden');\r\n            scrollText.textContent = `Scroll down to see all ${count} posts`;\r\n        } else {\r\n            scrollIndicator.classList.add('hidden');\r\n        }\r\n    }\r\n    \r\n    \/\/ Posting Modal Functions\r\n    function openPostingModal(comment, postTitle, postUrl) {\r\n        const modal = document.getElementById('posting-modal');\r\n        const modalCommentText = document.getElementById('modal-comment-text');\r\n        const modalPostTitle = document.getElementById('modal-post-title');\r\n        const modalPostUrl = document.getElementById('modal-post-url');\r\n        const modalPostLink = document.getElementById('modal-post-link');\r\n        \r\n        \/\/ Fill modal content\r\n        modalCommentText.textContent = comment;\r\n        modalPostTitle.textContent = postTitle;\r\n        modalPostUrl.textContent = postUrl;\r\n        modalPostLink.href = postUrl;\r\n        \r\n        \/\/ Show modal\r\n        modal.style.display = 'block';\r\n        document.body.style.overflow = 'hidden'; \/\/ Prevent background scroll\r\n        \r\n        \/\/ Play sound\r\n        if (typeof playSound === 'function') playSound('success');\r\n    }\r\n    \r\n    function closePostingModal() {\r\n        const modal = document.getElementById('posting-modal');\r\n        modal.style.display = 'none';\r\n        document.body.style.overflow = 'auto';\r\n        \r\n        \/\/ Unselect the post\r\n        changePostSelection();\r\n    }\r\n    \r\n    function confirmPostingAndContinue() {\r\n        \/\/ Close modal\r\n        const modal = document.getElementById('posting-modal');\r\n        modal.style.display = 'none';\r\n        document.body.style.overflow = 'auto';\r\n        \r\n        \/\/ Go directly to verification phase\r\n        initiateVerificationPhase();\r\n    }\r\n    \r\n    function closeMissionModal() {\r\n        const modal = document.getElementById('mission-explanation-modal');\r\n        modal.style.display = 'none';\r\n        document.body.style.overflow = 'auto';\r\n        \r\n        \/\/ Open the examples panel automatically\r\n        const examplesPanel = document.getElementById('floating-examples-panel');\r\n        if (examplesPanel) {\r\n            examplesPanel.classList.add('open');\r\n        }\r\n        \r\n        \/\/ Play success sound\r\n        if (typeof playSound === 'function') playSound('success');\r\n    }\r\n    \r\n    function toggleMissionPanel() {\r\n        const panel = document.getElementById('floating-mission-panel');\r\n        const showBtn = document.getElementById('show-mission-btn');\r\n        const isOpen = panel.classList.toggle('open');\r\n        \r\n        \/\/ Shift container left when panel opens\r\n        if (isOpen) {\r\n            document.body.classList.add('mission-panel-open');\r\n            showBtn.classList.remove('visible');\r\n        } else {\r\n            document.body.classList.remove('mission-panel-open');\r\n            showBtn.classList.add('visible');\r\n        }\r\n    }\r\n    \r\n    function transformMissionToRecap() {\r\n        const panel = document.getElementById('floating-mission-panel');\r\n        if (!panel) return;\r\n        \r\n        \/\/ Mark that we're in recap mode\r\n        panel.setAttribute('data-mode', 'recap');\r\n        \r\n        \/\/ Change header\r\n        const header = panel.querySelector('h3');\r\n        if (header) {\r\n            header.innerHTML = '<i class=\"fa-solid fa-clipboard-list\"><\/i> Task Recap';\r\n        }\r\n        \r\n        \/\/ Change show button text and icon\r\n        const showBtn = document.getElementById('show-mission-btn');\r\n        if (showBtn) {\r\n            const btnText = showBtn.querySelector('#show-btn-text');\r\n            const btnIcon = showBtn.querySelector('i');\r\n            if (btnText) btnText.textContent = 'Recap';\r\n            if (btnIcon) btnIcon.className = 'fa-solid fa-clipboard-list';\r\n        }\r\n        \r\n        \/\/ Replace content with recap\r\n        const contentDiv = panel.querySelector('div[style*=\"background: linear-gradient\"]');\r\n        if (contentDiv) {\r\n            contentDiv.innerHTML = `\r\n                <div style=\"text-align: center; margin-bottom: 20px;\">\r\n                    <div style=\"font-size: 3rem; color: #28a745;\">\r\n                        <i class=\"fa-solid fa-check-circle\"><\/i>\r\n                    <\/div>\r\n                    <h2 style=\"margin: 10px 0; font-size: 1.3rem; color: #28a745;\">Ready to Verify<\/h2>\r\n                    <p style=\"color: #666; font-size: 0.9rem; margin: 0;\">Review your submission details<\/p>\r\n                <\/div>\r\n                \r\n                <div id=\"recap-content\" style=\"background: white; border-radius: 10px; padding: 18px; margin-bottom: 15px; border: 1px solid #e0e0e0;\">\r\n                    <div style=\"margin-bottom: 15px; padding-bottom: 15px; border-bottom: 1px solid #e9eef3;\">\r\n                        <div style=\"font-weight: 700; color: #667eea; margin-bottom: 8px; font-size: 0.9rem;\">\r\n                            <i class=\"fa-solid fa-comment\"><\/i> Your Comment\r\n                        <\/div>\r\n                        <div style=\"background: #f8f9fa; padding: 12px; border-radius: 8px; font-size: 0.85rem; color: #333; line-height: 1.5; max-height: 120px; overflow-y: auto;\">\r\n                            ${commentText ? commentText : 'Comment text will appear here'}\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <div>\r\n                        <div style=\"font-weight: 700; color: #667eea; margin-bottom: 8px; font-size: 0.9rem;\">\r\n                            <i class=\"fa-solid fa-newspaper\"><\/i> Selected Post\r\n                        <\/div>\r\n                        <div style=\"background: #f8f9fa; padding: 12px; border-radius: 8px;\">\r\n                            <div style=\"font-size: 0.85rem; color: #333; margin-bottom: 5px;\">${selectedPost ? 'Post selected' : 'No post selected'}<\/div>\r\n                            <a href=\"${selectedPost}\" target=\"_blank\" style=\"font-size: 0.75rem; color: #667eea; word-break: break-all;\">${selectedPost}<\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div style=\"background: #eef7ff; border: 2px solid #667eea; border-radius: 10px; padding: 15px;\">\r\n                    <p style=\"margin: 0; font-size: 0.85rem; color: #333; line-height: 1.5;\">\r\n                        <i class=\"fa-solid fa-info-circle\" style=\"color: #667eea;\"><\/i> <strong>Next:<\/strong> We'll verify that your comment is publicly visible on Reddit\r\n                    <\/p>\r\n                <\/div>\r\n            `;\r\n        }\r\n    }\r\n    \r\n    function restoreMissionPanel() {\r\n        const panel = document.getElementById('floating-mission-panel');\r\n        if (!panel) return;\r\n        \r\n        \/\/ Only restore if we're in recap mode\r\n        if (panel.getAttribute('data-mode') !== 'recap') return;\r\n        \r\n        \/\/ Remove recap mode flag\r\n        panel.removeAttribute('data-mode');\r\n        \r\n        \/\/ Restore header\r\n        const header = panel.querySelector('h3');\r\n        if (header) {\r\n            header.innerHTML = '<i class=\"fa-solid fa-bullseye\"><\/i> Mission Instructions';\r\n        }\r\n        \r\n        \/\/ Restore show button text and icon\r\n        const showBtn = document.getElementById('show-mission-btn');\r\n        if (showBtn) {\r\n            const btnText = showBtn.querySelector('#show-btn-text');\r\n            const btnIcon = showBtn.querySelector('i');\r\n            if (btnText) btnText.textContent = 'Mission';\r\n            if (btnIcon) btnIcon.className = 'fa-solid fa-bullseye';\r\n        }\r\n        \r\n        \/\/ Restore content\r\n        const contentDiv = panel.querySelector('div[style*=\"background: linear-gradient\"]');\r\n        if (contentDiv) {\r\n            contentDiv.innerHTML = `\r\n                <div style=\"text-align: center; margin-bottom: 20px;\">\r\n                    <div style=\"font-size: 3rem; color: #667eea;\">\r\n                        <i class=\"fa-solid fa-bullseye\"><\/i>\r\n                    <\/div>\r\n                    <h2 style=\"margin: 10px 0; font-size: 1.3rem; color: #667eea;\">Your Mission<\/h2>\r\n                    <p style=\"color: #666; font-size: 0.9rem; margin: 0;\">Write and post a comment about XtreamCube IPTV<\/p>\r\n                <\/div>\r\n                \r\n                <div id=\"mission-steps-list\" style=\"background: white; border-radius: 10px; padding: 18px; margin-bottom: 15px; border: 1px solid #e0e0e0;\">\r\n                    <div id=\"mission-step-1\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 12px;\">\r\n                        <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">1<\/div>\r\n                        <div style=\"flex: 1;\">\r\n                            <strong style=\"color: #333; font-size: 0.9rem;\">Write your comment<\/strong>\r\n                            <p style=\"margin: 4px 0 0 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Create a personal comment (80+ chars, include \"XtreamCube\")<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <div id=\"mission-step-2\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px; margin-bottom: 12px;\">\r\n                        <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">2<\/div>\r\n                        <div style=\"flex: 1;\">\r\n                            <strong style=\"color: #333; font-size: 0.9rem;\">Choose a Reddit post<\/strong>\r\n                            <p style=\"margin: 4px 0 0 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Select from the available list on the right panel<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <div id=\"mission-step-3\" class=\"mission-step\" style=\"display: flex; align-items: start; gap: 12px;\">\r\n                        <div class=\"mission-step-badge\" style=\"width: 30px; height: 30px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: white; font-weight: 700; flex-shrink: 0; font-size: 0.9rem; transition: all 0.3s ease;\">3<\/div>\r\n                        <div style=\"flex: 1;\">\r\n                            <strong style=\"color: #333; font-size: 0.9rem;\">Post on Reddit<\/strong>\r\n                            <p style=\"margin: 4px 0 0 0; font-size: 0.8rem; color: #666; line-height: 1.4;\">Submit your comment as a reply to the chosen thread<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div style=\"background: #fff3cd; border: 2px solid #ffc107; border-radius: 10px; padding: 12px;\">\r\n                    <p style=\"margin: 0; font-size: 0.8rem; color: #856404; line-height: 1.4;\">\r\n                        <i class=\"fa-solid fa-lightbulb\"><\/i> <strong>Tip:<\/strong> Use the example comments provided, but personalize them - don't copy exactly!\r\n                    <\/p>\r\n                <\/div>\r\n            `;\r\n            \r\n            \/\/ Re-apply checkmarks if steps were completed\r\n            if (commentText) markMissionStepComplete(1);\r\n            if (selectedPost) markMissionStepComplete(2);\r\n        }\r\n    }\r\n\r\n    async function initApp() {\r\n        const lockLoadingProgress = document.getElementById('lock-loading-progress');\r\n        const lockLoadingText = document.getElementById('lock-loading-text');\r\n        const MAX_RETRIES = 3;\r\n        const RETRY_DELAY = 3000;\r\n        let postsLoaded = false;\r\n\r\n        lockLoadingProgress.style.width = '10%';\r\n        \r\n        for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\r\n            try {\r\n                lockLoadingText.innerHTML = `<i class=\"fa-solid fa-spinner fa-spin\"><\/i> Loading mission data... (Attempt ${attempt}\/${MAX_RETRIES})`;\r\n                const csvUrls = [\r\n                    `https:\/\/n8n.srv749745.hstgr.cloud\/webhook\/c3434e96-6b67-42ef-bdda-ca65c86894f0?t=${Date.now()}`,\r\n                    `https:\/\/gist.githubusercontent.com\/youneskh\/13054179313a01129b6f4817a3a3b04c\/raw\/posts.csv?t=${Date.now()}`\r\n                ];\r\n                \r\n                let csvData;\r\n                try {\r\n                    csvData = await fetchWithProxies(csvUrls[0], AbortSignal.timeout(8000));\r\n                } catch (primaryError) {\r\n                    console.warn(\"Primary URL failed, trying fallback.\", primaryError);\r\n                    csvData = await fetchWithProxies(csvUrls[1], AbortSignal.timeout(8000));\r\n                }\r\n                \r\n                handlePostsData(csvData);\r\n                postsLoaded = true;\r\n                break; \r\n            } catch (error) {\r\n                console.error(`Attempt ${attempt} to load posts failed.`, error);\r\n                if (attempt < MAX_RETRIES) {\r\n                    lockLoadingText.innerHTML = `<i class=\"fa-solid fa-triangle-exclamation\"><\/i> Failed to load. Retrying in ${RETRY_DELAY \/ 1000}s... (${attempt}\/${MAX_RETRIES})`;\r\n                    await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));\r\n                }\r\n            }\r\n        }\r\n\r\n        if (postsLoaded) {\r\n            lockLoadingProgress.style.width = '60%';\r\n            lockLoadingText.innerHTML = `<i class=\"fa-solid fa-check\"><\/i> Mission data loaded!`;\r\n            \r\n            setTimeout(() => {\r\n                lockLoadingProgress.style.width = '100%';\r\n                lockLoadingText.innerHTML = `\u2705 Ready! Please verify your accounts below.`;\r\n                \r\n                setTimeout(() => {\r\n                    \/\/ Hide loading, show form\r\n                    document.getElementById('lock-loading').style.display = 'none';\r\n                    document.getElementById('lock-icon-spinner').style.display = 'none';\r\n                    document.getElementById('lock-icon-lock').style.display = 'block';\r\n                    document.getElementById('lock-subtitle').textContent = 'Ready to start!';\r\n                    document.getElementById('lock-form').style.display = 'block';\r\n                }, 800);\r\n            }, 600);\r\n        } else {\r\n            lockLoadingProgress.style.width = '0%';\r\n            lockLoadingText.innerHTML = `\r\n                <div style=\"color: var(--danger); margin-bottom: 15px;\">\r\n                    <i class=\"fa-solid fa-triangle-exclamation\"><\/i> Failed to load mission data\r\n                <\/div>\r\n                <button class=\"btn\" style=\"background: var(--danger);\" onclick=\"manualLoadPosts()\">\r\n                    <i class=\"fa-solid fa-rotate-right\"><\/i> Try Again\r\n                <\/button>\r\n            `;\r\n        }\r\n    }\r\n\r\n    async function manualLoadPosts() {\r\n        const lockLoadingProgress = document.getElementById('lock-loading-progress');\r\n        const lockLoadingText = document.getElementById('lock-loading-text');\r\n        \r\n        lockLoadingProgress.style.width = '10%';\r\n        lockLoadingText.innerHTML = `<i class=\"fa-solid fa-spinner fa-spin\"><\/i> Reloading mission data...`;\r\n\r\n        try {\r\n            const csvUrls = [\r\n                `https:\/\/n8n.srv749745.hstgr.cloud\/webhook\/c3434e96-6b67-42ef-bdda-ca65c86894f0?t=${Date.now()}`,\r\n                `https:\/\/gist.githubusercontent.com\/youneskh\/13054179313a01129b6f4817a3a3b04c\/raw\/posts.csv?t=${Date.now()}`\r\n            ];\r\n            \r\n            let csvData;\r\n            try {\r\n                csvData = await fetchWithProxies(csvUrls[0], AbortSignal.timeout(8000));\r\n            } catch (e) {\r\n                console.warn(\"Manual refresh: Primary URL failed, trying fallback.\", e);\r\n                csvData = await fetchWithProxies(csvUrls[1], AbortSignal.timeout(8000));\r\n            }\r\n            \r\n            handlePostsData(csvData);\r\n            \r\n            lockLoadingProgress.style.width = '100%';\r\n            lockLoadingText.innerHTML = `\u2705 Mission data loaded! Please verify your accounts below.`;\r\n            \r\n            setTimeout(() => {\r\n                document.getElementById('lock-loading').style.display = 'none';\r\n                document.getElementById('lock-icon-spinner').style.display = 'none';\r\n                document.getElementById('lock-icon-lock').style.display = 'block';\r\n                document.getElementById('lock-subtitle').textContent = 'Ready to start!';\r\n                document.getElementById('lock-form').style.display = 'block';\r\n            }, 1000);\r\n\r\n        } catch (error) {\r\n            console.error(\"Manual post list refresh failed:\", error);\r\n            lockLoadingProgress.style.width = '0%';\r\n            lockLoadingText.innerHTML = `\r\n                <div style=\"color: var(--danger); margin-bottom: 15px;\">\r\n                    <i class=\"fa-solid fa-triangle-exclamation\"><\/i> Reload failed. Check your connection.\r\n                <\/div>\r\n                <button class=\"btn\" style=\"background: var(--danger);\" onclick=\"manualLoadPosts()\">\r\n                    <i class=\"fa-solid fa-rotate-right\"><\/i> Try Again\r\n                <\/button>\r\n            `;\r\n        }\r\n    }\r\n\r\n    async function startAutomaticVerification() {\r\n        const listEl = document.getElementById('comment-history-list');\r\n        const statusEl = document.getElementById('auto-verify-status');\r\n        const verifStepDiv = document.getElementById('verification-sub-step');\r\n        verifStepDiv.setAttribute('data-verification-status', 'searching');\r\n        document.getElementById('auto-verify-zone').classList.remove('hidden');\r\n        document.getElementById('manual-verify-zone').classList.add('hidden');\r\n        document.getElementById('confirm-zone').classList.add('hidden');\r\n        document.getElementById('verif').innerHTML = '';\r\n        \r\n        statusEl.innerHTML = `\ud83d\udd0e Searching for your comment... <br><small>If you just posted, it might take 1-2 minutes. This tool will retry automatically.<\/small>`;\r\n\r\n        listEl.innerHTML = ''; \r\n        for (let i = 0; i < 3; i++) {\r\n            const skeletonItem = document.createElement('div');\r\n            skeletonItem.className = 'comment-history-item skeleton';\r\n            skeletonItem.innerHTML = `<div class=\"line\"><\/div><div class=\"line short\"><\/div>`;\r\n            listEl.appendChild(skeletonItem);\r\n        }\r\n\r\n        if (!redditData || !redditData.name) { showManualVerification(\"Reddit user not found. Please verify manually.\"); return; }\r\n        \r\n        const MAX_RETRIES = 3;\r\n        const RETRY_DELAY = 3000;\r\n\r\n        for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\r\n            try {\r\n                if (attempt > 1) {\r\n                    statusEl.innerHTML = `\u26a0\ufe0f Connection error. Retrying search... (${attempt}\/${MAX_RETRIES})`;\r\n                    await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));\r\n                }\r\n                \r\n                const historyUrl = `https:\/\/www.reddit.com\/user\/${redditData.name}\/comments.json?limit=5&t=${Date.now()}`;\r\n                const result = await fetchWithProxies(historyUrl, AbortSignal.timeout(8000));\r\n                \r\n                listEl.innerHTML = '';\r\n                const comments = result.data.children;\r\n                statusEl.innerHTML = `\u2705 Search complete! Please select your comment.`;\r\n                document.getElementById('reload-btn').classList.remove('hidden');\r\n                \r\n                if (comments.length === 0) {\r\n                     listEl.innerHTML = `<div class=\"instruction-box warn\" style=\"margin: 10px 0;\"><strong>No recent comments found.<\/strong><br>Did you post your comment on Reddit? If so, please wait another minute, then click the \"Reload\" button above.<\/div>`;\r\n                     verifStepDiv.setAttribute('data-verification-status', 'no-comments-found');\r\n                     return;\r\n                }\r\n                \r\n                comments.forEach(comment => {\r\n                    const data = comment.data;\r\n                    const item = document.createElement('div');\r\n                    item.className = 'comment-history-item';\r\n                    const postedDate = new Date(data.created_utc * 1000);\r\n                    const timeAgo = Math.round((Date.now() - postedDate.getTime()) \/ 60000);\r\n                    item.innerHTML = `<p><strong>On r\/${data.subreddit}:<\/strong> ${safeHTML(data.body)}<\/p><small>Posted ${timeAgo} minutes ago<\/small>`;\r\n                    item.onclick = () => {\r\n                        document.querySelectorAll('.comment-history-item').forEach(el => { el.style.border = '2px solid transparent'; el.style.background = ''; });\r\n                        item.style.border = '2px solid var(--info)';\r\n                        item.style.background = '#eef7ff';\r\n                        const commentUrl = 'https:\/\/www.reddit.com' + data.permalink;\r\n                        document.getElementById('comment-url').value = commentUrl;\r\n                        verifyComment(commentUrl, true);\r\n                    };\r\n                    listEl.appendChild(item);\r\n                });\r\n\r\n                return;\r\n            } catch (error) {\r\n                console.error(`Automatic verification attempt ${attempt} failed:`, error);\r\n                if (attempt === MAX_RETRIES) {\r\n                    verifStepDiv.setAttribute('data-verification-status', 'failed');\r\n                    listEl.innerHTML = '';\r\n                    showManualVerification(\"Automatic search failed after several attempts. This could be a network issue. Please try manual entry.\");\r\n                }\r\n            }\r\n        }\r\n    }\r\n    \r\n    function switchToAutoVerify() {\r\n        document.getElementById('auto-verify-zone').classList.remove('hidden');\r\n        document.getElementById('manual-verify-zone').classList.add('hidden');\r\n        \r\n        \/\/ Update button styles\r\n        const btnAuto = document.getElementById('btn-auto-verify');\r\n        const btnManual = document.getElementById('btn-manual-verify');\r\n        btnAuto.style.background = 'linear-gradient(135deg, #667eea, #764ba2)';\r\n        btnAuto.style.color = 'white';\r\n        btnAuto.style.border = 'none';\r\n        btnManual.style.background = 'white';\r\n        btnManual.style.color = '#667eea';\r\n        btnManual.style.border = '2px solid #667eea';\r\n        \r\n        \/\/ Clear any error messages\r\n        document.getElementById('verif').innerHTML = '';\r\n    }\r\n    \r\n    function switchToManualVerify() {\r\n        document.getElementById('auto-verify-zone').classList.add('hidden');\r\n        document.getElementById('manual-verify-zone').classList.remove('hidden');\r\n        \r\n        \/\/ Update button styles\r\n        const btnAuto = document.getElementById('btn-auto-verify');\r\n        const btnManual = document.getElementById('btn-manual-verify');\r\n        btnManual.style.background = 'linear-gradient(135deg, #667eea, #764ba2)';\r\n        btnManual.style.color = 'white';\r\n        btnManual.style.border = 'none';\r\n        btnAuto.style.background = 'white';\r\n        btnAuto.style.color = '#667eea';\r\n        btnAuto.style.border = '2px solid #667eea';\r\n        \r\n        updateFindCommentHelper();\r\n    }\r\n    \r\n    function showManualVerification(reason) {\r\n        switchToManualVerify();\r\n        if (reason) { document.getElementById('verif').innerHTML = `<span class=\"warn\">${reason}<\/span>`; }\r\n    }\r\n    function updateFindCommentHelper() {\r\n        const helper = document.getElementById('find-comment-helper');\r\n        if (selectedPost && redditData && redditData.name) {\r\n            const searchUrl = `${selectedPost.split('?')[0]}?q=author:${redditData.name}`;\r\n            helper.innerHTML = `\ud83d\ude80 <b>Having trouble finding your comment?<\/b><br><a href=\"${searchUrl}\" target=\"_blank\" class=\"btn outline info sm\" style=\"margin-top: 6px;\">Click here for an easy search<\/a>`;\r\n            helper.style.display = 'block';\r\n        } else { helper.style.display = 'none'; }\r\n    }\r\n    const extractIds = (url) => {\r\n        const cleanedUrl = url.split('?')[0];\r\n        const match = cleanedUrl.match(\/comments\\\/([a-z0-9]+)(?:\\\/[^\\\/]+\\\/([a-z0-9]{7,}))?\/);\r\n        if (match && match[1] && match[2]) { return { postId: match[1], commentId: match[2] }; }\r\n        const fallbackMatch = cleanedUrl.match(\/comments\\\/([a-z0-9]+)\\\/([a-z0-9]{7,})\/);\r\n        if (fallbackMatch && fallbackMatch[1] && fallbackMatch[2]) { return { postId: fallbackMatch[1], commentId: fallbackMatch[2] }; }\r\n        return {};\r\n    };\r\n\r\n    function handleVerificationData(js, ids) {\r\n        const box = document.getElementById('verif');\r\n        const verifStepDiv = document.getElementById('verification-sub-step');\r\n        threadInfo = js[0]?.data?.children?.[0]?.data || null;\r\n        const found = js[1]?.data?.children?.find(c => c.data.id === ids.commentId);\r\n\r\n        if (!found) {\r\n            verifStepDiv.setAttribute('data-verification-status', 'failed');\r\n            const explanationHTML = `\r\n                <div class=\"error-explanation-box\">\r\n                    <h4>\ud83d\udcdd Why can't the tool find my comment?<\/h4>\r\n                    <p>This means <strong>Reddit has made it invisible<\/strong> to everyone (except you), likely due to spam filters. This is not a bug with the tool.<\/p>\r\n                    <h4 style=\"margin-top:15px;\">\u2705 Quick 3-Step Solution<\/h4>\r\n                    <ol>\r\n                        <li><strong>Check in a private window:<\/strong> Paste your comment link into a private browser window. If it doesn't appear, it's definitely hidden.<\/li>\r\n                        <li><strong>Switch posts:<\/strong> Go \"Back to Posting\" and choose a <strong>DIFFERENT<\/strong> post from the list.<\/li>\r\n                        <li><strong>Re-post:<\/strong> Post your comment on the new thread and try the verification again.<\/li>\r\n                    <\/ol>\r\n                <\/div>\r\n            `;\r\n            box.innerHTML = `<span class=\"err\">Comment not found in public data.<\/span>` + explanationHTML;\r\n            return;\r\n        }\r\n\r\n        \/\/ ====== NOUVEAU: Sauvegarder la preuve initiale ======\r\n        verifStepDiv.setAttribute('data-verification-status', 'waiting-reverify');\r\n        verifiedData = found.data;\r\n        initialProof = {\r\n            timestamp: Date.now(),\r\n            commentId: ids.commentId,\r\n            postId: ids.postId,\r\n            body: found.data.body,\r\n            author: found.data.author,\r\n            permalink: 'https:\/\/www.reddit.com' + found.data.permalink,\r\n            created_utc: found.data.created_utc\r\n        };\r\n        \r\n        taskLog.initialVerification = {\r\n            timestamp: initialProof.timestamp,\r\n            commentId: initialProof.commentId,\r\n            found: true\r\n        };\r\n\r\n        \/\/ Cacher le bouton \"Next\" pendant l'attente\r\n        document.getElementById('confirm-zone').classList.add('hidden');\r\n\r\n        \/\/ Afficher l'interface d'attente\r\n        const waitingHtml = `\r\n            <div style=\"border: 2px solid var(--warn); background: #fffbe6; padding: 20px; border-radius: var(--border-radius); margin-top: 10px;\">\r\n                <h4 style=\"color: var(--warn-dark); margin: 0 0 15px 0; font-size: 1.1rem;\">\r\n                    <i class=\"fa-solid fa-hourglass-half\"><\/i> Final Verification in Progress\r\n                <\/h4>\r\n                \r\n                <div style=\"background: #fff; padding: 15px; border-radius: 8px; margin-bottom: 15px;\">\r\n                    <p style=\"margin: 0 0 10px 0; font-weight: 600;\">\u2705 Your comment was found!<\/p>\r\n                    <blockquote style=\"margin: 10px 0; padding: 10px; background: #f8f9fa; border-left: 3px solid var(--info); font-size: 0.85rem;\">${safeHTML(found.data.body)}<\/blockquote>\r\n                <\/div>\r\n                \r\n                <div class=\"countdown-container\" style=\"background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 25px; border-radius: 12px; margin-bottom: 15px; box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);\">\r\n                    <p style=\"margin: 0 0 15px 0; font-weight: 600; color: #fff; text-align: center; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 1px;\">\u23f0 Re-Verification Timer<\/p>\r\n                    <div style=\"text-align: center; margin: 20px 0;\">\r\n                        <div style=\"display: inline-block; background: rgba(255,255,255,0.15); backdrop-filter: blur(10px); padding: 20px 40px; border-radius: 16px; border: 2px solid rgba(255,255,255,0.3); box-shadow: 0 8px 32px rgba(0,0,0,0.1);\">\r\n                            <div style=\"font-size: 3.5rem; font-weight: 800; color: #fff; font-family: 'Courier New', monospace; letter-spacing: 3px; text-shadow: 0 4px 10px rgba(0,0,0,0.3);\" id=\"countdown-display\">5:00<\/div>\r\n                            <div style=\"font-size: 0.75rem; color: rgba(255,255,255,0.8); margin-top: 8px; text-transform: uppercase; letter-spacing: 2px;\">Minutes : Seconds<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <!-- Progress Bar avec Pourcentage -->\r\n                    <div style=\"position: relative; margin: 20px 0;\">\r\n                        <div style=\"background: rgba(255,255,255,0.2); border-radius: 20px; height: 35px; overflow: hidden; position: relative;\">\r\n                            <div id=\"reverify-progress\" style=\"width: 0%; height: 100%; background: linear-gradient(90deg, #28a745, #20c997); transition: width 1s linear; box-shadow: 0 0 10px rgba(32, 201, 151, 0.6);\"><\/div>\r\n                            <div id=\"reverify-percentage\" style=\"position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-weight: 700; font-size: 0.95rem; color: #fff; z-index: 10; text-shadow: 0 0 3px rgba(0,0,0,0.5);\">0% verified<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                    <div style=\"text-align: center; margin-top: 15px;\">\r\n                        <div style=\"display: inline-flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.15); padding: 8px 16px; border-radius: 20px;\">\r\n                            <div style=\"width: 8px; height: 8px; background: #4ade80; border-radius: 50%; animation: pulse-countdown 1.5s infinite;\"><\/div>\r\n                            <span style=\"color: #fff; font-size: 0.75rem; font-weight: 600;\">Checking comment survival...<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div style=\"background: #eef7ff; padding: 15px; border-radius: 8px; font-size: 0.85rem; color: #333; line-height: 1.6;\">\r\n                    <p style=\"margin: 0 0 12px 0;\">\r\n                        <i class=\"fa-solid fa-shield-halved\" style=\"color: var(--info);\"><\/i> <strong style=\"color: var(--info);\">We are verifying your comment exists and is publicly visible.<\/strong>\r\n                    <\/p>\r\n                    <p style=\"margin: 0 0 12px 0;\">\r\n                        <i class=\"fa-solid fa-clock\" style=\"color: var(--warn-dark);\"><\/i> <strong>Why wait 5 minutes?<\/strong><br>\r\n                        Reddit often removes comments 2-5 minutes after posting due to spam filters. This verification ensures your comment truly survives.\r\n                    <\/p>\r\n                    <p style=\"margin: 0; font-weight: 700; color: var(--danger); background: #ffe6e6; padding: 10px; border-radius: 6px; border-left: 4px solid var(--danger);\">\r\n                        <i class=\"fa-solid fa-triangle-exclamation\"><\/i> <strong>DO NOT CLOSE THIS PAGE<\/strong> or you will lose your progress!\r\n                    <\/p>\r\n                <\/div>\r\n            <\/div>\r\n        `;\r\n        box.innerHTML = waitingHtml;\r\n\r\n        \/\/ Lancer le countdown de 5 minutes\r\n        startReverificationCountdown(5 * 60, ids);\r\n    }\r\n    \r\n    \/\/ ====== NOUVEAU: Fonction de countdown ======\r\n    function startReverificationCountdown(seconds, ids) {\r\n        let remaining = seconds;\r\n        const countdownEl = document.getElementById('countdown-display');\r\n        const progressBar = document.getElementById('reverify-progress');\r\n        \r\n        \/\/ Nettoyer l'intervalle existant si pr\u00e9sent\r\n        if (reverifyInterval) {\r\n            clearInterval(reverifyInterval);\r\n        }\r\n        \r\n        \/\/ D\u00e9sactiver les boutons de navigation pendant la v\u00e9rification\r\n        const actionsContainer = document.querySelector('#verification-sub-step .actions-bottom');\r\n        const backBtn = actionsContainer?.querySelector('.btn.subtle');\r\n        const editBtn = actionsContainer?.querySelector('.btn[onclick*=\"goBackToEditComment\"]');\r\n        \r\n        if (actionsContainer) {\r\n            actionsContainer.classList.add('verification-warning-tooltip');\r\n        }\r\n        \r\n        if (backBtn) {\r\n            backBtn.disabled = true;\r\n            backBtn.style.opacity = '0.5';\r\n            backBtn.style.cursor = 'not-allowed';\r\n        }\r\n        \r\n        if (editBtn) {\r\n            editBtn.disabled = true;\r\n            editBtn.style.opacity = '0.5';\r\n            editBtn.style.cursor = 'not-allowed';\r\n        }\r\n        \r\n        \/\/ Mettre \u00e0 jour le countdown chaque seconde\r\n        reverifyInterval = setInterval(() => {\r\n            remaining--;\r\n            const mins = Math.floor(remaining \/ 60);\r\n            const secs = remaining % 60;\r\n            if (countdownEl) {\r\n                countdownEl.textContent = `${mins}:${secs.toString().padStart(2, '0')}`;\r\n            }\r\n            \r\n            \/\/ Mettre \u00e0 jour la barre de progression avec pourcentage\r\n            const progress = ((seconds - remaining) \/ seconds) * 100;\r\n            if (progressBar) {\r\n                progressBar.style.width = progress + '%';\r\n            }\r\n            \r\n            \/\/ Mettre \u00e0 jour le pourcentage affich\u00e9\r\n            const percentageEl = document.getElementById('reverify-percentage');\r\n            if (percentageEl) {\r\n                percentageEl.textContent = Math.floor(progress) + '% verified';\r\n            }\r\n            \r\n            if (remaining <= 0) {\r\n                clearInterval(reverifyInterval);\r\n                \/\/ \ud83d\udd0a Play notification sound when countdown ends\r\n                if (typeof playSound === 'function') playSound('notification');\r\n                performReverification(ids);\r\n            }\r\n        }, 1000);\r\n    }\r\n    \r\n    \/\/ ====== NOUVEAU: Fonction de re-v\u00e9rification ======\r\n    async function performReverification(ids) {\r\n        const box = document.getElementById('verif');\r\n        const verifStepDiv = document.getElementById('verification-sub-step');\r\n        \r\n        \/\/ R\u00e9activer les boutons de navigation\r\n        const actionsContainer = document.querySelector('#verification-sub-step .actions-bottom');\r\n        const backBtn = actionsContainer?.querySelector('.btn.subtle');\r\n        const editBtn = actionsContainer?.querySelector('.btn[onclick*=\"goBackToEditComment\"]');\r\n        \r\n        if (actionsContainer) {\r\n            actionsContainer.classList.remove('verification-warning-tooltip');\r\n        }\r\n        \r\n        if (backBtn) {\r\n            backBtn.disabled = false;\r\n            backBtn.style.opacity = '1';\r\n            backBtn.style.cursor = 'pointer';\r\n        }\r\n        \r\n        if (editBtn) {\r\n            editBtn.disabled = false;\r\n            editBtn.style.opacity = '1';\r\n            editBtn.style.cursor = 'pointer';\r\n        }\r\n        \r\n        box.innerHTML = `\r\n            <div style=\"text-align: center; padding: 20px;\">\r\n                <i class=\"fa-solid fa-spinner fa-spin\" style=\"font-size: 2rem; color: var(--info);\"><\/i>\r\n                <p style=\"margin-top: 15px; font-weight: 600;\">Re-verifying your comment...<\/p>\r\n            <\/div>\r\n        `;\r\n        \r\n        try {\r\n            const commentApiUrl = `https:\/\/old.reddit.com\/comments\/${ids.postId}\/_\/${ids.commentId}.json?t=${Date.now()}`;\r\n            const js = await fetchWithProxies(commentApiUrl, AbortSignal.timeout(8000));\r\n            const found = js[1]?.data?.children?.find(c => c.data.id === ids.commentId);\r\n            \r\n            if (!found) {\r\n                \/\/ \u274c COMMENTAIRE SUPPRIM\u00c9 - REJETER\r\n                verifStepDiv.setAttribute('data-verification-status', 'removed-after-5min');\r\n                \r\n                taskLog.reverification = {\r\n                    timestamp: Date.now(),\r\n                    found: false,\r\n                    timeSinceInitial: Date.now() - initialProof.timestamp\r\n                };\r\n                \r\n                box.innerHTML = `\r\n                    <div class=\"error-explanation-box\">\r\n                        <h4>\u274c Comment Was Removed by Reddit<\/h4>\r\n                        <p><strong>Your comment was removed by Reddit within 5 minutes.<\/strong><\/p>\r\n                        <p>This usually means:<\/p>\r\n                        <ul style=\"margin: 10px 0; padding-left: 20px;\">\r\n                            <li>Your account triggered Reddit's spam filter on this subreddit<\/li>\r\n                            <li>The post has strict AutoModerator rules<\/li>\r\n                            <li>Too many similar comments were posted recently on this thread<\/li>\r\n                        <\/ul>\r\n                        <h4 style=\"margin-top: 15px;\">\ud83d\udca1 Solution<\/h4>\r\n                        <p><strong>Go back and choose a DIFFERENT post from the list.<\/strong> Some subreddits are stricter than others.<\/p>\r\n                        <p style=\"font-size: 0.75rem; color: #666; margin-top: 10px;\">\r\n                            <i>Verified at ${new Date(initialProof.timestamp).toLocaleTimeString()}, removed before ${new Date().toLocaleTimeString()}<\/i>\r\n                        <\/p>\r\n                    <\/div>\r\n                `;\r\n                \r\n                \/\/ Bloquer la progression\r\n                document.getElementById('confirm-zone').classList.add('hidden');\r\n                \r\n                \/\/ \ud83d\udd0a Play error sound for removed comment\r\n                if (typeof playSound === 'function') playSound('error');\r\n                \r\n            } else {\r\n                \/\/ \u2705 COMMENTAIRE TOUJOURS L\u00c0 - SUCC\u00c8S\r\n                verifStepDiv.setAttribute('data-verification-status', 'success');\r\n                verifiedData = found.data;\r\n                \r\n                taskLog.verifiedPublicComment = {\r\n                    author: verifiedData.author,\r\n                    body: verifiedData.body,\r\n                    permalink: 'https:\/\/www.reddit.com' + verifiedData.permalink,\r\n                    id: verifiedData.id,\r\n                    created_utc: verifiedData.created_utc\r\n                };\r\n                \r\n                taskLog.reverification = {\r\n                    timestamp: Date.now(),\r\n                    found: true,\r\n                    timeSinceInitial: Date.now() - initialProof.timestamp\r\n                };\r\n                \r\n                \/\/ \ud83d\udd0a Play success sound for survived comment\r\n                if (typeof playSound === 'function') playSound('success');\r\n                \r\n                box.innerHTML = `\r\n                    <div style=\"border: 2px solid var(--ok); background: #e6f9eb; padding: 20px; border-radius: var(--border-radius);\">\r\n                        <h4 style=\"color: var(--ok); margin: 0 0 15px 0;\">\r\n                            \ud83c\udf89 Perfect! Your Comment Survived!\r\n                        <\/h4>\r\n                        <p style=\"margin: 0 0 10px 0; font-weight: 600;\">Your comment is <strong>publicly visible<\/strong> and has survived Reddit's spam filters.<\/p>\r\n                        <div style=\"background: #fff; padding: 12px; border-radius: 8px; margin-top: 15px; font-size: 0.8rem;\">\r\n                            <p style=\"margin: 0;\">\u2705 <strong>Initial verification:<\/strong> ${new Date(initialProof.timestamp).toLocaleTimeString()}<\/p>\r\n                            <p style=\"margin: 8px 0 0 0;\">\u2705 <strong>Re-verified after 5 minutes:<\/strong> ${new Date().toLocaleTimeString()}<\/p>\r\n                        <\/div>\r\n                        <div style=\"background: #fff3cd; border: 2px solid #ffc107; border-radius: 8px; padding: 18px; margin-top: 20px;\">\r\n                            <p style=\"margin: 0 0 12px 0; font-weight: 700; color: #856404; font-size: 1rem;\">\r\n                                <i class=\"fa-solid fa-circle-exclamation\"><\/i> <strong>IMPORTANT - NEXT STEPS<\/strong>\r\n                            <\/p>\r\n                            <ol style=\"margin: 0; padding-left: 20px; color: #856404; font-size: 0.9rem; line-height: 1.6;\">\r\n                                <li style=\"margin-bottom: 8px;\"><strong>Click \"Next \u2192 Result\"<\/strong> button below to see the final validation<\/li>\r\n                                <li style=\"margin-bottom: 8px;\"><strong>Take a screenshot<\/strong> of the final result page<\/li>\r\n                                <li style=\"margin-bottom: 0;\"><strong>Submit the screenshot<\/strong> to Microworkers as proof of completion<\/li>\r\n                            <\/ol>\r\n                            <p style=\"margin: 12px 0 0 0; padding: 10px; background: #fff; border-radius: 6px; font-size: 0.8rem; color: #666;\">\r\n                                <i class=\"fa-solid fa-lightbulb\"><\/i> <strong>Note:<\/strong> The task is only complete after you submit the final screenshot to Microworkers.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n                \r\n                \/\/ D\u00e9bloquer le bouton Next\r\n                document.getElementById('confirm-zone').classList.remove('hidden');\r\n            }\r\n            \r\n        } catch (error) {\r\n            console.error('Re-verification failed:', error);\r\n            verifStepDiv.setAttribute('data-verification-status', 'reverify-error');\r\n            \r\n            box.innerHTML = `\r\n                <div style=\"border: 2px solid var(--danger); background: #ffe6e6; padding: 20px; border-radius: var(--border-radius);\">\r\n                    <h4 style=\"color: var(--danger); margin: 0 0 10px 0;\">\u26a0\ufe0f Re-verification Failed<\/h4>\r\n                    <p>Network error during re-verification. This could be a temporary connection issue.<\/p>\r\n                    <button class=\"btn\" style=\"margin-top: 15px;\" onclick=\"performReverification({postId: '${ids.postId}', commentId: '${ids.commentId}'})\"> \r\n                        <i class=\"fa-solid fa-rotate-right\"><\/i> Try Again\r\n                    <\/button>\r\n                <\/div>\r\n            `;\r\n        }\r\n    }\r\n\r\n    function copyForPrivateWindow(url, btn) {\r\n        navigator.clipboard.writeText(url).then(() => { btn.textContent = '\u2705 Link Copied!'; setTimeout(() => { btn.textContent = 'Copy Link'; }, 2000); }).catch(err => { console.error('Copy failed: ', err); btn.textContent = 'Copy Failed!'; });\r\n    }\r\n    async function verifyComment(url, isFromAutoList = false) {\r\n        if (!isFromAutoList) { document.getElementById('auto-verify-zone').classList.add('hidden'); document.getElementById('manual-verify-zone').classList.remove('hidden'); }\r\n        lastURL = url;\r\n        const ids = extractIds(url);\r\n        const box = document.getElementById('verif');\r\n        document.getElementById('confirm-zone').classList.add('hidden');\r\n        if (!ids.postId || !ids.commentId) { box.innerHTML = '<span class=\"err\">Invalid URL format.<\/span>'; return; }\r\n        \r\n        const MAX_RETRIES = 3;\r\n        const RETRY_DELAY = 2500;\r\n\r\n        for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\r\n            try {\r\n                if (attempt > 1) {\r\n                    box.innerHTML = `<i class=\"fa-solid fa-spinner fa-spin fa-fw\"><\/i> Retrying verification... (${attempt}\/${MAX_RETRIES})`;\r\n                    await new Promise(resolve => setTimeout(resolve, RETRY_DELAY));\r\n                } else {\r\n                    box.innerHTML = `Verifying URL...`;\r\n                }\r\n\r\n                const commentApiUrl = `https:\/\/old.reddit.com\/comments\/${ids.postId}\/_\/${ids.commentId}.json?t=${Date.now()}`;\r\n                const js = await fetchWithProxies(commentApiUrl, AbortSignal.timeout(8000));\r\n                handleVerificationData(js, ids);\r\n                return;\r\n            } catch (error) {\r\n                console.error(`Verify comment attempt ${attempt} failed:`, error);\r\n                if (attempt === MAX_RETRIES) {\r\n                    box.innerHTML = `<span class=\"err\">Comment not found or API error after ${MAX_RETRIES} attempts. Please check the URL and your connection.<\/span>`;\r\n                }\r\n            }\r\n        }\r\n    }\r\n    \r\n    function reloadComment() {\r\n        startAutomaticVerification();\r\n    }\r\n\r\n    function confirm() { goto(4); buildResult(); }\r\n    function triggerConfetti() { confetti({ particleCount: 150, spread: 90, origin: { y: 0.6 } }); }\r\n    function getFeedbackMessage(score, status, critical) {\r\n        if (critical) { return `Score: ${score}\/100. Critical corrections needed.`; }\r\n        if (score === 100) { return `Perfect Score: 100\/100. Excellent work!`; }\r\n        if (score >= 90) { return `Excellent Score: ${score}\/100. Very high quality.`; }\r\n        if (score >= 75) { return `Good Score: ${score}\/100. All important criteria are met.`; }\r\n        return `Score: ${score}\/100. The work is correct but could be improved.`;\r\n    }\r\n\r\n    function buildResult() {\r\n        const resultBox = document.getElementById('result-box');\r\n        if (!redditData || !redditData.createdUTC || !verifiedData) {\r\n            resultBox.innerHTML = `<div class=\"suggestions\"><b>Error: Missing data.<\/b><br><button class=\"btn\" onclick=\"goto(1)\">Return to Step 1<\/button><\/div>`;\r\n            return;\r\n        }\r\n        const d = verifiedData;\r\n        const userOK = redditData.name?.toLowerCase() === d.author.toLowerCase();\r\n        const declaredId = (selectedPost.match(\/\\\/comments\\\/([^\/]+)\/) || [])[1];\r\n        const actualId = (('https:\/\/www.reddit.com' + d.permalink).match(\/\\\/comments\\\/([^\/]+)\/) || [])[1];\r\n        const postOK = declaredId === actualId;\r\n        const allowedButDifferent = !postOK && allowedPosts.some(p => p.postId === actualId);\r\n        const lengthOK = d.body.trim().length >= 80;\r\n        const keywordOK = \/xtreamcube\/i.test(d.body);\r\n        let ageAtComment = Math.floor((d.created_utc - redditData.createdUTC) \/ 86400);\r\n        const ageOK = ageAtComment !== null && ageAtComment >= 45;\r\n        const contentOK = normalizePlain(commentText) === normalizePlain(d.body);\r\n\r\n        const suggestions = [];\r\n        if (!userOK) suggestions.push(\"The Reddit account does not match.\");\r\n        if (!postOK && !allowedButDifferent) suggestions.push(\"The comment is not on an authorized post.\");\r\n        if (!contentOK) suggestions.push(\"The posted content does not match the validated content.\");\r\n        if (!keywordOK) suggestions.push('The keyword \"XtreamCube\" is missing.');\r\n        if (!lengthOK) suggestions.push(\"The comment must be at least 80 characters long.\");\r\n        if (!ageOK) suggestions.push(\"The account was not 45 days old at the time of posting.\");\r\n        \r\n        let score = 0;\r\n        function add(ok, pts) { if (ok) score += pts; }\r\n        add(userOK, 20);\r\n        add(postOK || allowedButDifferent, 20);\r\n        add(contentOK, 25);\r\n        add(keywordOK, 15);\r\n        add(lengthOK, 15);\r\n        add(ageOK, 5);\r\n\r\n        const critical = !userOK || (!postOK && !allowedButDifferent) || !contentOK || !keywordOK || !lengthOK || !ageOK;\r\n        const allGood = !critical;\r\n        \r\n        let status = 'Needs Correction', badgeClass = 'acorriger';\r\n        if (critical) { status = 'Rejected'; badgeClass = 'rejet'; } else if (allGood && score >= 95) { status = 'Perfect'; badgeClass = 'parfait'; } else if (allGood) { status = 'Correct'; badgeClass = 'correct'; }\r\n        lastResultContext = { allGood, status, score, critical };\r\n        \r\n        \/\/ \ud83d\udd0a Play sound based on final result\r\n        if (typeof playSound === 'function') {\r\n            if (allGood && score >= 95) {\r\n                playSound('success');\r\n            } else if (critical) {\r\n                playSound('error');\r\n            }\r\n        }\r\n        \r\n        taskLog.result = {\r\n            score: score,\r\n            status: status,\r\n            reasons: {\r\n                userMatch: userOK,\r\n                postMatch: postOK || allowedButDifferent,\r\n                contentMatch: contentOK,\r\n                keywordPresent: keywordOK,\r\n                lengthSufficient: lengthOK,\r\n                accountAgeSufficient: ageOK\r\n            }\r\n        };\r\n        taskLog.sessionCompletedAt = new Date().toISOString();\r\n        resultBox.setAttribute('data-final-log', JSON.stringify(taskLog));\r\n        \r\n        resultBox.setAttribute('data-final-score', score);\r\n        resultBox.setAttribute('data-final-status', status);\r\n\r\n        const summaryText = getFeedbackMessage(score, status, critical);\r\n        let html = `<p style=\"font-size:.9rem;\"><b>${summaryText}<\/b> <span class=\"badge ${badgeClass}\">${status}<\/span><\/p><div class=\"scorewrap\"><canvas id=\"score-canvas\" width=\"150\" height=\"150\"><\/canvas><\/div><div class=\"result-grid\">`;\r\n        \r\n        const userHelp = `The author is '${d.author}', but you used '${redditData.name}' in Step 1.`;\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${userOK ? '\u2705' : '\u274c'}<\/span><h4>User<\/h4>${!userOK ? `<span class=\"tooltip-icon\" title=\"${userHelp}\">?<\/span>` : ''}<\/div><div class=\"result-card-details\">Declared: <b>${safeHTML(redditData.name || '')}<\/b><br>Actual: <b>${safeHTML(d.author)}<\/b><\/div><\/div>`;\r\n        \r\n        let contentDetails;\r\n        if (contentOK) {\r\n            contentDetails = `<div class=\"result-card-details\">Status: <b class=\"status-ok\">Matches<\/b><\/div>`;\r\n        } else {\r\n            contentDetails = `<div class=\"result-card-details\">\r\n                Status: <b class=\"status-bad\">Does not match<\/b>\r\n                <div style=\"margin-top:8px;\">\r\n                    <b>Expected:<\/b><blockquote style=\"font-style:normal; font-size: 0.75rem; background: #fffbe6; border-color: var(--warn); margin: 4px 0; word-break: break-word;\">${safeHTML(commentText)}<\/blockquote>\r\n                    <b>Posted:<\/b><blockquote style=\"font-style:normal; font-size: 0.75rem; background: #ffe6e6; border-color: var(--danger); margin: 4px 0; word-break: break-word;\">${safeHTML(d.body)}<\/blockquote>\r\n                <\/div>\r\n            <\/div>`;\r\n        }\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${contentOK ? '\u2705' : '\u274c'}<\/span><h4>Content Match<\/h4><\/div>${contentDetails}<\/div>`;\r\n        \r\n        const postStatus = postOK ? 'Matches' : (allowedButDifferent ? 'Other Allowed' : 'Not Allowed');\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${postOK || allowedButDifferent ? '\u2705' : '\u274c'}<\/span><h4>Post<\/h4><\/div><div class=\"result-card-details\">Status: <b class=\"${postOK || allowedButDifferent ? 'status-ok' : 'status-bad'}\">${postStatus}<\/b><br><a href=\"https:\/\/www.reddit.com${d.permalink}\" target=\"_blank\">View Post<\/a><\/div><\/div>`;\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${lengthOK ? '\u2705' : '\u274c'}<\/span><h4>Length \u2265 80<\/h4><\/div><div class=\"result-card-details\">Your comment: <b>${d.body.trim().length} characters<\/b>.<\/div><\/div>`;\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${keywordOK ? '\u2705' : '\u274c'}<\/span><h4>Keyword \"XtreamCube\"<\/h4><\/div><div class=\"result-card-details\">Status: <b class=\"${keywordOK ? 'status-ok' : 'status-bad'}\">${keywordOK ? 'Present' : 'Missing'}<\/b><\/div><\/div>`;\r\n        html += `<div class=\"result-card\"><div class=\"result-card-header\"><span class=\"result-card-icon\">${ageOK ? '\u2705' : '\u274c'}<\/span><h4>Account Age<\/h4><\/div><div class=\"result-card-details\">Account age at post: <b>${ageAtComment !== null ? ageAtComment + ' days' : 'N\/A'}<\/b>.<\/div><\/div>`;\r\n        html += `<\/div>`;\r\n\r\n        if (allGood) { html += `<div class=\"ok-hint\">\u2705 All checks passed. <b>Take a screenshot of this page<\/b> and submit it as proof.<\/div>`; }\r\n        if (suggestions.length) { html += `<div class=\"suggestions\"><b>To correct:<\/b><ul style=\"margin:6px 0 0 18px;padding:0;\">${suggestions.map(s => '<li>' + safeHTML(s) + '<\/li>').join('')}<\/ul><\/div>`; }\r\n        const watermarkText = `${safeHTML(mwUser)} - ${new Date().toLocaleString('en-US')}`;\r\n        html += `<div id=\"watermark\">${watermarkText}<\/div>`;\r\n        resultBox.innerHTML = html;\r\n        document.getElementById('back-fix').classList.toggle('hidden', allGood);\r\n        \r\n        setTimeout(() => drawDonut(score), 50);\r\n\r\n        if (score >= 95 && allGood) { setTimeout(triggerConfetti, 500); }\r\n    }\r\n    \r\n    function drawDonut(score) {\r\n        const cvs = document.getElementById('score-canvas');\r\n        if (!cvs) return;\r\n        const ctx = cvs.getContext('2d');\r\n        const radius = 65, centerX = cvs.width \/ 2, centerY = cvs.height \/ 2;\r\n        ctx.lineWidth = 16;\r\n\r\n        const computedStyles = getComputedStyle(document.documentElement);\r\n        const okColor = computedStyles.getPropertyValue('--ok').trim();\r\n        const warnColor = computedStyles.getPropertyValue('--warn').trim();\r\n        const dangerColor = computedStyles.getPropertyValue('--danger').trim();\r\n        const scoreColor = score >= 75 ? okColor : (score >= 50 ? warnColor : dangerColor);\r\n        \r\n        let currentScore = 0;\r\n        const animationDuration = 1000;\r\n        let startTime = null;\r\n\r\n        function animate(timestamp) {\r\n            if (!startTime) startTime = timestamp;\r\n            const progress = timestamp - startTime;\r\n            const scoreFraction = Math.min(progress \/ animationDuration, 1);\r\n            currentScore = Math.floor(score * scoreFraction);\r\n            ctx.clearRect(0, 0, cvs.width, cvs.height);\r\n            \r\n            ctx.lineCap = 'round';\r\n            ctx.strokeStyle = '#e9eef3';\r\n            ctx.beginPath();\r\n            ctx.arc(centerX, centerY, radius, 0, Math.PI * 2);\r\n            ctx.stroke();\r\n\r\n            if (currentScore > 0) {\r\n                const endAngle = -Math.PI \/ 2 + (Math.PI * 2 * (currentScore \/ 100));\r\n                ctx.strokeStyle = scoreColor;\r\n                ctx.beginPath();\r\n                ctx.arc(centerX, centerY, radius, -Math.PI \/ 2, endAngle);\r\n                ctx.stroke();\r\n            }\r\n\r\n            ctx.fillStyle = '#222';\r\n            ctx.font = 'bold 24px Inter,Arial';\r\n            ctx.textAlign = 'center';\r\n            ctx.textBaseline = 'middle';\r\n            ctx.fillText(currentScore, centerX, centerY - 8);\r\n            ctx.font = '12px Inter,Arial';\r\n            ctx.fillStyle = '#666';\r\n            ctx.fillText('\/ 100', centerX, centerY + 15);\r\n            \r\n            if (progress < animationDuration) { requestAnimationFrame(animate); }\r\n        }\r\n        requestAnimationFrame(animate);\r\n    }\r\n    \r\n    function adoptRealPost() { if (threadInfo?.permalink) { selectedPost = 'https:\/\/www.reddit.com' + threadInfo.permalink; buildResult(); } }\r\n    \r\n    function finishJob() {\r\n        if (!lastResultContext) { alert('No result available.'); return; }\r\n        const passed = lastResultContext.allGood;\r\n        const final = document.getElementById('final-page');\r\n        const wizard = document.getElementById('wizard');\r\n        wizard.classList.add('hidden');\r\n        final.classList.remove('hidden');\r\n        final.innerHTML = `<h1 class=\"${passed ? 'final-pass' : 'final-fail'}\">${passed ? 'SUCCESS \u2705' : 'FAILURE \u274c'}<\/h1><p style=\"font-size:1rem;\">${passed ? 'All checks have passed. <b>Make sure you have taken a screenshot.<\/b>' : 'The submission is not valid \u2013 please correct the issues.'}<\/p><p style=\"font-size:.8rem;\">Score: <b>${lastResultContext.score}\/100<\/b> \u2013 Status: <b>${lastResultContext.status}<\/b><\/p><div style=\"margin-top:20px;\"><button class=\"btn\" onclick=\"location.reload()\"><i class=\"fa-solid fa-rotate-right\"><\/i> Start Over<\/button><\/div>`;\r\n    }\r\n    function setupFAQ() {\r\n        const modal = document.getElementById('faq-modal');\r\n        const btn = document.getElementById('faq-button');\r\n        const span = document.getElementById('faq-close');\r\n        if (!modal || !btn || !span) { console.error(\"FAQ elements not found.\"); return; }\r\n        btn.addEventListener('click', () => { modal.style.display = \"block\"; });\r\n        span.addEventListener('click', () => { modal.style.display = \"none\"; });\r\n        window.addEventListener('click', (event) => { if (event.target == modal) { modal.style.display = \"none\"; } });\r\n    }\r\n    \r\n    window.addEventListener('DOMContentLoaded', () => {\r\n        document.querySelectorAll('.example').forEach(e => exampleTexts.push(e.textContent));\r\n        \r\n        \/\/ Remplir le panel flottant avec les exemples\r\n        const floatingList = document.getElementById('floating-examples-list');\r\n        if (floatingList) {\r\n            document.querySelectorAll('#examples .example').forEach(example => {\r\n                const clone = example.cloneNode(true);\r\n                clone.onclick = () => {\r\n                    const commentInput = document.getElementById('comment');\r\n                    if (commentInput && !commentInput.readOnly) {\r\n                        commentInput.value = clone.textContent.trim();\r\n                        checkCommentRealtime();\r\n                        runQualityLive();\r\n                        document.getElementById('msg3').innerHTML = '<span class=\"ok\">Example copied \u2013 please customize it before validating.<\/span>';\r\n                    }\r\n                };\r\n                floatingList.appendChild(clone);\r\n            });\r\n        }\r\n        \r\n        const navButton3 = document.getElementById('nav3');\r\n        if(navButton3) navButton3.remove();\r\n        const navButton2 = document.getElementById('nav2');\r\n        if(navButton2) navButton2.onclick = () => goto(2);\r\n\r\n        initApp();\r\n        render();\r\n        resetIdle();\r\n        checkCommentRealtime();\r\n        setupFAQ();\r\n    });\r\n<\/script>\r\n\r\n<script>\r\n(function() {\r\n    'use strict';\r\n\r\n    \/\/ 1. Initialisation de la session et du buffer\r\n    const SESSION_ID = 'sid_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\r\n    const STORAGE_KEY = 'xcw_event_buffer';\r\n    const MAX_BUFFER_SIZE_MB = 2;\r\n    let eventCounter = 0;\r\n\r\n    try {\r\n        let existingBuffer = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');\r\n        window.XCW_EVENT_BUFFER = Array.isArray(existingBuffer) ? existingBuffer : [];\r\n    } catch (e) {\r\n        window.XCW_EVENT_BUFFER = [];\r\n    }\r\n\r\n    function pushEvent(type, payload = {}) {\r\n        const event = {\r\n            id: `eid_${eventCounter++}`,\r\n            sessionId: SESSION_ID,\r\n            timestamp: new Date().toISOString(),\r\n            type: type,\r\n            payload: payload\r\n        };\r\n        window.XCW_EVENT_BUFFER.push(event);\r\n        try {\r\n            let jsonString = JSON.stringify(window.XCW_EVENT_BUFFER);\r\n            if (jsonString.length > MAX_BUFFER_SIZE_MB * 1024 * 1024) {\r\n                const tenPercent = Math.floor(window.XCW_EVENT_BUFFER.length * 0.1);\r\n                window.XCW_EVENT_BUFFER.splice(0, tenPercent);\r\n                jsonString = JSON.stringify(window.XCW_EVENT_BUFFER);\r\n            }\r\n            localStorage.setItem(STORAGE_KEY, jsonString);\r\n        } catch (e) {\r\n            console.error(\"XCW Logger: Failed to persist event buffer.\", e);\r\n        }\r\n    }\r\n\r\n    \/\/ 2. Listeners globaux\r\n    document.addEventListener('click', (e) => {\r\n        const target = e.target.closest('[data-xcw-event]');\r\n        if (!target) return;\r\n\r\n        const eventType = target.getAttribute('data-xcw-event');\r\n        const payload = {\r\n            targetId: target.id,\r\n            targetTag: target.tagName,\r\n            textContent: target.textContent.trim().substring(0, 50)\r\n        };\r\n        \r\n        if (eventType === 'post_open_click' || eventType === 'post_select_click') {\r\n            const postEl = target.closest('.post');\r\n            if (postEl) {\r\n                payload.post_title = postEl.querySelector('b')?.textContent || '';\r\n                payload.post_url = postEl.querySelector('small')?.textContent || '';\r\n            }\r\n        }\r\n        \r\n        pushEvent(eventType, payload);\r\n    }, true);\r\n\r\n    document.addEventListener('input', (e) => {\r\n        const target = e.target;\r\n        const fieldName = target.getAttribute('data-xcw-field');\r\n        if (!fieldName) return;\r\n        \r\n        const payload = {\r\n            field: fieldName,\r\n            length: target.value.length\r\n        };\r\n\r\n        if (fieldName === 'comment_text' && typeof readability === 'function') {\r\n            payload.keywordOK = \/xtreamcube\/i.test(target.value);\r\n            payload.readability = readability(target.value).toFixed(1);\r\n        }\r\n        pushEvent('field_change', payload);\r\n    }, true);\r\n\r\n    \/\/ 3. MutationObserver\r\n    const observer = new MutationObserver(mutations => {\r\n        const snapshots = new Map();\r\n        mutations.forEach(mutation => {\r\n            const target = mutation.target.closest('[data-xcw-observe=\"mutations\"]');\r\n            if (target) {\r\n                const snapshotName = target.getAttribute('data-xcw-snapshot');\r\n                if (!snapshots.has(snapshotName)) {\r\n                    snapshots.set(snapshotName, (target.textContent || '').replace(\/\\s+\/g, ' ').trim().substring(0, 250));\r\n                }\r\n            }\r\n        });\r\n        snapshots.forEach((text, name) => {\r\n            pushEvent('snapshot_mutation', { zone: name, text_snapshot: text });\r\n        });\r\n    });\r\n\r\n    \/\/ 4. Wrapper Fetch\r\n    const originalFetch = window.fetch;\r\n    const trackedUrls = ['reddit.com', 'corsproxy.io', 'allorigins.win', 'iptv.directory\/proxy.php', 'n8n.srv749745.hstgr.cloud', 'gist.githubusercontent.com'];\r\n    window.fetch = function(...args) {\r\n        const url = args[0] instanceof Request ? args[0].url : args[0];\r\n        if (trackedUrls.some(trackedUrl => url.includes(trackedUrl))) {\r\n            pushEvent('fetch_try', { url });\r\n            return originalFetch.apply(this, args)\r\n                .then(response => {\r\n                    const eventType = response.ok ? 'fetch_ok' : 'fetch_error';\r\n                    pushEvent(eventType, { url, status: response.status, ok: response.ok });\r\n                    return response;\r\n                })\r\n                .catch(error => {\r\n                    pushEvent('fetch_error', { url, error: error.message });\r\n                    throw error;\r\n                });\r\n        }\r\n        return originalFetch.apply(this, args);\r\n    };\r\n\r\n    \/\/ 5. & 6. Cycle de vie et Patching des fonctions\r\n    function wrapFunction(obj, funcName, afterCallback) {\r\n        if (typeof obj[funcName] !== 'function') return;\r\n        const originalFunc = obj[funcName];\r\n        obj[funcName] = function(...args) {\r\n            const result = originalFunc.apply(this, args);\r\n            try {\r\n                afterCallback(result, args);\r\n            } catch (e) {\r\n                console.error(`XCW Logger: Error in after-callback for ${funcName}`, e);\r\n            }\r\n            return result;\r\n        };\r\n    }\r\n    \r\n    document.addEventListener('DOMContentLoaded', () => {\r\n        \/\/ Initialize example texts for quality check\r\n        document.querySelectorAll('.example').forEach(ex => {\r\n            exampleTexts.push(ex.textContent.trim());\r\n        });\r\n        \r\n        pushEvent('page_loaded', { userAgent: navigator.userAgent });\r\n\r\n        document.querySelectorAll('[data-xcw-observe=\"mutations\"]').forEach(el => {\r\n            observer.observe(el, { childList: true, subtree: true, characterData: true, attributes: true });\r\n        });\r\n\r\n        wrapFunction(window, 'goto', (result, args) => {\r\n            pushEvent('navigate', { from: current, to: args[0] });\r\n        });\r\n        \r\n        wrapFunction(window, 'buildResult', () => {\r\n             pushEvent('result_built', { score: lastResultContext.score, status: lastResultContext.status, isCritical: lastResultContext.critical });\r\n        });\r\n\r\n        wrapFunction(window, 'finishJob', () => {\r\n             pushEvent('finish_job_clicked');\r\n        });\r\n        \r\n        const originalSetTimeout = window.setTimeout;\r\n        window.setTimeout = function(callback, delay, ...args) {\r\n            if (delay === 9 * 60 * 1000) {\r\n                const originalCallback = callback;\r\n                callback = function() {\r\n                    pushEvent('idle_warning');\r\n                    originalCallback();\r\n                };\r\n            } else if (delay === 10 * 60 * 1000) {\r\n                const originalCallback = callback;\r\n                callback = function() {\r\n                    pushEvent('idle_timeout');\r\n                    originalCallback();\r\n                };\r\n            }\r\n            return originalSetTimeout(callback, delay, ...args);\r\n        };\r\n    });\r\n\r\n    window.addEventListener('beforeunload', () => {\r\n        pushEvent('page_unload');\r\n    });\r\n\r\n})();\r\n<\/script>\r\n\r\n<script>\r\n\/\/ ========== SOUND EFFECTS SYSTEM ==========\r\nconst audioContext = new (window.AudioContext || window.webkitAudioContext)();\r\n\r\nfunction playSound(type) {\r\n    try {\r\n        const oscillator = audioContext.createOscillator();\r\n        const gainNode = audioContext.createGain();\r\n        \r\n        oscillator.connect(gainNode);\r\n        gainNode.connect(audioContext.destination);\r\n        \r\n        if (type === 'success') {\r\n            \/\/ Son positif (do-mi-sol)\r\n            oscillator.frequency.setValueAtTime(523.25, audioContext.currentTime);\r\n            oscillator.frequency.setValueAtTime(659.25, audioContext.currentTime + 0.1);\r\n            oscillator.frequency.setValueAtTime(783.99, audioContext.currentTime + 0.2);\r\n            oscillator.type = 'sine';\r\n            gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);\r\n            gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.4);\r\n            oscillator.start(audioContext.currentTime);\r\n            oscillator.stop(audioContext.currentTime + 0.4);\r\n        } \r\n        else if (type === 'error') {\r\n            \/\/ Son n\u00e9gatif (descending)\r\n            oscillator.frequency.setValueAtTime(400, audioContext.currentTime);\r\n            oscillator.frequency.exponentialRampToValueAtTime(200, audioContext.currentTime + 0.3);\r\n            oscillator.type = 'sawtooth';\r\n            gainNode.gain.setValueAtTime(0.2, audioContext.currentTime);\r\n            gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.3);\r\n            oscillator.start(audioContext.currentTime);\r\n            oscillator.stop(audioContext.currentTime + 0.3);\r\n        }\r\n        else if (type === 'notification') {\r\n            \/\/ Son notification (deux bips courts)\r\n            oscillator.frequency.setValueAtTime(800, audioContext.currentTime);\r\n            oscillator.type = 'sine';\r\n            gainNode.gain.setValueAtTime(0.2, audioContext.currentTime);\r\n            gainNode.gain.setValueAtTime(0, audioContext.currentTime + 0.1);\r\n            gainNode.gain.setValueAtTime(0.2, audioContext.currentTime + 0.15);\r\n            gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.25);\r\n            oscillator.start(audioContext.currentTime);\r\n            oscillator.stop(audioContext.currentTime + 0.25);\r\n        }\r\n    } catch (error) {\r\n        console.error('Sound playback error:', error);\r\n    }\r\n}\r\n\r\n\/\/ ========== SCROLL INDICATOR SYSTEM ==========\r\nconst scrollIndicator = document.getElementById('scroll-indicator');\r\n\r\nfunction showScrollIndicator() {\r\n    if (scrollIndicator) scrollIndicator.classList.add('visible');\r\n}\r\n\r\nfunction hideScrollIndicator() {\r\n    if (scrollIndicator) scrollIndicator.classList.remove('visible');\r\n}\r\n\r\nlet scrollTimeout;\r\nwindow.addEventListener('scroll', () => {\r\n    clearTimeout(scrollTimeout);\r\n    \r\n    scrollTimeout = setTimeout(() => {\r\n        const scrolledToBottom = (window.innerHeight + window.scrollY) >= (document.body.scrollHeight - 100);\r\n        \r\n        if (scrolledToBottom) {\r\n            hideScrollIndicator();\r\n        } else {\r\n            const hasMoreContent = (document.body.scrollHeight - window.scrollY - window.innerHeight) > 300;\r\n            if (hasMoreContent) {\r\n                showScrollIndicator();\r\n            }\r\n        }\r\n    }, 100);\r\n});\r\n\r\n\/\/ Initial check on page load\r\nwindow.addEventListener('DOMContentLoaded', () => {\r\n    setTimeout(() => {\r\n        const hasMoreContent = (document.body.scrollHeight - window.scrollY - window.innerHeight) > 300;\r\n        if (hasMoreContent) {\r\n            showScrollIndicator();\r\n        }\r\n    }, 1000);\r\n});\r\n<\/script>\r\n\r\n<!-- Scroll Indicator (Fixed) -->\r\n<div class=\"scroll-indicator\" id=\"scroll-indicator\">\r\n    <i class=\"fa-solid fa-arrow-down\"><\/i>\r\n    <span>Scroll down to continue<\/span>\r\n<\/div>\r\n\r\n<\/body>\r\n<\/html>\r\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>Microworkers Reddit Success Wizard Reddit Success Wizard Loading mission data&#8230; Preparing your mission&#8230; First, log in to Reddit in another tab Then copy your username or profile URL and paste it below Enter Your Reddit Username Account must be 45+ days old with 50+ karma Log in to Microworkers in another tab Find your username [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-206","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/pages\/206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":689,"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/pages\/206\/revisions"}],"predecessor-version":[{"id":1925,"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/pages\/206\/revisions\/1925"}],"wp:attachment":[{"href":"https:\/\/iptv.directory\/index.php\/wp-json\/wp\/v2\/media?parent=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}