opensource / castellano-lorenzo.html
🥩
Lorenzo en Buenos Aires
Un chef italiano llega a Buenos Aires sin saber español. Simulador de conversaciones de opción múltiple en español rioplatense.
🇦🇷 Español · Rioplatense HTML CSS JavaScript Simulator Spanish MIT License
1 archivo 1136 líneas MIT
Ver en AlpacaViajes Volver
castellano-lorenzo.html 1136 líneas
HTML · CSS · JavaScript
1 <!DOCTYPE html>
2 class="tok-tag"><htmlclass="tok-attr"> lang="es"class="tok-tag">>
3 class="tok-tag"><headclass="tok-attr">class="tok-tag">>
4 class="tok-tag"><metaclass="tok-attr"> charset="UTF-8"class="tok-tag">>
5 class="tok-tag"><metaclass="tok-attr"> name="viewport" content="width=device-width, initial-scale=1.0"class="tok-tag">>
6 class="tok-tag"><titleclass="tok-attr">class="tok-tag">>Lorenzo en Buenos Airesclass="tok-tag"></titleclass="tok-attr">class="tok-tag">>
7 class="tok-tag"><linkclass="tok-attr"> href="class="tok-prop">https:class="tok-val">//fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,700;1,400&family=Libre+class="tok-prop">Baskerville:class="tok-val">ital,wght@0,400;0,700;1,400&family=DM+class="tok-prop">Sans:class="tok-val">wght@300;400;600&display=swap" rel="stylesheet"class="tok-tag">>
8 class="tok-tag"><styleclass="tok-attr">class="tok-tag">>
9 :root {
10 class="tok-prop">--bg: class="tok-val">#1c1208;
11 class="tok-prop">--surface: class="tok-val">#241808;
12 class="tok-prop">--card: class="tok-val">#2e1f0a;
13 class="tok-prop">--gold: class="tok-val">#c9922a;
14 class="tok-prop">--gold-light: class="tok-val">#e8b84a;
15 class="tok-prop">--gold-pale: class="tok-val">#f5e4bc;
16 class="tok-prop">--cream: class="tok-val">#fdf6e8;
17 class="tok-prop">--red: class="tok-val">#8b1a1a;
18 class="tok-prop">--red-light: class="tok-val">#c0392b;
19 class="tok-prop">--blue-arg: class="tok-val">#2563a8;
20 class="tok-prop">--text: class="tok-val">#f0e8d0;
21 class="tok-prop">--text-mid: class="tok-val">#c8a878;
22 class="tok-prop">--text-dim: class="tok-val">#7a5a30;
23 class="tok-prop">--border: class="tok-val">rgba(201,146,42,0.2);
24 class="tok-prop">--shadow: class="tok-val">rgba(0,0,0,0.5);
25 class="tok-prop">--radius: class="tok-val">16px;
26 class="tok-prop">--correct: class="tok-val">#2d6a2d;
27 class="tok-prop">--wrong: class="tok-val">#6a1a1a;
28 }
29
30 * { class="tok-prop">margin:class="tok-val">0; class="tok-prop">padding:class="tok-val">0; class="tok-prop">box-sizing:class="tok-val">border-box; }
31
32 body {
33 class="tok-prop">background: class="tok-val">class="tok-kw">var(--bg);
34 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text);
35 class="tok-prop">font-family: class="tok-val">';DM Sans', sans-serif;
36 class="tok-prop">min-height: class="tok-val">100vh;
37 class="tok-prop">display: class="tok-val">flex;
38 class="tok-prop">align-items: class="tok-val">center;
39 class="tok-prop">justify-content: class="tok-val">center;
40 class="tok-prop">padding: class="tok-val">40px 20px 60px;
41 class="tok-prop">overflow-x: class="tok-val">hidden;
42 class="tok-prop">position: class="tok-val">relative;
43 }
44
45 class="tok-prop">body:class="tok-val">:before {
46 class="tok-prop">content: class="tok-val">';';
47 class="tok-prop">position: class="tok-val">fixed; class="tok-prop">inset: class="tok-val">0;
48 background:
49 radial-gradient(ellipse at 20% 20%, rgba(201,146,42,0.08) 0%, transparent 50%),
50 radial-gradient(ellipse at 80% 80%, rgba(139,26,26,0.06) 0%, transparent 50%),
51 radial-gradient(ellipse at 60% 10%, rgba(37,99,168,0.04) 0%, transparent 40%);
52 class="tok-prop">pointer-events: class="tok-val">none;
53 }
54
55 /* Tango lines decoration */
56 class="tok-prop">body:class="tok-val">:after {
57 class="tok-prop">content: class="tok-val">';';
58 class="tok-prop">position: class="tok-val">fixed;
59 class="tok-prop">top: class="tok-val">0; class="tok-prop">left: class="tok-val">0;
60 class="tok-prop">width: class="tok-val">100%; class="tok-prop">height: class="tok-val">100%;
61 class="tok-prop">background: class="tok-val">repeating-linear-gradient(
62 -45deg,
63 transparent,
64 transparent 80px,
65 rgba(201,146,42,0.015) 80px,
66 rgba(201,146,42,0.015) 81px
67 );
68 class="tok-prop">pointer-events: class="tok-val">none;
69 }
70
71 .wrapper {
72 class="tok-prop">width: class="tok-val">100%;
73 class="tok-prop">max-width: class="tok-val">640px;
74 class="tok-prop">display: class="tok-val">flex;
75 class="tok-prop">flex-direction: class="tok-val">column;
76 class="tok-prop">align-items: class="tok-val">center;
77 class="tok-prop">position: class="tok-val">relative;
78 class="tok-prop">z-index: class="tok-val">1;
79 }
80
81 /* ── SCREENS ── */
82 .screen { class="tok-prop">display: class="tok-val">none; class="tok-prop">width: class="tok-val">100%; class="tok-prop">flex-direction: class="tok-val">column; class="tok-prop">align-items: class="tok-val">center; }
83 .screen.active { class="tok-prop">display: class="tok-val">flex; class="tok-prop">animation: class="tok-val">fadeIn 0.6s ease both; }
84
85 @keyframes fadeIn {
86 from { class="tok-prop">opacity: class="tok-val">0; class="tok-prop">transform: class="tok-val">translateY(20px); }
87 to { class="tok-prop">opacity: class="tok-val">1; class="tok-prop">transform: class="tok-val">translateY(0); }
88 }
89
90 /* ── TOPBAR ── */
91 .topbar {
92 class="tok-prop">width: class="tok-val">100%;
93 class="tok-prop">display: class="tok-val">flex;
94 class="tok-prop">align-items: class="tok-val">center;
95 class="tok-prop">justify-content: class="tok-val">space-between;
96 class="tok-prop">margin-bottom: class="tok-val">32px;
97 }
98
99 .brand {
100 class="tok-prop">display: class="tok-val">flex;
101 class="tok-prop">align-items: class="tok-val">center;
102 class="tok-prop">gap: class="tok-val">8px;
103 }
104
105 .brand-dot {
106 class="tok-prop">width: class="tok-val">28px; class="tok-prop">height: class="tok-val">28px;
107 class="tok-prop">border-radius: class="tok-val">50%;
108 class="tok-prop">background: class="tok-val">linear-gradient(135deg, class="tok-kw">var(--gold), class="tok-kw">var(--gold-light));
109 class="tok-prop">display: class="tok-val">flex; class="tok-prop">align-items: class="tok-val">center; class="tok-prop">justify-content: class="tok-val">center;
110 class="tok-prop">font-size: class="tok-val">14px;
111 }
112
113 .brand-name { class="tok-prop">font-size: class="tok-val">13px; class="tok-prop">font-weight: class="tok-val">600; class="tok-prop">color: class="tok-val">class="tok-kw">var(--text); }
114 .brand-sub { class="tok-prop">font-size: class="tok-val">10px; class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim); class="tok-prop">letter-spacing: class="tok-val">1px; }
115
116 .lang-pill {
117 class="tok-prop">background: class="tok-val">rgba(201,146,42,0.15);
118 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold-light);
119 class="tok-prop">font-size: class="tok-val">11px;
120 class="tok-prop">font-weight: class="tok-val">700;
121 class="tok-prop">letter-spacing: class="tok-val">1px;
122 class="tok-prop">padding: class="tok-val">5px 14px;
123 class="tok-prop">border-radius: class="tok-val">20px;
124 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
125 }
126
127 /* ── INTRO ── */
128 .intro-stamp {
129 class="tok-prop">font-size: class="tok-val">10px;
130 class="tok-prop">font-weight: class="tok-val">700;
131 class="tok-prop">letter-spacing: class="tok-val">5px;
132 class="tok-prop">text-transform: class="tok-val">uppercase;
133 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold);
134 class="tok-prop">margin-bottom: class="tok-val">16px;
135 class="tok-prop">text-align: class="tok-val">center;
136 class="tok-prop">opacity: class="tok-val">0.8;
137 }
138
139 .intro-title {
140 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
141 class="tok-prop">font-size: class="tok-val">clamp(2.2rem, 7vw, 3.6rem);
142 class="tok-prop">color: class="tok-val">class="tok-kw">var(--cream);
143 class="tok-prop">text-align: class="tok-val">center;
144 class="tok-prop">line-height: class="tok-val">1.1;
145 class="tok-prop">margin-bottom: class="tok-val">6px;
146 class="tok-prop">text-shadow: class="tok-val">0 4px 30px rgba(201,146,42,0.2);
147 }
148
149 .intro-title em {
150 class="tok-prop">font-style: class="tok-val">italic;
151 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold-light);
152 }
153
154 .intro-sub {
155 class="tok-prop">font-family: class="tok-val">';Libre Baskerville', serif;
156 class="tok-prop">font-size: class="tok-val">15px;
157 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
158 class="tok-prop">text-align: class="tok-val">center;
159 class="tok-prop">margin-bottom: class="tok-val">36px;
160 class="tok-prop">font-style: class="tok-val">italic;
161 class="tok-prop">line-height: class="tok-val">1.7;
162 }
163
164 /* Lorenzo card */
165 .lorenzo-card {
166 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
167 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
168 class="tok-prop">padding: class="tok-val">32px;
169 class="tok-prop">width: class="tok-val">100%;
170 class="tok-prop">box-shadow: class="tok-val">0 20px 60px class="tok-kw">var(--shadow);
171 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
172 class="tok-prop">margin-bottom: class="tok-val">24px;
173 class="tok-prop">position: class="tok-val">relative;
174 class="tok-prop">overflow: class="tok-val">hidden;
175 }
176
177 .class="tok-prop">lorenzo-card:class="tok-val">:before {
178 class="tok-prop">content: class="tok-val">';';
179 class="tok-prop">position: class="tok-val">absolute;
180 class="tok-prop">top: class="tok-val">0; class="tok-prop">left: class="tok-val">0; class="tok-prop">right: class="tok-val">0;
181 class="tok-prop">height: class="tok-val">3px;
182 class="tok-prop">background: class="tok-val">linear-gradient(90deg, class="tok-kw">var(--red), class="tok-kw">var(--gold), class="tok-kw">var(--blue-arg));
183 }
184
185 .lorenzo-header {
186 class="tok-prop">display: class="tok-val">flex;
187 class="tok-prop">gap: class="tok-val">20px;
188 class="tok-prop">align-items: class="tok-val">center;
189 class="tok-prop">margin-bottom: class="tok-val">20px;
190 class="tok-prop">padding-bottom: class="tok-val">20px;
191 class="tok-prop">border-bottom: class="tok-val">1px solid class="tok-kw">var(--border);
192 }
193
194 .lorenzo-avatar {
195 class="tok-prop">width: class="tok-val">72px; class="tok-prop">height: class="tok-val">72px;
196 class="tok-prop">border-radius: class="tok-val">50%;
197 class="tok-prop">background: class="tok-val">linear-gradient(135deg, #8b4a0a, #c07020);
198 class="tok-prop">display: class="tok-val">flex; class="tok-prop">align-items: class="tok-val">center; class="tok-prop">justify-content: class="tok-val">center;
199 class="tok-prop">font-size: class="tok-val">34px;
200 class="tok-prop">flex-shrink: class="tok-val">0;
201 class="tok-prop">box-shadow: class="tok-val">0 8px 24px rgba(0,0,0,0.4);
202 class="tok-prop">position: class="tok-val">relative;
203 }
204
205 .class="tok-prop">lorenzo-avatar:class="tok-val">:after {
206 class="tok-prop">content: class="tok-val">';🇮🇹';
207 class="tok-prop">position: class="tok-val">absolute;
208 class="tok-prop">bottom: class="tok-val">-2px; class="tok-prop">right: class="tok-val">-2px;
209 class="tok-prop">font-size: class="tok-val">18px;
210 }
211
212 .lorenzo-name {
213 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
214 class="tok-prop">font-size: class="tok-val">22px;
215 class="tok-prop">color: class="tok-val">class="tok-kw">var(--cream);
216 class="tok-prop">margin-bottom: class="tok-val">3px;
217 }
218
219 .lorenzo-role {
220 class="tok-prop">font-size: class="tok-val">11px;
221 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
222 class="tok-prop">font-weight: class="tok-val">600;
223 class="tok-prop">letter-spacing: class="tok-val">2px;
224 class="tok-prop">text-transform: class="tok-val">uppercase;
225 class="tok-prop">margin-bottom: class="tok-val">6px;
226 }
227
228 .lorenzo-flag {
229 class="tok-prop">font-size: class="tok-val">13px;
230 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
231 }
232
233 .story-text {
234 class="tok-prop">font-family: class="tok-val">';Libre Baskerville', serif;
235 class="tok-prop">font-size: class="tok-val">14px;
236 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
237 class="tok-prop">line-height: class="tok-val">2;
238 class="tok-prop">font-style: class="tok-val">italic;
239 }
240
241 .story-text strong { class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold-light); class="tok-prop">font-style: class="tok-val">normal; }
242
243 /* Scenes preview */
244 .scenes-row {
245 class="tok-prop">display: class="tok-val">flex;
246 class="tok-prop">gap: class="tok-val">10px;
247 class="tok-prop">width: class="tok-val">100%;
248 class="tok-prop">margin-bottom: class="tok-val">28px;
249 }
250
251 .scene-preview {
252 class="tok-prop">flex: class="tok-val">1;
253 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
254 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
255 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
256 class="tok-prop">padding: class="tok-val">16px 12px;
257 class="tok-prop">text-align: class="tok-val">center;
258 class="tok-prop">font-size: class="tok-val">11px;
259 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
260 class="tok-prop">letter-spacing: class="tok-val">0.5px;
261 }
262
263 .scene-preview .sp-emoji { class="tok-prop">font-size: class="tok-val">24px; class="tok-prop">margin-bottom: class="tok-val">6px; class="tok-prop">display: class="tok-val">block; }
264 .scene-preview .sp-name { class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid); class="tok-prop">font-weight: class="tok-val">600; class="tok-prop">font-size: class="tok-val">10px; }
265
266 /* Button */
267 .btn-start {
268 class="tok-prop">background: class="tok-val">linear-gradient(135deg, class="tok-kw">var(--gold), #a07020);
269 class="tok-prop">color: class="tok-val">class="tok-kw">var(--bg);
270 class="tok-prop">border: class="tok-val">none;
271 class="tok-prop">padding: class="tok-val">16px 48px;
272 class="tok-prop">border-radius: class="tok-val">50px;
273 class="tok-prop">font-family: class="tok-val">';DM Sans', sans-serif;
274 class="tok-prop">font-size: class="tok-val">15px;
275 class="tok-prop">font-weight: class="tok-val">700;
276 class="tok-prop">cursor: class="tok-val">pointer;
277 class="tok-prop">transition: class="tok-val">all 0.25s ease;
278 class="tok-prop">box-shadow: class="tok-val">0 8px 24px rgba(201,146,42,0.3);
279 class="tok-prop">display: class="tok-val">flex;
280 class="tok-prop">align-items: class="tok-val">center;
281 class="tok-prop">gap: class="tok-val">10px;
282 class="tok-prop">letter-spacing: class="tok-val">0.5px;
283 }
284
285 .class="tok-prop">btn-start:class="tok-val">hover {
286 class="tok-prop">transform: class="tok-val">translateY(-2px);
287 class="tok-prop">box-shadow: class="tok-val">0 12px 32px rgba(201,146,42,0.45);
288 }
289
290 /* ── GAME ── */
291 .game-topbar {
292 class="tok-prop">width: class="tok-val">100%;
293 class="tok-prop">display: class="tok-val">flex;
294 class="tok-prop">align-items: class="tok-val">center;
295 class="tok-prop">justify-content: class="tok-val">space-between;
296 class="tok-prop">margin-bottom: class="tok-val">16px;
297 }
298
299 .scene-badge {
300 class="tok-prop">background: class="tok-val">rgba(201,146,42,0.15);
301 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold-light);
302 class="tok-prop">font-size: class="tok-val">11px;
303 class="tok-prop">font-weight: class="tok-val">700;
304 class="tok-prop">padding: class="tok-val">5px 14px;
305 class="tok-prop">border-radius: class="tok-val">20px;
306 class="tok-prop">letter-spacing: class="tok-val">0.5px;
307 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
308 }
309
310 .lives-row {
311 class="tok-prop">display: class="tok-val">flex;
312 class="tok-prop">gap: class="tok-val">4px;
313 class="tok-prop">font-size: class="tok-val">18px;
314 }
315
316 /* Progress */
317 .prog-wrap { class="tok-prop">width: class="tok-val">100%; class="tok-prop">margin-bottom: class="tok-val">20px; }
318 .prog-bar { class="tok-prop">height: class="tok-val">3px; class="tok-prop">background: class="tok-val">rgba(201,146,42,0.1); class="tok-prop">border-radius: class="tok-val">3px; class="tok-prop">overflow: class="tok-val">hidden; }
319 .prog-fill {
320 class="tok-prop">height: class="tok-val">100%;
321 class="tok-prop">background: class="tok-val">linear-gradient(90deg, class="tok-kw">var(--red), class="tok-kw">var(--gold), class="tok-kw">var(--blue-arg));
322 class="tok-prop">border-radius: class="tok-val">3px;
323 class="tok-prop">transition: class="tok-val">width 0.5s ease;
324 }
325
326 /* Scene card */
327 .scene-card {
328 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
329 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
330 class="tok-prop">padding: class="tok-val">24px 28px;
331 class="tok-prop">width: class="tok-val">100%;
332 class="tok-prop">box-shadow: class="tok-val">0 12px 40px class="tok-kw">var(--shadow);
333 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
334 class="tok-prop">margin-bottom: class="tok-val">20px;
335 class="tok-prop">position: class="tok-val">relative;
336 class="tok-prop">overflow: class="tok-val">hidden;
337 }
338
339 .scene-location {
340 class="tok-prop">display: class="tok-val">flex;
341 class="tok-prop">align-items: class="tok-val">center;
342 class="tok-prop">gap: class="tok-val">8px;
343 class="tok-prop">font-size: class="tok-val">10px;
344 class="tok-prop">font-weight: class="tok-val">700;
345 class="tok-prop">letter-spacing: class="tok-val">3px;
346 class="tok-prop">text-transform: class="tok-val">uppercase;
347 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold);
348 class="tok-prop">margin-bottom: class="tok-val">16px;
349 }
350
351 .class="tok-prop">scene-location:class="tok-val">:after {
352 class="tok-prop">content: class="tok-val">';';
353 class="tok-prop">flex: class="tok-val">1;
354 class="tok-prop">height: class="tok-val">1px;
355 class="tok-prop">background: class="tok-val">class="tok-kw">var(--border);
356 }
357
358 .scene-situation {
359 class="tok-prop">font-family: class="tok-val">';Libre Baskerville', serif;
360 class="tok-prop">font-size: class="tok-val">14px;
361 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
362 class="tok-prop">font-style: class="tok-val">italic;
363 class="tok-prop">line-height: class="tok-val">1.7;
364 class="tok-prop">margin-bottom: class="tok-val">16px;
365 }
366
367 /* Lorenzo speaking */
368 .lorenzo-says {
369 class="tok-prop">display: class="tok-val">flex;
370 class="tok-prop">gap: class="tok-val">12px;
371 class="tok-prop">align-items: class="tok-val">flex-start;
372 class="tok-prop">background: class="tok-val">rgba(0,0,0,0.2);
373 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
374 class="tok-prop">padding: class="tok-val">16px 18px;
375 class="tok-prop">border-left: class="tok-val">3px solid class="tok-kw">var(--gold);
376 }
377
378 .lz-av {
379 class="tok-prop">width: class="tok-val">36px; class="tok-prop">height: class="tok-val">36px;
380 class="tok-prop">border-radius: class="tok-val">50%;
381 class="tok-prop">background: class="tok-val">linear-gradient(135deg, #8b4a0a, #c07020);
382 class="tok-prop">display: class="tok-val">flex; class="tok-prop">align-items: class="tok-val">center; class="tok-prop">justify-content: class="tok-val">center;
383 class="tok-prop">font-size: class="tok-val">18px;
384 class="tok-prop">flex-shrink: class="tok-val">0;
385 }
386
387 .lz-content { class="tok-prop">flex: class="tok-val">1; }
388
389 .lz-label {
390 class="tok-prop">font-size: class="tok-val">9px;
391 class="tok-prop">font-weight: class="tok-val">700;
392 class="tok-prop">letter-spacing: class="tok-val">2px;
393 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold);
394 class="tok-prop">text-transform: class="tok-val">uppercase;
395 class="tok-prop">margin-bottom: class="tok-val">5px;
396 }
397
398 .lz-text {
399 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
400 class="tok-prop">font-size: class="tok-val">17px;
401 class="tok-prop">color: class="tok-val">class="tok-kw">var(--cream);
402 class="tok-prop">font-style: class="tok-val">italic;
403 class="tok-prop">line-height: class="tok-val">1.5;
404 }
405
406 .lz-italian {
407 class="tok-prop">font-size: class="tok-val">11px;
408 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
409 class="tok-prop">margin-top: class="tok-val">4px;
410 class="tok-prop">font-style: class="tok-val">italic;
411 }
412
413 /* Question */
414 .question-wrap {
415 class="tok-prop">width: class="tok-val">100%;
416 class="tok-prop">margin-bottom: class="tok-val">16px;
417 }
418
419 .question-label {
420 class="tok-prop">font-size: class="tok-val">11px;
421 class="tok-prop">font-weight: class="tok-val">700;
422 class="tok-prop">letter-spacing: class="tok-val">2px;
423 class="tok-prop">text-transform: class="tok-val">uppercase;
424 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
425 class="tok-prop">margin-bottom: class="tok-val">12px;
426 class="tok-prop">text-align: class="tok-val">center;
427 }
428
429 /* Options */
430 .options-grid {
431 class="tok-prop">display: class="tok-val">flex;
432 class="tok-prop">flex-direction: class="tok-val">column;
433 class="tok-prop">gap: class="tok-val">10px;
434 class="tok-prop">width: class="tok-val">100%;
435 }
436
437 .option-btn {
438 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
439 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
440 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
441 class="tok-prop">padding: class="tok-val">16px 20px;
442 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text);
443 class="tok-prop">font-family: class="tok-val">';DM Sans', sans-serif;
444 class="tok-prop">font-size: class="tok-val">14px;
445 class="tok-prop">cursor: class="tok-val">pointer;
446 class="tok-prop">transition: class="tok-val">all 0.2s ease;
447 class="tok-prop">text-align: class="tok-val">left;
448 class="tok-prop">display: class="tok-val">flex;
449 class="tok-prop">align-items: class="tok-val">center;
450 class="tok-prop">gap: class="tok-val">12px;
451 class="tok-prop">position: class="tok-val">relative;
452 class="tok-prop">overflow: class="tok-val">hidden;
453 }
454
455 .class="tok-prop">option-btn:class="tok-val">:before {
456 class="tok-prop">content: class="tok-val">';';
457 class="tok-prop">position: class="tok-val">absolute; class="tok-prop">inset: class="tok-val">0;
458 class="tok-prop">background: class="tok-val">rgba(201,146,42,0.05);
459 class="tok-prop">opacity: class="tok-val">0;
460 class="tok-prop">transition: class="tok-val">opacity 0.2s;
461 }
462
463 .class="tok-prop">option-btn:class="tok-val">hover:not(:disabled)::before { class="tok-prop">opacity: class="tok-val">1; }
464 .class="tok-prop">option-btn:class="tok-val">hover:not(:disabled) {
465 class="tok-prop">border-color: class="tok-val">class="tok-kw">var(--gold);
466 class="tok-prop">transform: class="tok-val">translateX(4px);
467 }
468
469 .class="tok-prop">option-btn:class="tok-val">disabled { class="tok-prop">cursor: class="tok-val">default; }
470
471 .option-btn.correct {
472 class="tok-prop">background: class="tok-val">rgba(45,106,45,0.2);
473 class="tok-prop">border-color: class="tok-val">#4caf50;
474 class="tok-prop">color: class="tok-val">#a8d4a8;
475 }
476
477 .option-btn.wrong {
478 class="tok-prop">background: class="tok-val">rgba(106,26,26,0.2);
479 class="tok-prop">border-color: class="tok-val">#c04040;
480 class="tok-prop">color: class="tok-val">#d4a0a0;
481 }
482
483 .option-letter {
484 class="tok-prop">width: class="tok-val">28px; class="tok-prop">height: class="tok-val">28px;
485 class="tok-prop">border-radius: class="tok-val">50%;
486 class="tok-prop">background: class="tok-val">rgba(201,146,42,0.1);
487 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
488 class="tok-prop">display: class="tok-val">flex; class="tok-prop">align-items: class="tok-val">center; class="tok-prop">justify-content: class="tok-val">center;
489 class="tok-prop">font-size: class="tok-val">12px;
490 class="tok-prop">font-weight: class="tok-val">700;
491 class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold);
492 class="tok-prop">flex-shrink: class="tok-val">0;
493 class="tok-prop">transition: class="tok-val">all 0.2s;
494 }
495
496 .option-btn.correct .option-letter {
497 class="tok-prop">background: class="tok-val">rgba(76,175,80,0.2);
498 class="tok-prop">border-color: class="tok-val">#4caf50;
499 class="tok-prop">color: class="tok-val">#4caf50;
500 }
501
502 .option-btn.wrong .option-letter {
503 class="tok-prop">background: class="tok-val">rgba(192,64,64,0.2);
504 class="tok-prop">border-color: class="tok-val">#c04040;
505 class="tok-prop">color: class="tok-val">#c04040;
506 }
507
508 /* Feedback */
509 .feedback-box {
510 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
511 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
512 class="tok-prop">padding: class="tok-val">18px 22px;
513 class="tok-prop">width: class="tok-val">100%;
514 class="tok-prop">margin-bottom: class="tok-val">16px;
515 class="tok-prop">display: class="tok-val">none;
516 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
517 class="tok-prop">animation: class="tok-val">feedIn 0.3s ease both;
518 }
519
520 @keyframes feedIn {
521 from { class="tok-prop">opacity: class="tok-val">0; class="tok-prop">transform: class="tok-val">translateY(-8px); }
522 to { class="tok-prop">opacity: class="tok-val">1; class="tok-prop">transform: class="tok-val">translateY(0); }
523 }
524
525 .feedback-box.show { class="tok-prop">display: class="tok-val">block; }
526 .feedback-box.good { class="tok-prop">border-left: class="tok-val">3px solid #4caf50; }
527 .feedback-box.bad { class="tok-prop">border-left: class="tok-val">3px solid #c04040; }
528
529 .feedback-icon { class="tok-prop">font-size: class="tok-val">20px; class="tok-prop">margin-bottom: class="tok-val">6px; }
530
531 .feedback-title {
532 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
533 class="tok-prop">font-size: class="tok-val">16px;
534 class="tok-prop">color: class="tok-val">class="tok-kw">var(--cream);
535 class="tok-prop">margin-bottom: class="tok-val">4px;
536 }
537
538 .feedback-text {
539 class="tok-prop">font-size: class="tok-val">13px;
540 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
541 class="tok-prop">line-height: class="tok-val">1.7;
542 class="tok-prop">font-style: class="tok-val">italic;
543 }
544
545 .feedback-text strong { class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold-light); class="tok-prop">font-style: class="tok-val">normal; }
546
547 /* Next button */
548 .btn-next {
549 class="tok-prop">background: class="tok-val">transparent;
550 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
551 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
552 class="tok-prop">padding: class="tok-val">12px 32px;
553 class="tok-prop">border-radius: class="tok-val">50px;
554 class="tok-prop">font-family: class="tok-val">';DM Sans', sans-serif;
555 class="tok-prop">font-size: class="tok-val">13px;
556 class="tok-prop">font-weight: class="tok-val">600;
557 class="tok-prop">cursor: class="tok-val">pointer;
558 class="tok-prop">transition: class="tok-val">all 0.2s;
559 class="tok-prop">display: class="tok-val">none;
560 class="tok-prop">letter-spacing: class="tok-val">1px;
561 }
562
563 .btn-next.show { class="tok-prop">display: class="tok-val">block; }
564 .class="tok-prop">btn-next:class="tok-val">hover { class="tok-prop">border-color: class="tok-val">class="tok-kw">var(--gold); class="tok-prop">color: class="tok-val">class="tok-kw">var(--gold); }
565
566 /* ── RESULT ── */
567 .result-hero {
568 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
569 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
570 class="tok-prop">padding: class="tok-val">40px 36px;
571 class="tok-prop">width: class="tok-val">100%;
572 class="tok-prop">text-align: class="tok-val">center;
573 class="tok-prop">box-shadow: class="tok-val">0 20px 60px class="tok-kw">var(--shadow);
574 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
575 class="tok-prop">margin-bottom: class="tok-val">20px;
576 class="tok-prop">position: class="tok-val">relative;
577 class="tok-prop">overflow: class="tok-val">hidden;
578 }
579
580 .class="tok-prop">result-hero:class="tok-val">:before {
581 class="tok-prop">content: class="tok-val">';';
582 class="tok-prop">position: class="tok-val">absolute;
583 class="tok-prop">top: class="tok-val">0; class="tok-prop">left: class="tok-val">0; class="tok-prop">right: class="tok-val">0;
584 class="tok-prop">height: class="tok-val">3px;
585 class="tok-prop">background: class="tok-val">linear-gradient(90deg, class="tok-kw">var(--red), class="tok-kw">var(--gold), class="tok-kw">var(--blue-arg));
586 }
587
588 .result-emoji { class="tok-prop">font-size: class="tok-val">64px; class="tok-prop">margin-bottom: class="tok-val">16px; }
589
590 .result-title {
591 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
592 class="tok-prop">font-size: class="tok-val">1.8rem;
593 class="tok-prop">color: class="tok-val">class="tok-kw">var(--cream);
594 class="tok-prop">margin-bottom: class="tok-val">10px;
595 class="tok-prop">line-height: class="tok-val">1.2;
596 }
597
598 .result-msg {
599 class="tok-prop">font-family: class="tok-val">';Libre Baskerville', serif;
600 class="tok-prop">font-size: class="tok-val">14px;
601 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
602 class="tok-prop">line-height: class="tok-val">1.9;
603 class="tok-prop">font-style: class="tok-val">italic;
604 class="tok-prop">margin-bottom: class="tok-val">28px;
605 }
606
607 .stats-row {
608 class="tok-prop">display: class="tok-val">flex;
609 class="tok-prop">gap: class="tok-val">0;
610 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
611 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
612 class="tok-prop">overflow: class="tok-val">hidden;
613 }
614
615 .stat-box {
616 class="tok-prop">flex: class="tok-val">1;
617 class="tok-prop">padding: class="tok-val">16px;
618 class="tok-prop">text-align: class="tok-val">center;
619 class="tok-prop">border-right: class="tok-val">1px solid class="tok-kw">var(--border);
620 }
621 .class="tok-prop">stat-box:class="tok-val">last-child { class="tok-prop">border-right: class="tok-val">none; }
622
623 .stat-n {
624 class="tok-prop">font-family: class="tok-val">';Playfair Display', serif;
625 class="tok-prop">font-size: class="tok-val">2rem;
626 class="tok-prop">line-height: class="tok-val">1;
627 class="tok-prop">margin-bottom: class="tok-val">4px;
628 }
629
630 .stat-l {
631 class="tok-prop">font-size: class="tok-val">10px;
632 class="tok-prop">font-weight: class="tok-val">700;
633 class="tok-prop">letter-spacing: class="tok-val">1.5px;
634 class="tok-prop">text-transform: class="tok-val">uppercase;
635 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
636 }
637
638 /* Scene recap */
639 .recap-card {
640 class="tok-prop">background: class="tok-val">class="tok-kw">var(--card);
641 class="tok-prop">border-radius: class="tok-val">class="tok-kw">var(--radius);
642 class="tok-prop">padding: class="tok-val">24px 28px;
643 class="tok-prop">width: class="tok-val">100%;
644 class="tok-prop">box-shadow: class="tok-val">0 8px 30px class="tok-kw">var(--shadow);
645 class="tok-prop">border: class="tok-val">1px solid class="tok-kw">var(--border);
646 class="tok-prop">margin-bottom: class="tok-val">24px;
647 }
648
649 .recap-title {
650 class="tok-prop">font-size: class="tok-val">10px;
651 class="tok-prop">font-weight: class="tok-val">700;
652 class="tok-prop">letter-spacing: class="tok-val">2px;
653 class="tok-prop">text-transform: class="tok-val">uppercase;
654 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-dim);
655 class="tok-prop">margin-bottom: class="tok-val">16px;
656 }
657
658 .recap-row {
659 class="tok-prop">display: class="tok-val">flex;
660 class="tok-prop">align-items: class="tok-val">center;
661 class="tok-prop">gap: class="tok-val">12px;
662 class="tok-prop">padding: class="tok-val">10px 0;
663 class="tok-prop">border-bottom: class="tok-val">1px solid rgba(201,146,42,0.08);
664 class="tok-prop">opacity: class="tok-val">0;
665 class="tok-prop">animation: class="tok-val">recapIn 0.4s ease forwards;
666 }
667
668 .class="tok-prop">recap-row:class="tok-val">last-child { class="tok-prop">border-bottom: class="tok-val">none; }
669
670 @keyframes recapIn {
671 from { class="tok-prop">opacity: class="tok-val">0; class="tok-prop">transform: class="tok-val">translateX(-8px); }
672 to { class="tok-prop">opacity: class="tok-val">1; class="tok-prop">transform: class="tok-val">translateX(0); }
673 }
674
675 .recap-scene { class="tok-prop">font-size: class="tok-val">16px; }
676 .recap-location {
677 class="tok-prop">font-size: class="tok-val">12px;
678 class="tok-prop">color: class="tok-val">class="tok-kw">var(--text-mid);
679 class="tok-prop">flex: class="tok-val">1;
680 class="tok-prop">font-weight: class="tok-val">600;
681 }
682 .recap-result { class="tok-prop">font-size: class="tok-val">13px; }
683 class="tok-tag"></styleclass="tok-attr">class="tok-tag">>
684 class="tok-tag"></headclass="tok-attr">class="tok-tag">>
685 class="tok-tag"><bodyclass="tok-attr">class="tok-tag">>
686 class="tok-tag"><divclass="tok-attr"> class="wrapper"class="tok-tag">>
687
688 <!-- ══ INTRO ══ -->
689 class="tok-tag"><divclass="tok-attr"> class="screen active" id="screen-intro"class="tok-tag">>
690 class="tok-tag"><divclass="tok-attr"> class="topbar"class="tok-tag">>
691 class="tok-tag"><divclass="tok-attr"> class="brand"class="tok-tag">>
692 class="tok-tag"><divclass="tok-attr"> class="brand-dot"class="tok-tag">>🦙class="tok-tag"></divclass="tok-attr">class="tok-tag">>
693 class="tok-tag"><divclass="tok-attr">class="tok-tag">>
694 class="tok-tag"><divclass="tok-attr"> class="brand-name"class="tok-tag">>AlpacaViajesclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
695 class="tok-tag"><divclass="tok-attr"> class="brand-sub"class="tok-tag">>PLATAFORMA DE IDIOMASclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
696 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
697 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
698 class="tok-tag"><divclass="tok-attr"> class="lang-pill"class="tok-tag">>🇦🇷 Españolclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
699 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
700
701 class="tok-tag"><divclass="tok-attr"> class="intro-stamp"class="tok-tag">>✦ Español · Buenos Aires · Nivel 1 ✦class="tok-tag"></divclass="tok-attr">class="tok-tag">>
702 class="tok-tag"><h1class="tok-attr"> class="intro-title"class="tok-tag">>Lorenzoclass="tok-tag"><brclass="tok-attr">class="tok-tag">>en class="tok-tag"><emclass="tok-attr">class="tok-tag">>Buenos Airesclass="tok-tag"></emclass="tok-attr">class="tok-tag">>class="tok-tag"></h1class="tok-attr">class="tok-tag">>
703 class="tok-tag"><pclass="tok-attr"> class="intro-sub"class="tok-tag">>"Un chef italiano, una ciudad entera,class="tok-tag"><brclass="tok-attr">class="tok-tag">>y un idioma que aprender."class="tok-tag"></pclass="tok-attr">class="tok-tag">>
704
705 class="tok-tag"><divclass="tok-attr"> class="lorenzo-card"class="tok-tag">>
706 class="tok-tag"><divclass="tok-attr"> class="lorenzo-header"class="tok-tag">>
707 class="tok-tag"><divclass="tok-attr"> class="lorenzo-avatar"class="tok-tag">>👨‍🍳class="tok-tag"></divclass="tok-attr">class="tok-tag">>
708 class="tok-tag"><divclass="tok-attr">class="tok-tag">>
709 class="tok-tag"><divclass="tok-attr"> class="lorenzo-name"class="tok-tag">>Lorenzo Ferretticlass="tok-tag"></divclass="tok-attr">class="tok-tag">>
710 class="tok-tag"><divclass="tok-attr"> class="lorenzo-role"class="tok-tag">>Chef · Milán, Italiaclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
711 class="tok-tag"><divclass="tok-attr"> class="lorenzo-flag"class="tok-tag">>🇮🇹 → 🇦🇷 Recién llegadoclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
712 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
713 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
714 class="tok-tag"><divclass="tok-attr"> class="story-text"class="tok-tag">>
715 Lorenzo acaba de aterrizar en Ezeiza con dos valijas y un sueño:
716 class="tok-tag"><strongclass="tok-attr">class="tok-tag">>abrir su restaurante en Buenos Aires.class="tok-tag"></strongclass="tok-attr">class="tok-tag">>
717 Habla italiano, algo de inglés, y exactamente
718 class="tok-tag"><strongclass="tok-attr">class="tok-tag">>cero palabras de español.class="tok-tag"></strongclass="tok-attr">class="tok-tag">>class="tok-tag"><brclass="tok-attr">class="tok-tag">>class="tok-tag"><brclass="tok-attr">class="tok-tag">>
719 Hoy tiene que sobrevivir la ciudad solo.
720 Ayudalo a elegir las palabras correctas. 🥩🍷
721 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
722 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
723
724 class="tok-tag"><divclass="tok-attr"> class="scenes-row"class="tok-tag">>
725 class="tok-tag"><divclass="tok-attr"> class="scene-preview"class="tok-tag">>
726 class="tok-tag"><spanclass="tok-attr"> class="sp-emoji"class="tok-tag">>🚕class="tok-tag"></spanclass="tok-attr">class="tok-tag">>
727 class="tok-tag"><divclass="tok-attr"> class="sp-name"class="tok-tag">>Taxiclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
728 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
729 class="tok-tag"><divclass="tok-attr"> class="scene-preview"class="tok-tag">>
730 class="tok-tag"><spanclass="tok-attr"> class="sp-emoji"class="tok-tag">>☕class="tok-tag"></spanclass="tok-attr">class="tok-tag">>
731 class="tok-tag"><divclass="tok-attr"> class="sp-name"class="tok-tag">>Caféclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
732 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
733 class="tok-tag"><divclass="tok-attr"> class="scene-preview"class="tok-tag">>
734 class="tok-tag"><spanclass="tok-attr"> class="sp-emoji"class="tok-tag">>🥩class="tok-tag"></spanclass="tok-attr">class="tok-tag">>
735 class="tok-tag"><divclass="tok-attr"> class="sp-name"class="tok-tag">>Parrillaclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
736 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
737 class="tok-tag"><divclass="tok-attr"> class="scene-preview"class="tok-tag">>
738 class="tok-tag"><spanclass="tok-attr"> class="sp-emoji"class="tok-tag">>🛒class="tok-tag"></spanclass="tok-attr">class="tok-tag">>
739 class="tok-tag"><divclass="tok-attr"> class="sp-name"class="tok-tag">>Mercadoclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
740 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
741 class="tok-tag"><divclass="tok-attr"> class="scene-preview"class="tok-tag">>
742 class="tok-tag"><spanclass="tok-attr"> class="sp-emoji"class="tok-tag">>🏘️class="tok-tag"></spanclass="tok-attr">class="tok-tag">>
743 class="tok-tag"><divclass="tok-attr"> class="sp-name"class="tok-tag">>Vecinosclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
744 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
745 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
746
747 class="tok-tag"><buttonclass="tok-attr"> class="btn-start" onclick="startGame()"class="tok-tag">>
748 🇦🇷 Ayudar a Lorenzo
749 class="tok-tag"></buttonclass="tok-attr">class="tok-tag">>
750 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
751
752 <!-- ══ GAME ══ -->
753 class="tok-tag"><divclass="tok-attr"> class="screen" id="screen-game"class="tok-tag">>
754 class="tok-tag"><divclass="tok-attr"> class="topbar"class="tok-tag">>
755 class="tok-tag"><divclass="tok-attr"> class="brand"class="tok-tag">>
756 class="tok-tag"><divclass="tok-attr"> class="brand-dot"class="tok-tag">>🦙class="tok-tag"></divclass="tok-attr">class="tok-tag">>
757 class="tok-tag"><divclass="tok-attr">class="tok-tag">>
758 class="tok-tag"><divclass="tok-attr"> class="brand-name"class="tok-tag">>AlpacaViajesclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
759 class="tok-tag"><divclass="tok-attr"> class="brand-sub"class="tok-tag">>PLATAFORMA DE IDIOMASclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
760 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
761 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
762 class="tok-tag"><divclass="tok-attr"> class="lang-pill"class="tok-tag">>🇦🇷 Españolclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
763 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
764
765 class="tok-tag"><divclass="tok-attr"> class="game-topbar"class="tok-tag">>
766 class="tok-tag"><divclass="tok-attr"> class="scene-badge" id="scene-badge"class="tok-tag">>Escena 1 de 5class="tok-tag"></divclass="tok-attr">class="tok-tag">>
767 class="tok-tag"><divclass="tok-attr"> class="lives-row" id="lives-row"class="tok-tag">>⭐⭐⭐⭐⭐class="tok-tag"></divclass="tok-attr">class="tok-tag">>
768 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
769
770 class="tok-tag"><divclass="tok-attr"> class="prog-wrap"class="tok-tag">>
771 class="tok-tag"><divclass="tok-attr"> class="prog-bar"class="tok-tag">>
772 class="tok-tag"><divclass="tok-attr"> class="prog-fill" id="prog-fill" style="class="tok-prop">width:class="tok-val">0%";class="tok-tag">>class="tok-tag"></divclass="tok-attr">class="tok-tag">>
773 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
774 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
775
776 class="tok-tag"><divclass="tok-attr"> class="scene-card"class="tok-tag">>
777 class="tok-tag"><divclass="tok-attr"> class="scene-location" id="scene-location"class="tok-tag">>📍 Ezeizaclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
778 class="tok-tag"><divclass="tok-attr"> class="scene-situation" id="scene-situation"class="tok-tag">>...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
779 class="tok-tag"><divclass="tok-attr"> class="lorenzo-says"class="tok-tag">>
780 class="tok-tag"><divclass="tok-attr"> class="lz-av"class="tok-tag">>👨‍🍳class="tok-tag"></divclass="tok-attr">class="tok-tag">>
781 class="tok-tag"><divclass="tok-attr"> class="lz-content"class="tok-tag">>
782 class="tok-tag"><divclass="tok-attr"> class="lz-label"class="tok-tag">>Lorenzo intenta decir...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
783 class="tok-tag"><divclass="tok-attr"> class="lz-text" id="lz-text"class="tok-tag">>...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
784 class="tok-tag"><divclass="tok-attr"> class="lz-italian" id="lz-italian"class="tok-tag">>...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
785 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
786 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
787 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
788
789 class="tok-tag"><divclass="tok-attr"> class="question-wrap"class="tok-tag">>
790 class="tok-tag"><divclass="tok-attr"> class="question-label"class="tok-tag">>¿Cuál es la forma correcta en español?class="tok-tag"></divclass="tok-attr">class="tok-tag">>
791 class="tok-tag"><divclass="tok-attr"> class="options-grid" id="options-grid"class="tok-tag">>class="tok-tag"></divclass="tok-attr">class="tok-tag">>
792 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
793
794 class="tok-tag"><divclass="tok-attr"> class="feedback-box" id="feedback-box"class="tok-tag">>
795 class="tok-tag"><divclass="tok-attr"> class="feedback-icon" id="feedback-icon"class="tok-tag">>✓class="tok-tag"></divclass="tok-attr">class="tok-tag">>
796 class="tok-tag"><divclass="tok-attr"> class="feedback-title" id="feedback-title"class="tok-tag">>...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
797 class="tok-tag"><divclass="tok-attr"> class="feedback-text" id="feedback-text"class="tok-tag">>...class="tok-tag"></divclass="tok-attr">class="tok-tag">>
798 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
799
800 class="tok-tag"><buttonclass="tok-attr"> class="btn-next" id="btn-next" onclick="nextScene()"class="tok-tag">>
801 Seguir con Lorenzo →
802 class="tok-tag"></buttonclass="tok-attr">class="tok-tag">>
803 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
804
805 <!-- ══ RESULT ══ -->
806 class="tok-tag"><divclass="tok-attr"> class="screen" id="screen-result"class="tok-tag">>
807 class="tok-tag"><divclass="tok-attr"> class="topbar"class="tok-tag">>
808 class="tok-tag"><divclass="tok-attr"> class="brand"class="tok-tag">>
809 class="tok-tag"><divclass="tok-attr"> class="brand-dot"class="tok-tag">>🦙class="tok-tag"></divclass="tok-attr">class="tok-tag">>
810 class="tok-tag"><divclass="tok-attr">class="tok-tag">>
811 class="tok-tag"><divclass="tok-attr"> class="brand-name"class="tok-tag">>AlpacaViajesclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
812 class="tok-tag"><divclass="tok-attr"> class="brand-sub"class="tok-tag">>PLATAFORMA DE IDIOMASclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
813 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
814 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
815 class="tok-tag"><divclass="tok-attr"> class="lang-pill"class="tok-tag">>🇦🇷 Españolclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
816 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
817
818 class="tok-tag"><divclass="tok-attr"> class="result-hero"class="tok-tag">>
819 class="tok-tag"><divclass="tok-attr"> class="result-emoji" id="res-emoji"class="tok-tag">>🥩class="tok-tag"></divclass="tok-attr">class="tok-tag">>
820 class="tok-tag"><divclass="tok-attr"> class="result-title" id="res-title"class="tok-tag">>Lorenzo sobrevivió Buenos Airesclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
821 class="tok-tag"><divclass="tok-attr"> class="result-msg" id="res-msg"class="tok-tag">>Y aprendió que esta ciudad te recibe siempre.class="tok-tag"></divclass="tok-attr">class="tok-tag">>
822 class="tok-tag"><divclass="tok-attr"> class="stats-row"class="tok-tag">>
823 class="tok-tag"><divclass="tok-attr"> class="stat-box"class="tok-tag">>
824 class="tok-tag"><divclass="tok-attr"> class="stat-n" id="res-ok" style="class="tok-prop">color:class="tok-val">class="tok-kw">var(--gold-light)";class="tok-tag">>0class="tok-tag"></divclass="tok-attr">class="tok-tag">>
825 class="tok-tag"><divclass="tok-attr"> class="stat-l"class="tok-tag">>Correctasclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
826 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
827 class="tok-tag"><divclass="tok-attr"> class="stat-box"class="tok-tag">>
828 class="tok-tag"><divclass="tok-attr"> class="stat-n" id="res-miss" style="class="tok-prop">color:class="tok-val">#c04040";class="tok-tag">>0class="tok-tag"></divclass="tok-attr">class="tok-tag">>
829 class="tok-tag"><divclass="tok-attr"> class="stat-l"class="tok-tag">>Falladasclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
830 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
831 class="tok-tag"><divclass="tok-attr"> class="stat-box"class="tok-tag">>
832 class="tok-tag"><divclass="tok-attr"> class="stat-n" id="res-pct" style="class="tok-prop">color:class="tok-val">class="tok-kw">var(--blue-arg)";class="tok-tag">>0%class="tok-tag"></divclass="tok-attr">class="tok-tag">>
833 class="tok-tag"><divclass="tok-attr"> class="stat-l"class="tok-tag">>Dominioclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
834 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
835 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
836 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
837
838 class="tok-tag"><divclass="tok-attr"> class="recap-card"class="tok-tag">>
839 class="tok-tag"><divclass="tok-attr"> class="recap-title"class="tok-tag">>✦ El recorrido de Lorenzo por Buenos Airesclass="tok-tag"></divclass="tok-attr">class="tok-tag">>
840 class="tok-tag"><divclass="tok-attr"> id="recap-list"class="tok-tag">>class="tok-tag"></divclass="tok-attr">class="tok-tag">>
841 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
842
843 class="tok-tag"><buttonclass="tok-attr"> class="btn-start" onclick="restartGame()" style="class="tok-prop">width:class="tok-val">100%;class="tok-prop">justify-content:class="tok-val">center;"class="tok-tag">>
844 ↺ Nuevo día en Buenos Aires
845 class="tok-tag"></buttonclass="tok-attr">class="tok-tag">>
846 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
847
848 class="tok-tag"></divclass="tok-attr">class="tok-tag">>
849
850 class="tok-tag"><scriptclass="tok-attr">class="tok-tag">>
851 class="tok-kw">const scenes = [
852 {
853 class="tok-prop">location: class="tok-val">';🚕 Taxi — Saliendo de Ezeiza',
854 class="tok-prop">situation: class="tok-val">';Lorenzo sale del aeropuerto. Un taxista lo mira esperando. Lorenzo necesita decirle a dónde va — tiene la dirección de su nuevo departamento en Palermo.',
855 lz_class="tok-prop">says: class="tok-val">';"Buenas... yo querer ir a... Palermo, por favor?"',
856 lz_class="tok-prop">italian: class="tok-val">';(En italiano diríclass="tok-prop">a: class="tok-val">";Buongiorno, voglio andare a Palermo, per favore")',
857 class="tok-prop">question: class="tok-val">';¿Cómo le dice correctamente al taxista adónde quiere ir?',
858 class="tok-prop">options: class="tok-val">[
859 { class="tok-prop">text: class="tok-val">';"Quiero ir a Palermo, por favor."', class="tok-prop">correct: class="tok-val">true },
860 { class="tok-prop">text: class="tok-val">';"Yo querer Palermo ir."', class="tok-prop">correct: class="tok-val">false },
861 { class="tok-prop">text: class="tok-val">';"Vamos Palermo, sí?"', class="tok-prop">correct: class="tok-val">false },
862 { class="tok-prop">text: class="tok-val">';"Me llevar a Palermo."', class="tok-prop">correct: class="tok-val">false }
863 ],
864 feedback_class="tok-prop">good:class="tok-val"> {
865 class="tok-prop">icon: class="tok-val">';🚕',
866 class="tok-prop">title: class="tok-val">';¡Perfecto! El taxista asiente.',
867 class="tok-prop">text: class="tok-val">';Lorenzo dijo exactamente lo correcto. El taxista arranca el motor y class="tok-prop">dice: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"¡Dale, vamos!"class="tok-tag"></strongclass="tok-attr">class="tok-tag">> — y Lorenzo aprende su primera frase porteña.'
868 },
869 feedback_class="tok-prop">bad:class="tok-val"> {
870 class="tok-prop">icon: class="tok-val">';😅',
871 class="tok-prop">title: class="tok-val">';El taxista lo mira confundido...',
872 class="tok-prop">text: class="tok-val">';Pero como es porteño y tiene buen corazón, igual entiende. La forma correcta class="tok-prop">es: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"Quiero ir a Palermo, por favor."class="tok-tag"></strongclass="tok-attr">class="tok-tag">>'
873 },
874 class="tok-prop">recap:class="tok-val"> { class="tok-prop">emoji: class="tok-val">';🚕', class="tok-prop">location: class="tok-val">';Taxi a Palermo' }
875 },
876 {
877 class="tok-prop">location: class="tok-val">';☕ Café — Bar de la esquina, Palermo',
878 class="tok-prop">situation: class="tok-val">';Lorenzo deja las valijas y sale a tomar un café. Entra al primer bar que ve. La moza lo mira. Lorenzo nunca tomó un café argentino — él quiere uno solo, como en Italia.',
879 lz_class="tok-prop">says: class="tok-val">';"Perdón, yo querer... un café, negro, sin leche."',
880 lz_class="tok-prop">italian: class="tok-val">';(En class="tok-prop">italiano: class="tok-val">";Un caffè, per favore" — pero en Argentina hay que saber pedirlo)',
881 class="tok-prop">question: class="tok-val">';¿Cómo pide un café solo en Argentina?',
882 class="tok-prop">options: class="tok-val">[
883 { class="tok-prop">text: class="tok-val">';"Un café con leche, por favor."', class="tok-prop">correct: class="tok-val">false },
884 { class="tok-prop">text: class="tok-val">';"Un cortado, por favor."', class="tok-prop">correct: class="tok-val">false },
885 { class="tok-prop">text: class="tok-val">';"Un café solo, por favor."', class="tok-prop">correct: class="tok-val">true },
886 { class="tok-prop">text: class="tok-val">';"Un expreso negro doble."', class="tok-prop">correct: class="tok-val">false }
887 ],
888 feedback_class="tok-prop">good:class="tok-val"> {
889 class="tok-prop">icon: class="tok-val">';☕',
890 class="tok-prop">title: class="tok-val">';¡Así se pide un café en Argentina!',
891 class="tok-prop">text: class="tok-val">';La moza le trae un café bien negro y fuerte. Lorenzo lo prueba y class="tok-prop">dice: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"Perfetto!"class="tok-tag"></strongclass="tok-attr">class="tok-tag">> — y la moza sonríe sin entender nada.'
892 },
893 feedback_class="tok-prop">bad:class="tok-val"> {
894 class="tok-prop">icon: class="tok-val">';😄',
895 class="tok-prop">title: class="tok-val">';Casi, Lorenzo...',
896 class="tok-prop">text: class="tok-val">';En Argentina, el café negro se pide como class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"café solo"class="tok-tag"></strongclass="tok-attr">class="tok-tag">>. El cortado tiene un chorrito de leche. ¡Importante saberlo antes de la primera reunión!'
897 },
898 class="tok-prop">recap:class="tok-val"> { class="tok-prop">emoji: class="tok-val">';☕', class="tok-prop">location: class="tok-val">';Café en Palermo' }
899 },
900 {
901 class="tok-prop">location: class="tok-val">';🥩 Parrilla — Almuerzo en San Telmo',
902 class="tok-prop">situation: class="tok-val">';Lorenzo camina hasta San Telmo y encuentra una parrilla increíble. Como chef, quiere probar el asado legendario argentino. El mozo lo mira esperando el pedido.',
903 lz_class="tok-prop">says: class="tok-val">';"Yo querer... la carne grande, muy cocinada... bien hecha?"',
904 lz_class="tok-prop">italian: class="tok-val">';(En class="tok-prop">italiano: class="tok-val">";La carne ben cotta, per favore")',
905 class="tok-prop">question: class="tok-val">';¿Cómo pide la carne bien cocida en Argentina?',
906 class="tok-prop">options: class="tok-val">[
907 { class="tok-prop">text: class="tok-val">';"Un bife a punto, por favor."', class="tok-prop">correct: class="tok-val">false },
908 { class="tok-prop">text: class="tok-val">';"Un bife bien cocido, por favor."', class="tok-prop">correct: class="tok-val">true },
909 { class="tok-prop">text: class="tok-val">';"Carne muy hecha con todo."', class="tok-prop">correct: class="tok-val">false },
910 { class="tok-prop">text: class="tok-val">';"Asado completo sin sangre."', class="tok-prop">correct: class="tok-val">false }
911 ],
912 feedback_class="tok-prop">good:class="tok-val"> {
913 class="tok-prop">icon: class="tok-val">';🥩',
914 class="tok-prop">title: class="tok-val">';¡Lorenzo habló como un porteño!',
915 class="tok-prop">text: class="tok-val">';El mozo asiente y le trae un bife enorme. Lorenzo lo prueba y sus ojos se class="tok-prop">abren: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"Madonna mia... questa carne!"class="tok-tag"></strongclass="tok-attr">class="tok-tag">> — ya sabe por qué vino a Buenos Aires.'
916 },
917 feedback_class="tok-prop">bad:class="tok-val"> {
918 class="tok-prop">icon: class="tok-val">';🤌',
919 class="tok-prop">title: class="tok-val">';El mozo lo ayuda con una sonrisa.',
920 class="tok-prop">text: class="tok-val">';La forma correcta es class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"bien cocido"class="tok-tag"></strongclass="tok-attr">class="tok-tag">>. "A punto" es término medio, "jugoso" es casi crudo. ¡Lorenzo está aprendiendo el idioma del asado!'
921 },
922 class="tok-prop">recap:class="tok-val"> { class="tok-prop">emoji: class="tok-val">';🥩', class="tok-prop">location: class="tok-val">';Parrilla en San Telmo' }
923 },
924 {
925 class="tok-prop">location: class="tok-val">';🛒 Mercado — Feria de Palermo',
926 class="tok-prop">situation: class="tok-val">';Lorenzo encuentra una feria de productores. Como chef, necesita ingredientes frescos. Ve unos tomates increíbles y quiere preguntar el precio antes de comprar.',
927 lz_class="tok-prop">says: class="tok-val">';"Hola... yo querer saber... cuánto cuesta estos tomates?"',
928 lz_class="tok-prop">italian: class="tok-val">';(En class="tok-prop">italiano: class="tok-val">";Quanto costano questi pomodori?")',
929 class="tok-prop">question: class="tok-val">';¿Cómo pregunta correctamente el precio?',
930 class="tok-prop">options: class="tok-val">[
931 { class="tok-prop">text: class="tok-val">';"¿Cuánto valen los tomates?"', class="tok-prop">correct: class="tok-val">true },
932 { class="tok-prop">text: class="tok-val">';"¿Qué precio tienen estos?"', class="tok-prop">correct: class="tok-val">false },
933 { class="tok-prop">text: class="tok-val">';"¿Cuánto cobras por kilo?"', class="tok-prop">correct: class="tok-val">false },
934 { class="tok-prop">text: class="tok-val">';"¿Cuánto son los tomates?"', class="tok-prop">correct: class="tok-val">false }
935 ],
936 feedback_class="tok-prop">good:class="tok-val"> {
937 class="tok-prop">icon: class="tok-val">';🛒',
938 class="tok-prop">title: class="tok-val">';¡Muy bien, Lorenzo!',
939 class="tok-prop">text: class="tok-val">';El productor le dice el precio y hasta le regala un tomate para que pruebe. Lorenzo lo muerde y cierra los class="tok-prop">ojos: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"Bello. Bellissimo."class="tok-tag"></strongclass="tok-attr">class="tok-tag">> Ya tiene sus ingredientes.'
940 },
941 feedback_class="tok-prop">bad:class="tok-val"> {
942 class="tok-prop">icon: class="tok-val">';😊',
943 class="tok-prop">title: class="tok-val">';¡Todas son válidas en Argentina!',
944 class="tok-prop">text: class="tok-val">';En realidad, class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"¿cuánto valen?"class="tok-tag"></strongclass="tok-attr">class="tok-tag">>, class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"¿qué precio tienen?"class="tok-tag"></strongclass="tok-attr">class="tok-tag">> y class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"¿cuánto cobras?"class="tok-tag"></strongclass="tok-attr">class="tok-tag">> se usan todas. El español rioplatense es flexible y cálido — ¡Lorenzo está aprendiendo bien!'
945 },
946 class="tok-prop">recap:class="tok-val"> { class="tok-prop">emoji: class="tok-val">';🛒', class="tok-prop">location: class="tok-val">';Feria de Palermo' }
947 },
948 {
949 class="tok-prop">location: class="tok-val">';🏘️ Edificio — Conociendo a los vecinos',
950 class="tok-prop">situation: class="tok-val">';Lorenzo sube a su departamento y en el ascensor se encuentra con su vecina, Doña Carmen, 70 años, porteña de toda la vida. Ella lo mira curiosa. Lorenzo quiere presentarse.',
951 lz_class="tok-prop">says: class="tok-val">';"Ciao— digo, hola. Yo soy Lorenzo. Yo vivir aquí ahora."',
952 lz_class="tok-prop">italian: class="tok-val">';(En class="tok-prop">italiano: class="tok-val">";Sono Lorenzo, abito qui adesso")',
953 class="tok-prop">question: class="tok-val">';¿Cómo se presenta correctamente?',
954 class="tok-prop">options: class="tok-val">[
955 { class="tok-prop">text: class="tok-val">';"Hola, me llamo Lorenzo y soy su nuevo vecino."', class="tok-prop">correct: class="tok-val">true },
956 { class="tok-prop">text: class="tok-val">';"Yo Lorenzo, nuevo aquí."', class="tok-prop">correct: class="tok-val">false },
957 { class="tok-prop">text: class="tok-val">';"Mi nombre es Lorenzo, yo vivir aquí."', class="tok-prop">correct: class="tok-val">false },
958 { class="tok-prop">text: class="tok-val">';"Lorenzo soy, vecino nuevo del piso."', class="tok-prop">correct: class="tok-val">false }
959 ],
960 feedback_class="tok-prop">good:class="tok-val"> {
961 class="tok-prop">icon: class="tok-val">';🏘️',
962 class="tok-prop">title: class="tok-val">';¡Doña Carmen queda encantada!',
963 class="tok-prop">text: class="tok-val">';Le estrecha la mano y class="tok-prop">dice: class="tok-val">class="tok-tag"><;strongclass="tok-attr">class="tok-tag">>"Ay, qué educado el italiano. Yo soy Carmen, cualquier cosa que necesites, tocás el timbre."class="tok-tag"></strongclass="tok-attr">class="tok-tag">> Lorenzo ya tiene su primera amiga porteña.'
964 },
965 feedback_class="tok-prop">bad:class="tok-val"> {
966 class="tok-prop">icon: class="tok-val">';🥰',
967 class="tok-prop">title: class="tok-val">';Doña Carmen igual lo adopta.',
968 class="tok-prop">text: class="tok-val">';La forma más natural es class="tok-tag"><strongclass="tok-attr">class="tok-tag">>"Hola, me llamo Lorenzo y soy su nuevo vecino."class="tok-tag"></strongclass="tok-attr">class="tok-tag">> Pero Doña Carmen ya lo invitó a tomar mate igual — los porteños tienen el corazón grande.'
969 },
970 class="tok-prop">recap:class="tok-val"> { class="tok-prop">emoji: class="tok-val">';🏘️', class="tok-prop">location: class="tok-val">';Vecinos del edificio' }
971 }
972 ];
973
974 class="tok-kw">let current = 0;
975 class="tok-kw">let score = 0;
976 class="tok-kw">let answered = false;
977 class="tok-kw">let results = [];
978
979 class="tok-kw">function startGame() {
980 current = 0; score = 0; answered = false; results = [];
981 loadScene(0);
982 showScreen('screen-game');
983 }
984
985 class="tok-kw">function showScreen(id) {
986 document.querySelectorAll('.screen').forEach(s => s.classList.remove('active'));
987 document.getElementById(id).classList.add('active');
988 }
989
990 class="tok-kw">function loadScene(idx) {
991 class="tok-kw">const s = scenes[idx];
992 answered = false;
993
994 document.getElementById('scene-location').textContent = s.location;
995 document.getElementById('scene-situation').textContent = s.situation;
996 document.getElementById('lz-text').textContent = s.lz_says;
997 document.getElementById('lz-italian').textContent = s.lz_italian;
998 document.getElementById('scene-badge').textContent = `Escena ${idx+1} de ${scenes.length}`;
999
1000 class="tok-kw">const pct = Math.round((idx / scenes.length) * 100);
1001 document.getElementById('prog-fill').style.width = pct + '%';
1002
1003 // Lives
1004 class="tok-kw">const livesEl = document.getElementById('lives-row');
1005 class="tok-kw">let stars = '';
1006 class="tok-kw">for (class="tok-kw">let i = 0; i < scenes.length; i++) {
1007 class="tok-kw">if (i < results.length) stars += results[i].correct ? '⭐' : '☆';
1008 class="tok-kw">else stars += '✦';
1009 }
1010 livesEl.textContent = stars;
1011
1012 // Options
1013 class="tok-kw">const grid = document.getElementById('options-grid');
1014 grid.innerHTML = '';
1015 class="tok-kw">const letters = ['A', 'B', 'C', 'D'];
1016 // Shuffle options
1017 class="tok-kw">const opts = [...s.options].sort(() => Math.random() - 0.5);
1018 opts.forEach((opt, i) => {
1019 class="tok-kw">const btn = document.createElement('button');
1020 btn.className = 'option-btn';
1021 btn.innerHTML = `class="tok-tag"><divclass="tok-attr"> class="option-letter"class="tok-tag">>${letters[i]}class="tok-tag"></divclass="tok-attr">class="tok-tag">>${opt.text}`;
1022 btn.onclick = () => selectOption(btn, opt.correct, s);
1023 grid.appendChild(btn);
1024 });
1025
1026 // Hide feedback & next
1027 class="tok-kw">const fb = document.getElementById('feedback-box');
1028 fb.className = 'feedback-box';
1029 document.getElementById('btn-next').className = 'btn-next';
1030 }
1031
1032 class="tok-kw">function selectOption(btn, correct, scene) {
1033 class="tok-kw">if (answered) class="tok-kw">return;
1034 answered = true;
1035
1036 class="tok-kw">const allBtns = document.querySelectorAll('.option-btn');
1037 allBtns.forEach(b => {
1038 b.disabled = true;
1039 class="tok-kw">if (b === btn) {
1040 b.classList.add(correct ? 'correct' : 'wrong');
1041 } class="tok-kw">else class="tok-kw">if (correct === false) {
1042 // highlight correct one
1043 class="tok-kw">const btnText = b.textContent.replace(/[ABCD]/,'').trim();
1044 class="tok-kw">const correctOpt = scene.options.find(o => o.correct);
1045 class="tok-kw">if (correctOpt && b.textContent.includes(correctOpt.text.substring(0, 10))) {
1046 b.classList.add('correct');
1047 }
1048 }
1049 });
1050
1051 results.push({ correct, scene });
1052 class="tok-kw">if (correct) score++;
1053
1054 // Feedback
1055 class="tok-kw">const fb = document.getElementById('feedback-box');
1056 class="tok-kw">const feed = correct ? scene.feedback_class="tok-prop">good : class="tok-val">scene.feedback_bad;
1057 document.getElementById('feedback-icon').textContent = feed.icon;
1058 document.getElementById('feedback-title').textContent = feed.title;
1059 document.getElementById('feedback-text').innerHTML = feed.text;
1060 fb.className = 'feedback-box show ' + (correct ? 'good' : 'bad');
1061
1062 // Next button
1063 document.getElementById('btn-next').className = 'btn-next show';
1064
1065 // Update stars
1066 class="tok-kw">const livesEl = document.getElementById('lives-row');
1067 class="tok-kw">let stars = '';
1068 class="tok-kw">for (class="tok-kw">let i = 0; i < scenes.length; i++) {
1069 class="tok-kw">if (i < results.length) stars += results[i].correct ? '⭐' : '☆';
1070 class="tok-kw">else stars += '✦';
1071 }
1072 livesEl.textContent = stars;
1073 }
1074
1075 class="tok-kw">function nextScene() {
1076 current++;
1077 class="tok-kw">if (current >= scenes.length) {
1078 setTimeout(showResult, 300);
1079 } class="tok-kw">else {
1080 loadScene(current);
1081 }
1082 }
1083
1084 class="tok-kw">function showResult() {
1085 class="tok-kw">const pct = Math.round((score / scenes.length) * 100);
1086 class="tok-kw">const missed = scenes.length - score;
1087
1088 document.getElementById('res-ok').textContent = score;
1089 document.getElementById('res-miss').textContent = missed;
1090 document.getElementById('res-pct').textContent = pct + '%';
1091 document.getElementById('prog-fill').style.width = '100%';
1092
1093 class="tok-kw">let emoji, title, msg;
1094 class="tok-kw">if (pct === 100) {
1095 emoji = '🏆';
1096 title = '¡Lorenzo conquistó Buenos Aires!';
1097 msg = 'Habló con el taxista, pidió su café, comió el mejor asado y ya tiene una vecina que lo quiere como a un hijo. El restaurante va a ser un éxito.';
1098 } class="tok-kw">else class="tok-kw">if (pct >= 60) {
1099 emoji = '🥩';
1100 title = 'Lorenzo sobrevivió su primer día';
1101 msg = 'Con algunas ayudas de los porteños, pero lo logró. Esta ciudad tiene esa magia — siempre hay alguien dispuesto a ayudar.';
1102 } class="tok-kw">else {
1103 emoji = '🌮';
1104 title = 'Buenos Aires lo recibió igual';
1105 msg = 'Lorenzo se perdió un poco, pero los porteños son generosos. Mañana será otro día — y otro café.';
1106 }
1107
1108 document.getElementById('res-emoji').textContent = emoji;
1109 document.getElementById('res-title').textContent = title;
1110 document.getElementById('res-msg').textContent = msg;
1111
1112 // Recap
1113 class="tok-kw">const list = document.getElementById('recap-list');
1114 list.innerHTML = '';
1115 results.forEach((r, i) => {
1116 class="tok-kw">const row = document.createElement('div');
1117 row.className = 'recap-row';
1118 row.style.animationDelay = (i * 0.15) + 's';
1119 row.innerHTML = `
1120 class="tok-tag"><divclass="tok-attr"> class="recap-scene"class="tok-tag">>${r.scene.recap.emoji}class="tok-tag"></divclass="tok-attr">class="tok-tag">>
1121 class="tok-tag"><divclass="tok-attr"> class="recap-location"class="tok-tag">>${r.scene.recap.location}class="tok-tag"></divclass="tok-attr">class="tok-tag">>
1122 class="tok-tag"><divclass="tok-attr"> class="recap-result"class="tok-tag">>${r.correct ? '⭐ Correcto' : '☆ Falló'}class="tok-tag"></divclass="tok-attr">class="tok-tag">>
1123 `;
1124 list.appendChild(row);
1125 });
1126
1127 showScreen('screen-result');
1128 }
1129
1130 class="tok-kw">function restartGame() {
1131 showScreen('screen-intro');
1132 }
1133 class="tok-tag"></scriptclass="tok-attr">class="tok-tag">>
1134 class="tok-tag"></bodyclass="tok-attr">class="tok-tag">>
1135 class="tok-tag"></htmlclass="tok-attr">class="tok-tag">>
1136