<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * English language strings for block_mwa_dashboard.
 *
 * @package    block_mwa_dashboard
 * @copyright  2026 Bruno Porto
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

$string['captureconfigheader'] = 'Dashboard data collection';
$string['enablecapture'] = 'Enable event capture in this course';
$string['enablecapture_desc'] = 'When enabled, the plugin stores the educational events required by the dashboard in its own log table. Collection is restricted to this course. Hiding the block does not disable capture; clear this option to stop it.';
$string['captureenabledstatus'] = 'Collection on';
$string['capturedisabledstatus'] = 'Collection off';
$string['capturedatalabel'] = 'Data Collection';
$string['captureturnon'] = 'Turn collection on';
$string['captureturnoff'] = 'Turn collection off';
$string['privacy:metadata:course'] = 'Configuration controlling event capture for each course. This table does not store user identifiers.';
$string['privacy:metadata:course:courseid'] = 'The identifier of the course to which the capture setting belongs.';
$string['privacy:metadata:course:enabled'] = 'Whether event capture is enabled for the course.';
$string['privacy:metadata:course:excludedcmids'] = 'Course activities and resources intentionally excluded from dashboard indicators.';
$string['privacy:metadata:course:timemodified'] = 'The date and time when the capture setting was last changed.';

$string['pluginname'] = 'MWA Analytics Dashboard';
$string['mwa_dashboard:view'] = 'View analytics dashboard';
$string['mwa_dashboard:managecapture'] = 'Enable or disable dashboard data collection';
$string['act_stop_tracking'] = 'Do not track';
$string['act_resume_tracking'] = 'Track again';
$string['act_ignored_title'] = 'Not tracked';
$string['act_ignored_help'] = 'These items are excluded from student activity and resource counts.';
$string['act_tracking_confirm'] = 'Stop tracking this item in dashboard indicators?';
$string['act_tracking_error'] = 'Could not update tracking for this item.';
$string['mwa_dashboard:addinstance'] = 'Add a new MWA Dashboard block';
$string['mwa_dashboard:myaddinstance'] = 'Add MWA Dashboard to My home';
$string['messageprovider:intervention'] = 'Pedagogical intervention messages';
$string['blockintro'] = 'Engagement analytics, dropout prediction, and AI-powered pedagogical intervention.';
$string['opendashboard'] = 'Open Dashboard';
$string['nopermission'] = 'You do not have permission to view this dashboard.';
$string['error_dashboardnotfound'] = 'Dashboard file not found. Please reinstall the plugin.';
$string['error_unknownaction'] = 'Unknown action requested.';
$string['dashboard_title'] = 'MWA Analytics Dashboard';
$string['brand_subtitle'] = 'WEB ANALYTICS';
$string['loading_title'] = 'Loading course data...';
$string['loading_waiting'] = 'Waiting for Moodle data';
$string['loading_connecting'] = 'Connecting to Moodle';
$string['loading_retry'] = 'Try again';
$string['search_student'] = 'Search student';
$string['button_heatmap'] = 'Heatmap';
$string['button_mark_seen'] = 'Mark as seen';
$string['nav_today'] = 'Today';
$string['nav_students'] = 'Students';
$string['nav_content'] = 'Content';
$string['nav_analysis'] = 'Analysis';
$string['nav_ai'] = 'AI';
$string['nav_report'] = 'Report';
$string['nav_action_center'] = 'Action Center';
$string['nav_alerts'] = 'Alerts';
$string['nav_class_list'] = 'Class';
$string['nav_student_profile'] = 'Student Profile';
$string['nav_grades'] = 'Grades';
$string['nav_activities'] = 'Activities/Resources';
$string['nav_content_analysis'] = 'Content Analysis';
$string['nav_access_heatmap'] = 'Access Heatmap';
$string['nav_engagement'] = 'Engagement Prediction';
$string['nav_personalised_plan'] = 'Personalised Plan';
$string['nav_chat'] = 'Chat with Class';
$string['sidebar_collapse'] = 'Collapse sidebar';
$string['sidebar_expand'] = 'Expand sidebar';
$string['nav_contact_report'] = 'Contact Report';
$string['nav_summary_report'] = 'Summary Report';
$string['overview_actions_prefix'] = 'You have';
$string['overview_actions_suffix'] = 'actions requiring attention.';
$string['overview_subtitle'] = 'Data loaded from Moodle logs and gradebook.';
$string['updated_now'] = 'Updated now';
$string['urgent'] = 'Urgent';
$string['attention'] = 'Attention';
$string['opportunity'] = 'Opportunity';
$string['urgent_desc'] = 'Students with low score or weak participation need immediate follow-up.';
$string['attention_desc'] = 'Activities or resources with low reach or low submission. Worth reviewing instructions, deadline or placement.';
$string['opportunity_desc'] = 'Use high-engagement students as references for peer support and course insights.';
$string['no_critical_students'] = 'No students are in critical condition right now.';
$string['good_engagement'] = 'All activities have good engagement.';
$string['no_high_engagement'] = 'No high-engagement group identified yet.';
$string['send_email_ai'] = '✉️ Message';
$string['analyse_activities'] = 'Analyse Activities/Resources';
$string['view_list'] = 'View list';
$string['view_profiles'] = 'View profiles';
$string['critical_alert_title'] = 'Critical students need attention';
$string['priority_students'] = 'Priority students';
$string['no_priority_students'] = 'No priority students at the moment.';
$string['button_view_students'] = 'View students';
$string['button_view_prediction'] = 'View prediction';
$string['engagement_index'] = 'Engagement Index';
$string['engagement_desc'] = 'Class engagement score based on participation, activity coverage and grades.';
$string['legend_low'] = 'Low <40';
$string['legend_average'] = 'Average 40–69';
$string['legend_high'] = 'High ≥70';
$string['event_distribution'] = 'Event Distribution';
$string['event_distribution_desc'] = 'Course events organised by activity or resource type.';
$string['engagement_score'] = 'Engagement score';
$string['alerts_label'] = 'Alerts';
$string['alerts_title'] = 'Detected risk patterns';
$string['alerts_subtitle'] = 'Students and activities that require attention.';
$string['students_label'] = 'Students';
$string['class_list'] = 'Class List';
$string['class_list_subtitle'] = 'Participation, engagement and risk indicators by student.';
$string['students_table_title'] = 'Students table';
$string['cl_tip_class_list'] = 'Shows all students in the class with course participation, graded activity progress, content progress, interactions, total time and shortcuts to profile or message.';
$string['grades_label'] = 'Grades';
$string['grade_analysis'] = 'Grade Analysis';
$string['grades_subtitle'] = 'Gradebook data and completion indicators.';
$string['gradebook_title'] = 'Gradebook';
$string['content_label'] = 'Content';
$string['activities_title'] = 'Activities/Resources';
$string['activities_subtitle'] = 'Access and engagement by course activity.';
$string['activity_access'] = 'Activity access';
$string['analysis_label'] = 'Analysis';
$string['heatmap_title'] = 'Access Heatmap';
$string['heatmap_subtitle'] = 'Distribution of accesses by day and hour.';
$string['hm_search_placeholder'] = 'Search student or resource';
$string['hm_filters_title'] = 'Filters';
$string['hm_filter_search_label'] = 'Search';
$string['hm_filter_student_label'] = 'Student';
$string['hm_filter_resource_label'] = 'Resource';
$string['hm_filter_mode_label'] = 'Event type';
$string['hm_filter_period_label'] = 'Period';
$string['day_hour'] = 'Day × hour';
$string['report_label'] = 'Report';
$string['summary_report'] = 'Summary Report';
$string['summary_subtitle'] = 'General overview generated from Moodle data.';
$string['report_title'] = 'Report';
$string['placeholder_student_profile'] = 'Student profile area. Functionality will be added next.';
$string['placeholder_content_analysis'] = 'Content analysis area. Functionality will be added next.';
$string['placeholder_engagement'] = 'Engagement prediction area. Functionality will be added next.';
$string['placeholder_personalised'] = 'Personalised plan area. Functionality will be added next.';
$string['placeholder_chat'] = 'Class chat area. Functionality will be added next.';
$string['feature_placeholder'] = 'Feature placeholder';
$string['feature_coming_soon'] = 'This feature will be implemented in the next steps.';
$string['no_data'] = 'No data available.';
$string['students_in_log'] = 'Active students';
$string['active_students'] = 'active students';
$string['students_loaded'] = 'active students';
$string['active_course_students'] = 'Student/Interaction';
$string['with_course_activity'] = 'with interactions';
$string['total_interactions'] = 'Total interactions';
$string['moodle_events'] = 'Moodle events';
$string['average_student'] = 'Average / student';
$string['interactions'] = 'interactions';
$string['at_risk'] = 'At risk';
$string['score_below_40'] = 'score of 40 or less';
$string['grade_average'] = 'Grade average';
$string['of_100_points'] = 'of 100 points';
$string['no_grade_data'] = 'No grade data';
$string['ac_tip_students_in_log'] = 'Number of enrolled students loaded from Moodle for this course.';
$string['ac_tip_active_course_students'] = 'Number of students who made at least one access or interaction recorded in the course.';
$string['ac_tip_total_interactions'] = 'Total Moodle events recorded for this class, such as accesses, views, posts and submissions.';
$string['ac_tip_average_student'] = 'Average interactions per active student. Helps identify whether the class is participating too little or more consistently.';
$string['ac_tip_at_risk'] = 'Number of students with engagement score of 40% or less, prioritised for follow-up.';
$string['intervention_kpi'] = 'Intervention';
$string['intervention_kpi_sub'] = 'students needing intervention';
$string['ac_tip_intervention_kpi'] = 'Shows students who need pedagogical intervention. Clicking it takes you directly to the follow-up card in the Action Centre.';
$string['ac_tip_grade_average'] = 'Average of grades already recorded in the gradebook. Use it together with access and participation to understand performance.';
$string['ac_tip_card_urgent'] = 'Shows students with low participation or high risk. Use it to send quick messages and open the alerts list.';
$string['ac_tip_card_attention'] = 'Shows activities with low access coverage. Use it to review content that the class barely opened or completed.';
$string['ac_tip_card_opportunity'] = 'Shows the best communication window detected in the logs. Use the peak hour to publish announcements and content.';
$string['ac_tip_retention_curve'] = 'Shows how many unique students accessed the course each week, helping identify drops or recovery in presence.';
$string['ac_tip_engagement_index'] = 'Shows the class average engagement score, calculated from recent access, participation, completed activities and recorded grades.';
$string['ac_tip_event_distribution'] = 'Shows how Moodle events are distributed by activity type, such as assignments, forums, quizzes, H5P and pages.';
$string['ac_tip_students_attention'] = 'Lists students prioritised by risk, combining dropout signals, recent absence, low participation and performance.';
$string['ac_tip_ai_prediction'] = 'Explains why the selected student appears at risk and lets you send feedback to improve the class analysis.';
$string['low_participation'] = 'Low participation';
$string['average_participation'] = 'Average participation';
$string['high_participation'] = 'High participation';
$string['risk_high'] = 'High risk';
$string['risk_medium'] = 'Medium risk';
$string['risk_low'] = 'Low risk';
$string['student'] = 'Student';
$string['students'] = 'students';
$string['email'] = 'Email';
$string['coverage'] = 'Coverage';
$string['grade'] = 'Grade';
$string['score'] = 'Score';
$string['risk'] = 'Risk';
$string['activity'] = 'Activity';
$string['type'] = 'Type';
$string['accesses'] = 'Accesses';
$string['accesses_label'] = 'Accesses';
$string['unique_students'] = 'Unique students';
$string['no_grade_data_available'] = 'No grade data available.';
$string['no_urgent_action'] = 'No urgent action at the moment.';
$string['no_risk_patterns'] = 'No risk patterns detected.';
$string['immediate_intervention'] = 'Immediate intervention';
$string['monitor_preventive'] = 'Preventive monitoring';
$string['day'] = 'Day';
$string['total_students'] = 'Total students';
$string['activities_detected'] = 'Activities detected';
$string['engagement_groups'] = 'Engagement groups';
$string['low'] = 'Low';
$string['average'] = 'Average';
$string['high'] = 'High';
$string['report_note'] = 'This report is generated from Moodle logs and gradebook data.';
$string['actions_marked_seen'] = 'Actions marked as seen.';
$string['could_not_parse'] = 'Could not parse the uploaded file.';
$string['data_load_failed'] = 'Could not load Moodle data.';
$string['standalone_waiting'] = 'Upload files or wait for Moodle data.';
$string['unknown_student'] = 'Unknown student';
$string['unknown_activity'] = 'Unknown activity';
$string['other'] = 'Other';
$string['open'] = 'Open';
$string['no_email'] = 'No email';
$string['sun'] = 'Sun';
$string['mon'] = 'Mon';
$string['tue'] = 'Tue';
$string['wed'] = 'Wed';
$string['thu'] = 'Thu';
$string['fri'] = 'Fri';
$string['sat'] = 'Sat';
$string['grades_col_firstname'] = 'First name';
$string['grades_col_lastname'] = 'Last name';
$string['grades_col_email'] = 'Email';
$string['grades_col_activity'] = 'Activity {$a->seq} - {$a->name} (Grade)';
$string['grades_col_total'] = 'Course total (Grade)';
$string['privacy:metadata'] = 'MWA Dashboard stores analytics events, interventions and snapshots in Moodle. When AI is enabled by the administrator, minimised educational data is transmitted to the external endpoint configured by the institution.';
$string['privacy:metadata:log'] = 'Stores a subset of course events for analytics.';
$string['privacy:metadata:log:userid'] = 'The ID of the user who triggered the event.';
$string['privacy:metadata:log:courseid'] = 'The ID of the course where the event occurred.';
$string['privacy:metadata:log:component'] = 'The Moodle component that generated the event.';
$string['privacy:metadata:log:action'] = 'The action performed.';
$string['privacy:metadata:log:contextinstanceid'] = 'The course module ID related to the event.';
$string['privacy:metadata:log:timecreated'] = 'The time when the event occurred.';
$string['privacy:metadata:log:origin'] = 'The technical origin of the event, such as web, command line or web service.';
$string['priority_actions'] = 'Priority students';

$string['ai_insight'] = 'AI Insight';
$string['peak_at'] = 'Peak at';
$string['peak_desc'] = 'Best communication window detected from Moodle activity logs.';
$string['no_peak_desc'] = 'No access peak identified yet.';
$string['view_heatmap'] = 'View heatmap';
$string['urgent_insight'] = 'Direct contact in the first week of inactivity tends to increase return rates.';
$string['attention_insight'] = 'Low reach suggests misplaced content; low submission suggests unclear instructions or deadline.';
$string['opportunity_insight'] = 'Schedule announcements and new content close to the class access peak.';
$string['ac_summary_never'] = 'never accessed';
$string['ac_summary_inactive'] = 'without recent activity';
$string['ac_summary_low'] = 'with low reach';
$string['ac_more_activities'] = 'more';
$string['ac_summary_low_delivery'] = 'with low submission';
$string['ac_summary_no_access_activities'] = 'with no access';
$string['ac_summary_low_reach_activities'] = 'with low reach';
$string['ac_review'] = 'Review';
$string['ac_never_desc'] = 'Enrolled students who have not recorded any Moodle access yet.';
$string['ac_no_never_students'] = 'All students have already recorded Moodle access.';
$string['ac_never_insight'] = 'The first contact helps the student find the course and start participating.';
$string['ac_tip_card_never'] = 'Shows enrolled students who have not accessed Moodle yet. Use it to send a first welcome and orientation message.';
// Clean Action Center strings.
$string['action_center_title'] = 'Action Center';
$string['action_center_subtitle'] = 'Data loaded from Moodle logs and gradebook.';
$string['action_greeting_morning'] = 'Good morning, {name}.';
$string['action_greeting_afternoon'] = 'Good afternoon, {name}.';
$string['action_greeting_evening'] = 'Good evening, {name}.';
$string['action_welcome_message'] = 'Welcome to your class dashboard. Track priorities, participation and performance in one place.';
$string['teacher_label'] = 'teacher';
$string['weekly_retention_curve'] = 'Weekly retention curve';
$string['unique_active_students_week'] = 'Unique active students per week';
$string['students_need_attention'] = 'Students who need intervention';
$string['ordered_by_urgency'] = 'Ordered by urgency (dropout + absence)';
$string['select_all'] = 'Select all';
$string['bulk_email'] = 'Message';
$string['ai_prediction_explanation'] = 'AI prediction — explanation';
$string['ai_click_open_hint'] = 'Click Open on a student to see the risk explanation';
$string['ai_student_risk_summary'] = 'This explanation uses Moodle access, grade and participation signals to indicate why this student needs attention.';
$string['this_week'] = 'This week';
$string['one_week_ago'] = '1w ago';
$string['weeks_ago'] = 'w ago';
$string['bulk_email_placeholder'] = 'Bulk email will be connected in a later step.';
$string['risk_critical'] = 'Critical';
$string['ai_risk'] = 'AI risk';
$string['last_access'] = 'Last access';
$string['no_recent_access'] = 'No recent access';
$string['alert_never_accessed_label'] = 'Never accessed';
$string['alert_never_accessed_sub'] = 'No Moodle access recorded';
$string['alert_view_never_accessed'] = 'Show all alerts';

// ── Smart Alerts tab ──
$string['alerts_page_title']        = 'Alerts';
$string['alerts_page_subtitle']     = 'Risk patterns detected automatically from access data';
$string['alerts_no_data']           = 'No alerts detected in the current data.';

// KPI labels
$string['alert_kpi_viu_label']      = 'Viewed, not submitted';
$string['alert_kpi_viu_delta']      = 'intent without delivery';
$string['alert_kpi_viu_tip']        = 'Students who accessed the assignment form but never submitted. A reminder can fix this.';
$string['alert_kpi_queda_label']    = 'Sharp drop';
$string['alert_kpi_queda_delta']    = 'week over week';
$string['alert_kpi_queda_tip']      = 'Drop ≥60% in accesses between consecutive weeks.';
$string['alert_kpi_fantasma_label'] = 'Ghosts';
$string['alert_kpi_fantasma_delta'] = 'vanished early';
$string['alert_kpi_fantasma_tip']   = 'Active at the start, then completely disappeared.';
$string['alert_kpi_simbol_label']   = 'Symbolic access';
$string['alert_kpi_simbol_delta']   = '≤2 active days';
$string['alert_kpi_simbol_tip']     = 'Enrolled but accessed on 2 or fewer distinct days.';
$string['alert_kpi_reat_label']     = 'Reactivated';
$string['alert_kpi_reat_delta']     = 'returned recently';
$string['alert_kpi_reat_tip']       = 'Inactive for 10+ days and returned in the last 5 days.';
$string['alert_kpi_never_label']    = 'Never accessed';
$string['alert_kpi_never_delta']    = 'no login';
$string['alert_kpi_never_tip']      = 'Enrolled students with no Moodle access recorded yet.';
$string['alert_kpi_madru_label']    = 'Night owls';
$string['alert_kpi_madru_delta']    = '+45% accesses 0h–5h';
$string['alert_kpi_madru_tip']      = 'More than 45% of accesses concentrated between 0h and 5h.';

// Block titles
$string['alert_block_viu_title']    = 'Viewed but not submitted';
$string['alert_block_viu_desc']     = '{n} student(s) viewed the submission form but never submitted. High intent, zero delivery.';
$string['alert_block_viu_tip']      = 'High priority: these students were ready to submit. A personal reminder can reverse the situation before the deadline.';
$string['alert_block_queda_title']  = 'Sharp drop in access';
$string['alert_block_queda_desc']   = '{n} student(s) had a drop of more than 60% in accesses compared to the previous week.';
$string['alert_block_queda_tip']    = 'May indicate difficulty with content, external overload or discouragement. Preventive contact recommended.';
$string['alert_block_simbol_title'] = 'Symbolic presence';
$string['alert_block_simbol_desc']  = '{n} student(s) accessed the course on only 1 or 2 days in the entire period.';
$string['alert_block_simbol_tip']   = 'Maximum dropout risk. These students never developed an access habit.';
$string['alert_block_ghost_title']  = 'Early ghosts';
$string['alert_block_ghost_desc']   = '{n} student(s) were active in the first weeks and then completely disappeared.';
$string['alert_block_ghost_tip']    = 'Classic early dropout pattern. The longer without contact, the lower the chance of return.';
$string['alert_block_reat_title']   = 'Reactivation detected — opportunity window';
$string['alert_block_reat_desc']    = '{n} student(s) returned to access after a long period of inactivity.';
$string['alert_block_reat_tip']     = 'This is the ideal moment for positive reinforcement and re-engagement. Do not let this window close.';
$string['alert_block_never_title']  = 'Never accessed Moodle';
$string['alert_block_never_tip']    = 'These students have no recorded access yet; prioritize first contact and entry guidance.';
$string['alert_block_madru_title']  = 'Night owl pattern';
$string['alert_block_madru_desc']   = '{n} student(s) concentrate more than 45% of accesses between 0h and 5h.';
$string['alert_block_madru_tip']    = 'May indicate difficulty balancing work or family responsibilities. Consider flexible deadlines or specific support.';

// Buttons and extras
$string['alert_email_all']          = 'Message';
$string['alert_view_prediction']    = 'View prediction →';
$string['alert_see_more']           = '+{n} more';
$string['alert_see_less']           = 'see less';
$string['alert_extra_queda']        = '{n}% drop';
$string['alert_extra_sumiu']        = 'gone {n}d';
$string['alert_extra_dias']         = '{n} day(s) active';
$string['alert_extra_madru']        = '{n}% at dawn';
$string['alert_extra_ausente']      = 'absent {n}d, returned';

// ── Class List tab ──
$string['cl_filters_title']      = 'Class filters';
$string['cl_filter_participation_label'] = 'Participation';
$string['cl_filter_engaged'] = 'With engagement';
$string['cl_filter_sort_label']  = 'Sort';
$string['cl_filter_search_label'] = 'Search';
$string['cl_sort_interactions']   = '↓ Interactions';
$string['cl_sort_alpha']          = 'A–Z Name';
$string['cl_sort_ago']            = '↑ Days without access';
$string['cl_sort_risk']           = 'Sort by risk';
$string['cl_sort_participation']  = '↓ Participation';
$string['cl_sort_time']           = '⏱ Total time';
$string['cl_view_activities']     = 'View activities';
$string['cl_view_participation']  = 'View participation';
$string['cl_search_placeholder']  = 'Search student...';
$string['cl_th_last_access']      = 'Last access';
$string['cl_th_days_without']     = 'Days without access';
$string['cl_th_participation']    = 'Engagement';
$string['cl_th_situation']        = 'Status';
$string['cl_th_deliveries']       = 'Deliveries per activity';
$string['cl_th_activity_progress'] = 'Graded activity progress';
$string['cl_th_resource_progress'] = 'Content progress';
$string['cl_th_total_time']       = 'Total time';
$string['cl_open_profile']        = 'Open profile';
$string['cl_result']              = 'result';
$string['cl_no_grades_hint']      = 'Load grades to see activities';
$string['cl_no_grade_for_student']= 'No grade data';
$string['cl_no_activities_found'] = 'No activities mapped';
$string['cl_no_resources_found']  = 'No resources mapped';
$string['cl_resource_accessed']   = 'accessed';
$string['cl_resource_not_accessed'] = 'not accessed';
$string['cl_legend_done']         = 'Green: completed or accessed';
$string['cl_legend_missing']      = 'Red: pending or not accessed';

// ── Student Profile tab ──
$string['sp_page_subtitle']          = 'Individual detailed analysis';
$string['sp_select_label']           = 'Select student:';
$string['sp_select_placeholder']     = '-- Choose a student --';
$string['sp_kbd_navigate']           = 'navigate';
$string['sp_kbd_select']             = 'select';
$string['sp_kbd_close']              = 'close';
$string['sp_select_student']         = '— Choose —';
$string['sp_select_hint']            = 'Select a student above.';
$string['sp_search_student_placeholder'] = 'Search student...';
$string['sp_search_no_results']      = 'No student found';
$string['sp_search_clear']           = 'Clear search';
$string['sp_kpi_last_access']        = 'Last access';
$string['sp_kpi_active_days']        = 'Active days';
$string['sp_kpi_grade']              = 'Grade';
$string['sp_kpi_engagement']         = 'Engagement';
$string['sp_approved']               = 'Approved';
$string['sp_in_progress']            = 'In progress';
$string['sp_no_grade']               = 'No grade';
$string['sp_activity_7d']            = 'Activity — last 7 days';
$string['sp_no_prev_data']           = 'no previous data';
$string['sp_vs_last_week']           = 'vs last week';
$string['sp_stable']                 = 'stable';
$string['sp_interactions_this_week'] = 'interactions this week';
$string['sp_private_notes']          = 'Private notes';
$string['sp_notes_placeholder']      = 'Observations, intervention plans, conversation history...';
$string['sp_save']                   = 'Save';
$string['sp_note_saved']             = 'Note saved!';
$string['sp_contact_history']        = 'Contact history';
$string['sp_no_contacts']            = 'No contacts recorded yet.';
$string['sp_contact']                = 'Contact';
$string['sp_contact_subject_prompt'] = 'Contact subject:';
$string['sp_intervention']           = '+ Intervention';
$string['sp_btn_email']              = 'Email';
$string['sp_email_coming_soon']      = 'Email sending will be integrated in a future step.';
$string['sp_crm_coming_soon']        = 'Full CRM available in a future step.';
$string['sp_daily_journey']          = 'Daily access journey';
$string['sp_last_interactions']      = 'Last 25 interactions';
$string['sp_col_datetime']           = 'Date/Time';
$string['sp_col_context']            = 'Context';
$string['sp_col_event']              = 'Event';
$string['sp_activity_calendar']      = 'Activity calendar';
$string['sp_calendar_less']          = 'Less';
$string['sp_calendar_more']          = 'More';

// ── Activities tab ──
$string['activities_title']         = 'Activities/Resources';
$string['activities_subtitle']      = 'Activity and resource view — who accessed, who did not, and engagement comparison';
$string['act_filter_all']           = '🌐 All';
$string['act_filter_activity']      = '📝 Activities';
$string['act_search_placeholder']   = 'Search activity or resource...';
$string['act_filter_forum']         = '💬 Forums';
$string['act_filter_task']          = '📝 Tasks';
$string['act_filter_quiz']          = '❓ Quiz / H5P / SCORM';
$string['act_filter_video']         = '📖 Content / Resources';
$string['act_filter_low']           = '📉 Underperforming';
$string['act_filter_ignored']       = '⏸️ Not tracked';
$string['act_filters_title']        = 'Filters';
$string['act_filter_type_label']    = 'Type';
$string['act_filter_period_label']  = 'Availability';
$string['act_filter_search_label']  = 'Search';
$string['act_availability_all']     = 'All periods';
$string['act_availability_open']    = 'Open now';
$string['act_availability_today']   = 'Ends today';
$string['act_availability_closed']  = 'Finished';
$string['act_availability_future']  = 'Not open yet';
$string['act_legend_open']          = 'Open activity';
$string['act_legend_today']         = 'Ends today';
$string['act_legend_closed']        = 'Finished activity';
$string['act_legend_future']        = 'Not open yet';
$string['act_kpi_unique']           = 'Activities/Resources';
$string['act_kpi_unique_delta']     = 'shown';
$string['act_kpi_unique_shown']     = 'shown';
$string['act_kpi_total_acc']        = 'Total accesses';
$string['act_kpi_students']         = 'Distinct students';
$string['act_kpi_avg']              = 'Average per resource';
$string['act_kpi_avg_delta']        = 'students per resource (avg)';
$string['act_tip_unique_resources'] = 'Number of different activities or resources found in the logs, considering the selected filter.';
$string['act_tip_total_accesses']   = 'Sum of all accesses recorded for the activities and resources shown in this tab.';
$string['act_tip_distinct_students'] = 'Number of unique students appearing in the activity access records.';
$string['act_tip_average_per_resource'] = 'Average percentage of students who accessed each listed activity or resource.';
$string['act_col_students']         = 'Students';
$string['act_col_accesses']         = 'Accesses';
$string['act_col_submitted']        = 'Submitted';
$string['act_col_completion_rate']  = 'Completion rate';
$string['act_completion_resource_hint'] = 'Resource with no submission: completion counts the students who opened the material.';
$string['act_label_posted']         = 'Posted';
$string['act_label_submitted']      = 'Submitted';
$string['act_label_accessed']       = 'Accessed';
$string['act_label_saw_not_posted'] = 'Saw but did not post';
$string['act_label_saw_not_submitted'] = 'Saw but did not submit';
$string['act_label_pending']        = 'Pending';
$string['act_label_no_access']      = 'No access recorded';

// ── Activity modal ──
$string['act_modal_participated']      = 'Participated';
$string['act_modal_pending']           = 'Pending';
$string['act_modal_completion_rate']   = 'Completion rate';
$string['act_modal_time_per_student']  = 'Time per student';
$string['act_modal_avg']               = 'Average';
$string['act_modal_email_no_access']   = 'Email no access';
$string['act_modal_email_no_access_btn'] = 'Email no access';
$string['act_modal_close']             = 'Close';
$string['act_status_delivery']         = 'Delivery status';
$string['act_status_delivery_hint']    = 'Based on the percentage of active students who completed this activity.';
$string['act_status_coverage_hint']    = 'Based on the percentage of active students who accessed this resource.';
$string['act_ai_title']                = 'AI suggestion';
$string['act_ai_desc']                 = 'Analyze this activity using delivery, coverage, access, and student participation data.';
$string['act_ai_generate']             = 'Generate suggestion';
$string['act_ai_generating']           = 'Generating suggestion...';
$string['act_ai_loading']              = 'Loading...';
$string['act_show_more_times']         = 'Show more students';

// ── Grades tab ──
$string['grades_title']           = 'Grade Analysis';
$string['grades_subtitle']        = 'Grade distribution and academic performance — approved and in progress';
$string['gr_no_grades_loaded']    = 'Load the grades file to visualize.';
$string['gr_avg_grade']           = 'Average grade';
$string['gr_points']              = 'points';
$string['gr_approved']            = 'Approved';
$string['gr_of_class']            = 'of class';
$string['gr_kpi_of']              = 'of';
$string['gr_kpi_pct_hint']        = 'of the whole class';
$string['gr_in_progress']         = 'In progress';
$string['gr_below_60']            = 'below 60 pts';
$string['gr_below_60_note']       = 'Below 60 pts — grades still being entered';
$string['gr_no_grade']            = 'No grade';
$string['gr_none_launched']       = 'No grade entered yet';
$string['gr_highest']             = 'Highest grade';
$string['gr_partial_warning_title'] = 'Partial grades detected';
$string['gr_partial_warning_body']  = 'the current maximum grade is {max} pts. Statuses are calculated on a 0–100 scale.';
$string['gr_chart_dist']          = 'Grade Distribution';
$string['gr_chart_approval']      = 'Approved vs In Progress';
$string['gr_tip_avg_grade']       = 'Average of grades entered in the gradebook, considering only students with an available grade.';
$string['gr_tip_kpi_approved']    = 'Percentage of students with a grade equal to or above 60 points, calculated over the whole class.';
$string['gr_tip_kpi_in_progress'] = 'Percentage of students with a grade entered but still below the 60-point target, calculated over the whole class.';
$string['gr_tip_kpi_no_grade']    = 'Percentage of students who do not yet have a grade entered in the gradebook, calculated over the whole class.';
$string['gr_tip_highest']         = 'Highest grade recorded among students with an available grade.';
$string['gr_tip_chart_distribution'] = 'Shows how class grades are distributed across score ranges.';
$string['gr_tip_chart_approval']  = 'Compares approved students, students in progress, and students without a grade.';
$string['gr_tip_card_approved']   = 'Lists students who reached the minimum approval target of 60 points.';
$string['gr_tip_card_in_progress'] = 'Lists students below 60 points and how much they need to reach the target.';
$string['gr_tip_card_no_grade']   = 'Lists students without a recorded grade, useful for finding pending grade entries.';
$string['gr_search_placeholder']  = 'Search student...';
$string['gr_filters_title']         = 'Filters';
$string['gr_filter_status_label']   = 'Status';
$string['gr_filter_search_label']   = 'Search';
$string['gr_filter_all']          = 'All students';
$string['gr_export']              = 'Export spreadsheet';
$string['gr_col_student']         = 'Student';
$string['gr_col_grade']           = 'Grade';
$string['gr_col_activities']      = 'Activities with grade';
$string['gr_col_current_grade']   = 'Current grade';
$string['gr_col_missing']         = 'Missing';
$string['gr_col_progress']        = 'Progress';
$string['gr_col_profile']         = 'Profile';
$string['gr_launched']            = 'entered';
$string['gr_avg_current']         = 'Current avg';
$string['gr_avg_missing']         = 'missing on avg';
$string['gr_of']                  = 'of';
$string['gr_grades_launched']     = 'grades entered';

// ── Pedagogical Interventions ──
$string['nav_interventions']      = 'Interventions';
$string['int_page_title']         = 'Pedagogical Interventions';
$string['int_page_subtitle']      = 'Message history and intervention effectiveness';
$string['int_kpi_sent']           = 'Messages sent';
$string['int_kpi_returned']       = 'Returned after message';
$string['int_kpi_avg_return']     = 'Avg. return time';
$string['int_kpi_inactive']       = 'Still inactive';
$string['int_tip_kpi_sent']       = 'Total interventions recorded in the course, including messages sent through Moodle or by email.';
$string['int_tip_kpi_returned']   = 'Percentage of students who accessed Moodle again after receiving an intervention.';
$string['int_tip_kpi_avg_return'] = 'Average time between the intervention being sent and the student first accessing again.';
$string['int_tip_kpi_inactive']   = 'Percentage of students who have not accessed Moodle again after the intervention.';
$string['int_days']               = 'days';
$string['int_of']                 = 'of';
$string['int_students']           = 'students';
$string['int_col_date']           = 'Date';
$string['int_col_student']        = 'Student';
$string['int_col_reason']         = 'Reason';
$string['int_col_teacher']        = 'Teacher';
$string['int_col_status']         = 'Status';
$string['int_col_effect']         = 'Status';
$string['int_no_data']            = 'No interventions recorded yet.';
$string['int_no_filter_results']  = 'No interventions found with the selected filters.';
$string['int_filter_search']      = 'Search';
$string['int_filter_search_placeholder'] = 'Student, teacher, email or subject...';
$string['int_filter_reason']      = 'Reason';
$string['int_filter_all_reasons'] = 'All reasons';
$string['int_filter_status']      = 'Status';
$string['int_filter_all_status']  = 'All statuses';
$string['clearfilters']           = 'Clear filters';
$string['int_filter_from']        = 'From';
$string['int_filter_to']          = 'To';
$string['int_filter_clear']       = 'Clear filters';
$string['int_filter_results']     = 'results';
$string['int_filter_total']       = 'total';
$string['int_no_timeline']        = 'No events in the last 30 days.';
$string['int_view_details']       = 'Intervention details';
$string['int_collapse']           = 'Collapse';
$string['int_notes_btn']          = 'Notes';
$string['int_notes_title']        = 'Teacher notes';
$string['int_notes_subtitle']     = 'Record internal observations about this student follow-up.';
$string['int_notes_placeholder']  = 'E.g.: student replied, needs another contact, agree deadline, monitor progress...';
$string['int_notes_save']         = 'Save note';
$string['int_note_saving']        = 'Saving...';
$string['int_note_saved']         = 'Note saved';
$string['int_note_save_error']    = 'Could not save';
$string['int_current_engagement'] = 'Current engagement';
$string['int_current_engagement_sub'] = 'Current Moodle data';

// ── Message modal ──
$string['msg_reason_select']      = '— Select —';
$string['msg_reason_never']       = 'Never accessed';
$string['msg_reason_low_participation'] = 'Low participation';
$string['msg_reason_academic_pending'] = 'Academic pending work';
$string['msg_reason_difficulty'] = 'Academic difficulty';
$string['msg_reason_low_eng']     = '📉 Low engagement';
$string['msg_reason_risk']        = '⚠️ Dropout risk';
$string['msg_reason_inactive']    = '⏰ No access';
$string['msg_reason_task']        = '📝 Pending assignment';
$string['msg_reason_reeng']       = '🔄 Re-engagement';
$string['msg_reason_praise']      = '🌟 Praise';
$string['msg_reason_other']       = 'Other';
$string['msg_reason_label']       = 'Intervention reason';
$string['msg_type_moodle_hint']   = 'Sent via Moodle internal notification (message_send)';
$string['msg_type_email_hint']    = 'Sent via email using email_to_user() — requires SMTP setup';
$string['msg_no_email']           = 'This student has no registered email.';
$string['msg_no_registered_email']= 'No registered email';
$string['msg_conn_error']         = 'Connection error. Please try again.';
$string['msg_delete_confirm']     = 'Delete this intervention from history?';
$string['msg_deleted']            = 'Intervention deleted.';
$string['msg_delete_error']       = 'Could not delete the intervention.';
$string['msg_required_subject_body'] = 'Fill in the subject and message.';
$string['msg_sending']            = 'Sending...';
$string['msg_channel_email']      = 'email';
$string['msg_channel_moodle']     = 'Moodle';
$string['msg_sent_success']       = '{name} received your message via {channel}!';
$string['msg_send_error']         = 'Could not send: {status}';
$string['msg_unknown_status']     = 'unknown';
$string['msg_select_student_required'] = 'Select a student.';
$string['int_timeline_msg_sent']  = 'Message sent';
$string['int_timeline_submit']    = 'Submission';
$string['int_timeline_access']    = 'Access';
$string['int_timeline_reason']    = 'Reason';
$string['int_no_effect']          = 'No';
// Templates
$string['tpl_never_subject']      = 'Welcome: your course is available';
$string['tpl_never_body']         = "Hello {nome},\n\nWe noticed that you have not accessed the course yet. Reply if you need help accessing it.";
$string['tpl_eng_subject']        = 'Your participation in the course';
$string['tpl_eng_body']           = "Hello {nome},\n\nWe noticed you have been participating less in the course lately. We know life can be challenging, but we want you to know we are here to support your learning.\n\nIf you have any difficulties or questions, please do not hesitate to contact us.\n\nKeep it up!";
$string['tpl_inactive_subject']   = 'We miss you in the course!';
$string['tpl_inactive_body']      = "Hello {nome},\n\nWe noticed you haven't accessed the course in a few days. We want to make sure everything is okay and that you're not facing any difficulties.\n\nThe course has new content available and it would be great to have you back!\n\nWe're available if you need anything.";
$string['tpl_task_subject']       = 'Reminder: pending activity';
$string['tpl_task_body']          = "Hello {nome},\n\nWe'd like to remind you that there are pending activities in the course. Submitting activities is essential for your assessment and learning.\n\nIf you have any questions about how to submit, please contact us.";
$string['tpl_difficulty_subject'] = 'We can support your academic performance';
$string['tpl_difficulty_body']    = "Hello {nome},\n\nWe noticed low grades, unsuccessful attempts, or a recent decline in results. Reply so we can support your learning.";
$string['tpl_other_subject']      = 'Course follow-up';
$string['tpl_other_body']         = "Hello {nome},\n\nWe are contacting you to follow up on your course experience. Reply if there is any situation in which we can help.";
$string['tpl_praise_subject']     = 'Congratulations on your performance!';
$string['tpl_praise_body']        = "Hello {nome},\n\nI want to congratulate you on your excellent performance and dedication throughout the course! Your active participation makes all the difference.\n\nKeep it up — it is a pleasure to have you as a student!";
$string['msg_modal_title']        = 'Message to';
$string['msg_send_type_label']    = 'Send type';
$string['msg_type_moodle_btn']    = 'Moodle Message';
$string['msg_type_email_btn']     = 'E-mail';
$string['msg_subject_label']      = 'Subject';
$string['msg_subject_placeholder']= 'Message subject...';
$string['msg_body_label']         = 'Message';
$string['msg_templates_label']    = 'Templates:';
$string['msg_body_placeholder']   = 'Type your message...';
$string['msg_ai_soon']            = 'AI coming soon';
$string['msg_cancel']             = 'Cancel';
$string['msg_close']              = 'Close';
$string['msg_send_btn']           = 'Send';
$string['msg_send_all_btn']       = 'Send to all';
$string['msg_send_selected_btn']  = 'Send to selected';
$string['msg_recipients_label']   = 'Recipients';
$string['msg_recipients_all']     = 'Everyone in the list';
$string['msg_recipients_select_all'] = 'Select all';
$string['msg_recipients_required'] = 'Select at least one recipient.';
$string['msg_bulk_sent_success']  = 'Sent to {sent} {student}.';
$string['msg_bulk_error_suffix']  = '({errors} error(s))';
$string['msg_detail_reason']      = 'Reason';

// ── Reports tab ──
$string['nav_reports']              = 'Reports';
$string['rp_page_title']            = 'Pedagogical Impact Reports';
$string['rp_page_subtitle']         = 'Student Recovery Index — measures the effect of interventions';
$string['rp_no_data']               = 'Send interventions to see the Recovery Index here.';
$string['rp_no_data_period']        = 'No data available for this period.';
$string['rp_intervention_on']       = 'Intervention:';
$string['rp_recovery_label']        = 'Recovery';
$string['rp_eng_before']            = 'Engagement before';
$string['rp_eng_after']             = 'Engagement after';
$string['rp_active_days']           = 'active days';
$string['rp_before']                = 'Before';
$string['rp_after']                 = 'After';
$string['rp_risk_label']            = 'Dropout risk';
$string['rp_risk_reduced']          = 'risk reduced ✅';
$string['rp_risk_increased']        = 'risk increased ⚠️';
$string['rp_risk_stable']           = 'stable';
$string['rp_kpi_recovery_idx']      = 'Average recovery index';
$string['rp_kpi_scale']             = 'from -100 to +100';
$string['rp_kpi_recovered']         = 'Recovered';
$string['rp_kpi_of_interventions']  = 'of interventions';
$string['rp_kpi_avg_engagement']    = 'Average engagement';
$string['rp_kpi_before_after']      = 'before → after';
$string['rp_kpi_risk']              = 'Average dropout risk';
$string['rp_period_label']          = 'Period:';
$string['rp_days']                  = 'days';
$string['rp_interventions_data']    = 'interventions with data';
$string['rp_section_recovery']      = '🔄 Recovery Index per Intervention';
$string['rp_section_window']        = '— 14-day window before and after each message';
$string['rp_section_chart']         = '📈 Class engagement over time';
$string['rp_chart_label']           = 'Accesses per week';
$string['rp_chart_intervention']    = '💬 Intervention sent this week';

// ── Heatmap tab ──
$string['hm_filter_all_students'] = 'All students';
$string['hm_filter_all_resources'] = 'All resources';
$string['hm_filter_quiz'] = 'Quizzes';
$string['hm_filter_forum'] = 'Forums';
$string['hm_filter_resource'] = 'Files';
$string['hm_filter_url'] = 'URLs';
$string['hm_filter_page'] = 'Pages';
$string['hm_filter_h5p'] = 'H5P';
$string['hm_filter_scorm'] = 'SCORM';
$string['hm_filter_video'] = 'Videos';
$string['hm_mode_access'] = 'Accesses';
$string['hm_mode_dropout'] = 'Dropout';
$string['hm_kpi_peak_hour'] = 'peak hour';
$string['hm_kpi_filtered'] = 'filtered accesses';
$string['hm_kpi_total_logs'] = 'total logs';
$string['hm_tip_kpi_peak_hour'] = 'Hour of the day with the highest access volume within the selected filters.';
$string['hm_tip_kpi_filtered'] = 'Number of accesses considered after applying the student, resource and mode filters.';
$string['hm_tip_kpi_total_logs'] = 'Total Moodle records loaded before the filters on this screen are applied.';
$string['hm_insights_title'] = 'Automatic insights';
$string['hm_grades_title'] = 'Grades × Time of day';
$string['hm_besttime_title'] = 'Best time to intervene';
$string['hm_tip_card_day_hour'] = 'Shows access distribution by weekday and hour. Stronger colors indicate higher event concentration.';
$string['hm_tip_card_insights'] = 'Automatically summarizes important heatmap patterns, such as access peaks, weekly trend and possible deadlines.';
$string['hm_tip_card_grades'] = 'Compares students’ most frequent access time with the recorded grade average.';
$string['hm_tip_card_besttime'] = 'Suggests the best time window to send announcements, messages or interventions to the class.';
$string['hm_besttime_desc'] = 'of students usually access during this period.';
$string['hm_besttime_tip'] = 'Send messages before this window for higher read rates.';
$string['hm_no_data'] = 'No data for the selected filter.';
$string['hm_insufficient_data'] = 'Insufficient data.';
$string['hm_no_data_simple'] = 'No data.';
$string['hm_peak_insight'] = 'Peak access on {day} at {hour}h.';
$string['hm_after18_insight'] = '{pct}% of accesses occurred after 6 pm.';
$string['hm_besttime_insight'] = 'Best message window: {start}h–{end}h.';
$string['hm_deadline_insight'] = '{n} possible deadline(s) detected with access spikes (🔴 cells).';
$string['hm_trend_insight'] = 'Weekly trend: {pct}% compared to last week.';
$string['hm_access_count'] = '{n} access';
$string['hm_accesses_count'] = '{n} accesses';
$string['hm_possible_deadline'] = 'possible deadline!';
$string['hm_trend_up'] = 'upward trend';
$string['hm_trend_down'] = 'downward trend';
$string['hm_morning'] = 'Morning (6am–12pm)';
$string['hm_afternoon'] = 'Afternoon (12pm–6pm)';
$string['hm_evening'] = 'Evening (6pm–12am)';
$string['hm_grade_avg'] = 'Average';
$string['hm_dropout_label'] = 'last accesses';
$string['hm_legend_zero'] = '0';
$string['hm_students_label'] = 'class';
$string['hm_range_today'] = 'Today';
$string['hm_range_7d'] = 'Last 7 days';
$string['hm_range_30d'] = 'Last 30 days';
$string['hm_range_month'] = 'This month';
$string['hm_range_custom'] = 'Custom';
$string['hm_detail_title'] = 'Time detail';
$string['hm_detail_empty'] = 'No students in this selection.';
$string['hm_detail_students'] = 'Students';
$string['hm_detail_activities'] = 'Activities';
$string['hm_view_activities'] = 'View activities';
$string['hm_students_in_slot'] = 'students in selection';
$string['hm_accesses_in_slot'] = 'accesses in selection';
$string['hm_msg_this_time'] = 'Message this group';
$string['hm_view_profiles'] = 'View profiles';
$string['hm_ai_suggestion'] = 'Generate AI guidance';
$string['hm_ai_suggestion_title'] = 'Quick suggestion';
$string['hm_ai_default_suggestion'] = 'Use this selection to send a short guidance message before the busiest time and reinforce the next activity.';
$string['hm_ai_generated_suggestion'] = 'Suggestion: send a short message to the students in this selection, mention the most accessed activity, and agree on one clear next step for the class.';
$string['hm_peak_action'] = 'Peak hour';
$string['hm_filtered_action'] = 'Filtered accesses';
$string['hm_all_action'] = 'All loaded logs';
$string['hm_peak_suggestion'] = 'Place announcements and reminders close to this time, when students are more likely to read them.';
$string['hm_filtered_suggestion'] = 'Use this selection to compare the students and activities that appear most often in the current filters.';
$string['hm_all_suggestion'] = 'Review the overall pattern before applying more specific student, resource, or period filters.';
$string['hm_grade_suggestion'] = 'Compare these students preferred access time with their grades and plan support during periods with stronger presence.';
$string['hm_besttime_action_suggestion'] = 'Send the message shortly before this window to increase the chance of reading and response.';

// ── Engagement prediction tab ──
$string['ev_low_part']            = 'Low participation';
$string['ev_never_access']        = 'Never accessed Moodle';
$string['ev_med_part']            = 'Average participation';
$string['ev_high_part']           = 'High participation';
$string['cl_kpi_tip_never']       = 'Students with 0% participation and no access recorded in Moodle.';
$string['cl_kpi_tip_low']         = 'Students with course participation from 1% to 40%.';
$string['cl_kpi_tip_medium']      = 'Students with course participation from 41% to 69%.';
$string['cl_kpi_tip_high']        = 'Students with course participation equal to or above 70%.';
$string['ev_avg_score']           = 'Average score';
$string['ev_dist_title']          = 'Engagement Distribution';
$string['ev_score_title']         = 'Score by Access Range';
$string['ev_tip_kpi_never_accessed'] = 'Counts students with a 0% score, meaning no Moodle access has been recorded.';
$string['ev_tip_kpi_low_participation'] = 'Counts students with participation from 1% to 40%, indicating low engagement and need for follow-up.';
$string['ev_tip_kpi_medium_participation'] = 'Counts students with participation from 41% to 69%, active but still with room to improve.';
$string['ev_tip_kpi_high_participation'] = 'Counts students with participation at or above 70%, indicating good course engagement.';
$string['ev_tip_kpi_approved'] = 'Counts students who have already reached the passing grade configured in the dashboard.';
$string['ev_tip_card_distribution'] = 'Shows the class distribution by engagement range: never accessed, low, average and high participation.';
$string['ev_tip_card_score_access'] = 'Compares students average score by range of days without Moodle access.';
$string['ev_filter_label']        = 'Filter:';
$string['ev_all']                 = 'All';
$string['ev_sort_score']          = 'Sort by risk';
$string['ev_sort_ago']            = 'By days without access';
$string['ev_sort_alpha']          = 'Alphabetical';
$string['ev_analyze_all']         = 'Analyze Class with AI';
$string['ev_modal_sub']           = 'Generated by AI based on engagement patterns';
$string['ev_students']            = 'student';
$string['ev_empty']               = 'No students in this category.';
$string['ev_active_days']         = 'Active days';
$string['ev_days_no_access']      = 'Days without access';
$string['ev_last_access']         = 'Last access';
$string['ev_trend_drop']          = 'drop';
$string['ev_risk_factors']        = 'Risk factors';
$string['ev_determinants']        = 'Determinants';
$string['ev_det_at_risk']         = 'At risk';
$string['ev_det_rhythm_irregular'] = 'Irregular rhythm';
$string['ev_det_rhythm_good']     = 'Good rhythm';
$string['ev_det_rhythm_constant'] = 'Steady rhythm';
$string['ev_det_high_engagement'] = 'High engagement';
$string['ev_det_no_access_recorded'] = 'No access recorded';
$string['ev_det_weekly_drop']     = 'Weekly drop';
$string['ev_det_low_activity']    = 'Few interactions';
$string['ev_det_pending_activities'] = 'Pending activities';
$string['ev_det_pending_grades']  = 'Pending grades';
$string['ev_factor_recency']      = 'Recency / Absence (35%)';
$string['ev_factor_recency_sub']  = 'days without access';
$string['ev_factor_trend']        = 'Weekly trend (25%)';
$string['ev_factor_consistency']  = 'Historical consistency (20%)';
$string['ev_factor_depth']        = 'Depth / Interactions (12%)';
$string['ev_factor_social']       = 'Social participation / Forum (8%)';
$string['ev_reason_no_access']    = 'No access for';
$string['ev_reason_days_no_access'] = 'days without access';
$string['ev_reason_drop']         = 'Drop of';
$string['ev_reason_drop_this_week'] = 'in accesses this week';
$string['ev_reason_no_forum']     = 'Never posted in the forum';
$string['ev_reason_low_inter']    = 'Interactions well below average';
$string['ev_ai_title']            = 'AI Analysis & Recommendation';
$string['ev_ai_hint']             = 'Click "Generate AI Recommendation" to analyze this student.';
$string['ev_ai_loading']          = 'Generating analysis...';
$string['ev_ai_error']            = 'Error connecting to AI';
$string['ev_gen_ai']              = 'Generate AI Recommendation';
$string['ev_bucket_0_3']          = '0–3 dias';
$string['ev_bucket_4_7']          = '4–7 dias';
$string['ev_bucket_8_14']         = '8–14 dias';
$string['ev_bucket_15_21']        = '15–21 dias';
$string['ev_bucket_21p']          = '>21 dias';

// ── Engagement tab (complemento) ──
$string['ev_trend'] = 'Trend';
$string['ev_approved'] = 'Approved';
$string['ev_ai_analyzing'] = 'Generating analysis...';
$string['ev_ai_class_analyzing'] = 'Generating class analysis...';
$string['ev_ai_class_title'] = 'Prescriptive Class Analysis';
$string['ev_ai_conn_error'] = 'Error connecting to AI. Check module configuration.';
$string['ev_part_never_delta'] = 'score 0%';
$string['ev_part_low_delta'] = 'part. 1–40%';
$string['ev_part_med_delta'] = 'part. 41–69%';
$string['ev_part_high_delta'] = 'part. ≥ 70%';
$string['ev_approved_delta'] = 'grade ≥ 60 pts';
$string['ev_interactions_title'] = 'Interactions this week vs previous week';
$string['ev_no_email'] = 'no email';
$string['ev_reason_no_access_ago'] = 'No access for';
$string['ev_reason_low_inter2'] = 'Interactions well below average';

// ── Content Analysis tab ──
$string['ct_page_title'] = 'Content Intelligence';
$string['ct_page_sub'] = 'AI analyzes engagement with each resource and suggests course improvements';
$string['ct_period_all'] = 'All';
$string['ct_total_events'] = 'Total Events';
$string['ct_all_period'] = 'in period';
$string['ct_videos'] = 'Videos / Resources';
$string['ct_accesses'] = 'accesses';
$string['ct_forum_posts'] = 'Forum Posts';
$string['ct_forum_posts_sub'] = 'discussions';
$string['ct_quiz'] = 'Quiz / H5P';
$string['ct_interactions'] = 'interactions';
$string['ct_task_subs'] = 'Task Submissions';
$string['ct_submissions'] = 'submissions';
$string['ct_daily_title'] = 'Daily Accesses by Content Type';
$string['ct_coverage_title'] = 'Coverage by Resource Type';
$string['ct_dist_title'] = 'Type Distribution';
$string['ct_top_title'] = 'Most Accessed Content';
$string['ct_top_sub'] = 'Ordered by unique students';
$string['ct_th_content'] = 'Content';
$string['ct_th_type'] = 'Type';
$string['ct_th_accesses'] = 'Accesses';
$string['ct_th_unique'] = 'Unique students';
$string['ct_th_coverage'] = 'Coverage';
$string['ct_forum'] = 'Forum';
$string['ct_video'] = 'Video/Resource';
$string['ct_quiz_short'] = 'Quiz/H5P';
$string['ct_task'] = 'Task';
$string['ct_other'] = 'Other';
$string['ct_of'] = 'of';
$string['ct_students'] = 'students';
$string['ct_reach_summary'] = '{type} - {unique} of {total} students';
$string['ct_students_short'] = 'stu.';
$string['ct_low_access_prompt_item'] = '- {name}: {unique} students ({pct}% of the class)';
$string['ct_no_content'] = 'No content recorded in the period.';
$string['nav_content_section'] = 'Content';

// ── Content Intelligence tab (update) ──
$string['ct_no_data'] = 'Load course data to generate the analysis.';
$string['ct_delivery_excellent'] = 'Excellent Submission';
$string['ct_delivery_satisfactory'] = 'Satisfactory Submission';
$string['ct_delivery_critical'] = 'Low Submission';
$string['ct_reach_excellent'] = 'Excellent Reach';
$string['ct_reach_satisfactory'] = 'Satisfactory Reach';
$string['ct_reach_critical'] = 'Low Reach';
$string['ct_updated'] = 'Updated now';
$string['ct_stuck_modules'] = 'Assessment activities';
$string['ct_of_eval'] = 'of ';
$string['ct_low_access'] = 'Low coverage';
$string['ct_reach_below'] = 'coverage ?';
$string['ct_ai_suggestions'] = 'AI Suggestions';
$string['ct_click_generate'] = 'click to generate';
$string['ct_where_stuck'] = 'Activity submissions';
$string['ct_delivered'] = 'submitted';
$string['ct_not_delivered'] = 'not submitted';
$string['ct_total'] = 'total';
$string['ct_critical'] = 'critical';
$string['ct_attention'] = 'attention';
$string['ct_low_label'] = 'low';
$string['ct_no_stuck'] = 'No assessment activity with pending submissions detected.';
$string['ct_material'] = 'Material';
$string['ct_resource'] = 'Resource';
$string['ct_all_good'] = 'All materials have good reach.';
$string['ct_ai_desc'] = 'AI analyzes each resource, identifies implicit prerequisites, low-engagement materials and opportunities to reorganize the learning path.';
$string['ct_generate_btn'] = 'Generate AI suggestions';
$string['ct_refresh'] = 'Refresh';
$string['ct_ai_generating'] = 'Generating prescriptive analysis...';
$string['ct_ai_error'] = 'Error connecting to AI';
$string['ct_reach_table'] = 'Reach by resource';
$string['ct_students_total'] = 'students total';
$string['ct_missing'] = 'Missing';
$string['ct_stuck_note'] = 'students who did not submit relative to the total class';
$string['ct_tip_kpi_stuck_modules'] = 'Number of real Moodle assessment activities included in the submission analysis.';
$string['ct_tip_kpi_low_access'] = 'Number of resources whose coverage is below the expected threshold for the class size.';
$string['ct_tip_card_where_stuck'] = 'Shows assessment activities and how many students submitted or have not submitted each one.';
$string['ct_tip_card_low_access'] = 'Lists materials and resources accessed by few students, helping identify content that is being overlooked.';
$string['ct_tip_card_ai_suggestions'] = 'Generates recommendations to improve the course path based on bottlenecks, low access and log patterns.';
$string['ct_tip_card_reach_table'] = 'Shows each resource reach, coverage percentage, how many students still need to access it and the AI button for a specific recommendation.';

// ── Personalised Plan tab ──
$string['pl_page_title'] = 'Personalised Plan';
$string['pl_page_sub'] = 'Content trail · Study rhythm · Learning style — generated individually by AI';
$string['pl_no_data'] = 'Load data to view personalised plans.';
$string['pl_low_part'] = 'Low participation';
$string['pl_med_part'] = 'Average participation';
$string['pl_high_part'] = 'High participation';
$string['pl_ai_plans'] = 'AI Plans';
$string['pl_morning'] = 'Morning';
$string['pl_afternoon'] = 'Afternoon';
$string['pl_evening'] = 'Evening';
$string['pl_dawn'] = 'Dawn';
$string['pl_peak_title'] = 'Class Peak Hours';
$string['pl_rhythm_title'] = 'Class Rhythm Profile';
$string['pl_best_day'] = 'Best day for synchronous activities';
$string['pl_tip_kpi_low'] = 'Students with participation below 40%. Use this range to prioritize recovery plans and active follow-up.';
$string['pl_tip_kpi_medium'] = 'Students with participation from 40% to 69%. They are active, but still need guidance to move forward.';
$string['pl_tip_kpi_high'] = 'Students with participation at or above 70%. Indicates a good study rhythm and stronger chance of completion.';
$string['pl_tip_peak_card'] = 'Shows which times of day students usually access Moodle the most, helping plan messages and activities.';
$string['pl_tip_rhythm_card'] = 'Summarizes the class by participation range and highlights the best observed day for synchronous activities.';
$string['pl_high_desc'] = 'Participation ≥ 70% — complete activities and tasks';
$string['pl_med_desc'] = 'Participation 40–69% — active with room to improve';
$string['pl_low_desc'] = 'Participation < 40% — need attention';
$string['pl_empty'] = 'No students in this category.';
$string['pl_plan_ready'] = 'Plan generated';
$string['pl_plan_waiting'] = 'Waiting';
$string['pl_click_generate'] = 'Click';
$string['pl_click_generate_2'] = 'to create a personalised plan.';
$string['pl_gen_btn'] = 'Generate AI plan';
$string['pl_email_btn'] = 'Email';
$string['pl_copy_btn'] = 'Copy';
$string['pl_profile_btn'] = 'Profile';
$string['pl_generating'] = 'Generating personalised plan with AI...';

// ── Personalised Plan (tags + days) ──
$string['pl_tag_dawn'] = '🌙 Early bird';
$string['pl_tag_night'] = '🌙 Night owl';
$string['pl_tag_morning'] = '☀️ Morning person';
$string['pl_tag_afternoon'] = '🌤 Afternoon learner';
$string['pl_tag_weekend'] = '📅 Prefers weekends';
$string['pl_tag_steady'] = '✅ Steady rhythm';
$string['pl_tag_irregular'] = '⚡ Irregular rhythm';
$string['pl_tag_risk'] = '🚨 At risk';
$string['pl_tag_high_eng'] = '🟢 High engagement';
$string['pl_tag_med_eng'] = '🔵 Med. engagement';
$string['pl_tag_low_eng'] = '🟠 Low engagement';
$string['pl_tag_inactive'] = '🔴 Low activity';
$string['pl_no_score'] = 'No score';
$string['pl_day_sun'] = 'Sunday';
$string['pl_day_mon'] = 'Monday';
$string['pl_day_tue'] = 'Tuesday';
$string['pl_day_wed'] = 'Wednesday';
$string['pl_day_thu'] = 'Thursday';
$string['pl_day_fri'] = 'Friday';
$string['pl_day_sat'] = 'Saturday';
$string['pl_msg_btn'] = 'Message';

// ── Chat com a turma ──
$string['chat_history'] = 'Conversations';
$string['chat_new_conv'] = 'New conversation';
$string['chat_context_label'] = 'Context';
$string['chat_assistant_name'] = 'Class assistant';
$string['chat_assistant_tip'] = 'Use this assistant to analyse class indicators and privacy-safe pseudonymised educational profiles without sending real student identities to external AI.';
$string['chat_no_data_sub'] = 'Load data to activate chat';
$string['chat_data_ready'] = 'Data loaded — ready to analyse';
$string['chat_input_placeholder'] = 'Ask about the class, request analyses or reports...';
$string['chat_no_convs'] = 'No conversations';
$string['chat_welcome_data'] = 'Hello! I receive aggregate indicators and privacy-safe pseudonymised educational profiles. Real student identities remain inside Moodle and are restored locally in the response.';
$string['chat_welcome_nodata'] = 'Hello! Load class data so I can analyse and answer questions about students.';
$string['chat_sug1'] = 'How large is the at-risk group this week?';
$string['chat_sug2'] = 'Which collective patterns need attention today?';
$string['chat_sug3'] = 'How is the overall class engagement?';
$string['chat_sug4'] = 'Write a general message for the low-performing group';
$string['chat_sug5'] = 'How have the class indicators changed recently?';
$string['chat_sug6'] = 'Make an executive summary of the class';
$string['chat_load_data_first'] = 'Load class data first.';
$string['chat_no_reply'] = 'Could not generate a response. Please try again.';
$string['chat_error'] = 'Error connecting to AI';
$string['chat_no_data'] = 'No data';

// ── Configurações da IA ──
$string['settings_ia_heading'] = 'AI provider credentials (optional)';
$string['settings_ia_heading_desc'] = 'The MWA Analytics Dashboard is fully functional without any external AI service. Optional AI features can be enabled by the administrator using credentials obtained directly from the selected provider. MWA does not sell, provide or require any licence, activation code, subscription or commercial key of its own. When enabled, Moodle connects directly to the selected provider without an intermediary server and without exposing credentials to the browser.';
$string['settings_ia_credential'] = 'AI provider credential';
$string['settings_ia_credential_desc'] = 'Enter a credential obtained directly from the selected AI provider or supplied by institutional infrastructure. This is not a licence, activation code or commercial key for MWA.';
$string['settings_ia_provider'] = 'Optional external AI provider';
$string['settings_ia_provider_desc'] = 'Optional integration for AI-assisted features. The MWA Analytics Dashboard does not require external AI services for its core functionality. No MWA licence, subscription or activation code is needed. When enabled, the institution connects directly to a third-party provider or institutional service of its choice and is responsible for its own credentials and any terms of that service.';
$string['settings_ia_provider_none'] = 'None (AI disabled)';
$string['settings_ia_model'] = 'Model';
$string['settings_ia_model_desc'] = 'Select a model belonging to the chosen provider. Recommended uses the secure default defined by the plugin.';
$string['settings_ia_model_recommended'] = 'Recommended for the provider';
$string['settings_ia_timeout'] = 'Maximum response time (seconds)';
$string['settings_ia_timeout_desc'] = 'Maximum time for direct provider requests. Allowed range: 10 to 180 seconds.';
$string['settings_ia_test_heading'] = 'Test connection';
$string['settings_ia_test_desc'] = 'Save the settings before testing. The test sends only a technical message without course data.';
$string['settings_ia_test_button'] = 'Test connection';
$string['settings_ia_test_page_desc'] = 'This test validates the provider, model and key using a technical request without personal or educational data.';
$string['settings_ia_test_success'] = 'Connection succeeded with {$a->provider} using model {$a->model}.';
$string['settings_ia_test_failure'] = 'Could not connect to the provider.';
$string['chat_unknown_course'] = 'unidentified';
$string['chat_all_period'] = 'entire period';
$string['chat_ia_not_configured'] = 'AI not configured';
$string['chat_ia_not_configured_alert'] = 'AI is not configured. Select a provider, enter its API key, choose a model and save the settings.';

// ── Action Center: retention drill-down ──
$string['ret_drill_active_students'] = '{n} active students';
$string['ret_drill_active_student']  = '{n} active student';
$string['ret_one_week_ago']          = '1 week ago';
$string['ret_weeks_ago']             = '{n} weeks ago';
$string['ret_drill_retention']       = 'Retention';
$string['ret_drill_left']            = 'Did not return ({n}): ';
$string['ret_drill_came']            = 'Returned/new ({n}): ';
$string['ret_drill_stayed']          = '✓ Continued ({n})';
$string['ret_tooltip_returned']      = 'returned';
$string['ret_tooltip_returned_one']  = '{n} returned';
$string['ret_tooltip_returned_many'] = '{n} returned';
$string['ret_tooltip_left']          = 'left';
$string['ret_tooltip_left_one']      = '{n} left';
$string['ret_tooltip_left_many']     = '{n} left';
$string['ret_tooltip_stable']        = 'stable';
$string['ret_unique_students']       = 'unique students';
// ── Action Center: AI prediction panel ──
$string['ai_why_at_risk']            = 'Why is {name} at risk?';
$string['ai_weight']                 = 'weight';
$string['ai_analysis_makes_sense']   = 'Does the analysis make sense?';
$string['ai_feedback_correct']       = '👍 Analysis correct';
$string['ai_student_ok']             = '👎 {name} is OK';
$string['ai_feedback_hint']          = 'Your feedback trains the model for your class.';
$string['ai_generate_email']         = '✉️ Message';
$string['ai_factor_no_access']       = 'No access for {n} day';
$string['ai_factor_no_access_pl']    = 'No access for {n} days';
$string['ai_factor_never_access']    = 'Never accessed Moodle';
$string['ai_factor_recent_access']   = 'Recent access';
$string['ai_factor_partial_grade']   = 'Partial grade ({n} pts)';
$string['ai_factor_low_coverage']    = 'Low coverage ({n}% of activities)';
$string['ai_factor_completion']       = 'Completed activities: {n}%';
$string['ai_factor_grade_progress']   = 'Grades launched: {done}/{total}';
$string['ai_factor_symbolic']        = 'Symbolic presence — logs in but does not interact';
$string['ai_factor_low_engagement']  = 'Engagement below average';
$string['ac_ctx_btn_welcome']        = 'Welcome message';
$string['ac_ctx_btn_activity']       = 'Request activity';
$string['ac_ctx_btn_material']       = 'Study guidance';
$string['ac_ctx_btn_study']          = 'Study guidance';
$string['ac_ctx_no_specific_items']  = 'no specific pending item found in the loaded data';
$string['ac_ctx_no_pending_activity'] = 'no pending activity identified';
$string['ac_ctx_no_pending_material'] = 'no pending material identified';
$string['ac_ctx_no_pending_grade']   = 'no pending grade identified';
$string['ac_ctx_welcome_subject']    = 'Welcome to the course';
$string['ac_ctx_welcome_body']       = "Hello {name},\n\nWelcome to the course! I noticed you have not accessed Moodle yet. Please enter the course, review the initial materials and start with the activities listed below:\n\n{activities}\n\nIf you need help, I am here to support you.";
$string['ac_ctx_activity_subject']   = 'Pending course activities';
$string['ac_ctx_activity_body']      = "Hello {name},\n\nI identified that some activities still need your attention:\n\n{activities}\n\nPlease organize your next Moodle access to complete these steps. If you have any difficulty, let me know.";
$string['ac_ctx_material_subject']   = 'Study guidance';
$string['ac_ctx_material_body']      = "Hello {name},\n\nI selected some study materials that do not appear as accessed in Moodle yet:\n\n{materials}\n\nThese contents help you prepare for the assessment activities. Review them calmly and contact me if you need guidance.";
$string['ac_ctx_study_subject']      = 'Study guidance and pending grades';
$string['ac_ctx_study_body']         = "Hello {name},\n\nTo move forward in the course, prioritize the activities that are still missing a grade or pending:\n\n{grades}\n\nReview the related materials before submitting. I am available to guide your study.";
$string['due_date']                  = 'due';

$string['act_msg_pending']   = 'Message to pending';
$string['act_msg_no_access'] = 'Message no access';

// ── Content Analysis — hardcoded strings fixed ──
$string['ct_eval_activities']   = 'assessment activities';
$string['ct_all_reached']       = 'all';
$string['ct_prompt_intro']      = 'You are an expert in pedagogy and instructional design. The course being analysed is "{course}".';
$string['ct_prompt_unknown']    = 'not identified';
$string['ct_prompt_data']       = 'DATA: {n} students';
$string['ct_prompt_avg']        = ', average grade {avg} pts.';
$string['ct_prompt_stuck']      = 'BOTTLENECK: ';
$string['ct_prompt_not_done']   = 'did not complete';
$string['ct_prompt_none']       = 'none';
$string['ct_prompt_stuck_section'] = 'WHERE STUDENTS GET STUCK:';
$string['ct_prompt_stuck_names'] = ' (possibly stuck: {names})';
$string['ct_prompt_stuck_item'] = '- {name}: {pct}% did not complete{names}';
$string['ct_prompt_low_access_section'] = 'MATERIALS WITH LOW ACCESS:';$string['ct_prompt_low_access'] = 'LOW ACCESS (<35%): ';
$string['ct_prompt_accesses']   = 'accesses';
$string['ct_prompt_low_reach']  = 'LOW REACH (<40%): ';
$string['ct_prompt_instruction']= 'Generate assertive suggestions to improve the design of activities and materials. Prioritize pedagogical diagnosis and content improvement; do not include immediate action or student outreach.';
$string['ct_prompt_s1']         = '## ⚠️ [Content with implicit prerequisite]\n[2-3 sentences]';
$string['ct_prompt_s2']         = '## 📹 [Material with low engagement]\n[2-3 sentences]';
$string['ct_prompt_s3']         = '## 🔀 [Suggested track reorganisation]\n[2-3 sentences]';
$string['ct_prompt_s4']         = '## 📚 [Supplementary content]\n[Based on the course topic, suggest 3-4 specific external resources.]';
$string['ct_prompt_footer']     = 'Use real names. Max 400 words.';
$string['ct_ai_analyzing']      = 'Analysing...';
$string['ct_item_prompt_stuck_line'] = "Possibly stuck students: {names}\n";
$string['ct_item_prompt']       = "You are an expert in instructional design, formative assessment and distance learning.\n\n{context}\n\nBOTTLENECK ACTIVITY:\nName: {name}\nType: {type}\n{dropPct}% of the class did not complete it ({notDelivered} of {total} students)\nCompleted: {concluded} students\n{stuckLine}\nBased on the class context, the course topic inferred from the learning path and this activity position in the sequence, provide exactly two sections, without Markdown headings using #:\n1. Pedagogical diagnosis (2-3 sentences): explain why this activity may be blocking learning. Relate the issue to learning objective, prerequisites, prompt clarity, cognitive complexity, requested evidence, grading criteria and connection with previous materials.\n2. Content improvement and extra repertory (3-4 sentences): suggest concrete changes to improve the activity and enrich learning. Include additional content ideas aligned with the topic, such as guided examples, case study, checklist, model answer, problem situation, short reading, explanatory video, analysis script, concept comparison or preparatory exercise.\n\nAvoid generic advice. Do not make renaming the main recommendation unless the title is clearly the problem. Do not include immediate action, student message, email, reminder, deadline extension or outreach intervention. Use real activity and material names when useful. Max 220 words. Be assertive, specific and useful for the teacher to redesign the activity.";
$string['ct_low_item_prompt']   = "You are an expert in instructional design, content curation and distance learning. Respond in the current Moodle language.\n\n{context}\n\nLOW-COVERAGE RESOURCE:\nName: {name}\nType: {type}\nCoverage: {reachPct}% ({unique} of {total} students accessed it)\n\nBased on the class context, the course topic inferred from the learning path and this resource relationship with assessment activities, provide exactly two sections, without Markdown headings using #:\n1. Pedagogical diagnosis (2-3 sentences): explain what the low coverage indicates about this resource role in the learning path, its connection with activities, clarity of purpose, placement in the course and perceived value for students.\n2. Content improvement and extra repertory (3-4 sentences): suggest concrete improvements to the resource and additional content aligned with the topic, such as a guided example, practical case, reading guide, concept map, checklist, short video, concept comparison, preparatory activity or term bank.\n\nAvoid generic advice. Do not make renaming the main recommendation unless the title is clearly the problem. Do not include immediate action, student message, email, reminder or deadline. Use real activity and material names when useful. Max 220 words.";
// ── Engagement / Prediction ──
$string['ev_student']               = 'student';
$string['ev_prompt_expert']         = 'You are an expert in distance education and dropout analysis. Analyse this student:';
$string['ev_prompt_name']           = '- Name: ';
$string['ev_prompt_score']          = '- Participation score: ';
$string['ev_prompt_ago']            = '- Days without access: ';
$string['ev_prompt_last']           = '- Last access: ';
$string['ev_prompt_inter']          = '- Total interactions: ';
$string['ev_prompt_active']         = '- Active days: ';
$string['ev_prompt_of']             = 'of';
$string['ev_prompt_reasons']        = '- Risk reasons: ';
$string['ev_prompt_none']           = 'none identified';
$string['ev_prompt_provide']        = 'Provide: 1. Diagnosis (1-2 sentences) 2. Probable cause (1 sentence) 3. Immediate action (1-2 sentences) 4. Suggested message (3-4 sentences).';
$string['ev_prompt_style']          = 'Be direct, empathetic and practical.';
$string['ev_prompt_lang_pt']        = 'Responda em português brasileiro.';
$string['ev_prompt_lang_es']        = 'Responda en español.';
$string['ev_prompt_lang_en']        = 'Respond in English.';
$string['ev_prompt_class_expert']   = 'You are a distance education expert. Analyse the engagement of this class:';
$string['ev_prompt_class_total']    = '- Total: ';
$string['ev_prompt_class_never']    = '- Never accessed Moodle (0%): ';
$string['ev_prompt_class_low']      = '- Low participation (1–40%): ';
$string['ev_prompt_class_med']      = '- Average participation (41–69%): ';
$string['ev_prompt_class_high']     = '- High participation (>70%): ';
$string['ev_prompt_class_avg']      = '- Average score: ';
$string['ev_prompt_class_risk']     = '- Highest risks: ';
$string['ev_prompt_class_provide']  = 'Provide: 1. General diagnosis (2-3 sentences) 2. Concerning patterns (2-3 sentences) 3. Immediate interventions (3-4 concrete actions) 4. Medium-term strategies (2-3 suggestions).';
$string['ev_prompt_class_style']    = 'Be direct and practical.';

// ── Personalised Plan — hardcoded strings fixed ──
$string['plh_manha']              = 'Morning (5am–12pm)';
$string['plh_tarde']              = 'Afternoon (12pm–6pm)';
$string['plh_noite']              = 'Evening (6pm–12am)';
$string['plh_madrugada']          = 'Early morning (12am–5am)';
$string['pl_delta_low']           = 'part. < 40%';
$string['pl_delta_med']           = 'part. 40–69%';
$string['pl_delta_high']          = 'part. ≥ 70%';
$string['pl_section_trail']       = 'Content Trail';
$string['pl_section_rhythm']      = 'Suggested Rhythm';
$string['pl_section_style']       = 'Learning Style';
$string['pl_section_action']      = 'Immediate Action';
$string['pl_section_generated']   = 'Plan generated';
$string['pl_dom_forum']           = 'forums (collaborative profile)';
$string['pl_dom_quiz']            = 'quizzes (self-assessment)';
$string['pl_dom_task']            = 'assignments (delivery-oriented)';
$string['pl_dom_video']           = 'content/reading (self-taught)';
$string['pl_eng_very']            = 'HIGHLY ENGAGED';
$string['pl_eng_ok']              = 'ENGAGED';
$string['pl_eng_alert']           = 'AT RISK';
$string['pl_eng_low']             = 'LOW ACTIVITY';
$string['pl_sit_absent']          = 'ABSENT FOR {n} DAYS — critical dropout risk';
$string['pl_sit_dropping']        = 'no access for {n} days — engagement dropping';
$string['pl_sit_last']            = 'last access {n} days ago';
$string['pl_sit_irregular']       = 'very irregular access ({n}% consistency)';
$string['pl_sit_consistent']      = 'consistent rhythm ({n}%) — disciplined student';
$string['pl_sit_few_inter']       = 'very few interactions ({n}) — barely participated';
$string['pl_sit_many_inter']      = '{n} interactions — very active student';
$string['pl_sit_short_sess']      = 'very short sessions ({n}min)';
$string['pl_sit_long_sess']       = 'long sessions ({n}min) — studies in depth';
$string['pl_prompt_intro']        = 'You are a distance education tutor expert. Analyse this student and generate CONCRETE recommendations for their SPECIFIC situation.';
$string['pl_prompt_student']      = 'STUDENT: ';
$string['pl_prompt_level']        = 'LEVEL: ';
$string['pl_prompt_situation']    = 'SITUATION:\n';
$string['pl_prompt_data']         = 'DATA:\n';
$string['pl_prompt_no_acc']       = 'without access';
$string['pl_prompt_active_days']  = 'active days';
$string['pl_prompt_consist']      = 'Consistency: ';
$string['pl_prompt_session']      = 'Average session: ';
$string['pl_prompt_peak_hour']    = 'Favourite time: ';
$string['pl_prompt_peak_day']     = 'Day: ';
$string['pl_prompt_resource']     = 'Resource: ';
$string['pl_prompt_format']       = 'Generate the plan in EXACTLY this format:';
$string['pl_prompt_trail_inst']   = 'Suggest 3 specific activities for a {level} student who prefers {dom} and accesses at {hour}.';
$string['pl_prompt_rhythm_inst']  = 'Sessions of {min}min, {pct}% consistency. Recommend ideal frequency and duration.';
$string['pl_prompt_style_inst']   = 'Based on: favourite resource {dom}, sessions of {min}min. Identify the learning style and adapt.';
$string['pl_prompt_action_inst']  = 'ONE action for today. Situation: {sit}. Say WHAT to do, WHY and HOW.';
$string['pl_prompt_active']       = 'active student';
$string['pl_prompt_rules']        = 'RULES: use exactly the 4 headings above with ###. Max 300 words.';
$string['pl_copy_header']         = 'LEARNING PLAN — ';
$string['pl_copied']              = 'Plan copied!';
$string['pl_empty_response']      = 'Empty response';

// ── Smart KPIs — period selector ──
$string['kpi_compare']     = 'Compare with:';
$string['kpi_period_1d']   = 'Yesterday';
$string['kpi_period_7d']   = 'Last 7 days';
$string['kpi_period_30d']  = 'Last 30 days';

// ── Action Center + Interventions export ──
$string['att_see_all']        = 'View full list';
$string['int_export']         = 'Export report';
$string['int_export_channel'] = 'Channel';
$string['int_export_subject'] = 'Subject';
$string['int_status_sent']    = 'Sent';
$string['int_status_error']   = 'Error';
$string['ct_who_stuck'] = 'Possible: ';

// ── Final hardcoded sweep ──
$string['msg_send_type']              = 'Send type';
$string['msg_subject_placeholder']    = 'Message subject';
$string['msg_sending_to']             = 'Sending to';
$string['ct_no_stuck_found']          = 'no bottleneck identified';
$string['gr_act_prefix']              = 'Act. ';
$string['gr_export_filename']         = 'grades_';
$string['pl_tier_low']                = 'low';
$string['pl_tier_med']                = 'engaged';
$string['pl_tier_high']               = 'highly engaged';
$string['pl_tier_alert']              = 'alert';
$string['pl_rhythm_steady']           = 'steady';
$string['pl_rhythm_irregular']        = 'irregular';
$string['pl_rhythm_risk']             = 'at risk';

// ── Privacy metadata — external API calls ──
$string['privacy:metadata:external:ia'] = 'The official DeepSeek, OpenAI, Google Gemini, Anthropic or OpenRouter API selected by the institution for individual pedagogical recommendations. Transmission occurs only when AI is enabled. Direct identifiers are removed or replaced with a temporary alias. Processing occurs in the infrastructure and location defined by the selected provider, without an MWA intermediary.';
$string['privacy:metadata:external:ia:student_alias'] = 'A temporary student alias without a name, email address or Moodle user ID.';
$string['privacy:metadata:external:ia:participation'] = 'Educational indicators describing student participation.';
$string['privacy:metadata:external:ia:interactions'] = 'The quantity and pedagogical characteristics of course interactions.';
$string['privacy:metadata:external:ia:active_days'] = 'The number of days with course activity.';
$string['privacy:metadata:external:ia:last_access'] = 'The relative time or status of the last access, without an IP address.';
$string['privacy:metadata:external:ia:completion'] = 'Activity and content completion indicators.';
$string['privacy:metadata:external:ia:engagement'] = 'Calculated engagement and pedagogical risk indicators.';
$string['privacy:metadata:external:ia:pending_items'] = 'Counts or names of pending activities and content.';
$string['privacy:metadata:external:ia:grades'] = 'Performance and grade indicators required for an individual recommendation.';
$string['privacy:metadata:external:ia:teacher_prompt'] = 'The teacher instruction used to generate pedagogical analysis or a recommendation, after known identifiers are removed.';
$string['privacy:metadata:external:ia:forum_post_content'] = 'Pseudonymised forum post text used for pedagogical thematic analysis.';
$string['privacy:metadata:external:ia:quiz_configuration'] = 'Non-textual quiz metadata, such as question count and types, attempts, time limit and maximum grade. Question text, alternatives and answer keys are not transmitted.';
$string['privacy:metadata:external:ia:quiz_questions'] = 'Quiz question text is explicitly withheld inside Moodle and is not transmitted to the external AI provider.';
$string['privacy:metadata:external:ia:quiz_answers_and_correctness'] = 'Quiz alternatives, answers and correctness markers are explicitly withheld inside Moodle and are not transmitted to the external AI provider.';
$string['privacy:metadata:external:ia:course_resource_content'] = 'Full or extracted content from course pages, books, resources and H5P activities used for pedagogical analysis.';
$string['privacy:metadata:external:ia:intervention_history'] = 'Previous pedagogical interventions, notes, messages and outcome indicators used to support follow-up analysis.';
$string['privacy:metadata:external:chat'] = 'The official DeepSeek, OpenAI, Google Gemini, Anthropic or OpenRouter API selected by the institution for analysis and pedagogical decision support. Transmission occurs only when AI is enabled. Chat receives aggregate class data and, when pedagogically required, minimised individual educational metrics linked only to request-scoped pseudonyms; real names and direct identifiers are not transmitted. Processing occurs in the infrastructure and location defined by the selected provider, without an MWA intermediary.';
$string['privacy:metadata:external:chat:messages'] = 'Conversation messages sent by the teacher. Names and email addresses of enrolled students are removed before transmission. The plugin does not persist the conversation on the server after the response.';
$string['privacy:metadata:external:chat:conversation_history'] = 'The conversation history included in the current request so the provider can answer in context. The plugin does not persist this history on the server after the response.';
$string['privacy:metadata:external:chat:class_counts'] = 'Aggregate counts such as students, interactions, approvals, pending items and students at risk or without recent access.';
$string['privacy:metadata:external:chat:class_averages'] = 'Aggregate class averages such as grades, interactions, coverage and completion.';
$string['privacy:metadata:external:chat:risk_counts'] = 'The aggregate number of students in risk groups, without individual identification.';
$string['privacy:metadata:external:chat:activity_metrics'] = 'Activity names and aggregate metrics such as accesses, coverage and the number of students missing.';
$string['privacy:metadata:external:chat:peak_access_time'] = 'The access peak hour or time range calculated for the class.';

// ── Privacy metadata — messages table ──
$string['privacy:metadata:messages']                     = 'Stores pedagogical intervention messages sent by teachers to students through the MWA Dashboard. Each record links the sending teacher, the receiving student and the course.';
$string['privacy:metadata:messages:userid']              = 'The ID of the student who received the message.';
$string['privacy:metadata:messages:teacherid']           = 'The ID of the teacher who sent the message.';
$string['privacy:metadata:messages:courseid']            = 'The course in which the intervention took place.';
$string['privacy:metadata:messages:subject']             = 'The subject line of the message.';
$string['privacy:metadata:messages:message']             = 'The body of the intervention message sent to the student.';
$string['privacy:metadata:messages:timesent']            = 'The Unix timestamp at which the message was sent.';
$string['privacy:metadata:messages:status']              = 'Delivery status of the message: sent or error.';
$string['privacy:metadata:messages:ai_generated']        = 'Whether the message content was generated with AI assistance.';
$string['privacy:metadata:messages:intervention_reason'] = 'The pedagogical reason selected by the teacher for the intervention (e.g. low engagement, pending task).';
$string['privacy:metadata:messages:moodle_msgid']        = 'The internal ID of the message created by the Moodle messaging system.';
$string['privacy:metadata:messages:send_type']           = 'The channel used to deliver the message: moodle (internal messaging) or email.';
$string['privacy:metadata:messages:teacher_note']        = 'Private note recorded by the teacher about the intervention.';
$string['privacy:metadata:messages:teacher_note_updated'] = 'Unix timestamp of the last update to the teacher private note.';

// ── I18N001 fixes ──
$string['settings_ia_provider_gemini']  = 'Google Gemini — optional external integration';
$string['settings_ia_provider_openai']  = 'OpenAI — optional external integration';
$string['settings_ia_provider_deepseek']= 'DeepSeek — optional external integration';
$string['settings_ia_provider_anthropic'] = 'Anthropic Claude — optional external integration';
$string['settings_ia_provider_openrouter'] = 'OpenRouter — optional external integration';
$string['brand_name']                   = 'Moodle';
$string['int_time_lt1min']              = '< 1min';
$string['int_time_min']                 = 'min';
$string['int_time_hour']                = 'hour';
$string['int_time_hours']               = 'hours';
$string['int_time_day']                 = 'day';
$string['int_time_days']                = 'days';
$string['int_export_sheet_name']        = 'Contacts';

// ── I18N001 additional fixes ──
$string['brand_logo_alt'] = 'MWA Logo';
$string['err_ajax_bridge'] = 'Dashboard AJAX bridge is not available.';

// ── Engagement trend strings ──
$string['ev_trend_drop']          = 'Sharp drop in access this week';
$string['ev_reason_drop']         = 'drop';
$string['ev_interactions_title']  = 'This week vs previous week interactions';
$string['ev_trend']               = 'Trend';
$string['open_btn'] = 'Details';

// ── AI button in message modal ──
$string['msg_ai_generate'] = 'Generate with AI';
$string['msg_ai_generating'] = 'Generating message...';
$string['msg_ai_done']     = 'Message generated by AI!';

// ── Template strings fix (reviewer) ──
$string['msg_select_student']  = '— Select student —';
$string['msg_new_message']     = 'New message';
$string['sp_btn_message']      = 'Message';
$string['sp_btn_history']      = 'History';
$string['sp_days_suffix']      = 'd';
$string['sp_score_label']      = 'score';
$string['sp_score_format']     = 'score {$a}/100';
$string['sp_timeline_label']   = 'Timeline — last 30 days';
$string['sp_tl_access']        = 'Access';
$string['sp_tl_completion']    = 'Completion / submission';
$string['sp_tl_message']       = 'Message sent';
$string['sp_tl_period']        = 'Period';
$string['sp_tl_7d']            = 'Last 7 days';
$string['sp_tl_30d']           = 'Last 30 days';
$string['sp_tl_90d']           = 'Last 90 days';
$string['sp_tl_all']           = 'Full history';
$string['sp_tl_show_more']     = 'Show more';
$string['sp_tl_show_less']     = 'Show less';
$string['chat_delete_conv']    = 'Delete';
$string['chat_delete_icon']    = '×';
$string['close_icon']          = '×';

// ── Hardcoded strings fix — final sweep ──
$string['ac_concluded']                  = '✓ Completed';
$string['int_tpl_dropout_risk']          = 'Dropout risk';
$string['chat_alert_viewed_not_submitted']= 'Viewed but not submitted: ';
$string['chat_alert_symbolic']           = 'Symbolic access: ';
$string['chat_alert_night_owls']         = 'Night owls: ';
$string['chat_unknown_course']           = 'not identified';
$string['chat_lang_instr_pt']            = 'Responda sempre em português brasileiro, de forma direta e prática.';
$string['chat_lang_instr_es']            = 'Responda siempre en español, de forma directa y práctica.';

// Tooltips - Individual profile.
$string['sp_tip_last_access']        = 'Shows how many days have passed since the student last accessed the course.';
$string['sp_tip_active_days']        = 'Counts how many different days had recorded student activity or access.';
$string['sp_tip_grade']              = 'Shows the total grade available in the Moodle gradebook for this student.';
$string['sp_tip_engagement']         = 'Summarises student engagement using access, activities, grades and interactions.';
$string['sp_tip_activity_7d']        = 'Shows the student interactions in the last 7 days and compares them with the previous week.';
$string['sp_tip_timeline']           = 'Lists recent student events, such as accesses, activities, messages and submissions.';
$string['sp_tip_daily_journey']      = 'Shows the daily evolution of student access and interactions in the analysed period.';
$string['sp_tip_activity_calendar']  = 'Shows the distribution of student activity over recent weeks, highlighting days with more records.';

$string['ct_delivered_single'] = 'submitted';

$string['ct_delivered_plural'] = 'submitted';

$string['ct_not_delivered_single'] = 'has not submitted';

$string['ct_not_delivered_plural'] = 'have not submitted';

$string['msg_target_items_label'] = 'Items to track';
$string['msg_target_items_intro'] = 'Recommended items:';
$string['msg_no_open_pending_items'] = 'No open pending item for the selected students.';
$string['msg_target_activity'] = 'Activity';
$string['msg_target_resource'] = 'Content';
$string['int_result_accessed'] = 'Accessed';
$string['int_result_delivered'] = 'Submitted';
$string['int_result_pending'] = 'Pending';
$string['privacy:metadata:messages:target_type'] = 'The tracking type associated with the intervention.';
$string['privacy:metadata:messages:target_items'] = 'The list of activities or content items recommended to the student for intervention tracking.';

// Teacher feedback tab.
$string['tf_nav'] = 'Follow-up Report';
$string['tf_page_title'] = 'Learning Follow-up and Progress Report';
$string['tf_page_subtitle'] = 'Analysis of pedagogical intervention outcomes and student progress.';
$string['tf_no_data'] = 'Send interventions to see pedagogical effectiveness here.';
$string['tf_loading'] = 'Analysing intervention effectiveness...';
$string['tf_kpi_evolved']           = 'Full progress';
$string['tf_kpi_students_tracked']  = 'Tracked students';
$string['tf_kpi_students_all']      = '100% who received an intervention';
$string['tf_kpi_students_none']     = 'No snapshots in this period';
$string['tf_kpi_responded']         = 'Responded to intervention';
$string['tf_kpi_no_response']       = 'No response';
$string['tf_th_student']            = 'Student';
$string['tf_th_snapshot']           = 'Initial snapshot';
$string['tf_th_intervention']       = 'Intervention';
$string['tf_th_after_data']         = 'Subsequent data';
$string['tf_th_response']           = 'Response';
$string['tf_th_progress']           = 'Progress';
$string['tf_th_activity_days']      = 'Activity at 7/15 days';
$string['tf_yes']                   = 'Yes';
$string['tf_no']                    = 'No';
$string['tf_empty_eligible']        = 'No eligible data';
$string['tf_empty_eligible_desc']   = 'The report requires interventions with a historical snapshot in the selected period.';
$string['tf_students_approved']     = 'Approved students:';
$string['tf_students_improved']     = 'Students who improved:';
$string['tf_no_student_approved']   = 'No student approved at this point.';
$string['tf_no_student_improved']   = 'No student showed improvement in this series for the selected point.';
$string['tf_no_student_counted']    = 'No student counted for this indicator.';
$string['tf_kpi_students_tracked_tip'] = 'Unique students who received an intervention with a historical snapshot in the selected period.';
$string['tf_kpi_responded_tip']     = 'Students with evidence of a response after the intervention.';
$string['tf_kpi_evolved_tip']       = 'Students who fully completed the tracked items or reached the verifiable objective of the intervention.';
$string['tf_kpi_tracking_tip']      = 'Students who returned or showed partial progress, but have not yet fully completed the follow-up.';
$string['tf_kpi_no_response_tip']   = 'Students with no interaction or academic action recorded in Moodle after the intervention.';
$string['tf_kpi_sustained_tip']     = 'Interaction recorded after day 7 following the intervention.';
$string['tf_cont_sustained']        = 'Sustained progress';
$string['tf_cont_sustained_sub']    = 'Interacted after day 7';
$string['tf_cont_observing']        = 'Under observation';
$string['tf_cont_observing_sub']    = 'Day 1–7 window in progress';
$string['tf_cont_not_sustained']    = 'Not sustained';
$string['tf_cont_not_sustained_sub']= 'No interaction after day 7';
$string['tf_cont_select_prompt']    = 'Select a classification';
$string['tf_cont_select_sub']       = 'See the student names in this category.';
$string['tf_cont_window_label']     = 'Assessment after day 7';
$string['tf_kpi_tracking']          = 'Partial progress';
$string['tf_kpi_sustained']         = 'Sustained progress';
$string['tf_donut_rate_label']      = 'Overall full-progress rate';
$string['tf_donut_select_prompt']   = 'Select a chart colour';
$string['tf_donut_select_sub']      = 'See the students included in this category.';
$string['tf_sustained_label']       = 'Sustained progress';
$string['tf_sustained_sub']         = 'Interacted after day 7';
$string['tf_no_eligible_after']     = 'No eligible students after 7 days';
$string['tf_of_eligible']           = 'of eligible total';
$string['tf_of_total']              = 'of total';
$string['tf_error_load']            = 'Could not load the report';
$string['tf_error_load_sub']        = 'Please try again or check the Moodle data connection.';
$string['tf_loading_consolidate']   = 'Consolidating snapshots and subsequent Moodle data…';
$string['tf_ai_error']              = 'Could not generate the AI report.';
$string['tf_ai_loading']            = 'Cross-referencing before and after intervention data…';
$string['tf_ai_not_configured']     = 'AI not yet configured';
$string['tf_ai_not_configured_sub'] = 'Configure AI in the block settings to generate the comparative analysis.';
$string['tf_ai_intro_title']        = 'What does this report analyse?';
$string['tf_ai_intro_sub']          = 'The AI cross-references the snapshot recorded at intervention time with subsequent access, academic actions, grades, engagement, and continuity. The analysis respects the filters selected above.';
$string['tf_ai_topic_before_after'] = 'Before and after';
$string['tf_ai_topic_progress']     = 'Response and progress';
$string['tf_ai_topic_priority']     = 'Priority students';
$string['tf_ai_topic_recommend']    = 'Pedagogical recommendations';
$string['tf_ai_generate_btn']       = 'Generate AI report';
$string['tf_ai_report_title']       = 'Intelligent report: before and after the intervention';
$string['tf_ai_regen_btn']          = 'Regenerate';
$string['tf_ai_report_notice']      = 'The AI interprets the indicators for the selected view. Review the analysis before using it in pedagogical decisions.';
$string['tf_linechart_title']       = 'Progress over the period';
$string['tf_linechart_aria']        = 'Comparison between initial snapshot and current data';
$string['tf_linechart_marker']      = 'Intervention';
$string['tf_linechart_select']      = 'Select a chart point';
$string['tf_linechart_select_sub']  = 'See the students who improved in the snapshot vs current comparison.';
$string['tf_journey_title']         = 'Daily events after the snapshot';
$string['tf_journey_aria']          = 'Daily access journey after the intervention';
$string['tf_journey_d0']            = 'Intervention (D0)';
$string['tf_journey_access']        = 'Accesses/interactions';
$string['tf_journey_academic']      = 'Academic actions';
$string['tf_journey_select']        = 'Select a chart point';
$string['tf_journey_select_sub']    = 'See the count and students with real records on that day after the intervention.';
$string['tf_journey_info']          = 'D0 represents the intervention date. For groups, journeys are aligned in relative days, using each student\'s most recent intervention to avoid duplication.';
$string['tf_no_student_here']       = 'No students in this category.';
$string['tf_no_student_point']      = 'No student data at this point.';
$string['tf_students_label']        = 'Students:';
$string['tf_progress_by_strategy']  = 'Full progress by mediation strategy';
$string['tf_progress_after']        = 'Progress after interventions';
$string['tf_kpi_return'] = 'Return after contact';
$string['tf_kpi_engagement'] = 'Improved engagement';
$string['tf_kpi_grade'] = 'Improved grade';
$string['tf_kpi_risk'] = 'Still at risk';
$string['tf_kpi_interventions_total'] = 'Interventions';
$string['tf_messages_sent'] = 'messages sent';
$string['tf_unique_students'] = 'unique students';
$string['tf_not_returned'] = 'did not return';
$string['tf_pending_unique_students'] = 'pending students';
$string['tf_kpi_worse'] = 'Worsened or cooled down';
$string['tf_kpi_inactive_after_contact'] = 'Remain pending';
$string['tf_inactive_after_contact'] = 'Remain pending';
$string['tf_inactive_after_contact_sub'] = 'no access after contact';
$string['tf_pending_after_contact'] = 'Remain pending';
$string['tf_students_returned'] = 'students returned';
$string['tf_students_improved'] = 'with progress';
$string['tf_grade_events'] = 'with new grade/submission';
$string['tf_need_followup'] = 'need follow-up';
$string['tf_cold_after_contact'] = 'no response after contact';
$string['tf_chart_timeline'] = 'Timeline: before and after';
$string['tf_chart_bars'] = 'Intervention results';
$string['tf_chart_donut'] = 'Result distribution';
$string['tf_avg_engagement'] = 'Average engagement';
$string['tf_advanced'] = 'Progressed';
$string['tf_same'] = 'No change';
$string['tf_worse'] = 'Worsened/cooled';
$string['tf_partial'] = 'Partial progress';
$string['tf_card_advanced'] = 'Who progressed';
$string['tf_card_synthesis']        = 'Overall progress summary';
$string['tf_card_continuity']       = 'Continuity after intervention (funnel)';
$string['tf_card_mediation_time']   = 'Response time after intervention (average)';
$string['tf_card_journey']          = 'Daily access journey after intervention';
$string['tf_card_trajectory']       = 'Trajectory by intervention';
$string['tf_card_followup'] = 'Pending follow-up';
$string['tf_card_effective'] = 'Most effective interventions';
$string['tf_card_summary'] = 'Teacher summary';
$string['tf_summary_text'] = 'After {total} interventions with {unique} unique students, {returned} accessed again, {delivered} submitted activities, {grade} had grade progress and {noresponse} are still pending. Prioritize another contact with pending students and keep monitoring students who already responded.';
$string['tf_none'] = 'No students in this group.';
$string['tf_returned_short'] = 'returned';
$string['tf_returned_single'] = 'returned';
$string['tf_returned_plural'] = 'returned';
$string['tf_improved_engagement_short'] = 'improved engagement';
$string['tf_improved_grade_short'] = 'improved grade';
$string['tf_still_risk_short'] = 'Still at risk';
$string['tf_deliveries_short'] = 'submission(s)';
$string['tf_grade_short'] = 'new grade';
$string['tf_no_progress_short'] = 'no progress';
$string['tf_no_reason_data'] = 'Not enough reason data to rank.';
$string['tf_interventions_short'] = 'interventions';
$string['tf_show_all'] = 'Show all';
$string['tf_risk_short'] = 'at risk';
$string['tf_summary_reading_title'] = 'Pedagogical reading';
$string['tf_summary_reading_text'] = '{total} interventions were recorded involving {unique} unique student(s).';
$string['tf_summary_returned_metric'] = 'returned';
$string['tf_summary_delivered_metric'] = 'submitted';
$string['tf_summary_grade_metric'] = 'improved grade';
$string['tf_summary_pending_metric'] = 'pending';
$string['tf_summary_returned_metric_single'] = 'returned';
$string['tf_summary_delivered_metric_single'] = 'submitted';
$string['tf_summary_grade_metric_single'] = 'improved grade';
$string['tf_summary_pending_metric_single'] = 'pending';
$string['tf_summary_impact_title'] = 'Observed impact';
$string['tf_summary_impact_text'] = '{returned} student(s) accessed Moodle again, {delivered} submitted activities and {grade} had a new grade or performance record after the intervention.';
$string['tf_summary_pending_title'] = 'Attention point';
$string['tf_summary_pending_text'] = '{noresponse} student(s) are still pending. This means some contacts have not yet produced evidence of return, access, submission or grade progress.';
$string['tf_summary_no_pending_text'] = 'There are currently no pending students after contact. Keep monitoring whether the progress is sustained in the next accesses.';
$string['tf_summary_next_title'] = 'Suggested next action';
$string['tf_summary_next_pending'] = 'prioritize a short contextual follow-up message for pending students, mentioning the open activity or content still missing.';
$string['tf_summary_next_monitor'] = 'monitor whether responding students maintain access, submissions and grade progress over the next few days.';
$string['tf_summary_note'] = 'When a student has more than one intervention, this summary consolidates by unique student; result charts count each intervention separately.';
$string['tf_intervention_single'] = 'intervention';
$string['tf_summary_reading_prefix'] = 'Recorded';
$string['tf_summary_reading_middle'] = 'involving';
$string['tf_summary_unique_students_suffix'] = 'unique student(s).';
$string['tf_summary_pending_prefix'] = 'There are still';
$string['tf_summary_pending_suffix'] = 'pending student(s). This means some contacts have not yet produced evidence of return, access, submission or grade progress.';
$string['tf_summary_impact_returned'] = 'student(s) accessed Moodle again,';
$string['tf_summary_impact_delivered'] = 'submitted activities and';
$string['tf_summary_impact_grade'] = 'had a new grade or performance record after the intervention.';
$string['tf_filter_period'] = 'Period';
$string['tf_filter_all_periods'] = 'All time';
$string['tf_filter_7d'] = 'Last 7 days';
$string['tf_filter_30d'] = 'Last 30 days';
$string['tf_filter_90d'] = 'Last 90 days';
$string['tf_filter_reason'] = 'Reason';
$string['tf_filter_all_reasons'] = 'All reasons';
$string['tf_filter_all_teachers']   = 'All teachers';
$string['tf_filter_all_students']   = 'All students';
$string['tf_filter_all_period']     = 'All periods';
$string['tf_tab_overview']          = 'Overview';
$string['tf_tab_engagement']        = 'Engagement';
$string['tf_tab_learning']          = 'Learning';
$string['tf_tab_interaction']       = 'Interaction';
$string['tf_tab_continuity']        = 'Permanence';
$string['tf_tab_mediation']         = 'Mediation';
$string['tf_tab_trajectory']        = 'Trajectory';
$string['tf_tab_ai']                = 'AI Report';
$string['tf_chart_engagement']      = 'Engagement index (0–100)';
$string['tf_chart_grade']           = 'Average grade (points)';
$string['tf_chart_approval']        = 'Approved (≥60)';
$string['tf_funnel_received']       = 'Received intervention';
$string['tf_funnel_responded']      = 'Responded to intervention';
$string['tf_funnel_active7']        = 'Active within 7 days';
$string['tf_funnel_sustained']      = 'Active after day 7';
$string['tf_journey_activities']    = 'Completed activities';
$string['tf_journey_resources']     = 'Accessed resources';
$string['tf_journey_attempts']      = 'Made new attempts';
$string['tf_journey_returned']      = 'Resumed access';
$string['tf_interaction_select']    = 'Select an indicator';
$string['tf_interaction_select_sub']= 'See the students counted.';
$string['tf_no_tracked_items']      = 'No tracked items';
$string['tf_student_fallback']      = 'Student';
$string['tf_filter_status'] = 'Status';
$string['tf_filter_all_statuses'] = 'All statuses';
$string['tf_filter_status_advanced'] = 'Progressed';
$string['tf_filter_status_partial'] = 'Partial progress';
$string['tf_filter_status_pending'] = 'Pending';
$string['tf_filter_student'] = 'Student';
$string['tf_filter_student_placeholder'] = 'Search student...';
$string['tf_filter_empty'] = 'No interventions found with the selected filters.';
$string['tf_filter_count_prefix'] = 'Showing';
$string['tf_filter_count_suffix'] = 'intervention(s) in this view.';
$string['tf_detail_interventions'] = 'Interventions received';
$string['tf_detail_accessed_after'] = 'Accessed after';
$string['tf_detail_delivered'] = 'Submitted something';
$string['tf_detail_grade'] = 'Improved grade';
$string['tf_detail_reaction_time'] = 'Reaction time';
$string['tf_detail_targets'] = 'Tracked items';
$string['tf_detail_targets_pending'] = 'Pending items';
$string['tf_legend_pending'] = 'Pending';
$string['tf_legend_done'] = 'Done';
$string['tf_yes'] = 'Yes';
$string['tf_no'] = 'No';
$string['tf_tip_kpi_interventions'] = 'Total interventions sent in the current view. Each recorded message counts as one intervention.';
$string['tf_tip_kpi_return'] = 'Percentage of unique students who accessed Moodle again after receiving an intervention.';
$string['tf_tip_kpi_engagement'] = 'Percentage of unique students whose participation or activity increased after contact.';
$string['tf_tip_kpi_grade'] = 'Percentage of unique students with a new grade, submission or performance evidence after the intervention.';
$string['tf_tip_kpi_risk'] = 'Percentage of unique students who still have pending interventions or no evidence of return.';
$string['tf_tip_chart_timeline'] = 'Compares average engagement before and after interventions, consolidating the observed effect on contacted students.';
$string['tf_tip_chart_bars'] = 'Shows how many interventions produced progress, partial progress or remained pending.';
$string['tf_tip_card_advanced'] = 'Lists students with a positive signal after contact, such as return, submission, engagement improvement or new grade.';
$string['tf_tip_card_followup'] = 'Lists students with pending interventions who need additional follow-up.';
$string['tf_tip_card_effective'] = 'Shows which intervention reasons had the strongest proportional return, helping choose more effective approaches.';
$string['tf_tip_card_summary'] = 'Summarises the main intervention outcomes in pedagogical language to guide the teacher next action.';

// YouTube API settings
$string['settings_youtube_heading'] = 'YouTube API';
$string['settings_youtube_heading_desc'] = 'Optional API key to fetch title, description and duration of YouTube videos referenced in activities.';
$string['settings_youtube_api_key'] = 'YouTube API Key';
$string['settings_youtube_api_key_desc'] = 'YouTube Data API v3 key. Get it free at console.developers.google.com. Without it, YouTube videos are detected but without metadata.';
$string['act_kpi_due'] = 'Due date';
$string['act_kpi_expired'] = 'Expired';
$string['act_kpi_status'] = 'Status';
$string['act_kpi_closed'] = 'Closed';
$string['act_kpi_no_deadline'] = 'No deadline';
$string['act_mod_context_assign'] = 'assignment with a file or text submission';
$string['act_mod_context_forum'] = 'collaborative discussion forum';
$string['act_mod_context_quiz'] = 'automatically graded quiz/assessment';
$string['act_mod_context_h5pactivity'] = 'interactive H5P content';
$string['act_mod_context_page'] = 'content page';
$string['act_mod_context_book'] = 'book/reading material';
$string['act_mod_context_url'] = 'external link/resource';
$string['act_mod_context_scorm'] = 'SCORM package';
$string['act_mod_context_glossary'] = 'collaborative glossary';
$string['act_mod_context_wiki'] = 'collaborative wiki';
$string['act_mod_context_data'] = 'collaborative database';
$string['act_mod_context_resource'] = 'downloadable file';
$string['act_mod_context_label'] = 'label/text in the learning path';
$string['act_mod_context_activity'] = 'activity';
$string['ac_ctx_act_pending_subject'] = 'Pending activity: {activity}';
$string['ac_ctx_act_pending_body']    = "Hi {name},\n\nI noticed you haven't completed the activity \"{activity}\" yet. Please access Moodle and submit before the deadline.\n\nFeel free to reach out if you have any questions.";
$string['ac_ctx_act_no_access_subject'] = 'You haven\'t accessed yet: {activity}';
$string['ac_ctx_act_no_access_body']    = "Hi {name},\n\nI noticed you haven't accessed the activity \"{activity}\" on Moodle yet. Please take a look when you can — it is part of your course path.\n\nI'm here if you need any help.";

// Interventions — new design v3.5
$string['int_period_label']            = 'Period';
$string['int_period_30d']              = 'Last 30 days';
$string['int_period_7d']               = 'Last 7 days';
$string['int_period_90d']              = 'Last 90 days';
$string['int_period_all']              = 'All time';
$string['int_filter_professor']        = 'Teacher';
$string['int_filter_all_professors']   = 'All teachers';
$string['int_filter_student_placeholder2'] = 'Search student...';
$string['int_summary_title']           = 'Period Summary';
$string['int_summary_tip']             = 'Summary of intervention indicators for the selected period and filters.';
$string['int_summary_realized']        = 'Interventions made';
$string['int_summary_unique']          = 'Unique students';
$string['int_summary_teachers']        = 'Teachers involved';
$string['int_summary_rate']            = 'Overall return rate';
$string['int_motivo_never']            = 'Never accessed';
$string['int_motivo_never_desc']       = 'Enrolled student who has never logged in.';
$string['int_motivo_low']              = 'Low participation';
$string['int_motivo_low_desc']         = 'Low frequency, drop in engagement or interaction.';
$string['int_motivo_pending']          = 'Academic pending';
$string['int_motivo_pending_desc']     = 'Pending activities, tasks or submissions.';
$string['int_motivo_difficult']        = 'Academic difficulty';
$string['int_motivo_difficult_desc']   = 'Low grades, difficulty with content or performance drop.';
$string['int_motivo_other']            = 'Other';
$string['int_motivo_other_desc']       = 'Situations that do not fit the above categories.';
$string['int_col_situation']           = 'Identified Situation';
$string['int_col_action']              = 'Intervention Made';
$string['int_col_followup']            = 'Follow-up';
$string['int_status_awaiting']         = 'Awaiting response';
$string['int_status_returned']         = 'Returned';
$string['int_status_tracking']         = 'Partial progress';
$string['int_status_evolved']          = 'Full progress';
$string['int_followup_7d']             = 'Check in 7 days';
$string['int_followup_5d']             = 'Check in 5 days';
$string['int_followup_done']           = 'Follow-up complete';
$string['int_registered']             = 'Registered interventions';
$string['int_export_btn']             = 'Export';
$string['int_action_menu_title']      = 'Actions';
$string['int_snapshot_lock']          = 'Historical grade not shown: this snapshot was created before the grade total calculation fix.';
$string['int_pag_showing']            = 'Showing {start} to {end} of {total} interventions';
$string['int_action_welcome']         = "Welcome message\nGuidance for first access";
$string['int_action_reengagement']    = "Re-engagement message\nInvitation to participate in activities";
$string['int_action_reminder']        = "Submission reminder\nGuidance on the activity";
$string['int_action_guidance']        = "Individual pedagogical guidance\nSuggestion of support materials";
$string['int_ai_grade_mean']          = 'Average grade: {value}%';
$string['int_showing']                 = 'Showing';
$string['int_to']                      = 'to';
$string['int_of']                      = 'of';
$string['int_items_per_page']          = 'Items per page:';

// Interventions v3.5 — additional texts (motivos section + summary)
$string['int_motivos_section']         = 'Intervention reasons';
$string['int_tip_motivos_section']     = 'Number of interventions recorded per reason in the selected period. Click a card to filter the list.';
$string['snapshot_open'] = 'Open historical record';
$string['snapshot_close'] = 'Close';
$string['snapshot_engagement_at_time'] = 'Engagement at intervention time';
$string['snapshot_grade_at_time'] = 'Grade at intervention time';
$string['snapshot_grade_points'] = 'Points accumulated in the historical snapshot';
$string['snapshot_situation_label'] = 'Situation identified';
$string['snapshot_situation_placeholder'] = 'Describe the observed situation.';
$string['snapshot_action_label'] = 'Strategy / Action';
$string['snapshot_objective_label'] = 'Intervention objective';
$string['snapshot_other_required'] = 'Enter the situation identified and the intervention objective.';
$string['snapshot_recorded_at'] = 'Record date';
$string['snapshot_historical_notice'] = 'Historical record — these data represent the student situation at intervention time and are not updated later.';
$string['snapshot_first_access'] = 'First access completed';
$string['snapshot_days_enrolled'] = 'Days since enrolment';
$string['snapshot_activities_done'] = 'Activities completed';
$string['snapshot_resources_accessed'] = 'Resources accessed';
$string['snapshot_completion'] = 'Completion percentage';
$string['snapshot_last_access'] = 'Last access';
$string['snapshot_engagement'] = 'Engagement';
$string['snapshot_active_days_7'] = 'Active days in the last 7 days';
$string['snapshot_interactions'] = 'Interactions';
$string['snapshot_regularity'] = 'Participation regularity';
$string['snapshot_pending'] = 'Pending activities';
$string['snapshot_overdue'] = 'Overdue submissions';
$string['snapshot_oldest_pending'] = 'Oldest pending item';
$string['snapshot_average_grade'] = 'Average grade';
$string['snapshot_last_assessment'] = 'Latest assessment result';
$string['snapshot_below_reference'] = 'Assessments below reference';
$string['snapshot_attempts'] = 'Attempts';
$string['snapshot_assessed_done'] = 'Assessed activities completed';
$string['snapshot_grade_trend'] = 'Recent grade trend';
$string['snapshot_yes'] = 'Yes';
$string['snapshot_no'] = 'No';
$string['snapshot_days_ago'] = '{days} days ago';
$string['snapshot_days'] = 'days';
$string['snapshot_at'] = 'at';
$string['snapshot_objective_never'] = 'Complete the first course access.';
$string['snapshot_objective_low'] = 'Resume and increase course participation.';
$string['snapshot_objective_pending'] = 'Complete pending academic activities.';
$string['snapshot_objective_difficult'] = 'Support improvement in learning outcomes.';
$string['privacy:metadata:snapshot'] = 'Immutable historical snapshot of the student situation at intervention time.';
$string['privacy:metadata:snapshot:interventionid'] = 'Linked intervention ID.';
$string['privacy:metadata:snapshot:userid'] = 'Student ID.';
$string['privacy:metadata:snapshot:courseid'] = 'Course ID.';
$string['privacy:metadata:snapshot:reason'] = 'Intervention reason.';
$string['privacy:metadata:snapshot:situation'] = 'Situation identified.';
$string['privacy:metadata:snapshot:action'] = 'Strategy or action performed.';
$string['privacy:metadata:snapshot:objective'] = 'Expected objective.';
$string['privacy:metadata:snapshot:data'] = 'Real indicators captured as JSON.';
$string['privacy:metadata:snapshot:timecreated'] = 'Capture date and time.';

// AI context strings
$string['int_ai_enrolled']     = 'Enrolled {n} day ago';
$string['int_ai_enrolled_pl']  = 'Enrolled {n} days ago';
$string['int_ai_last_access']  = 'Last access: {n} days ago';
$string['int_ai_engagement']   = 'Engagement: {n}/100';
$string['int_ai_last_day']     = 'Last access {n} day ago';
$string['int_ai_last_day_pl']  = 'Last access {n} days ago';
$string['int_ai_grade_drop']   = 'Grade drop of 15 points';
$string['int_no_effect']       = 'Did not return';

$string['int_ai_pending_one']  = '{n} pending activity';
$string['int_ai_pending_pl']   = '{n} pending activities';

// Action log strings (external.php)
$string['ext_action_sent_email']    = 'Message sent by email.';
$string['ext_action_sent_moodle']   = 'Message sent via Moodle.';
$string['ext_action_fail_email']    = 'Email send attempt did not complete.';
$string['ext_action_fail_moodle']   = 'Moodle message send attempt did not complete.';

// Intervention table row menu
$string['int_menu_send']   = 'Send message';
$string['int_menu_delete'] = 'Delete';

// Reason result chart
$string['tf_reason_chart_title']    = 'Result by intervention reason';
$string['tf_reason_interventions']  = 'Interventions';
$string['tf_reason_responded_pct']  = 'Returned (%)';
$string['tf_reason_engage_delta']   = 'Engagement change (pts)';
$string['tf_reason_no_data']        = 'No interventions with snapshot in this period.';
$string['tf_reason_engage_note']    = 'Engagement compares each student\'s first snapshot with their current Moodle participation, without duplicating students who received more than one intervention for the same reason.';
$string['snapshot_title'] = 'Situation at the time of intervention';

// Activities availability labels
$string['act_availability_closed']     = 'Closed';
$string['act_availability_today']      = 'Ends today';
$string['act_availability_future']     = 'Not yet open';
$string['act_availability_open']       = 'Open';
$string['act_availability_unavailable']= 'Unavailable';
$string['act_due_label']               = 'Due: {date}';

// Snapshot modal (grid rows)
$string['snapshot_lock']              = 'Historical record — these data represent the student situation at intervention time and are not updated later.';
$string['snapshot_days_since']        = '{n} days since enrolment';
$string['snapshot_last_day']          = '{n} days without access';
$string['snapshot_enrolment']         = 'Days since enrolment';

// Teacher Feedback — Progress after interventions card
$string['tf_progress_card_title']       = 'Progress after interventions';
$string['tf_progress_engagement_label'] = 'Average engagement';
$string['tf_progress_grade_label']      = 'Average grade';
$string['tf_progress_approved_label']   = 'Approved';
$string['tf_progress_activities_label'] = 'Activities completed';
$string['tf_delta_remaining']           = 'Remaining';
$string['tf_delta_concluded']           = 'Completed';
$string['tf_delta_students']            = 'Students';
$string['tf_delta_percent']             = 'Percentage';
$string['tf_progress_info']             = 'Engagement compares each student\'s first snapshot in the period with their current participation, without duplicating when they receive new interventions. Average grade crosses the total points frozen in the snapshot with the current picture. Approved shows the proportion with at least 60 points.';

// Generic
$string['message']                     = 'Message';

// Mediation
$string['tf_med_first_response']     = 'First student response';
$string['tf_med_first_academic']     = 'First activity, attempt or submission';
$string['tf_med_with_response']      = '{n} of {total} interventions with response';
$string['tf_med_with_academic']      = '{n} of {total} interventions with academic action';
$string['tf_med_48h_title']          = 'Response effectiveness within 48h';
$string['tf_med_48h_count']          = '{n} of {total} interventions';
$string['tf_med_48h_info']           = 'The 48h effectiveness considers all interventions in the selected view. Times are averages calculated only when there is a real subsequent record in Moodle.';

// Continuity
$string['tf_cont_side_title']        = 'Continuity classification (after 7 days)';
$string['tf_cont_window_students']   = '{eligible} of {total} students';
$string['tf_cont_info']              = 'Continuity considers real Moodle interactions: during the first 7 days the student remains under observation; after that period, a new interaction characterises sustained progress.';

// Trajectory by intervention
$string['tf_traj_events_academic']   = '{events} events · {academic} academic actions';

// Interaction — info
$string['tf_interaction_info']       = 'Activities, resources, attempts and resumed access consider real Moodle records after any intervention. Resource access includes page, file, URL, book, folder and content package.';

// Mediation strategy — table
$string['tf_strategy_col_strategy']  = 'Strategy used';
$string['tf_strategy_col_total']     = 'Interventions made';
$string['tf_strategy_col_responded'] = 'Responded';
$string['tf_strategy_col_evolved']   = 'Full progress';
$string['tf_strategy_col_rate']      = 'Full-progress rate';
$string['tf_strategy_no_data']       = 'No strategies recorded.';
$string['tf_strategy_info']          = 'Descriptive association between strategy and outcome; does not represent a causal relationship.';
$string['tf_strategy_unknown']       = 'Strategy not specified';

// AI context — trajectory
$string['tf_ai_motivo']              = 'reason: {v}';
$string['tf_ai_intervencao']         = 'intervention: {v}';
$string['tf_ai_engagement_delta']    = 'engagement before/after: {before} / {after}';
$string['tf_ai_grade_delta']         = 'grade before/after: {before} / {after}';
$string['tf_ai_after_events']        = 'subsequent events: {n}';
$string['tf_ai_after_academic']      = 'subsequent academic actions: {n}';
$string['tf_ai_first_return']        = 'first return: {v}';
$string['tf_ai_no_return']           = 'no return';
$string['tf_ai_result']              = 'outcome: {v}';
$string['tf_ai_result_none']         = 'no response';
$string['tf_ai_result_full']         = 'full progress';
$string['tf_ai_result_partial']      = 'partial progress';
$string['tf_ai_continuity']          = 'continuity after 7 days: {v}';
$string['tf_ai_continuity_yes']      = 'yes';
$string['tf_ai_continuity_no']       = 'not recorded';

$string['tf_donut_info'] = 'Only considers students who received an intervention with a historical snapshot.';
$string['settings_ia_enabled'] = 'Enable external AI processing';
$string['settings_ia_enabled_desc'] = 'Explicitly authorises direct transmission of minimised educational data to the selected provider for analysis, recommendations and pedagogical decision support. Individual recommendations and individual chat analysis use Moodle-side pseudonymisation; direct identifiers and submission content are excluded. Enable only after institutional privacy, contractual, retention and international-transfer reviews.';
$string['ai_unavailable_message'] = '🔒 Artificial Intelligence features are unavailable. Configure a valid API key in MWA administration.';
$string['ai_configuration_incomplete'] = $string['ai_unavailable_message'];
$string['ai_disabled'] = $string['ai_unavailable_message'];
$string['chat_ia_not_configured_alert'] = $string['ai_unavailable_message'];
$string['tf_ai_not_configured'] = 'AI features unavailable';
$string['tf_ai_not_configured_sub'] = $string['ai_unavailable_message'];
$string['settings_ia_credential_button'] = 'Configure provider credential';
$string['settings_ia_credential_configured'] = 'A provider credential is configured.';
$string['settings_ia_credential_missing'] = 'No provider credential is configured. AI features are disabled but all core features remain available.';
$string['settings_ia_credential_page'] = 'Configure AI provider credential';
$string['settings_ia_credential_page_desc'] = 'Enter the credential obtained directly from the selected AI provider. This credential is stored only on the Moodle server and is never exposed to the browser. MWA does not sell, provide or require any licence, activation code, subscription or commercial key of its own.';
$string['settings_ia_credential_never_shown'] = 'For security, the saved credential is never displayed. Enter a new one to replace it.';
$string['settings_ia_credential_saved'] = 'Provider credential saved successfully.';
$string['settings_ia_credential_removed'] = 'Provider credential removed.';
$string['settings_ia_credential_required'] = 'Enter a valid provider credential.';
$string['settings_ia_credential_remove'] = 'Remove credential';
$string['settings_ia_provider_institutional'] = 'Institutional AI — optional integration';
$string['settings_ia_institutional_url'] = 'Institutional API URL';
$string['settings_ia_institutional_url_desc'] = 'OpenAI-compatible HTTPS endpoint, for example https://ai.institution.edu/v1/chat/completions.';
$string['settings_ia_institutional_model'] = 'Institutional model';
$string['settings_ia_institutional_model_desc'] = 'Model identifier supplied by the institution, for example mwa-ai.';
$string['settings_ia_institutional_private'] = 'Allow private-network endpoint';
$string['settings_ia_institutional_private_desc'] = 'Enable only for AI hosted on the institutional network. The institution assumes responsibility for destination validation, security, privacy and availability.';
$string['settings_ia_credential_provider'] = 'Selected provider: {$a}';
$string['ai_institutional_endpoint_invalid'] = 'The institutional AI URL must use HTTPS and point to an allowed destination. Local and private addresses require explicit authorisation.';
$string['settings_ia_credential_lastrotated'] = 'Last credential update: {$a}';
$string['settings_ia_credential_rotation_warning'] = '⚠️ This credential has not been updated for more than 90 days. Consider rotating it with the provider.';
$string['settings_ia_credential_save_new'] = 'Save new credential';
$string['privacy:metadata:aiaudit'] = 'Local metadata audit for external AI calls. It does not store prompts, responses, credentials or student identifiers.';
$string['privacy:metadata:aiaudit:userid'] = 'ID of the user who initiated the operation.';
$string['privacy:metadata:aiaudit:courseid'] = 'Related course ID.';
$string['privacy:metadata:aiaudit:operation'] = 'AI operation type.';
$string['privacy:metadata:aiaudit:purpose'] = 'Declared processing purpose.';
$string['privacy:metadata:aiaudit:provider'] = 'Selected AI provider.';
$string['privacy:metadata:aiaudit:endpoint'] = 'Endpoint without credentials or query parameters.';
$string['privacy:metadata:aiaudit:categories'] = 'Allowlisted categories of transmitted data.';
$string['privacy:metadata:aiaudit:status'] = 'Technical call outcome.';
$string['privacy:metadata:aiaudit:timecreated'] = 'Call date and time.';
$string['ai_empty_request'] = 'The AI request became empty after security filtering.';
$string['ai_provider_request_failed'] = 'The AI provider rejected the request or did not respond. Check the key, model and service availability.';
$string['ai_provider_empty_response'] = 'The AI provider returned an empty response.';
$string['ai_disabled'] = $string['ai_unavailable_message'];
$string['ai_endpoint_invalid'] = 'The AI endpoint must be explicitly configured with a valid HTTPS URL.';
$string['block/mwa_dashboard:useai'] = 'Use external AI features with course data';
$string['block/mwa_dashboard:manageinterventions'] = 'Send and manage pedagogical interventions';
$string['invalidrecipient'] = 'The selected recipient is not an active enrolled user in this course.';
$string['settings_data_retention_days'] = 'Personal data retention (days)';
$string['settings_general_heading'] = 'General settings';
$string['settings_general_heading_desc'] = 'Core plugin configuration. All dashboard features (analytics, grades, alerts, interventions, class lists, student profiles, heatmaps) work without any external AI service. To configure optional AI features, scroll to the AI section below.';
$string['settings_ia_setup'] = 'Configure optional AI integration';
$string['settings_ia_setup_desc'] = 'Provider selection, model and credential configuration are managed on a dedicated page. No configuration is required for core plugin features.';
$string['settings_ia_setup_button'] = 'Configure AI provider and credential';
$string['settings_data_retention_days_desc'] = 'Automatically deletes plugin logs, intervention records, private notes and snapshots older than this period. Minimum: 30 days. Default: 90 days.';
$string['task_privacy_cleanup'] = 'Delete expired MWA Dashboard personal data';
$string['settings_ia_model_deepseek_v4_flash'] = 'DeepSeek V4 Flash';
$string['settings_ia_model_deepseek_v4_pro'] = 'DeepSeek V4 Pro';
$string['settings_ia_model_gpt41_mini'] = 'OpenAI GPT-4.1 mini';
$string['settings_ia_model_gpt41'] = 'OpenAI GPT-4.1';
$string['settings_ia_model_gemini35_flash'] = 'Google Gemini 3.5 Flash';
$string['settings_ia_model_claude_sonnet46'] = 'Anthropic Claude Sonnet 4.6';
$string['settings_ia_model_claude_sonnet5'] = 'Anthropic Claude Sonnet 5';
$string['settings_ia_openrouter_heading'] = 'OpenRouter';
$string['settings_ia_openrouter_free_only'] = 'Model type';
$string['settings_ia_openrouter_free_only_yes'] = 'Free models only';
$string['settings_ia_openrouter_free_only_no'] = 'All models';
$string['settings_ia_openrouter_free_only_desc'] = 'When enabled, the list shows only models identified by OpenRouter as free.';
$string['settings_ia_openrouter_model'] = 'OpenRouter model';
$string['settings_ia_openrouter_model_desc'] = 'The list is loaded from the OpenRouter API. Moodle shows the friendly name but stores the technical provider identifier.';
$string['settings_ia_openrouter_model_free'] = 'free';
$string['settings_ia_openrouter_model_paid'] = 'paid';
$string['settings_ia_openrouter_model_current'] = 'Current model ({$a})';
$string['settings_ia_openrouter_model_auto'] = 'OpenRouter Auto (openrouter/auto)';
$string['settings_ia_openrouter_models_unavailable'] = 'The OpenRouter model list could not be loaded right now. Save a valid OpenRouter credential and reload this page.';
$string['settings_ia_openrouter_api_key'] = 'OpenRouter API key';
$string['settings_admin_page'] = 'MWA Dashboard administration';
$string['settings_admin_page_desc'] = 'Use this page to configure data retention and optional AI integrations. To set up AI features: (1) enable AI, (2) choose a provider, (3) save, (4) enter the provider credential, (5) test the connection. All core dashboard features work without any AI configuration.';
$string['settings_admin_page_button'] = 'Open MWA Dashboard settings';
$string['settings_ia_quickstart'] = 'To enable optional AI features:';
$string['settings_ia_quickstart_step1'] = 'Tick "Enable AI features" in the AI section below.';
$string['settings_ia_quickstart_step2'] = 'Select your AI provider (DeepSeek, OpenAI, Google Gemini, Anthropic, OpenRouter, or Institutional).';
$string['settings_ia_quickstart_step3'] = 'Click Save. The credential field will appear.';
$string['settings_ia_quickstart_step4'] = 'Enter the credential obtained directly from your chosen provider and save.';
$string['settings_ia_quickstart_step5'] = 'Use the "Test connection" button to confirm everything is working.';

$string['privacy:metadata:external:chat:pseudonymised_student_metrics'] = 'Minimised educational metrics such as grade, interactions, engagement, access, completion and pending activity indicators linked only to a request-scoped pseudonym created inside Moodle.';
$string['close'] = 'Close';
$string['tf_ir_open'] = 'Evolution report';
$string['tf_ir_title'] = 'Individual report';
$string['tf_ir_evolution_of'] = 'Evolution of {student}';
$string['tf_ir_export_pdf'] = 'Export PDF';
$string['tf_ir_period'] = 'Analysed period';
$string['tf_ir_to'] = 'to';
$string['tf_ir_interventions'] = 'Interventions';
$string['tf_ir_classification'] = 'Classification';
$string['tf_ir_before_after'] = 'Before and after comparison';
$string['tf_ir_engagement'] = 'Engagement';
$string['tf_ir_average_grade'] = 'Average grade';
$string['tf_ir_approval'] = 'Approval';
$string['tf_ir_completed_activities'] = 'Completed activities';
$string['tf_ir_tracked_activities'] = 'Tracked activities';
$string['tf_ir_tracked_resources'] = 'Tracked resources';
$string['tf_ir_tracked_total'] = 'Items sent: {count}';
$string['tf_ir_remaining'] = 'Remaining';
$string['tf_ir_completed'] = 'Completed';
$string['tf_ir_accessed'] = 'Accessed';
$string['tf_ir_timeline'] = 'Timeline';
$string['tf_ir_registered_interventions'] = 'Registered interventions';
$string['tf_ir_date'] = 'Date';
$string['tf_ir_reason'] = 'Reason';
$string['tf_ir_teacher'] = 'Teacher';
$string['tf_ir_return'] = 'Return';
$string['tf_ir_conclusion'] = 'Conclusion';
$string['tf_ir_followup'] = 'Follow-up';
$string['tf_ir_awaiting_return'] = 'Awaiting return';
$string['tf_ir_awaiting_return_text'] = 'There are no accesses, interactions or academic actions after this intervention snapshot yet. The values on the left reflect the moment the message was sent; there is not enough subsequent evidence to conclude that progress occurred.';
$string['tf_ir_causality_note'] = 'This report presents changes observed after interventions. It does not claim that the intervention was the only cause of the evolution.';
$string['tf_ir_preparing'] = 'Preparing individual report...';
$string['tf_ir_generation_error'] = 'The individual report could not be generated.';
$string['tf_ir_insufficient_data'] = 'Insufficient data';
$string['tf_ir_full_progress'] = 'Full progress';
$string['tf_ir_partial_progress'] = 'Partial progress';
$string['tf_ir_no_change'] = 'No identified change';
$string['tf_ir_responded'] = 'Responded';
$string['tf_ir_no_response'] = 'No response';
$string['tf_ir_intervention_done'] = 'Intervention performed';
$string['tf_ir_student_response'] = 'Student response';
$string['tf_ir_response_recorded'] = 'Return recorded after the intervention';
$string['tf_ir_academic_activity'] = 'Academic activity';
$string['tf_ir_activity_recorded'] = 'New activity or submission recorded';
$string['tf_ir_no_events'] = 'No eligible events in the period.';
$string['tf_ir_and'] = 'and';
$string['tf_ir_not_enough_snapshots'] = 'There are not enough snapshots to compare this student\'s evolution.';
$string['tf_ir_conclusion_classification'] = 'After {count} intervention(s), the current classification is {classification}.';
$string['tf_ir_improvements'] = 'The following improvements were observed:';
$string['tf_ir_declines'] = 'Indicators that decreased:';
$string['tf_ir_stable'] = 'The following remained stable:';
$string['tf_ir_changed_from'] = '{metric} changed from {before} to {after}';
$string['tf_ir_stayed_at'] = '{metric} remained at {value}';
$string['tf_ir_response_yes_sentence'] = 'The student also responded to the intervention.';
$string['tf_ir_response_no_sentence'] = 'No student response to the messages has been recorded yet.';
$string['tf_ir_engagement_points'] = 'engagement points';
$string['tf_ir_points'] = 'points';
$string['tf_ir_percentage_points'] = 'percentage points';
$string['tf_ir_activities_unit'] = 'activity/activities';
$string['tf_ir_approved_after_intervention'] = 'The student passed after the intervention.';
$string['tf_ir_still_not_approved'] = 'The student has not passed yet.';
$string['tf_ir_remains_approved'] = 'The student had already passed and remains approved.';
$string['dashboard_updated_at'] = 'Updated at';
