{"id":994,"date":"2025-11-12T02:41:50","date_gmt":"2025-11-12T02:41:50","guid":{"rendered":"https:\/\/ellakconnectionsllc.com\/?page_id=994"},"modified":"2025-11-12T03:26:25","modified_gmt":"2025-11-12T03:26:25","slug":"hr-notebook","status":"publish","type":"page","link":"https:\/\/ellakconnectionsllc.com\/es\/hr-notebook\/","title":{"rendered":"Human Resources Notebook"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"994\" class=\"elementor elementor-994\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6189429 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6189429\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-dbab7ab\" data-id=\"dbab7ab\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-001ce97 elementor-widget elementor-widget-html\" data-id=\"001ce97\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>AI-Powered Employee Evaluation System<\/title>\r\n    <!-- Load Tailwind CSS -->\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <!-- Load Chart.js for Radar Chart -->\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js@4.4.1\/dist\/chart.umd.min.js\"><\/script>\r\n    <style>\r\n        \/* Custom scrollbar for better look *\/\r\n        ::-webkit-scrollbar { width: 8px; }\r\n        ::-webkit-scrollbar-thumb { background: #3b82f6; border-radius: 4px; }\r\n        ::-webkit-scrollbar-track { background: #e0f2fe; }\r\n        body { font-family: 'Inter', sans-serif; background-color: #f8fafc; }\r\n        .form-section { border-left: 4px solid #3b82f6; padding-left: 1rem; }\r\n        .rating-label { transition: all 0.1s; cursor: pointer; }\r\n        .rating-label:hover { transform: scale(1.05); }\r\n        .rating-checked {\r\n            background-color: #3b82f6;\r\n            color: white;\r\n            box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\r\n        }\r\n        .ai-assistant-container {\r\n            max-height: 400px;\r\n            overflow-y: auto;\r\n            border-radius: 0.5rem;\r\n            box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"min-h-screen\">\r\n\r\n    <!-- Global State & Core Logic -->\r\n    <script>\r\n        const L = {\r\n            \/\/ --- CORE UI ---\r\n            EN: {\r\n                title: \"AI-Powered Employee Evaluation System\", lang_select: \"Choose your language\", select_btn: \"Start Evaluation\",\r\n                save_btn: \"Save Progress\", loading: \"Loading...\", ai_assistant: \"AI Coach Assistant\", chat_input: \"Ask for help or summary...\",\r\n                summary_btn: \"Generate AI Summary\", recommendations_btn: \"Get AI Recommendations\", export_btn: \"Export Evaluation\",\r\n                ai_thinking: \"AI Coach is thinking...\", radar_chart_title: \"Performance Radar Analytics\",\r\n                export_json: \"Export as JSON\", export_csv: \"Export as CSV\",\r\n                \/\/ Sections\r\n                sec_i_title: \"I. Past Year Review\", sec_ii_title: \"II. Next Year Plan\", sec_iii_title: \"III. Annual Follow-up (Fixed Days)\", sec_iv_title: \"IV. Signatures\",\r\n                \/\/ Metadata\r\n                meta_date: \"Date of interview\", meta_employee_name: \"Employee full name\", meta_position: \"Position\",\r\n                meta_date_joined: \"Date joined\", meta_seniority: \"Seniority in position\", meta_department: \"Department\",\r\n                meta_supervisor_name: \"Supervisor's name\", meta_supervisor_position: \"Supervisor's position\",\r\n                meta_manager_name: \"General Manager's name\",\r\n                \/\/ Section I-A (Employee Reflection)\r\n                ia_title: \"A) Employee Reflection (To be completed by the employee)\",\r\n                ia_q1: \"Main tasks entrusted\", ia_q2: \"How did the year go? Significant changes or events\",\r\n                ia_q3: \"Results: satisfactory and to improve\", ia_q4: \"Organization and working conditions: Are there areas for improvement?\",\r\n                ia_q5: \"Information and communication: Are there areas for improvement?\",\r\n                ia_q6: \"Training attended and its impact (1\u20133)\", ia_q7: \"Contribution to company success\",\r\n                ia_q8: \"Support received from supervisor: Do you feel you have the necessary support?\",\r\n                ia_q9: \"Supervisor's comments on last year's evaluation\",\r\n                \/\/ Section I-B (Evaluation Table)\r\n                ib_title: \"B) Evaluation Table (Criteria rated on a 1\u20134 scale)\",\r\n                ib_scale_1: \"1. Needs improvement\", ib_scale_2: \"2. Below expectations\", ib_scale_3: \"3. Successful\", ib_scale_4: \"4. High-quality performance\",\r\n                \/\/ Criteria (Performance, Collaboration, Autonomy, Culture, Leadership)\r\n                criteria_perf_work: \"Work performance\", criteria_perf_quality: \"Work quality\", criteria_perf_goals: \"Goal achievement\", criteria_perf_decision: \"Decision-making\", criteria_perf_priority: \"Priority management\",\r\n                criteria_collab_part: \"Level of participation\", criteria_collab_info: \"Information sharing\", criteria_collab_team: \"Teamwork ability\", criteria_collab_peers: \"Relationship with direct peers\", criteria_collab_dept: \"Relationship with other departments\", criteria_collab_sup: \"Relationship with supervisor\",\r\n                criteria_aut_reliability: \"Reliability\", criteria_aut_deadline: \"Deadline compliance\", criteria_aut_pressure: \"Work under pressure\", criteria_aut_autonomy: \"Autonomy\", criteria_aut_indep: \"Independent work\", criteria_aut_initiative: \"Initiative for improvement\", criteria_aut_seek: \"Information seeking\", criteria_aut_problem: \"Problem-solving\",\r\n                criteria_cult_commitment: \"Commitment to company\", criteria_cult_interest: \"Acts in company's interest\", criteria_cult_align: \"Cultural alignment\", criteria_cult_norms: \"Respect for norms\", criteria_cult_ehs: \"Commitment to EHS\", criteria_cult_safety: \"Safety compliance\", criteria_cult_role: \"Role commitment\",\r\n                criteria_lead_ability: \"Leadership ability\", criteria_lead_strategic: \"Strategic thinking & organization\", criteria_lead_creativity: \"Creativity and adaptability\", criteria_lead_listen: \"Listening and mentoring\", criteria_lead_mobilization: \"Mobilization capacity\", criteria_lead_persuasion: \"Persuasion ability\", criteria_lead_communication: \"Communication ability\",\r\n                \/\/ Section I-C (Summary)\r\n                ic_title: \"C) Summary of Past Year\",\r\n                ic_goals: \"Achievement of goals (1-3)\", ic_strengths: \"Strengths\", ic_improve: \"Areas for improvement\",\r\n                ic_global_title: \"Overall Rating (A\u2013D)\", ic_manager_comments: \"Manager comments\", ic_employee_comments: \"Employee comments\",\r\n                ic_rating_a: \"A (Exceptional)\", ic_rating_b: \"B (Good)\", ic_rating_c: \"C (Acceptable)\", ic_rating_d: \"D (Unsatisfactory)\",\r\n                \/\/ Section II (Next Year)\r\n                ii_a_title: \"A) Year Objectives (SMART Style - List 3 goals)\", ii_a_goal: \"Goal\", ii_a_means: \"Means to achieve it\",\r\n                ii_b_title: \"B) Training Aspirations (Up to 3 courses, ordered by priority)\", ii_b_course: \"Course Name\", ii_b_priority: \"Priority (1-3)\",\r\n                ii_c_title: \"C) Professional Development\", ii_c_career: \"Career plan\", ii_c_target_pos: \"Target position\",\r\n                ii_c_timeline: \"Timeline\", ii_c_geo_zone: \"Desired geographic zone\",\r\n                \/\/ Section III (Fixed Days)\r\n                iii_title: \"III. Annual Follow-up (Fixed-Day Contracts)\", iii_date_sig: \"Date and signature of agreement\",\r\n                iii_days_worked: \"Number of days worked per year\", iii_yes: \"Yes\", iii_no: \"No\",\r\n                iii_q1: \"Workload coherent with schedule\", iii_q2: \"Organization adapts to workload\", iii_q3: \"Working time reasonable and rests respected\",\r\n                iii_q4: \"Work\u2013life balance respected\", iii_q5: \"Control of digital tools after hours\", iii_q6: \"Compensation reflects work\",\r\n                iii_comments_employee: \"Employee comments\", iii_comments_manager: \"Manager comments\",\r\n                \/\/ Section IV (Signatures)\r\n                iv_title: \"IV. Signatures\", iv_employee: \"Employee\", iv_manager: \"Supervisor\/Manager\", iv_general_manager: \"General Manager\", iv_comment: \"Comment\", iv_signature: \"Signature (Type to sign)\",\r\n                \/\/ Radar Labels\r\n                radar_l_performance: \"Performance\", radar_l_collab: \"Collaboration\", radar_l_autonomy: \"Autonomy\", radar_l_culture: \"Culture\", radar_l_leadership: \"Leadership\",\r\n            },\r\n            FR: {\r\n                title: \"Syst\u00e8me d'\u00c9valuation des Employ\u00e9s Trilingue\", lang_select: \"Choisissez votre langue\", select_btn: \"D\u00e9marrer l'\u00e9valuation\",\r\n                save_btn: \"Sauvegarder\", loading: \"Chargement...\", ai_assistant: \"Assistant Coach RH IA\", chat_input: \"Demandez de l'aide...\",\r\n                summary_btn: \"G\u00e9n\u00e9rer un R\u00e9sum\u00e9 IA\", recommendations_btn: \"Obtenir des Recommandations IA\", export_btn: \"Exporter\",\r\n                ai_thinking: \"L'Assistant IA r\u00e9fl\u00e9chit...\", radar_chart_title: \"Analyse Radar de Performance\",\r\n                export_json: \"Exporter JSON\", export_csv: \"Exporter CSV\",\r\n                sec_i_title: \"I. Bilan du Pass\u00e9\", sec_ii_title: \"II. Ann\u00e9e Suivante\", sec_iii_title: \"III. Suivi Annuel\", sec_iv_title: \"IV. Signatures\",\r\n                meta_date: \"Date de l'entretien\", meta_employee_name: \"Nom complet\", meta_position: \"Poste\",\r\n                meta_date_joined: \"Date d'entr\u00e9e\", meta_seniority: \"Anciennet\u00e9\", meta_department: \"D\u00e9partement\",\r\n                meta_supervisor_name: \"Nom du sup\u00e9rieur\", meta_supervisor_position: \"Poste du sup\u00e9rieur\",\r\n                meta_manager_name: \"Nom du directeur g\u00e9n\u00e9ral\",\r\n                ia_title: \"A) R\u00e9flexion de l'employ\u00e9\",\r\n                ia_q1: \"Principales t\u00e2ches\", ia_q2: \"Comment s'est pass\u00e9e l'ann\u00e9e?\",\r\n                ia_q3: \"R\u00e9sultats satisfaisants et \u00e0 am\u00e9liorer\", ia_q4: \"Organisation et conditions de travail\",\r\n                ia_q5: \"Information et communication\", ia_q6: \"Formations suivies\", ia_q7: \"Contribution au succ\u00e8s\",\r\n                ia_q8: \"Soutien re\u00e7u du sup\u00e9rieur\", ia_q9: \"Commentaires du sup\u00e9rieur\",\r\n                ib_title: \"B) Tableau d'\u00e9valuation (\u00e9chelle 1-4)\",\r\n                ib_scale_1: \"1. Am\u00e9lioration n\u00e9cessaire\", ib_scale_2: \"2. En dessous des attentes\", ib_scale_3: \"3. R\u00e9ussi\", ib_scale_4: \"4. Haute qualit\u00e9\",\r\n                criteria_perf_work: \"Performance\", criteria_perf_quality: \"Qualit\u00e9\", criteria_perf_goals: \"Atteinte des objectifs\", criteria_perf_decision: \"Prise de d\u00e9cision\", criteria_perf_priority: \"Gestion des priorit\u00e9s\",\r\n                criteria_collab_part: \"Participation\", criteria_collab_info: \"Partage d'information\", criteria_collab_team: \"Travail en \u00e9quipe\", criteria_collab_peers: \"Relation coll\u00e8gues\", criteria_collab_dept: \"Relation d\u00e9partements\", criteria_collab_sup: \"Relation sup\u00e9rieur\",\r\n                criteria_aut_reliability: \"Fiabilit\u00e9\", criteria_aut_deadline: \"Respect d\u00e9lais\", criteria_aut_pressure: \"Travail sous pression\", criteria_aut_autonomy: \"Autonomie\", criteria_aut_indep: \"Travail ind\u00e9pendant\", criteria_aut_initiative: \"Initiative\", criteria_aut_seek: \"Recherche d'infos\", criteria_aut_problem: \"R\u00e9solution probl\u00e8mes\",\r\n                criteria_cult_commitment: \"Engagement entreprise\", criteria_cult_interest: \"Int\u00e9r\u00eat entreprise\", criteria_cult_align: \"Culture\", criteria_cult_norms: \"Respect r\u00e8gles\", criteria_cult_ehs: \"Engagement EHS\", criteria_cult_safety: \"Pratiques s\u00e9curit\u00e9\", criteria_cult_role: \"Engagement fonctions\",\r\n                criteria_lead_ability: \"Leadership\", criteria_lead_strategic: \"Vision strat\u00e9gique\", criteria_lead_creativity: \"Cr\u00e9ativit\u00e9\", criteria_lead_listen: \"\u00c9coute\", criteria_lead_mobilization: \"Mobilisation\", criteria_lead_persuasion: \"Persuasion\", criteria_lead_communication: \"Communication\",\r\n                ic_title: \"C) R\u00e9sum\u00e9\", ic_goals: \"Atteinte objectifs\", ic_strengths: \"Points forts\", ic_improve: \"Axes d'am\u00e9lioration\",\r\n                ic_global_title: \"\u00c9valuation globale\", ic_manager_comments: \"Commentaires manager\", ic_employee_comments: \"Commentaires employ\u00e9\",\r\n                ic_rating_a: \"A (Exceptionnel)\", ic_rating_b: \"B (Bon)\", ic_rating_c: \"C (Acceptable)\", ic_rating_d: \"D (Insatisfaisant)\",\r\n                ii_a_title: \"A) Objectifs 2025\", ii_a_goal: \"Objectif\", ii_a_means: \"Moyens\",\r\n                ii_b_title: \"B) Formations\", ii_b_course: \"Cours\", ii_b_priority: \"Priorit\u00e9\",\r\n                ii_c_title: \"C) D\u00e9veloppement\", ii_c_career: \"Plan carri\u00e8re\", ii_c_target_pos: \"Poste vis\u00e9\",\r\n                ii_c_timeline: \"D\u00e9lai\", ii_c_geo_zone: \"Zone g\u00e9ographique\",\r\n                iii_title: \"III. Suivi Annuel\", iii_date_sig: \"Date et signature\",\r\n                iii_days_worked: \"Jours travaill\u00e9s\", iii_yes: \"Oui\", iii_no: \"Non\",\r\n                iii_q1: \"Charge coh\u00e9rente\", iii_q2: \"Organisation adapt\u00e9e\", iii_q3: \"Temps raisonnable\",\r\n                iii_q4: \"\u00c9quilibre vie pro-perso\", iii_q5: \"R\u00e9gulation num\u00e9rique\", iii_q6: \"R\u00e9mun\u00e9ration \u00e9quitable\",\r\n                iii_comments_employee: \"Commentaires employ\u00e9\", iii_comments_manager: \"Commentaires manager\",\r\n                iv_title: \"IV. Signatures\", iv_employee: \"Employ\u00e9\", iv_manager: \"Manager\", iv_general_manager: \"Directeur G\u00e9n\u00e9ral\", iv_comment: \"Commentaire\", iv_signature: \"Signature\",\r\n                radar_l_performance: \"Performance\", radar_l_collab: \"Collaboration\", radar_l_autonomy: \"Autonomie\", radar_l_culture: \"Culture\", radar_l_leadership: \"Leadership\",\r\n            },\r\n            ES: {\r\n                title: \"Sistema de Evaluaci\u00f3n con IA\", lang_select: \"Elija su idioma\", select_btn: \"Iniciar\",\r\n                save_btn: \"Guardar\", loading: \"Cargando...\", ai_assistant: \"Asistente Coach IA\", chat_input: \"Pida ayuda...\",\r\n                summary_btn: \"Generar Resumen\", recommendations_btn: \"Obtener Recomendaciones\", export_btn: \"Exportar\",\r\n                ai_thinking: \"El Coach IA est\u00e1 pensando...\", radar_chart_title: \"An\u00e1lisis Radar\",\r\n                export_json: \"Exportar JSON\", export_csv: \"Exportar CSV\",\r\n                sec_i_title: \"I. Balance del A\u00f1o\", sec_ii_title: \"II. A\u00f1o Siguiente\", sec_iii_title: \"III. Seguimiento\", sec_iv_title: \"IV. Firmas\",\r\n                meta_date: \"Fecha entrevista\", meta_employee_name: \"Nombre empleado\", meta_position: \"Cargo\",\r\n                meta_date_joined: \"Fecha incorporaci\u00f3n\", meta_seniority: \"Antig\u00fcedad\", meta_department: \"Departamento\",\r\n                meta_supervisor_name: \"Nombre supervisor\", meta_supervisor_position: \"Cargo supervisor\",\r\n                meta_manager_name: \"Nombre gerente general\",\r\n                ia_title: \"A) Por el empleado\",\r\n                ia_q1: \"Tareas principales\", ia_q2: \"\u00bfC\u00f3mo fue el a\u00f1o?\",\r\n                ia_q3: \"Resultados satisfactorios y mejoras\", ia_q4: \"Organizaci\u00f3n y condiciones\",\r\n                ia_q5: \"Informaci\u00f3n y comunicaci\u00f3n\", ia_q6: \"Formaci\u00f3n asistida\", ia_q7: \"Contribuci\u00f3n \u00e9xito\",\r\n                ia_q8: \"Apoyo del jefe\", ia_q9: \"Comentarios supervisor\",\r\n                ib_title: \"B) Tabla evaluaci\u00f3n (escala 1-4)\",\r\n                ib_scale_1: \"1. Mejoras necesarias\", ib_scale_2: \"2. Bajo expectativas\", ib_scale_3: \"3. Exitoso\", ib_scale_4: \"4. Alta calidad\",\r\n                criteria_perf_work: \"Rendimiento\", criteria_perf_quality: \"Calidad\", criteria_perf_goals: \"Consecuci\u00f3n objetivos\", criteria_perf_decision: \"Toma decisiones\", criteria_perf_priority: \"Gesti\u00f3n prioridades\",\r\n                criteria_collab_part: \"Participaci\u00f3n\", criteria_collab_info: \"Compartir informaci\u00f3n\", criteria_collab_team: \"Trabajo en grupo\", criteria_collab_peers: \"Relaci\u00f3n compa\u00f1eros\", criteria_collab_dept: \"Relaci\u00f3n departamentos\", criteria_collab_sup: \"Relaci\u00f3n superior\",\r\n                criteria_aut_reliability: \"Fiabilidad\", criteria_aut_deadline: \"Cumplimiento plazos\", criteria_aut_pressure: \"Trabajo bajo presi\u00f3n\", criteria_aut_autonomy: \"Autonom\u00eda\", criteria_aut_indep: \"Trabajo independiente\", criteria_aut_initiative: \"Iniciativa\", criteria_aut_seek: \"B\u00fasqueda informaci\u00f3n\", criteria_aut_problem: \"Resoluci\u00f3n problemas\",\r\n                criteria_cult_commitment: \"Compromiso empresa\", criteria_cult_interest: \"Inter\u00e9s empresa\", criteria_cult_align: \"Cultura\", criteria_cult_norms: \"Respeto normas\", criteria_cult_ehs: \"Compromiso EHS\", criteria_cult_safety: \"Pr\u00e1cticas seguridad\", criteria_cult_role: \"Compromiso funciones\",\r\n                criteria_lead_ability: \"Liderazgo\", criteria_lead_strategic: \"Pensamiento estrat\u00e9gico\", criteria_lead_creativity: \"Creatividad\", criteria_lead_listen: \"Escucha\", criteria_lead_mobilization: \"Movilizaci\u00f3n\", criteria_lead_persuasion: \"Persuasi\u00f3n\", criteria_lead_communication: \"Comunicaci\u00f3n\",\r\n                ic_title: \"C) Resumen\", ic_goals: \"Consecuci\u00f3n objetivos\", ic_strengths: \"Fortalezas\", ic_improve: \"\u00c1reas mejora\",\r\n                ic_global_title: \"Evaluaci\u00f3n global\", ic_manager_comments: \"Comentarios gerente\", ic_employee_comments: \"Comentarios empleado\",\r\n                ic_rating_a: \"A (Excepcional)\", ic_rating_b: \"B (Bueno)\", ic_rating_c: \"C (Aceptable)\", ic_rating_d: \"D (Insatisfactorio)\",\r\n                ii_a_title: \"A) Objetivos 2025\", ii_a_goal: \"Objetivo\", ii_a_means: \"Medios\",\r\n                ii_b_title: \"B) Formaci\u00f3n\", ii_b_course: \"Curso\", ii_b_priority: \"Prioridad\",\r\n                ii_c_title: \"C) Desarrollo\", ii_c_career: \"Carrera\", ii_c_target_pos: \"Puesto visado\",\r\n                ii_c_timeline: \"Plazo\", ii_c_geo_zone: \"Zona geogr\u00e1fica\",\r\n                iii_title: \"III. Seguimiento Anual\", iii_date_sig: \"Fecha y firma\",\r\n                iii_days_worked: \"D\u00edas trabajados\", iii_yes: \"S\u00ed\", iii_no: \"No\",\r\n                iii_q1: \"Carga coherente\", iii_q2: \"Organizaci\u00f3n adaptada\", iii_q3: \"Tiempo razonable\",\r\n                iii_q4: \"Equilibrio vida-trabajo\", iii_q5: \"Regulaci\u00f3n digital\", iii_q6: \"Remuneraci\u00f3n justa\",\r\n                iii_comments_employee: \"Comentarios empleado\", iii_comments_manager: \"Comentarios gerente\",\r\n                iv_title: \"IV. Firmas\", iv_employee: \"Empleado\", iv_manager: \"Gerente\", iv_general_manager: \"Gerente General\", iv_comment: \"Comentario\", iv_signature: \"Firma\",\r\n                radar_l_performance: \"Rendimiento\", radar_l_collab: \"Colaboraci\u00f3n\", radar_l_autonomy: \"Autonom\u00eda\", radar_l_culture: \"Cultura\", radar_l_leadership: \"Liderazgo\",\r\n            }\r\n        };\r\n\r\n        const CRITERIA_MAP = {\r\n            'perf_work': 'Performance', 'perf_quality': 'Performance', 'perf_goals': 'Performance', 'perf_decision': 'Performance', 'perf_priority': 'Performance',\r\n            'collab_part': 'Collaboration', 'collab_info': 'Collaboration', 'collab_team': 'Collaboration', 'collab_peers': 'Collaboration', 'collab_dept': 'Collaboration', 'collab_sup': 'Collaboration',\r\n            'aut_reliability': 'Autonomy', 'aut_deadline': 'Autonomy', 'aut_pressure': 'Autonomy', 'aut_autonomy': 'Autonomy', 'aut_indep': 'Autonomy', 'aut_initiative': 'Autonomy', 'aut_seek': 'Autonomy', 'aut_problem': 'Autonomy',\r\n            'cult_commitment': 'Culture', 'cult_interest': 'Culture', 'cult_align': 'Culture', 'cult_norms': 'Culture', 'cult_ehs': 'Culture', 'cult_safety': 'Culture', 'cult_role': 'Culture',\r\n            'lead_ability': 'Leadership', 'lead_strategic': 'Leadership', 'lead_creativity': 'Leadership', 'lead_listen': 'Leadership', 'lead_mobilization': 'Leadership', 'lead_persuasion': 'Leadership', 'lead_communication': 'Leadership',\r\n        };\r\n\r\n        let lang = 'EN';\r\n        let userId = 'local-user-' + Math.random().toString(36).substring(2, 9);\r\n        let evaluationId = 'default-evaluation';\r\n        let evaluationData = {\r\n            metadata: {}, reflection: {}, ratings: {}, summary: {}, goals: [{}, {}, {}],\r\n            training: [{}, {}, {}], development: {}, fixed_days: { answers: {} },\r\n            signatures: { employee: {}, manager: {}, general_manager: {} }\r\n        };\r\n        let chartInstance = null;\r\n        const apiKey = \"AIzaSyAQ9xXJAFUyhScEtl8qJkH5NmWplfDo3rU\";\r\n        const apiUrl = `https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/gemini-2.5-flash-preview-09-2025:generateContent?key=${apiKey}`;\r\n\r\n\r\n        \/\/ --- DATA PERSISTENCE (LocalStorage) ---\r\n        \r\n        function saveToLocalStorage() {\r\n            try {\r\n                localStorage.setItem('evaluationData', JSON.stringify(evaluationData));\r\n                localStorage.setItem('evaluationId', evaluationId);\r\n                console.log(\"Evaluation saved to localStorage.\");\r\n                displayMessage(L[lang].save_btn + \" \u2713\", 'bg-green-500');\r\n            } catch (e) {\r\n                console.error(\"Error saving:\", e);\r\n                displayMessage(\"Save Error\", 'bg-red-500');\r\n            }\r\n        }\r\n\r\n        function loadFromLocalStorage() {\r\n            try {\r\n                const saved = localStorage.getItem('evaluationData');\r\n                const savedId = localStorage.getItem('evaluationId');\r\n                \r\n                if (saved) {\r\n                    evaluationData = JSON.parse(saved);\r\n                    console.log(\"Evaluation loaded from localStorage\");\r\n                }\r\n                if (savedId) {\r\n                    evaluationId = savedId;\r\n                }\r\n                \r\n                \/\/ Ensure proper structure\r\n                evaluationData.goals = evaluationData.goals || [{}, {}, {}];\r\n                evaluationData.training = evaluationData.training || [{}, {}, {}];\r\n                evaluationData.fixed_days = evaluationData.fixed_days || { answers: {} };\r\n                evaluationData.signatures = evaluationData.signatures || { employee: {}, manager: {}, general_manager: {} };\r\n                \r\n            } catch (e) {\r\n                console.error(\"Error loading:\", e);\r\n            }\r\n        }\r\n\r\n\r\n        \/\/ --- CORE APPLICATION LOGIC ---\r\n\r\n        function selectLanguage(selectedLang) {\r\n            lang = selectedLang;\r\n            localStorage.setItem('appLang', lang);\r\n            document.getElementById('lang-select-screen').classList.add('hidden');\r\n            document.getElementById('main-app-container').classList.remove('hidden');\r\n            document.title = L[lang].title;\r\n            \r\n            \/\/ Update dynamic text\r\n            const aiTitle = document.getElementById('ai-assistant-title');\r\n            const chatInput = document.getElementById('ai-chat-input');\r\n            \r\n            if (aiTitle) aiTitle.textContent = L[lang].ai_assistant;\r\n            if (chatInput) chatInput.placeholder = L[lang].chat_input;\r\n            \r\n            document.getElementById('loading-indicator').classList.add('hidden');\r\n            document.getElementById('evaluation-form').classList.remove('hidden');\r\n            \r\n            renderForm();\r\n            updateRadarChart();\r\n        }\r\n\r\n        function handleInputChange(section, key, value, index = null, subKey = null) {\r\n            if (index !== null) {\r\n                if (subKey) {\r\n                    evaluationData[section][index][subKey] = value;\r\n                } else {\r\n                    evaluationData[section][index] = { ...evaluationData[section][index], [key]: value };\r\n                }\r\n            } else if (subKey) {\r\n                 evaluationData[section][key][subKey] = value;\r\n            } else {\r\n                evaluationData[section][key] = value;\r\n            }\r\n\r\n            if (section === 'ratings') {\r\n                updateRadarChart();\r\n            }\r\n            saveToLocalStorage();\r\n        }\r\n\r\n        function handleRatingChange(key, value) {\r\n            evaluationData.ratings[key] = parseInt(value, 10);\r\n            updateRadarChart();\r\n            saveToLocalStorage();\r\n        }\r\n\r\n        function handleRadioChange(section, key, value) {\r\n            evaluationData[section].answers[key] = value;\r\n            saveToLocalStorage();\r\n        }\r\n\r\n        function handleGlobalRatingChange(value) {\r\n            evaluationData.summary.global_rating = value;\r\n            saveToLocalStorage();\r\n        }\r\n\r\n        \/\/ --- CHART & ANALYTICS ---\r\n\r\n        function calculateRadarData() {\r\n            const groups = { 'Performance': [], 'Collaboration': [], 'Autonomy': [], 'Culture': [], 'Leadership': [] };\r\n            const averages = {};\r\n            const labels = [L[lang].radar_l_performance, L[lang].radar_l_collab, L[lang].radar_l_autonomy, L[lang].radar_l_culture, L[lang].radar_l_leadership];\r\n\r\n            Object.entries(evaluationData.ratings).forEach(([key, score]) => {\r\n                const groupName = CRITERIA_MAP[key];\r\n                if (groupName && score) {\r\n                    groups[groupName].push(score);\r\n                }\r\n            });\r\n\r\n            labels.forEach(label => {\r\n                let groupKey = '';\r\n                if (label === L[lang].radar_l_performance) groupKey = 'Performance';\r\n                else if (label === L[lang].radar_l_collab) groupKey = 'Collaboration';\r\n                else if (label === L[lang].radar_l_autonomy) groupKey = 'Autonomy';\r\n                else if (label === L[lang].radar_l_culture) groupKey = 'Culture';\r\n                else if (label === L[lang].radar_l_leadership) groupKey = 'Leadership';\r\n\r\n                const groupScores = groups[groupKey];\r\n                const avg = groupScores.length > 0 ? (groupScores.reduce((a, b) => a + b, 0) \/ groupScores.length) : 0;\r\n                averages[groupKey] = parseFloat(avg.toFixed(2));\r\n            });\r\n\r\n            return {\r\n                labels,\r\n                data: [\r\n                    averages.Performance || 0,\r\n                    averages.Collaboration || 0,\r\n                    averages.Autonomy || 0,\r\n                    averages.Culture || 0,\r\n                    averages.Leadership || 0\r\n                ]\r\n            };\r\n        }\r\n\r\n        function updateRadarChart() {\r\n            const radarData = calculateRadarData();\r\n            const ctx = document.getElementById('radar-chart-canvas');\r\n\r\n            if (!ctx) return;\r\n\r\n            if (chartInstance) {\r\n                chartInstance.data.labels = radarData.labels;\r\n                chartInstance.data.datasets[0].data = radarData.data;\r\n                chartInstance.update();\r\n                return;\r\n            }\r\n\r\n            chartInstance = new Chart(ctx, {\r\n                type: 'radar',\r\n                data: {\r\n                    labels: radarData.labels,\r\n                    datasets: [{\r\n                        label: L[lang].radar_chart_title,\r\n                        data: radarData.data,\r\n                        backgroundColor: 'rgba(59, 130, 246, 0.2)',\r\n                        borderColor: 'rgba(59, 130, 246, 1)',\r\n                        pointBackgroundColor: 'rgba(59, 130, 246, 1)',\r\n                        pointBorderColor: '#fff',\r\n                        pointHoverBackgroundColor: '#fff',\r\n                        pointHoverBorderColor: 'rgba(59, 130, 246, 1)'\r\n                    }]\r\n                },\r\n                options: {\r\n                    responsive: true,\r\n                    maintainAspectRatio: false,\r\n                    scales: {\r\n                        r: {\r\n                            angleLines: { color: '#e5e7eb' },\r\n                            grid: { color: '#e5e7eb' },\r\n                            pointLabels: { font: { size: 14, family: 'Inter' } },\r\n                            suggestedMin: 0, suggestedMax: 4,\r\n                            ticks: { stepSize: 1, backdropColor: 'transparent' }\r\n                        }\r\n                    },\r\n                    plugins: {\r\n                        legend: { display: false },\r\n                        tooltip: { callbacks: { label: (context) => `${context.label}: ${context.raw}` } }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n\r\n        \/\/ --- AI ASSISTANT ---\r\n\r\n        function displayMessage(text, className) {\r\n            const statusBox = document.getElementById('status-message');\r\n            statusBox.textContent = text;\r\n            statusBox.className = `fixed bottom-5 right-5 p-3 rounded-lg text-white font-semibold shadow-lg z-50 transition-all ${className}`;\r\n            setTimeout(() => { statusBox.className = 'hidden'; }, 3000);\r\n        }\r\n\r\n        function displayAICoachResponse(message, isUser = false) {\r\n            const chatLog = document.getElementById('ai-chat-log');\r\n            const role = isUser ? 'You' : 'AI Coach';\r\n            const bgColor = isUser ? 'bg-blue-100 text-blue-900' : 'bg-green-100 text-green-900';\r\n            const alignment = isUser ? 'self-end' : 'self-start';\r\n\r\n            const msgDiv = document.createElement('div');\r\n            msgDiv.className = `p-3 my-2 rounded-xl max-w-[85%] ${bgColor} ${alignment}`;\r\n            msgDiv.innerHTML = `<strong>${role}:<\/strong> ${message.replace(\/\\n\/g, '<br>')}`;\r\n            chatLog.appendChild(msgDiv);\r\n            chatLog.scrollTop = chatLog.scrollHeight;\r\n        }\r\n\r\n        async function callGeminiApi(prompt, systemInstruction) {\r\n            if (!apiKey) {\r\n                return \"AI Assistant unavailable (no API key configured)\";\r\n            }\r\n            \r\n            const payload = {\r\n                contents: [{ parts: [{ text: prompt }] }],\r\n                systemInstruction: { parts: [{ text: systemInstruction }] },\r\n            };\r\n\r\n            try {\r\n                const response = await fetch(apiUrl, {\r\n                    method: 'POST',\r\n                    headers: { 'Content-Type': 'application\/json' },\r\n                    body: JSON.stringify(payload)\r\n                });\r\n\r\n                if (!response.ok) {\r\n                    throw new Error(`API call failed: ${response.status}`);\r\n                }\r\n\r\n                const result = await response.json();\r\n                return result.candidates?.[0]?.content?.parts?.[0]?.text || L[lang].ai_thinking;\r\n\r\n            } catch (error) {\r\n                console.error(\"Gemini API error:\", error);\r\n                return \"AI Assistant temporarily unavailable\";\r\n            }\r\n        }\r\n\r\n        async function sendAICoachMessage() {\r\n            const input = document.getElementById('ai-chat-input');\r\n            const userMessage = input.value.trim();\r\n            if (!userMessage) return;\r\n\r\n            displayAICoachResponse(userMessage, true);\r\n            input.value = '';\r\n\r\n            const status = document.getElementById('ai-status');\r\n            status.textContent = L[lang].ai_thinking;\r\n            status.classList.remove('hidden');\r\n\r\n            const systemPrompt = `You are an HR Coach. Respond in ${lang}. Be professional and supportive.`;\r\n            const geminiResponse = await callGeminiApi(userMessage, systemPrompt);\r\n\r\n            status.classList.add('hidden');\r\n            displayAICoachResponse(geminiResponse, false);\r\n        }\r\n\r\n        async function generateAISummary(sectionId, fieldKey, sourceText) {\r\n            const statusId = `status-${sectionId}-${fieldKey}`;\r\n            const status = document.getElementById(statusId);\r\n            if (!sourceText) {\r\n                status.textContent = \"Please enter text first\";\r\n                return;\r\n            }\r\n\r\n            status.textContent = L[lang].ai_thinking;\r\n            status.classList.remove('hidden');\r\n\r\n            const systemPrompt = `Summarize in 3-4 bullet points in ${lang}. Be concise.`;\r\n            const prompt = `Summarize:\\n\\n${sourceText}`;\r\n\r\n            const geminiResponse = await callGeminiApi(prompt, systemPrompt);\r\n\r\n            status.classList.add('hidden');\r\n            displayAICoachResponse(`**Summary:**\\n${geminiResponse}`, false);\r\n        }\r\n\r\n        async function generateAIRecommendations() {\r\n            const radarData = calculateRadarData();\r\n            const lowScores = radarData.labels\r\n                .map((label, index) => ({ label, score: radarData.data[index] }))\r\n                .filter(item => item.score > 0 && item.score < 2.5);\r\n            const highScores = radarData.labels\r\n                .map((label, index) => ({ label, score: radarData.data[index] }))\r\n                .filter(item => item.score >= 3.5);\r\n\r\n            if (lowScores.length === 0 && highScores.length === 0) {\r\n                 displayAICoachResponse(\"Please complete the evaluation table first.\", false);\r\n                 return;\r\n            }\r\n\r\n            const prompt = `Based on performance:\r\n            Low areas: ${lowScores.map(s => `${s.label} (${s.score})`).join(', ') || 'None'}\r\n            High areas: ${highScores.map(s => `${s.label} (${s.score})`).join(', ') || 'None'}\r\n            \r\n            Provide 2 improvement recommendations and 2 strength-leveraging suggestions.`;\r\n\r\n            const systemPrompt = `You are an HR Consultant. Provide recommendations in ${lang}.`;\r\n\r\n            const status = document.getElementById('ai-status');\r\n            status.textContent = L[lang].ai_thinking;\r\n            status.classList.remove('hidden');\r\n\r\n            const geminiResponse = await callGeminiApi(prompt, systemPrompt);\r\n\r\n            status.classList.add('hidden');\r\n            displayAICoachResponse(`**Recommendations:**\\n${geminiResponse}`, false);\r\n        }\r\n\r\n        \/\/ --- EXPORT FUNCTIONALITY ---\r\n\r\n        function exportEvaluation(format) {\r\n            if (format === 'csv') {\r\n                exportToCSV();\r\n            } else if (format === 'json') {\r\n                exportToJSON();\r\n            }\r\n        }\r\n\r\n        function exportToJSON() {\r\n            const dataString = JSON.stringify(evaluationData, null, 2);\r\n            const blob = new Blob([dataString], { type: 'application\/json' });\r\n            const url = URL.createObjectURL(blob);\r\n            const a = document.createElement('a');\r\n            a.href = url;\r\n            a.download = `Evaluation-${evaluationData.metadata.employee_name || 'Employee'}-${new Date().toISOString().split('T')[0]}.json`;\r\n            document.body.appendChild(a);\r\n            a.click();\r\n            document.body.removeChild(a);\r\n            URL.revokeObjectURL(url);\r\n            displayMessage('JSON Export \u2713', 'bg-blue-500');\r\n        }\r\n\r\n        function exportToCSV() {\r\n            const csv = [];\r\n            \r\n            csv.push(['Employee Evaluation Report']);\r\n            csv.push([`Generated: ${new Date().toLocaleString()}`]);\r\n            csv.push([]);\r\n            \r\n            csv.push(['METADATA']);\r\n            csv.push(['Field', 'Value']);\r\n            csv.push(['Employee Name', evaluationData.metadata.employee_name || '']);\r\n            csv.push(['Position', evaluationData.metadata.position || '']);\r\n            csv.push(['Date', evaluationData.metadata.date || '']);\r\n            csv.push(['Department', evaluationData.metadata.department || '']);\r\n            csv.push([]);\r\n            \r\n            const radarData = calculateRadarData();\r\n            csv.push(['PERFORMANCE AVERAGES']);\r\n            csv.push(['Category', 'Score']);\r\n            radarData.labels.forEach((label, index) => {\r\n                csv.push([label, radarData.data[index]]);\r\n            });\r\n            csv.push([]);\r\n            \r\n            csv.push(['RATINGS DETAIL']);\r\n            csv.push(['Category', 'Criterion', 'Rating']);\r\n            \r\n            ['perf_work', 'perf_quality', 'perf_goals', 'perf_decision', 'perf_priority'].forEach(key => {\r\n                csv.push(['Performance', L[lang][`criteria_${key}`], evaluationData.ratings[key] || '']);\r\n            });\r\n            \r\n            ['collab_part', 'collab_info', 'collab_team', 'collab_peers', 'collab_dept', 'collab_sup'].forEach(key => {\r\n                csv.push(['Collaboration', L[lang][`criteria_${key}`], evaluationData.ratings[key] || '']);\r\n            });\r\n            \r\n            ['aut_reliability', 'aut_deadline', 'aut_pressure', 'aut_autonomy', 'aut_indep', 'aut_initiative', 'aut_seek', 'aut_problem'].forEach(key => {\r\n                csv.push(['Autonomy', L[lang][`criteria_${key}`], evaluationData.ratings[key] || '']);\r\n            });\r\n            \r\n            ['cult_commitment', 'cult_interest', 'cult_align', 'cult_norms', 'cult_ehs', 'cult_safety', 'cult_role'].forEach(key => {\r\n                csv.push(['Culture', L[lang][`criteria_${key}`], evaluationData.ratings[key] || '']);\r\n            });\r\n            \r\n            ['lead_ability', 'lead_strategic', 'lead_creativity', 'lead_listen', 'lead_mobilization', 'lead_persuasion', 'lead_communication'].forEach(key => {\r\n                csv.push(['Leadership', L[lang][`criteria_${key}`], evaluationData.ratings[key] || '']);\r\n            });\r\n            csv.push([]);\r\n            \r\n            csv.push(['SUMMARY']);\r\n            csv.push(['Field', 'Content']);\r\n            csv.push(['Strengths', (evaluationData.summary.strengths || '').replace(\/\\n\/g, ' ')]);\r\n            csv.push(['Areas for Improvement', (evaluationData.summary.improve || '').replace(\/\\n\/g, ' ')]);\r\n            csv.push(['Overall Rating', evaluationData.summary.global_rating || '']);\r\n            csv.push([]);\r\n            \r\n            csv.push(['OBJECTIVES']);\r\n            csv.push(['#', 'Goal', 'Means']);\r\n            evaluationData.goals.forEach((goal, index) => {\r\n                csv.push([\r\n                    index + 1,\r\n                    (goal.goal || '').replace(\/\\n\/g, ' '),\r\n                    (goal.means || '').replace(\/\\n\/g, ' ')\r\n                ]);\r\n            });\r\n            csv.push([]);\r\n            \r\n            csv.push(['TRAINING']);\r\n            csv.push(['#', 'Course', 'Priority']);\r\n            evaluationData.training.forEach((t, index) => {\r\n                csv.push([index + 1, t.course || '', t.priority || '']);\r\n            });\r\n            csv.push([]);\r\n            \r\n            csv.push(['SIGNATURES']);\r\n            csv.push(['Role', 'Signature']);\r\n            csv.push(['Employee', evaluationData.signatures.employee?.signature || '']);\r\n            csv.push(['Manager', evaluationData.signatures.manager?.signature || '']);\r\n            csv.push(['General Manager', evaluationData.signatures.general_manager?.signature || '']);\r\n            \r\n            const csvContent = csv.map(row => \r\n                row.map(cell => {\r\n                    const cellStr = String(cell);\r\n                    if (cellStr.includes(',') || cellStr.includes('\"') || cellStr.includes('\\n')) {\r\n                        return '\"' + cellStr.replace(\/\"\/g, '\"\"') + '\"';\r\n                    }\r\n                    return cellStr;\r\n                }).join(',')\r\n            ).join('\\n');\r\n            \r\n            const blob = new Blob([csvContent], { type: 'text\/csv;charset=utf-8;' });\r\n            const url = URL.createObjectURL(blob);\r\n            const a = document.createElement('a');\r\n            a.href = url;\r\n            a.download = `Evaluation-${evaluationData.metadata.employee_name || 'Employee'}-${new Date().toISOString().split('T')[0]}.csv`;\r\n            document.body.appendChild(a);\r\n            a.click();\r\n            document.body.removeChild(a);\r\n            URL.revokeObjectURL(url);\r\n            displayMessage('CSV Export \u2713', 'bg-blue-500');\r\n        }\r\n\r\n        function importFromJSON(file) {\r\n            const reader = new FileReader();\r\n            reader.onload = function(e) {\r\n                try {\r\n                    const imported = JSON.parse(e.target.result);\r\n                    evaluationData = imported;\r\n                    \r\n                    evaluationData.goals = evaluationData.goals || [{}, {}, {}];\r\n                    evaluationData.training = evaluationData.training || [{}, {}, {}];\r\n                    evaluationData.fixed_days = evaluationData.fixed_days || { answers: {} };\r\n                    evaluationData.signatures = evaluationData.signatures || { employee: {}, manager: {}, general_manager: {} };\r\n                    \r\n                    saveToLocalStorage();\r\n                    renderForm();\r\n                    updateRadarChart();\r\n                    displayMessage('Import Success \u2713', 'bg-green-500');\r\n                } catch (error) {\r\n                    console.error('Import error:', error);\r\n                    displayMessage('Import Error', 'bg-red-500');\r\n                }\r\n            };\r\n            reader.readAsText(file);\r\n        }\r\n\r\n        function handleImport(event) {\r\n            const file = event.target.files[0];\r\n            if (!file) return;\r\n            \r\n            const extension = file.name.split('.').pop().toLowerCase();\r\n            if (extension === 'json') {\r\n                importFromJSON(file);\r\n            } else {\r\n                alert('Please select a JSON file');\r\n            }\r\n            \r\n            event.target.value = '';\r\n        }\r\n\r\n        function clearAllData() {\r\n            if (confirm('Clear all data? This cannot be undone.')) {\r\n                evaluationData = {\r\n                    metadata: {}, reflection: {}, ratings: {}, summary: {}, goals: [{}, {}, {}],\r\n                    training: [{}, {}, {}], development: {}, fixed_days: { answers: {} },\r\n                    signatures: { employee: {}, manager: {}, general_manager: {} }\r\n                };\r\n                localStorage.removeItem('evaluationData');\r\n                renderForm();\r\n                updateRadarChart();\r\n                displayMessage('Data Cleared', 'bg-yellow-500');\r\n            }\r\n        }\r\n\r\n\r\n        \/\/ --- UI RENDERING ---\r\n\r\n        function renderForm() {\r\n            document.getElementById('evaluation-form').innerHTML = `\r\n                <div class=\"p-6 md:p-10 max-w-7xl mx-auto space-y-12\">\r\n                    <h1 class=\"text-3xl md:text-4xl font-extrabold text-blue-700 text-center mb-10\">${L[lang].title}<\/h1>\r\n\r\n                    <div class=\"flex flex-col sm:flex-row justify-between items-center gap-4 mb-8\">\r\n                        <div class=\"flex gap-2\">\r\n                            <button onclick=\"saveToLocalStorage()\" class=\"bg-green-600 hover:bg-green-700 text-white font-bold py-2 px-6 rounded-full shadow-lg transition\">\r\n                                \ud83d\udcbe ${L[lang].save_btn}\r\n                            <\/button>\r\n                            <button onclick=\"clearAllData()\" class=\"bg-gray-500 hover:bg-gray-600 text-white text-sm py-2 px-4 rounded-full transition\">\r\n                                \ud83d\uddd1\ufe0f Clear\r\n                            <\/button>\r\n                        <\/div>\r\n                        <div class=\"flex gap-2 flex-wrap\">\r\n                            <button onclick=\"exportEvaluation('csv')\" class=\"bg-blue-600 hover:bg-blue-700 text-white text-sm py-2 px-4 rounded-full transition\">\r\n                                \ud83d\udcca CSV\r\n                            <\/button>\r\n                            <button onclick=\"exportEvaluation('json')\" class=\"bg-gray-700 hover:bg-gray-800 text-white text-sm py-2 px-4 rounded-full transition\">\r\n                                \ud83d\udcc4 JSON\r\n                            <\/button>\r\n                            <label class=\"bg-purple-600 hover:bg-purple-700 text-white text-sm py-2 px-4 rounded-full transition cursor-pointer\">\r\n                                \ud83d\udce5 Import\r\n                                <input type=\"file\" accept=\".json\" onchange=\"handleImport(event)\" class=\"hidden\">\r\n                            <\/label>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"text-xs text-gray-500 text-center mb-4\">\r\n                        \ud83d\udca1 <strong>Auto-save enabled<\/strong> - Data saved to browser. Export for backup.\r\n                    <\/div>\r\n\r\n                    ${renderMetadata()}\r\n                    ${renderSectionI()}\r\n                    ${renderSectionII()}\r\n                    ${renderSectionIII()}\r\n                    ${renderSectionIV()}\r\n                <\/div>\r\n            `;\r\n            updateRadarChart();\r\n        }\r\n\r\n        function renderMetadata() {\r\n            const fields = [\r\n                { key: 'date', label: L[lang].meta_date, type: 'date' },\r\n                { key: 'employee_name', label: L[lang].meta_employee_name, type: 'text' },\r\n                { key: 'position', label: L[lang].meta_position, type: 'text' },\r\n                { key: 'date_joined', label: L[lang].meta_date_joined, type: 'date' },\r\n                { key: 'seniority', label: L[lang].meta_seniority, type: 'text' },\r\n                { key: 'department', label: L[lang].meta_department, type: 'text' },\r\n                { key: 'supervisor_name', label: L[lang].meta_supervisor_name, type: 'text' },\r\n                { key: 'supervisor_position', label: L[lang].meta_supervisor_position, type: 'text' },\r\n                { key: 'manager_name', label: L[lang].meta_manager_name, type: 'text' },\r\n            ];\r\n\r\n            return `\r\n                <div class=\"bg-white p-6 rounded-xl shadow-lg\">\r\n                    <h2 class=\"text-2xl font-bold text-gray-800 mb-6\">\ud83d\udccb ${L[lang].sec_i_title.split('.')[0]} - Metadata<\/h2>\r\n                    <div class=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6\">\r\n                        ${fields.map(field => `\r\n                            <div>\r\n                                <label class=\"block text-sm font-medium text-gray-700 mb-1\">${field.label}<\/label>\r\n                                <input type=\"${field.type}\" value=\"${evaluationData.metadata[field.key] || ''}\" onchange=\"handleInputChange('metadata', '${field.key}', this.value)\"\r\n                                    class=\"w-full p-2 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500\">\r\n                            <\/div>\r\n                        `).join('')}\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderTextArea(section, key, label, rows = 3) {\r\n            const statusId = `status-${section}-${key}`;\r\n            const currentVal = evaluationData[section][key] || '';\r\n            return `\r\n                <div class=\"mb-6 form-section\">\r\n                    <label class=\"block text-lg font-semibold text-gray-800 mb-2\">${label}<\/label>\r\n                    <textarea rows=\"${rows}\" id=\"input-${section}-${key}\" onchange=\"handleInputChange('${section}', '${key}', this.value)\"\r\n                        class=\"w-full p-3 border border-gray-300 rounded-lg focus:ring-blue-500 focus:border-blue-500\">${currentVal}<\/textarea>\r\n                    <div class=\"flex justify-end mt-2\">\r\n                        <button onclick=\"generateAISummary('${section}', '${key}', document.getElementById('input-${section}-${key}').value)\"\r\n                            class=\"text-xs bg-blue-100 text-blue-800 hover:bg-blue-200 py-1 px-3 rounded-full transition\">\r\n                            \u2728 ${L[lang].summary_btn}\r\n                        <\/button>\r\n                        <span id=\"${statusId}\" class=\"ml-3 text-sm text-yellow-600 hidden\"><\/span>\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderRatingRow(key, label) {\r\n            const name = `rating-${key}`;\r\n            const currentValue = evaluationData.ratings[key];\r\n            const scales = [\r\n                { value: 1, label: L[lang].ib_scale_1 },\r\n                { value: 2, label: L[lang].ib_scale_2 },\r\n                { value: 3, label: L[lang].ib_scale_3 },\r\n                { value: 4, label: L[lang].ib_scale_4 }\r\n            ];\r\n\r\n            return `\r\n                <div class=\"grid grid-cols-5 gap-2 py-3 border-b border-gray-100 items-center\">\r\n                    <div class=\"col-span-2 text-sm font-medium text-gray-700\">${label}<\/div>\r\n                    <div class=\"col-span-3 grid grid-cols-4 gap-2\">\r\n                        ${scales.map(scale => `\r\n                            <label for=\"${name}-${scale.value}\" class=\"rating-label flex flex-col items-center justify-center p-2 rounded-lg text-xs border border-gray-300\r\n                                ${currentValue === scale.value ? 'rating-checked' : 'bg-gray-50 hover:bg-gray-100'}\">\r\n                                <input type=\"radio\" id=\"${name}-${scale.value}\" name=\"${name}\" value=\"${scale.value}\"\r\n                                    onclick=\"handleRatingChange('${key}', ${scale.value})\"\r\n                                    ${currentValue === scale.value ? 'checked' : ''} class=\"hidden\">\r\n                                <span class=\"font-bold\">${scale.value}<\/span>\r\n                            <\/label>\r\n                        `).join('')}\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderSectionI() {\r\n            const reflectionFields = [\r\n                { key: 'q1', label: L[lang].ia_q1, rows: 3 }, { key: 'q2', label: L[lang].ia_q2, rows: 4 },\r\n                { key: 'q3', label: L[lang].ia_q3, rows: 4 }, { key: 'q4', label: L[lang].ia_q4, rows: 3 },\r\n                { key: 'q5', label: L[lang].ia_q5, rows: 3 }, { key: 'q6', label: L[lang].ia_q6, rows: 4 },\r\n                { key: 'q7', label: L[lang].ia_q7, rows: 4 }, { key: 'q8', label: L[lang].ia_q8, rows: 3 },\r\n                { key: 'q9', label: L[lang].ia_q9, rows: 3 }\r\n            ];\r\n\r\n            const ratingCriteria = [\r\n                { key: 'perf_work', label: L[lang].criteria_perf_work }, { key: 'perf_quality', label: L[lang].criteria_perf_quality }, { key: 'perf_goals', label: L[lang].criteria_perf_goals },\r\n                { key: 'perf_decision', label: L[lang].criteria_perf_decision }, { key: 'perf_priority', label: L[lang].criteria_perf_priority },\r\n                { key: 'collab_part', label: L[lang].criteria_collab_part }, { key: 'collab_info', label: L[lang].criteria_collab_info }, { key: 'collab_team', label: L[lang].criteria_collab_team },\r\n                { key: 'collab_peers', label: L[lang].criteria_collab_peers }, { key: 'collab_dept', label: L[lang].criteria_collab_dept }, { key: 'collab_sup', label: L[lang].criteria_collab_sup },\r\n                { key: 'aut_reliability', label: L[lang].criteria_aut_reliability }, { key: 'aut_deadline', label: L[lang].criteria_aut_deadline }, { key: 'aut_pressure', label: L[lang].criteria_aut_pressure },\r\n                { key: 'aut_autonomy', label: L[lang].criteria_aut_autonomy }, { key: 'aut_indep', label: L[lang].criteria_aut_indep }, { key: 'aut_initiative', label: L[lang].criteria_aut_initiative },\r\n                { key: 'aut_seek', label: L[lang].criteria_aut_seek }, { key: 'aut_problem', label: L[lang].criteria_aut_problem },\r\n                { key: 'cult_commitment', label: L[lang].criteria_cult_commitment }, { key: 'cult_interest', label: L[lang].criteria_cult_interest }, { key: 'cult_align', label: L[lang].criteria_cult_align },\r\n                { key: 'cult_norms', label: L[lang].criteria_cult_norms }, { key: 'cult_ehs', label: L[lang].criteria_cult_ehs }, { key: 'cult_safety', label: L[lang].criteria_cult_safety },\r\n                { key: 'cult_role', label: L[lang].criteria_cult_role },\r\n                { key: 'lead_ability', label: L[lang].criteria_lead_ability }, { key: 'lead_strategic', label: L[lang].criteria_lead_strategic }, { key: 'lead_creativity', label: L[lang].criteria_lead_creativity },\r\n                { key: 'lead_listen', label: L[lang].criteria_lead_listen }, { key: 'lead_mobilization', label: L[lang].criteria_lead_mobilization }, { key: 'lead_persuasion', label: L[lang].criteria_lead_persuasion },\r\n                { key: 'lead_communication', label: L[lang].criteria_lead_communication },\r\n            ];\r\n\r\n            const summaryFields = [\r\n                { key: 'goals', label: L[lang].ic_goals, rows: 3 },\r\n                { key: 'strengths', label: L[lang].ic_strengths, rows: 3 },\r\n                { key: 'improve', label: L[lang].ic_improve, rows: 3 },\r\n                { key: 'manager_comments', label: L[lang].ic_manager_comments, rows: 5 },\r\n                { key: 'employee_comments', label: L[lang].ic_employee_comments, rows: 5 }\r\n            ];\r\n\r\n            return `\r\n                <div class=\"bg-white p-6 rounded-xl shadow-lg space-y-8\">\r\n                    <h2 class=\"text-2xl font-bold text-blue-700\">\ud83d\udcca ${L[lang].sec_i_title}<\/h2>\r\n\r\n                    <div class=\"space-y-4\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ia_title}<\/h3>\r\n                        ${reflectionFields.map(field => renderTextArea('reflection', field.key, field.label, field.rows)).join('')}\r\n                    <\/div>\r\n\r\n                    <div class=\"space-y-4 pt-6\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ib_title}<\/h3>\r\n\r\n                        <div class=\"bg-blue-50 p-4 rounded-xl shadow-inner md:flex md:space-x-8\">\r\n                            <div class=\"md:w-1\/2 h-80 relative\">\r\n                                <canvas id=\"radar-chart-canvas\"><\/canvas>\r\n                            <\/div>\r\n                            <div class=\"md:w-1\/2 mt-6 md:mt-0 space-y-2\">\r\n                                <h4 class=\"text-lg font-bold text-blue-700\">${L[lang].radar_chart_title}<\/h4>\r\n                                <p class=\"text-sm text-gray-600\">${L[lang].ib_scale_1} \u2192 ${L[lang].ib_scale_4}<\/p>\r\n                                <button onclick=\"generateAIRecommendations()\" class=\"w-full bg-yellow-500 hover:bg-yellow-600 text-white font-bold py-2 px-4 rounded-lg shadow transition\">\r\n                                    \ud83d\udca1 ${L[lang].recommendations_btn}\r\n                                <\/button>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div class=\"mt-8\">\r\n                            ${ratingCriteria.map(c => renderRatingRow(c.key, c.label)).join('')}\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"space-y-4 pt-6\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ic_title}<\/h3>\r\n                        ${summaryFields.slice(0, 3).map(field => renderTextArea('summary', field.key, field.label, field.rows)).join('')}\r\n\r\n                        <div class=\"mb-6 form-section\">\r\n                            <label class=\"block text-lg font-semibold text-gray-800 mb-2\">${L[lang].ic_global_title}<\/label>\r\n                            <div class=\"flex flex-wrap gap-4\">\r\n                                ${['A', 'B', 'C', 'D'].map(rating => `\r\n                                    <label class=\"inline-flex items-center\">\r\n                                        <input type=\"radio\" name=\"global_rating\" value=\"${rating}\" onclick=\"handleGlobalRatingChange(this.value)\"\r\n                                            ${evaluationData.summary.global_rating === rating ? 'checked' : ''} class=\"form-radio text-blue-600 h-5 w-5\">\r\n                                        <span class=\"ml-2 text-gray-700\">${L[lang]['ic_rating_' + rating.toLowerCase()]}<\/span>\r\n                                    <\/label>\r\n                                `).join('')}\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        ${summaryFields.slice(3).map(field => renderTextArea('summary', field.key, field.label, field.rows)).join('')}\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderSectionII() {\r\n            const goals = evaluationData.goals || [{}, {}, {}];\r\n            const training = evaluationData.training || [{}, {}, {}];\r\n\r\n            return `\r\n                <div class=\"bg-white p-6 rounded-xl shadow-lg space-y-8\">\r\n                    <h2 class=\"text-2xl font-bold text-blue-700\">\ud83c\udfaf ${L[lang].sec_ii_title}<\/h2>\r\n\r\n                    <div class=\"space-y-4\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ii_a_title}<\/h3>\r\n                        ${goals.map((goal, index) => `\r\n                            <div class=\"border p-4 rounded-lg space-y-3 form-section\">\r\n                                <p class=\"font-bold text-gray-700\">Goal ${index + 1}<\/p>\r\n                                <div>\r\n                                    <label class=\"block text-sm font-medium text-gray-600 mb-1\">${L[lang].ii_a_goal}<\/label>\r\n                                    <textarea rows=\"2\" onchange=\"handleInputChange('goals', 'goal', this.value, ${index})\"\r\n                                        class=\"w-full p-2 border border-gray-300 rounded-lg\">${goal.goal || ''}<\/textarea>\r\n                                <\/div>\r\n                                <div>\r\n                                    <label class=\"block text-sm font-medium text-gray-600 mb-1\">${L[lang].ii_a_means}<\/label>\r\n                                    <textarea rows=\"3\" onchange=\"handleInputChange('goals', 'means', this.value, ${index})\"\r\n                                        class=\"w-full p-2 border border-gray-300 rounded-lg\">${goal.means || ''}<\/textarea>\r\n                                <\/div>\r\n                            <\/div>\r\n                        `).join('')}\r\n                    <\/div>\r\n\r\n                    <div class=\"space-y-4 pt-6\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ii_b_title}<\/h3>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\r\n                            ${training.map((t, index) => `\r\n                                <div class=\"border p-4 rounded-lg space-y-2\">\r\n                                    <p class=\"font-bold text-gray-700\">Training ${index + 1}<\/p>\r\n                                    <div>\r\n                                        <label class=\"block text-sm font-medium text-gray-600 mb-1\">${L[lang].ii_b_course}<\/label>\r\n                                        <input type=\"text\" value=\"${t.course || ''}\" onchange=\"handleInputChange('training', 'course', this.value, ${index})\"\r\n                                            class=\"w-full p-2 border border-gray-300 rounded-lg\">\r\n                                    <\/div>\r\n                                    <div>\r\n                                        <label class=\"block text-sm font-medium text-gray-600 mb-1\">${L[lang].ii_b_priority}<\/label>\r\n                                        <input type=\"number\" min=\"1\" max=\"3\" value=\"${t.priority || ''}\" onchange=\"handleInputChange('training', 'priority', this.value, ${index})\"\r\n                                            class=\"w-full p-2 border border-gray-300 rounded-lg\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                            `).join('')}\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"space-y-4 pt-6\">\r\n                        <h3 class=\"text-xl font-semibold text-gray-800 border-b pb-2\">${L[lang].ii_c_title}<\/h3>\r\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n                            ${['career', 'target_pos', 'timeline', 'geo_zone'].map(key => `\r\n                                <div>\r\n                                    <label class=\"block text-sm font-medium text-gray-700 mb-1\">${L[lang]['ii_c_' + key]}<\/label>\r\n                                    <input type=\"text\" value=\"${evaluationData.development[key] || ''}\" onchange=\"handleInputChange('development', '${key}', this.value)\"\r\n                                        class=\"w-full p-2 border border-gray-300 rounded-lg\">\r\n                                <\/div>\r\n                            `).join('')}\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderSectionIII() {\r\n            const fixedDays = evaluationData.fixed_days;\r\n            const fixedDayQuestions = [\r\n                { key: 'q1', label: L[lang].iii_q1 }, { key: 'q2', label: L[lang].iii_q2 }, { key: 'q3', label: L[lang].iii_q3 },\r\n                { key: 'q4', label: L[lang].iii_q4 }, { key: 'q5', label: L[lang].iii_q5 }, { key: 'q6', label: L[lang].iii_q6 }\r\n            ];\r\n\r\n            return `\r\n                <div class=\"bg-white p-6 rounded-xl shadow-lg space-y-8\">\r\n                    <h2 class=\"text-2xl font-bold text-blue-700\">\ud83d\udcc5 ${L[lang].sec_iii_title}<\/h2>\r\n\r\n                    <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\r\n                        <div>\r\n                            <label class=\"block text-sm font-medium text-gray-700 mb-1\">${L[lang].iii_date_sig}<\/label>\r\n                            <input type=\"text\" value=\"${fixedDays.date_sig || ''}\" onchange=\"handleInputChange('fixed_days', 'date_sig', this.value)\"\r\n                                class=\"w-full p-2 border border-gray-300 rounded-lg\">\r\n                        <\/div>\r\n                        <div>\r\n                            <label class=\"block text-sm font-medium text-gray-700 mb-1\">${L[lang].iii_days_worked}<\/label>\r\n                            <input type=\"number\" min=\"0\" value=\"${fixedDays.days_worked || ''}\" onchange=\"handleInputChange('fixed_days', 'days_worked', this.value)\"\r\n                                class=\"w-full p-2 border border-gray-300 rounded-lg\">\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <div class=\"space-y-4\">\r\n                        ${fixedDayQuestions.map(q => `\r\n                            <div class=\"flex justify-between items-center py-2 border-b\">\r\n                                <span class=\"text-gray-700\">${q.label}<\/span>\r\n                                <div class=\"flex gap-4\">\r\n                                    <label class=\"inline-flex items-center\">\r\n                                        <input type=\"radio\" name=\"${q.key}\" value=\"yes\" onclick=\"handleRadioChange('fixed_days', '${q.key}', 'yes')\"\r\n                                            ${fixedDays.answers[q.key] === 'yes' ? 'checked' : ''} class=\"form-radio text-blue-600 h-5 w-5\">\r\n                                        <span class=\"ml-2\">${L[lang].iii_yes}<\/span>\r\n                                    <\/label>\r\n                                    <label class=\"inline-flex items-center\">\r\n                                        <input type=\"radio\" name=\"${q.key}\" value=\"no\" onclick=\"handleRadioChange('fixed_days', '${q.key}', 'no')\"\r\n                                            ${fixedDays.answers[q.key] === 'no' ? 'checked' : ''} class=\"form-radio text-red-600 h-5 w-5\">\r\n                                        <span class=\"ml-2\">${L[lang].iii_no}<\/span>\r\n                                    <\/label>\r\n                                <\/div>\r\n                            <\/div>\r\n                        `).join('')}\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function renderSectionIV() {\r\n            return `\r\n                <div class=\"bg-white p-6 rounded-xl shadow-lg space-y-8\">\r\n                    <h2 class=\"text-2xl font-bold text-blue-700\">\u270d\ufe0f ${L[lang].sec_iv_title}<\/h2>\r\n                    <div class=\"grid grid-cols-1 lg:grid-cols-3 gap-6\">\r\n                        ${['employee', 'manager', 'general_manager'].map(roleKey => {\r\n                            const sig = evaluationData.signatures[roleKey] || {};\r\n                            const roleLabel = L[lang]['iv_' + roleKey];\r\n                            return `\r\n                                <div class=\"border p-6 rounded-xl space-y-4 shadow-sm\">\r\n                                    <h4 class=\"text-lg font-bold text-gray-700\">${roleLabel}<\/h4>\r\n                                    <div>\r\n                                        <label class=\"block text-sm font-medium text-gray-600 mb-1\">${L[lang].iv_signature}<\/label>\r\n                                        <input type=\"text\" value=\"${sig.signature || ''}\" onchange=\"handleInputChange('signatures', 'signature', this.value, null, '${roleKey}')\"\r\n                                            class=\"w-full p-2 border border-gray-300 rounded-lg text-xl font-serif italic bg-yellow-50\">\r\n                                    <\/div>\r\n                                <\/div>\r\n                            `;\r\n                        }).join('')}\r\n                    <\/div>\r\n                <\/div>\r\n            `;\r\n        }\r\n\r\n        function initializeApp() {\r\n            loadFromLocalStorage();\r\n            \r\n            const savedLang = localStorage.getItem('appLang');\r\n            if (savedLang && L[savedLang]) {\r\n                selectLanguage(savedLang);\r\n            } else {\r\n                document.getElementById('lang-select-screen').classList.remove('hidden');\r\n            }\r\n        }\r\n\r\n        \/\/ Global exports\r\n        window.selectLanguage = selectLanguage;\r\n        window.handleInputChange = handleInputChange;\r\n        window.handleRatingChange = handleRatingChange;\r\n        window.handleRadioChange = handleRadioChange;\r\n        window.handleGlobalRatingChange = handleGlobalRatingChange;\r\n        window.saveToLocalStorage = saveToLocalStorage;\r\n        window.sendAICoachMessage = sendAICoachMessage;\r\n        window.generateAISummary = generateAISummary;\r\n        window.generateAIRecommendations = generateAIRecommendations;\r\n        window.exportEvaluation = exportEvaluation;\r\n        window.handleImport = handleImport;\r\n        window.clearAllData = clearAllData;\r\n\r\n        window.onload = initializeApp;\r\n\r\n    <\/script>\r\n\r\n    <!-- STATUS MESSAGE BOX -->\r\n    <div id=\"status-message\" class=\"hidden\"><\/div>\r\n\r\n    <!-- LANGUAGE SELECTION SCREEN -->\r\n    <div id=\"lang-select-screen\" class=\"hidden flex flex-col items-center justify-center min-h-screen bg-gradient-to-br from-blue-600 to-blue-800 text-white\">\r\n        <h1 class=\"text-5xl font-extrabold mb-8 text-center\">\ud83c\udf0d Employee Evaluation System<\/h1>\r\n        <p class=\"text-xl mb-6\">Choose your language \/ Choisissez votre langue \/ Elija su idioma<\/p>\r\n        <div class=\"flex space-x-4\">\r\n            <button onclick=\"selectLanguage('EN')\" class=\"bg-white text-blue-600 font-bold py-4 px-8 rounded-full text-lg hover:bg-gray-100 transition duration-300 shadow-xl\">\r\n                \ud83c\uddec\ud83c\udde7 English\r\n            <\/button>\r\n            <button onclick=\"selectLanguage('FR')\" class=\"bg-white text-blue-600 font-bold py-4 px-8 rounded-full text-lg hover:bg-gray-100 transition duration-300 shadow-xl\">\r\n                \ud83c\uddeb\ud83c\uddf7 Fran\u00e7ais\r\n            <\/button>\r\n            <button onclick=\"selectLanguage('ES')\" class=\"bg-white text-blue-600 font-bold py-4 px-8 rounded-full text-lg hover:bg-gray-100 transition duration-300 shadow-xl\">\r\n                \ud83c\uddea\ud83c\uddf8 Espa\u00f1ol\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- MAIN APPLICATION CONTAINER -->\r\n    <div id=\"main-app-container\" class=\"hidden grid grid-cols-1 lg:grid-cols-4\">\r\n\r\n        <!-- AI ASSISTANT \/ CHAT -->\r\n        <div class=\"lg:col-span-1 bg-white p-6 border-r border-gray-200 sticky top-0 h-screen overflow-y-auto hidden lg:block shadow-xl\">\r\n            <h3 id=\"ai-assistant-title\" class=\"text-2xl font-bold text-green-700 mb-6\">\ud83e\udd16 AI Coach Assistant<\/h3>\r\n            <div id=\"ai-assistant-container\" class=\"flex flex-col h-full\">\r\n                <div id=\"ai-chat-log\" class=\"ai-assistant-container flex-grow flex flex-col p-3 bg-gray-50 mb-4\">\r\n                    <div class=\"text-center text-gray-500 text-sm mt-4\">\r\n                        \ud83d\udcac Ask me anything about evaluations, goals, or career development!\r\n                    <\/div>\r\n                <\/div>\r\n                <p id=\"ai-status\" class=\"text-center text-sm text-yellow-600 mb-2 hidden\"><\/p>\r\n                <div class=\"flex items-center mt-auto\">\r\n                    <input type=\"text\" id=\"ai-chat-input\" placeholder=\"Ask for help or summary...\" onkeydown=\"if(event.key === 'Enter') sendAICoachMessage()\"\r\n                        class=\"flex-grow p-3 border border-gray-300 rounded-l-lg focus:ring-green-500 focus:border-green-500\">\r\n                    <button onclick=\"sendAICoachMessage()\" class=\"bg-green-600 hover:bg-green-700 text-white p-3 rounded-r-lg shadow\">\r\n                        <svg class=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewbox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 13l4 4L19 7\"><\/path><\/svg>\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- EVALUATION FORM -->\r\n        <div class=\"lg:col-span-3 bg-gray-50 min-h-screen\">\r\n            <div id=\"loading-indicator\" class=\"p-20 text-center text-xl text-gray-500\">\u23f3 Loading...<\/div>\r\n            <div id=\"evaluation-form\" class=\"hidden\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<\/body>\r\n<\/html>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>AI-Powered Employee Evaluation System \ud83c\udf0d Employee Evaluation System Choose your language \/ Choisissez votre langue \/ Elija su idioma \ud83c\uddec\ud83c\udde7 English \ud83c\uddeb\ud83c\uddf7 Fran\u00e7ais \ud83c\uddea\ud83c\uddf8 Espa\u00f1ol&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-994","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Human Resources Notebook - Ellak Connections LLC<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ellakconnectionsllc.com\/es\/hr-notebook\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Human Resources Notebook - Ellak Connections LLC\" \/>\n<meta property=\"og:description\" content=\"AI-Powered Employee Evaluation System \ud83c\udf0d Employee Evaluation System Choose your language \/ Choisissez votre langue \/ Elija su idioma \ud83c\uddec\ud83c\udde7 English \ud83c\uddeb\ud83c\uddf7 Fran\u00e7ais \ud83c\uddea\ud83c\uddf8 Espa\u00f1ol&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ellakconnectionsllc.com\/es\/hr-notebook\/\" \/>\n<meta property=\"og:site_name\" content=\"Ellak Connections LLC\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-12T03:26:25+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ellakconnectionsllc.com\/hr-notebook\/\",\"url\":\"https:\/\/ellakconnectionsllc.com\/hr-notebook\/\",\"name\":\"Human Resources Notebook - Ellak Connections LLC\",\"isPartOf\":{\"@id\":\"https:\/\/ellakconnectionsllc.com\/#website\"},\"datePublished\":\"2025-11-12T02:41:50+00:00\",\"dateModified\":\"2025-11-12T03:26:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ellakconnectionsllc.com\/hr-notebook\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ellakconnectionsllc.com\/hr-notebook\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ellakconnectionsllc.com\/hr-notebook\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ellakconnectionsllc.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Human Resources Notebook\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ellakconnectionsllc.com\/#website\",\"url\":\"https:\/\/ellakconnectionsllc.com\/\",\"name\":\"Ellak Connections LLC\",\"description\":\"Translation and interpretation services in Spanish and English\",\"publisher\":{\"@id\":\"https:\/\/ellakconnectionsllc.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ellakconnectionsllc.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ellakconnectionsllc.com\/#organization\",\"name\":\"Ellak Connections LLC\",\"url\":\"https:\/\/ellakconnectionsllc.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/ellakconnectionsllc.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ellakconnectionsllc.com\/wp-content\/uploads\/2021\/03\/cropped-LogoEllakPNG.png\",\"contentUrl\":\"https:\/\/ellakconnectionsllc.com\/wp-content\/uploads\/2021\/03\/cropped-LogoEllakPNG.png\",\"width\":2733,\"height\":1085,\"caption\":\"Ellak Connections LLC\"},\"image\":{\"@id\":\"https:\/\/ellakconnectionsllc.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/ella-khan-0a524434\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Human Resources Notebook - Ellak Connections LLC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ellakconnectionsllc.com\/es\/hr-notebook\/","og_locale":"es_ES","og_type":"article","og_title":"Human Resources Notebook - Ellak Connections LLC","og_description":"AI-Powered Employee Evaluation System \ud83c\udf0d Employee Evaluation System Choose your language \/ Choisissez votre langue \/ Elija su idioma \ud83c\uddec\ud83c\udde7 English \ud83c\uddeb\ud83c\uddf7 Fran\u00e7ais \ud83c\uddea\ud83c\uddf8 Espa\u00f1ol&hellip;","og_url":"https:\/\/ellakconnectionsllc.com\/es\/hr-notebook\/","og_site_name":"Ellak Connections LLC","article_modified_time":"2025-11-12T03:26:25+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ellakconnectionsllc.com\/hr-notebook\/","url":"https:\/\/ellakconnectionsllc.com\/hr-notebook\/","name":"Human Resources Notebook - Ellak Connections LLC","isPartOf":{"@id":"https:\/\/ellakconnectionsllc.com\/#website"},"datePublished":"2025-11-12T02:41:50+00:00","dateModified":"2025-11-12T03:26:25+00:00","breadcrumb":{"@id":"https:\/\/ellakconnectionsllc.com\/hr-notebook\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ellakconnectionsllc.com\/hr-notebook\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ellakconnectionsllc.com\/hr-notebook\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ellakconnectionsllc.com\/"},{"@type":"ListItem","position":2,"name":"Human Resources Notebook"}]},{"@type":"WebSite","@id":"https:\/\/ellakconnectionsllc.com\/#website","url":"https:\/\/ellakconnectionsllc.com\/","name":"Ellak Connections LLC","description":"Translation and interpretation services in Spanish and English","publisher":{"@id":"https:\/\/ellakconnectionsllc.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ellakconnectionsllc.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/ellakconnectionsllc.com\/#organization","name":"Ellak Connections LLC","url":"https:\/\/ellakconnectionsllc.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/ellakconnectionsllc.com\/#\/schema\/logo\/image\/","url":"https:\/\/ellakconnectionsllc.com\/wp-content\/uploads\/2021\/03\/cropped-LogoEllakPNG.png","contentUrl":"https:\/\/ellakconnectionsllc.com\/wp-content\/uploads\/2021\/03\/cropped-LogoEllakPNG.png","width":2733,"height":1085,"caption":"Ellak Connections LLC"},"image":{"@id":"https:\/\/ellakconnectionsllc.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/ella-khan-0a524434"]}]}},"_links":{"self":[{"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/pages\/994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/comments?post=994"}],"version-history":[{"count":17,"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/pages\/994\/revisions"}],"predecessor-version":[{"id":1011,"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/pages\/994\/revisions\/1011"}],"wp:attachment":[{"href":"https:\/\/ellakconnectionsllc.com\/es\/wp-json\/wp\/v2\/media?parent=994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}