{"id":228,"date":"2026-06-10T17:02:52","date_gmt":"2026-06-10T17:02:52","guid":{"rendered":"https:\/\/mtrust.global\/?p=228"},"modified":"2026-06-12T15:42:53","modified_gmt":"2026-06-12T15:42:53","slug":"questionaire","status":"publish","type":"post","link":"https:\/\/mtrust.global\/?p=228","title":{"rendered":"Questionaire"},"content":{"rendered":"\n<!-- MTrust AI Cybersecurity Training Profiler - v9 Verified Training Links -->\n<div id=\"mtrust-ai-ffm-profiler\" style=\"max-width:1100px;margin:24px auto;padding:0 12px;font-family:Arial,Helvetica,sans-serif;color:#172033;\">\n  <style>\n    #mtrust-ai-ffm-profiler * { box-sizing: border-box; }\n    #mtrust-ai-ffm-profiler .ffm-hero {\n      background: linear-gradient(135deg,#111827,#1d4ed8);\n      color:#fff;border-radius:22px;padding:30px;margin-bottom:20px;\n      box-shadow:0 14px 36px rgba(15,23,42,.18);\n    }\n    #mtrust-ai-ffm-profiler .ffm-hero h1 {\n      color:#fff;margin:0 0 10px;font-size:clamp(28px,4vw,46px);\n      line-height:1.08;letter-spacing:-.04em;\n    }\n    #mtrust-ai-ffm-profiler .ffm-hero p {\n      color:rgba(255,255,255,.92);margin:0;max-width:880px;\n      font-size:17px;line-height:1.55;\n    }\n    #mtrust-ai-ffm-profiler .ffm-grid {\n      display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);\n      gap:18px;align-items:start;\n    }\n    #mtrust-ai-ffm-profiler .ffm-card {\n      background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:22px;\n      box-shadow:0 10px 28px rgba(15,23,42,.08);margin-bottom:18px;\n    }\n    #mtrust-ai-ffm-profiler h2,\n    #mtrust-ai-ffm-profiler h3,\n    #mtrust-ai-ffm-profiler h4 { color:#172033;margin-top:0;line-height:1.2; }\n    #mtrust-ai-ffm-profiler .ffm-muted { color:#5b6475;font-size:15px;line-height:1.55; }\n    #mtrust-ai-ffm-profiler .ffm-notice {\n      background:#eef2ff;border:1px solid #c7d2fe;color:#1e3a8a;\n      padding:14px 16px;border-radius:14px;margin:16px 0;line-height:1.45;\n    }\n    #mtrust-ai-ffm-profiler .ffm-question {\n      border-bottom:1px solid #e2e8f0;padding:18px 0;\n    }\n    #mtrust-ai-ffm-profiler .ffm-question:last-child { border-bottom:0; }\n    #mtrust-ai-ffm-profiler .ffm-question-title {\n      font-weight:700;margin-bottom:12px;color:#172033;font-size:16px;line-height:1.45;\n    }\n    #mtrust-ai-ffm-profiler .ffm-scale {\n      display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-option {\n      display:flex;align-items:center;gap:7px;min-height:58px;border:1px solid #d9e2ef;\n      border-radius:12px;padding:10px;background:#f8fafc;cursor:pointer;\n      font-size:13px;line-height:1.25;color:#172033;\n    }\n    #mtrust-ai-ffm-profiler .ffm-option:hover { border-color:#2563eb;background:#eef2ff; }\n    #mtrust-ai-ffm-profiler input[type=\"radio\"] { accent-color:#2563eb;flex:0 0 auto; }\n\n    #mtrust-ai-ffm-profiler .ffm-open-question {\n      border:1px solid #bfdbfe;background:#eff6ff;border-radius:16px;\n      padding:18px;margin:20px 0 0;\n    }\n    #mtrust-ai-ffm-profiler .ffm-open-question label {\n      display:block;font-weight:700;margin-bottom:8px;color:#172033;font-size:16px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-open-question textarea {\n      width:100%;min-height:150px;resize:vertical;border:1px solid #cbd5e1;\n      border-radius:12px;padding:12px;font-size:15px;line-height:1.45;\n      font-family:Arial,Helvetica,sans-serif;color:#172033;background:#fff;\n    }\n    #mtrust-ai-ffm-profiler .ffm-open-question textarea:focus {\n      outline:3px solid #dbeafe;border-color:#2563eb;\n    }\n    #mtrust-ai-ffm-profiler .ffm-char-count {\n      text-align:right;color:#64748b;font-size:12px;margin-top:5px;\n    }\n\n    #mtrust-ai-ffm-profiler .ffm-buttons {\n      display:flex;gap:10px;flex-wrap:wrap;margin-top:20px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-btn {\n      border:0;border-radius:12px;padding:13px 18px;font-weight:700;cursor:pointer;\n      font-size:15px;text-decoration:none;display:inline-block;\n    }\n    #mtrust-ai-ffm-profiler .ffm-primary { background:#2563eb;color:#fff; }\n    #mtrust-ai-ffm-profiler .ffm-primary:hover { background:#1d4ed8;color:#fff; }\n    #mtrust-ai-ffm-profiler .ffm-secondary { background:#e8edf6;color:#172033; }\n    #mtrust-ai-ffm-profiler .ffm-secondary:hover { background:#dbe4f0;color:#172033; }\n    #mtrust-ai-ffm-profiler .ffm-pill {\n      display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;\n      margin:4px 4px 4px 0;font-size:13px;font-weight:700;background:#eef2ff;color:#1e3a8a;\n    }\n    #mtrust-ai-ffm-profiler .ffm-low { background:#dcfce7;color:#166534; }\n    #mtrust-ai-ffm-profiler .ffm-med { background:#fef3c7;color:#92400e; }\n    #mtrust-ai-ffm-profiler .ffm-high { background:#fee2e2;color:#991b1b; }\n    #mtrust-ai-ffm-profiler .ffm-error {\n      background:#ffe4e6;color:#9f1239;border:1px solid #fecdd3;border-radius:12px;\n      padding:12px 14px;margin-top:14px;display:none;\n    }\n    #mtrust-ai-ffm-profiler .ffm-scoreline { margin:15px 0; }\n    #mtrust-ai-ffm-profiler .ffm-bar {\n      height:12px;border-radius:999px;overflow:hidden;background:#e8edf6;margin:7px 0 8px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-bar span {\n      display:block;height:100%;width:0;background:#2563eb;transition:width .35s ease;\n    }\n    #mtrust-ai-ffm-profiler .ffm-program-box,\n    #mtrust-ai-ffm-profiler .ffm-feedback-box {\n      border-radius:16px;padding:16px;margin:14px 0 18px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-program-box {\n      border:1px solid #bfdbfe;background:#eff6ff;\n    }\n    #mtrust-ai-ffm-profiler .ffm-feedback-box {\n      border:1px solid #bbf7d0;background:#f0fdf4;\n    }\n    #mtrust-ai-ffm-profiler .ffm-program-box h3,\n    #mtrust-ai-ffm-profiler .ffm-feedback-box h3 { margin:0 0 8px;color:#172033; }\n    #mtrust-ai-ffm-profiler .ffm-program-box p,\n    #mtrust-ai-ffm-profiler .ffm-feedback-box p { margin:7px 0; }\n    #mtrust-ai-ffm-profiler .ffm-feedback-box ul { margin:8px 0 0 20px;padding:0; }\n    #mtrust-ai-ffm-profiler .ffm-module {\n      border:1px solid #e2e8f0;border-radius:14px;padding:15px;background:#f8fafc;margin:12px 0;\n    }\n    #mtrust-ai-ffm-profiler .ffm-module h4 { margin:0 0 8px;font-size:17px; }\n    #mtrust-ai-ffm-profiler .ffm-module p { margin:7px 0; }\n    #mtrust-ai-ffm-profiler .ffm-module ul { margin:8px 0 0 20px;padding:0; }\n    #mtrust-ai-ffm-profiler .ffm-module li { margin-bottom:5px; }\n    #mtrust-ai-ffm-profiler .ffm-links {\n      margin-top:12px;padding:12px;border-radius:12px;background:#fff;border:1px dashed #cbd5e1;\n    }\n    #mtrust-ai-ffm-profiler .ffm-links strong { display:block;margin-bottom:7px;color:#172033; }\n    #mtrust-ai-ffm-profiler .ffm-links ul { margin:0 0 0 20px;padding:0; }\n    #mtrust-ai-ffm-profiler .ffm-links li { margin-bottom:6px; }\n    #mtrust-ai-ffm-profiler .ffm-links a {\n      color:#1d4ed8;text-decoration:underline;font-weight:600;\n    }\n    #mtrust-ai-ffm-profiler .ffm-links a:hover { color:#0f2f86; }\n    #mtrust-ai-ffm-profiler .ffm-link-date {\n      color:#64748b;\n      font-size:12px;\n      font-weight:600;\n      margin-left:6px;\n      white-space:nowrap;\n    }\n    #mtrust-ai-ffm-profiler .ffm-footer {\n      color:#64748b;font-size:13px;line-height:1.5;margin-top:8px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-small-table {\n      width:100%;border-collapse:collapse;margin-top:12px;font-size:14px;\n    }\n    #mtrust-ai-ffm-profiler .ffm-small-table th,\n    #mtrust-ai-ffm-profiler .ffm-small-table td {\n      text-align:left;border-bottom:1px solid #e2e8f0;padding:8px;vertical-align:top;\n    }\n    #mtrust-ai-ffm-profiler .ffm-small-table th { background:#f8fafc;color:#334155; }\n\n    @media (max-width:860px) {\n      #mtrust-ai-ffm-profiler .ffm-grid { grid-template-columns:1fr; }\n      #mtrust-ai-ffm-profiler .ffm-scale { grid-template-columns:1fr; }\n      #mtrust-ai-ffm-profiler .ffm-hero { padding:24px 20px; }\n    }\n    @media print {\n      #mtrust-ai-ffm-profiler .ffm-hero,\n      #mtrust-ai-ffm-profiler #ffm-assessment-card,\n      #mtrust-ai-ffm-profiler .ffm-buttons,\n      #mtrust-ai-ffm-profiler .ffm-side,\n      #mtrust-ai-ffm-profiler .ffm-footer { display:none !important; }\n      #mtrust-ai-ffm-profiler .ffm-card { box-shadow:none;border:0; }\n    }\n  <\/style>\n\n  <section class=\"ffm-hero\">\n    <h1>AI Cybersecurity Training Profiler<\/h1>\n    <p>\n      Five-Factor Model version with open-answer evaluation. The 10 scored questions estimate Big Five patterns,\n      while the open answer adjusts the cybersecurity risk translation and the recommended training program.\n    <\/p>\n  <\/section>\n\n  <div class=\"ffm-grid\">\n    <section id=\"ffm-assessment-card\" class=\"ffm-card\">\n      <h2>Assessment<\/h2>\n      <p class=\"ffm-muted\">\n        This is a Five-Factor Model informed screening tool for cybersecurity training, not a clinical or employment assessment.\n        The trait labels are not shown beside the questions, but the scoring still runs internally.\n      <\/p>\n\n      <div class=\"ffm-notice\">\n        Scale: <strong>1 = strongly disagree<\/strong> and <strong>5 = strongly agree<\/strong>.\n        The open answer is required and is included in the evaluation.\n      <\/div>\n\n      <form id=\"ffm-form\"><\/form>\n\n      <div class=\"ffm-open-question\">\n        <label for=\"ffm-open-answer\">Open question<\/label>\n        <p class=\"ffm-muted\" style=\"margin-top:0;\">\n          In your own words, describe how you normally use AI tools at work, and what cybersecurity risk worries you most.\n        <\/p>\n        <textarea id=\"ffm-open-answer\" maxlength=\"1200\" placeholder=\"Example: I use AI to summarize emails and draft documents. I worry about confidential data, fake messages, wrong AI answers, or AI tools having too much access.\"><\/textarea>\n        <div id=\"ffm-char-count\" class=\"ffm-char-count\">0 \/ 1200<\/div>\n      <\/div>\n\n      <div id=\"ffm-error\" class=\"ffm-error\">Please answer all 10 questions and write a short answer to the open question.<\/div>\n\n      <div class=\"ffm-buttons\">\n        <button type=\"button\" id=\"ffm-calc\" class=\"ffm-btn ffm-primary\">Calculate profile<\/button>\n        <button type=\"button\" id=\"ffm-reset\" class=\"ffm-btn ffm-secondary\">Reset<\/button>\n      <\/div>\n    <\/section>\n\n    <aside class=\"ffm-card ffm-side\">\n      <h2>Evaluation model<\/h2>\n      <p class=\"ffm-muted\">\n        The profile combines Big Five scores with the open answer. Training links are displayed only from sources verified as active on 11 June 2026. The open answer can increase specific cyber-risk areas,\n        such as data leakage, phishing\/deepfakes, AI-agent permissions, credentials, or urgency pressure.\n      <\/p>\n      <div>\n        <span class=\"ffm-pill\">Big Five scoring<\/span>\n        <span class=\"ffm-pill\">Open-answer themes<\/span>\n        <span class=\"ffm-pill\">Risk translation<\/span>\n        <span class=\"ffm-pill\">Training program<\/span>\n      <\/div>\n\n      <table class=\"ffm-small-table\">\n        <tr><th>Open-answer theme<\/th><th>Evaluation impact<\/th><\/tr>\n        <tr><td>Confidential data<\/td><td>Raises data-handling and AI over-trust risk<\/td><\/tr>\n        <tr><td>Phishing \/ deepfake<\/td><td>Raises social-engineering and pressure-response risk<\/td><\/tr>\n        <tr><td>AI agents \/ automation<\/td><td>Raises AI experimentation and permission-control risk<\/td><\/tr>\n        <tr><td>Passwords \/ tokens<\/td><td>Raises process-discipline risk<\/td><\/tr>\n      <\/table>\n    <\/aside>\n  <\/div>\n\n  <section id=\"ffm-results\" class=\"ffm-card\" style=\"display:none;\">\n    <h2>Your result<\/h2>\n    <h3 id=\"ffm-persona\" style=\"font-size:26px;margin-bottom:6px;\"><\/h3>\n    <p id=\"ffm-summary\" class=\"ffm-muted\"><\/p>\n    <div id=\"ffm-badges\"><\/div>\n\n    <h3>Five-Factor scores<\/h3>\n    <div id=\"ffm-scores\"><\/div>\n\n    <h3>Cybersecurity risk translation<\/h3>\n    <div id=\"ffm-risk-scores\"><\/div>\n\n    <h3>Open-answer evaluation<\/h3>\n    <div id=\"ffm-open-feedback\"><\/div>\n\n    <h3>Recommended profile-specific training<\/h3>\n    <div id=\"ffm-program\"><\/div>\n    <p id=\"ffm-training-intro\" class=\"ffm-muted\"><\/p>\n    <div id=\"ffm-modules\"><\/div>\n\n    <div class=\"ffm-buttons\">\n      <button type=\"button\" id=\"ffm-print\" class=\"ffm-btn ffm-primary\">Print \/ Save as PDF<\/button>\n      <button type=\"button\" id=\"ffm-export\" class=\"ffm-btn ffm-secondary\">Export JSON<\/button>\n    <\/div>\n  <\/section>\n\n  <p class=\"ffm-footer\">\n    Suggested use: awareness training, onboarding, team workshops, and pre-training segmentation. Training links were verified active on 11 June 2026. Do not use it for\n    hiring, promotion, disciplinary decisions, medical diagnosis, or clinical psychological profiling.\n  <\/p>\n\n  <noscript>\n    <div class=\"ffm-error\" style=\"display:block;\">JavaScript is required to calculate the profile. If you are using WordPress, use a Custom HTML block or an iframe.<\/div>\n  <\/noscript>\n\n  <script>\n  (function () {\n    const root = document.getElementById(\"mtrust-ai-ffm-profiler\");\n    if (!root) return;\n\n    const scaleLabels = [\n      \"1 Strongly disagree\",\n      \"2 Disagree\",\n      \"3 Neutral\",\n      \"4 Agree\",\n      \"5 Strongly agree\"\n    ];\n\n    const questions = [\n      { id:\"q1\", trait:\"openness\", reverse:false, text:\"I enjoy learning and experimenting with new technologies, including AI tools.\" },\n      { id:\"q2\", trait:\"openness\", reverse:true, text:\"I prefer familiar digital routines and avoid trying new tools unless required.\" },\n      { id:\"q3\", trait:\"conscientiousness\", reverse:false, text:\"I follow security steps carefully, even when they slow me down.\" },\n      { id:\"q4\", trait:\"conscientiousness\", reverse:true, text:\"When I am busy, I sometimes skip verification, documentation, or security checks.\" },\n      { id:\"q5\", trait:\"extraversion\", reverse:false, text:\"I actively discuss suspicious digital situations, AI outputs, or security concerns with others.\" },\n      { id:\"q6\", trait:\"extraversion\", reverse:true, text:\"I prefer to handle suspicious digital situations alone instead of asking others.\" },\n      { id:\"q7\", trait:\"agreeableness\", reverse:false, text:\"I usually assume that requests from colleagues, clients, or partners are made in good faith.\" },\n      { id:\"q8\", trait:\"agreeableness\", reverse:true, text:\"I am comfortable challenging a request when something feels unusual, even if the person is senior or friendly.\" },\n      { id:\"q9\", trait:\"neuroticism\", reverse:false, text:\"Urgent messages, security warnings, or possible incidents make me feel pressured to act quickly.\" },\n      { id:\"q10\", trait:\"neuroticism\", reverse:true, text:\"In urgent digital situations, I stay calm, slow down, and verify facts before acting.\" }\n    ];\n\n    const moduleCatalog = {\n      aiBasics: {\n        title:\"AI cybersecurity foundation\",\n        duration:\"30 min\",\n        why:\"Creates a shared baseline: what AI changes in phishing, data leakage, software use, and decision-making.\",\n        activities:[\"Understand common AI-cyber risks in plain language.\",\"Separate safe AI use cases from unsafe use cases.\",\"Learn when to stop and escalate.\"],\n        links:[\n          {title:\"Google Skills: Introduction to Security in the World of AI\",url:\"https:\/\/www.skills.google\/course_templates\/1146\"},\n          {title:\"NIST AI RMF Playbook\",url:\"https:\/\/airc.nist.gov\/airmf-resources\/playbook\/\"},\n          {title:\"Microsoft Learn: Responsible AI security, governance, risk management, and compliance\",url:\"https:\/\/learn.microsoft.com\/en-us\/training\/modules\/design-responsible-ai-security-governance-risk-management-compliance\/\"}\n        ]\n      },\n      secureInnovation: {\n        title:\"Secure innovation sandbox\",\n        duration:\"45 min\",\n        why:\"High Openness and AI experimentation need safe boundaries: test environments, dummy data, and approved tools.\",\n        activities:[\"Use test accounts, dummy data, and non-production environments.\",\"Create an approved-tool checklist before testing AI.\",\"Document experiments and remove unused connected apps.\"],\n        links:[\n          {title:\"Google Secure AI Framework\",url:\"https:\/\/saif.google\/\"},\n          {title:\"Microsoft Learn: Governance and security for AI agents across the organization\",url:\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/ai-agents\/governance-security-across-organization\"},\n          {title:\"NIST AI RMF Playbook\",url:\"https:\/\/airc.nist.gov\/airmf-resources\/playbook\/\"}\n        ]\n      },\n      promptInjection: {\n        title:\"Prompt injection and malicious AI instructions\",\n        duration:\"45 min\",\n        why:\"Users who work with AI-generated or external content need to recognize hidden instructions and manipulation attempts.\",\n        activities:[\"Compare normal prompts with injected prompts.\",\"Identify instructions that try to bypass rules.\",\"Never let external content override approved instructions.\"],\n        links:[\n          {title:\"PortSwigger Web Security Academy: Web LLM attacks\",url:\"https:\/\/portswigger.net\/web-security\/llm-attacks\"},\n          {title:\"Microsoft Learn: Defend against indirect prompt injection attacks\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/zero-trust\/sfi\/defend-indirect-prompt-injection\"},\n          {title:\"Microsoft Learn: AI red teaming training series\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/ai-red-team\/training\"}\n        ]\n      },\n      safePrompting: {\n        title:\"Safe prompting and confidential-data handling\",\n        duration:\"45 min\",\n        why:\"Reduces leakage of personal, client, legal, financial, or internal business data into AI tools.\",\n        activities:[\"Classify data before using AI: public, internal, confidential, restricted.\",\"Redact names, addresses, secrets, IDs, contracts, and customer information.\",\"Use approved AI tools only for sensitive work.\"],\n        links:[\n          {title:\"Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure\",url:\"https:\/\/learn.microsoft.com\/en-us\/azure\/foundry\/responsible-ai\/openai\/data-privacy\"},\n          {title:\"Google Skills: Introduction to Security in the World of AI\",url:\"https:\/\/www.skills.google\/course_templates\/1146\"},\n          {title:\"Microsoft Learn: Responsible AI security, governance, risk management, and compliance\",url:\"https:\/\/learn.microsoft.com\/en-us\/training\/modules\/design-responsible-ai-security-governance-risk-management-compliance\/\"}\n        ]\n      },\n      credentialSafety: {\n        title:\"Passwords, MFA, and secret handling\",\n        duration:\"40 min\",\n        why:\"Convenience habits can expose accounts, recovery codes, API keys, and internal systems.\",\n        activities:[\"Use a password manager and unique passwords.\",\"Enable MFA, preferably app-based or security-key based.\",\"Never paste secrets, tokens, or recovery codes into AI tools.\"],\n        links:[\n          {title:\"NCSC: Top tips for staying secure online\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/top-tips-for-staying-secure-online\"},\n          {title:\"NCSC: Password managers \u2014 how they help you secure passwords\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/top-tips-for-staying-secure-online\/password-managers\"},\n          {title:\"Microsoft Learn: Microsoft Entra multifactor authentication overview\",url:\"https:\/\/learn.microsoft.com\/en-us\/entra\/identity\/authentication\/concept-mfa-howitworks\"}\n        ]\n      },\n      socialEngineering: {\n        title:\"AI phishing, deepfake, and social-engineering defense\",\n        duration:\"45 min\",\n        why:\"AI makes fake messages, voices, identities, and urgent requests more realistic.\",\n        activities:[\"Spot authority, urgency, secrecy, and helpfulness manipulation.\",\"Verify urgent requests using a second channel.\",\"Practice the pause-check-confirm method.\"],\n        links:[\n          {title:\"NCSC: Phishing \u2014 spot and report scam emails, texts, websites and calls\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/phishing-scams\"},\n          {title:\"Microsoft Learn: AI red teaming training series\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/ai-red-team\/training\"},\n          {title:\"NCSC: Top tips for staying secure online\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/top-tips-for-staying-secure-online\"}\n        ]\n      },\n      calmVerification: {\n        title:\"Calm verification under pressure\",\n        duration:\"35 min\",\n        why:\"Urgent or stressful situations can lead to fast clicks, rushed approvals, or unsafe data sharing.\",\n        activities:[\"Use a 60-second pause before clicking, paying, approving, or sharing data.\",\"Create a verification checklist for urgent messages.\",\"Know when to escalate instead of deciding alone.\"],\n        links:[\n          {title:\"NCSC: Phishing \u2014 spot and report scam emails, texts, websites and calls\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/phishing-scams\"},\n          {title:\"NCSC: Top tips for staying secure online\",url:\"https:\/\/www.ncsc.gov.uk\/collection\/top-tips-for-staying-secure-online\"},\n          {title:\"Microsoft Learn: Responsible AI security, governance, risk management, and compliance\",url:\"https:\/\/learn.microsoft.com\/en-us\/training\/modules\/design-responsible-ai-security-governance-risk-management-compliance\/\"}\n        ]\n      },\n      aiVerification: {\n        title:\"AI output verification and over-trust control\",\n        duration:\"35 min\",\n        why:\"Users need to treat AI as an assistant, not as final authority, especially for legal, technical, financial, or security advice.\",\n        activities:[\"Check sources, dates, assumptions, and evidence.\",\"Never copy AI-generated code, legal text, or security advice without review.\",\"Use peer review for high-impact AI outputs.\"],\n        links:[\n          {title:\"NIST AI RMF Playbook\",url:\"https:\/\/airc.nist.gov\/airmf-resources\/playbook\/\"},\n          {title:\"Microsoft Learn: Responsible AI security, governance, risk management, and compliance\",url:\"https:\/\/learn.microsoft.com\/en-us\/training\/modules\/design-responsible-ai-security-governance-risk-management-compliance\/\"},\n          {title:\"Microsoft Learn: AI red teaming training series\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/ai-red-team\/training\"}\n        ]\n      },\n      agentPermissions: {\n        title:\"AI agents, automation, and permission control\",\n        duration:\"50 min\",\n        why:\"AI tools connected to files, email, calendars, or workflows need least privilege and human approval gates.\",\n        activities:[\"Apply least privilege to AI tools and automations.\",\"Require human approval before sending, deleting, paying, or publishing.\",\"Review logs, connected apps, and delegated permissions regularly.\"],\n        links:[\n          {title:\"Microsoft Learn: Secure autonomous agentic AI systems\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/zero-trust\/sfi\/secure-agentic-systems\"},\n          {title:\"Microsoft Learn: Reduce autonomous agentic AI risk\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/zero-trust\/sfi\/manage-agentic-risk\"},\n          {title:\"Microsoft Learn: Cloud security benchmark \u2014 AI least privilege for agent functions\",url:\"https:\/\/learn.microsoft.com\/en-us\/security\/benchmark\/azure\/mcsb-v2-artificial-intelligence-security\"}\n        ]\n      },\n      policyBasics: {\n        title:\"AI use policy and incident reporting\",\n        duration:\"30 min\",\n        why:\"Clear rules reduce shadow AI, accidental data exposure, and delayed reporting.\",\n        activities:[\"Know which AI tools are approved.\",\"Report suspicious prompts, unusual AI outputs, and data leaks quickly.\",\"Keep screenshots and facts when reporting an incident.\"],\n        links:[\n          {title:\"NIST AI RMF Playbook\",url:\"https:\/\/airc.nist.gov\/airmf-resources\/playbook\/\"},\n          {title:\"Microsoft Learn: Governance and security for AI agents across the organization\",url:\"https:\/\/learn.microsoft.com\/en-us\/azure\/cloud-adoption-framework\/ai-agents\/governance-security-across-organization\"},\n          {title:\"Microsoft Responsible AI principles and practices\",url:\"https:\/\/www.microsoft.com\/en-us\/ai\/responsible-ai\"}\n        ]\n      }\n    };\n\n\n    const trainingPrograms = {\n      openExperimenter:{ title:\"Program A \u2014 Secure AI Explorer\", audience:\"High Openness and\/or AI experimentation themes.\", objective:\"Keep innovation fast, but separate it from confidential data, production systems, and excessive permissions.\", core:[\"secureInnovation\",\"safePrompting\",\"promptInjection\"] },\n      structuredGuardian:{ title:\"Program B \u2014 Policy-Led AI Guardian\", audience:\"High Conscientiousness and process-oriented users.\", objective:\"Use structured AI workflows, verification routines, and incident reporting to support safe adoption.\", core:[\"policyBasics\",\"aiVerification\",\"safePrompting\"] },\n      socialCollaborator:{ title:\"Program C \u2014 Collaborative Social-Engineering Defense\", audience:\"High social trust, collaboration, phishing, impersonation, or deepfake themes.\", objective:\"Reduce AI-enabled phishing, deepfake, impersonation, and authority-pressure risk.\", core:[\"socialEngineering\",\"calmVerification\",\"credentialSafety\"] },\n      pressureSensitive:{ title:\"Program D \u2014 Calm Verification Under Pressure\", audience:\"High pressure sensitivity or open-answer urgency themes.\", objective:\"Prevent panic clicks and rushed decisions through simple verification routines.\", core:[\"calmVerification\",\"socialEngineering\",\"policyBasics\"] },\n      disciplineBuilder:{ title:\"Program E \u2014 Data Discipline & Credential Safety\", audience:\"Lower process discipline or open-answer credential\/data-handling themes.\", objective:\"Build strong habits around data classification, MFA, secrets, and AI-safe workflows.\", core:[\"safePrompting\",\"credentialSafety\",\"policyBasics\"] },\n      automationController:{ title:\"Program F \u2014 AI Agent Permission Controller\", audience:\"Open-answer themes about AI agents, automation, workflow access, files, email, or permissions.\", objective:\"Control AI-agent access, avoid excessive permissions, and require human approval before high-impact actions.\", core:[\"agentPermissions\",\"promptInjection\",\"aiVerification\"] },\n      balancedFoundation:{ title:\"Program G \u2014 Balanced AI Cybersecurity Foundation\", audience:\"Balanced Big Five scores with no dominant open-answer risk theme.\", objective:\"Cover the main AI-cyber risks without over-specializing.\", core:[\"aiBasics\",\"aiVerification\",\"promptInjection\"] }\n    };\n\n    const LINK_VERIFIED_ON = \"12 June 2026\";\n\n    let lastResult = null;\n\n    function q(selector) { return root.querySelector(selector); }\n    function clamp(value,min,max){ return Math.max(min,Math.min(max,value)); }\n    function toPercent1to5(value){ return Math.round(((value-1)\/4)*100); }\n    function average(values){ return values.reduce((a,b)=>a+b,0)\/values.length; }\n\n    function renderQuestions(){\n      const form = q(\"#ffm-form\");\n      form.innerHTML = questions.map(function(item, idx){\n        const options = scaleLabels.map(function(label, i){\n          const value = i + 1;\n          return '<label class=\"ffm-option\"><input type=\"radio\" name=\"'+item.id+'\" value=\"'+value+'\"><span>'+label+'<\/span><\/label>';\n        }).join(\"\");\n        return '<div class=\"ffm-question\">' +\n          '<div class=\"ffm-question-title\">' + (idx+1) + '. ' + item.text + '<\/div>' +\n          '<div class=\"ffm-scale\">' + options + '<\/div>' +\n        '<\/div>';\n      }).join(\"\");\n    }\n\n    function getAnswers(){\n      const answers = {};\n      for (const item of questions) {\n        const selected = root.querySelector('input[name=\"'+item.id+'\"]:checked');\n        if (!selected) return null;\n        answers[item.id] = Number(selected.value);\n      }\n      return answers;\n    }\n\n    function scoreTraits(answers){\n      const raw = { openness:[], conscientiousness:[], extraversion:[], agreeableness:[], neuroticism:[] };\n      questions.forEach(function(item){\n        const value = answers[item.id];\n        const scored = item.reverse ? (6 - value) : value;\n        raw[item.trait].push(scored);\n      });\n      const neuroticism = toPercent1to5(average(raw.neuroticism));\n      return {\n        openness: toPercent1to5(average(raw.openness)),\n        conscientiousness: toPercent1to5(average(raw.conscientiousness)),\n        extraversion: toPercent1to5(average(raw.extraversion)),\n        agreeableness: toPercent1to5(average(raw.agreeableness)),\n        neuroticism: neuroticism,\n        emotionalStability: 100 - neuroticism\n      };\n    }\n\n    function analyzeOpenAnswer(text){\n      const clean = (text || \"\").trim();\n      const lower = clean.toLowerCase();\n\n      function has(words) {\n        return words.some(function(word){ return lower.indexOf(word) !== -1; });\n      }\n\n      const themes = [];\n      if (has([\"confidential\",\"secret\",\"private\",\"personal data\",\"data\",\"client\",\"customer\",\"address\",\"contract\",\"gdpr\",\"privacy\",\"document\",\"file\"])) themes.push(\"dataConfidentiality\");\n      if (has([\"phishing\",\"fake\",\"scam\",\"deepfake\",\"voice\",\"impersonation\",\"spoof\",\"fraud\",\"boss\",\"ceo\",\"urgent\",\"whatsapp\",\"sms\"])) themes.push(\"socialEngineering\");\n      if (has([\"agent\",\"automation\",\"automate\",\"workflow\",\"send email\",\"calendar\",\"permission\",\"access\",\"connector\",\"api\",\"integrat\"])) themes.push(\"automation\");\n      if (has([\"wrong\",\"hallucination\",\"incorrect\",\"mistake\",\"source\",\"verify\",\"trust\",\"false\",\"misleading\",\"quality\"])) themes.push(\"verification\");\n      if (has([\"password\",\"mfa\",\"2fa\",\"token\",\"api key\",\"credential\",\"login\",\"account\",\"recovery code\"])) themes.push(\"credentials\");\n      if (has([\"stress\",\"pressure\",\"urgent\",\"panic\",\"worried\",\"afraid\",\"anxious\",\"fast\",\"quickly\",\"immediate\"])) themes.push(\"pressure\");\n\n      const wordCount = clean ? clean.split(\/\\s+\/).filter(Boolean).length : 0;\n\n      return { text: clean, wordCount: wordCount, themes: Array.from(new Set(themes)) };\n    }\n\n    function scoreCyberRisk(traits){\n      const O = traits.openness, C = traits.conscientiousness, E = traits.extraversion, A = traits.agreeableness, N = traits.neuroticism;\n      return {\n        riskAversion: clamp(Math.round((0.35*C)+(0.25*N)+(0.25*(100-O))+(0.15*(100-E))),0,100),\n        aiExperimentationRisk: clamp(Math.round((0.55*O)+(0.30*(100-C))+(0.15*E)),0,100),\n        processDisciplineRisk: clamp(Math.round((0.70*(100-C))+(0.20*O)+(0.10*N)),0,100),\n        socialEngineeringRisk: clamp(Math.round((0.40*A)+(0.25*N)+(0.20*E)+(0.15*(100-C))),0,100),\n        pressureResponseRisk: clamp(Math.round((0.70*N)+(0.20*A)+(0.10*(100-C))),0,100),\n        aiOverTrustRisk: clamp(Math.round((0.35*A)+(0.30*O)+(0.20*(100-C))+(0.15*N)),0,100),\n        agentPermissionRisk: clamp(Math.round((0.45*O)+(0.35*(100-C))+(0.20*E)),0,100)\n      };\n    }\n\n    function applyOpenAnswerToRisks(baseRisks, openAnalysis){\n      const risks = Object.assign({}, baseRisks);\n      const themes = openAnalysis.themes;\n      const modifiers = [];\n\n      function boost(key, amount, reason){\n        risks[key] = clamp(risks[key] + amount, 0, 100);\n        modifiers.push({ risk:key, increase:amount, reason:reason });\n      }\n\n      if (themes.includes(\"dataConfidentiality\")) {\n        boost(\"processDisciplineRisk\", 12, \"Open answer mentions data, privacy, clients, documents, or confidential information.\");\n        boost(\"aiOverTrustRisk\", 8, \"Confidential data themes require stronger AI-output and tool-use verification.\");\n      }\n      if (themes.includes(\"socialEngineering\")) {\n        boost(\"socialEngineeringRisk\", 15, \"Open answer mentions phishing, scams, impersonation, urgency, or deepfakes.\");\n        boost(\"pressureResponseRisk\", 8, \"Social-engineering themes often include time pressure or authority pressure.\");\n      }\n      if (themes.includes(\"automation\")) {\n        boost(\"agentPermissionRisk\", 18, \"Open answer mentions agents, automation, workflows, access, or permissions.\");\n        boost(\"aiExperimentationRisk\", 8, \"Automation themes indicate stronger need for safe AI experimentation controls.\");\n      }\n      if (themes.includes(\"verification\")) {\n        boost(\"aiOverTrustRisk\", 12, \"Open answer mentions wrong answers, hallucinations, verification, or source checking.\");\n      }\n      if (themes.includes(\"credentials\")) {\n        boost(\"processDisciplineRisk\", 15, \"Open answer mentions passwords, MFA, tokens, credentials, or account access.\");\n      }\n      if (themes.includes(\"pressure\")) {\n        boost(\"pressureResponseRisk\", 15, \"Open answer mentions stress, urgency, worry, or pressure.\");\n      }\n\n      if (openAnalysis.wordCount < 18) {\n        boost(\"processDisciplineRisk\", 5, \"Open answer is very short, so the tool applies a small uncertainty buffer.\");\n      }\n\n      return { risks: risks, modifiers: modifiers };\n    }\n\n    function determineProfile(traits, adjustedRisks, openAnalysis){\n      const O = traits.openness, C = traits.conscientiousness, E = traits.extraversion, A = traits.agreeableness, N = traits.neuroticism;\n      const themes = openAnalysis.themes;\n\n      if (themes.includes(\"automation\") || adjustedRisks.agentPermissionRisk >= 70) {\n        return { key:\"automationController\", name:\"AI Agent Permission Controller\", summary:\"Your scored answers and open response point to AI-agent, automation, workflow, or permission-control risks. Training should focus on least privilege, approval gates, and connected-app review.\" };\n      }\n      if (C <= 40 || adjustedRisks.processDisciplineRisk >= 70 || themes.includes(\"credentials\") || themes.includes(\"dataConfidentiality\")) {\n        return { key:\"disciplineBuilder\", name:\"Data Discipline Builder\", summary:\"Your profile and open response suggest that the main training need is data discipline: confidential information, credentials, MFA, and repeatable checks.\" };\n      }\n      if (N >= 65 || adjustedRisks.pressureResponseRisk >= 72 || themes.includes(\"pressure\")) {\n        return { key:\"pressureSensitive\", name:\"Pressure-Sensitive Verifier\", summary:\"Your profile and open response suggest that urgency or uncertainty may create pressure. Training should focus on calm verification before action.\" };\n      }\n      if ((A >= 65 && adjustedRisks.socialEngineeringRisk >= 60) || (E >= 70 && A >= 55) || themes.includes(\"socialEngineering\")) {\n        return { key:\"socialCollaborator\", name:\"Social Collaborator\", summary:\"Your profile and open response suggest strong interaction or trust-based exposure. Training should focus on AI phishing, deepfakes, impersonation, and verification.\" };\n      }\n      if (O >= 70 || adjustedRisks.aiExperimentationRisk >= 70) {\n        return { key:\"openExperimenter\", name:\"Open AI Experimenter\", summary:\"Your profile suggests curiosity and willingness to try new tools. Training should focus on safe experimentation, prompt injection, and data boundaries.\" };\n      }\n      if (C >= 70) {\n        return { key:\"structuredGuardian\", name:\"Structured Guardian\", summary:\"Your profile suggests strong process orientation. Training should focus on approved AI workflows, verification rules, and incident reporting.\" };\n      }\n      return { key:\"balancedFoundation\", name:\"Balanced AI User\", summary:\"Your profile is relatively balanced. Training should cover the main AI-cybersecurity risks without over-specializing.\" };\n    }\n\n    function buildTrainingProgram(profile, traits, risks, openAnalysis){\n      const program = trainingPrograms[profile.key] || trainingPrograms.balancedFoundation;\n      const selected = [];\n      function add(key){ if (!selected.includes(key)) selected.push(key); }\n\n      program.core.forEach(add);\n\n      if (openAnalysis.themes.includes(\"dataConfidentiality\")) add(\"safePrompting\");\n      if (openAnalysis.themes.includes(\"socialEngineering\")) add(\"socialEngineering\");\n      if (openAnalysis.themes.includes(\"automation\")) add(\"agentPermissions\");\n      if (openAnalysis.themes.includes(\"verification\")) add(\"aiVerification\");\n      if (openAnalysis.themes.includes(\"credentials\")) add(\"credentialSafety\");\n      if (openAnalysis.themes.includes(\"pressure\")) add(\"calmVerification\");\n\n      if (risks.aiOverTrustRisk >= 65) add(\"aiVerification\");\n      if (risks.aiExperimentationRisk >= 70) add(\"secureInnovation\");\n      if (risks.agentPermissionRisk >= 70) add(\"agentPermissions\");\n      if (risks.processDisciplineRisk >= 70) add(\"credentialSafety\");\n\n      return {\n        key: profile.key,\n        title: program.title,\n        audience: program.audience,\n        objective: program.objective,\n        modules: selected.slice(0,5)\n      };\n    }\n\n    function dominantTrait(traits){\n      const items = [\n        [\"Openness\",traits.openness],\n        [\"Conscientiousness\",traits.conscientiousness],\n        [\"Extraversion\",traits.extraversion],\n        [\"Agreeableness\",traits.agreeableness],\n        [\"Neuroticism\",traits.neuroticism]\n      ];\n      items.sort((a,b)=>b[1]-a[1]);\n      return items[0];\n    }\n\n    function level(value){\n      if (value < 35) return { text:\"Low\", cls:\"ffm-low\" };\n      if (value < 68) return { text:\"Medium\", cls:\"ffm-med\" };\n      return { text:\"High\", cls:\"ffm-high\" };\n    }\n\n    function renderBadges(traits, risks, openAnalysis){\n      const dominant = dominantTrait(traits);\n      const av = level(risks.riskAversion);\n      const se = level(risks.socialEngineeringRisk);\n      const pr = level(risks.processDisciplineRisk);\n      const themes = openAnalysis.themes.length ? openAnalysis.themes.join(\", \") : \"none detected\";\n      q(\"#ffm-badges\").innerHTML =\n        '<span class=\"ffm-pill\">Dominant trait: '+dominant[0]+' ('+dominant[1]+'\/100)<\/span>' +\n        '<span class=\"ffm-pill '+av.cls+'\">Risk aversion: '+av.text+'<\/span>' +\n        '<span class=\"ffm-pill '+se.cls+'\">Social-engineering risk: '+se.text+'<\/span>' +\n        '<span class=\"ffm-pill '+pr.cls+'\">Process-discipline risk: '+pr.text+'<\/span>' +\n        '<span class=\"ffm-pill\">Open-answer themes: '+themes+'<\/span>';\n    }\n\n    function renderScores(traits){\n      const items = [\n        [\"Openness\",traits.openness,\"Curiosity, novelty, imagination, willingness to try new tools.\"],\n        [\"Conscientiousness\",traits.conscientiousness,\"Organization, reliability, carefulness, procedure-following.\"],\n        [\"Extraversion\",traits.extraversion,\"Social energy, communication, tendency to engage with others.\"],\n        [\"Agreeableness\",traits.agreeableness,\"Cooperation, helpfulness, trust, conflict avoidance.\"],\n        [\"Neuroticism\",traits.neuroticism,\"Pressure sensitivity, worry, emotional reactivity under stress.\"],\n        [\"Emotional stability\",traits.emotionalStability,\"Calmness and steadiness; inverse of Neuroticism in this screener.\"]\n      ];\n      q(\"#ffm-scores\").innerHTML = items.map(function(item){\n        return '<div class=\"ffm-scoreline\"><strong>'+item[0]+': '+item[1]+'\/100<\/strong>' +\n          '<div class=\"ffm-bar\"><span style=\"width:'+item[1]+'%\"><\/span><\/div>' +\n          '<p class=\"ffm-muted\">'+item[2]+'<\/p><\/div>';\n      }).join(\"\");\n    }\n\n    function renderRiskScores(risks){\n      const items = [\n        [\"Risk aversion\",risks.riskAversion,\"Higher means more cautious and less likely to experiment without structure.\"],\n        [\"AI experimentation risk\",risks.aiExperimentationRisk,\"Higher means stronger need for sandboxing and approved-tool rules.\"],\n        [\"Process-discipline risk\",risks.processDisciplineRisk,\"Higher means stronger need for checklists, MFA, data handling, and repeatable procedures.\"],\n        [\"Social-engineering risk\",risks.socialEngineeringRisk,\"Higher means stronger need for phishing, deepfake, and impersonation training.\"],\n        [\"Pressure-response risk\",risks.pressureResponseRisk,\"Higher means stronger need for calm verification routines.\"],\n        [\"AI over-trust risk\",risks.aiOverTrustRisk,\"Higher means stronger need to verify AI outputs and sources.\"],\n        [\"AI-agent permission risk\",risks.agentPermissionRisk,\"Higher means stronger need for least privilege and human approval gates.\"]\n      ];\n      q(\"#ffm-risk-scores\").innerHTML = items.map(function(item){\n        return '<div class=\"ffm-scoreline\"><strong>'+item[0]+': '+item[1]+'\/100<\/strong>' +\n          '<div class=\"ffm-bar\"><span style=\"width:'+item[1]+'%\"><\/span><\/div>' +\n          '<p class=\"ffm-muted\">'+item[2]+'<\/p><\/div>';\n      }).join(\"\");\n    }\n\n    function renderOpenFeedback(profile, traits, openAnalysis, modifiers){\n      const themeLabels = {\n        dataConfidentiality:\"confidential data \/ privacy\",\n        socialEngineering:\"phishing \/ deepfake \/ impersonation\",\n        automation:\"AI agents \/ automation \/ permissions\",\n        verification:\"wrong AI answers \/ verification\",\n        credentials:\"passwords \/ MFA \/ tokens\",\n        pressure:\"urgency \/ pressure\"\n      };\n\n      const themes = openAnalysis.themes.map(t => themeLabels[t] || t);\n      const comments = [];\n\n      if (themes.length) {\n        comments.push(\"Detected themes: \" + themes.join(\"; \") + \".\");\n      } else {\n        comments.push(\"No specific cybersecurity theme was clearly detected, so the recommendation relies mainly on the scored Five-Factor answers.\");\n      }\n\n      modifiers.forEach(function(m){\n        comments.push(\"Evaluation adjustment: \" + m.reason);\n      });\n\n      if (profile.key === \"automationController\") {\n        comments.push(\"Because the open answer points to automation or access, the tool prioritizes AI-agent permission control.\");\n      } else if (profile.key === \"disciplineBuilder\") {\n        comments.push(\"Because the open answer points to data, credentials, or process discipline, the tool prioritizes safe prompting and credential safety.\");\n      } else if (profile.key === \"socialCollaborator\") {\n        comments.push(\"Because the open answer points to social-engineering exposure, the tool prioritizes phishing, deepfake, and second-channel verification.\");\n      } else if (profile.key === \"pressureSensitive\") {\n        comments.push(\"Because the open answer points to urgency or pressure, the tool prioritizes calm verification routines.\");\n      } else if (profile.key === \"openExperimenter\") {\n        comments.push(\"Because the profile points to experimentation, the tool prioritizes sandboxing and approved AI-tool boundaries.\");\n      }\n\n      q(\"#ffm-open-feedback\").innerHTML =\n        '<div class=\"ffm-feedback-box\">' +\n          '<h3>How the open answer affected the result<\/h3>' +\n          '<p class=\"ffm-muted\"><strong>Open answer length:<\/strong> '+openAnalysis.wordCount+' words.<\/p>' +\n          '<ul>' + comments.map(c => '<li>'+c+'<\/li>').join(\"\") + '<\/ul>' +\n        '<\/div>';\n    }\n\n    function renderProgram(program){\n      q(\"#ffm-program\").innerHTML =\n        '<div class=\"ffm-program-box\">' +\n          '<h3>'+program.title+'<\/h3>' +\n          '<p><strong>Audience:<\/strong> '+program.audience+'<\/p>' +\n          '<p><strong>Objective:<\/strong> '+program.objective+'<\/p>' +\n          '<p><strong>Selection logic:<\/strong> chosen from Big Five scores plus the open-answer theme adjustments.<\/p>' +\n        '<\/div>';\n    }\n\n    function renderModules(program){\n      const keys = program.modules;\n      const total = keys.reduce((sum,key)=>sum+Number(moduleCatalog[key].duration.match(\/\\d+\/)[0]),0);\n      q(\"#ffm-training-intro\").textContent =\n        \"Recommended path: \" + keys.length + \" profile-specific modules, approximately \" + total + \" minutes.\";\n\n      q(\"#ffm-modules\").innerHTML = keys.map(function(key,index){\n        const m = moduleCatalog[key];\n        const activities = '<ul>' + m.activities.map(a => '<li>'+a+'<\/li>').join(\"\") + '<\/ul>';\n        const links = '<div class=\"ffm-links\"><strong>Training sources:<\/strong><ul>' +\n          m.links.map(l => '<li><a href=\"'+l.url+'\" target=\"_blank\" rel=\"noopener noreferrer\">'+l.title+'<\/a> <span class=\"ffm-link-date\">(Verified active and topic-relevant: '+LINK_VERIFIED_ON+')<\/span><\/li>').join(\"\") +\n          '<\/ul><\/div>';\n        return '<div class=\"ffm-module\"><h4>'+(index+1)+'. '+m.title+' <span class=\"ffm-pill\">'+m.duration+'<\/span><\/h4>' +\n          '<p class=\"ffm-muted\"><strong>Why:<\/strong> '+m.why+'<\/p>' + activities + links + '<\/div>';\n      }).join(\"\");\n    }\n\n    function calculateProfile(){\n      const answers = getAnswers();\n      const openText = q(\"#ffm-open-answer\").value.trim();\n      const error = q(\"#ffm-error\");\n\n      if (!answers || openText.length < 20) {\n        error.style.display = \"block\";\n        return;\n      }\n\n      error.style.display = \"none\";\n\n      const traits = scoreTraits(answers);\n      const baseRisks = scoreCyberRisk(traits);\n      const openAnalysis = analyzeOpenAnswer(openText);\n      const adjusted = applyOpenAnswerToRisks(baseRisks, openAnalysis);\n      const risks = adjusted.risks;\n      const profile = determineProfile(traits, risks, openAnalysis);\n      const program = buildTrainingProgram(profile, traits, risks, openAnalysis);\n\n      lastResult = {\n        generatedAt: new Date().toISOString(),\n        method: \"Five-Factor Model informed 10-item screener plus rule-based open-answer evaluation\",\n        note: \"Not a clinical or employment assessment. The open answer is evaluated locally in the browser and used to adjust cybersecurity risk scores.\",\n        trainingLinksVerifiedOn: LINK_VERIFIED_ON,\n        openAnswer: openText,\n        openAnswerWordCount: openAnalysis.wordCount,\n        openAnswerThemes: openAnalysis.themes,\n        openAnswerRiskModifiers: adjusted.modifiers,\n        profile: profile,\n        traits: traits,\n        cyberRiskTranslation: risks,\n        trainingProgram: {\n          key: program.key,\n          title: program.title,\n          audience: program.audience,\n          objective: program.objective,\n          modules: program.modules.map(key => Object.assign({key:key}, moduleCatalog[key]))\n        }\n      };\n\n      q(\"#ffm-persona\").textContent = profile.name;\n      q(\"#ffm-summary\").textContent = profile.summary;\n\n      renderBadges(traits, risks, openAnalysis);\n      renderScores(traits);\n      renderRiskScores(risks);\n      renderOpenFeedback(profile, traits, openAnalysis, adjusted.modifiers);\n      renderProgram(program);\n      renderModules(program);\n\n      q(\"#ffm-results\").style.display = \"block\";\n      q(\"#ffm-results\").scrollIntoView({behavior:\"smooth\",block:\"start\"});\n    }\n\n    function resetProfile(){\n      q(\"#ffm-form\").reset();\n      q(\"#ffm-open-answer\").value = \"\";\n      q(\"#ffm-char-count\").textContent = \"0 \/ 1200\";\n      q(\"#ffm-error\").style.display = \"none\";\n      q(\"#ffm-results\").style.display = \"none\";\n      lastResult = null;\n      root.scrollIntoView({behavior:\"smooth\",block:\"start\"});\n    }\n\n    function exportJson(){\n      if (!lastResult) return;\n      const blob = new Blob([JSON.stringify(lastResult,null,2)], {type:\"application\/json\"});\n      const url = URL.createObjectURL(blob);\n      const link = document.createElement(\"a\");\n      link.href = url;\n      link.download = \"ai-cybersecurity-five-factor-profile-open-evaluation.json\";\n      document.body.appendChild(link);\n      link.click();\n      link.remove();\n      URL.revokeObjectURL(url);\n    }\n\n    renderQuestions();\n\n    q(\"#ffm-open-answer\").addEventListener(\"input\", function(){\n      q(\"#ffm-char-count\").textContent = this.value.length + \" \/ 1200\";\n    });\n\n    q(\"#ffm-calc\").addEventListener(\"click\", calculateProfile);\n    q(\"#ffm-reset\").addEventListener(\"click\", resetProfile);\n    q(\"#ffm-print\").addEventListener(\"click\", function(){ window.print(); });\n    q(\"#ffm-export\").addEventListener(\"click\", exportJson);\n  })();\n  <\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>AI Cybersecurity Training Profiler Five-Factor Model version with open-answer evaluation. The 10 scored questions estimate Big Five patterns, while the open answer adjusts the cybersecurity &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-228","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/posts\/228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mtrust.global\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=228"}],"version-history":[{"count":8,"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/posts\/228\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/mtrust.global\/index.php?rest_route=\/wp\/v2\/posts\/228\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/mtrust.global\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mtrust.global\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mtrust.global\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}