huylaughmad commited on
Commit
ea2e891
·
verified ·
1 Parent(s): 98ac556

Update templates/bfat.html

Browse files
Files changed (1) hide show
  1. templates/bfat.html +129 -228
templates/bfat.html CHANGED
@@ -3,7 +3,7 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Case Study - {{ case.title }} | TTL1979</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>
@@ -127,6 +127,17 @@
127
  scroll-snap-align: start;
128
  flex: 0 0 100%;
129
  }
 
 
 
 
 
 
 
 
 
 
 
130
  @media (max-width: 768px) {
131
  .parallax-bg {
132
  background-attachment: scroll;
@@ -176,21 +187,22 @@
176
  <a href="/lienhe" class="text-white text-2xl hover:text-teal-400 transition">Liên hệ</a>
177
  </div>
178
 
179
- <!-- Case Study Hero -->
180
  <section class="pt-32 pb-20 px-4">
181
  <div class="container mx-auto">
182
- {% if case %}
 
183
  <div class="flex flex-col md:flex-row items-center mb-12">
184
  <div class="md:w-1/2 mb-8 md:mb-0 md:pr-8">
185
- <span class="inline-block bg-gradient-to-r from-teal-500 to-blue-600 text-white px-4 py-1 rounded-full text-sm font-semibold mb-4">Case #{{ case.case_id }}</span>
186
- <h1 class="text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">{{ case.title }}</h1>
187
- <p class="text-xl text-gray-300 mb-6">{{ case.initial_condition }}</p>
188
  <div class="flex items-center">
189
  <div class="w-16 h-16 rounded-full overflow-hidden border-2 border-teal-500 mr-4">
190
- <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="Patient" class="w-full h-full object-cover">
191
  </div>
192
  <div>
193
- <h4 class="font-bold">{{ case.patient_name }}</h4>
194
  <p class="text-teal-400">Khách hàng hài lòng</p>
195
  </div>
196
  </div>
@@ -198,8 +210,8 @@
198
  <div class="md:w-1/2">
199
  <div class="bg-gradient-to-br from-teal-500 to-blue-600 p-1 rounded-2xl">
200
  <div class="case-comparison bg-black rounded-xl overflow-hidden">
201
- <img src="{{ case.before_image }}" alt="Before treatment" class="before-image">
202
- <img src="{{ case.after_image }}" alt="After treatment" class="after-image">
203
  <div class="comparison-slider"></div>
204
  <div class="absolute top-4 left-4 bg-black bg-opacity-70 text-white px-3 py-1 rounded-full text-sm">
205
  <i class="fas fa-arrow-left mr-1"></i> Trước
@@ -212,198 +224,132 @@
212
  </div>
213
  </div>
214
  <div class="flex flex-wrap justify-center gap-4 mb-12">
215
- <span class="bg-gray-800 text-teal-400 px-4 py-2 rounded-full font-medium">{{ case.treatment_method }}</span>
216
  <span class="bg-gray-800 text-blue-400 px-4 py-2 rounded-full font-medium">Thẩm mỹ</span>
217
  <span class="bg-gray-800 text-purple-400 px-4 py-2 rounded-full font-medium">Không đau</span>
218
- <span class="bg-gray-800 text-pink-400 px-4 py-2 rounded-full font-medium">{{ case.treatment_duration }}</span>
219
- </div>
220
- {% else %}
221
- <div class="text-center">
222
- <h1 class="text-4xl font-bold mb-6 text-gray-300">Chưa có dữ liệu ca điều trị</h1>
223
- <p class="text-xl text-gray-400">Vui lòng thêm dữ liệu vào dataset để hiển thị ca điều trị.</p>
224
  </div>
225
- {% endif %}
226
- </div>
227
- </section>
228
 
229
- <!-- Case Details -->
230
- <section class="py-16 px-4 bg-gray-900 bg-opacity-50">
231
- <div class="container mx-auto">
232
- <div class="grid grid-cols-1 lg:grid-cols-3 gap-12">
233
- <div class="lg:col-span-2">
234
- <h2 class="text-3xl font-bold mb-8 bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">Chi tiết ca điều trị</h2>
235
-
236
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-8 backdrop-filter backdrop-blur-sm">
237
- <h3 class="text-xl font-semibold mb-4 text-teal-400 flex items-center">
238
- <i class="fas fa-clipboard-list mr-2"></i> Tình trạng ban đầu
239
- </h3>
240
- <p class="text-gray-300 mb-4">{{ case.initial_condition }}</p>
241
- <ul class="list-disc pl-6 text-gray-300 space-y-2">
242
- {% for detail in case.initial_details.split(';') %}
243
- <li>{{ detail.strip() }}</li>
244
- {% endfor %}
245
- </ul>
246
- </div>
247
-
248
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-8 backdrop-filter backdrop-blur-sm">
249
- <h3 class="text-xl font-semibold mb-4 text-blue-400 flex items-center">
250
- <i class="fas fa-procedures mr-2"></i> Phương pháp điều trị
251
- </h3>
252
- <p class="text-gray-300 mb-4">{{ case.treatment_method }} với các ưu điểm:</p>
253
- <ul class="list-disc pl-6 text-gray-300 space-y-2">
254
- {% for benefit in case.treatment_benefits.split(';') %}
255
- <li>{{ benefit.strip() }}</li>
256
- {% endfor %}
257
- </ul>
258
- </div>
259
-
260
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 backdrop-filter backdrop-blur-sm">
261
- <h3 class="text-xl font-semibold mb-4 text-purple-400 flex items-center">
262
- <i class="fas fa-smile-beam mr-2"></i> Kết quả đạt được
263
- </h3>
264
- <p class="text-gray-300 mb-4">Sau khi hoàn thành điều trị, bệnh nhân đạt được:</p>
265
- <ul class="list-disc pl-6 text-gray-300 space-y-2">
266
- {% for result in case.results.split(';') %}
267
- <li>{{ result.strip() }}</li>
268
- {% endfor %}
269
- </ul>
270
- </div>
271
- </div>
272
-
273
- <div>
274
- <div class="sticky top-24">
275
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-6 backdrop-filter backdrop-blur-sm">
276
- <h3 class="text-xl font-semibold mb-4 border-b border-gray-700 pb-2">Thông tin ca điều trị</h3>
277
- <div class="space-y-4">
278
- <div>
279
- <p class="text-gray-400 text-sm">Bệnh nhân</p>
280
- <p class="font-medium">{{ case.patient_name }}</p>
281
- </div>
282
- <div>
283
- <p class="text-gray-400 text-sm">Tuổi</p>
284
- <p class="font-medium">{{ case.patient_age }}</p>
285
- </div>
286
- <div>
287
- <p class="text-gray-400 text-sm">Phương pháp</p>
288
- <p class="font-medium text-teal-400">{{ case.treatment_method }}</p>
289
- </div>
290
- <div>
291
- <p class="text-gray-400 text-sm">Số răng điều trị</p>
292
- <p class="font-medium">{{ case.num_teeth }}</p>
293
- </div>
294
- <div>
295
- <p class="text-gray-400 text-sm">Thời gian</p>
296
- <p class="font-medium">{{ case.treatment_duration }}</p>
297
- </div>
298
- <div>
299
- <p class="text-gray-400 text-sm">Độ bền</p>
300
- <p class="font-medium">{{ case.durability }}</p>
301
- </div>
302
  </div>
303
  </div>
304
 
305
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 backdrop-filter backdrop-blur-sm">
306
- <h3 class="text-xl font-semibold mb-4 border-b border-gray-700 pb-2">Bác sĩ điều trị</h3>
307
- <div class="flex items-center mb-4">
308
- <div class="w-16 h-16 rounded-full overflow-hidden border-2 border-blue-500 mr-4">
309
- <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Doctor" class="w-full h-full object-cover">
310
- </div>
311
- <div>
312
- <h4 class="font-bold">{{ case.doctor_name }}</h4>
313
- <p class="text-blue-400">Chuyên gia thẩm mỹ nha khoa</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
314
  </div>
315
  </div>
316
- <p class="text-gray-300 text-sm">{{ case.doctor_experience }}</p>
317
  </div>
318
  </div>
319
  </div>
320
- </div>
321
- </div>
322
- </section>
323
 
324
- <!-- Image Gallery Slider -->
325
- <section class="py-16 px-4 bg-black">
326
- <div class="container mx-auto">
327
- <h2 class="text-3xl font-bold mb-12 text-center bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">Hình ảnh điều trị</h2>
328
-
329
- <div class="relative">
330
- <div class="gallery-slider flex overflow-x-auto snap-x snap-mandatory scroll-smooth rounded-xl shadow-2xl" id="gallery-slider">
331
- {% for image in case.gallery_images.split(',') %}
332
- <div class="gallery-slide flex-shrink-0 w-full">
333
- <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
334
- <div class="bg-gray-900 rounded-xl overflow-hidden">
335
- <img src="{{ image.strip() }}" alt="Before treatment" class="w-full h-96 object-cover">
336
- <div class="p-4 bg-gray-800">
337
- <h4 class="font-semibold text-teal-400">Trước điều trị</h4>
338
- <p class="text-gray-400 text-sm">{{ ['Nhìn thẳng', 'Góc nghiêng', 'Cận cảnh'][loop.index0] }}</p>
339
  </div>
340
  </div>
341
- <div class="bg-gray-900 rounded-xl overflow-hidden">
342
- <img src="{{ image.strip() }}" alt="After treatment" class="w-full h-96 object-cover">
343
- <div class="p-4 bg-gray-800">
344
- <h4 class="font-semibold text-blue-400">Sau điều trị</h4>
345
- <p class="text-gray-400 text-sm">{{ ['Nhìn thẳng', 'Góc nghiêng', 'Cận cảnh'][loop.index0] }}</p>
 
 
346
  </div>
347
  </div>
348
  </div>
 
 
 
 
 
 
 
 
 
 
 
349
  </div>
350
- {% endfor %}
351
  </div>
352
-
353
- <div class="flex justify-center mt-6 space-x-2">
354
- {% for image in case.gallery_images.split(',') %}
355
- <button class="gallery-dot w-3 h-3 rounded-full bg-gray-700 hover:bg-gray-500 transition" data-slide="{{ loop.index0 }}"></button>
356
- {% endfor %}
357
- </div>
358
-
359
- <button class="absolute left-4 top-1/2 transform -translate-y-1/2 bg-black bg-opacity-70 text-white p-3 rounded-full hover:bg-opacity-90 transition" id="prev-slide">
360
- <i class="fas fa-chevron-left"></i>
361
- </button>
362
- <button class="absolute right-4 top-1/2 transform -translate-y-1/2 bg-black bg-opacity-70 text-white p-3 rounded-full hover:bg-opacity-90 transition" id="next-slide">
363
- <i class="fas fa-chevron-right"></i>
364
- </button>
365
  </div>
366
- </div>
367
- </section>
368
-
369
- <!-- Patient Testimonial -->
370
- <section class="py-16 px-4 bg-gradient-to-br from-gray-900 to-gray-800">
371
- <div class="container mx-auto max-w-4xl">
372
- <div class="bg-gray-800 bg-opacity-70 rounded-xl p-8 md:p-12 backdrop-filter backdrop-blur-sm">
373
- <div class="flex flex-col md:flex-row items-center mb-8">
374
- <div class="md:w-1/4 mb-6 md:mb-0 flex justify-center">
375
- <div class="w-32 h-32 rounded-full overflow-hidden border-4 border-teal-500">
376
- <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="Patient" class="w-full h-full object-cover">
377
- </div>
378
- </div>
379
- <div class="md:w-3/4 md:pl-8 text-center md:text-left">
380
- <h3 class="text-2xl font-bold mb-2">{{ case.patient_name }}</h3>
381
- <p class="text-teal-400 mb-4">Khách hàng hài lòng</p>
382
- <div class="flex justify-center md:justify-start space-x-1 text-yellow-400">
383
- <i class="fas fa-star"></i>
384
- <i class="fas fa-star"></i>
385
- <i class="fas fa-star"></i>
386
- <i class="fas fa-star"></i>
387
- <i class="fas fa-star"></i>
388
  </div>
389
  </div>
390
- </div>
391
-
392
- <div class="text-center">
393
- <blockquote class="text-xl italic mb-8">
394
- "{{ case.patient_testimonial }}"
395
- </blockquote>
396
-
397
- <div class="flex justify-center space-x-4">
398
- <button class="bg-teal-600 hover:bg-teal-700 text-white px-6 py-3 rounded-full font-medium transition flex items-center">
399
- <i class="fas fa-calendar-check mr-2"></i> Đặt lịch ngay
400
- </button>
401
- <button class="bg-transparent border-2 border-teal-500 text-teal-400 hover:bg-teal-900 hover:bg-opacity-30 px-6 py-3 rounded-full font-medium transition flex items-center">
402
- <i class="fas fa-phone-alt mr-2"></i> 0901.234.567
403
- </button>
404
  </div>
405
- </div>
 
 
 
 
 
 
406
  </div>
 
 
407
  </div>
408
  </section>
409
 
@@ -469,17 +415,17 @@
469
  <div>
470
  <h4 class="text-lg font-semibold mb-4 text-white border-b border-gray-800 pb-2">Đăng ký nhận tin</h4>
471
  <p class="text-gray-400 mb-4">Nhận thông tin ưu đãi và kiến thức nha khoa hữu ích.</p>
472
- <form class="flex">
473
  <input type="email" placeholder="Email của bạn" class="bg-gray-900 text-white px-4 py-2 rounded-l-lg focus:outline-none focus:ring-2 focus:ring-teal-500 w-full">
474
  <button type="submit" class="bg-teal-600 hover:bg-teal-700 text-white px-4 py-2 rounded-r-lg">
475
  <i class="fas fa-paper-plane"></i>
476
  </button>
477
- </form>
478
  </div>
479
  </div>
480
 
481
  <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center">
482
- <p class="text-gray-500 text-sm mb-4 md:mb-0">© 2023 TTL1979. All rights reserved.</p>
483
  <div class="flex space-x-6">
484
  <a href="#" class="text-gray-500 hover:text-teal-400 text-sm transition">Chính sách bảo mật</a>
485
  <a href="#" class="text-gray-500 hover:text-teal-400 text-sm transition">Điều khoản sử dụng</a>
@@ -505,7 +451,8 @@
505
  mobileMenu.classList.remove('flex');
506
  });
507
 
508
- // Before/After slider
 
509
  const slider = document.querySelector('.comparison-slider');
510
  const beforeImage = document.querySelector('.before-image');
511
  let isDragging = false;
@@ -547,53 +494,7 @@
547
  beforeImage.style.clipPath = `polygon(0 0, ${percentage}% 0, ${percentage}% 100%, 0% 100%)`;
548
  slider.style.left = `${percentage}%`;
549
  }
550
-
551
- // Image gallery slider
552
- const gallerySlider = document.getElementById('gallery-slider');
553
- const prevSlide = document.getElementById('prev-slide');
554
- const nextSlide = document.getElementById('next-slide');
555
- const dots = document.querySelectorAll('.gallery-dot');
556
- let currentSlide = 0;
557
-
558
- function goToSlide(index) {
559
- currentSlide = index;
560
- gallerySlider.scrollTo({
561
- left: gallerySlider.offsetWidth * index,
562
- behavior: 'smooth'
563
- });
564
- updateDots();
565
- }
566
-
567
- function updateDots() {
568
- dots.forEach((dot, index) => {
569
- if (index === currentSlide) {
570
- dot.classList.add('bg-teal-500');
571
- dot.classList.remove('bg-gray-700');
572
- } else {
573
- dot.classList.add('bg-gray-700');
574
- dot.classList.remove('bg-teal-500');
575
- }
576
- });
577
- }
578
-
579
- prevSlide.addEventListener('click', () => {
580
- currentSlide = (currentSlide - 1 + dots.length) % dots.length;
581
- goToSlide(currentSlide);
582
- });
583
-
584
- nextSlide.addEventListener('click', () => {
585
- currentSlide = (currentSlide + 1) % dots.length;
586
- goToSlide(currentSlide);
587
- });
588
-
589
- dots.forEach((dot, index) => {
590
- dot.addEventListener('click', () => {
591
- goToSlide(index);
592
- });
593
- });
594
-
595
- // Initialize
596
- updateDots();
597
  </script>
598
  </body>
599
  </html>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Before & After | TTL1979</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>
 
127
  scroll-snap-align: start;
128
  flex: 0 0 100%;
129
  }
130
+ .case-card {
131
+ position: relative;
132
+ overflow: hidden;
133
+ border-radius: 8px;
134
+ box-shadow: 0 4px 6px rgba(0,0,0,0.5);
135
+ transition: all 0.3s ease;
136
+ }
137
+ .case-card:hover {
138
+ transform: translateY(-5px);
139
+ box-shadow: 0 10px 15px rgba(0,0,0,0.7);
140
+ }
141
  @media (max-width: 768px) {
142
  .parallax-bg {
143
  background-attachment: scroll;
 
187
  <a href="/lienhe" class="text-white text-2xl hover:text-teal-400 transition">Liên hệ</a>
188
  </div>
189
 
190
+ <!-- Main Content -->
191
  <section class="pt-32 pb-20 px-4">
192
  <div class="container mx-auto">
193
+ {% if selected_case %}
194
+ <!-- Case Study Hero -->
195
  <div class="flex flex-col md:flex-row items-center mb-12">
196
  <div class="md:w-1/2 mb-8 md:mb-0 md:pr-8">
197
+ <span class="inline-block bg-gradient-to-r from-teal-500 to-blue-600 text-white px-4 py-1 rounded-full text-sm font-semibold mb-4">Case #{{ selected_case.case_id }}</span>
198
+ <h1 class="text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">{{ selected_case.title }}</h1>
199
+ <p class="text-xl text-gray-300 mb-6">{{ selected_case.description }}</p>
200
  <div class="flex items-center">
201
  <div class="w-16 h-16 rounded-full overflow-hidden border-2 border-teal-500 mr-4">
202
+ <img src="{{ selected_case.patient_avatar or 'https://randomuser.me/api/portraits/women/44.jpg' }}" alt="Patient" class="w-full h-full object-cover">
203
  </div>
204
  <div>
205
+ <h4 class="font-bold">{{ selected_case.patient_name }}</h4>
206
  <p class="text-teal-400">Khách hàng hài lòng</p>
207
  </div>
208
  </div>
 
210
  <div class="md:w-1/2">
211
  <div class="bg-gradient-to-br from-teal-500 to-blue-600 p-1 rounded-2xl">
212
  <div class="case-comparison bg-black rounded-xl overflow-hidden">
213
+ <img src="{{ selected_case.before_image }}" alt="Before treatment" class="before-image">
214
+ <img src="{{ selected_case.after_image }}" alt="After treatment" class="after-image">
215
  <div class="comparison-slider"></div>
216
  <div class="absolute top-4 left-4 bg-black bg-opacity-70 text-white px-3 py-1 rounded-full text-sm">
217
  <i class="fas fa-arrow-left mr-1"></i> Trước
 
224
  </div>
225
  </div>
226
  <div class="flex flex-wrap justify-center gap-4 mb-12">
227
+ <span class="bg-gray-800 text-teal-400 px-4 py-2 rounded-full font-medium">{{ selected_case.treatment }}</span>
228
  <span class="bg-gray-800 text-blue-400 px-4 py-2 rounded-full font-medium">Thẩm mỹ</span>
229
  <span class="bg-gray-800 text-purple-400 px-4 py-2 rounded-full font-medium">Không đau</span>
230
+ <span class="bg-gray-800 text-pink-400 px-4 py-2 rounded-full font-medium">{{ selected_case.duration or 'N/A' }}</span>
 
 
 
 
 
231
  </div>
 
 
 
232
 
233
+ <!-- Case Details -->
234
+ <section class="py-16 px-4 bg-gray-900 bg-opacity-50">
235
+ <div class="container mx-auto">
236
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-12">
237
+ <div class="lg:col-span-2">
238
+ <h2 class="text-3xl font-bold mb-8 bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">Chi tiết ca điều trị</h2>
239
+
240
+ <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-8 backdrop-filter backdrop-blur-sm">
241
+ <h3 class="text-xl font-semibold mb-4 text-teal-400 flex items-center">
242
+ <i class="fas fa-clipboard-list mr-2"></i> tả ca điều trị
243
+ </h3>
244
+ <p class="text-gray-300 mb-4">{{ selected_case.description }}</p>
245
+ </div>
246
+
247
+ <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-8 backdrop-filter backdrop-blur-sm">
248
+ <h3 class="text-xl font-semibold mb-4 text-blue-400 flex items-center">
249
+ <i class="fas fa-procedures mr-2"></i> Phương pháp điều trị
250
+ </h3>
251
+ <p class="text-gray-300 mb-4">{{ selected_case.treatment }}</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
252
  </div>
253
  </div>
254
 
255
+ <div>
256
+ <div class="sticky top-24">
257
+ <div class="bg-gray-800 bg-opacity-70 rounded-xl p-6 mb-6 backdrop-filter backdrop-blur-sm">
258
+ <h3 class="text-xl font-semibold mb-4 border-b border-gray-700 pb-2">Thông tin ca điều trị</h3>
259
+ <div class="space-y-4">
260
+ <div>
261
+ <p class="text-gray-400 text-sm">Bệnh nhân</p>
262
+ <p class="font-medium">{{ selected_case.patient_name }}</p>
263
+ </div>
264
+ <div>
265
+ <p class="text-gray-400 text-sm">Tuổi</p>
266
+ <p class="font-medium">{{ selected_case.patient_age }}</p>
267
+ </div>
268
+ <div>
269
+ <p class="text-gray-400 text-sm">Phương pháp</p>
270
+ <p class="font-medium text-teal-400">{{ selected_case.treatment }}</p>
271
+ </div>
272
+ <div>
273
+ <p class="text-gray-400 text-sm">Thời gian</p>
274
+ <p class="font-medium">{{ selected_case.duration or 'N/A' }}</p>
275
+ </div>
276
+ <div>
277
+ <p class="text-gray-400 text-sm">Số lần thăm khám</p>
278
+ <p class="font-medium">{{ selected_case.visits or 'N/A' }}</p>
279
+ </div>
280
+ </div>
281
  </div>
282
  </div>
 
283
  </div>
284
  </div>
285
  </div>
286
+ </section>
 
 
287
 
288
+ <!-- Patient Testimonial -->
289
+ <section class="py-16 px-4 bg-gradient-to-br from-gray-900 to-gray-800">
290
+ <div class="container mx-auto max-w-4xl">
291
+ <div class="bg-gray-800 bg-opacity-70 rounded-xl p-8 md:p-12 backdrop-filter backdrop-blur-sm">
292
+ <div class="flex flex-col md:flex-row items-center mb-8">
293
+ <div class="md:w-1/4 mb-6 md:mb-0 flex justify-center">
294
+ <div class="w-32 h-32 rounded-full overflow-hidden border-4 border-teal-500">
295
+ <img src="{{ selected_case.patient_avatar or 'https://randomuser.me/api/portraits/women/44.jpg' }}" alt="Patient" class="w-full h-full object-cover">
 
 
 
 
 
 
 
296
  </div>
297
  </div>
298
+ <div class="md:w-3/4 md:pl-8 text-center md:text-left">
299
+ <h3 class="text-2xl font-bold mb-2">{{ selected_case.patient_name }}</h3>
300
+ <p class="text-teal-400 mb-4">Khách hàng hài lòng</p>
301
+ <div class="flex justify-center md:justify-start space-x-1 text-yellow-400">
302
+ {% for _ in range(selected_case.patient_rating | int) %}
303
+ <i class="fas fa-star"></i>
304
+ {% endfor %}
305
  </div>
306
  </div>
307
  </div>
308
+
309
+ <div class="text-center">
310
+ <div class="flex justify-center space-x-4">
311
+ <button class="bg-teal-600 hover:bg-teal-700 text-white px-6 py-3 rounded-full font-medium transition flex items-center">
312
+ <i class="fas fa-calendar-check mr-2"></i> Đặt lịch ngay
313
+ </button>
314
+ <button class="bg-transparent border-2 border-teal-500 text-teal-400 hover:bg-teal-900 hover:bg-opacity-30 px-6 py-3 rounded-full font-medium transition flex items-center">
315
+ <i class="fas fa-phone-alt mr-2"></i> 0901.234.567
316
+ </button>
317
+ </div>
318
+ </div>
319
  </div>
 
320
  </div>
321
+ </section>
322
+ {% else %}
323
+ <!-- Case Studies List -->
324
+ <div class="text-center mb-12">
325
+ <h1 class="text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">Before & After</h1>
326
+ <p class="text-xl text-gray-300">Xem các ca điều trị thành công của chúng tôi</p>
 
 
 
 
 
 
 
327
  </div>
328
+ {% if cases %}
329
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
330
+ {% for case in cases %}
331
+ <a href="/bfat/{{ case.id }}" class="case-card bg-gray-800 rounded-xl overflow-hidden">
332
+ <div class="relative">
333
+ <img src="{{ case.before_image }}" alt="{{ case.title }}" class="w-full h-64 object-cover">
334
+ <div class="absolute inset-0 bg-black bg-opacity-50 flex items-center justify-center">
335
+ <span class="text-white text-lg font-semibold">Trước & Sau</span>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  </div>
337
  </div>
338
+ <div class="p-4">
339
+ <h3 class="text-xl font-bold mb-2 text-teal-400">{{ case.title }}</h3>
340
+ <p class="text-gray-400 mb-2">{{ case.treatment }}</p>
341
+ <p class="text-sm text-gray-500">{{ case.date }}</p>
 
 
 
 
 
 
 
 
 
 
342
  </div>
343
+ </a>
344
+ {% endfor %}
345
+ </div>
346
+ {% else %}
347
+ <div class="text-center">
348
+ <h1 class="text-4xl font-bold mb-6 text-gray-300">Chưa có dữ liệu ca điều trị</h1>
349
+ <p class="text-xl text-gray-400">Vui lòng thêm dữ liệu vào dataset để hiển thị ca điều trị.</p>
350
  </div>
351
+ {% endif %}
352
+ {% endif %}
353
  </div>
354
  </section>
355
 
 
415
  <div>
416
  <h4 class="text-lg font-semibold mb-4 text-white border-b border-gray-800 pb-2">Đăng ký nhận tin</h4>
417
  <p class="text-gray-400 mb-4">Nhận thông tin ưu đãi và kiến thức nha khoa hữu ích.</p>
418
+ <div class="flex">
419
  <input type="email" placeholder="Email của bạn" class="bg-gray-900 text-white px-4 py-2 rounded-l-lg focus:outline-none focus:ring-2 focus:ring-teal-500 w-full">
420
  <button type="submit" class="bg-teal-600 hover:bg-teal-700 text-white px-4 py-2 rounded-r-lg">
421
  <i class="fas fa-paper-plane"></i>
422
  </button>
423
+ </div>
424
  </div>
425
  </div>
426
 
427
  <div class="border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center">
428
+ <p class="text-gray-500 text-sm mb-4 md:mb-0">© 2025 TTL1979. All rights reserved.</p>
429
  <div class="flex space-x-6">
430
  <a href="#" class="text-gray-500 hover:text-teal-400 text-sm transition">Chính sách bảo mật</a>
431
  <a href="#" class="text-gray-500 hover:text-teal-400 text-sm transition">Điều khoản sử dụng</a>
 
451
  mobileMenu.classList.remove('flex');
452
  });
453
 
454
+ // Before/After slider (only if a case is selected)
455
+ {% if selected_case %}
456
  const slider = document.querySelector('.comparison-slider');
457
  const beforeImage = document.querySelector('.before-image');
458
  let isDragging = false;
 
494
  beforeImage.style.clipPath = `polygon(0 0, ${percentage}% 0, ${percentage}% 100%, 0% 100%)`;
495
  slider.style.left = `${percentage}%`;
496
  }
497
+ {% endif %}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
498
  </script>
499
  </body>
500
  </html>