{"ok":true,"type":"report","theme":1,"theme_name":"کلاسیک","available_themes":[{"id":1,"name":"کلاسیک","description":"تیره با گرادیانت بنفش/طلایی"},{"id":2,"name":"مدرن","description":"روشن و مینیمال با آبی/صورتی"},{"id":3,"name":"خلاق","description":"رنگی با گرادیانت بنفش/فیروزه‌ای"},{"id":4,"name":"حرفه‌ای","description":"سرمه‌ای/طلایی شرکتی"}],"required_fields":["title","subtitle","date","author","summary","sections[] {heading, body}","highlights[]"],"sample_data":{"title":"گزارش هفتگی عملکرد سامانه","subtitle":"شاخص‌های کلیدی، پایش سلامت سرویس و رویدادهای مهم","date":"1403/12/20","author":"تیم عملیات Mia","summary":"در این هفته زمان در دسترس بودن 99.93% ثبت شد، سه هشدار زیرساختی رخ داد که هر سه در کمتر از 15 دقیقه بسته شدند. روند رشد ترافیک نسبت به هفته قبل 8% افزایش داشت.","highlights":["میانگین تاخیر درخواست‌ها 120ms (بهبود 6ms نسبت به هفته قبل)","سه هشدار CPU روی گره‌های غرب؛ علت: spike ترافیک، حل با autoscale","اضافه شدن اندپوینت templates.php برای تولید HTML"],"sections":[{"heading":"دسترسی و پایداری","body":"زمان در دسترس بودن (uptime) در 7 روز گذشته 99.93% بوده است. بیشترین قطعی 4 دقیقه بر اثر deploy سرویس جستجو."},{"heading":"کارایی","body":"میانگین تاخیر P50=120ms، P95=380ms. سه اسپایک کوتاه در ساعات 12 و 20 مشاهده شد که با warmup رفع شد."},{"heading":"اقدامات بعدی","body":"بهینه‌سازی cache-layer برای جستجو تصویر، اضافه‌کردن health-check فعال برای سرویس scrape."}]},"css":"@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;800&display=swap');\r\n\r\n* { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n:root {\r\n  --primary: #6366f1;\r\n  --primary-dark: #4f46e5;\r\n  --primary-light: #a5b4fc;\r\n  --accent: #f59e0b;\r\n  --success: #10b981;\r\n  --danger: #ef4444;\r\n  --bg-main: #0f172a;\r\n  --bg-card: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);\r\n  --bg-glass: rgba(30, 41, 59, 0.7);\r\n  --text-primary: #f1f5f9;\r\n  --text-secondary: #94a3b8;\r\n  --text-muted: #64748b;\r\n  --border: rgba(148, 163, 184, 0.15);\r\n  --shadow-soft: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\r\n  --shadow-glow: 0 0 40px rgba(99, 102, 241, 0.15);\r\n}\r\n\r\nbody {\r\n  font-family: 'Vazirmatn', 'Tahoma', sans-serif;\r\n\r\n  background: var(--bg-main);\r\n  background-image: \r\n    radial-gradient(ellipse at 20% 0%, rgba(99, 102, 241, 0.15) 0%, transparent 50%),\r\n    radial-gradient(ellipse at 80% 100%, rgba(245, 158, 11, 0.1) 0%, transparent 50%);\r\n  min-height: 100vh;\r\n  color: var(--text-primary);\r\n  padding: 32px 16px;\r\n  line-height: 1.8;\r\n  direction: rtl;\r\n}\r\n\r\n.card {\r\n  max-width: 900px;\r\n  margin: 0 auto 32px;\r\n  background: var(--bg-card);\r\n  border: 1px solid var(--border);\r\n  border-radius: 24px;\r\n  padding: 32px 36px;\r\n  box-shadow: var(--shadow-soft), var(--shadow-glow);\r\n  backdrop-filter: blur(10px);\r\n  position: relative;\r\n  overflow: hidden;\r\n}\r\n\r\n.card::before {\r\n  content: '';\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  right: 0;\r\n  height: 4px;\r\n  background: linear-gradient(90deg, var(--primary), var(--accent), var(--primary));\r\n  background-size: 200% 100%;\r\n  animation: shimmer 3s ease-in-out infinite;\r\n}\r\n\r\n@keyframes shimmer {\r\n  0%, 100% { background-position: 0% 50%; }\r\n  50% { background-position: 100% 50%; }\r\n}\r\n\r\n.header {\r\n  display: flex;\r\n  align-items: flex-start;\r\n  justify-content: space-between;\r\n  gap: 20px;\r\n  padding-bottom: 24px;\r\n  margin-bottom: 24px;\r\n  border-bottom: 1px solid var(--border);\r\n  position: relative;\r\n}\r\n\r\n.title {\r\n  margin: 0;\r\n  font-size: 28px;\r\n  font-weight: 800;\r\n  background: linear-gradient(135deg, var(--text-primary) 0%, var(--primary-light) 100%);\r\n  -webkit-background-clip: text;\r\n  -webkit-text-fill-color: transparent;\r\n  background-clip: text;\r\n  letter-spacing: -0.5px;\r\n}\r\n\r\n.subtitle {\r\n  margin: 8px 0 0;\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  font-weight: 400;\r\n  line-height: 1.6;\r\n}\r\n\r\n.meta {\r\n  color: var(--text-muted);\r\n  font-size: 13px;\r\n  margin-top: 12px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 8px;\r\n  flex-wrap: wrap;\r\n}\r\n\r\n.meta span {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 4px;\r\n}\r\n\r\n.meta span::before {\r\n  content: '•';\r\n  color: var(--primary);\r\n  margin-left: 8px;\r\n}\r\n\r\n.meta span:first-child::before {\r\n  display: none;\r\n}\r\n\r\n.badge {\r\n  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);\r\n  color: #fff;\r\n  padding: 10px 20px;\r\n  border-radius: 50px;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n  letter-spacing: 0.5px;\r\n  text-transform: uppercase;\r\n  box-shadow: 0 4px 15px rgba(99, 102, 241, 0.4);\r\n  white-space: nowrap;\r\n}\r\n\r\n.badge.invoice { background: linear-gradient(135deg, #10b981 0%, #059669 100%); box-shadow: 0 4px 15px rgba(16, 185, 129, 0.4); }\r\n.badge.report { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4); }\r\n.badge.article { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); box-shadow: 0 4px 15px rgba(245, 158, 11, 0.4); }\r\n.badge.book { background: linear-gradient(135deg, #8b5cf6 0%, #6d28d9 100%); box-shadow: 0 4px 15px rgba(139, 92, 246, 0.4); }\r\n\r\ntable {\r\n  width: 100%;\r\n  border-collapse: separate;\r\n  border-spacing: 0;\r\n  margin-top: 20px;\r\n  border-radius: 16px;\r\n  overflow: hidden;\r\n  border: 1px solid var(--border);\r\n}\r\n\r\nth, td {\r\n  padding: 16px 18px;\r\n  text-align: right;\r\n}\r\n\r\nth {\r\n  background: rgba(99, 102, 241, 0.1);\r\n  font-weight: 600;\r\n  color: var(--primary-light);\r\n  font-size: 14px;\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.5px;\r\n}\r\n\r\ntd {\r\n  background: var(--bg-glass);\r\n  border-top: 1px solid var(--border);\r\n  color: var(--text-primary);\r\n  font-size: 15px;\r\n}\r\n\r\ntr:hover td {\r\n  background: rgba(99, 102, 241, 0.05);\r\n}\r\n\r\n.total-row {\r\n  background: linear-gradient(135deg, rgba(99, 102, 241, 0.2) 0%, rgba(99, 102, 241, 0.05) 100%) !important;\r\n}\r\n\r\n.total {\r\n  text-align: left;\r\n  font-size: 22px;\r\n  font-weight: 700;\r\n  color: var(--success);\r\n  margin-top: 16px;\r\n  padding: 16px 20px;\r\n  background: rgba(16, 185, 129, 0.1);\r\n  border-radius: 12px;\r\n  border: 1px solid rgba(16, 185, 129, 0.2);\r\n}\r\n\r\n.section {\r\n  margin-top: 28px;\r\n  padding-top: 24px;\r\n  border-top: 1px solid var(--border);\r\n}\r\n\r\n.section:first-of-type {\r\n  border-top: none;\r\n  padding-top: 0;\r\n}\r\n\r\n.section h3 {\r\n  margin: 0 0 16px;\r\n  font-size: 18px;\r\n  font-weight: 700;\r\n  color: var(--text-primary);\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 10px;\r\n}\r\n\r\n.section h3::before {\r\n  content: '';\r\n  width: 4px;\r\n  height: 20px;\r\n  background: linear-gradient(180deg, var(--primary), var(--accent));\r\n  border-radius: 4px;\r\n}\r\n\r\n.section p {\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  line-height: 1.9;\r\n}\r\n\r\n.chip {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  background: rgba(99, 102, 241, 0.15);\r\n  color: var(--primary-light);\r\n  padding: 8px 14px;\r\n  border-radius: 50px;\r\n  margin: 6px 0 6px 10px;\r\n  font-size: 13px;\r\n  font-weight: 500;\r\n  border: 1px solid rgba(99, 102, 241, 0.2);\r\n  transition: all 0.2s ease;\r\n}\r\n\r\n.chip:hover {\r\n  background: rgba(99, 102, 241, 0.25);\r\n  transform: translateY(-2px);\r\n}\r\n\r\n.quote {\r\n  position: relative;\r\n  padding: 20px 24px;\r\n  padding-right: 28px;\r\n  margin: 24px 0;\r\n  background: linear-gradient(135deg, rgba(139, 92, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%);\r\n  border-radius: 16px;\r\n  border: 1px solid rgba(139, 92, 246, 0.2);\r\n  color: var(--text-secondary);\r\n  font-style: italic;\r\n  font-size: 16px;\r\n  line-height: 1.8;\r\n}\r\n\r\n.quote::before {\r\n  content: '\"';\r\n  position: absolute;\r\n  right: 16px;\r\n  top: 8px;\r\n  font-size: 48px;\r\n  color: rgba(139, 92, 246, 0.3);\r\n  font-family: Georgia, serif;\r\n  line-height: 1;\r\n}\r\n\r\n.toc {\r\n  list-style: none;\r\n  padding: 0;\r\n  margin: 0;\r\n  counter-reset: toc-counter;\r\n}\r\n\r\n.toc li {\r\n  counter-increment: toc-counter;\r\n  padding: 14px 18px;\r\n  margin: 8px 0;\r\n  background: var(--bg-glass);\r\n  border-radius: 12px;\r\n  border: 1px solid var(--border);\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n  transition: all 0.2s ease;\r\n}\r\n\r\n.toc li::before {\r\n  content: counter(toc-counter);\r\n  width: 32px;\r\n  height: 32px;\r\n  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);\r\n  color: #fff;\r\n  border-radius: 50%;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  font-size: 14px;\r\n  font-weight: 600;\r\n  flex-shrink: 0;\r\n}\r\n\r\n.toc li:hover {\r\n  background: rgba(99, 102, 241, 0.1);\r\n  border-color: rgba(99, 102, 241, 0.3);\r\n  transform: translateX(-4px);\r\n}\r\n\r\n.cover-image {\r\n  width: 100%;\r\n  border-radius: 16px;\r\n  margin: 20px 0;\r\n  object-fit: cover;\r\n  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);\r\n  border: 1px solid var(--border);\r\n}\r\n\r\n.summary-box {\r\n  background: var(--bg-glass);\r\n  border: 1px solid var(--border);\r\n  border-radius: 16px;\r\n  padding: 20px 24px;\r\n  margin: 16px 0;\r\n}\r\n\r\n.summary-box p {\r\n  margin: 0;\r\n}\r\n\r\n.info-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\r\n  gap: 16px;\r\n  margin: 16px 0;\r\n}\r\n\r\n.info-item {\r\n  background: var(--bg-glass);\r\n  border: 1px solid var(--border);\r\n  border-radius: 12px;\r\n  padding: 16px 20px;\r\n}\r\n\r\n.info-item label {\r\n  display: block;\r\n  font-size: 12px;\r\n  color: var(--text-muted);\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.5px;\r\n  margin-bottom: 6px;\r\n}\r\n\r\n.info-item span {\r\n  font-size: 16px;\r\n  font-weight: 600;\r\n  color: var(--text-primary);\r\n}\r\n\r\n@media (max-width: 640px) {\r\n  body { padding: 16px 12px; }\r\n  .card { padding: 24px 20px; border-radius: 20px; }\r\n  .title { font-size: 22px; }\r\n  .header { flex-direction: column; align-items: stretch; gap: 16px; }\r\n  .badge { align-self: flex-start; }\r\n  th, td { padding: 12px 14px; font-size: 14px; }\r\n  .total { font-size: 18px; }\r\n}\r\n\r\n@media print {\r\n  body { background: #fff; color: #000; }\r\n  .card { box-shadow: none; border: 1px solid #ddd; background: #fff; }\r\n  .title { -webkit-text-fill-color: #000; color: #000; }\r\n  th { background: #f3f4f6; color: #000; }\r\n  td { background: #fff; color: #000; }\r\n  .section p, .meta, .subtitle { color: #333; }\r\n}","html":"<!DOCTYPE html>\r\n<html lang=\"fa\" dir=\"rtl\">\r\n<head>\r\n  <meta charset=\"utf-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n  <meta name=\"theme-color\" content=\"#0f172a\">\r\n  <title>گزارش | Mia Templates</title>\r\n  <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\r\n  <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\r\n  <link href=\"https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;800&display=swap\" rel=\"stylesheet\">\r\n  <style>@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;600;700;800&display=swap');\r\n\r\n* { box-sizing: border-box; margin: 0; padding: 0; }\r\n\r\n:root {\r\n  --primary: #6366f1;\r\n  --primary-dark: #4f46e5;\r\n  --primary-light: #a5b4fc;\r\n  --accent: #f59e0b;\r\n  --success: #10b981;\r\n  --danger: #ef4444;\r\n  --bg-main: #0f172a;\r\n  --bg-card: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);\r\n  --bg-glass: rgba(30, 41, 59, 0.7);\r\n  --text-primary: #f1f5f9;\r\n  --text-secondary: #94a3b8;\r\n  --text-muted: #64748b;\r\n  --border: rgba(148, 163, 184, 0.15);\r\n  --shadow-soft: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\r\n  --shadow-glow: 0 0 40px rgba(99, 102, 241, 0.15);\r\n}\r\n\r\nbody {\r\n  font-family: 'Vazirmatn', 'Tahoma', sans-serif;\r\n\r\n  background: var(--bg-main);\r\n  background-image: \r\n    radial-gradient(ellipse at 20% 0%, rgba(99, 102, 241, 0.15) 0%, transparent 50%),\r\n    radial-gradient(ellipse at 80% 100%, rgba(245, 158, 11, 0.1) 0%, transparent 50%);\r\n  min-height: 100vh;\r\n  color: var(--text-primary);\r\n  padding: 32px 16px;\r\n  line-height: 1.8;\r\n  direction: rtl;\r\n}\r\n\r\n.card {\r\n  max-width: 900px;\r\n  margin: 0 auto 32px;\r\n  background: var(--bg-card);\r\n  border: 1px solid var(--border);\r\n  border-radius: 24px;\r\n  padding: 32px 36px;\r\n  box-shadow: var(--shadow-soft), var(--shadow-glow);\r\n  backdrop-filter: blur(10px);\r\n  position: relative;\r\n  overflow: hidden;\r\n}\r\n\r\n.card::before {\r\n  content: '';\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  right: 0;\r\n  height: 4px;\r\n  background: linear-gradient(90deg, var(--primary), var(--accent), var(--primary));\r\n  background-size: 200% 100%;\r\n  animation: shimmer 3s ease-in-out infinite;\r\n}\r\n\r\n@keyframes shimmer {\r\n  0%, 100% { background-position: 0% 50%; }\r\n  50% { background-position: 100% 50%; }\r\n}\r\n\r\n.header {\r\n  display: flex;\r\n  align-items: flex-start;\r\n  justify-content: space-between;\r\n  gap: 20px;\r\n  padding-bottom: 24px;\r\n  margin-bottom: 24px;\r\n  border-bottom: 1px solid var(--border);\r\n  position: relative;\r\n}\r\n\r\n.title {\r\n  margin: 0;\r\n  font-size: 28px;\r\n  font-weight: 800;\r\n  background: linear-gradient(135deg, var(--text-primary) 0%, var(--primary-light) 100%);\r\n  -webkit-background-clip: text;\r\n  -webkit-text-fill-color: transparent;\r\n  background-clip: text;\r\n  letter-spacing: -0.5px;\r\n}\r\n\r\n.subtitle {\r\n  margin: 8px 0 0;\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  font-weight: 400;\r\n  line-height: 1.6;\r\n}\r\n\r\n.meta {\r\n  color: var(--text-muted);\r\n  font-size: 13px;\r\n  margin-top: 12px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 8px;\r\n  flex-wrap: wrap;\r\n}\r\n\r\n.meta span {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  gap: 4px;\r\n}\r\n\r\n.meta span::before {\r\n  content: '•';\r\n  color: var(--primary);\r\n  margin-left: 8px;\r\n}\r\n\r\n.meta span:first-child::before {\r\n  display: none;\r\n}\r\n\r\n.badge {\r\n  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);\r\n  color: #fff;\r\n  padding: 10px 20px;\r\n  border-radius: 50px;\r\n  font-size: 13px;\r\n  font-weight: 600;\r\n  letter-spacing: 0.5px;\r\n  text-transform: uppercase;\r\n  box-shadow: 0 4px 15px rgba(99, 102, 241, 0.4);\r\n  white-space: nowrap;\r\n}\r\n\r\n.badge.invoice { background: linear-gradient(135deg, #10b981 0%, #059669 100%); box-shadow: 0 4px 15px rgba(16, 185, 129, 0.4); }\r\n.badge.report { background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%); box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4); }\r\n.badge.article { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); box-shadow: 0 4px 15px rgba(245, 158, 11, 0.4); }\r\n.badge.book { background: linear-gradient(135deg, #8b5cf6 0%, #6d28d9 100%); box-shadow: 0 4px 15px rgba(139, 92, 246, 0.4); }\r\n\r\ntable {\r\n  width: 100%;\r\n  border-collapse: separate;\r\n  border-spacing: 0;\r\n  margin-top: 20px;\r\n  border-radius: 16px;\r\n  overflow: hidden;\r\n  border: 1px solid var(--border);\r\n}\r\n\r\nth, td {\r\n  padding: 16px 18px;\r\n  text-align: right;\r\n}\r\n\r\nth {\r\n  background: rgba(99, 102, 241, 0.1);\r\n  font-weight: 600;\r\n  color: var(--primary-light);\r\n  font-size: 14px;\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.5px;\r\n}\r\n\r\ntd {\r\n  background: var(--bg-glass);\r\n  border-top: 1px solid var(--border);\r\n  color: var(--text-primary);\r\n  font-size: 15px;\r\n}\r\n\r\ntr:hover td {\r\n  background: rgba(99, 102, 241, 0.05);\r\n}\r\n\r\n.total-row {\r\n  background: linear-gradient(135deg, rgba(99, 102, 241, 0.2) 0%, rgba(99, 102, 241, 0.05) 100%) !important;\r\n}\r\n\r\n.total {\r\n  text-align: left;\r\n  font-size: 22px;\r\n  font-weight: 700;\r\n  color: var(--success);\r\n  margin-top: 16px;\r\n  padding: 16px 20px;\r\n  background: rgba(16, 185, 129, 0.1);\r\n  border-radius: 12px;\r\n  border: 1px solid rgba(16, 185, 129, 0.2);\r\n}\r\n\r\n.section {\r\n  margin-top: 28px;\r\n  padding-top: 24px;\r\n  border-top: 1px solid var(--border);\r\n}\r\n\r\n.section:first-of-type {\r\n  border-top: none;\r\n  padding-top: 0;\r\n}\r\n\r\n.section h3 {\r\n  margin: 0 0 16px;\r\n  font-size: 18px;\r\n  font-weight: 700;\r\n  color: var(--text-primary);\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 10px;\r\n}\r\n\r\n.section h3::before {\r\n  content: '';\r\n  width: 4px;\r\n  height: 20px;\r\n  background: linear-gradient(180deg, var(--primary), var(--accent));\r\n  border-radius: 4px;\r\n}\r\n\r\n.section p {\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  line-height: 1.9;\r\n}\r\n\r\n.chip {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  background: rgba(99, 102, 241, 0.15);\r\n  color: var(--primary-light);\r\n  padding: 8px 14px;\r\n  border-radius: 50px;\r\n  margin: 6px 0 6px 10px;\r\n  font-size: 13px;\r\n  font-weight: 500;\r\n  border: 1px solid rgba(99, 102, 241, 0.2);\r\n  transition: all 0.2s ease;\r\n}\r\n\r\n.chip:hover {\r\n  background: rgba(99, 102, 241, 0.25);\r\n  transform: translateY(-2px);\r\n}\r\n\r\n.quote {\r\n  position: relative;\r\n  padding: 20px 24px;\r\n  padding-right: 28px;\r\n  margin: 24px 0;\r\n  background: linear-gradient(135deg, rgba(139, 92, 246, 0.1) 0%, rgba(139, 92, 246, 0.05) 100%);\r\n  border-radius: 16px;\r\n  border: 1px solid rgba(139, 92, 246, 0.2);\r\n  color: var(--text-secondary);\r\n  font-style: italic;\r\n  font-size: 16px;\r\n  line-height: 1.8;\r\n}\r\n\r\n.quote::before {\r\n  content: '\"';\r\n  position: absolute;\r\n  right: 16px;\r\n  top: 8px;\r\n  font-size: 48px;\r\n  color: rgba(139, 92, 246, 0.3);\r\n  font-family: Georgia, serif;\r\n  line-height: 1;\r\n}\r\n\r\n.toc {\r\n  list-style: none;\r\n  padding: 0;\r\n  margin: 0;\r\n  counter-reset: toc-counter;\r\n}\r\n\r\n.toc li {\r\n  counter-increment: toc-counter;\r\n  padding: 14px 18px;\r\n  margin: 8px 0;\r\n  background: var(--bg-glass);\r\n  border-radius: 12px;\r\n  border: 1px solid var(--border);\r\n  color: var(--text-secondary);\r\n  font-size: 15px;\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n  transition: all 0.2s ease;\r\n}\r\n\r\n.toc li::before {\r\n  content: counter(toc-counter);\r\n  width: 32px;\r\n  height: 32px;\r\n  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);\r\n  color: #fff;\r\n  border-radius: 50%;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  font-size: 14px;\r\n  font-weight: 600;\r\n  flex-shrink: 0;\r\n}\r\n\r\n.toc li:hover {\r\n  background: rgba(99, 102, 241, 0.1);\r\n  border-color: rgba(99, 102, 241, 0.3);\r\n  transform: translateX(-4px);\r\n}\r\n\r\n.cover-image {\r\n  width: 100%;\r\n  border-radius: 16px;\r\n  margin: 20px 0;\r\n  object-fit: cover;\r\n  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);\r\n  border: 1px solid var(--border);\r\n}\r\n\r\n.summary-box {\r\n  background: var(--bg-glass);\r\n  border: 1px solid var(--border);\r\n  border-radius: 16px;\r\n  padding: 20px 24px;\r\n  margin: 16px 0;\r\n}\r\n\r\n.summary-box p {\r\n  margin: 0;\r\n}\r\n\r\n.info-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\r\n  gap: 16px;\r\n  margin: 16px 0;\r\n}\r\n\r\n.info-item {\r\n  background: var(--bg-glass);\r\n  border: 1px solid var(--border);\r\n  border-radius: 12px;\r\n  padding: 16px 20px;\r\n}\r\n\r\n.info-item label {\r\n  display: block;\r\n  font-size: 12px;\r\n  color: var(--text-muted);\r\n  text-transform: uppercase;\r\n  letter-spacing: 0.5px;\r\n  margin-bottom: 6px;\r\n}\r\n\r\n.info-item span {\r\n  font-size: 16px;\r\n  font-weight: 600;\r\n  color: var(--text-primary);\r\n}\r\n\r\n@media (max-width: 640px) {\r\n  body { padding: 16px 12px; }\r\n  .card { padding: 24px 20px; border-radius: 20px; }\r\n  .title { font-size: 22px; }\r\n  .header { flex-direction: column; align-items: stretch; gap: 16px; }\r\n  .badge { align-self: flex-start; }\r\n  th, td { padding: 12px 14px; font-size: 14px; }\r\n  .total { font-size: 18px; }\r\n}\r\n\r\n@media print {\r\n  body { background: #fff; color: #000; }\r\n  .card { box-shadow: none; border: 1px solid #ddd; background: #fff; }\r\n  .title { -webkit-text-fill-color: #000; color: #000; }\r\n  th { background: #f3f4f6; color: #000; }\r\n  td { background: #fff; color: #000; }\r\n  .section p, .meta, .subtitle { color: #333; }\r\n}</style>\r\n</head>\r\n<body>\r\n  <div style=\"max-width:960px;margin:0 auto;\">\r\n    <div class=\"card\">\r\n  <div class=\"header\">\r\n    <div>\r\n      <h1 class=\"title\">گزارش هفتگی عملکرد سامانه</h1>\r\n      <p class=\"subtitle\">شاخص‌های کلیدی، پایش سلامت سرویس و رویدادهای مهم</p>\r\n      <div class=\"meta\">\r\n        <span>تیم عملیات Mia</span>\r\n        <span>1403/12/20</span>\r\n      </div>\r\n    </div>\r\n    <div class=\"badge report\">گزارش</div>\r\n  </div>\r\n  \r\n  <div class=\"section\">\r\n    <h3>خلاصه اجرایی</h3>\r\n    <div class=\"summary-box\">\r\n      <p>در این هفته زمان در دسترس بودن 99.93% ثبت شد، سه هشدار زیرساختی رخ داد که هر سه در کمتر از 15 دقیقه بسته شدند. روند رشد ترافیک نسبت به هفته قبل 8% افزایش داشت.</p>\r\n    </div>\r\n  </div>\r\n  \r\n  <div class=\"section\">\r\n    <h3>نکات کلیدی</h3>\r\n    <div style=\"margin-top:12px;\"><span class=\"chip\">✓ میانگین تاخیر درخواست‌ها 120ms (بهبود 6ms نسبت به هفته قبل)</span><span class=\"chip\">✓ سه هشدار CPU روی گره‌های غرب؛ علت: spike ترافیک، حل با autoscale</span><span class=\"chip\">✓ اضافه شدن اندپوینت templates.php برای تولید HTML</span></div>\r\n  </div>\r\n  \r\n  <div class=\"section\"><h3>دسترسی و پایداری</h3><p>زمان در دسترس بودن (uptime) در 7 روز گذشته 99.93% بوده است. بیشترین قطعی 4 دقیقه بر اثر deploy سرویس جستجو.</p></div><div class=\"section\"><h3>کارایی</h3><p>میانگین تاخیر P50=120ms، P95=380ms. سه اسپایک کوتاه در ساعات 12 و 20 مشاهده شد که با warmup رفع شد.</p></div><div class=\"section\"><h3>اقدامات بعدی</h3><p>بهینه‌سازی cache-layer برای جستجو تصویر، اضافه‌کردن health-check فعال برای سرویس scrape.</p></div>\r\n</div>\r\n  </div>\r\n  <footer style=\"text-align:center;padding:32px 16px;color:var(--text-muted);font-size:13px;\">\r\n    <div style=\"margin-bottom:8px;\">ساخته شده با ❤️ توسط <strong style=\"color:var(--primary-light);\">Mia AI</strong></div>\r\n  </footer>\r\n</body>\r\n</html>","file_url":"https://api.miahub.live/storage/templates/tpl_c1d9336ca50a.html","file_path":"/home/miahyehb/api.miahub.live/storage/templates/tpl_c1d9336ca50a.html","record_id":57,"db_error":null,"notes":"پارامتر theme (1-4) برای انتخاب طراحی. view=1 برای نمایش HTML مستقیم."}