This repository was archived by the owner on Jan 11, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchapter3.html
More file actions
374 lines (355 loc) · 25.3 KB
/
Copy pathchapter3.html
File metadata and controls
374 lines (355 loc) · 25.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mandarin Guide</title>
<meta name="theme-color" content="#000000" />
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="css/style.css">
<script src="js/layout.js" defer></script>
<script src="js/app.js" defer></script>
</head>
<body class="bg-black text-white">
<main class="main-content pb-24">
<div class="p-6 md:p-10">
<div class="w-full max-w-[95%] mx-auto">
<article class="content-page card p-6 mb-8" data-page-id="chapter3">
<div class="flex items-center justify-between mb-6">
<h3 class="card-title text-xl font-semibold">Chapter 3: Vegetables & Fruits</h3>
<span class="text-sm font-mono text-pink-400 bg-pink-400/10 px-2 py-1 rounded">Level 4</span>
</div>
<p class="mb-5 text-slate-400 leading-relaxed">Taiwan is a fruit paradise! The tropical climate
means
amazing fruits year-round. Here are the must-know words for visiting a market.</p>
<h4 class="font-semibold mt-6 mb-3 text-lg text-white">Fruits (水果 shuiguo)</h4>
<div class="overflow-x-auto">
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Traditional Chinese</th>
<th>Pinyin</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apple</td>
<td><span class="hanzi" data-speak="苹果">苹果</span></td>
<td><span class="pinyin">píngguo</span></td>
</tr>
<tr>
<td>Banana</td>
<td><span class="hanzi" data-speak="香蕉">香蕉</span></td>
<td><span class="pinyin">xiangjiao</span></td>
</tr>
<tr>
<td>Pineapple</td>
<td><span class="hanzi" data-speak="凤梨">凤梨</span></td>
<td><span class="pinyin">fènglí</span> (Taiwan), <span class="hanzi"
data-speak="芒果">芒果</span>(China)</td>
</tr>
<tr>
<td>Mango</td>
<td><span class="hanzi" data-speak="芒果">芒果</span></td>
<td><span class="pinyin">mángguo</span></td>
</tr>
<tr>
<td>Watermelon</td>
<td><span class="hanzi" data-speak="西瓜">西瓜</span></td>
<td><span class="pinyin">xigua</span></td>
</tr>
<tr>
<td>Guava</td>
<td><span class="hanzi" data-speak="芭乐">芭乐</span></td>
<td><span class="pinyin">bálè</span> (Very popular in Taiwan!)</td>
</tr>
</tbody>
</table>
</div>
<h4 class="font-semibold mt-8 mb-3 text-lg text-white">Vegetables (蔬菜 shucài)</h4>
<ul class="space-y-4">
<li><strong>Cabbage:</strong> <span class="hanzi" data-speak="高丽菜">高丽菜</span> (<span
class="pinyin">gaolì cài</span>) - The most common veggie in Taiwan boxes.</li>
<li><strong>Bok Choy:</strong> <span class="hanzi" data-speak="青江菜">青江菜</span> (<span
class="pinyin">qingjiang cài</span>)</li>
<li><strong>Spinach:</strong> <span class="hanzi" data-speak="菠菜">菠菜</span> (<span
class="pinyin">bocài</span>)</li>
<h4 class="font-semibold mt-6 mb-3 text-lg text-white">Essential Fruits (常见水果)</h4>
<div class="overflow-x-auto mb-6">
<table class="table">
<thead>
<tr>
<th>Fruit</th>
<th>Chinese</th>
<th>Pinyin</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apple</td>
<td><span class="hanzi" data-speak="苹果">苹果</span></td>
<td>píngguo</td>
</tr>
<tr>
<td>Banana</td>
<td><span class="hanzi" data-speak="香蕉">香蕉</span></td>
<td>xiangjiao</td>
</tr>
<tr>
<td>Watermelon</td>
<td><span class="hanzi" data-speak="西瓜">西瓜</span></td>
<td>xigua</td>
</tr>
<tr>
<td>Mango</td>
<td><span class="hanzi" data-speak="芒果">芒果</span></td>
<td>mángguo</td>
</tr>
<tr>
<td>Pineapple</td>
<td><span class="hanzi" data-speak="凤梨">凤梨</span></td>
<td>fènglí</td>
</tr>
<tr>
<td>Guava</td>
<td><span class="hanzi" data-speak="芭乐">芭乐</span></td>
<td>bálè</td>
</tr>
<tr>
<td>Strawberry</td>
<td><span class="hanzi" data-speak="草莓">草莓</span></td>
<td>caoméi</td>
</tr>
<tr>
<td>Grape</td>
<td><span class="hanzi" data-speak="葡萄">葡萄</span></td>
<td>pútáo</td>
</tr>
</tbody>
</table>
</div>
<h4 class="font-semibold mt-6 mb-3 text-lg text-white">Common Vegetables (常见蔬菜)</h4>
<ul class="space-y-2 mb-6">
<li><strong>Cabbage:</strong> <span class="hanzi" data-speak="高丽菜">高丽菜</span> (gaolícài)
- Staple in Taiwan.</li>
<li><strong>Spinach:</strong> <span class="hanzi" data-speak="菠菜">菠菜</span> (bocài)</li>
<li><strong>Corn:</strong> <span class="hanzi" data-speak="玉米">玉米</span> (yùmi)</li>
<li><strong>Sweet Potato:</strong> <span class="hanzi" data-speak="地瓜">地瓜</span> (dìgua)
</li>
<li><strong>Carrot:</strong> <span class="hanzi" data-speak="红萝卜">红萝卜</span> (hóng
luóbo)</li>
<li><strong>Onion:</strong> <span class="hanzi" data-speak="洋葱">洋葱</span> (yángcong)
</li>
</ul>
<h4 class="font-semibold mt-6 mb-3 text-lg text-white">Describing Taste</h4>
<div class="grid grid-cols-2 md:grid-cols-4 gap-4 text-center mb-6">
<div class="p-3 bg-red-900/20 rounded border border-red-500/30">
<div class="font-bold text-red-400">Sweet</div>
<div class="text-xl"><span class="hanzi" data-speak="甜">甜</span></div>
<div class="text-sm text-slate-400">tián</div>
</div>
<div class="p-3 bg-yellow-900/20 rounded border border-yellow-500/30">
<div class="font-bold text-yellow-400">Sour</div>
<div class="text-xl"><span class="hanzi" data-speak="酸">酸</span></div>
<div class="text-sm text-slate-400">suan</div>
</div>
<div class="p-3 bg-green-900/20 rounded border border-green-500/30">
<div class="font-bold text-green-400">Bitter</div>
<div class="text-xl"><span class="hanzi" data-speak="苦">苦</span></div>
<div class="text-sm text-slate-400">ku</div>
</div>
<div class="p-3 bg-orange-900/20 rounded border border-orange-500/30">
<div class="font-bold text-orange-400">Spicy</div>
<div class="text-xl"><span class="hanzi" data-speak="辣">辣</span></div>
<div class="text-sm text-slate-400">là</div>
</div>
</div>
<div class="callout p-4 mt-8 bg-orange-900/20 border-l-4 border-orange-500">
<h5 class="font-bold mb-2 text-orange-300">Market Tip: The "Catty" (斤 jin)</h5>
<p class="text-sm text-orange-200">In Taiwan traditional markets, prices are usually per
<strong>jin</strong> (<span class="hanzi" data-speak="斤">斤</span>), not per kilogram.
<br><strong>1 jin ˜ 600 grams</strong>.
</p>
<p class="text-sm text-orange-200 mt-2">
<strong>Ask Price:</strong> <span class="hanzi" data-speak="这个怎么卖?">这个怎么卖?</span>
(Zhège zenme mài?) - How do you sell this?
<br><strong>Reply:</strong> <span class="hanzi" data-speak="一斤五十元">一斤五十元</span> (One
catty 50 dollars).
</p>
</div>
<!-- NEW CONTENT FOR LEVEL 4 EXTENSION -->
<h4 class="font-semibold mt-8 mb-3 text-lg text-white">Sentence Patterns: A-not-A Questions</h4>
<div class="callout p-4 mb-6 bg-blue-900/20 border-l-4 border-blue-500">
<p class="text-blue-200 text-sm font-bold mb-2">Is it X or not?</p>
<p class="text-slate-300 text-sm">
To ask a question, you can repeat the verb or adjective with "bù" (not) in the middle.
<br><br>
<strong>Adjective:</strong> <span class="hanzi" data-speak="甜不甜?">甜不甜?</span> (Tián bù
tián?) = Is it
sweet?
<br><strong>Verb:</strong> <span class="hanzi" data-speak="买不买?">买不买?</span> (Mǎi bù
mǎi?) = Are you
buying?
</p>
</div>
<h4 class="font-semibold mt-8 mb-3 text-lg text-white">Real-world Scenario: Buying Fruit</h4>
<div class="space-y-4 bg-slate-800/50 p-4 rounded-lg border border-slate-700 mb-8">
<div>
<p><strong>You:</strong> <span class="hanzi" data-speak="老板,这个芒果甜不甜?">老板,这个芒果甜不甜?</span>
(Lǎobǎn, zhège mángguǒ tián bù tián?)</p>
<p class="text-sm text-slate-400">Boss, is this mango sweet?</p>
</div>
<div>
<p><strong>Owner:</strong> <span class="hanzi" data-speak="很甜!不甜不用钱!">很甜!不甜不用钱!</span>
(Hěn tián! Bù tián bú yòng qián!)</p>
<p class="text-sm text-slate-400">Very sweet! If it's not sweet, it's free! (Common
phrase)</p>
</div>
<div>
<p><strong>You:</strong> <span class="hanzi" data-speak="好,我要两个。">好,我要两个。</span> (Hǎo,
wǒ yào liǎng gè.)</p>
<p class="text-sm text-slate-400">Okay, I want two.</p>
</div>
</div>
<div class="callout p-4 mt-8 bg-purple-900/20 border-l-4 border-purple-500">
<h5 class="font-bold mb-2 text-purple-300">Cultural Insight: Fruit Gift Boxes</h5>
<p class="text-sm text-purple-200">
High-quality fruit is a very common and polite gift when visiting someone's home in
Taiwan. You'll see fancy boxes of apples, pears, or cherries in supermarkets. The bigger
and more perfect the fruit, the better the gift!
</p>
</div>
<div class="page-footer-nav">
<div class="flex gap-3"><button class="prev-page-btn" data-prev-page-id="chapter2"><svg
class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M7 16l-4-4m0 0l4-4m-4 4h18"></path>
</svg><span>Previous Chapter</span></button><button class="home-page-btn"
data-home-page-id="home"><svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor"
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6-4a1 1 0 001-1v-4a1 1 0 00-1-1H9a1 1 0 00-1 1v4a1 1 0 001 1h1z">
</path>
</svg><span>Home</span></button></div>
<div class="flex gap-3"><button class="mark-complete-btn" data-page-id="chapter3"><svg
class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
</svg><span>Mark as Completed</span></button><button class="next-page-btn"
data-next-page-id="chapter4"><span>Next Chapter</span><svg class="w-5 h-5 ml-2"
fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M17 8l4 4m0 0l-4 4m4-4H3"></path>
</svg></button></div>
</div>
</article>
</div>
</div>
</main> <!-- Modals -->
<div id="next-lesson-modal" class="fixed inset-0 z-50 flex items-center justify-center p-4" aria-hidden="true">
<!-- Modal Overlay -->
<div id="modal-overlay" class="fixed inset-0 bg-black/50 backdrop-blur-sm transition-opacity"></div>
<!-- Modal Content -->
<div class="relative w-full max-w-md p-6 bg-white rounded-lg shadow-xl transform transition-all">
<div class="flex items-start">
<div
class="flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10">
<svg class="h-6 w-6 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.79 4 4 0 1.152-.468 2.185-1.22 2.963C13.978 14.63 13 15.21 13 16h-1v-1.5c0-1.076.62-2.062 1.62-2.887C14.43 10.843 15 10.106 15 9c0-1.105-.895-2-2-2-1.036 0-1.85.738-1.98 1.707L8.228 9zM12 20a1 1 0 100-2 1 1 0 000 2z">
</path>
</svg>
</div>
<div class="ml-4 text-left">
<h3 class="text-lg font-semibold leading-6 text-white" id="modal-title">Proceed to Next Lesson?
</h3>
<div class="mt-2">
<p class="text-sm text-slate-500">
Are you sure you're ready to move on?
</p>
</div>
</div>
</div>
<div class="flex items-center justify-center space-x-2 mt-4 pt-4 border-t border-gray-200">
<span class="text-sm text-slate-300 hidden sm:inline">Connect with Admin >>></span>
<!-- MODIFIED: Added hidden sm:inline -->
<div
class="w-8 h-8 rounded-full bg-slate-200 border border-slate-300 flex items-center justify-center overflow-hidden">
<img class="w-full h-full object-cover" src="./images/profile.jpg" alt="Brian's profile picture"
onerror="this.parentElement.innerHTML = `<svg class='w-6 h-6 text-slate-400' fill='currentColor' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'><path fill-rule='evenodd' d='M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z' clip-rule='evenodd'></path></svg>`">
</div>
<a href="https://www.instagram.com/brian_offl/" target="_blank" rel="noopener noreferrer"
class="insta-btn flex items-center border border-pink-500 text-pink-500 hover:bg-pink-500 hover:text-white text-sm font-medium py-2 px-2 sm:px-3 rounded-lg transition-colors">
<!-- MODIFIED: px-2 sm:px-3 -->
<svg class="w-4 h-4" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"> <!-- MODIFIED: removed mr-2 -->
<rect x="2" y="2" width="20" height="20" rx="5.657" ry="5.657"></rect>
<path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37zm1.5-4.87h.01"></path>
</svg>
<span class="hidden sm:inline-block ml-2 typewriter-button">Insta</span>
<!-- MODIFIED: Added hidden sm:inline-block, ml-2, typewriter-button -->
</a>
<a href="https://github.com/brianhexer" target="_blank" rel="noopener noreferrer"
class="flex items-center border border-white text-white bg-transparent hover:bg-white hover:text-black text-sm font-medium py-2 px-2 sm:px-3 rounded-lg transition-colors">
<!-- MODIFIED: px-2 sm:px-3 -->
<svg class="w-4 h-4" fill="currentColor" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<!-- MODIFIED: removed mr-2 -->
<path
d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z" />
</svg>
<span class="hidden sm:inline-block ml-2 typewriter-button">GitHub</span>
<!-- MODIFIED: Added hidden sm:inline-block, ml-2, typewriter-button -->
</a>
</div>
<div class="mt-5 sm:mt-6 sm:flex sm:flex-row-reverse gap-3">
<button id="modal-confirm-btn" type="button"
class="inline-flex w-full justify-center rounded-md border border-white bg-transparent px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-white hover:text-black sm:w-auto sm:text-sm transition-colors">
Yes, Proceed
</button>
<button id="modal-cancel-btn" type="button"
class="mt-3 inline-flex w-full justify-center rounded-md border border-gray-600 bg-transparent px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-white hover:text-black sm:mt-0 sm:w-auto sm:text-sm transition-colors">
Not Yet
</button>
</div>
</div>
</div>
<!-- END MODAL -->
<div id="search-modal" class="fixed inset-0 z-50 flex items-center justify-center p-4" aria-hidden="true">
<!-- Modal Overlay -->
<div id="search-modal-overlay" class="fixed inset-0 bg-black/50 backdrop-blur-sm transition-opacity"></div>
<!-- Modal Content -->
<div
class="relative w-full max-w-lg p-0 bg-white rounded-lg shadow-xl transform transition-all overflow-hidden">
<!-- Search Input -->
<div class="relative p-4">
<input type="search" id="search-input" placeholder="Search lessons..."
class="w-full pl-10 pr-12 py-2 border border-slate-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500">
<div class="absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none">
<svg class="w-5 h-5 text-slate-400" fill="none" stroke="currentColor" stroke-width="2"
viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round"
d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
</svg>
</div>
<button id="search-modal-close" aria-label="Close search"
class="absolute inset-y-0 right-0 pr-4 flex items-center text-slate-400 hover:text-slate-300 transition-colors">
<svg class="w-6 h-6" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<!-- Search Results -->
<div id="search-results-container" class="max-h-96 overflow-y-auto p-4 border-t border-slate-200">
<p class="text-center text-slate-400">Type to search for lessons.</p>
</div>
</div>
</div>
<!-- END SEARCH MODAL -->
</body>
</html>