{
    "meta": {
        "tool": "Pré-audit RGAA / WCAG PHP",
        "version": "2.0.0-mobile",
        "generated_at": "2026-06-08T12:10:05+02:00",
        "project_name": "Savoirsetculture",
        "start_url": "https://savoirsetculture.fr",
        "max_pages": 5,
        "include_manual": true,
        "note": "Score indicatif basé sur des tests automatiques. Un audit RGAA/WCAG officiel nécessite une validation humaine."
    },
    "summary": {
        "pages_audited": 5,
        "score": 68,
        "issues_total": 80,
        "critical": 7,
        "major": 3,
        "minor": 50,
        "manual": 20,
        "top_rules": {
            "TARGET_BLANK_NO_NOOPENER": 35,
            "FORM_LABEL_MISSING": 7,
            "IMG_ALT_GENERIC": 5,
            "SKIP_LINK_MISSING": 5,
            "MANUAL_CONTRAST": 5,
            "MANUAL_KEYBOARD": 5,
            "MANUAL_MOBILE_ZOOM_REFLOW": 5,
            "MANUAL_RESTITUTION": 5
        }
    },
    "pages": [
        {
            "url": "https://savoirsetculture.fr",
            "title": "SavoirsetCulture.fr",
            "http_code": 200,
            "score": 82,
            "issues_count": 13,
            "issues": [
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "IMG_ALT_GENERIC",
                    "rgaa": "RGAA 1.3",
                    "wcag": "WCAG 1.1.1",
                    "message": "Alternative d’image probablement trop générique : « Logo ».",
                    "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
                    "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
                    "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
                    "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > p.small > a",
                    "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > footer.site-footer > div.container > div.text-center > a",
                    "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "SKIP_LINK_MISSING",
                    "rgaa": "RGAA 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun lien d’évitement vers le contenu principal détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_KEYBOARD",
                    "rgaa": "RGAA 7.3 / 10.13 / 12.8",
                    "wcag": "WCAG 2.1.1 / 2.4.7",
                    "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_CONTRAST",
                    "rgaa": "RGAA 3.2 / 3.3",
                    "wcag": "WCAG 1.4.3 / 1.4.11",
                    "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_RESTITUTION",
                    "rgaa": "RGAA transversal",
                    "wcag": "WCAG transversal",
                    "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
                    "rgaa": "RGAA 10.4 / 10.11",
                    "wcag": "WCAG 1.4.4 / 1.4.10",
                    "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester sur mobile et dans les outils responsive du navigateur."
                }
            ]
        },
        {
            "url": "https://savoirsetculture.fr/blog.php",
            "title": "Blog | SavoirsetCulture.fr",
            "http_code": 200,
            "score": 74,
            "issues_count": 16,
            "issues": [
                {
                    "severity": "major",
                    "status": "failed",
                    "rule": "LANDMARK_MAIN_MISSING",
                    "rgaa": "RGAA 12.6 / 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "IMG_ALT_GENERIC",
                    "rgaa": "RGAA 1.3",
                    "wcag": "WCAG 1.1.1",
                    "message": "Alternative d’image probablement trop générique : « Logo ».",
                    "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
                    "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
                    "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
                    "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "LINK_EMPTY_HREF",
                    "rgaa": "RGAA 6.1 / 7.1",
                    "wcag": "WCAG 2.4.4 / 4.1.2",
                    "message": "Lien avec destination vide ou “#”.",
                    "selector": "a#modeGrille",
                    "snippet": "<a id=\"modeGrille\" href=\"#\" class=\"btn btn-outline-primary\" title=\"Grille\" aria-pressed=\"false\"> <i class=\"fa-solid fa-grip\"></i></a>",
                    "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "LINK_EMPTY_HREF",
                    "rgaa": "RGAA 6.1 / 7.1",
                    "wcag": "WCAG 2.4.4 / 4.1.2",
                    "message": "Lien avec destination vide ou “#”.",
                    "selector": "a#modeListe",
                    "snippet": "<a id=\"modeListe\" href=\"#\" class=\"btn btn-outline-success\" title=\"Liste\" aria-pressed=\"false\"> <i class=\"fa-solid fa-list\"></i></a>",
                    "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > p.small > a",
                    "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > footer.site-footer > div.container > div.text-center > a",
                    "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "SKIP_LINK_MISSING",
                    "rgaa": "RGAA 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun lien d’évitement vers le contenu principal détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_KEYBOARD",
                    "rgaa": "RGAA 7.3 / 10.13 / 12.8",
                    "wcag": "WCAG 2.1.1 / 2.4.7",
                    "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_CONTRAST",
                    "rgaa": "RGAA 3.2 / 3.3",
                    "wcag": "WCAG 1.4.3 / 1.4.11",
                    "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_RESTITUTION",
                    "rgaa": "RGAA transversal",
                    "wcag": "WCAG transversal",
                    "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
                    "rgaa": "RGAA 10.4 / 10.11",
                    "wcag": "WCAG 1.4.4 / 1.4.10",
                    "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester sur mobile et dans les outils responsive du navigateur."
                }
            ]
        },
        {
            "url": "https://savoirsetculture.fr/ephemeride.php",
            "title": "Ephemeride | SavoirsetCulture.fr",
            "http_code": 200,
            "score": 74,
            "issues_count": 16,
            "issues": [
                {
                    "severity": "major",
                    "status": "failed",
                    "rule": "LANDMARK_MAIN_MISSING",
                    "rgaa": "RGAA 12.6 / 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "IMG_ALT_GENERIC",
                    "rgaa": "RGAA 1.3",
                    "wcag": "WCAG 1.1.1",
                    "message": "Alternative d’image probablement trop générique : « Logo ».",
                    "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
                    "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
                    "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
                    "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "LINK_EMPTY_HREF",
                    "rgaa": "RGAA 6.1 / 7.1",
                    "wcag": "WCAG 2.4.4 / 4.1.2",
                    "message": "Lien avec destination vide ou “#”.",
                    "selector": "a#modeGrille",
                    "snippet": "<a id=\"modeGrille\" href=\"#\" class=\"btn btn-outline-primary\" title=\"Grille\" aria-pressed=\"false\"> <i class=\"fa-solid fa-grip\"></i></a>",
                    "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "LINK_EMPTY_HREF",
                    "rgaa": "RGAA 6.1 / 7.1",
                    "wcag": "WCAG 2.4.4 / 4.1.2",
                    "message": "Lien avec destination vide ou “#”.",
                    "selector": "a#modeListe",
                    "snippet": "<a id=\"modeListe\" href=\"#\" class=\"btn btn-outline-success\" title=\"Liste\" aria-pressed=\"false\"> <i class=\"fa-solid fa-list\"></i></a>",
                    "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > p.small > a",
                    "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > footer.site-footer > div.container > div.text-center > a",
                    "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "SKIP_LINK_MISSING",
                    "rgaa": "RGAA 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun lien d’évitement vers le contenu principal détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_KEYBOARD",
                    "rgaa": "RGAA 7.3 / 10.13 / 12.8",
                    "wcag": "WCAG 2.1.1 / 2.4.7",
                    "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_CONTRAST",
                    "rgaa": "RGAA 3.2 / 3.3",
                    "wcag": "WCAG 1.4.3 / 1.4.11",
                    "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_RESTITUTION",
                    "rgaa": "RGAA transversal",
                    "wcag": "WCAG transversal",
                    "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
                    "rgaa": "RGAA 10.4 / 10.11",
                    "wcag": "WCAG 1.4.4 / 1.4.10",
                    "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester sur mobile et dans les outils responsive du navigateur."
                }
            ]
        },
        {
            "url": "https://savoirsetculture.fr/videos.php",
            "title": "Vidéos | SavoirsetCulture.fr",
            "http_code": 200,
            "score": 29,
            "issues_count": 21,
            "issues": [
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable. Le placeholder ne remplace pas un label.",
                    "selector": "input#q",
                    "snippet": "<input type=\"text\" class=\"form-control\" name=\"q\" id=\"q\" value=\"\" placeholder=\"Titre, mots-clés…\" autocomplete=\"off\">",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"plat\" class=\"form-select\" onchange=\"this.form.cat.value=''; this.form.sub.value=''; this.form.submit();\"> <option value=\"\">(toutes)</option> <option value=\"youtube\"> YouTube </option> </select>",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"cat\" class=\"form-select\" onchange=\"this.form.sub.value=''; this.form.submit();\"> <option value=\"\">(toutes)</option> <option value=\"Art et Architecture\"> Art et Architecture </option> <option value=\"Aviation et Espace\"> Aviation et Espace </opt…",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"sub\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"\">(toutes)</option> <option value=\"Architecture et Monuments\"> Architecture et Monuments </option> <option value=\"Aviation\"> Aviation </option>…",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"thematique\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"\">(toutes)</option> <option value=\"L'Impact des Médias\"> L'Impact des Médias </option> <option value=\"L Egypte des Pharaons\"> L Egypte d…",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"sort\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"date_desc\" selected>Plus récentes</option> <option value=\"date_asc\">Plus anciennes</option> <option value=\"title_asc\">Titre A→Z</option> <opti…",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "critical",
                    "status": "failed",
                    "rule": "FORM_LABEL_MISSING",
                    "rgaa": "RGAA 11.1 / 11.2",
                    "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
                    "message": "Champ de formulaire sans étiquette accessible détectable.",
                    "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
                    "snippet": "<select name=\"per\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"6\">6</option> <option value=\"9\">9</option> <option value=\"12\" selected>12</option> <option value=\"18\">18</option> <option value=\"24\">24</option…",
                    "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ."
                },
                {
                    "severity": "major",
                    "status": "failed",
                    "rule": "LANDMARK_MAIN_MISSING",
                    "rgaa": "RGAA 12.6 / 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "IMG_ALT_GENERIC",
                    "rgaa": "RGAA 1.3",
                    "wcag": "WCAG 1.1.1",
                    "message": "Alternative d’image probablement trop générique : « Logo ».",
                    "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
                    "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
                    "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
                    "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > p.small > a",
                    "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > footer.site-footer > div.container > div.text-center > a",
                    "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "SKIP_LINK_MISSING",
                    "rgaa": "RGAA 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun lien d’évitement vers le contenu principal détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_KEYBOARD",
                    "rgaa": "RGAA 7.3 / 10.13 / 12.8",
                    "wcag": "WCAG 2.1.1 / 2.4.7",
                    "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_CONTRAST",
                    "rgaa": "RGAA 3.2 / 3.3",
                    "wcag": "WCAG 1.4.3 / 1.4.11",
                    "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_RESTITUTION",
                    "rgaa": "RGAA transversal",
                    "wcag": "WCAG transversal",
                    "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
                    "rgaa": "RGAA 10.4 / 10.11",
                    "wcag": "WCAG 1.4.4 / 1.4.10",
                    "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester sur mobile et dans les outils responsive du navigateur."
                }
            ]
        },
        {
            "url": "https://savoirsetculture.fr/favoris.php",
            "title": "Mes Favoris | SavoirsetCulture.fr",
            "http_code": 200,
            "score": 80,
            "issues_count": 14,
            "issues": [
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "IMG_ALT_GENERIC",
                    "rgaa": "RGAA 1.3",
                    "wcag": "WCAG 1.1.1",
                    "message": "Alternative d’image probablement trop générique : « Logo ».",
                    "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
                    "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
                    "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
                    "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > p.small > a",
                    "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
                    "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "TARGET_BLANK_NO_NOOPENER",
                    "rgaa": "Bonne pratique sécurité/UX",
                    "wcag": "Technique transversale",
                    "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
                    "selector": "body > footer.site-footer > div.container > div.text-center > a",
                    "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
                    "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "HEADING_LEVEL_SKIP",
                    "rgaa": "RGAA 9.1",
                    "wcag": "WCAG 1.3.1 / 2.4.6",
                    "message": "Saut de niveau de titre détecté : h1 vers h3.",
                    "selector": "footer.site-footer > div.container > div.row > div.col-md-4 > h3.text-uppercase",
                    "snippet": "Navigation",
                    "recommendation": "Respecter une hiérarchie logique des titres."
                },
                {
                    "severity": "minor",
                    "status": "failed",
                    "rule": "SKIP_LINK_MISSING",
                    "rgaa": "RGAA 12.7",
                    "wcag": "WCAG 2.4.1",
                    "message": "Aucun lien d’évitement vers le contenu principal détecté.",
                    "selector": "body",
                    "snippet": "",
                    "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_KEYBOARD",
                    "rgaa": "RGAA 7.3 / 10.13 / 12.8",
                    "wcag": "WCAG 2.1.1 / 2.4.7",
                    "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_CONTRAST",
                    "rgaa": "RGAA 3.2 / 3.3",
                    "wcag": "WCAG 1.4.3 / 1.4.11",
                    "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_RESTITUTION",
                    "rgaa": "RGAA transversal",
                    "wcag": "WCAG transversal",
                    "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte."
                },
                {
                    "severity": "manual",
                    "status": "manual_check",
                    "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
                    "rgaa": "RGAA 10.4 / 10.11",
                    "wcag": "WCAG 1.4.4 / 1.4.10",
                    "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
                    "selector": "",
                    "snippet": "",
                    "recommendation": "Tester sur mobile et dans les outils responsive du navigateur."
                }
            ]
        }
    ],
    "issues": [
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable. Le placeholder ne remplace pas un label.",
            "selector": "input#q",
            "snippet": "<input type=\"text\" class=\"form-control\" name=\"q\" id=\"q\" value=\"\" placeholder=\"Titre, mots-clés…\" autocomplete=\"off\">",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"plat\" class=\"form-select\" onchange=\"this.form.cat.value=''; this.form.sub.value=''; this.form.submit();\"> <option value=\"\">(toutes)</option> <option value=\"youtube\"> YouTube </option> </select>",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"cat\" class=\"form-select\" onchange=\"this.form.sub.value=''; this.form.submit();\"> <option value=\"\">(toutes)</option> <option value=\"Art et Architecture\"> Art et Architecture </option> <option value=\"Aviation et Espace\"> Aviation et Espace </opt…",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"sub\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"\">(toutes)</option> <option value=\"Architecture et Monuments\"> Architecture et Monuments </option> <option value=\"Aviation\"> Aviation </option>…",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"thematique\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"\">(toutes)</option> <option value=\"L'Impact des Médias\"> L'Impact des Médias </option> <option value=\"L Egypte des Pharaons\"> L Egypte d…",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"sort\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"date_desc\" selected>Plus récentes</option> <option value=\"date_asc\">Plus anciennes</option> <option value=\"title_asc\">Titre A→Z</option> <opti…",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "critical",
            "status": "failed",
            "rule": "FORM_LABEL_MISSING",
            "rgaa": "RGAA 11.1 / 11.2",
            "wcag": "WCAG 1.3.1 / 3.3.2 / 4.1.2",
            "message": "Champ de formulaire sans étiquette accessible détectable.",
            "selector": "div.container > div.container > form.filters > div.col-6 > select.form-select",
            "snippet": "<select name=\"per\" class=\"form-select\" onchange=\"document.getElementById('filtersForm').submit()\"> <option value=\"6\">6</option> <option value=\"9\">9</option> <option value=\"12\" selected>12</option> <option value=\"18\">18</option> <option value=\"24\">24</option…",
            "recommendation": "Associer un <label for=\"id\">, aria-label ou aria-labelledby au champ.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "major",
            "status": "failed",
            "rule": "LANDMARK_MAIN_MISSING",
            "rgaa": "RGAA 12.6 / 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "major",
            "status": "failed",
            "rule": "LANDMARK_MAIN_MISSING",
            "rgaa": "RGAA 12.6 / 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "major",
            "status": "failed",
            "rule": "LANDMARK_MAIN_MISSING",
            "rgaa": "RGAA 12.6 / 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun repère principal <main> ou role=\"main\" détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un conteneur <main id=\"main-content\"> autour du contenu principal.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "HEADING_LEVEL_SKIP",
            "rgaa": "RGAA 9.1",
            "wcag": "WCAG 1.3.1 / 2.4.6",
            "message": "Saut de niveau de titre détecté : h1 vers h3.",
            "selector": "footer.site-footer > div.container > div.row > div.col-md-4 > h3.text-uppercase",
            "snippet": "Navigation",
            "recommendation": "Respecter une hiérarchie logique des titres.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "IMG_ALT_GENERIC",
            "rgaa": "RGAA 1.3",
            "wcag": "WCAG 1.1.1",
            "message": "Alternative d’image probablement trop générique : « Logo ».",
            "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
            "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
            "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "IMG_ALT_GENERIC",
            "rgaa": "RGAA 1.3",
            "wcag": "WCAG 1.1.1",
            "message": "Alternative d’image probablement trop générique : « Logo ».",
            "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
            "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
            "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "IMG_ALT_GENERIC",
            "rgaa": "RGAA 1.3",
            "wcag": "WCAG 1.1.1",
            "message": "Alternative d’image probablement trop générique : « Logo ».",
            "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
            "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
            "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "IMG_ALT_GENERIC",
            "rgaa": "RGAA 1.3",
            "wcag": "WCAG 1.1.1",
            "message": "Alternative d’image probablement trop générique : « Logo ».",
            "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
            "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
            "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "IMG_ALT_GENERIC",
            "rgaa": "RGAA 1.3",
            "wcag": "WCAG 1.1.1",
            "message": "Alternative d’image probablement trop générique : « Logo ».",
            "selector": "body > nav.navbar > div.container > a.navbar-brand > img.me-2",
            "snippet": "<img src=\"assets/img/logo_1762889700.png\" alt=\"Logo\" style=\"height:40px;\" class=\"me-2\">",
            "recommendation": "Décrire l’information portée par l’image, sans commencer par “image de” si inutile.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "LINK_EMPTY_HREF",
            "rgaa": "RGAA 6.1 / 7.1",
            "wcag": "WCAG 2.4.4 / 4.1.2",
            "message": "Lien avec destination vide ou “#”.",
            "selector": "a#modeGrille",
            "snippet": "<a id=\"modeGrille\" href=\"#\" class=\"btn btn-outline-primary\" title=\"Grille\" aria-pressed=\"false\"> <i class=\"fa-solid fa-grip\"></i></a>",
            "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "LINK_EMPTY_HREF",
            "rgaa": "RGAA 6.1 / 7.1",
            "wcag": "WCAG 2.4.4 / 4.1.2",
            "message": "Lien avec destination vide ou “#”.",
            "selector": "a#modeListe",
            "snippet": "<a id=\"modeListe\" href=\"#\" class=\"btn btn-outline-success\" title=\"Liste\" aria-pressed=\"false\"> <i class=\"fa-solid fa-list\"></i></a>",
            "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "LINK_EMPTY_HREF",
            "rgaa": "RGAA 6.1 / 7.1",
            "wcag": "WCAG 2.4.4 / 4.1.2",
            "message": "Lien avec destination vide ou “#”.",
            "selector": "a#modeGrille",
            "snippet": "<a id=\"modeGrille\" href=\"#\" class=\"btn btn-outline-primary\" title=\"Grille\" aria-pressed=\"false\"> <i class=\"fa-solid fa-grip\"></i></a>",
            "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "LINK_EMPTY_HREF",
            "rgaa": "RGAA 6.1 / 7.1",
            "wcag": "WCAG 2.4.4 / 4.1.2",
            "message": "Lien avec destination vide ou “#”.",
            "selector": "a#modeListe",
            "snippet": "<a id=\"modeListe\" href=\"#\" class=\"btn btn-outline-success\" title=\"Liste\" aria-pressed=\"false\"> <i class=\"fa-solid fa-list\"></i></a>",
            "recommendation": "Utiliser un bouton si c’est une action, ou renseigner une destination réelle.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "SKIP_LINK_MISSING",
            "rgaa": "RGAA 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun lien d’évitement vers le contenu principal détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "SKIP_LINK_MISSING",
            "rgaa": "RGAA 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun lien d’évitement vers le contenu principal détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "SKIP_LINK_MISSING",
            "rgaa": "RGAA 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun lien d’évitement vers le contenu principal détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "SKIP_LINK_MISSING",
            "rgaa": "RGAA 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun lien d’évitement vers le contenu principal détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "SKIP_LINK_MISSING",
            "rgaa": "RGAA 12.7",
            "wcag": "WCAG 2.4.1",
            "message": "Aucun lien d’évitement vers le contenu principal détecté.",
            "selector": "body",
            "snippet": "",
            "recommendation": "Ajouter un lien “Aller au contenu principal” visible au focus clavier.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
            "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > p.small > a",
            "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > footer.site-footer > div.container > div.text-center > a",
            "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
            "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > p.small > a",
            "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > footer.site-footer > div.container > div.text-center > a",
            "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
            "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > p.small > a",
            "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > footer.site-footer > div.container > div.text-center > a",
            "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
            "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > p.small > a",
            "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > footer.site-footer > div.container > div.text-center > a",
            "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Facebook\"> <i class=\"fab fa-facebook fa-lg\"></i> <span class=\"d-block d-lg-none small\">Facebook</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "nav.navbar > div.container > div.collapse > div.d-none > a.social-icon",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" class=\"social-icon text-center d-flex flex-column align-items-center\" title=\"Twitter\"> <i class=\"fab fa-twitter fa-lg\"></i> <span class=\"d-block d-lg-none small\">Twitter</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > nav.navbar > div.container > div.collapse > a.social-icon",
            "snippet": "<a href=\"https://savoirsetculture.fr/rss.php\" target=\"_blank\" class=\"social-icon text-center d-none d-lg-flex flex-column align-items-center ms-3\" title=\"Flux RSS\"> <i class=\"fas fa-rss fa-lg\"></i> <span class=\"d-block d-lg-none small\">RSS</span> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > p.small > a",
            "snippet": "<a href=\"https://web20mip.fr\" target=\"_blank\" title=\"Web20mip\">Web20mip</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://www.facebook.com/savoirsetculture.fr\" target=\"_blank\" title=\"Facebook\" class=\"text-light\"> <i class=\"fab fa-facebook fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "div.container > div.row > div.col-md-4 > div.d-flex > a.text-light",
            "snippet": "<a href=\"https://x.com/SavoirsCulture\" target=\"_blank\" title=\"Twitter\" class=\"text-light\"> <i class=\"fab fa-twitter fa-lg\"></i> </a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "minor",
            "status": "failed",
            "rule": "TARGET_BLANK_NO_NOOPENER",
            "rgaa": "Bonne pratique sécurité/UX",
            "wcag": "Technique transversale",
            "message": "Lien target=\"_blank\" sans rel=\"noopener\".",
            "selector": "body > footer.site-footer > div.container > div.text-center > a",
            "snippet": "<a href=\"https://www.web20mip.fr/\" target=\"_blank\" title=\"Web20MIP\">Web20MIP</a>",
            "recommendation": "Ajouter rel=\"noopener noreferrer\" et annoncer l’ouverture dans un nouvel onglet si nécessaire.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_CONTRAST",
            "rgaa": "RGAA 3.2 / 3.3",
            "wcag": "WCAG 1.4.3 / 1.4.11",
            "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
            "selector": "",
            "snippet": "",
            "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_CONTRAST",
            "rgaa": "RGAA 3.2 / 3.3",
            "wcag": "WCAG 1.4.3 / 1.4.11",
            "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
            "selector": "",
            "snippet": "",
            "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_CONTRAST",
            "rgaa": "RGAA 3.2 / 3.3",
            "wcag": "WCAG 1.4.3 / 1.4.11",
            "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
            "selector": "",
            "snippet": "",
            "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_CONTRAST",
            "rgaa": "RGAA 3.2 / 3.3",
            "wcag": "WCAG 1.4.3 / 1.4.11",
            "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
            "selector": "",
            "snippet": "",
            "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_CONTRAST",
            "rgaa": "RGAA 3.2 / 3.3",
            "wcag": "WCAG 1.4.3 / 1.4.11",
            "message": "Test manuel ou navigateur requis : contrastes texte, icônes et états de composants.",
            "selector": "",
            "snippet": "",
            "recommendation": "Vérifier les contrastes via navigateur/outils dédiés car le rendu CSS final dépend du navigateur.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_KEYBOARD",
            "rgaa": "RGAA 7.3 / 10.13 / 12.8",
            "wcag": "WCAG 2.1.1 / 2.4.7",
            "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_KEYBOARD",
            "rgaa": "RGAA 7.3 / 10.13 / 12.8",
            "wcag": "WCAG 2.1.1 / 2.4.7",
            "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_KEYBOARD",
            "rgaa": "RGAA 7.3 / 10.13 / 12.8",
            "wcag": "WCAG 2.1.1 / 2.4.7",
            "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_KEYBOARD",
            "rgaa": "RGAA 7.3 / 10.13 / 12.8",
            "wcag": "WCAG 2.1.1 / 2.4.7",
            "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_KEYBOARD",
            "rgaa": "RGAA 7.3 / 10.13 / 12.8",
            "wcag": "WCAG 2.1.1 / 2.4.7",
            "message": "Test manuel requis : navigation complète au clavier, ordre de focus, visibilité du focus et absence de piège clavier.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester Tab, Shift+Tab, Entrée, Espace, Échap sur tous les composants interactifs.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
            "rgaa": "RGAA 10.4 / 10.11",
            "wcag": "WCAG 1.4.4 / 1.4.10",
            "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester sur mobile et dans les outils responsive du navigateur.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
            "rgaa": "RGAA 10.4 / 10.11",
            "wcag": "WCAG 1.4.4 / 1.4.10",
            "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester sur mobile et dans les outils responsive du navigateur.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
            "rgaa": "RGAA 10.4 / 10.11",
            "wcag": "WCAG 1.4.4 / 1.4.10",
            "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester sur mobile et dans les outils responsive du navigateur.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
            "rgaa": "RGAA 10.4 / 10.11",
            "wcag": "WCAG 1.4.4 / 1.4.10",
            "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester sur mobile et dans les outils responsive du navigateur.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_MOBILE_ZOOM_REFLOW",
            "rgaa": "RGAA 10.4 / 10.11",
            "wcag": "WCAG 1.4.4 / 1.4.10",
            "message": "Test manuel requis : zoom 200 %, reflow 320 px, orientation mobile, absence de défilement horizontal non justifié.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester sur mobile et dans les outils responsive du navigateur.",
            "page": "https://savoirsetculture.fr/favoris.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_RESTITUTION",
            "rgaa": "RGAA transversal",
            "wcag": "WCAG transversal",
            "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte.",
            "page": "https://savoirsetculture.fr"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_RESTITUTION",
            "rgaa": "RGAA transversal",
            "wcag": "WCAG transversal",
            "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte.",
            "page": "https://savoirsetculture.fr/blog.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_RESTITUTION",
            "rgaa": "RGAA transversal",
            "wcag": "WCAG transversal",
            "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte.",
            "page": "https://savoirsetculture.fr/ephemeride.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_RESTITUTION",
            "rgaa": "RGAA transversal",
            "wcag": "WCAG transversal",
            "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte.",
            "page": "https://savoirsetculture.fr/videos.php"
        },
        {
            "severity": "manual",
            "status": "manual_check",
            "rule": "MANUAL_RESTITUTION",
            "rgaa": "RGAA transversal",
            "wcag": "WCAG transversal",
            "message": "Test manuel requis : restitution lecteur d’écran, cohérence des messages d’erreur, compréhension globale.",
            "selector": "",
            "snippet": "",
            "recommendation": "Tester au minimum avec NVDA/Firefox ou VoiceOver/Safari selon le contexte.",
            "page": "https://savoirsetculture.fr/favoris.php"
        }
    ]
}