Bnbnjj commited on
Commit
18ac99c
·
verified ·
1 Parent(s): b99e7f5

Here is the complete lesson-by-lesson breakdown for the modules we've discussed in detail, formatted for immediate use in teaching or curriculum planning. Each lesson follows the robust structure we developed: Module 1: Advanced Grammar & Stylistic Precision Unit 1.1: Complex Syntax Lesson 1.1.1: Subjunctive Mood Objective: Use subjunctive in formal demands Warm-Up: Complete "I insist that she ______ (be) present" Presentation: Rule + legal examples Activity: Rewrite HR policies using subjunctive Tool: Grammarly Deliverable: Formal email with 5 subjunctives Lesson 1.1.2: Inversion Objective: Emphasize with negative adverbs Warm-Up: Transform "I rarely eat meat" → "Rarely do I eat meat" Presentation: News headline analysis Activity: Create inverted headlines Tool: QuillBot Deliverable: Headline portfolio Lesson 1.1.3: Ellipsis Objective: Omit redundant words Warm-Up: Combine "She likes coffee. He likes tea." Presentation: Academic text examples Activity: Condense abstracts by 30% Tool: Hemingway App Deliverable: Concise summary Unit 1.2: Nuanced Tenses Lesson 1.2.1: Future Perfect Continuous Objective: Project ongoing future actions Warm-Up: Personal milestone timeline creation Presentation: Tense formation rules Activity: Chart career projections Tool: COCA Corpus Deliverable: Future timeline infographic Lesson 1.2.2: Past Modals Objective: Speculate about past events Warm-Up: Mystery scenario solving Presentation: Modal verb distinctions Activity: Write detective narratives Tool: ChatGPT Deliverable: 300-word mystery story Lesson 1.2.3: Narrative Tenses Objective: Create stylistic tense shifts Warm-Up: News to literature conversion Presentation: Flashback techniques Activity: Rewrite events as fiction Tool: ProWritingAid Deliverable: Genre-shifted narrative Unit 1.3: Punctuation Precision Lesson 1.3.1: Semicolons vs. Em-Dashes Objective: Master advanced punctuation Warm-Up: Identify punctuation errors Presentation: Usage rules and examples Activity: Edit academic abstracts Tool: Google Docs Deliverable: Corrected journal excerpt Lesson 1.3.2: Brackets for Asides Objective: Insert non-essential information Warm-Up: Add qualifying details Presentation: Bracket usage guidelines Activity: Annotate research papers Tool: Zotero Deliverable: Annotated bibliography Lesson 1.3.3: Avoiding Comma Splices Objective: Fix fused sentences Warm-Up: Error identification exercise Presentation: Correction techniques Activity: Peer review editing session Tool: Whiteboard Deliverable: Error-free paragraph Module 2: Academic & Professional Writing Unit 2.1: Research Writing Lesson 2.1.1: Thesis Crafting Objective: Formulate debatable claims Warm-Up: Identify thesis in abstracts Presentation: Claim vs. fact distinction Activity: Draft 3 thesis options Tool: JSTOR Deliverable: Research question list Lesson 2.1.2: Source Synthesis Objective: Integrate multiple sources Warm-Up: Color-code source agreements Presentation: Matrix method demo Activity: Synthesis paragraph writing Tool: Mendeley Deliverable: Synthesis table Lesson 2.1.3: APA/MLA Formatting Objective: Master citation systems Warm-Up: Fix citation errors Presentation: Style guide overview Activity: Create reference lists Tool: Citation Machine Deliverable: Formatted bibliography Unit 2.2: Business Communication Lesson 2.2.1: Executive Summaries Objective: Condense complex reports Warm-Up: Analyze 1-slide summaries Presentation: Structure guidelines Activity: Create investor slides Tool: Canva Deliverable: Executive summary slide Lesson 2.2.2: Persuasive Proposals Objective: Craft compelling business cases Warm-Up: Role-play pitch scenarios Presentation: Proposal frameworks Activity: Write funding proposals Tool: PitchVantage Deliverable: 2-page business proposal Lesson 2.2.3: Cross-Cultural Emails Objective: Navigate global communication Warm-Up: Rewrite blunt requests Presentation: Cultural sensitivity training Activity: Draft diplomatic emails Tool: CrystalKnows Deliverable: Culturally appropriate email Unit 2.3: Creative Expression Lesson 2.3.1: Flash Fiction Objective: Write concise narratives Warm-Up: Study 300-word stories Presentation: Twist ending techniques Activity: Compose microfiction Tool: Sudowrite Deliverable: Flash fiction piece Lesson 2.3.2: Poetic Meter Objective: Master verse structures Warm-Up: Convert news to poetry Presentation: Meter and rhyme patterns Activity: Write sonnets and haikus Tool: RhymeZone Deliverable: Poetry collection Lesson 2.3.3: Stylistic Analysis Objective: Mimic canonical voices Warm-Up: Parody famous authors Presentation: Style emulation techniques Activity: Rewrite fairy tales Tool: AI Dungeon Deliverable: Parody text Module 11: AI-Powered Writing Enhancement Unit 11.1: Academic Writing Lesson 11.1.1: AI-Assisted Research Objective: Draft literature reviews with AI Warm-Up: Critique GPT-generated abstract Presentation: Prompt engineering for academia Activity: Human-AI co-writing session Tool: ChatGPT + Zotero Deliverable: Annotated bibliography Lesson 11.1.2: Citation Synthesis Objective: Integrate sources efficiently Warm-Up: Compare human vs. AI citations Presentation: Source evaluation criteria Activity: Build literature synthesis Tool: Consensus.app Deliverable: Synthesis matrix Lesson 11.1.3: Plagiarism Prevention Objective: Maintain academic integrity Warm-Up: Identify plagiarism red flags Presentation: Proper paraphrasing techniques Activity: Rewrite AI outputs Tool: Originality.ai Deliverable: Plagiarism-free research section Unit 11.2: Creative Writing Lesson 11.2.1: AI Story Generation Objective: Co-create narratives with AI Warm-Up: Evaluate AI story starters Presentation: Collaborative writing workflow Activity: Develop plot with Sudowrite Tool: Sudowrite Deliverable: Co-written story outline Lesson 11.2.2: Voice Consistency Objective: Maintain human authorship Warm-Up: Identify AI writing patterns Presentation: Voice preservation strategies Activity: Human editing session Tool: Hemingway App Deliverable: Polished co-written story Lesson 11.2.3: Genre Adaptation Objective: Shift between creative forms Warm-Up: Convert prose to poetry Presentation: Genre-specific techniques Activity: Multi-format storytelling Tool: Jasper Deliverable: Cross-genre creative piece Unit 11.3: Business Writing Lesson 11.3.1: Copy Optimization Objective: Create persuasive marketing copy Warm-Up: A/B test email variations Presentation: Conversion-focused writing Activity: Write sales copy Tool: Jasper Deliverable: A/B tested campaign Lesson 11.3.2: Report Automation Objective: Generate business reports Warm-Up: Analyze automated reports Presentation: Data storytelling techniques Activity: Create executive summaries Tool: ChatGPT Deliverable: Automated report template Lesson 11.3.3: Cross-Cultural Adaptation Objective: Localize business communications Warm-Up: Compare cultural communication styles Presentation: Localization best practices Activity: Adapt content for markets Tool: Lokalise Deliverable: Localized business document Module 14: Ethical AI Communication Unit 14.1: Bias Mitigation Lesson 14.1.1: Algorithmic Auditing Objective: Detect bias in AI outputs Warm-Up: Spot gender bias in hiring tool results Presentation: IBM Fairness 360 dashboard Activity: Calculate disparate impact ratio Tool: IBM AIF360 Deliverable: Bias audit report Lesson 14.1.2: Stereotype Detection Objective: Identify harmful stereotypes Warm-Up: Analyze chatbot responses Presentation: Bias identification frameworks Activity: Content bias screening Tool: Hugging Face Bias Scouts Deliverable: Stereotype detection log Lesson 14.1.3: Impact Framing Objective: Communicate bias implications Warm-Up: Rewrite biased statements Presentation: Responsible disclosure techniques Activity: Draft impact assessments Tool: ChatGPT Deliverable: Bias communication guide Unit 14.2: Transparency & Explainability Lesson 14.2.1: XAI Communication Objective: Explain AI decisions clearly Warm-Up: Interpret SHAP explanations Presentation: Plain language translation Activity: Create explanation guides Tool: SHAP Library Deliverable: Explainable AI document Lesson 14.2.2: Uncertainty Expression Objective: Communicate confidence levels Warm-Up: Analyze probability statements Presentation: Uncertainty communication Activity: Write risk assessments Tool: What-If Tool Deliverable: Uncertainty communication template Lesson 14.2.3: Ethical Disclaimers Objective: Include responsible disclosures Warm-Up: Review AI product disclaimers Presentation: Transparency best practices Activity: Draft ethical statements Tool: Model Cards Toolkit Deliverable: Ethics disclosure document Unit 14.3: Global AI Policy Lesson 14.3.1: Diplomatic Negotiation Objective: Advocate for AI governance Warm-Up: Role-play policy discussions Presentation: Negotiation frameworks Activity: Draft policy proposals Tool: UNESCO AI Policy Simulator Deliverable: Policy recommendation Lesson 14.3.2: Treaty Drafting Objective: Create binding agreements Warm-Up: Analyze existing AI treaties Presentation: Legal drafting principles Activity: Write resolution clauses Tool: Consensus.app Deliverable: Draft treaty section Lesson 14.3.3: Cross-Cultural Advocacy Objective: Promote global AI ethics Warm-Up: Compare cultural perspectives Presentation: Universal principles Activity: Design advocacy campaigns Tool: Crisis Simulator GPT Deliverable: Global advocacy strategy Module 15: AI Content Entrepreneurship Unit 15.1: Product Pitching Lesson 15.1.1: Investor Persuasion Objective: Craft compelling pitches Warm-Up: Analyze successful pitches Presentation: Pitch deck structure Activity: Create value propositions Tool: Tome.app Deliverable: Pitch deck outline Lesson 15.1.2: Metric Storytelling Objective: Present data effectively Warm-Up: Convert metrics to narratives Presentation: Financial storytelling Activity: Build financial models Tool: PredictLeads Deliverable: Financial projection slide Lesson 15.1.3: Q&A Preparation Objective: Handle investor questions Warm-Up: Practice common objections Presentation: Response frameworks Activity: Mock Q&A sessions Tool: ChatGPT Deliverable: Q&A preparation guide Unit 15.2: UX Copywriting Lesson 15.2.1: Microcopy Optimization Objective: Write effective UI text Warm-Up: Analyze app microcopy Presentation: UX writing principles Activity: Optimize button text Tool: Figma + ChatGPT plugin Deliverable: UX copy style guide Lesson 15.2.2: Cultural Adaptation Objective: Localize user interfaces Warm-Up: Compare localized apps Presentation: Cultural adaptation frameworks Activity: Adapt UI for markets Tool: Lokalise Deliverable: Localized UI screens Lesson 15.2.3: SEO Content Hierarchy Objective: Structure content for search Warm-Up: Analyze SEO-optimized pages Presentation: Content hierarchy principles Activity: Create keyword strategies Tool: MarketMuse Deliverable: SEO content plan Unit 15.3: Content Creation Lesson 15.3.1: Viral Scriptwriting Objective: Craft algorithm-optimized hooks Warm-Up: Analyze top #AIethics TikTok hooks Presentation: PAS framework training Activity: A/B test hook variations Tool: TubeBuddy Deliverable: 3 video scripts Lesson 15.3.2: Thumbnail Psychology Objective: Design engaging visuals Warm-Up: A/B test thumbnail designs Presentation: Visual psychology principles Activity: Create thumbnail variations Tool: Canva Deliverable: Thumbnail design portfolio Lesson 15.3.3: Analytics Parsing Objective: Optimize content performance Warm-Up: Analyze YouTube analytics Presentation: Key metrics interpretation Activity: Create growth strategies Tool: Google Analytics Deliverable: Content optimization report Lesson Plan Template Universal Structure for All Lessons: Lesson [Code]: [Topic] Level: [CEFR] Duration: 90 mins Objective: [Measurable outcome] Stages: Warm-Up (15 min): [Activation task with neural priming] Presentation (20 min): [Rule explanation + examples] Guided Practice (25 min): [Scaffolded activity] Production (20 min): [Real-world application task] Assessment (10 min): [Exit ticket/performance check] Tools: [Tech integration] Deliverable: [Concrete output] Differentiation: Support: [Scaffolds] Challenge: [Extensions] - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +1039 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Vjhgu
3
- emoji: 🐢
4
- colorFrom: red
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: vjhgu
3
+ emoji: 🐳
4
+ colorFrom: yellow
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,1039 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Advanced English Curriculum Planner</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .module-card {
11
+ transition: all 0.3s ease;
12
+ transform-style: preserve-3d;
13
+ }
14
+ .module-card:hover {
15
+ transform: translateY(-5px) rotateX(5deg);
16
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
17
+ }
18
+ .lesson-details {
19
+ max-height: 0;
20
+ overflow: hidden;
21
+ transition: max-height 0.5s ease-out;
22
+ }
23
+ .lesson-details.active {
24
+ max-height: 1000px;
25
+ transition: max-height 0.8s ease-in;
26
+ }
27
+ .search-highlight {
28
+ background-color: #fef08a;
29
+ }
30
+ .print-only {
31
+ display: none;
32
+ }
33
+ @media print {
34
+ .no-print {
35
+ display: none;
36
+ }
37
+ .print-only {
38
+ display: block;
39
+ }
40
+ body {
41
+ padding: 0;
42
+ margin: 0;
43
+ }
44
+ .module-card {
45
+ break-inside: avoid;
46
+ border: 1px solid #ddd !important;
47
+ box-shadow: none !important;
48
+ }
49
+ }
50
+ </style>
51
+ </head>
52
+ <body class="bg-gray-50 min-h-screen">
53
+ <div class="container mx-auto px-4 py-8">
54
+ <!-- Header -->
55
+ <header class="mb-10 text-center no-print">
56
+ <h1 class="text-4xl font-bold text-indigo-800 mb-2">Advanced English Curriculum Planner</h1>
57
+ <p class="text-lg text-gray-600 max-w-3xl mx-auto">Comprehensive lesson-by-lesson breakdown for advanced English instruction with AI integration</p>
58
+
59
+ <div class="mt-6 flex flex-col sm:flex-row justify-center gap-4">
60
+ <div class="relative w-full sm:w-96">
61
+ <input type="text" id="searchInput" placeholder="Search lessons..." class="w-full pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500">
62
+ <i class="fas fa-search absolute left-3 top-3 text-gray-400"></i>
63
+ </div>
64
+ <button onclick="printCurriculum()" class="bg-white text-indigo-700 px-4 py-2 rounded-lg border border-indigo-300 hover:bg-indigo-50 flex items-center gap-2 justify-center">
65
+ <i class="fas fa-print"></i> Print
66
+ </button>
67
+ <button onclick="toggleDarkMode()" class="bg-white text-gray-700 px-4 py-2 rounded-lg border border-gray-300 hover:bg-gray-50 flex items-center gap-2 justify-center">
68
+ <i class="fas fa-moon"></i> Dark Mode
69
+ </button>
70
+ </div>
71
+ </header>
72
+
73
+ <!-- Print Header -->
74
+ <div class="print-only mb-8">
75
+ <h1 class="text-3xl font-bold text-center mb-2">Advanced English Curriculum</h1>
76
+ <p class="text-center text-gray-600">Generated on <span id="printDate"></span></p>
77
+ </div>
78
+
79
+ <!-- Filter Controls -->
80
+ <div class="mb-8 bg-white p-4 rounded-xl shadow-sm border border-gray-200 no-print">
81
+ <h2 class="text-xl font-semibold mb-4 text-gray-700">Filter Modules</h2>
82
+ <div class="flex flex-wrap gap-4">
83
+ <div>
84
+ <label class="block text-sm font-medium text-gray-700 mb-1">Module</label>
85
+ <select id="moduleFilter" class="rounded-lg border-gray-300 text-sm">
86
+ <option value="all">All Modules</option>
87
+ <option value="1">Module 1: Advanced Grammar</option>
88
+ <option value="2">Module 2: Academic Writing</option>
89
+ <option value="11">Module 11: AI Writing</option>
90
+ <option value="14">Module 14: Ethical AI</option>
91
+ <option value="15">Module 15: AI Entrepreneurship</option>
92
+ </select>
93
+ </div>
94
+ <div>
95
+ <label class="block text-sm font-medium text-gray-700 mb-1">Unit</label>
96
+ <select id="unitFilter" class="rounded-lg border-gray-300 text-sm">
97
+ <option value="all">All Units</option>
98
+ </select>
99
+ </div>
100
+ <div>
101
+ <label class="block text-sm font-medium text-gray-700 mb-1">Difficulty</label>
102
+ <select id="difficultyFilter" class="rounded-lg border-gray-300 text-sm">
103
+ <option value="all">All Levels</option>
104
+ <option value="B2">B2 (Upper Intermediate)</option>
105
+ <option value="C1">C1 (Advanced)</option>
106
+ <option value="C2">C2 (Proficiency)</option>
107
+ </select>
108
+ </div>
109
+ <div class="flex items-end">
110
+ <button onclick="applyFilters()" class="bg-indigo-600 text-white px-4 py-2 rounded-lg hover:bg-indigo-700 text-sm">Apply Filters</button>
111
+ </div>
112
+ </div>
113
+ </div>
114
+
115
+ <!-- Curriculum Content -->
116
+ <div id="curriculumContent" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
117
+ <!-- Content will be dynamically inserted here -->
118
+ </div>
119
+
120
+ <!-- Empty State -->
121
+ <div id="emptyState" class="hidden text-center py-20">
122
+ <i class="fas fa-book-open text-5xl text-gray-300 mb-4"></i>
123
+ <h3 class="text-xl font-medium text-gray-500">No lessons match your filters</h3>
124
+ <p class="text-gray-400 mt-2">Try adjusting your search or filter criteria</p>
125
+ </div>
126
+ </div>
127
+
128
+ <script>
129
+ // Curriculum data
130
+ const curriculumData = [
131
+ // Module 1
132
+ {
133
+ module: "1",
134
+ title: "Advanced Grammar & Stylistic Precision",
135
+ units: [
136
+ {
137
+ unit: "1.1",
138
+ title: "Complex Syntax",
139
+ lessons: [
140
+ {
141
+ code: "1.1.1",
142
+ topic: "Subjunctive Mood",
143
+ level: "C1",
144
+ duration: "90 mins",
145
+ objective: "Use subjunctive in formal demands",
146
+ warmUp: "Complete 'I insist that she ______ (be) present'",
147
+ presentation: "Rule + legal examples",
148
+ activity: "Rewrite HR policies using subjunctive",
149
+ tool: "Grammarly",
150
+ deliverable: "Formal email with 5 subjunctives"
151
+ },
152
+ {
153
+ code: "1.1.2",
154
+ topic: "Inversion",
155
+ level: "C2",
156
+ duration: "90 mins",
157
+ objective: "Emphasize with negative adverbs",
158
+ warmUp: "Transform 'I rarely eat meat' → 'Rarely do I eat meat'",
159
+ presentation: "News headline analysis",
160
+ activity: "Create inverted headlines",
161
+ tool: "QuillBot",
162
+ deliverable: "Headline portfolio"
163
+ },
164
+ {
165
+ code: "1.1.3",
166
+ topic: "Ellipsis",
167
+ level: "C1",
168
+ duration: "90 mins",
169
+ objective: "Omit redundant words",
170
+ warmUp: "Combine 'She likes coffee. He likes tea.'",
171
+ presentation: "Academic text examples",
172
+ activity: "Condense abstracts by 30%",
173
+ tool: "Hemingway App",
174
+ deliverable: "Concise summary"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ unit: "1.2",
180
+ title: "Nuanced Tenses",
181
+ lessons: [
182
+ {
183
+ code: "1.2.1",
184
+ topic: "Future Perfect Continuous",
185
+ level: "C2",
186
+ duration: "90 mins",
187
+ objective: "Project ongoing future actions",
188
+ warmUp: "Personal milestone timeline creation",
189
+ presentation: "Tense formation rules",
190
+ activity: "Chart career projections",
191
+ tool: "COCA Corpus",
192
+ deliverable: "Future timeline infographic"
193
+ },
194
+ {
195
+ code: "1.2.2",
196
+ topic: "Past Modals",
197
+ level: "C1",
198
+ duration: "90 mins",
199
+ objective: "Speculate about past events",
200
+ warmUp: "Mystery scenario solving",
201
+ presentation: "Modal verb distinctions",
202
+ activity: "Write detective narratives",
203
+ tool: "ChatGPT",
204
+ deliverable: "300-word mystery story"
205
+ },
206
+ {
207
+ code: "1.2.3",
208
+ topic: "Narrative Tenses",
209
+ level: "C1",
210
+ duration: "90 mins",
211
+ objective: "Create stylistic tense shifts",
212
+ warmUp: "News to literature conversion",
213
+ presentation: "Flashback techniques",
214
+ activity: "Rewrite events as fiction",
215
+ tool: "ProWritingAid",
216
+ deliverable: "Genre-shifted narrative"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ unit: "1.3",
222
+ title: "Punctuation Precision",
223
+ lessons: [
224
+ {
225
+ code: "1.3.1",
226
+ topic: "Semicolons vs. Em-Dashes",
227
+ level: "C1",
228
+ duration: "90 mins",
229
+ objective: "Master advanced punctuation",
230
+ warmUp: "Identify punctuation errors",
231
+ presentation: "Usage rules and examples",
232
+ activity: "Edit academic abstracts",
233
+ tool: "Google Docs",
234
+ deliverable: "Corrected journal excerpt"
235
+ },
236
+ {
237
+ code: "1.3.2",
238
+ topic: "Brackets for Asides",
239
+ level: "B2",
240
+ duration: "90 mins",
241
+ objective: "Insert non-essential information",
242
+ warmUp: "Add qualifying details",
243
+ presentation: "Bracket usage guidelines",
244
+ activity: "Annotate research papers",
245
+ tool: "Zotero",
246
+ deliverable: "Annotated bibliography"
247
+ },
248
+ {
249
+ code: "1.3.3",
250
+ topic: "Avoiding Comma Splices",
251
+ level: "B2",
252
+ duration: "90 mins",
253
+ objective: "Fix fused sentences",
254
+ warmUp: "Error identification exercise",
255
+ presentation: "Correction techniques",
256
+ activity: "Peer review editing session",
257
+ tool: "Whiteboard",
258
+ deliverable: "Error-free paragraph"
259
+ }
260
+ ]
261
+ }
262
+ ]
263
+ },
264
+ // Module 2
265
+ {
266
+ module: "2",
267
+ title: "Academic & Professional Writing",
268
+ units: [
269
+ {
270
+ unit: "2.1",
271
+ title: "Research Writing",
272
+ lessons: [
273
+ {
274
+ code: "2.1.1",
275
+ topic: "Thesis Crafting",
276
+ level: "C1",
277
+ duration: "90 mins",
278
+ objective: "Formulate debatable claims",
279
+ warmUp: "Identify thesis in abstracts",
280
+ presentation: "Claim vs. fact distinction",
281
+ activity: "Draft 3 thesis options",
282
+ tool: "JSTOR",
283
+ deliverable: "Research question list"
284
+ },
285
+ {
286
+ code: "2.1.2",
287
+ topic: "Source Synthesis",
288
+ level: "C2",
289
+ duration: "90 mins",
290
+ objective: "Integrate multiple sources",
291
+ warmUp: "Color-code source agreements",
292
+ presentation: "Matrix method demo",
293
+ activity: "Synthesis paragraph writing",
294
+ tool: "Mendeley",
295
+ deliverable: "Synthesis table"
296
+ },
297
+ {
298
+ code: "2.1.3",
299
+ topic: "APA/MLA Formatting",
300
+ level: "B2",
301
+ duration: "90 mins",
302
+ objective: "Master citation systems",
303
+ warmUp: "Fix citation errors",
304
+ presentation: "Style guide overview",
305
+ activity: "Create reference lists",
306
+ tool: "Citation Machine",
307
+ deliverable: "Formatted bibliography"
308
+ }
309
+ ]
310
+ },
311
+ {
312
+ unit: "2.2",
313
+ title: "Business Communication",
314
+ lessons: [
315
+ {
316
+ code: "2.2.1",
317
+ topic: "Executive Summaries",
318
+ level: "C1",
319
+ duration: "90 mins",
320
+ objective: "Condense complex reports",
321
+ warmUp: "Analyze 1-slide summaries",
322
+ presentation: "Structure guidelines",
323
+ activity: "Create investor slides",
324
+ tool: "Canva",
325
+ deliverable: "Executive summary slide"
326
+ },
327
+ {
328
+ code: "2.2.2",
329
+ topic: "Persuasive Proposals",
330
+ level: "C1",
331
+ duration: "90 mins",
332
+ objective: "Craft compelling business cases",
333
+ warmUp: "Role-play pitch scenarios",
334
+ presentation: "Proposal frameworks",
335
+ activity: "Write funding proposals",
336
+ tool: "PitchVantage",
337
+ deliverable: "2-page business proposal"
338
+ },
339
+ {
340
+ code: "2.2.3",
341
+ topic: "Cross-Cultural Emails",
342
+ level: "C2",
343
+ duration: "90 mins",
344
+ objective: "Navigate global communication",
345
+ warmUp: "Rewrite blunt requests",
346
+ presentation: "Cultural sensitivity training",
347
+ activity: "Draft diplomatic emails",
348
+ tool: "CrystalKnows",
349
+ deliverable: "Culturally appropriate email"
350
+ }
351
+ ]
352
+ },
353
+ {
354
+ unit: "2.3",
355
+ title: "Creative Expression",
356
+ lessons: [
357
+ {
358
+ code: "2.3.1",
359
+ topic: "Flash Fiction",
360
+ level: "B2",
361
+ duration: "90 mins",
362
+ objective: "Write concise narratives",
363
+ warmUp: "Study 300-word stories",
364
+ presentation: "Twist ending techniques",
365
+ activity: "Compose microfiction",
366
+ tool: "Sudowrite",
367
+ deliverable: "Flash fiction piece"
368
+ },
369
+ {
370
+ code: "2.3.2",
371
+ topic: "Poetic Meter",
372
+ level: "C1",
373
+ duration: "90 mins",
374
+ objective: "Master verse structures",
375
+ warmUp: "Convert news to poetry",
376
+ presentation: "Meter and rhyme patterns",
377
+ activity: "Write sonnets and haikus",
378
+ tool: "RhymeZone",
379
+ deliverable: "Poetry collection"
380
+ },
381
+ {
382
+ code: "2.3.3",
383
+ topic: "Stylistic Analysis",
384
+ level: "C2",
385
+ duration: "90 mins",
386
+ objective: "Mimic canonical voices",
387
+ warmUp: "Parody famous authors",
388
+ presentation: "Style emulation techniques",
389
+ activity: "Rewrite fairy tales",
390
+ tool: "AI Dungeon",
391
+ deliverable: "Parody text"
392
+ }
393
+ ]
394
+ }
395
+ ]
396
+ },
397
+ // Module 11
398
+ {
399
+ module: "11",
400
+ title: "AI-Powered Writing Enhancement",
401
+ units: [
402
+ {
403
+ unit: "11.1",
404
+ title: "Academic Writing",
405
+ lessons: [
406
+ {
407
+ code: "11.1.1",
408
+ topic: "AI-Assisted Research",
409
+ level: "C1",
410
+ duration: "90 mins",
411
+ objective: "Draft literature reviews with AI",
412
+ warmUp: "Critique GPT-generated abstract",
413
+ presentation: "Prompt engineering for academia",
414
+ activity: "Human-AI co-writing session",
415
+ tool: "ChatGPT + Zotero",
416
+ deliverable: "Annotated bibliography"
417
+ },
418
+ {
419
+ code: "11.1.2",
420
+ topic: "Citation Synthesis",
421
+ level: "C2",
422
+ duration: "90 mins",
423
+ objective: "Integrate sources efficiently",
424
+ warmUp: "Compare human vs. AI citations",
425
+ presentation: "Source evaluation criteria",
426
+ activity: "Build literature synthesis",
427
+ tool: "Consensus.app",
428
+ deliverable: "Synthesis matrix"
429
+ },
430
+ {
431
+ code: "11.1.3",
432
+ topic: "Plagiarism Prevention",
433
+ level: "C1",
434
+ duration: "90 mins",
435
+ objective: "Maintain academic integrity",
436
+ warmUp: "Identify plagiarism red flags",
437
+ presentation: "Proper paraphrasing techniques",
438
+ activity: "Rewrite AI outputs",
439
+ tool: "Originality.ai",
440
+ deliverable: "Plagiarism-free research section"
441
+ }
442
+ ]
443
+ },
444
+ {
445
+ unit: "11.2",
446
+ title: "Creative Writing",
447
+ lessons: [
448
+ {
449
+ code: "11.2.1",
450
+ topic: "AI Story Generation",
451
+ level: "B2",
452
+ duration: "90 mins",
453
+ objective: "Co-create narratives with AI",
454
+ warmUp: "Evaluate AI story starters",
455
+ presentation: "Collaborative writing workflow",
456
+ activity: "Develop plot with Sudowrite",
457
+ tool: "Sudowrite",
458
+ deliverable: "Co-written story outline"
459
+ },
460
+ {
461
+ code: "11.2.2",
462
+ topic: "Voice Consistency",
463
+ level: "C1",
464
+ duration: "90 mins",
465
+ objective: "Maintain human authorship",
466
+ warmUp: "Identify AI writing patterns",
467
+ presentation: "Voice preservation strategies",
468
+ activity: "Human editing session",
469
+ tool: "Hemingway App",
470
+ deliverable: "Polished co-written story"
471
+ },
472
+ {
473
+ code: "11.2.3",
474
+ topic: "Genre Adaptation",
475
+ level: "C2",
476
+ duration: "90 mins",
477
+ objective: "Shift between creative forms",
478
+ warmUp: "Convert prose to poetry",
479
+ presentation: "Genre-specific techniques",
480
+ activity: "Multi-format storytelling",
481
+ tool: "Jasper",
482
+ deliverable: "Cross-genre creative piece"
483
+ }
484
+ ]
485
+ },
486
+ {
487
+ unit: "11.3",
488
+ title: "Business Writing",
489
+ lessons: [
490
+ {
491
+ code: "11.3.1",
492
+ topic: "Copy Optimization",
493
+ level: "C1",
494
+ duration: "90 mins",
495
+ objective: "Create persuasive marketing copy",
496
+ warmUp: "A/B test email variations",
497
+ presentation: "Conversion-focused writing",
498
+ activity: "Write sales copy",
499
+ tool: "Jasper",
500
+ deliverable: "A/B tested campaign"
501
+ },
502
+ {
503
+ code: "11.3.2",
504
+ topic: "Report Automation",
505
+ level: "C1",
506
+ duration: "90 mins",
507
+ objective: "Generate business reports",
508
+ warmUp: "Analyze automated reports",
509
+ presentation: "Data storytelling techniques",
510
+ activity: "Create executive summaries",
511
+ tool: "ChatGPT",
512
+ deliverable: "Automated report template"
513
+ },
514
+ {
515
+ code: "11.3.3",
516
+ topic: "Cross-Cultural Adaptation",
517
+ level: "C2",
518
+ duration: "90 mins",
519
+ objective: "Localize business communications",
520
+ warmUp: "Compare cultural communication styles",
521
+ presentation: "Localization best practices",
522
+ activity: "Adapt content for markets",
523
+ tool: "Lokalise",
524
+ deliverable: "Localized business document"
525
+ }
526
+ ]
527
+ }
528
+ ]
529
+ },
530
+ // Module 14
531
+ {
532
+ module: "14",
533
+ title: "Ethical AI Communication",
534
+ units: [
535
+ {
536
+ unit: "14.1",
537
+ title: "Bias Mitigation",
538
+ lessons: [
539
+ {
540
+ code: "14.1.1",
541
+ topic: "Algorithmic Auditing",
542
+ level: "C2",
543
+ duration: "90 mins",
544
+ objective: "Detect bias in AI outputs",
545
+ warmUp: "Spot gender bias in hiring tool results",
546
+ presentation: "IBM Fairness 360 dashboard",
547
+ activity: "Calculate disparate impact ratio",
548
+ tool: "IBM AIF360",
549
+ deliverable: "Bias audit report"
550
+ },
551
+ {
552
+ code: "14.1.2",
553
+ topic: "Stereotype Detection",
554
+ level: "C1",
555
+ duration: "90 mins",
556
+ objective: "Identify harmful stereotypes",
557
+ warmUp: "Analyze chatbot responses",
558
+ presentation: "Bias identification frameworks",
559
+ activity: "Content bias screening",
560
+ tool: "Hugging Face Bias Scouts",
561
+ deliverable: "Stereotype detection log"
562
+ },
563
+ {
564
+ code: "14.1.3",
565
+ topic: "Impact Framing",
566
+ level: "C2",
567
+ duration: "90 mins",
568
+ objective: "Communicate bias implications",
569
+ warmUp: "Rewrite biased statements",
570
+ presentation: "Responsible disclosure techniques",
571
+ activity: "Draft impact assessments",
572
+ tool: "ChatGPT",
573
+ deliverable: "Bias communication guide"
574
+ }
575
+ ]
576
+ },
577
+ {
578
+ unit: "14.2",
579
+ title: "Transparency & Explainability",
580
+ lessons: [
581
+ {
582
+ code: "14.2.1",
583
+ topic: "XAI Communication",
584
+ level: "C2",
585
+ duration: "90 mins",
586
+ objective: "Explain AI decisions clearly",
587
+ warmUp: "Interpret SHAP explanations",
588
+ presentation: "Plain language translation",
589
+ activity: "Create explanation guides",
590
+ tool: "SHAP Library",
591
+ deliverable: "Explainable AI document"
592
+ },
593
+ {
594
+ code: "14.2.2",
595
+ topic: "Uncertainty Expression",
596
+ level: "C1",
597
+ duration: "90 mins",
598
+ objective: "Communicate confidence levels",
599
+ warmUp: "Analyze probability statements",
600
+ presentation: "Uncertainty communication",
601
+ activity: "Write risk assessments",
602
+ tool: "What-If Tool",
603
+ deliverable: "Uncertainty communication template"
604
+ },
605
+ {
606
+ code: "14.2.3",
607
+ topic: "Ethical Disclaimers",
608
+ level: "C1",
609
+ duration: "90 mins",
610
+ objective: "Include responsible disclosures",
611
+ warmUp: "Review AI product disclaimers",
612
+ presentation: "Transparency best practices",
613
+ activity: "Draft ethical statements",
614
+ tool: "Model Cards Toolkit",
615
+ deliverable: "Ethics disclosure document"
616
+ }
617
+ ]
618
+ },
619
+ {
620
+ unit: "14.3",
621
+ title: "Global AI Policy",
622
+ lessons: [
623
+ {
624
+ code: "14.3.1",
625
+ topic: "Diplomatic Negotiation",
626
+ level: "C2",
627
+ duration: "90 mins",
628
+ objective: "Advocate for AI governance",
629
+ warmUp: "Role-play policy discussions",
630
+ presentation: "Negotiation frameworks",
631
+ activity: "Draft policy proposals",
632
+ tool: "UNESCO AI Policy Simulator",
633
+ deliverable: "Policy recommendation"
634
+ },
635
+ {
636
+ code: "14.3.2",
637
+ topic: "Treaty Drafting",
638
+ level: "C2",
639
+ duration: "90 mins",
640
+ objective: "Create binding agreements",
641
+ warmUp: "Analyze existing AI treaties",
642
+ presentation: "Legal drafting principles",
643
+ activity: "Write resolution clauses",
644
+ tool: "Consensus.app",
645
+ deliverable: "Draft treaty section"
646
+ },
647
+ {
648
+ code: "14.3.3",
649
+ topic: "Cross-Cultural Advocacy",
650
+ level: "C2",
651
+ duration: "90 mins",
652
+ objective: "Promote global AI ethics",
653
+ warmUp: "Compare cultural perspectives",
654
+ presentation: "Universal principles",
655
+ activity: "Design advocacy campaigns",
656
+ tool: "Crisis Simulator GPT",
657
+ deliverable: "Global advocacy strategy"
658
+ }
659
+ ]
660
+ }
661
+ ]
662
+ },
663
+ // Module 15
664
+ {
665
+ module: "15",
666
+ title: "AI Content Entrepreneurship",
667
+ units: [
668
+ {
669
+ unit: "15.1",
670
+ title: "Product Pitching",
671
+ lessons: [
672
+ {
673
+ code: "15.1.1",
674
+ topic: "Investor Persuasion",
675
+ level: "C1",
676
+ duration: "90 mins",
677
+ objective: "Craft compelling pitches",
678
+ warmUp: "Analyze successful pitches",
679
+ presentation: "Pitch deck structure",
680
+ activity: "Create value propositions",
681
+ tool: "Tome.app",
682
+ deliverable: "Pitch deck outline"
683
+ },
684
+ {
685
+ code: "15.1.2",
686
+ topic: "Metric Storytelling",
687
+ level: "C2",
688
+ duration: "90 mins",
689
+ objective: "Present data effectively",
690
+ warmUp: "Convert metrics to narratives",
691
+ presentation: "Financial storytelling",
692
+ activity: "Build financial models",
693
+ tool: "PredictLeads",
694
+ deliverable: "Financial projection slide"
695
+ },
696
+ {
697
+ code: "15.1.3",
698
+ topic: "Q&A Preparation",
699
+ level: "C1",
700
+ duration: "90 mins",
701
+ objective: "Handle investor questions",
702
+ warmUp: "Practice common objections",
703
+ presentation: "Response frameworks",
704
+ activity: "Mock Q&A sessions",
705
+ tool: "ChatGPT",
706
+ deliverable: "Q&A preparation guide"
707
+ }
708
+ ]
709
+ },
710
+ {
711
+ unit: "15.2",
712
+ title: "UX Copywriting",
713
+ lessons: [
714
+ {
715
+ code: "15.2.1",
716
+ topic: "Microcopy Optimization",
717
+ level: "C1",
718
+ duration: "90 mins",
719
+ objective: "Write effective UI text",
720
+ warmUp: "Analyze app microcopy",
721
+ presentation: "UX writing principles",
722
+ activity: "Optimize button text",
723
+ tool: "Figma + ChatGPT plugin",
724
+ deliverable: "UX copy style guide"
725
+ },
726
+ {
727
+ code: "15.2.2",
728
+ topic: "Cultural Adaptation",
729
+ level: "C2",
730
+ duration: "90 mins",
731
+ objective: "Localize user interfaces",
732
+ warmUp: "Compare localized apps",
733
+ presentation: "Cultural adaptation frameworks",
734
+ activity: "Adapt UI for markets",
735
+ tool: "Lokalise",
736
+ deliverable: "Localized UI screens"
737
+ },
738
+ {
739
+ code: "15.2.3",
740
+ topic: "SEO Content Hierarchy",
741
+ level: "C1",
742
+ duration: "90 mins",
743
+ objective: "Structure content for search",
744
+ warmUp: "Analyze SEO-optimized pages",
745
+ presentation: "Content hierarchy principles",
746
+ activity: "Create keyword strategies",
747
+ tool: "MarketMuse",
748
+ deliverable: "SEO content plan"
749
+ }
750
+ ]
751
+ },
752
+ {
753
+ unit: "15.3",
754
+ title: "Content Creation",
755
+ lessons: [
756
+ {
757
+ code: "15.3.1",
758
+ topic: "Viral Scriptwriting",
759
+ level: "C1",
760
+ duration: "90 mins",
761
+ objective: "Craft algorithm-optimized hooks",
762
+ warmUp: "Analyze top #AIethics TikTok hooks",
763
+ presentation: "PAS framework training",
764
+ activity: "A/B test hook variations",
765
+ tool: "TubeBuddy",
766
+ deliverable: "3 video scripts"
767
+ },
768
+ {
769
+ code: "15.3.2",
770
+ topic: "Thumbnail Psychology",
771
+ level: "B2",
772
+ duration: "90 mins",
773
+ objective: "Design engaging visuals",
774
+ warmUp: "A/B test thumbnail designs",
775
+ presentation: "Visual psychology principles",
776
+ activity: "Create thumbnail variations",
777
+ tool: "Canva",
778
+ deliverable: "Thumbnail design portfolio"
779
+ },
780
+ {
781
+ code: "15.3.3",
782
+ topic: "Analytics Parsing",
783
+ level: "C2",
784
+ duration: "90 mins",
785
+ objective: "Optimize content performance",
786
+ warmUp: "Analyze YouTube analytics",
787
+ presentation: "Key metrics interpretation",
788
+ activity: "Create growth strategies",
789
+ tool: "Google Analytics",
790
+ deliverable: "Content optimization report"
791
+ }
792
+ ]
793
+ }
794
+ ]
795
+ }
796
+ ];
797
+
798
+ // DOM elements
799
+ const curriculumContent = document.getElementById('curriculumContent');
800
+ const emptyState = document.getElementById('emptyState');
801
+ const moduleFilter = document.getElementById('moduleFilter');
802
+ const unitFilter = document.getElementById('unitFilter');
803
+ const difficultyFilter = document.getElementById('difficultyFilter');
804
+ const searchInput = document.getElementById('searchInput');
805
+ const printDate = document.getElementById('printDate');
806
+
807
+ // Initialize the page
808
+ document.addEventListener('DOMContentLoaded', function() {
809
+ renderCurriculum(curriculumData);
810
+ populateModuleFilter();
811
+ setPrintDate();
812
+
813
+ // Event listeners
814
+ moduleFilter.addEventListener('change', updateUnitFilter);
815
+ searchInput.addEventListener('input', handleSearch);
816
+ });
817
+
818
+ // Set current date for print version
819
+ function setPrintDate() {
820
+ const today = new Date();
821
+ printDate.textContent = today.toLocaleDateString('en-US', {
822
+ year: 'numeric',
823
+ month: 'long',
824
+ day: 'numeric'
825
+ });
826
+ }
827
+
828
+ // Populate module filter dropdown
829
+ function populateModuleFilter() {
830
+ curriculumData.forEach(module => {
831
+ const option = document.createElement('option');
832
+ option.value = module.module;
833
+ option.textContent = `Module ${module.module}: ${module.title}`;
834
+ moduleFilter.appendChild(option);
835
+ });
836
+ }
837
+
838
+ // Update unit filter based on selected module
839
+ function updateUnitFilter() {
840
+ unitFilter.innerHTML = '<option value="all">All Units</option>';
841
+
842
+ const selectedModule = moduleFilter.value;
843
+ if (selectedModule === 'all') return;
844
+
845
+ const module = curriculumData.find(m => m.module === selectedModule);
846
+ if (module) {
847
+ module.units.forEach(unit => {
848
+ const option = document.createElement('option');
849
+ option.value = unit.unit;
850
+ option.textContent = `Unit ${unit.unit}: ${unit.title}`;
851
+ unitFilter.appendChild(option);
852
+ });
853
+ }
854
+ }
855
+
856
+ // Apply all filters
857
+ function applyFilters() {
858
+ const selectedModule = moduleFilter.value;
859
+ const selectedUnit = unitFilter.value;
860
+ const selectedLevel = difficultyFilter.value;
861
+ const searchTerm = searchInput.value.toLowerCase();
862
+
863
+ let filteredData = curriculumData;
864
+
865
+ // Filter by module
866
+ if (selectedModule !== 'all') {
867
+ filteredData = filteredData.filter(module => module.module === selectedModule);
868
+ }
869
+
870
+ // Filter by unit
871
+ if (selectedUnit !== 'all') {
872
+ filteredData = filteredData.map(module => {
873
+ const filteredUnits = module.units.filter(unit => unit.unit === selectedUnit);
874
+ return {
875
+ ...module,
876
+ units: filteredUnits
877
+ };
878
+ }).filter(module => module.units.length > 0);
879
+ }
880
+
881
+ // Filter by level and search term
882
+ filteredData = filteredData.map(module => {
883
+ const filteredUnits = module.units.map(unit => {
884
+ const filteredLessons = unit.lessons.filter(lesson => {
885
+ const levelMatch = selectedLevel === 'all' || lesson.level === selectedLevel;
886
+ const searchMatch = searchTerm === '' ||
887
+ lesson.topic.toLowerCase().includes(searchTerm) ||
888
+ lesson.objective.toLowerCase().includes(searchTerm);
889
+ return levelMatch && searchMatch;
890
+ });
891
+ return {
892
+ ...unit,
893
+ lessons: filteredLessons
894
+ };
895
+ }).filter(unit => unit.lessons.length > 0);
896
+ return {
897
+ ...module,
898
+ units: filteredUnits
899
+ };
900
+ }).filter(module => module.units.length > 0);
901
+
902
+ renderCurriculum(filteredData);
903
+ }
904
+
905
+ // Handle search input
906
+ function handleSearch() {
907
+ applyFilters();
908
+ }
909
+
910
+ // Render curriculum based on filtered data
911
+ function renderCurriculum(data) {
912
+ curriculumContent.innerHTML = '';
913
+
914
+ if (data.length === 0) {
915
+ emptyState.classList.remove('hidden');
916
+ return;
917
+ }
918
+
919
+ emptyState.classList.add('hidden');
920
+
921
+ data.forEach(module => {
922
+ module.units.forEach(unit => {
923
+ unit.lessons.forEach(lesson => {
924
+ const lessonCard = createLessonCard(module, unit, lesson);
925
+ curriculumContent.appendChild(lessonCard);
926
+ });
927
+ });
928
+ });
929
+ }
930
+
931
+ // Create a lesson card element
932
+ function createLessonCard(module, unit, lesson) {
933
+ const card = document.createElement('div');
934
+ card.className = 'module-card bg-white rounded-xl shadow-sm border border-gray-200 overflow-hidden hover:shadow-md transition-all';
935
+
936
+ // Determine badge color based on level
937
+ let badgeColor = 'bg-blue-100 text-blue-800';
938
+ if (lesson.level === 'C1') badgeColor = 'bg-purple-100 text-purple-800';
939
+ if (lesson.level === 'C2') badgeColor = 'bg-indigo-100 text-indigo-800';
940
+
941
+ card.innerHTML = `
942
+ <div class="p-5">
943
+ <div class="flex justify-between items-start">
944
+ <div>
945
+ <span class="text-xs font-semibold px-2 py-1 rounded ${badgeColor}">${lesson.level}</span>
946
+ <h3 class="text-lg font-bold text-gray-800 mt-2">${lesson.topic}</h3>
947
+ <p class="text-sm text-gray-600 mt-1">${lesson.objective}</p>
948
+ </div>
949
+ <button class="toggle-details text-gray-400 hover:text-indigo-600 focus:outline-none">
950
+ <i class="fas fa-chevron-down"></i>
951
+ </button>
952
+ </div>
953
+
954
+ <div class="mt-4 flex flex-wrap gap-2">
955
+ <span class="text-xs bg-gray-100 text-gray-600 px-2 py-1 rounded">Module ${module.module}</span>
956
+ <span class="text-xs bg-gray-100 text-gray-600 px-2 py-1 rounded">Unit ${unit.unit}</span>
957
+ <span class="text-xs bg-gray-100 text-gray-600 px-2 py-1 rounded">${lesson.duration}</span>
958
+ </div>
959
+
960
+ <div class="lesson-details mt-4">
961
+ <div class="border-t border-gray-200 pt-4">
962
+ <h4 class="text-sm font-semibold text-gray-700 mb-2">Lesson Structure</h4>
963
+ <div class="space-y-3">
964
+ <div>
965
+ <p class="text-xs font-medium text-gray-500">Warm-Up (15 min)</p>
966
+ <p class="text-sm text-gray-700">${lesson.warmUp}</p>
967
+ </div>
968
+ <div>
969
+ <p class="text-xs font-medium text-gray-500">Presentation (20 min)</p>
970
+ <p class="text-sm text-gray-700">${lesson.presentation}</p>
971
+ </div>
972
+ <div>
973
+ <p class="text-xs font-medium text-gray-500">Activity (25 min)</p>
974
+ <p class="text-sm text-gray-700">${lesson.activity}</p>
975
+ </div>
976
+ </div>
977
+ </div>
978
+
979
+ <div class="mt-4">
980
+ <h4 class="text-sm font-semibold text-gray-700 mb-2">Tools & Deliverables</h4>
981
+ <div class="flex flex-wrap gap-2">
982
+ <span class="text-xs bg-indigo-100 text-indigo-700 px-2 py-1 rounded flex items-center gap-1">
983
+ <i class="fas fa-tools text-xs"></i> ${lesson.tool}
984
+ </span>
985
+ <span class="text-xs bg-green-100 text-green-700 px-2 py-1 rounded flex items-center gap-1">
986
+ <i class="fas fa-clipboard-check text-xs"></i> ${lesson.deliverable}
987
+ </span>
988
+ </div>
989
+ </div>
990
+ </div>
991
+ </div>
992
+ `;
993
+
994
+ // Add click event to toggle details
995
+ const toggleBtn = card.querySelector('.toggle-details');
996
+ const details = card.querySelector('.lesson-details');
997
+
998
+ toggleBtn.addEventListener('click', () => {
999
+ details.classList.toggle('active');
1000
+ const icon = toggleBtn.querySelector('i');
1001
+ if (details.classList.contains('active')) {
1002
+ icon.classList.remove('fa-chevron-down');
1003
+ icon.classList.add('fa-chevron-up');
1004
+ } else {
1005
+ icon.classList.remove('fa-chevron-up');
1006
+ icon.classList.add('fa-chevron-down');
1007
+ }
1008
+ });
1009
+
1010
+ return card;
1011
+ }
1012
+
1013
+ // Print the curriculum
1014
+ function printCurriculum() {
1015
+ window.print();
1016
+ }
1017
+
1018
+ // Toggle dark mode
1019
+ function toggleDarkMode() {
1020
+ document.documentElement.classList.toggle('dark');
1021
+ }
1022
+
1023
+ // Highlight search terms in the content
1024
+ function highlightSearchTerms(term) {
1025
+ if (!term) return;
1026
+
1027
+ const cards = document.querySelectorAll('.module-card');
1028
+ cards.forEach(card => {
1029
+ const text = card.textContent.toLowerCase();
1030
+ if (text.includes(term.toLowerCase())) {
1031
+ card.classList.add('border-indigo-300', 'ring-2', 'ring-indigo-200');
1032
+ } else {
1033
+ card.classList.remove('border-indigo-300', 'ring-2', 'ring-indigo-200');
1034
+ }
1035
+ });
1036
+ }
1037
+ </script>
1038
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Bnbnjj/vjhgu" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
1039
+ </html>