| 1 |
<!DOCTYPE html> |
| 2 |
<html lang="en"> |
| 3 |
<head> |
| 4 |
<meta charset="UTF-8"> |
| 5 |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 |
<title>{t_digest}</title> |
| 7 |
</head> |
| 8 |
<body style="margin:0;padding:0;background-color:#f1f5f9;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;font-size:14px;color:#1e293b;"> |
| 9 |
|
| 10 |
<!-- Outer wrapper --> |
| 11 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation" style="background:#f1f5f9;"> |
| 12 |
<tr><td align="center" style="padding:32px 16px;"> |
| 13 |
|
| 14 |
<!-- Main card --> |
| 15 |
<table width="600" cellpadding="0" cellspacing="0" role="presentation" |
| 16 |
style="max-width:600px;width:100%;background:#ffffff;border-radius:12px;overflow:hidden; |
| 17 |
box-shadow:0 4px 6px rgba(0,0,0,0.07),0 1px 3px rgba(0,0,0,0.06);"> |
| 18 |
|
| 19 |
<!-- ===== HEADER ===== --> |
| 20 |
<tr> |
| 21 |
<td style="background:#1d4ed8;padding:0;"> |
| 22 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 23 |
<tr> |
| 24 |
<td style="padding:26px 32px 22px;"> |
| 25 |
<table cellpadding="0" cellspacing="0" role="presentation"> |
| 26 |
<tr> |
| 27 |
<td style="background:rgba(255,255,255,0.18);border-radius:10px;padding:9px 11px;vertical-align:middle;"> |
| 28 |
<span style="font-size:22px;line-height:1;" role="img" aria-label="shield">🛡️</span> |
| 29 |
</td> |
| 30 |
<td style="padding-left:14px;vertical-align:middle;"> |
| 31 |
<div style="color:#ffffff;font-size:19px;font-weight:700;letter-spacing:-0.2px;">404 Solution</div> |
| 32 |
<div style="color:#93c5fd;font-size:11px;font-weight:600;letter-spacing:0.8px;text-transform:uppercase;margin-top:2px;">{t_report}</div> |
| 33 |
</td> |
| 34 |
</tr> |
| 35 |
</table> |
| 36 |
</td> |
| 37 |
<td align="right" style="padding:26px 32px 22px;vertical-align:middle;"> |
| 38 |
<div style="background:rgba(255,255,255,0.15);border-radius:8px;padding:6px 14px;display:inline-block;"> |
| 39 |
<div style="color:#bfdbfe;font-size:12px;font-weight:500;">{dateRange}</div> |
| 40 |
</div> |
| 41 |
</td> |
| 42 |
</tr> |
| 43 |
</table> |
| 44 |
</td> |
| 45 |
</tr> |
| 46 |
|
| 47 |
<!-- ===== SUMMARY STATS ===== --> |
| 48 |
<tr> |
| 49 |
<td style="padding:24px 32px 0;"> |
| 50 |
<div style="font-size:11px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;">{t_summary}</div> |
| 51 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 52 |
<tr> |
| 53 |
<!-- Captured --> |
| 54 |
<td style="width:32%;"> |
| 55 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 56 |
<tr><td style="background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:14px 10px;text-align:center;"> |
| 57 |
<div style="font-size:10px;font-weight:700;color:#3b82f6;text-transform:uppercase;letter-spacing:0.8px;margin-bottom:7px;">📊 {t_captured}</div> |
| 58 |
<div style="font-size:32px;font-weight:800;color:#1d4ed8;line-height:1;">{totalCaptured}</div> |
| 59 |
<div style="font-size:11px;color:#94a3b8;margin-top:5px;">{t_urls404}</div> |
| 60 |
</td></tr> |
| 61 |
</table> |
| 62 |
</td> |
| 63 |
<td width="8"> </td> |
| 64 |
<!-- Auto --> |
| 65 |
<td style="width:32%;"> |
| 66 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 67 |
<tr><td style="background:#f0fdf4;border:1px solid #bbf7d0;border-radius:10px;padding:14px 10px;text-align:center;"> |
| 68 |
<div style="font-size:10px;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:0.8px;margin-bottom:7px;">✅ {t_auto}</div> |
| 69 |
<div style="font-size:32px;font-weight:800;color:#15803d;line-height:1;">{totalAuto}</div> |
| 70 |
<div style="font-size:11px;color:#94a3b8;margin-top:5px;">{t_redirected}</div> |
| 71 |
</td></tr> |
| 72 |
</table> |
| 73 |
</td> |
| 74 |
<td width="8"> </td> |
| 75 |
<!-- Manual --> |
| 76 |
<td style="width:32%;"> |
| 77 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 78 |
<tr><td style="background:#faf5ff;border:1px solid #ddd6fe;border-radius:10px;padding:14px 10px;text-align:center;"> |
| 79 |
<div style="font-size:10px;font-weight:700;color:#7c3aed;text-transform:uppercase;letter-spacing:0.8px;margin-bottom:7px;">✍ {t_manual}</div> |
| 80 |
<div style="font-size:32px;font-weight:800;color:#6d28d9;line-height:1;">{totalManual}</div> |
| 81 |
<div style="font-size:11px;color:#94a3b8;margin-top:5px;">{t_configured}</div> |
| 82 |
</td></tr> |
| 83 |
</table> |
| 84 |
</td> |
| 85 |
</tr> |
| 86 |
</table> |
| 87 |
</td> |
| 88 |
</tr> |
| 89 |
|
| 90 |
<!-- ===== RESOLUTION RATE BAR ===== --> |
| 91 |
<tr> |
| 92 |
<td style="padding:14px 32px 0;"> |
| 93 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 94 |
<tr><td style="background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:12px 16px;"> |
| 95 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 96 |
<tr> |
| 97 |
<td><span style="font-size:12px;font-weight:600;color:#475569;">{t_resolution}</span></td> |
| 98 |
<td align="right"><span style="font-size:12px;font-weight:800;color:#2563eb;">{resolutionPct}%</span></td> |
| 99 |
</tr> |
| 100 |
</table> |
| 101 |
<!-- Progress bar track --> |
| 102 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation" |
| 103 |
style="margin-top:8px;border-radius:3px;overflow:hidden;background:#e2e8f0;" height="6"> |
| 104 |
<tr>{progressBarFill}{progressBarEmpty}</tr> |
| 105 |
</table> |
| 106 |
<div style="font-size:11px;color:#94a3b8;margin-top:7px;">{t_handled}</div> |
| 107 |
</td></tr> |
| 108 |
</table> |
| 109 |
</td> |
| 110 |
</tr> |
| 111 |
|
| 112 |
<!-- ===== TOP URLS TABLE ===== --> |
| 113 |
<tr> |
| 114 |
<td style="padding:20px 32px 0;"> |
| 115 |
<div style="font-size:11px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px;">{t_top_urls}</div> |
| 116 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation" |
| 117 |
style="border-collapse:collapse;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;"> |
| 118 |
<thead> |
| 119 |
<tr style="background:#f8fafc;"> |
| 120 |
<th style="padding:10px 12px;text-align:left;font-size:11px;font-weight:700;color:#64748b; |
| 121 |
text-transform:uppercase;letter-spacing:0.7px;border-bottom:1px solid #e2e8f0;">{t_url}</th> |
| 122 |
<th style="padding:10px 12px;text-align:center;font-size:11px;font-weight:700;color:#64748b; |
| 123 |
text-transform:uppercase;letter-spacing:0.7px;border-bottom:1px solid #e2e8f0;white-space:nowrap;">{t_hits}</th> |
| 124 |
<th style="padding:10px 12px;text-align:center;font-size:11px;font-weight:700;color:#64748b; |
| 125 |
text-transform:uppercase;letter-spacing:0.7px;border-bottom:1px solid #e2e8f0;white-space:nowrap;">{t_first_seen}</th> |
| 126 |
</tr> |
| 127 |
</thead> |
| 128 |
<tbody> |
| 129 |
{tableRows} |
| 130 |
</tbody> |
| 131 |
</table> |
| 132 |
</td> |
| 133 |
</tr> |
| 134 |
|
| 135 |
<!-- ===== CTA BUTTONS ===== --> |
| 136 |
<tr> |
| 137 |
<td style="padding:20px 32px;"> |
| 138 |
<table width="100%" cellpadding="0" cellspacing="0" role="presentation"> |
| 139 |
<tr> |
| 140 |
<td style="width:50%;padding-right:6px;"> |
| 141 |
<a href="{adminUrl}" |
| 142 |
style="display:block;padding:12px 0;background:#2563eb;color:#ffffff;text-decoration:none; |
| 143 |
border-radius:8px;font-size:13px;font-weight:700;text-align:center;letter-spacing:0.2px;">{t_view_cta} →</a> |
| 144 |
</td> |
| 145 |
<td style="width:50%;padding-left:6px;"> |
| 146 |
<a href="{settingsUrl}" |
| 147 |
style="display:block;padding:12px 0;background:#f8fafc;color:#374151;text-decoration:none; |
| 148 |
border-radius:8px;font-size:13px;font-weight:600;text-align:center; |
| 149 |
border:1px solid #e2e8f0;letter-spacing:0.2px;">{t_settings}</a> |
| 150 |
</td> |
| 151 |
</tr> |
| 152 |
</table> |
| 153 |
</td> |
| 154 |
</tr> |
| 155 |
|
| 156 |
<!-- ===== FOOTER ===== --> |
| 157 |
<tr> |
| 158 |
<td style="padding:16px 32px;background:#f8fafc;border-top:1px solid #e2e8f0;border-radius:0 0 12px 12px;"> |
| 159 |
<p style="margin:0;font-size:12px;color:#94a3b8;text-align:center;">{t_unsubscribe} <a href="{settingsUrl}" style="color:#2563eb;text-decoration:none;">{t_manage}</a></p> |
| 160 |
<p style="margin:8px 0 0;font-size:11px;color:#cbd5e1;text-align:center;">404 Solution v{pluginVersion} · PHP {phpVersion} · {sentAt}</p> |
| 161 |
</td> |
| 162 |
</tr> |
| 163 |
|
| 164 |
</table> |
| 165 |
</td></tr> |
| 166 |
</table> |
| 167 |
</body> |
| 168 |
</html> |
| 169 |
|